@happeouikit/content-renderer 3.2.5 → 3.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../node_modules/loadjs/dist/loadjs.umd.js","../../../node_modules/cssfilter/lib/default.js","../../../node_modules/cssfilter/lib/util.js","../../../node_modules/cssfilter/lib/parser.js","../../../node_modules/cssfilter/lib/css.js","../../../node_modules/cssfilter/lib/index.js","../../../node_modules/xss/lib/util.js","../../../node_modules/xss/lib/default.js","../../../node_modules/xss/lib/parser.js","../../../node_modules/xss/lib/xss.js","../../../node_modules/xss/lib/index.js","../../../node_modules/linkifyjs/dist/linkify.es.js","../../../node_modules/linkify-html/dist/linkify-html.es.js","../node_modules/html-entities/lib/named-references.js","../node_modules/html-entities/lib/numeric-unicode-map.js","../node_modules/html-entities/lib/surrogate-pairs.js","../node_modules/html-entities/lib/index.js","../src/constants.js","../../../node_modules/showdown/dist/showdown.js","../src/mentioningUtils.js","../src/htmlConverter.jsx","../src/utils.tsx","../src/ContentRenderer.tsx"],"sourcesContent":["(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathname = path.replace(/[\\?|#].*$/, ''),\n pathStripped = path.replace(/^(css|img|module|nomodule)!/, ''),\n isLegacyIECss,\n hasModuleSupport,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(pathname)) {\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped;\n\n // tag IE9+\n isLegacyIECss = 'hideFocus' in e;\n\n // use preload in IE Edge (to detect load errors)\n if (isLegacyIECss && e.relList) {\n isLegacyIECss = 0;\n e.rel = 'preload';\n e.as = 'style';\n }\n } else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = pathStripped;\n e.async = async === undefined ? true : async;\n\n // handle es modules\n // modern browsers:\n // module: add to dom with type=\"module\"\n // nomodule: call success() callback without adding to dom\n // legacy browsers:\n // module: call success() callback without adding to dom\n // nomodule: add to dom with default type (\"text/javascript\")\n hasModuleSupport = 'noModule' in e;\n if (/^module!/.test(pathname)) {\n if (!hasModuleSupport) return callbackFn(path, 'l');\n e.type = \"module\";\n } else if (/^nomodule!/.test(pathname) && hasModuleSupport) return callbackFn(path, 'l');\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // treat empty stylesheets as failures to get around lack of onerror\n // support in IE9-11\n if (isLegacyIECss) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText` (unless error is Code:18 SecurityError)\n if (x.code != 18) result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n } else if (e.rel == 'preload' && e.as == 'style') {\n // activate preloaded stylesheets\n return e.rel = 'stylesheet'; // jshint ignore:line\n }\n \n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n * callback or (3) object literal with success/error arguments, numRetries,\n * etc.\n * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n * literal with success/error arguments, numRetries, etc.\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n function loadFn(resolve, reject) {\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n \n // resolve Promise\n if (resolve) {\n executeCallbacks({success: resolve, error: reject}, pathsNotFound);\n }\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n }\n \n if (args.returnPromise) return new Promise(loadFn);\n else loadFn();\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\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 *\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}\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(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n","module.exports = {\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 * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar _ = require('./util');\n\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 (css, onAttr) {\n css = _.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\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.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\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) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\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}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\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\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n 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\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar FilterCSS = require('./css');\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n","module.exports = {\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 * default settings\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\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: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"preload\",\n \"src\",\n ],\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\", \"loading\"],\n ins: [\"datetime\"],\n kbd: [],\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: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\",\n \"height\",\n \"width\",\n ],\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\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, \"&lt;\").replace(REGEXP_GT, \"&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\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 = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value.substr(0, 11) === \"data:image/\" ||\n value.substr(0, 6) === \"ftp://\" ||\n value.substr(0, 2) === \"./\" ||\n value.substr(0, 3) === \"../\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\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_GT = />/g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /&quot;/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /&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 =\n /((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 =\n /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, \"&quot;\");\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\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : 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\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .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 _.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\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\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([\n posStart !== false ? posStart : options.position,\n end,\n ]);\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 _.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(\"<!--\", lastPos);\n if (i === -1) {\n retHtml += html.slice(lastPos);\n break;\n }\n retHtml += html.slice(lastPos, i);\n var j = 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\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.attributeWrapSign = '\"';\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. '<a hef=\"#\">'\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.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 = _.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 如:'<a hef=\"#\">'\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"</\";\n}\n\n/**\n * parse input html and returns processed html\n *\n * @param {String} html\n * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)\n * @param {Function} escapeHtml\n * @return {String}\n */\nfunction parseTag(html, onTag, escapeHtml) {\n \"use strict\";\n\n var rethtml = \"\";\n var lastPos = 0;\n var tagStart = false;\n var quoteStart = false;\n var currentPos = 0;\n var len = html.length;\n var currentTagName = \"\";\n var currentHtml = \"\";\n\n chariterator: for (currentPos = 0; currentPos < len; currentPos++) {\n var c = html.charAt(currentPos);\n if (tagStart === false) {\n if (c === \"<\") {\n tagStart = currentPos;\n continue;\n }\n } else {\n if (quoteStart === false) {\n if (c === \"<\") {\n rethtml += escapeHtml(html.slice(lastPos, currentPos));\n tagStart = currentPos;\n lastPos = currentPos;\n continue;\n }\n if (c === \">\" || currentPos === len - 1) {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\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\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 < len) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\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(html, onAttr) {\n \"use strict\";\n\n var lastPos = 0;\n var lastMarkPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.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 (\n i === lastMarkPos\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.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 = _.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 = _.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\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\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}\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}\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}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","/**\n * filter xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./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}\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\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\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\n this.attributeWrapSign = options.singleQuotedAttributeValue === true ? \"'\" : DEFAULT.attributeWrapSign;\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\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\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 attributeWrapSign = me.attributeWrapSign;\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(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n 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\n if (info.isWhite) {\n if (info.isClosing) {\n return \"</\" + tag + \">\";\n }\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\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=' + attributeWrapSign + value + attributeWrapSign;\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 },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n","/**\n * xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./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 */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\n\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 browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return (\n typeof self !== \"undefined\" &&\n typeof DedicatedWorkerGlobalScope !== \"undefined\" &&\n self instanceof DedicatedWorkerGlobalScope\n );\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4vianca6w0s2x0a2z0ure5ba0by2idu3namex3narepublic11d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2ntley5rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0cast4mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dabur3d1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0ardian6cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6logistics9properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3ncaster6d0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2psy3ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2tura4vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9dnavy5lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0america6xi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0a1b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp2w2ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4finity6ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * @template A\n * @template B\n * @param {A} target\n * @param {B} properties\n * @return {A & B}\n */\nconst assign = (target, properties) => {\n for (const key in properties) {\n target[key] = properties[key];\n }\n return target;\n};\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token) {\n if (token === void 0) {\n token = null;\n }\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly) {\n if (exactOnly === void 0) {\n exactOnly = false;\n }\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL$1 = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWORD: WORD,\n\tUWORD: UWORD,\n\tLOCALHOST: LOCALHOST,\n\tTLD: TLD,\n\tUTLD: UTLD,\n\tSCHEME: SCHEME,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tNUM: NUM,\n\tWS: WS,\n\tNL: NL$1,\n\tOPENBRACE: OPENBRACE,\n\tCLOSEBRACE: CLOSEBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tCLOSEPAREN: CLOSEPAREN,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tHYPHEN: HYPHEN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tTILDE: TILDE,\n\tUNDERSCORE: UNDERSCORE,\n\tEMOJI: EMOJI$1,\n\tSYM: SYM\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tLETTER: LETTER,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tDIGIT: DIGIT,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\nconst NL = '\\n'; // New line character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes) {\n if (customSchemes === void 0) {\n customSchemes = [];\n }\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, ASCII_LETTER, Word);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, LETTER, UWord);\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, NL, NL$1, {\n [whitespace]: true\n });\n tt(Ws, NL); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender) {\n if (defaultRender === void 0) {\n defaultRender = null;\n }\n let o = assign({}, defaults);\n if (opts) {\n o = assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tdefaults: defaults,\n\tOptions: Options,\n\tassign: assign\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol) {\n if (protocol === void 0) {\n protocol = defaults.defaultProtocol;\n }\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme) {\n if (scheme === void 0) {\n scheme = defaults.defaultProtocol;\n }\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tMultiToken: MultiToken,\n\tBase: MultiToken,\n\tcreateTokenClass: createTokenClass,\n\tEmail: Email,\n\tText: Text,\n\tNl: Nl,\n\tUrl: Url\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1(_ref) {\n let {\n groups\n } = _ref;\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Final possible email states\n const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */\n ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // Closing bracket component. This character WILL be included in the URL\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL$1, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} protocol\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash) {\n if (optionalSlashSlash === void 0) {\n optionalSlashSlash = false;\n }\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type, opts) {\n if (type === void 0) {\n type = null;\n }\n if (opts === void 0) {\n opts = null;\n }\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type) {\n if (type === void 0) {\n type = null;\n }\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, tokenize };\n","import { Options, tokenize as tokenize$1 } from 'linkifyjs';\n\n/**\n * generated from https://raw.githubusercontent.com/w3c/html/26b5126f96f736f796b9e29718138919dd513744/entities.json\n * do not edit\n */\nvar HTML5NamedCharRefs = {\n // We don't need the complete named character reference because linkifyHtml\n // does not modify the escape sequences. We do need &nbsp; so that\n // whitespace is parsed properly. Other types of whitespace should already\n // be accounted for. &gt; &lt; and &quot; are also frequently relevant ones\n amp: \"&\",\n gt: \">\",\n lt: \"<\",\n nbsp: \" \",\n quot: \"\\\"\"\n};\nvar HEXCHARCODE = /^#[xX]([A-Fa-f0-9]+)$/;\nvar CHARCODE = /^#([0-9]+)$/;\nvar NAMED = /^([A-Za-z0-9]+)$/;\nvar EntityParser = /** @class */function () {\n function EntityParser(named) {\n this.named = named;\n }\n EntityParser.prototype.parse = function (entity) {\n if (!entity) {\n return;\n }\n var matches = entity.match(HEXCHARCODE);\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 16));\n }\n matches = entity.match(CHARCODE);\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 10));\n }\n matches = entity.match(NAMED);\n if (matches) {\n return this.named[matches[1]] || \"&\" + matches[1] + \";\";\n }\n };\n return EntityParser;\n}();\nvar WSP = /[\\t\\n\\f ]/;\nvar ALPHA = /[A-Za-z]/;\nvar CRLF = /\\r\\n?/g;\nfunction isSpace(char) {\n return WSP.test(char);\n}\nfunction isAlpha(char) {\n return ALPHA.test(char);\n}\nfunction preprocessInput(input) {\n return input.replace(CRLF, '\\n');\n}\nvar EventedTokenizer = /** @class */function () {\n function EventedTokenizer(delegate, entityParser, mode) {\n if (mode === void 0) {\n mode = 'precompile';\n }\n this.delegate = delegate;\n this.entityParser = entityParser;\n this.mode = mode;\n this.state = \"beforeData\" /* beforeData */;\n this.line = -1;\n this.column = -1;\n this.input = '';\n this.index = -1;\n this.tagNameBuffer = '';\n this.states = {\n beforeData: function () {\n var char = this.peek();\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.transitionTo(\"tagOpen\" /* tagOpen */);\n this.markTagStart();\n this.consume();\n } else {\n if (this.mode === 'precompile' && char === '\\n') {\n var tag = this.tagNameBuffer.toLowerCase();\n if (tag === 'pre' || tag === 'textarea') {\n this.consume();\n }\n }\n this.transitionTo(\"data\" /* data */);\n this.delegate.beginData();\n }\n },\n data: function () {\n var char = this.peek();\n var tag = this.tagNameBuffer;\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.delegate.finishData();\n this.transitionTo(\"tagOpen\" /* tagOpen */);\n this.markTagStart();\n this.consume();\n } else if (char === '&' && tag !== 'script' && tag !== 'style') {\n this.consume();\n this.delegate.appendToData(this.consumeCharRef() || '&');\n } else {\n this.consume();\n this.delegate.appendToData(char);\n }\n },\n tagOpen: function () {\n var char = this.consume();\n if (char === '!') {\n this.transitionTo(\"markupDeclarationOpen\" /* markupDeclarationOpen */);\n } else if (char === '/') {\n this.transitionTo(\"endTagOpen\" /* endTagOpen */);\n } else if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"tagName\" /* tagName */);\n this.tagNameBuffer = '';\n this.delegate.beginStartTag();\n this.appendToTagName(char);\n }\n },\n markupDeclarationOpen: function () {\n var char = this.consume();\n if (char === '-' && this.peek() === '-') {\n this.consume();\n this.transitionTo(\"commentStart\" /* commentStart */);\n this.delegate.beginComment();\n } else {\n var maybeDoctype = char.toUpperCase() + this.input.substring(this.index, this.index + 6).toUpperCase();\n if (maybeDoctype === 'DOCTYPE') {\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.transitionTo(\"doctype\" /* doctype */);\n if (this.delegate.beginDoctype) this.delegate.beginDoctype();\n }\n }\n },\n doctype: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"beforeDoctypeName\" /* beforeDoctypeName */);\n }\n },\n\n beforeDoctypeName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n } else {\n this.transitionTo(\"doctypeName\" /* doctypeName */);\n if (this.delegate.appendToDoctypeName) this.delegate.appendToDoctypeName(char.toLowerCase());\n }\n },\n doctypeName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"afterDoctypeName\" /* afterDoctypeName */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypeName) this.delegate.appendToDoctypeName(char.toLowerCase());\n }\n },\n afterDoctypeName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n var nextSixChars = char.toUpperCase() + this.input.substring(this.index, this.index + 5).toUpperCase();\n var isPublic = nextSixChars.toUpperCase() === 'PUBLIC';\n var isSystem = nextSixChars.toUpperCase() === 'SYSTEM';\n if (isPublic || isSystem) {\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n }\n if (isPublic) {\n this.transitionTo(\"afterDoctypePublicKeyword\" /* afterDoctypePublicKeyword */);\n } else if (isSystem) {\n this.transitionTo(\"afterDoctypeSystemKeyword\" /* afterDoctypeSystemKeyword */);\n }\n }\n },\n\n afterDoctypePublicKeyword: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.transitionTo(\"beforeDoctypePublicIdentifier\" /* beforeDoctypePublicIdentifier */);\n this.consume();\n } else if (char === '\"') {\n this.transitionTo(\"doctypePublicIdentifierDoubleQuoted\" /* doctypePublicIdentifierDoubleQuoted */);\n this.consume();\n } else if (char === \"'\") {\n this.transitionTo(\"doctypePublicIdentifierSingleQuoted\" /* doctypePublicIdentifierSingleQuoted */);\n this.consume();\n } else if (char === '>') {\n this.consume();\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n },\n\n doctypePublicIdentifierDoubleQuoted: function () {\n var char = this.consume();\n if (char === '\"') {\n this.transitionTo(\"afterDoctypePublicIdentifier\" /* afterDoctypePublicIdentifier */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypePublicIdentifier) this.delegate.appendToDoctypePublicIdentifier(char);\n }\n },\n doctypePublicIdentifierSingleQuoted: function () {\n var char = this.consume();\n if (char === \"'\") {\n this.transitionTo(\"afterDoctypePublicIdentifier\" /* afterDoctypePublicIdentifier */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypePublicIdentifier) this.delegate.appendToDoctypePublicIdentifier(char);\n }\n },\n afterDoctypePublicIdentifier: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"betweenDoctypePublicAndSystemIdentifiers\" /* betweenDoctypePublicAndSystemIdentifiers */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else if (char === '\"') {\n this.transitionTo(\"doctypeSystemIdentifierDoubleQuoted\" /* doctypeSystemIdentifierDoubleQuoted */);\n } else if (char === \"'\") {\n this.transitionTo(\"doctypeSystemIdentifierSingleQuoted\" /* doctypeSystemIdentifierSingleQuoted */);\n }\n },\n\n betweenDoctypePublicAndSystemIdentifiers: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else if (char === '\"') {\n this.transitionTo(\"doctypeSystemIdentifierDoubleQuoted\" /* doctypeSystemIdentifierDoubleQuoted */);\n } else if (char === \"'\") {\n this.transitionTo(\"doctypeSystemIdentifierSingleQuoted\" /* doctypeSystemIdentifierSingleQuoted */);\n }\n },\n\n doctypeSystemIdentifierDoubleQuoted: function () {\n var char = this.consume();\n if (char === '\"') {\n this.transitionTo(\"afterDoctypeSystemIdentifier\" /* afterDoctypeSystemIdentifier */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypeSystemIdentifier) this.delegate.appendToDoctypeSystemIdentifier(char);\n }\n },\n doctypeSystemIdentifierSingleQuoted: function () {\n var char = this.consume();\n if (char === \"'\") {\n this.transitionTo(\"afterDoctypeSystemIdentifier\" /* afterDoctypeSystemIdentifier */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypeSystemIdentifier) this.delegate.appendToDoctypeSystemIdentifier(char);\n }\n },\n afterDoctypeSystemIdentifier: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n },\n\n commentStart: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentStartDash\" /* commentStartDash */);\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.delegate.appendToCommentData(char);\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n\n commentStartDash: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentEnd\" /* commentEnd */);\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.delegate.appendToCommentData('-');\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n\n comment: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentEndDash\" /* commentEndDash */);\n } else {\n this.delegate.appendToCommentData(char);\n }\n },\n commentEndDash: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentEnd\" /* commentEnd */);\n } else {\n this.delegate.appendToCommentData('-' + char);\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n\n commentEnd: function () {\n var char = this.consume();\n if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.delegate.appendToCommentData('--' + char);\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n\n tagName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.appendToTagName(char);\n }\n },\n endTagName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n this.tagNameBuffer = '';\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n this.tagNameBuffer = '';\n } else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n this.tagNameBuffer = '';\n } else {\n this.appendToTagName(char);\n }\n },\n beforeAttributeName: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n this.consume();\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else if (char === '=') {\n this.delegate.reportSyntaxError('attribute name cannot start with equals sign');\n this.transitionTo(\"attributeName\" /* attributeName */);\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.transitionTo(\"attributeName\" /* attributeName */);\n this.delegate.beginAttribute();\n }\n },\n attributeName: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.transitionTo(\"afterAttributeName\" /* afterAttributeName */);\n this.consume();\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '=') {\n this.transitionTo(\"beforeAttributeValue\" /* beforeAttributeValue */);\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else if (char === '\"' || char === \"'\" || char === '<') {\n this.delegate.reportSyntaxError(char + ' is not a valid character within attribute names');\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n afterAttributeName: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '=') {\n this.consume();\n this.transitionTo(\"beforeAttributeValue\" /* beforeAttributeValue */);\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.transitionTo(\"attributeName\" /* attributeName */);\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n beforeAttributeValue: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n } else if (char === '\"') {\n this.transitionTo(\"attributeValueDoubleQuoted\" /* attributeValueDoubleQuoted */);\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === \"'\") {\n this.transitionTo(\"attributeValueSingleQuoted\" /* attributeValueSingleQuoted */);\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.transitionTo(\"attributeValueUnquoted\" /* attributeValueUnquoted */);\n this.delegate.beginAttributeValue(false);\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueDoubleQuoted: function () {\n var char = this.consume();\n if (char === '\"') {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\" /* afterAttributeValueQuoted */);\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueSingleQuoted: function () {\n var char = this.consume();\n if (char === \"'\") {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\" /* afterAttributeValueQuoted */);\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueUnquoted: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n } else if (char === '/') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '&') {\n this.consume();\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else if (char === '>') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n afterAttributeValueQuoted: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n } else if (char === '/') {\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n }\n },\n\n selfClosingStartTag: function () {\n var char = this.peek();\n if (char === '>') {\n this.consume();\n this.delegate.markTagAsSelfClosing();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n }\n },\n\n endTagOpen: function () {\n var char = this.consume();\n if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"endTagName\" /* endTagName */);\n this.tagNameBuffer = '';\n this.delegate.beginEndTag();\n this.appendToTagName(char);\n }\n }\n };\n this.reset();\n }\n EventedTokenizer.prototype.reset = function () {\n this.transitionTo(\"beforeData\" /* beforeData */);\n this.input = '';\n this.tagNameBuffer = '';\n this.index = 0;\n this.line = 1;\n this.column = 0;\n this.delegate.reset();\n };\n EventedTokenizer.prototype.transitionTo = function (state) {\n this.state = state;\n };\n EventedTokenizer.prototype.tokenize = function (input) {\n this.reset();\n this.tokenizePart(input);\n this.tokenizeEOF();\n };\n EventedTokenizer.prototype.tokenizePart = function (input) {\n this.input += preprocessInput(input);\n while (this.index < this.input.length) {\n var handler = this.states[this.state];\n if (handler !== undefined) {\n handler.call(this);\n } else {\n throw new Error(\"unhandled state \" + this.state);\n }\n }\n };\n EventedTokenizer.prototype.tokenizeEOF = function () {\n this.flushData();\n };\n EventedTokenizer.prototype.flushData = function () {\n if (this.state === 'data') {\n this.delegate.finishData();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n };\n\n EventedTokenizer.prototype.peek = function () {\n return this.input.charAt(this.index);\n };\n EventedTokenizer.prototype.consume = function () {\n var char = this.peek();\n this.index++;\n if (char === '\\n') {\n this.line++;\n this.column = 0;\n } else {\n this.column++;\n }\n return char;\n };\n EventedTokenizer.prototype.consumeCharRef = function () {\n var endIndex = this.input.indexOf(';', this.index);\n if (endIndex === -1) {\n return;\n }\n var entity = this.input.slice(this.index, endIndex);\n var chars = this.entityParser.parse(entity);\n if (chars) {\n var count = entity.length;\n // consume the entity chars\n while (count) {\n this.consume();\n count--;\n }\n // consume the `;`\n this.consume();\n return chars;\n }\n };\n EventedTokenizer.prototype.markTagStart = function () {\n this.delegate.tagOpen();\n };\n EventedTokenizer.prototype.appendToTagName = function (char) {\n this.tagNameBuffer += char;\n this.delegate.appendToTagName(char);\n };\n EventedTokenizer.prototype.isIgnoredEndTag = function () {\n var tag = this.tagNameBuffer;\n return tag === 'title' && this.input.substring(this.index, this.index + 8) !== '</title>' || tag === 'style' && this.input.substring(this.index, this.index + 8) !== '</style>' || tag === 'script' && this.input.substring(this.index, this.index + 9) !== '</script>';\n };\n return EventedTokenizer;\n}();\nvar Tokenizer = /** @class */function () {\n function Tokenizer(entityParser, options) {\n if (options === void 0) {\n options = {};\n }\n this.options = options;\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n this.tokens = [];\n this.tokenizer = new EventedTokenizer(this, entityParser, options.mode);\n this._currentAttribute = undefined;\n }\n Tokenizer.prototype.tokenize = function (input) {\n this.tokens = [];\n this.tokenizer.tokenize(input);\n return this.tokens;\n };\n Tokenizer.prototype.tokenizePart = function (input) {\n this.tokens = [];\n this.tokenizer.tokenizePart(input);\n return this.tokens;\n };\n Tokenizer.prototype.tokenizeEOF = function () {\n this.tokens = [];\n this.tokenizer.tokenizeEOF();\n return this.tokens[0];\n };\n Tokenizer.prototype.reset = function () {\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n };\n Tokenizer.prototype.current = function () {\n var token = this.token;\n if (token === null) {\n throw new Error('token was unexpectedly null');\n }\n if (arguments.length === 0) {\n return token;\n }\n for (var i = 0; i < arguments.length; i++) {\n if (token.type === arguments[i]) {\n return token;\n }\n }\n throw new Error(\"token type was unexpectedly \" + token.type);\n };\n Tokenizer.prototype.push = function (token) {\n this.token = token;\n this.tokens.push(token);\n };\n Tokenizer.prototype.currentAttribute = function () {\n return this._currentAttribute;\n };\n Tokenizer.prototype.addLocInfo = function () {\n if (this.options.loc) {\n this.current().loc = {\n start: {\n line: this.startLine,\n column: this.startColumn\n },\n end: {\n line: this.tokenizer.line,\n column: this.tokenizer.column\n }\n };\n }\n this.startLine = this.tokenizer.line;\n this.startColumn = this.tokenizer.column;\n };\n // Data\n Tokenizer.prototype.beginDoctype = function () {\n this.push({\n type: \"Doctype\" /* Doctype */,\n name: ''\n });\n };\n Tokenizer.prototype.appendToDoctypeName = function (char) {\n this.current(\"Doctype\" /* Doctype */).name += char;\n };\n Tokenizer.prototype.appendToDoctypePublicIdentifier = function (char) {\n var doctype = this.current(\"Doctype\" /* Doctype */);\n if (doctype.publicIdentifier === undefined) {\n doctype.publicIdentifier = char;\n } else {\n doctype.publicIdentifier += char;\n }\n };\n Tokenizer.prototype.appendToDoctypeSystemIdentifier = function (char) {\n var doctype = this.current(\"Doctype\" /* Doctype */);\n if (doctype.systemIdentifier === undefined) {\n doctype.systemIdentifier = char;\n } else {\n doctype.systemIdentifier += char;\n }\n };\n Tokenizer.prototype.endDoctype = function () {\n this.addLocInfo();\n };\n Tokenizer.prototype.beginData = function () {\n this.push({\n type: \"Chars\" /* Chars */,\n chars: ''\n });\n };\n Tokenizer.prototype.appendToData = function (char) {\n this.current(\"Chars\" /* Chars */).chars += char;\n };\n Tokenizer.prototype.finishData = function () {\n this.addLocInfo();\n };\n // Comment\n Tokenizer.prototype.beginComment = function () {\n this.push({\n type: \"Comment\" /* Comment */,\n chars: ''\n });\n };\n Tokenizer.prototype.appendToCommentData = function (char) {\n this.current(\"Comment\" /* Comment */).chars += char;\n };\n Tokenizer.prototype.finishComment = function () {\n this.addLocInfo();\n };\n // Tags - basic\n Tokenizer.prototype.tagOpen = function () {};\n Tokenizer.prototype.beginStartTag = function () {\n this.push({\n type: \"StartTag\" /* StartTag */,\n tagName: '',\n attributes: [],\n selfClosing: false\n });\n };\n Tokenizer.prototype.beginEndTag = function () {\n this.push({\n type: \"EndTag\" /* EndTag */,\n tagName: ''\n });\n };\n Tokenizer.prototype.finishTag = function () {\n this.addLocInfo();\n };\n Tokenizer.prototype.markTagAsSelfClosing = function () {\n this.current(\"StartTag\" /* StartTag */).selfClosing = true;\n };\n // Tags - name\n Tokenizer.prototype.appendToTagName = function (char) {\n this.current(\"StartTag\" /* StartTag */, \"EndTag\" /* EndTag */).tagName += char;\n };\n // Tags - attributes\n Tokenizer.prototype.beginAttribute = function () {\n this._currentAttribute = ['', '', false];\n };\n Tokenizer.prototype.appendToAttributeName = function (char) {\n this.currentAttribute()[0] += char;\n };\n Tokenizer.prototype.beginAttributeValue = function (isQuoted) {\n this.currentAttribute()[2] = isQuoted;\n };\n Tokenizer.prototype.appendToAttributeValue = function (char) {\n this.currentAttribute()[1] += char;\n };\n Tokenizer.prototype.finishAttributeValue = function () {\n this.current(\"StartTag\" /* StartTag */).attributes.push(this._currentAttribute);\n };\n Tokenizer.prototype.reportSyntaxError = function (message) {\n this.current().syntaxError = message;\n };\n return Tokenizer;\n}();\nfunction tokenize(input, options) {\n var tokenizer = new Tokenizer(new EntityParser(HTML5NamedCharRefs), options);\n return tokenizer.tokenize(input);\n}\n\nconst LinkifyResult = 'LinkifyResult';\nconst StartTag = 'StartTag';\nconst EndTag = 'EndTag';\nconst Chars = 'Chars';\nconst Comment = 'Comment';\nconst Doctype = 'Doctype';\n\n/**\n * @param {string} str html string to link\n * @param {import('linkifyjs').Opts} [opts] linkify options\n * @returns {string} resulting string\n */\nfunction linkifyHtml(str, opts) {\n if (opts === void 0) {\n opts = {};\n }\n // `tokens` and `token` in this section refer to tokens generated by the\n // HTML parser, not linkify's parser\n const tokens = tokenize(str);\n const linkifiedTokens = [];\n const linkified = [];\n const options = new Options(opts, defaultRender);\n\n // Linkify the tokens given by the parser\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.type === StartTag) {\n linkifiedTokens.push(token);\n\n // Ignore all the contents of ignored tags\n const tagName = token.tagName.toUpperCase();\n const isIgnored = tagName === 'A' || options.ignoreTags.indexOf(tagName) >= 0;\n if (!isIgnored) {\n continue;\n }\n let preskipLen = linkifiedTokens.length;\n skipTagTokens(tagName, tokens, ++i, linkifiedTokens);\n i += linkifiedTokens.length - preskipLen - 1;\n } else if (token.type !== Chars) {\n // Skip this token, it's not important\n linkifiedTokens.push(token);\n } else {\n // Valid text token, linkify it!\n const linkifedChars = linkifyChars(token.chars, options);\n linkifiedTokens.push.apply(linkifiedTokens, linkifedChars);\n }\n }\n\n // Convert the tokens back into a string\n for (let i = 0; i < linkifiedTokens.length; i++) {\n const token = linkifiedTokens[i];\n switch (token.type) {\n case LinkifyResult:\n linkified.push(token.rendered);\n break;\n case StartTag:\n {\n let link = '<' + token.tagName;\n if (token.attributes.length > 0) {\n link += ' ' + attributeArrayToStrings(token.attributes).join(' ');\n }\n if (token.selfClosing) {\n link += ' /';\n }\n link += '>';\n linkified.push(link);\n break;\n }\n case EndTag:\n linkified.push(`</${token.tagName}>`);\n break;\n case Chars:\n linkified.push(escapeText(token.chars));\n break;\n case Comment:\n linkified.push(`<!--${escapeText(token.chars)}-->`);\n break;\n case Doctype:\n {\n let doctype = `<!DOCTYPE ${token.name}`;\n if (token.publicIdentifier) {\n doctype += ` PUBLIC \"${token.publicIdentifier}\"`;\n }\n if (token.systemIdentifier) {\n doctype += ` \"${token.systemIdentifier}\"`;\n }\n doctype += '>';\n linkified.push(doctype);\n break;\n }\n }\n }\n return linkified.join('');\n}\n\n/**\n\t`tokens` and `token` in this section referes to tokens returned by\n\t`linkify.tokenize`. `linkified` will contain HTML Parser-style tokens\n\t@param {string}\n\t@param {import('linkifyjs').Options}\n*/\nfunction linkifyChars(str, options) {\n const tokens = tokenize$1(str);\n const result = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.t === 'nl' && options.get('nl2br')) {\n result.push({\n type: StartTag,\n tagName: 'br',\n attributes: [],\n selfClosing: true\n });\n } else if (!token.isLink || !options.check(token)) {\n result.push({\n type: Chars,\n chars: token.toString()\n });\n } else {\n result.push({\n type: LinkifyResult,\n rendered: options.render(token)\n });\n }\n }\n return result;\n}\n\n/**\n\tReturns a list of tokens skipped until the closing tag of tagName.\n\n\t* `tagName` is the closing tag which will prompt us to stop skipping\n\t* `tokens` is the array of tokens generated by HTML5Tokenizer which\n\t* `i` is the index immediately after the opening tag to skip\n\t* `skippedTokens` is an array which skipped tokens are being pushed into\n\n\tCaveats\n\n\t* Assumes that i is the first token after the given opening tagName\n\t* The closing tag will be skipped, but nothing after it\n\t* Will track whether there is a nested tag of the same type\n*/\nfunction skipTagTokens(tagName, tokens, i, skippedTokens) {\n // number of tokens of this type on the [fictional] stack\n let stackCount = 1;\n while (i < tokens.length && stackCount > 0) {\n let token = tokens[i];\n if (token.type === StartTag && token.tagName.toUpperCase() === tagName) {\n // Nested tag of the same type, \"add to stack\"\n stackCount++;\n } else if (token.type === EndTag && token.tagName.toUpperCase() === tagName) {\n // Closing tag\n stackCount--;\n }\n skippedTokens.push(token);\n i++;\n }\n\n // Note that if stackCount > 0 here, the HTML is probably invalid\n return skippedTokens;\n}\nfunction defaultRender(_ref) {\n let {\n tagName,\n attributes,\n content\n } = _ref;\n return `<${tagName} ${attributesToString(attributes)}>${escapeText(content)}</${tagName}>`;\n}\nfunction escapeText(text) {\n return text.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction escapeAttr(attr) {\n return attr.replace(/\"/g, '&quot;');\n}\nfunction attributesToString(attributes) {\n const result = [];\n for (const attr in attributes) {\n const val = attributes[attr] + '';\n result.push(`${attr}=\"${escapeAttr(val)}\"`);\n }\n return result.join(' ');\n}\nfunction attributeArrayToStrings(attrs) {\n const attrStrs = [];\n for (let i = 0; i < attrs.length; i++) {\n const name = attrs[i][0];\n const value = attrs[i][1] + '';\n attrStrs.push(`${name}=\"${escapeAttr(value)}\"`);\n }\n return attrStrs;\n}\n\nexport { linkifyHtml as default };\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.bodyRegExps={xml:/&(?:#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);?/g};exports.namedReferences={xml:{entities:{\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&apos;\":\"'\",\"&amp;\":\"&\"},characters:{\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&apos;\",\"&\":\"&amp;\"}},html4:{entities:{\"&apos;\":\"'\",\"&nbsp\":\" \",\"&nbsp;\":\" \",\"&iexcl\":\"¡\",\"&iexcl;\":\"¡\",\"&cent\":\"¢\",\"&cent;\":\"¢\",\"&pound\":\"£\",\"&pound;\":\"£\",\"&curren\":\"¤\",\"&curren;\":\"¤\",\"&yen\":\"¥\",\"&yen;\":\"¥\",\"&brvbar\":\"¦\",\"&brvbar;\":\"¦\",\"&sect\":\"§\",\"&sect;\":\"§\",\"&uml\":\"¨\",\"&uml;\":\"¨\",\"&copy\":\"©\",\"&copy;\":\"©\",\"&ordf\":\"ª\",\"&ordf;\":\"ª\",\"&laquo\":\"«\",\"&laquo;\":\"«\",\"&not\":\"¬\",\"&not;\":\"¬\",\"&shy\":\"­\",\"&shy;\":\"­\",\"&reg\":\"®\",\"&reg;\":\"®\",\"&macr\":\"¯\",\"&macr;\":\"¯\",\"&deg\":\"°\",\"&deg;\":\"°\",\"&plusmn\":\"±\",\"&plusmn;\":\"±\",\"&sup2\":\"²\",\"&sup2;\":\"²\",\"&sup3\":\"³\",\"&sup3;\":\"³\",\"&acute\":\"´\",\"&acute;\":\"´\",\"&micro\":\"µ\",\"&micro;\":\"µ\",\"&para\":\"¶\",\"&para;\":\"¶\",\"&middot\":\"·\",\"&middot;\":\"·\",\"&cedil\":\"¸\",\"&cedil;\":\"¸\",\"&sup1\":\"¹\",\"&sup1;\":\"¹\",\"&ordm\":\"º\",\"&ordm;\":\"º\",\"&raquo\":\"»\",\"&raquo;\":\"»\",\"&frac14\":\"¼\",\"&frac14;\":\"¼\",\"&frac12\":\"½\",\"&frac12;\":\"½\",\"&frac34\":\"¾\",\"&frac34;\":\"¾\",\"&iquest\":\"¿\",\"&iquest;\":\"¿\",\"&Agrave\":\"À\",\"&Agrave;\":\"À\",\"&Aacute\":\"Á\",\"&Aacute;\":\"Á\",\"&Acirc\":\"Â\",\"&Acirc;\":\"Â\",\"&Atilde\":\"Ã\",\"&Atilde;\":\"Ã\",\"&Auml\":\"Ä\",\"&Auml;\":\"Ä\",\"&Aring\":\"Å\",\"&Aring;\":\"Å\",\"&AElig\":\"Æ\",\"&AElig;\":\"Æ\",\"&Ccedil\":\"Ç\",\"&Ccedil;\":\"Ç\",\"&Egrave\":\"È\",\"&Egrave;\":\"È\",\"&Eacute\":\"É\",\"&Eacute;\":\"É\",\"&Ecirc\":\"Ê\",\"&Ecirc;\":\"Ê\",\"&Euml\":\"Ë\",\"&Euml;\":\"Ë\",\"&Igrave\":\"Ì\",\"&Igrave;\":\"Ì\",\"&Iacute\":\"Í\",\"&Iacute;\":\"Í\",\"&Icirc\":\"Î\",\"&Icirc;\":\"Î\",\"&Iuml\":\"Ï\",\"&Iuml;\":\"Ï\",\"&ETH\":\"Ð\",\"&ETH;\":\"Ð\",\"&Ntilde\":\"Ñ\",\"&Ntilde;\":\"Ñ\",\"&Ograve\":\"Ò\",\"&Ograve;\":\"Ò\",\"&Oacute\":\"Ó\",\"&Oacute;\":\"Ó\",\"&Ocirc\":\"Ô\",\"&Ocirc;\":\"Ô\",\"&Otilde\":\"Õ\",\"&Otilde;\":\"Õ\",\"&Ouml\":\"Ö\",\"&Ouml;\":\"Ö\",\"&times\":\"×\",\"&times;\":\"×\",\"&Oslash\":\"Ø\",\"&Oslash;\":\"Ø\",\"&Ugrave\":\"Ù\",\"&Ugrave;\":\"Ù\",\"&Uacute\":\"Ú\",\"&Uacute;\":\"Ú\",\"&Ucirc\":\"Û\",\"&Ucirc;\":\"Û\",\"&Uuml\":\"Ü\",\"&Uuml;\":\"Ü\",\"&Yacute\":\"Ý\",\"&Yacute;\":\"Ý\",\"&THORN\":\"Þ\",\"&THORN;\":\"Þ\",\"&szlig\":\"ß\",\"&szlig;\":\"ß\",\"&agrave\":\"à\",\"&agrave;\":\"à\",\"&aacute\":\"á\",\"&aacute;\":\"á\",\"&acirc\":\"â\",\"&acirc;\":\"â\",\"&atilde\":\"ã\",\"&atilde;\":\"ã\",\"&auml\":\"ä\",\"&auml;\":\"ä\",\"&aring\":\"å\",\"&aring;\":\"å\",\"&aelig\":\"æ\",\"&aelig;\":\"æ\",\"&ccedil\":\"ç\",\"&ccedil;\":\"ç\",\"&egrave\":\"è\",\"&egrave;\":\"è\",\"&eacute\":\"é\",\"&eacute;\":\"é\",\"&ecirc\":\"ê\",\"&ecirc;\":\"ê\",\"&euml\":\"ë\",\"&euml;\":\"ë\",\"&igrave\":\"ì\",\"&igrave;\":\"ì\",\"&iacute\":\"í\",\"&iacute;\":\"í\",\"&icirc\":\"î\",\"&icirc;\":\"î\",\"&iuml\":\"ï\",\"&iuml;\":\"ï\",\"&eth\":\"ð\",\"&eth;\":\"ð\",\"&ntilde\":\"ñ\",\"&ntilde;\":\"ñ\",\"&ograve\":\"ò\",\"&ograve;\":\"ò\",\"&oacute\":\"ó\",\"&oacute;\":\"ó\",\"&ocirc\":\"ô\",\"&ocirc;\":\"ô\",\"&otilde\":\"õ\",\"&otilde;\":\"õ\",\"&ouml\":\"ö\",\"&ouml;\":\"ö\",\"&divide\":\"÷\",\"&divide;\":\"÷\",\"&oslash\":\"ø\",\"&oslash;\":\"ø\",\"&ugrave\":\"ù\",\"&ugrave;\":\"ù\",\"&uacute\":\"ú\",\"&uacute;\":\"ú\",\"&ucirc\":\"û\",\"&ucirc;\":\"û\",\"&uuml\":\"ü\",\"&uuml;\":\"ü\",\"&yacute\":\"ý\",\"&yacute;\":\"ý\",\"&thorn\":\"þ\",\"&thorn;\":\"þ\",\"&yuml\":\"ÿ\",\"&yuml;\":\"ÿ\",\"&quot\":'\"',\"&quot;\":'\"',\"&amp\":\"&\",\"&amp;\":\"&\",\"&lt\":\"<\",\"&lt;\":\"<\",\"&gt\":\">\",\"&gt;\":\">\",\"&OElig;\":\"Œ\",\"&oelig;\":\"œ\",\"&Scaron;\":\"Š\",\"&scaron;\":\"š\",\"&Yuml;\":\"Ÿ\",\"&circ;\":\"ˆ\",\"&tilde;\":\"˜\",\"&ensp;\":\" \",\"&emsp;\":\" \",\"&thinsp;\":\" \",\"&zwnj;\":\"‌\",\"&zwj;\":\"‍\",\"&lrm;\":\"‎\",\"&rlm;\":\"‏\",\"&ndash;\":\"–\",\"&mdash;\":\"—\",\"&lsquo;\":\"‘\",\"&rsquo;\":\"’\",\"&sbquo;\":\"‚\",\"&ldquo;\":\"“\",\"&rdquo;\":\"”\",\"&bdquo;\":\"„\",\"&dagger;\":\"†\",\"&Dagger;\":\"‡\",\"&permil;\":\"‰\",\"&lsaquo;\":\"‹\",\"&rsaquo;\":\"›\",\"&euro;\":\"€\",\"&fnof;\":\"ƒ\",\"&Alpha;\":\"Α\",\"&Beta;\":\"Β\",\"&Gamma;\":\"Γ\",\"&Delta;\":\"Δ\",\"&Epsilon;\":\"Ε\",\"&Zeta;\":\"Ζ\",\"&Eta;\":\"Η\",\"&Theta;\":\"Θ\",\"&Iota;\":\"Ι\",\"&Kappa;\":\"Κ\",\"&Lambda;\":\"Λ\",\"&Mu;\":\"Μ\",\"&Nu;\":\"Ν\",\"&Xi;\":\"Ξ\",\"&Omicron;\":\"Ο\",\"&Pi;\":\"Π\",\"&Rho;\":\"Ρ\",\"&Sigma;\":\"Σ\",\"&Tau;\":\"Τ\",\"&Upsilon;\":\"Υ\",\"&Phi;\":\"Φ\",\"&Chi;\":\"Χ\",\"&Psi;\":\"Ψ\",\"&Omega;\":\"Ω\",\"&alpha;\":\"α\",\"&beta;\":\"β\",\"&gamma;\":\"γ\",\"&delta;\":\"δ\",\"&epsilon;\":\"ε\",\"&zeta;\":\"ζ\",\"&eta;\":\"η\",\"&theta;\":\"θ\",\"&iota;\":\"ι\",\"&kappa;\":\"κ\",\"&lambda;\":\"λ\",\"&mu;\":\"μ\",\"&nu;\":\"ν\",\"&xi;\":\"ξ\",\"&omicron;\":\"ο\",\"&pi;\":\"π\",\"&rho;\":\"ρ\",\"&sigmaf;\":\"ς\",\"&sigma;\":\"σ\",\"&tau;\":\"τ\",\"&upsilon;\":\"υ\",\"&phi;\":\"φ\",\"&chi;\":\"χ\",\"&psi;\":\"ψ\",\"&omega;\":\"ω\",\"&thetasym;\":\"ϑ\",\"&upsih;\":\"ϒ\",\"&piv;\":\"ϖ\",\"&bull;\":\"•\",\"&hellip;\":\"…\",\"&prime;\":\"′\",\"&Prime;\":\"″\",\"&oline;\":\"‾\",\"&frasl;\":\"⁄\",\"&weierp;\":\"℘\",\"&image;\":\"ℑ\",\"&real;\":\"ℜ\",\"&trade;\":\"™\",\"&alefsym;\":\"ℵ\",\"&larr;\":\"←\",\"&uarr;\":\"↑\",\"&rarr;\":\"→\",\"&darr;\":\"↓\",\"&harr;\":\"↔\",\"&crarr;\":\"↵\",\"&lArr;\":\"⇐\",\"&uArr;\":\"⇑\",\"&rArr;\":\"⇒\",\"&dArr;\":\"⇓\",\"&hArr;\":\"⇔\",\"&forall;\":\"∀\",\"&part;\":\"∂\",\"&exist;\":\"∃\",\"&empty;\":\"∅\",\"&nabla;\":\"∇\",\"&isin;\":\"∈\",\"&notin;\":\"∉\",\"&ni;\":\"∋\",\"&prod;\":\"∏\",\"&sum;\":\"∑\",\"&minus;\":\"−\",\"&lowast;\":\"∗\",\"&radic;\":\"√\",\"&prop;\":\"∝\",\"&infin;\":\"∞\",\"&ang;\":\"∠\",\"&and;\":\"∧\",\"&or;\":\"∨\",\"&cap;\":\"∩\",\"&cup;\":\"∪\",\"&int;\":\"∫\",\"&there4;\":\"∴\",\"&sim;\":\"∼\",\"&cong;\":\"≅\",\"&asymp;\":\"≈\",\"&ne;\":\"≠\",\"&equiv;\":\"≡\",\"&le;\":\"≤\",\"&ge;\":\"≥\",\"&sub;\":\"⊂\",\"&sup;\":\"⊃\",\"&nsub;\":\"⊄\",\"&sube;\":\"⊆\",\"&supe;\":\"⊇\",\"&oplus;\":\"⊕\",\"&otimes;\":\"⊗\",\"&perp;\":\"⊥\",\"&sdot;\":\"⋅\",\"&lceil;\":\"⌈\",\"&rceil;\":\"⌉\",\"&lfloor;\":\"⌊\",\"&rfloor;\":\"⌋\",\"&lang;\":\"〈\",\"&rang;\":\"〉\",\"&loz;\":\"◊\",\"&spades;\":\"♠\",\"&clubs;\":\"♣\",\"&hearts;\":\"♥\",\"&diams;\":\"♦\"},characters:{\"'\":\"&apos;\",\" \":\"&nbsp;\",\"¡\":\"&iexcl;\",\"¢\":\"&cent;\",\"£\":\"&pound;\",\"¤\":\"&curren;\",\"¥\":\"&yen;\",\"¦\":\"&brvbar;\",\"§\":\"&sect;\",\"¨\":\"&uml;\",\"©\":\"&copy;\",\"ª\":\"&ordf;\",\"«\":\"&laquo;\",\"¬\":\"&not;\",\"­\":\"&shy;\",\"®\":\"&reg;\",\"¯\":\"&macr;\",\"°\":\"&deg;\",\"±\":\"&plusmn;\",\"²\":\"&sup2;\",\"³\":\"&sup3;\",\"´\":\"&acute;\",\"µ\":\"&micro;\",\"¶\":\"&para;\",\"·\":\"&middot;\",\"¸\":\"&cedil;\",\"¹\":\"&sup1;\",\"º\":\"&ordm;\",\"»\":\"&raquo;\",\"¼\":\"&frac14;\",\"½\":\"&frac12;\",\"¾\":\"&frac34;\",\"¿\":\"&iquest;\",\"À\":\"&Agrave;\",\"Á\":\"&Aacute;\",\"Â\":\"&Acirc;\",\"Ã\":\"&Atilde;\",\"Ä\":\"&Auml;\",\"Å\":\"&Aring;\",\"Æ\":\"&AElig;\",\"Ç\":\"&Ccedil;\",\"È\":\"&Egrave;\",\"É\":\"&Eacute;\",\"Ê\":\"&Ecirc;\",\"Ë\":\"&Euml;\",\"Ì\":\"&Igrave;\",\"Í\":\"&Iacute;\",\"Î\":\"&Icirc;\",\"Ï\":\"&Iuml;\",\"Ð\":\"&ETH;\",\"Ñ\":\"&Ntilde;\",\"Ò\":\"&Ograve;\",\"Ó\":\"&Oacute;\",\"Ô\":\"&Ocirc;\",\"Õ\":\"&Otilde;\",\"Ö\":\"&Ouml;\",\"×\":\"&times;\",\"Ø\":\"&Oslash;\",\"Ù\":\"&Ugrave;\",\"Ú\":\"&Uacute;\",\"Û\":\"&Ucirc;\",\"Ü\":\"&Uuml;\",\"Ý\":\"&Yacute;\",\"Þ\":\"&THORN;\",\"ß\":\"&szlig;\",\"à\":\"&agrave;\",\"á\":\"&aacute;\",\"â\":\"&acirc;\",\"ã\":\"&atilde;\",\"ä\":\"&auml;\",\"å\":\"&aring;\",\"æ\":\"&aelig;\",\"ç\":\"&ccedil;\",\"è\":\"&egrave;\",\"é\":\"&eacute;\",\"ê\":\"&ecirc;\",\"ë\":\"&euml;\",\"ì\":\"&igrave;\",\"í\":\"&iacute;\",\"î\":\"&icirc;\",\"ï\":\"&iuml;\",\"ð\":\"&eth;\",\"ñ\":\"&ntilde;\",\"ò\":\"&ograve;\",\"ó\":\"&oacute;\",\"ô\":\"&ocirc;\",\"õ\":\"&otilde;\",\"ö\":\"&ouml;\",\"÷\":\"&divide;\",\"ø\":\"&oslash;\",\"ù\":\"&ugrave;\",\"ú\":\"&uacute;\",\"û\":\"&ucirc;\",\"ü\":\"&uuml;\",\"ý\":\"&yacute;\",\"þ\":\"&thorn;\",\"ÿ\":\"&yuml;\",'\"':\"&quot;\",\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"Œ\":\"&OElig;\",\"œ\":\"&oelig;\",\"Š\":\"&Scaron;\",\"š\":\"&scaron;\",\"Ÿ\":\"&Yuml;\",\"ˆ\":\"&circ;\",\"˜\":\"&tilde;\",\" \":\"&ensp;\",\" \":\"&emsp;\",\" \":\"&thinsp;\",\"‌\":\"&zwnj;\",\"‍\":\"&zwj;\",\"‎\":\"&lrm;\",\"‏\":\"&rlm;\",\"–\":\"&ndash;\",\"—\":\"&mdash;\",\"‘\":\"&lsquo;\",\"’\":\"&rsquo;\",\"‚\":\"&sbquo;\",\"“\":\"&ldquo;\",\"”\":\"&rdquo;\",\"„\":\"&bdquo;\",\"†\":\"&dagger;\",\"‡\":\"&Dagger;\",\"‰\":\"&permil;\",\"‹\":\"&lsaquo;\",\"›\":\"&rsaquo;\",\"€\":\"&euro;\",\"ƒ\":\"&fnof;\",\"Α\":\"&Alpha;\",\"Β\":\"&Beta;\",\"Γ\":\"&Gamma;\",\"Δ\":\"&Delta;\",\"Ε\":\"&Epsilon;\",\"Ζ\":\"&Zeta;\",\"Η\":\"&Eta;\",\"Θ\":\"&Theta;\",\"Ι\":\"&Iota;\",\"Κ\":\"&Kappa;\",\"Λ\":\"&Lambda;\",\"Μ\":\"&Mu;\",\"Ν\":\"&Nu;\",\"Ξ\":\"&Xi;\",\"Ο\":\"&Omicron;\",\"Π\":\"&Pi;\",\"Ρ\":\"&Rho;\",\"Σ\":\"&Sigma;\",\"Τ\":\"&Tau;\",\"Υ\":\"&Upsilon;\",\"Φ\":\"&Phi;\",\"Χ\":\"&Chi;\",\"Ψ\":\"&Psi;\",\"Ω\":\"&Omega;\",\"α\":\"&alpha;\",\"β\":\"&beta;\",\"γ\":\"&gamma;\",\"δ\":\"&delta;\",\"ε\":\"&epsilon;\",\"ζ\":\"&zeta;\",\"η\":\"&eta;\",\"θ\":\"&theta;\",\"ι\":\"&iota;\",\"κ\":\"&kappa;\",\"λ\":\"&lambda;\",\"μ\":\"&mu;\",\"ν\":\"&nu;\",\"ξ\":\"&xi;\",\"ο\":\"&omicron;\",\"π\":\"&pi;\",\"ρ\":\"&rho;\",\"ς\":\"&sigmaf;\",\"σ\":\"&sigma;\",\"τ\":\"&tau;\",\"υ\":\"&upsilon;\",\"φ\":\"&phi;\",\"χ\":\"&chi;\",\"ψ\":\"&psi;\",\"ω\":\"&omega;\",\"ϑ\":\"&thetasym;\",\"ϒ\":\"&upsih;\",\"ϖ\":\"&piv;\",\"•\":\"&bull;\",\"…\":\"&hellip;\",\"′\":\"&prime;\",\"″\":\"&Prime;\",\"‾\":\"&oline;\",\"⁄\":\"&frasl;\",\"℘\":\"&weierp;\",\"ℑ\":\"&image;\",\"ℜ\":\"&real;\",\"™\":\"&trade;\",\"ℵ\":\"&alefsym;\",\"←\":\"&larr;\",\"↑\":\"&uarr;\",\"→\":\"&rarr;\",\"↓\":\"&darr;\",\"↔\":\"&harr;\",\"↵\":\"&crarr;\",\"⇐\":\"&lArr;\",\"⇑\":\"&uArr;\",\"⇒\":\"&rArr;\",\"⇓\":\"&dArr;\",\"⇔\":\"&hArr;\",\"∀\":\"&forall;\",\"∂\":\"&part;\",\"∃\":\"&exist;\",\"∅\":\"&empty;\",\"∇\":\"&nabla;\",\"∈\":\"&isin;\",\"∉\":\"&notin;\",\"∋\":\"&ni;\",\"∏\":\"&prod;\",\"∑\":\"&sum;\",\"−\":\"&minus;\",\"∗\":\"&lowast;\",\"√\":\"&radic;\",\"∝\":\"&prop;\",\"∞\":\"&infin;\",\"∠\":\"&ang;\",\"∧\":\"&and;\",\"∨\":\"&or;\",\"∩\":\"&cap;\",\"∪\":\"&cup;\",\"∫\":\"&int;\",\"∴\":\"&there4;\",\"∼\":\"&sim;\",\"≅\":\"&cong;\",\"≈\":\"&asymp;\",\"≠\":\"&ne;\",\"≡\":\"&equiv;\",\"≤\":\"&le;\",\"≥\":\"&ge;\",\"⊂\":\"&sub;\",\"⊃\":\"&sup;\",\"⊄\":\"&nsub;\",\"⊆\":\"&sube;\",\"⊇\":\"&supe;\",\"⊕\":\"&oplus;\",\"⊗\":\"&otimes;\",\"⊥\":\"&perp;\",\"⋅\":\"&sdot;\",\"⌈\":\"&lceil;\",\"⌉\":\"&rceil;\",\"⌊\":\"&lfloor;\",\"⌋\":\"&rfloor;\",\"〈\":\"&lang;\",\"〉\":\"&rang;\",\"◊\":\"&loz;\",\"♠\":\"&spades;\",\"♣\":\"&clubs;\",\"♥\":\"&hearts;\",\"♦\":\"&diams;\"}},html5:{entities:{\"&AElig\":\"Æ\",\"&AElig;\":\"Æ\",\"&AMP\":\"&\",\"&AMP;\":\"&\",\"&Aacute\":\"Á\",\"&Aacute;\":\"Á\",\"&Abreve;\":\"Ă\",\"&Acirc\":\"Â\",\"&Acirc;\":\"Â\",\"&Acy;\":\"А\",\"&Afr;\":\"𝔄\",\"&Agrave\":\"À\",\"&Agrave;\":\"À\",\"&Alpha;\":\"Α\",\"&Amacr;\":\"Ā\",\"&And;\":\"⩓\",\"&Aogon;\":\"Ą\",\"&Aopf;\":\"𝔸\",\"&ApplyFunction;\":\"⁡\",\"&Aring\":\"Å\",\"&Aring;\":\"Å\",\"&Ascr;\":\"𝒜\",\"&Assign;\":\"≔\",\"&Atilde\":\"Ã\",\"&Atilde;\":\"Ã\",\"&Auml\":\"Ä\",\"&Auml;\":\"Ä\",\"&Backslash;\":\"∖\",\"&Barv;\":\"⫧\",\"&Barwed;\":\"⌆\",\"&Bcy;\":\"Б\",\"&Because;\":\"∵\",\"&Bernoullis;\":\"ℬ\",\"&Beta;\":\"Β\",\"&Bfr;\":\"𝔅\",\"&Bopf;\":\"𝔹\",\"&Breve;\":\"˘\",\"&Bscr;\":\"ℬ\",\"&Bumpeq;\":\"≎\",\"&CHcy;\":\"Ч\",\"&COPY\":\"©\",\"&COPY;\":\"©\",\"&Cacute;\":\"Ć\",\"&Cap;\":\"⋒\",\"&CapitalDifferentialD;\":\"ⅅ\",\"&Cayleys;\":\"ℭ\",\"&Ccaron;\":\"Č\",\"&Ccedil\":\"Ç\",\"&Ccedil;\":\"Ç\",\"&Ccirc;\":\"Ĉ\",\"&Cconint;\":\"∰\",\"&Cdot;\":\"Ċ\",\"&Cedilla;\":\"¸\",\"&CenterDot;\":\"·\",\"&Cfr;\":\"ℭ\",\"&Chi;\":\"Χ\",\"&CircleDot;\":\"⊙\",\"&CircleMinus;\":\"⊖\",\"&CirclePlus;\":\"⊕\",\"&CircleTimes;\":\"⊗\",\"&ClockwiseContourIntegral;\":\"∲\",\"&CloseCurlyDoubleQuote;\":\"”\",\"&CloseCurlyQuote;\":\"’\",\"&Colon;\":\"∷\",\"&Colone;\":\"⩴\",\"&Congruent;\":\"≡\",\"&Conint;\":\"∯\",\"&ContourIntegral;\":\"∮\",\"&Copf;\":\"ℂ\",\"&Coproduct;\":\"∐\",\"&CounterClockwiseContourIntegral;\":\"∳\",\"&Cross;\":\"⨯\",\"&Cscr;\":\"𝒞\",\"&Cup;\":\"⋓\",\"&CupCap;\":\"≍\",\"&DD;\":\"ⅅ\",\"&DDotrahd;\":\"⤑\",\"&DJcy;\":\"Ђ\",\"&DScy;\":\"Ѕ\",\"&DZcy;\":\"Џ\",\"&Dagger;\":\"‡\",\"&Darr;\":\"↡\",\"&Dashv;\":\"⫤\",\"&Dcaron;\":\"Ď\",\"&Dcy;\":\"Д\",\"&Del;\":\"∇\",\"&Delta;\":\"Δ\",\"&Dfr;\":\"𝔇\",\"&DiacriticalAcute;\":\"´\",\"&DiacriticalDot;\":\"˙\",\"&DiacriticalDoubleAcute;\":\"˝\",\"&DiacriticalGrave;\":\"`\",\"&DiacriticalTilde;\":\"˜\",\"&Diamond;\":\"⋄\",\"&DifferentialD;\":\"ⅆ\",\"&Dopf;\":\"𝔻\",\"&Dot;\":\"¨\",\"&DotDot;\":\"⃜\",\"&DotEqual;\":\"≐\",\"&DoubleContourIntegral;\":\"∯\",\"&DoubleDot;\":\"¨\",\"&DoubleDownArrow;\":\"⇓\",\"&DoubleLeftArrow;\":\"⇐\",\"&DoubleLeftRightArrow;\":\"⇔\",\"&DoubleLeftTee;\":\"⫤\",\"&DoubleLongLeftArrow;\":\"⟸\",\"&DoubleLongLeftRightArrow;\":\"⟺\",\"&DoubleLongRightArrow;\":\"⟹\",\"&DoubleRightArrow;\":\"⇒\",\"&DoubleRightTee;\":\"⊨\",\"&DoubleUpArrow;\":\"⇑\",\"&DoubleUpDownArrow;\":\"⇕\",\"&DoubleVerticalBar;\":\"∥\",\"&DownArrow;\":\"↓\",\"&DownArrowBar;\":\"⤓\",\"&DownArrowUpArrow;\":\"⇵\",\"&DownBreve;\":\"̑\",\"&DownLeftRightVector;\":\"⥐\",\"&DownLeftTeeVector;\":\"⥞\",\"&DownLeftVector;\":\"↽\",\"&DownLeftVectorBar;\":\"⥖\",\"&DownRightTeeVector;\":\"⥟\",\"&DownRightVector;\":\"⇁\",\"&DownRightVectorBar;\":\"⥗\",\"&DownTee;\":\"⊤\",\"&DownTeeArrow;\":\"↧\",\"&Downarrow;\":\"⇓\",\"&Dscr;\":\"𝒟\",\"&Dstrok;\":\"Đ\",\"&ENG;\":\"Ŋ\",\"&ETH\":\"Ð\",\"&ETH;\":\"Ð\",\"&Eacute\":\"É\",\"&Eacute;\":\"É\",\"&Ecaron;\":\"Ě\",\"&Ecirc\":\"Ê\",\"&Ecirc;\":\"Ê\",\"&Ecy;\":\"Э\",\"&Edot;\":\"Ė\",\"&Efr;\":\"𝔈\",\"&Egrave\":\"È\",\"&Egrave;\":\"È\",\"&Element;\":\"∈\",\"&Emacr;\":\"Ē\",\"&EmptySmallSquare;\":\"◻\",\"&EmptyVerySmallSquare;\":\"▫\",\"&Eogon;\":\"Ę\",\"&Eopf;\":\"𝔼\",\"&Epsilon;\":\"Ε\",\"&Equal;\":\"⩵\",\"&EqualTilde;\":\"≂\",\"&Equilibrium;\":\"⇌\",\"&Escr;\":\"ℰ\",\"&Esim;\":\"⩳\",\"&Eta;\":\"Η\",\"&Euml\":\"Ë\",\"&Euml;\":\"Ë\",\"&Exists;\":\"∃\",\"&ExponentialE;\":\"ⅇ\",\"&Fcy;\":\"Ф\",\"&Ffr;\":\"𝔉\",\"&FilledSmallSquare;\":\"◼\",\"&FilledVerySmallSquare;\":\"▪\",\"&Fopf;\":\"𝔽\",\"&ForAll;\":\"∀\",\"&Fouriertrf;\":\"ℱ\",\"&Fscr;\":\"ℱ\",\"&GJcy;\":\"Ѓ\",\"&GT\":\">\",\"&GT;\":\">\",\"&Gamma;\":\"Γ\",\"&Gammad;\":\"Ϝ\",\"&Gbreve;\":\"Ğ\",\"&Gcedil;\":\"Ģ\",\"&Gcirc;\":\"Ĝ\",\"&Gcy;\":\"Г\",\"&Gdot;\":\"Ġ\",\"&Gfr;\":\"𝔊\",\"&Gg;\":\"⋙\",\"&Gopf;\":\"𝔾\",\"&GreaterEqual;\":\"≥\",\"&GreaterEqualLess;\":\"⋛\",\"&GreaterFullEqual;\":\"≧\",\"&GreaterGreater;\":\"⪢\",\"&GreaterLess;\":\"≷\",\"&GreaterSlantEqual;\":\"⩾\",\"&GreaterTilde;\":\"≳\",\"&Gscr;\":\"𝒢\",\"&Gt;\":\"≫\",\"&HARDcy;\":\"Ъ\",\"&Hacek;\":\"ˇ\",\"&Hat;\":\"^\",\"&Hcirc;\":\"Ĥ\",\"&Hfr;\":\"ℌ\",\"&HilbertSpace;\":\"ℋ\",\"&Hopf;\":\"ℍ\",\"&HorizontalLine;\":\"─\",\"&Hscr;\":\"ℋ\",\"&Hstrok;\":\"Ħ\",\"&HumpDownHump;\":\"≎\",\"&HumpEqual;\":\"≏\",\"&IEcy;\":\"Е\",\"&IJlig;\":\"IJ\",\"&IOcy;\":\"Ё\",\"&Iacute\":\"Í\",\"&Iacute;\":\"Í\",\"&Icirc\":\"Î\",\"&Icirc;\":\"Î\",\"&Icy;\":\"И\",\"&Idot;\":\"İ\",\"&Ifr;\":\"ℑ\",\"&Igrave\":\"Ì\",\"&Igrave;\":\"Ì\",\"&Im;\":\"ℑ\",\"&Imacr;\":\"Ī\",\"&ImaginaryI;\":\"ⅈ\",\"&Implies;\":\"⇒\",\"&Int;\":\"∬\",\"&Integral;\":\"∫\",\"&Intersection;\":\"⋂\",\"&InvisibleComma;\":\"⁣\",\"&InvisibleTimes;\":\"⁢\",\"&Iogon;\":\"Į\",\"&Iopf;\":\"𝕀\",\"&Iota;\":\"Ι\",\"&Iscr;\":\"ℐ\",\"&Itilde;\":\"Ĩ\",\"&Iukcy;\":\"І\",\"&Iuml\":\"Ï\",\"&Iuml;\":\"Ï\",\"&Jcirc;\":\"Ĵ\",\"&Jcy;\":\"Й\",\"&Jfr;\":\"𝔍\",\"&Jopf;\":\"𝕁\",\"&Jscr;\":\"𝒥\",\"&Jsercy;\":\"Ј\",\"&Jukcy;\":\"Є\",\"&KHcy;\":\"Х\",\"&KJcy;\":\"Ќ\",\"&Kappa;\":\"Κ\",\"&Kcedil;\":\"Ķ\",\"&Kcy;\":\"К\",\"&Kfr;\":\"𝔎\",\"&Kopf;\":\"𝕂\",\"&Kscr;\":\"𝒦\",\"&LJcy;\":\"Љ\",\"&LT\":\"<\",\"&LT;\":\"<\",\"&Lacute;\":\"Ĺ\",\"&Lambda;\":\"Λ\",\"&Lang;\":\"⟪\",\"&Laplacetrf;\":\"ℒ\",\"&Larr;\":\"↞\",\"&Lcaron;\":\"Ľ\",\"&Lcedil;\":\"Ļ\",\"&Lcy;\":\"Л\",\"&LeftAngleBracket;\":\"⟨\",\"&LeftArrow;\":\"←\",\"&LeftArrowBar;\":\"⇤\",\"&LeftArrowRightArrow;\":\"⇆\",\"&LeftCeiling;\":\"⌈\",\"&LeftDoubleBracket;\":\"⟦\",\"&LeftDownTeeVector;\":\"⥡\",\"&LeftDownVector;\":\"⇃\",\"&LeftDownVectorBar;\":\"⥙\",\"&LeftFloor;\":\"⌊\",\"&LeftRightArrow;\":\"↔\",\"&LeftRightVector;\":\"⥎\",\"&LeftTee;\":\"⊣\",\"&LeftTeeArrow;\":\"↤\",\"&LeftTeeVector;\":\"⥚\",\"&LeftTriangle;\":\"⊲\",\"&LeftTriangleBar;\":\"⧏\",\"&LeftTriangleEqual;\":\"⊴\",\"&LeftUpDownVector;\":\"⥑\",\"&LeftUpTeeVector;\":\"⥠\",\"&LeftUpVector;\":\"↿\",\"&LeftUpVectorBar;\":\"⥘\",\"&LeftVector;\":\"↼\",\"&LeftVectorBar;\":\"⥒\",\"&Leftarrow;\":\"⇐\",\"&Leftrightarrow;\":\"⇔\",\"&LessEqualGreater;\":\"⋚\",\"&LessFullEqual;\":\"≦\",\"&LessGreater;\":\"≶\",\"&LessLess;\":\"⪡\",\"&LessSlantEqual;\":\"⩽\",\"&LessTilde;\":\"≲\",\"&Lfr;\":\"𝔏\",\"&Ll;\":\"⋘\",\"&Lleftarrow;\":\"⇚\",\"&Lmidot;\":\"Ŀ\",\"&LongLeftArrow;\":\"⟵\",\"&LongLeftRightArrow;\":\"⟷\",\"&LongRightArrow;\":\"⟶\",\"&Longleftarrow;\":\"⟸\",\"&Longleftrightarrow;\":\"⟺\",\"&Longrightarrow;\":\"⟹\",\"&Lopf;\":\"𝕃\",\"&LowerLeftArrow;\":\"↙\",\"&LowerRightArrow;\":\"↘\",\"&Lscr;\":\"ℒ\",\"&Lsh;\":\"↰\",\"&Lstrok;\":\"Ł\",\"&Lt;\":\"≪\",\"&Map;\":\"⤅\",\"&Mcy;\":\"М\",\"&MediumSpace;\":\" \",\"&Mellintrf;\":\"ℳ\",\"&Mfr;\":\"𝔐\",\"&MinusPlus;\":\"∓\",\"&Mopf;\":\"𝕄\",\"&Mscr;\":\"ℳ\",\"&Mu;\":\"Μ\",\"&NJcy;\":\"Њ\",\"&Nacute;\":\"Ń\",\"&Ncaron;\":\"Ň\",\"&Ncedil;\":\"Ņ\",\"&Ncy;\":\"Н\",\"&NegativeMediumSpace;\":\"​\",\"&NegativeThickSpace;\":\"​\",\"&NegativeThinSpace;\":\"​\",\"&NegativeVeryThinSpace;\":\"​\",\"&NestedGreaterGreater;\":\"≫\",\"&NestedLessLess;\":\"≪\",\"&NewLine;\":\"\\n\",\"&Nfr;\":\"𝔑\",\"&NoBreak;\":\"⁠\",\"&NonBreakingSpace;\":\" \",\"&Nopf;\":\"ℕ\",\"&Not;\":\"⫬\",\"&NotCongruent;\":\"≢\",\"&NotCupCap;\":\"≭\",\"&NotDoubleVerticalBar;\":\"∦\",\"&NotElement;\":\"∉\",\"&NotEqual;\":\"≠\",\"&NotEqualTilde;\":\"≂̸\",\"&NotExists;\":\"∄\",\"&NotGreater;\":\"≯\",\"&NotGreaterEqual;\":\"≱\",\"&NotGreaterFullEqual;\":\"≧̸\",\"&NotGreaterGreater;\":\"≫̸\",\"&NotGreaterLess;\":\"≹\",\"&NotGreaterSlantEqual;\":\"⩾̸\",\"&NotGreaterTilde;\":\"≵\",\"&NotHumpDownHump;\":\"≎̸\",\"&NotHumpEqual;\":\"≏̸\",\"&NotLeftTriangle;\":\"⋪\",\"&NotLeftTriangleBar;\":\"⧏̸\",\"&NotLeftTriangleEqual;\":\"⋬\",\"&NotLess;\":\"≮\",\"&NotLessEqual;\":\"≰\",\"&NotLessGreater;\":\"≸\",\"&NotLessLess;\":\"≪̸\",\"&NotLessSlantEqual;\":\"⩽̸\",\"&NotLessTilde;\":\"≴\",\"&NotNestedGreaterGreater;\":\"⪢̸\",\"&NotNestedLessLess;\":\"⪡̸\",\"&NotPrecedes;\":\"⊀\",\"&NotPrecedesEqual;\":\"⪯̸\",\"&NotPrecedesSlantEqual;\":\"⋠\",\"&NotReverseElement;\":\"∌\",\"&NotRightTriangle;\":\"⋫\",\"&NotRightTriangleBar;\":\"⧐̸\",\"&NotRightTriangleEqual;\":\"⋭\",\"&NotSquareSubset;\":\"⊏̸\",\"&NotSquareSubsetEqual;\":\"⋢\",\"&NotSquareSuperset;\":\"⊐̸\",\"&NotSquareSupersetEqual;\":\"⋣\",\"&NotSubset;\":\"⊂⃒\",\"&NotSubsetEqual;\":\"⊈\",\"&NotSucceeds;\":\"⊁\",\"&NotSucceedsEqual;\":\"⪰̸\",\"&NotSucceedsSlantEqual;\":\"⋡\",\"&NotSucceedsTilde;\":\"≿̸\",\"&NotSuperset;\":\"⊃⃒\",\"&NotSupersetEqual;\":\"⊉\",\"&NotTilde;\":\"≁\",\"&NotTildeEqual;\":\"≄\",\"&NotTildeFullEqual;\":\"≇\",\"&NotTildeTilde;\":\"≉\",\"&NotVerticalBar;\":\"∤\",\"&Nscr;\":\"𝒩\",\"&Ntilde\":\"Ñ\",\"&Ntilde;\":\"Ñ\",\"&Nu;\":\"Ν\",\"&OElig;\":\"Œ\",\"&Oacute\":\"Ó\",\"&Oacute;\":\"Ó\",\"&Ocirc\":\"Ô\",\"&Ocirc;\":\"Ô\",\"&Ocy;\":\"О\",\"&Odblac;\":\"Ő\",\"&Ofr;\":\"𝔒\",\"&Ograve\":\"Ò\",\"&Ograve;\":\"Ò\",\"&Omacr;\":\"Ō\",\"&Omega;\":\"Ω\",\"&Omicron;\":\"Ο\",\"&Oopf;\":\"𝕆\",\"&OpenCurlyDoubleQuote;\":\"“\",\"&OpenCurlyQuote;\":\"‘\",\"&Or;\":\"⩔\",\"&Oscr;\":\"𝒪\",\"&Oslash\":\"Ø\",\"&Oslash;\":\"Ø\",\"&Otilde\":\"Õ\",\"&Otilde;\":\"Õ\",\"&Otimes;\":\"⨷\",\"&Ouml\":\"Ö\",\"&Ouml;\":\"Ö\",\"&OverBar;\":\"‾\",\"&OverBrace;\":\"⏞\",\"&OverBracket;\":\"⎴\",\"&OverParenthesis;\":\"⏜\",\"&PartialD;\":\"∂\",\"&Pcy;\":\"П\",\"&Pfr;\":\"𝔓\",\"&Phi;\":\"Φ\",\"&Pi;\":\"Π\",\"&PlusMinus;\":\"±\",\"&Poincareplane;\":\"ℌ\",\"&Popf;\":\"ℙ\",\"&Pr;\":\"⪻\",\"&Precedes;\":\"≺\",\"&PrecedesEqual;\":\"⪯\",\"&PrecedesSlantEqual;\":\"≼\",\"&PrecedesTilde;\":\"≾\",\"&Prime;\":\"″\",\"&Product;\":\"∏\",\"&Proportion;\":\"∷\",\"&Proportional;\":\"∝\",\"&Pscr;\":\"𝒫\",\"&Psi;\":\"Ψ\",\"&QUOT\":'\"',\"&QUOT;\":'\"',\"&Qfr;\":\"𝔔\",\"&Qopf;\":\"ℚ\",\"&Qscr;\":\"𝒬\",\"&RBarr;\":\"⤐\",\"&REG\":\"®\",\"&REG;\":\"®\",\"&Racute;\":\"Ŕ\",\"&Rang;\":\"⟫\",\"&Rarr;\":\"↠\",\"&Rarrtl;\":\"⤖\",\"&Rcaron;\":\"Ř\",\"&Rcedil;\":\"Ŗ\",\"&Rcy;\":\"Р\",\"&Re;\":\"ℜ\",\"&ReverseElement;\":\"∋\",\"&ReverseEquilibrium;\":\"⇋\",\"&ReverseUpEquilibrium;\":\"⥯\",\"&Rfr;\":\"ℜ\",\"&Rho;\":\"Ρ\",\"&RightAngleBracket;\":\"⟩\",\"&RightArrow;\":\"→\",\"&RightArrowBar;\":\"⇥\",\"&RightArrowLeftArrow;\":\"⇄\",\"&RightCeiling;\":\"⌉\",\"&RightDoubleBracket;\":\"⟧\",\"&RightDownTeeVector;\":\"⥝\",\"&RightDownVector;\":\"⇂\",\"&RightDownVectorBar;\":\"⥕\",\"&RightFloor;\":\"⌋\",\"&RightTee;\":\"⊢\",\"&RightTeeArrow;\":\"↦\",\"&RightTeeVector;\":\"⥛\",\"&RightTriangle;\":\"⊳\",\"&RightTriangleBar;\":\"⧐\",\"&RightTriangleEqual;\":\"⊵\",\"&RightUpDownVector;\":\"⥏\",\"&RightUpTeeVector;\":\"⥜\",\"&RightUpVector;\":\"↾\",\"&RightUpVectorBar;\":\"⥔\",\"&RightVector;\":\"⇀\",\"&RightVectorBar;\":\"⥓\",\"&Rightarrow;\":\"⇒\",\"&Ropf;\":\"ℝ\",\"&RoundImplies;\":\"⥰\",\"&Rrightarrow;\":\"⇛\",\"&Rscr;\":\"ℛ\",\"&Rsh;\":\"↱\",\"&RuleDelayed;\":\"⧴\",\"&SHCHcy;\":\"Щ\",\"&SHcy;\":\"Ш\",\"&SOFTcy;\":\"Ь\",\"&Sacute;\":\"Ś\",\"&Sc;\":\"⪼\",\"&Scaron;\":\"Š\",\"&Scedil;\":\"Ş\",\"&Scirc;\":\"Ŝ\",\"&Scy;\":\"С\",\"&Sfr;\":\"𝔖\",\"&ShortDownArrow;\":\"↓\",\"&ShortLeftArrow;\":\"←\",\"&ShortRightArrow;\":\"→\",\"&ShortUpArrow;\":\"↑\",\"&Sigma;\":\"Σ\",\"&SmallCircle;\":\"∘\",\"&Sopf;\":\"𝕊\",\"&Sqrt;\":\"√\",\"&Square;\":\"□\",\"&SquareIntersection;\":\"⊓\",\"&SquareSubset;\":\"⊏\",\"&SquareSubsetEqual;\":\"⊑\",\"&SquareSuperset;\":\"⊐\",\"&SquareSupersetEqual;\":\"⊒\",\"&SquareUnion;\":\"⊔\",\"&Sscr;\":\"𝒮\",\"&Star;\":\"⋆\",\"&Sub;\":\"⋐\",\"&Subset;\":\"⋐\",\"&SubsetEqual;\":\"⊆\",\"&Succeeds;\":\"≻\",\"&SucceedsEqual;\":\"⪰\",\"&SucceedsSlantEqual;\":\"≽\",\"&SucceedsTilde;\":\"≿\",\"&SuchThat;\":\"∋\",\"&Sum;\":\"∑\",\"&Sup;\":\"⋑\",\"&Superset;\":\"⊃\",\"&SupersetEqual;\":\"⊇\",\"&Supset;\":\"⋑\",\"&THORN\":\"Þ\",\"&THORN;\":\"Þ\",\"&TRADE;\":\"™\",\"&TSHcy;\":\"Ћ\",\"&TScy;\":\"Ц\",\"&Tab;\":\"\\t\",\"&Tau;\":\"Τ\",\"&Tcaron;\":\"Ť\",\"&Tcedil;\":\"Ţ\",\"&Tcy;\":\"Т\",\"&Tfr;\":\"𝔗\",\"&Therefore;\":\"∴\",\"&Theta;\":\"Θ\",\"&ThickSpace;\":\"  \",\"&ThinSpace;\":\" \",\"&Tilde;\":\"∼\",\"&TildeEqual;\":\"≃\",\"&TildeFullEqual;\":\"≅\",\"&TildeTilde;\":\"≈\",\"&Topf;\":\"𝕋\",\"&TripleDot;\":\"⃛\",\"&Tscr;\":\"𝒯\",\"&Tstrok;\":\"Ŧ\",\"&Uacute\":\"Ú\",\"&Uacute;\":\"Ú\",\"&Uarr;\":\"↟\",\"&Uarrocir;\":\"⥉\",\"&Ubrcy;\":\"Ў\",\"&Ubreve;\":\"Ŭ\",\"&Ucirc\":\"Û\",\"&Ucirc;\":\"Û\",\"&Ucy;\":\"У\",\"&Udblac;\":\"Ű\",\"&Ufr;\":\"𝔘\",\"&Ugrave\":\"Ù\",\"&Ugrave;\":\"Ù\",\"&Umacr;\":\"Ū\",\"&UnderBar;\":\"_\",\"&UnderBrace;\":\"⏟\",\"&UnderBracket;\":\"⎵\",\"&UnderParenthesis;\":\"⏝\",\"&Union;\":\"⋃\",\"&UnionPlus;\":\"⊎\",\"&Uogon;\":\"Ų\",\"&Uopf;\":\"𝕌\",\"&UpArrow;\":\"↑\",\"&UpArrowBar;\":\"⤒\",\"&UpArrowDownArrow;\":\"⇅\",\"&UpDownArrow;\":\"↕\",\"&UpEquilibrium;\":\"⥮\",\"&UpTee;\":\"⊥\",\"&UpTeeArrow;\":\"↥\",\"&Uparrow;\":\"⇑\",\"&Updownarrow;\":\"⇕\",\"&UpperLeftArrow;\":\"↖\",\"&UpperRightArrow;\":\"↗\",\"&Upsi;\":\"ϒ\",\"&Upsilon;\":\"Υ\",\"&Uring;\":\"Ů\",\"&Uscr;\":\"𝒰\",\"&Utilde;\":\"Ũ\",\"&Uuml\":\"Ü\",\"&Uuml;\":\"Ü\",\"&VDash;\":\"⊫\",\"&Vbar;\":\"⫫\",\"&Vcy;\":\"В\",\"&Vdash;\":\"⊩\",\"&Vdashl;\":\"⫦\",\"&Vee;\":\"⋁\",\"&Verbar;\":\"‖\",\"&Vert;\":\"‖\",\"&VerticalBar;\":\"∣\",\"&VerticalLine;\":\"|\",\"&VerticalSeparator;\":\"❘\",\"&VerticalTilde;\":\"≀\",\"&VeryThinSpace;\":\" \",\"&Vfr;\":\"𝔙\",\"&Vopf;\":\"𝕍\",\"&Vscr;\":\"𝒱\",\"&Vvdash;\":\"⊪\",\"&Wcirc;\":\"Ŵ\",\"&Wedge;\":\"⋀\",\"&Wfr;\":\"𝔚\",\"&Wopf;\":\"𝕎\",\"&Wscr;\":\"𝒲\",\"&Xfr;\":\"𝔛\",\"&Xi;\":\"Ξ\",\"&Xopf;\":\"𝕏\",\"&Xscr;\":\"𝒳\",\"&YAcy;\":\"Я\",\"&YIcy;\":\"Ї\",\"&YUcy;\":\"Ю\",\"&Yacute\":\"Ý\",\"&Yacute;\":\"Ý\",\"&Ycirc;\":\"Ŷ\",\"&Ycy;\":\"Ы\",\"&Yfr;\":\"𝔜\",\"&Yopf;\":\"𝕐\",\"&Yscr;\":\"𝒴\",\"&Yuml;\":\"Ÿ\",\"&ZHcy;\":\"Ж\",\"&Zacute;\":\"Ź\",\"&Zcaron;\":\"Ž\",\"&Zcy;\":\"З\",\"&Zdot;\":\"Ż\",\"&ZeroWidthSpace;\":\"​\",\"&Zeta;\":\"Ζ\",\"&Zfr;\":\"ℨ\",\"&Zopf;\":\"ℤ\",\"&Zscr;\":\"𝒵\",\"&aacute\":\"á\",\"&aacute;\":\"á\",\"&abreve;\":\"ă\",\"&ac;\":\"∾\",\"&acE;\":\"∾̳\",\"&acd;\":\"∿\",\"&acirc\":\"â\",\"&acirc;\":\"â\",\"&acute\":\"´\",\"&acute;\":\"´\",\"&acy;\":\"а\",\"&aelig\":\"æ\",\"&aelig;\":\"æ\",\"&af;\":\"⁡\",\"&afr;\":\"𝔞\",\"&agrave\":\"à\",\"&agrave;\":\"à\",\"&alefsym;\":\"ℵ\",\"&aleph;\":\"ℵ\",\"&alpha;\":\"α\",\"&amacr;\":\"ā\",\"&amalg;\":\"⨿\",\"&amp\":\"&\",\"&amp;\":\"&\",\"&and;\":\"∧\",\"&andand;\":\"⩕\",\"&andd;\":\"⩜\",\"&andslope;\":\"⩘\",\"&andv;\":\"⩚\",\"&ang;\":\"∠\",\"&ange;\":\"⦤\",\"&angle;\":\"∠\",\"&angmsd;\":\"∡\",\"&angmsdaa;\":\"⦨\",\"&angmsdab;\":\"⦩\",\"&angmsdac;\":\"⦪\",\"&angmsdad;\":\"⦫\",\"&angmsdae;\":\"⦬\",\"&angmsdaf;\":\"⦭\",\"&angmsdag;\":\"⦮\",\"&angmsdah;\":\"⦯\",\"&angrt;\":\"∟\",\"&angrtvb;\":\"⊾\",\"&angrtvbd;\":\"⦝\",\"&angsph;\":\"∢\",\"&angst;\":\"Å\",\"&angzarr;\":\"⍼\",\"&aogon;\":\"ą\",\"&aopf;\":\"𝕒\",\"&ap;\":\"≈\",\"&apE;\":\"⩰\",\"&apacir;\":\"⩯\",\"&ape;\":\"≊\",\"&apid;\":\"≋\",\"&apos;\":\"'\",\"&approx;\":\"≈\",\"&approxeq;\":\"≊\",\"&aring\":\"å\",\"&aring;\":\"å\",\"&ascr;\":\"𝒶\",\"&ast;\":\"*\",\"&asymp;\":\"≈\",\"&asympeq;\":\"≍\",\"&atilde\":\"ã\",\"&atilde;\":\"ã\",\"&auml\":\"ä\",\"&auml;\":\"ä\",\"&awconint;\":\"∳\",\"&awint;\":\"⨑\",\"&bNot;\":\"⫭\",\"&backcong;\":\"≌\",\"&backepsilon;\":\"϶\",\"&backprime;\":\"‵\",\"&backsim;\":\"∽\",\"&backsimeq;\":\"⋍\",\"&barvee;\":\"⊽\",\"&barwed;\":\"⌅\",\"&barwedge;\":\"⌅\",\"&bbrk;\":\"⎵\",\"&bbrktbrk;\":\"⎶\",\"&bcong;\":\"≌\",\"&bcy;\":\"б\",\"&bdquo;\":\"„\",\"&becaus;\":\"∵\",\"&because;\":\"∵\",\"&bemptyv;\":\"⦰\",\"&bepsi;\":\"϶\",\"&bernou;\":\"ℬ\",\"&beta;\":\"β\",\"&beth;\":\"ℶ\",\"&between;\":\"≬\",\"&bfr;\":\"𝔟\",\"&bigcap;\":\"⋂\",\"&bigcirc;\":\"◯\",\"&bigcup;\":\"⋃\",\"&bigodot;\":\"⨀\",\"&bigoplus;\":\"⨁\",\"&bigotimes;\":\"⨂\",\"&bigsqcup;\":\"⨆\",\"&bigstar;\":\"★\",\"&bigtriangledown;\":\"▽\",\"&bigtriangleup;\":\"△\",\"&biguplus;\":\"⨄\",\"&bigvee;\":\"⋁\",\"&bigwedge;\":\"⋀\",\"&bkarow;\":\"⤍\",\"&blacklozenge;\":\"⧫\",\"&blacksquare;\":\"▪\",\"&blacktriangle;\":\"▴\",\"&blacktriangledown;\":\"▾\",\"&blacktriangleleft;\":\"◂\",\"&blacktriangleright;\":\"▸\",\"&blank;\":\"␣\",\"&blk12;\":\"▒\",\"&blk14;\":\"░\",\"&blk34;\":\"▓\",\"&block;\":\"█\",\"&bne;\":\"=⃥\",\"&bnequiv;\":\"≡⃥\",\"&bnot;\":\"⌐\",\"&bopf;\":\"𝕓\",\"&bot;\":\"⊥\",\"&bottom;\":\"⊥\",\"&bowtie;\":\"⋈\",\"&boxDL;\":\"╗\",\"&boxDR;\":\"╔\",\"&boxDl;\":\"╖\",\"&boxDr;\":\"╓\",\"&boxH;\":\"═\",\"&boxHD;\":\"╦\",\"&boxHU;\":\"╩\",\"&boxHd;\":\"╤\",\"&boxHu;\":\"╧\",\"&boxUL;\":\"╝\",\"&boxUR;\":\"╚\",\"&boxUl;\":\"╜\",\"&boxUr;\":\"╙\",\"&boxV;\":\"║\",\"&boxVH;\":\"╬\",\"&boxVL;\":\"╣\",\"&boxVR;\":\"╠\",\"&boxVh;\":\"╫\",\"&boxVl;\":\"╢\",\"&boxVr;\":\"╟\",\"&boxbox;\":\"⧉\",\"&boxdL;\":\"╕\",\"&boxdR;\":\"╒\",\"&boxdl;\":\"┐\",\"&boxdr;\":\"┌\",\"&boxh;\":\"─\",\"&boxhD;\":\"╥\",\"&boxhU;\":\"╨\",\"&boxhd;\":\"┬\",\"&boxhu;\":\"┴\",\"&boxminus;\":\"⊟\",\"&boxplus;\":\"⊞\",\"&boxtimes;\":\"⊠\",\"&boxuL;\":\"╛\",\"&boxuR;\":\"╘\",\"&boxul;\":\"┘\",\"&boxur;\":\"└\",\"&boxv;\":\"│\",\"&boxvH;\":\"╪\",\"&boxvL;\":\"╡\",\"&boxvR;\":\"╞\",\"&boxvh;\":\"┼\",\"&boxvl;\":\"┤\",\"&boxvr;\":\"├\",\"&bprime;\":\"‵\",\"&breve;\":\"˘\",\"&brvbar\":\"¦\",\"&brvbar;\":\"¦\",\"&bscr;\":\"𝒷\",\"&bsemi;\":\"⁏\",\"&bsim;\":\"∽\",\"&bsime;\":\"⋍\",\"&bsol;\":\"\\\\\",\"&bsolb;\":\"⧅\",\"&bsolhsub;\":\"⟈\",\"&bull;\":\"•\",\"&bullet;\":\"•\",\"&bump;\":\"≎\",\"&bumpE;\":\"⪮\",\"&bumpe;\":\"≏\",\"&bumpeq;\":\"≏\",\"&cacute;\":\"ć\",\"&cap;\":\"∩\",\"&capand;\":\"⩄\",\"&capbrcup;\":\"⩉\",\"&capcap;\":\"⩋\",\"&capcup;\":\"⩇\",\"&capdot;\":\"⩀\",\"&caps;\":\"∩︀\",\"&caret;\":\"⁁\",\"&caron;\":\"ˇ\",\"&ccaps;\":\"⩍\",\"&ccaron;\":\"č\",\"&ccedil\":\"ç\",\"&ccedil;\":\"ç\",\"&ccirc;\":\"ĉ\",\"&ccups;\":\"⩌\",\"&ccupssm;\":\"⩐\",\"&cdot;\":\"ċ\",\"&cedil\":\"¸\",\"&cedil;\":\"¸\",\"&cemptyv;\":\"⦲\",\"&cent\":\"¢\",\"&cent;\":\"¢\",\"&centerdot;\":\"·\",\"&cfr;\":\"𝔠\",\"&chcy;\":\"ч\",\"&check;\":\"✓\",\"&checkmark;\":\"✓\",\"&chi;\":\"χ\",\"&cir;\":\"○\",\"&cirE;\":\"⧃\",\"&circ;\":\"ˆ\",\"&circeq;\":\"≗\",\"&circlearrowleft;\":\"↺\",\"&circlearrowright;\":\"↻\",\"&circledR;\":\"®\",\"&circledS;\":\"Ⓢ\",\"&circledast;\":\"⊛\",\"&circledcirc;\":\"⊚\",\"&circleddash;\":\"⊝\",\"&cire;\":\"≗\",\"&cirfnint;\":\"⨐\",\"&cirmid;\":\"⫯\",\"&cirscir;\":\"⧂\",\"&clubs;\":\"♣\",\"&clubsuit;\":\"♣\",\"&colon;\":\":\",\"&colone;\":\"≔\",\"&coloneq;\":\"≔\",\"&comma;\":\",\",\"&commat;\":\"@\",\"&comp;\":\"∁\",\"&compfn;\":\"∘\",\"&complement;\":\"∁\",\"&complexes;\":\"ℂ\",\"&cong;\":\"≅\",\"&congdot;\":\"⩭\",\"&conint;\":\"∮\",\"&copf;\":\"𝕔\",\"&coprod;\":\"∐\",\"&copy\":\"©\",\"&copy;\":\"©\",\"&copysr;\":\"℗\",\"&crarr;\":\"↵\",\"&cross;\":\"✗\",\"&cscr;\":\"𝒸\",\"&csub;\":\"⫏\",\"&csube;\":\"⫑\",\"&csup;\":\"⫐\",\"&csupe;\":\"⫒\",\"&ctdot;\":\"⋯\",\"&cudarrl;\":\"⤸\",\"&cudarrr;\":\"⤵\",\"&cuepr;\":\"⋞\",\"&cuesc;\":\"⋟\",\"&cularr;\":\"↶\",\"&cularrp;\":\"⤽\",\"&cup;\":\"∪\",\"&cupbrcap;\":\"⩈\",\"&cupcap;\":\"⩆\",\"&cupcup;\":\"⩊\",\"&cupdot;\":\"⊍\",\"&cupor;\":\"⩅\",\"&cups;\":\"∪︀\",\"&curarr;\":\"↷\",\"&curarrm;\":\"⤼\",\"&curlyeqprec;\":\"⋞\",\"&curlyeqsucc;\":\"⋟\",\"&curlyvee;\":\"⋎\",\"&curlywedge;\":\"⋏\",\"&curren\":\"¤\",\"&curren;\":\"¤\",\"&curvearrowleft;\":\"↶\",\"&curvearrowright;\":\"↷\",\"&cuvee;\":\"⋎\",\"&cuwed;\":\"⋏\",\"&cwconint;\":\"∲\",\"&cwint;\":\"∱\",\"&cylcty;\":\"⌭\",\"&dArr;\":\"⇓\",\"&dHar;\":\"⥥\",\"&dagger;\":\"†\",\"&daleth;\":\"ℸ\",\"&darr;\":\"↓\",\"&dash;\":\"‐\",\"&dashv;\":\"⊣\",\"&dbkarow;\":\"⤏\",\"&dblac;\":\"˝\",\"&dcaron;\":\"ď\",\"&dcy;\":\"д\",\"&dd;\":\"ⅆ\",\"&ddagger;\":\"‡\",\"&ddarr;\":\"⇊\",\"&ddotseq;\":\"⩷\",\"&deg\":\"°\",\"&deg;\":\"°\",\"&delta;\":\"δ\",\"&demptyv;\":\"⦱\",\"&dfisht;\":\"⥿\",\"&dfr;\":\"𝔡\",\"&dharl;\":\"⇃\",\"&dharr;\":\"⇂\",\"&diam;\":\"⋄\",\"&diamond;\":\"⋄\",\"&diamondsuit;\":\"♦\",\"&diams;\":\"♦\",\"&die;\":\"¨\",\"&digamma;\":\"ϝ\",\"&disin;\":\"⋲\",\"&div;\":\"÷\",\"&divide\":\"÷\",\"&divide;\":\"÷\",\"&divideontimes;\":\"⋇\",\"&divonx;\":\"⋇\",\"&djcy;\":\"ђ\",\"&dlcorn;\":\"⌞\",\"&dlcrop;\":\"⌍\",\"&dollar;\":\"$\",\"&dopf;\":\"𝕕\",\"&dot;\":\"˙\",\"&doteq;\":\"≐\",\"&doteqdot;\":\"≑\",\"&dotminus;\":\"∸\",\"&dotplus;\":\"∔\",\"&dotsquare;\":\"⊡\",\"&doublebarwedge;\":\"⌆\",\"&downarrow;\":\"↓\",\"&downdownarrows;\":\"⇊\",\"&downharpoonleft;\":\"⇃\",\"&downharpoonright;\":\"⇂\",\"&drbkarow;\":\"⤐\",\"&drcorn;\":\"⌟\",\"&drcrop;\":\"⌌\",\"&dscr;\":\"𝒹\",\"&dscy;\":\"ѕ\",\"&dsol;\":\"⧶\",\"&dstrok;\":\"đ\",\"&dtdot;\":\"⋱\",\"&dtri;\":\"▿\",\"&dtrif;\":\"▾\",\"&duarr;\":\"⇵\",\"&duhar;\":\"⥯\",\"&dwangle;\":\"⦦\",\"&dzcy;\":\"џ\",\"&dzigrarr;\":\"⟿\",\"&eDDot;\":\"⩷\",\"&eDot;\":\"≑\",\"&eacute\":\"é\",\"&eacute;\":\"é\",\"&easter;\":\"⩮\",\"&ecaron;\":\"ě\",\"&ecir;\":\"≖\",\"&ecirc\":\"ê\",\"&ecirc;\":\"ê\",\"&ecolon;\":\"≕\",\"&ecy;\":\"э\",\"&edot;\":\"ė\",\"&ee;\":\"ⅇ\",\"&efDot;\":\"≒\",\"&efr;\":\"𝔢\",\"&eg;\":\"⪚\",\"&egrave\":\"è\",\"&egrave;\":\"è\",\"&egs;\":\"⪖\",\"&egsdot;\":\"⪘\",\"&el;\":\"⪙\",\"&elinters;\":\"⏧\",\"&ell;\":\"ℓ\",\"&els;\":\"⪕\",\"&elsdot;\":\"⪗\",\"&emacr;\":\"ē\",\"&empty;\":\"∅\",\"&emptyset;\":\"∅\",\"&emptyv;\":\"∅\",\"&emsp13;\":\" \",\"&emsp14;\":\" \",\"&emsp;\":\" \",\"&eng;\":\"ŋ\",\"&ensp;\":\" \",\"&eogon;\":\"ę\",\"&eopf;\":\"𝕖\",\"&epar;\":\"⋕\",\"&eparsl;\":\"⧣\",\"&eplus;\":\"⩱\",\"&epsi;\":\"ε\",\"&epsilon;\":\"ε\",\"&epsiv;\":\"ϵ\",\"&eqcirc;\":\"≖\",\"&eqcolon;\":\"≕\",\"&eqsim;\":\"≂\",\"&eqslantgtr;\":\"⪖\",\"&eqslantless;\":\"⪕\",\"&equals;\":\"=\",\"&equest;\":\"≟\",\"&equiv;\":\"≡\",\"&equivDD;\":\"⩸\",\"&eqvparsl;\":\"⧥\",\"&erDot;\":\"≓\",\"&erarr;\":\"⥱\",\"&escr;\":\"ℯ\",\"&esdot;\":\"≐\",\"&esim;\":\"≂\",\"&eta;\":\"η\",\"&eth\":\"ð\",\"&eth;\":\"ð\",\"&euml\":\"ë\",\"&euml;\":\"ë\",\"&euro;\":\"€\",\"&excl;\":\"!\",\"&exist;\":\"∃\",\"&expectation;\":\"ℰ\",\"&exponentiale;\":\"ⅇ\",\"&fallingdotseq;\":\"≒\",\"&fcy;\":\"ф\",\"&female;\":\"♀\",\"&ffilig;\":\"ffi\",\"&fflig;\":\"ff\",\"&ffllig;\":\"ffl\",\"&ffr;\":\"𝔣\",\"&filig;\":\"fi\",\"&fjlig;\":\"fj\",\"&flat;\":\"♭\",\"&fllig;\":\"fl\",\"&fltns;\":\"▱\",\"&fnof;\":\"ƒ\",\"&fopf;\":\"𝕗\",\"&forall;\":\"∀\",\"&fork;\":\"⋔\",\"&forkv;\":\"⫙\",\"&fpartint;\":\"⨍\",\"&frac12\":\"½\",\"&frac12;\":\"½\",\"&frac13;\":\"⅓\",\"&frac14\":\"¼\",\"&frac14;\":\"¼\",\"&frac15;\":\"⅕\",\"&frac16;\":\"⅙\",\"&frac18;\":\"⅛\",\"&frac23;\":\"⅔\",\"&frac25;\":\"⅖\",\"&frac34\":\"¾\",\"&frac34;\":\"¾\",\"&frac35;\":\"⅗\",\"&frac38;\":\"⅜\",\"&frac45;\":\"⅘\",\"&frac56;\":\"⅚\",\"&frac58;\":\"⅝\",\"&frac78;\":\"⅞\",\"&frasl;\":\"⁄\",\"&frown;\":\"⌢\",\"&fscr;\":\"𝒻\",\"&gE;\":\"≧\",\"&gEl;\":\"⪌\",\"&gacute;\":\"ǵ\",\"&gamma;\":\"γ\",\"&gammad;\":\"ϝ\",\"&gap;\":\"⪆\",\"&gbreve;\":\"ğ\",\"&gcirc;\":\"ĝ\",\"&gcy;\":\"г\",\"&gdot;\":\"ġ\",\"&ge;\":\"≥\",\"&gel;\":\"⋛\",\"&geq;\":\"≥\",\"&geqq;\":\"≧\",\"&geqslant;\":\"⩾\",\"&ges;\":\"⩾\",\"&gescc;\":\"⪩\",\"&gesdot;\":\"⪀\",\"&gesdoto;\":\"⪂\",\"&gesdotol;\":\"⪄\",\"&gesl;\":\"⋛︀\",\"&gesles;\":\"⪔\",\"&gfr;\":\"𝔤\",\"&gg;\":\"≫\",\"&ggg;\":\"⋙\",\"&gimel;\":\"ℷ\",\"&gjcy;\":\"ѓ\",\"&gl;\":\"≷\",\"&glE;\":\"⪒\",\"&gla;\":\"⪥\",\"&glj;\":\"⪤\",\"&gnE;\":\"≩\",\"&gnap;\":\"⪊\",\"&gnapprox;\":\"⪊\",\"&gne;\":\"⪈\",\"&gneq;\":\"⪈\",\"&gneqq;\":\"≩\",\"&gnsim;\":\"⋧\",\"&gopf;\":\"𝕘\",\"&grave;\":\"`\",\"&gscr;\":\"ℊ\",\"&gsim;\":\"≳\",\"&gsime;\":\"⪎\",\"&gsiml;\":\"⪐\",\"&gt\":\">\",\"&gt;\":\">\",\"&gtcc;\":\"⪧\",\"&gtcir;\":\"⩺\",\"&gtdot;\":\"⋗\",\"&gtlPar;\":\"⦕\",\"&gtquest;\":\"⩼\",\"&gtrapprox;\":\"⪆\",\"&gtrarr;\":\"⥸\",\"&gtrdot;\":\"⋗\",\"&gtreqless;\":\"⋛\",\"&gtreqqless;\":\"⪌\",\"&gtrless;\":\"≷\",\"&gtrsim;\":\"≳\",\"&gvertneqq;\":\"≩︀\",\"&gvnE;\":\"≩︀\",\"&hArr;\":\"⇔\",\"&hairsp;\":\" \",\"&half;\":\"½\",\"&hamilt;\":\"ℋ\",\"&hardcy;\":\"ъ\",\"&harr;\":\"↔\",\"&harrcir;\":\"⥈\",\"&harrw;\":\"↭\",\"&hbar;\":\"ℏ\",\"&hcirc;\":\"ĥ\",\"&hearts;\":\"♥\",\"&heartsuit;\":\"♥\",\"&hellip;\":\"…\",\"&hercon;\":\"⊹\",\"&hfr;\":\"𝔥\",\"&hksearow;\":\"⤥\",\"&hkswarow;\":\"⤦\",\"&hoarr;\":\"⇿\",\"&homtht;\":\"∻\",\"&hookleftarrow;\":\"↩\",\"&hookrightarrow;\":\"↪\",\"&hopf;\":\"𝕙\",\"&horbar;\":\"―\",\"&hscr;\":\"𝒽\",\"&hslash;\":\"ℏ\",\"&hstrok;\":\"ħ\",\"&hybull;\":\"⁃\",\"&hyphen;\":\"‐\",\"&iacute\":\"í\",\"&iacute;\":\"í\",\"&ic;\":\"⁣\",\"&icirc\":\"î\",\"&icirc;\":\"î\",\"&icy;\":\"и\",\"&iecy;\":\"е\",\"&iexcl\":\"¡\",\"&iexcl;\":\"¡\",\"&iff;\":\"⇔\",\"&ifr;\":\"𝔦\",\"&igrave\":\"ì\",\"&igrave;\":\"ì\",\"&ii;\":\"ⅈ\",\"&iiiint;\":\"⨌\",\"&iiint;\":\"∭\",\"&iinfin;\":\"⧜\",\"&iiota;\":\"℩\",\"&ijlig;\":\"ij\",\"&imacr;\":\"ī\",\"&image;\":\"ℑ\",\"&imagline;\":\"ℐ\",\"&imagpart;\":\"ℑ\",\"&imath;\":\"ı\",\"&imof;\":\"⊷\",\"&imped;\":\"Ƶ\",\"&in;\":\"∈\",\"&incare;\":\"℅\",\"&infin;\":\"∞\",\"&infintie;\":\"⧝\",\"&inodot;\":\"ı\",\"&int;\":\"∫\",\"&intcal;\":\"⊺\",\"&integers;\":\"ℤ\",\"&intercal;\":\"⊺\",\"&intlarhk;\":\"⨗\",\"&intprod;\":\"⨼\",\"&iocy;\":\"ё\",\"&iogon;\":\"į\",\"&iopf;\":\"𝕚\",\"&iota;\":\"ι\",\"&iprod;\":\"⨼\",\"&iquest\":\"¿\",\"&iquest;\":\"¿\",\"&iscr;\":\"𝒾\",\"&isin;\":\"∈\",\"&isinE;\":\"⋹\",\"&isindot;\":\"⋵\",\"&isins;\":\"⋴\",\"&isinsv;\":\"⋳\",\"&isinv;\":\"∈\",\"&it;\":\"⁢\",\"&itilde;\":\"ĩ\",\"&iukcy;\":\"і\",\"&iuml\":\"ï\",\"&iuml;\":\"ï\",\"&jcirc;\":\"ĵ\",\"&jcy;\":\"й\",\"&jfr;\":\"𝔧\",\"&jmath;\":\"ȷ\",\"&jopf;\":\"𝕛\",\"&jscr;\":\"𝒿\",\"&jsercy;\":\"ј\",\"&jukcy;\":\"є\",\"&kappa;\":\"κ\",\"&kappav;\":\"ϰ\",\"&kcedil;\":\"ķ\",\"&kcy;\":\"к\",\"&kfr;\":\"𝔨\",\"&kgreen;\":\"ĸ\",\"&khcy;\":\"х\",\"&kjcy;\":\"ќ\",\"&kopf;\":\"𝕜\",\"&kscr;\":\"𝓀\",\"&lAarr;\":\"⇚\",\"&lArr;\":\"⇐\",\"&lAtail;\":\"⤛\",\"&lBarr;\":\"⤎\",\"&lE;\":\"≦\",\"&lEg;\":\"⪋\",\"&lHar;\":\"⥢\",\"&lacute;\":\"ĺ\",\"&laemptyv;\":\"⦴\",\"&lagran;\":\"ℒ\",\"&lambda;\":\"λ\",\"&lang;\":\"⟨\",\"&langd;\":\"⦑\",\"&langle;\":\"⟨\",\"&lap;\":\"⪅\",\"&laquo\":\"«\",\"&laquo;\":\"«\",\"&larr;\":\"←\",\"&larrb;\":\"⇤\",\"&larrbfs;\":\"⤟\",\"&larrfs;\":\"⤝\",\"&larrhk;\":\"↩\",\"&larrlp;\":\"↫\",\"&larrpl;\":\"⤹\",\"&larrsim;\":\"⥳\",\"&larrtl;\":\"↢\",\"&lat;\":\"⪫\",\"&latail;\":\"⤙\",\"&late;\":\"⪭\",\"&lates;\":\"⪭︀\",\"&lbarr;\":\"⤌\",\"&lbbrk;\":\"❲\",\"&lbrace;\":\"{\",\"&lbrack;\":\"[\",\"&lbrke;\":\"⦋\",\"&lbrksld;\":\"⦏\",\"&lbrkslu;\":\"⦍\",\"&lcaron;\":\"ľ\",\"&lcedil;\":\"ļ\",\"&lceil;\":\"⌈\",\"&lcub;\":\"{\",\"&lcy;\":\"л\",\"&ldca;\":\"⤶\",\"&ldquo;\":\"“\",\"&ldquor;\":\"„\",\"&ldrdhar;\":\"⥧\",\"&ldrushar;\":\"⥋\",\"&ldsh;\":\"↲\",\"&le;\":\"≤\",\"&leftarrow;\":\"←\",\"&leftarrowtail;\":\"↢\",\"&leftharpoondown;\":\"↽\",\"&leftharpoonup;\":\"↼\",\"&leftleftarrows;\":\"⇇\",\"&leftrightarrow;\":\"↔\",\"&leftrightarrows;\":\"⇆\",\"&leftrightharpoons;\":\"⇋\",\"&leftrightsquigarrow;\":\"↭\",\"&leftthreetimes;\":\"⋋\",\"&leg;\":\"⋚\",\"&leq;\":\"≤\",\"&leqq;\":\"≦\",\"&leqslant;\":\"⩽\",\"&les;\":\"⩽\",\"&lescc;\":\"⪨\",\"&lesdot;\":\"⩿\",\"&lesdoto;\":\"⪁\",\"&lesdotor;\":\"⪃\",\"&lesg;\":\"⋚︀\",\"&lesges;\":\"⪓\",\"&lessapprox;\":\"⪅\",\"&lessdot;\":\"⋖\",\"&lesseqgtr;\":\"⋚\",\"&lesseqqgtr;\":\"⪋\",\"&lessgtr;\":\"≶\",\"&lesssim;\":\"≲\",\"&lfisht;\":\"⥼\",\"&lfloor;\":\"⌊\",\"&lfr;\":\"𝔩\",\"&lg;\":\"≶\",\"&lgE;\":\"⪑\",\"&lhard;\":\"↽\",\"&lharu;\":\"↼\",\"&lharul;\":\"⥪\",\"&lhblk;\":\"▄\",\"&ljcy;\":\"љ\",\"&ll;\":\"≪\",\"&llarr;\":\"⇇\",\"&llcorner;\":\"⌞\",\"&llhard;\":\"⥫\",\"&lltri;\":\"◺\",\"&lmidot;\":\"ŀ\",\"&lmoust;\":\"⎰\",\"&lmoustache;\":\"⎰\",\"&lnE;\":\"≨\",\"&lnap;\":\"⪉\",\"&lnapprox;\":\"⪉\",\"&lne;\":\"⪇\",\"&lneq;\":\"⪇\",\"&lneqq;\":\"≨\",\"&lnsim;\":\"⋦\",\"&loang;\":\"⟬\",\"&loarr;\":\"⇽\",\"&lobrk;\":\"⟦\",\"&longleftarrow;\":\"⟵\",\"&longleftrightarrow;\":\"⟷\",\"&longmapsto;\":\"⟼\",\"&longrightarrow;\":\"⟶\",\"&looparrowleft;\":\"↫\",\"&looparrowright;\":\"↬\",\"&lopar;\":\"⦅\",\"&lopf;\":\"𝕝\",\"&loplus;\":\"⨭\",\"&lotimes;\":\"⨴\",\"&lowast;\":\"∗\",\"&lowbar;\":\"_\",\"&loz;\":\"◊\",\"&lozenge;\":\"◊\",\"&lozf;\":\"⧫\",\"&lpar;\":\"(\",\"&lparlt;\":\"⦓\",\"&lrarr;\":\"⇆\",\"&lrcorner;\":\"⌟\",\"&lrhar;\":\"⇋\",\"&lrhard;\":\"⥭\",\"&lrm;\":\"‎\",\"&lrtri;\":\"⊿\",\"&lsaquo;\":\"‹\",\"&lscr;\":\"𝓁\",\"&lsh;\":\"↰\",\"&lsim;\":\"≲\",\"&lsime;\":\"⪍\",\"&lsimg;\":\"⪏\",\"&lsqb;\":\"[\",\"&lsquo;\":\"‘\",\"&lsquor;\":\"‚\",\"&lstrok;\":\"ł\",\"&lt\":\"<\",\"&lt;\":\"<\",\"&ltcc;\":\"⪦\",\"&ltcir;\":\"⩹\",\"&ltdot;\":\"⋖\",\"&lthree;\":\"⋋\",\"&ltimes;\":\"⋉\",\"&ltlarr;\":\"⥶\",\"&ltquest;\":\"⩻\",\"&ltrPar;\":\"⦖\",\"&ltri;\":\"◃\",\"&ltrie;\":\"⊴\",\"&ltrif;\":\"◂\",\"&lurdshar;\":\"⥊\",\"&luruhar;\":\"⥦\",\"&lvertneqq;\":\"≨︀\",\"&lvnE;\":\"≨︀\",\"&mDDot;\":\"∺\",\"&macr\":\"¯\",\"&macr;\":\"¯\",\"&male;\":\"♂\",\"&malt;\":\"✠\",\"&maltese;\":\"✠\",\"&map;\":\"↦\",\"&mapsto;\":\"↦\",\"&mapstodown;\":\"↧\",\"&mapstoleft;\":\"↤\",\"&mapstoup;\":\"↥\",\"&marker;\":\"▮\",\"&mcomma;\":\"⨩\",\"&mcy;\":\"м\",\"&mdash;\":\"—\",\"&measuredangle;\":\"∡\",\"&mfr;\":\"𝔪\",\"&mho;\":\"℧\",\"&micro\":\"µ\",\"&micro;\":\"µ\",\"&mid;\":\"∣\",\"&midast;\":\"*\",\"&midcir;\":\"⫰\",\"&middot\":\"·\",\"&middot;\":\"·\",\"&minus;\":\"−\",\"&minusb;\":\"⊟\",\"&minusd;\":\"∸\",\"&minusdu;\":\"⨪\",\"&mlcp;\":\"⫛\",\"&mldr;\":\"…\",\"&mnplus;\":\"∓\",\"&models;\":\"⊧\",\"&mopf;\":\"𝕞\",\"&mp;\":\"∓\",\"&mscr;\":\"𝓂\",\"&mstpos;\":\"∾\",\"&mu;\":\"μ\",\"&multimap;\":\"⊸\",\"&mumap;\":\"⊸\",\"&nGg;\":\"⋙̸\",\"&nGt;\":\"≫⃒\",\"&nGtv;\":\"≫̸\",\"&nLeftarrow;\":\"⇍\",\"&nLeftrightarrow;\":\"⇎\",\"&nLl;\":\"⋘̸\",\"&nLt;\":\"≪⃒\",\"&nLtv;\":\"≪̸\",\"&nRightarrow;\":\"⇏\",\"&nVDash;\":\"⊯\",\"&nVdash;\":\"⊮\",\"&nabla;\":\"∇\",\"&nacute;\":\"ń\",\"&nang;\":\"∠⃒\",\"&nap;\":\"≉\",\"&napE;\":\"⩰̸\",\"&napid;\":\"≋̸\",\"&napos;\":\"ʼn\",\"&napprox;\":\"≉\",\"&natur;\":\"♮\",\"&natural;\":\"♮\",\"&naturals;\":\"ℕ\",\"&nbsp\":\" \",\"&nbsp;\":\" \",\"&nbump;\":\"≎̸\",\"&nbumpe;\":\"≏̸\",\"&ncap;\":\"⩃\",\"&ncaron;\":\"ň\",\"&ncedil;\":\"ņ\",\"&ncong;\":\"≇\",\"&ncongdot;\":\"⩭̸\",\"&ncup;\":\"⩂\",\"&ncy;\":\"н\",\"&ndash;\":\"–\",\"&ne;\":\"≠\",\"&neArr;\":\"⇗\",\"&nearhk;\":\"⤤\",\"&nearr;\":\"↗\",\"&nearrow;\":\"↗\",\"&nedot;\":\"≐̸\",\"&nequiv;\":\"≢\",\"&nesear;\":\"⤨\",\"&nesim;\":\"≂̸\",\"&nexist;\":\"∄\",\"&nexists;\":\"∄\",\"&nfr;\":\"𝔫\",\"&ngE;\":\"≧̸\",\"&nge;\":\"≱\",\"&ngeq;\":\"≱\",\"&ngeqq;\":\"≧̸\",\"&ngeqslant;\":\"⩾̸\",\"&nges;\":\"⩾̸\",\"&ngsim;\":\"≵\",\"&ngt;\":\"≯\",\"&ngtr;\":\"≯\",\"&nhArr;\":\"⇎\",\"&nharr;\":\"↮\",\"&nhpar;\":\"⫲\",\"&ni;\":\"∋\",\"&nis;\":\"⋼\",\"&nisd;\":\"⋺\",\"&niv;\":\"∋\",\"&njcy;\":\"њ\",\"&nlArr;\":\"⇍\",\"&nlE;\":\"≦̸\",\"&nlarr;\":\"↚\",\"&nldr;\":\"‥\",\"&nle;\":\"≰\",\"&nleftarrow;\":\"↚\",\"&nleftrightarrow;\":\"↮\",\"&nleq;\":\"≰\",\"&nleqq;\":\"≦̸\",\"&nleqslant;\":\"⩽̸\",\"&nles;\":\"⩽̸\",\"&nless;\":\"≮\",\"&nlsim;\":\"≴\",\"&nlt;\":\"≮\",\"&nltri;\":\"⋪\",\"&nltrie;\":\"⋬\",\"&nmid;\":\"∤\",\"&nopf;\":\"𝕟\",\"&not\":\"¬\",\"&not;\":\"¬\",\"&notin;\":\"∉\",\"&notinE;\":\"⋹̸\",\"&notindot;\":\"⋵̸\",\"&notinva;\":\"∉\",\"&notinvb;\":\"⋷\",\"&notinvc;\":\"⋶\",\"&notni;\":\"∌\",\"&notniva;\":\"∌\",\"&notnivb;\":\"⋾\",\"&notnivc;\":\"⋽\",\"&npar;\":\"∦\",\"&nparallel;\":\"∦\",\"&nparsl;\":\"⫽⃥\",\"&npart;\":\"∂̸\",\"&npolint;\":\"⨔\",\"&npr;\":\"⊀\",\"&nprcue;\":\"⋠\",\"&npre;\":\"⪯̸\",\"&nprec;\":\"⊀\",\"&npreceq;\":\"⪯̸\",\"&nrArr;\":\"⇏\",\"&nrarr;\":\"↛\",\"&nrarrc;\":\"⤳̸\",\"&nrarrw;\":\"↝̸\",\"&nrightarrow;\":\"↛\",\"&nrtri;\":\"⋫\",\"&nrtrie;\":\"⋭\",\"&nsc;\":\"⊁\",\"&nsccue;\":\"⋡\",\"&nsce;\":\"⪰̸\",\"&nscr;\":\"𝓃\",\"&nshortmid;\":\"∤\",\"&nshortparallel;\":\"∦\",\"&nsim;\":\"≁\",\"&nsime;\":\"≄\",\"&nsimeq;\":\"≄\",\"&nsmid;\":\"∤\",\"&nspar;\":\"∦\",\"&nsqsube;\":\"⋢\",\"&nsqsupe;\":\"⋣\",\"&nsub;\":\"⊄\",\"&nsubE;\":\"⫅̸\",\"&nsube;\":\"⊈\",\"&nsubset;\":\"⊂⃒\",\"&nsubseteq;\":\"⊈\",\"&nsubseteqq;\":\"⫅̸\",\"&nsucc;\":\"⊁\",\"&nsucceq;\":\"⪰̸\",\"&nsup;\":\"⊅\",\"&nsupE;\":\"⫆̸\",\"&nsupe;\":\"⊉\",\"&nsupset;\":\"⊃⃒\",\"&nsupseteq;\":\"⊉\",\"&nsupseteqq;\":\"⫆̸\",\"&ntgl;\":\"≹\",\"&ntilde\":\"ñ\",\"&ntilde;\":\"ñ\",\"&ntlg;\":\"≸\",\"&ntriangleleft;\":\"⋪\",\"&ntrianglelefteq;\":\"⋬\",\"&ntriangleright;\":\"⋫\",\"&ntrianglerighteq;\":\"⋭\",\"&nu;\":\"ν\",\"&num;\":\"#\",\"&numero;\":\"№\",\"&numsp;\":\" \",\"&nvDash;\":\"⊭\",\"&nvHarr;\":\"⤄\",\"&nvap;\":\"≍⃒\",\"&nvdash;\":\"⊬\",\"&nvge;\":\"≥⃒\",\"&nvgt;\":\">⃒\",\"&nvinfin;\":\"⧞\",\"&nvlArr;\":\"⤂\",\"&nvle;\":\"≤⃒\",\"&nvlt;\":\"<⃒\",\"&nvltrie;\":\"⊴⃒\",\"&nvrArr;\":\"⤃\",\"&nvrtrie;\":\"⊵⃒\",\"&nvsim;\":\"∼⃒\",\"&nwArr;\":\"⇖\",\"&nwarhk;\":\"⤣\",\"&nwarr;\":\"↖\",\"&nwarrow;\":\"↖\",\"&nwnear;\":\"⤧\",\"&oS;\":\"Ⓢ\",\"&oacute\":\"ó\",\"&oacute;\":\"ó\",\"&oast;\":\"⊛\",\"&ocir;\":\"⊚\",\"&ocirc\":\"ô\",\"&ocirc;\":\"ô\",\"&ocy;\":\"о\",\"&odash;\":\"⊝\",\"&odblac;\":\"ő\",\"&odiv;\":\"⨸\",\"&odot;\":\"⊙\",\"&odsold;\":\"⦼\",\"&oelig;\":\"œ\",\"&ofcir;\":\"⦿\",\"&ofr;\":\"𝔬\",\"&ogon;\":\"˛\",\"&ograve\":\"ò\",\"&ograve;\":\"ò\",\"&ogt;\":\"⧁\",\"&ohbar;\":\"⦵\",\"&ohm;\":\"Ω\",\"&oint;\":\"∮\",\"&olarr;\":\"↺\",\"&olcir;\":\"⦾\",\"&olcross;\":\"⦻\",\"&oline;\":\"‾\",\"&olt;\":\"⧀\",\"&omacr;\":\"ō\",\"&omega;\":\"ω\",\"&omicron;\":\"ο\",\"&omid;\":\"⦶\",\"&ominus;\":\"⊖\",\"&oopf;\":\"𝕠\",\"&opar;\":\"⦷\",\"&operp;\":\"⦹\",\"&oplus;\":\"⊕\",\"&or;\":\"∨\",\"&orarr;\":\"↻\",\"&ord;\":\"⩝\",\"&order;\":\"ℴ\",\"&orderof;\":\"ℴ\",\"&ordf\":\"ª\",\"&ordf;\":\"ª\",\"&ordm\":\"º\",\"&ordm;\":\"º\",\"&origof;\":\"⊶\",\"&oror;\":\"⩖\",\"&orslope;\":\"⩗\",\"&orv;\":\"⩛\",\"&oscr;\":\"ℴ\",\"&oslash\":\"ø\",\"&oslash;\":\"ø\",\"&osol;\":\"⊘\",\"&otilde\":\"õ\",\"&otilde;\":\"õ\",\"&otimes;\":\"⊗\",\"&otimesas;\":\"⨶\",\"&ouml\":\"ö\",\"&ouml;\":\"ö\",\"&ovbar;\":\"⌽\",\"&par;\":\"∥\",\"&para\":\"¶\",\"&para;\":\"¶\",\"&parallel;\":\"∥\",\"&parsim;\":\"⫳\",\"&parsl;\":\"⫽\",\"&part;\":\"∂\",\"&pcy;\":\"п\",\"&percnt;\":\"%\",\"&period;\":\".\",\"&permil;\":\"‰\",\"&perp;\":\"⊥\",\"&pertenk;\":\"‱\",\"&pfr;\":\"𝔭\",\"&phi;\":\"φ\",\"&phiv;\":\"ϕ\",\"&phmmat;\":\"ℳ\",\"&phone;\":\"☎\",\"&pi;\":\"π\",\"&pitchfork;\":\"⋔\",\"&piv;\":\"ϖ\",\"&planck;\":\"ℏ\",\"&planckh;\":\"ℎ\",\"&plankv;\":\"ℏ\",\"&plus;\":\"+\",\"&plusacir;\":\"⨣\",\"&plusb;\":\"⊞\",\"&pluscir;\":\"⨢\",\"&plusdo;\":\"∔\",\"&plusdu;\":\"⨥\",\"&pluse;\":\"⩲\",\"&plusmn\":\"±\",\"&plusmn;\":\"±\",\"&plussim;\":\"⨦\",\"&plustwo;\":\"⨧\",\"&pm;\":\"±\",\"&pointint;\":\"⨕\",\"&popf;\":\"𝕡\",\"&pound\":\"£\",\"&pound;\":\"£\",\"&pr;\":\"≺\",\"&prE;\":\"⪳\",\"&prap;\":\"⪷\",\"&prcue;\":\"≼\",\"&pre;\":\"⪯\",\"&prec;\":\"≺\",\"&precapprox;\":\"⪷\",\"&preccurlyeq;\":\"≼\",\"&preceq;\":\"⪯\",\"&precnapprox;\":\"⪹\",\"&precneqq;\":\"⪵\",\"&precnsim;\":\"⋨\",\"&precsim;\":\"≾\",\"&prime;\":\"′\",\"&primes;\":\"ℙ\",\"&prnE;\":\"⪵\",\"&prnap;\":\"⪹\",\"&prnsim;\":\"⋨\",\"&prod;\":\"∏\",\"&profalar;\":\"⌮\",\"&profline;\":\"⌒\",\"&profsurf;\":\"⌓\",\"&prop;\":\"∝\",\"&propto;\":\"∝\",\"&prsim;\":\"≾\",\"&prurel;\":\"⊰\",\"&pscr;\":\"𝓅\",\"&psi;\":\"ψ\",\"&puncsp;\":\" \",\"&qfr;\":\"𝔮\",\"&qint;\":\"⨌\",\"&qopf;\":\"𝕢\",\"&qprime;\":\"⁗\",\"&qscr;\":\"𝓆\",\"&quaternions;\":\"ℍ\",\"&quatint;\":\"⨖\",\"&quest;\":\"?\",\"&questeq;\":\"≟\",\"&quot\":'\"',\"&quot;\":'\"',\"&rAarr;\":\"⇛\",\"&rArr;\":\"⇒\",\"&rAtail;\":\"⤜\",\"&rBarr;\":\"⤏\",\"&rHar;\":\"⥤\",\"&race;\":\"∽̱\",\"&racute;\":\"ŕ\",\"&radic;\":\"√\",\"&raemptyv;\":\"⦳\",\"&rang;\":\"⟩\",\"&rangd;\":\"⦒\",\"&range;\":\"⦥\",\"&rangle;\":\"⟩\",\"&raquo\":\"»\",\"&raquo;\":\"»\",\"&rarr;\":\"→\",\"&rarrap;\":\"⥵\",\"&rarrb;\":\"⇥\",\"&rarrbfs;\":\"⤠\",\"&rarrc;\":\"⤳\",\"&rarrfs;\":\"⤞\",\"&rarrhk;\":\"↪\",\"&rarrlp;\":\"↬\",\"&rarrpl;\":\"⥅\",\"&rarrsim;\":\"⥴\",\"&rarrtl;\":\"↣\",\"&rarrw;\":\"↝\",\"&ratail;\":\"⤚\",\"&ratio;\":\"∶\",\"&rationals;\":\"ℚ\",\"&rbarr;\":\"⤍\",\"&rbbrk;\":\"❳\",\"&rbrace;\":\"}\",\"&rbrack;\":\"]\",\"&rbrke;\":\"⦌\",\"&rbrksld;\":\"⦎\",\"&rbrkslu;\":\"⦐\",\"&rcaron;\":\"ř\",\"&rcedil;\":\"ŗ\",\"&rceil;\":\"⌉\",\"&rcub;\":\"}\",\"&rcy;\":\"р\",\"&rdca;\":\"⤷\",\"&rdldhar;\":\"⥩\",\"&rdquo;\":\"”\",\"&rdquor;\":\"”\",\"&rdsh;\":\"↳\",\"&real;\":\"ℜ\",\"&realine;\":\"ℛ\",\"&realpart;\":\"ℜ\",\"&reals;\":\"ℝ\",\"&rect;\":\"▭\",\"&reg\":\"®\",\"&reg;\":\"®\",\"&rfisht;\":\"⥽\",\"&rfloor;\":\"⌋\",\"&rfr;\":\"𝔯\",\"&rhard;\":\"⇁\",\"&rharu;\":\"⇀\",\"&rharul;\":\"⥬\",\"&rho;\":\"ρ\",\"&rhov;\":\"ϱ\",\"&rightarrow;\":\"→\",\"&rightarrowtail;\":\"↣\",\"&rightharpoondown;\":\"⇁\",\"&rightharpoonup;\":\"⇀\",\"&rightleftarrows;\":\"⇄\",\"&rightleftharpoons;\":\"⇌\",\"&rightrightarrows;\":\"⇉\",\"&rightsquigarrow;\":\"↝\",\"&rightthreetimes;\":\"⋌\",\"&ring;\":\"˚\",\"&risingdotseq;\":\"≓\",\"&rlarr;\":\"⇄\",\"&rlhar;\":\"⇌\",\"&rlm;\":\"‏\",\"&rmoust;\":\"⎱\",\"&rmoustache;\":\"⎱\",\"&rnmid;\":\"⫮\",\"&roang;\":\"⟭\",\"&roarr;\":\"⇾\",\"&robrk;\":\"⟧\",\"&ropar;\":\"⦆\",\"&ropf;\":\"𝕣\",\"&roplus;\":\"⨮\",\"&rotimes;\":\"⨵\",\"&rpar;\":\")\",\"&rpargt;\":\"⦔\",\"&rppolint;\":\"⨒\",\"&rrarr;\":\"⇉\",\"&rsaquo;\":\"›\",\"&rscr;\":\"𝓇\",\"&rsh;\":\"↱\",\"&rsqb;\":\"]\",\"&rsquo;\":\"’\",\"&rsquor;\":\"’\",\"&rthree;\":\"⋌\",\"&rtimes;\":\"⋊\",\"&rtri;\":\"▹\",\"&rtrie;\":\"⊵\",\"&rtrif;\":\"▸\",\"&rtriltri;\":\"⧎\",\"&ruluhar;\":\"⥨\",\"&rx;\":\"℞\",\"&sacute;\":\"ś\",\"&sbquo;\":\"‚\",\"&sc;\":\"≻\",\"&scE;\":\"⪴\",\"&scap;\":\"⪸\",\"&scaron;\":\"š\",\"&sccue;\":\"≽\",\"&sce;\":\"⪰\",\"&scedil;\":\"ş\",\"&scirc;\":\"ŝ\",\"&scnE;\":\"⪶\",\"&scnap;\":\"⪺\",\"&scnsim;\":\"⋩\",\"&scpolint;\":\"⨓\",\"&scsim;\":\"≿\",\"&scy;\":\"с\",\"&sdot;\":\"⋅\",\"&sdotb;\":\"⊡\",\"&sdote;\":\"⩦\",\"&seArr;\":\"⇘\",\"&searhk;\":\"⤥\",\"&searr;\":\"↘\",\"&searrow;\":\"↘\",\"&sect\":\"§\",\"&sect;\":\"§\",\"&semi;\":\";\",\"&seswar;\":\"⤩\",\"&setminus;\":\"∖\",\"&setmn;\":\"∖\",\"&sext;\":\"✶\",\"&sfr;\":\"𝔰\",\"&sfrown;\":\"⌢\",\"&sharp;\":\"♯\",\"&shchcy;\":\"щ\",\"&shcy;\":\"ш\",\"&shortmid;\":\"∣\",\"&shortparallel;\":\"∥\",\"&shy\":\"­\",\"&shy;\":\"­\",\"&sigma;\":\"σ\",\"&sigmaf;\":\"ς\",\"&sigmav;\":\"ς\",\"&sim;\":\"∼\",\"&simdot;\":\"⩪\",\"&sime;\":\"≃\",\"&simeq;\":\"≃\",\"&simg;\":\"⪞\",\"&simgE;\":\"⪠\",\"&siml;\":\"⪝\",\"&simlE;\":\"⪟\",\"&simne;\":\"≆\",\"&simplus;\":\"⨤\",\"&simrarr;\":\"⥲\",\"&slarr;\":\"←\",\"&smallsetminus;\":\"∖\",\"&smashp;\":\"⨳\",\"&smeparsl;\":\"⧤\",\"&smid;\":\"∣\",\"&smile;\":\"⌣\",\"&smt;\":\"⪪\",\"&smte;\":\"⪬\",\"&smtes;\":\"⪬︀\",\"&softcy;\":\"ь\",\"&sol;\":\"/\",\"&solb;\":\"⧄\",\"&solbar;\":\"⌿\",\"&sopf;\":\"𝕤\",\"&spades;\":\"♠\",\"&spadesuit;\":\"♠\",\"&spar;\":\"∥\",\"&sqcap;\":\"⊓\",\"&sqcaps;\":\"⊓︀\",\"&sqcup;\":\"⊔\",\"&sqcups;\":\"⊔︀\",\"&sqsub;\":\"⊏\",\"&sqsube;\":\"⊑\",\"&sqsubset;\":\"⊏\",\"&sqsubseteq;\":\"⊑\",\"&sqsup;\":\"⊐\",\"&sqsupe;\":\"⊒\",\"&sqsupset;\":\"⊐\",\"&sqsupseteq;\":\"⊒\",\"&squ;\":\"□\",\"&square;\":\"□\",\"&squarf;\":\"▪\",\"&squf;\":\"▪\",\"&srarr;\":\"→\",\"&sscr;\":\"𝓈\",\"&ssetmn;\":\"∖\",\"&ssmile;\":\"⌣\",\"&sstarf;\":\"⋆\",\"&star;\":\"☆\",\"&starf;\":\"★\",\"&straightepsilon;\":\"ϵ\",\"&straightphi;\":\"ϕ\",\"&strns;\":\"¯\",\"&sub;\":\"⊂\",\"&subE;\":\"⫅\",\"&subdot;\":\"⪽\",\"&sube;\":\"⊆\",\"&subedot;\":\"⫃\",\"&submult;\":\"⫁\",\"&subnE;\":\"⫋\",\"&subne;\":\"⊊\",\"&subplus;\":\"⪿\",\"&subrarr;\":\"⥹\",\"&subset;\":\"⊂\",\"&subseteq;\":\"⊆\",\"&subseteqq;\":\"⫅\",\"&subsetneq;\":\"⊊\",\"&subsetneqq;\":\"⫋\",\"&subsim;\":\"⫇\",\"&subsub;\":\"⫕\",\"&subsup;\":\"⫓\",\"&succ;\":\"≻\",\"&succapprox;\":\"⪸\",\"&succcurlyeq;\":\"≽\",\"&succeq;\":\"⪰\",\"&succnapprox;\":\"⪺\",\"&succneqq;\":\"⪶\",\"&succnsim;\":\"⋩\",\"&succsim;\":\"≿\",\"&sum;\":\"∑\",\"&sung;\":\"♪\",\"&sup1\":\"¹\",\"&sup1;\":\"¹\",\"&sup2\":\"²\",\"&sup2;\":\"²\",\"&sup3\":\"³\",\"&sup3;\":\"³\",\"&sup;\":\"⊃\",\"&supE;\":\"⫆\",\"&supdot;\":\"⪾\",\"&supdsub;\":\"⫘\",\"&supe;\":\"⊇\",\"&supedot;\":\"⫄\",\"&suphsol;\":\"⟉\",\"&suphsub;\":\"⫗\",\"&suplarr;\":\"⥻\",\"&supmult;\":\"⫂\",\"&supnE;\":\"⫌\",\"&supne;\":\"⊋\",\"&supplus;\":\"⫀\",\"&supset;\":\"⊃\",\"&supseteq;\":\"⊇\",\"&supseteqq;\":\"⫆\",\"&supsetneq;\":\"⊋\",\"&supsetneqq;\":\"⫌\",\"&supsim;\":\"⫈\",\"&supsub;\":\"⫔\",\"&supsup;\":\"⫖\",\"&swArr;\":\"⇙\",\"&swarhk;\":\"⤦\",\"&swarr;\":\"↙\",\"&swarrow;\":\"↙\",\"&swnwar;\":\"⤪\",\"&szlig\":\"ß\",\"&szlig;\":\"ß\",\"&target;\":\"⌖\",\"&tau;\":\"τ\",\"&tbrk;\":\"⎴\",\"&tcaron;\":\"ť\",\"&tcedil;\":\"ţ\",\"&tcy;\":\"т\",\"&tdot;\":\"⃛\",\"&telrec;\":\"⌕\",\"&tfr;\":\"𝔱\",\"&there4;\":\"∴\",\"&therefore;\":\"∴\",\"&theta;\":\"θ\",\"&thetasym;\":\"ϑ\",\"&thetav;\":\"ϑ\",\"&thickapprox;\":\"≈\",\"&thicksim;\":\"∼\",\"&thinsp;\":\" \",\"&thkap;\":\"≈\",\"&thksim;\":\"∼\",\"&thorn\":\"þ\",\"&thorn;\":\"þ\",\"&tilde;\":\"˜\",\"&times\":\"×\",\"&times;\":\"×\",\"&timesb;\":\"⊠\",\"&timesbar;\":\"⨱\",\"&timesd;\":\"⨰\",\"&tint;\":\"∭\",\"&toea;\":\"⤨\",\"&top;\":\"⊤\",\"&topbot;\":\"⌶\",\"&topcir;\":\"⫱\",\"&topf;\":\"𝕥\",\"&topfork;\":\"⫚\",\"&tosa;\":\"⤩\",\"&tprime;\":\"‴\",\"&trade;\":\"™\",\"&triangle;\":\"▵\",\"&triangledown;\":\"▿\",\"&triangleleft;\":\"◃\",\"&trianglelefteq;\":\"⊴\",\"&triangleq;\":\"≜\",\"&triangleright;\":\"▹\",\"&trianglerighteq;\":\"⊵\",\"&tridot;\":\"◬\",\"&trie;\":\"≜\",\"&triminus;\":\"⨺\",\"&triplus;\":\"⨹\",\"&trisb;\":\"⧍\",\"&tritime;\":\"⨻\",\"&trpezium;\":\"⏢\",\"&tscr;\":\"𝓉\",\"&tscy;\":\"ц\",\"&tshcy;\":\"ћ\",\"&tstrok;\":\"ŧ\",\"&twixt;\":\"≬\",\"&twoheadleftarrow;\":\"↞\",\"&twoheadrightarrow;\":\"↠\",\"&uArr;\":\"⇑\",\"&uHar;\":\"⥣\",\"&uacute\":\"ú\",\"&uacute;\":\"ú\",\"&uarr;\":\"↑\",\"&ubrcy;\":\"ў\",\"&ubreve;\":\"ŭ\",\"&ucirc\":\"û\",\"&ucirc;\":\"û\",\"&ucy;\":\"у\",\"&udarr;\":\"⇅\",\"&udblac;\":\"ű\",\"&udhar;\":\"⥮\",\"&ufisht;\":\"⥾\",\"&ufr;\":\"𝔲\",\"&ugrave\":\"ù\",\"&ugrave;\":\"ù\",\"&uharl;\":\"↿\",\"&uharr;\":\"↾\",\"&uhblk;\":\"▀\",\"&ulcorn;\":\"⌜\",\"&ulcorner;\":\"⌜\",\"&ulcrop;\":\"⌏\",\"&ultri;\":\"◸\",\"&umacr;\":\"ū\",\"&uml\":\"¨\",\"&uml;\":\"¨\",\"&uogon;\":\"ų\",\"&uopf;\":\"𝕦\",\"&uparrow;\":\"↑\",\"&updownarrow;\":\"↕\",\"&upharpoonleft;\":\"↿\",\"&upharpoonright;\":\"↾\",\"&uplus;\":\"⊎\",\"&upsi;\":\"υ\",\"&upsih;\":\"ϒ\",\"&upsilon;\":\"υ\",\"&upuparrows;\":\"⇈\",\"&urcorn;\":\"⌝\",\"&urcorner;\":\"⌝\",\"&urcrop;\":\"⌎\",\"&uring;\":\"ů\",\"&urtri;\":\"◹\",\"&uscr;\":\"𝓊\",\"&utdot;\":\"⋰\",\"&utilde;\":\"ũ\",\"&utri;\":\"▵\",\"&utrif;\":\"▴\",\"&uuarr;\":\"⇈\",\"&uuml\":\"ü\",\"&uuml;\":\"ü\",\"&uwangle;\":\"⦧\",\"&vArr;\":\"⇕\",\"&vBar;\":\"⫨\",\"&vBarv;\":\"⫩\",\"&vDash;\":\"⊨\",\"&vangrt;\":\"⦜\",\"&varepsilon;\":\"ϵ\",\"&varkappa;\":\"ϰ\",\"&varnothing;\":\"∅\",\"&varphi;\":\"ϕ\",\"&varpi;\":\"ϖ\",\"&varpropto;\":\"∝\",\"&varr;\":\"↕\",\"&varrho;\":\"ϱ\",\"&varsigma;\":\"ς\",\"&varsubsetneq;\":\"⊊︀\",\"&varsubsetneqq;\":\"⫋︀\",\"&varsupsetneq;\":\"⊋︀\",\"&varsupsetneqq;\":\"⫌︀\",\"&vartheta;\":\"ϑ\",\"&vartriangleleft;\":\"⊲\",\"&vartriangleright;\":\"⊳\",\"&vcy;\":\"в\",\"&vdash;\":\"⊢\",\"&vee;\":\"∨\",\"&veebar;\":\"⊻\",\"&veeeq;\":\"≚\",\"&vellip;\":\"⋮\",\"&verbar;\":\"|\",\"&vert;\":\"|\",\"&vfr;\":\"𝔳\",\"&vltri;\":\"⊲\",\"&vnsub;\":\"⊂⃒\",\"&vnsup;\":\"⊃⃒\",\"&vopf;\":\"𝕧\",\"&vprop;\":\"∝\",\"&vrtri;\":\"⊳\",\"&vscr;\":\"𝓋\",\"&vsubnE;\":\"⫋︀\",\"&vsubne;\":\"⊊︀\",\"&vsupnE;\":\"⫌︀\",\"&vsupne;\":\"⊋︀\",\"&vzigzag;\":\"⦚\",\"&wcirc;\":\"ŵ\",\"&wedbar;\":\"⩟\",\"&wedge;\":\"∧\",\"&wedgeq;\":\"≙\",\"&weierp;\":\"℘\",\"&wfr;\":\"𝔴\",\"&wopf;\":\"𝕨\",\"&wp;\":\"℘\",\"&wr;\":\"≀\",\"&wreath;\":\"≀\",\"&wscr;\":\"𝓌\",\"&xcap;\":\"⋂\",\"&xcirc;\":\"◯\",\"&xcup;\":\"⋃\",\"&xdtri;\":\"▽\",\"&xfr;\":\"𝔵\",\"&xhArr;\":\"⟺\",\"&xharr;\":\"⟷\",\"&xi;\":\"ξ\",\"&xlArr;\":\"⟸\",\"&xlarr;\":\"⟵\",\"&xmap;\":\"⟼\",\"&xnis;\":\"⋻\",\"&xodot;\":\"⨀\",\"&xopf;\":\"𝕩\",\"&xoplus;\":\"⨁\",\"&xotime;\":\"⨂\",\"&xrArr;\":\"⟹\",\"&xrarr;\":\"⟶\",\"&xscr;\":\"𝓍\",\"&xsqcup;\":\"⨆\",\"&xuplus;\":\"⨄\",\"&xutri;\":\"△\",\"&xvee;\":\"⋁\",\"&xwedge;\":\"⋀\",\"&yacute\":\"ý\",\"&yacute;\":\"ý\",\"&yacy;\":\"я\",\"&ycirc;\":\"ŷ\",\"&ycy;\":\"ы\",\"&yen\":\"¥\",\"&yen;\":\"¥\",\"&yfr;\":\"𝔶\",\"&yicy;\":\"ї\",\"&yopf;\":\"𝕪\",\"&yscr;\":\"𝓎\",\"&yucy;\":\"ю\",\"&yuml\":\"ÿ\",\"&yuml;\":\"ÿ\",\"&zacute;\":\"ź\",\"&zcaron;\":\"ž\",\"&zcy;\":\"з\",\"&zdot;\":\"ż\",\"&zeetrf;\":\"ℨ\",\"&zeta;\":\"ζ\",\"&zfr;\":\"𝔷\",\"&zhcy;\":\"ж\",\"&zigrarr;\":\"⇝\",\"&zopf;\":\"𝕫\",\"&zscr;\":\"𝓏\",\"&zwj;\":\"‍\",\"&zwnj;\":\"‌\"},characters:{\"Æ\":\"&AElig;\",\"&\":\"&amp;\",\"Á\":\"&Aacute;\",\"Ă\":\"&Abreve;\",\"Â\":\"&Acirc;\",\"А\":\"&Acy;\",\"𝔄\":\"&Afr;\",\"À\":\"&Agrave;\",\"Α\":\"&Alpha;\",\"Ā\":\"&Amacr;\",\"⩓\":\"&And;\",\"Ą\":\"&Aogon;\",\"𝔸\":\"&Aopf;\",\"⁡\":\"&af;\",\"Å\":\"&angst;\",\"𝒜\":\"&Ascr;\",\"≔\":\"&coloneq;\",\"Ã\":\"&Atilde;\",\"Ä\":\"&Auml;\",\"∖\":\"&ssetmn;\",\"⫧\":\"&Barv;\",\"⌆\":\"&doublebarwedge;\",\"Б\":\"&Bcy;\",\"∵\":\"&because;\",\"ℬ\":\"&bernou;\",\"Β\":\"&Beta;\",\"𝔅\":\"&Bfr;\",\"𝔹\":\"&Bopf;\",\"˘\":\"&breve;\",\"≎\":\"&bump;\",\"Ч\":\"&CHcy;\",\"©\":\"&copy;\",\"Ć\":\"&Cacute;\",\"⋒\":\"&Cap;\",\"ⅅ\":\"&DD;\",\"ℭ\":\"&Cfr;\",\"Č\":\"&Ccaron;\",\"Ç\":\"&Ccedil;\",\"Ĉ\":\"&Ccirc;\",\"∰\":\"&Cconint;\",\"Ċ\":\"&Cdot;\",\"¸\":\"&cedil;\",\"·\":\"&middot;\",\"Χ\":\"&Chi;\",\"⊙\":\"&odot;\",\"⊖\":\"&ominus;\",\"⊕\":\"&oplus;\",\"⊗\":\"&otimes;\",\"∲\":\"&cwconint;\",\"”\":\"&rdquor;\",\"’\":\"&rsquor;\",\"∷\":\"&Proportion;\",\"⩴\":\"&Colone;\",\"≡\":\"&equiv;\",\"∯\":\"&DoubleContourIntegral;\",\"∮\":\"&oint;\",\"ℂ\":\"&complexes;\",\"∐\":\"&coprod;\",\"∳\":\"&awconint;\",\"⨯\":\"&Cross;\",\"𝒞\":\"&Cscr;\",\"⋓\":\"&Cup;\",\"≍\":\"&asympeq;\",\"⤑\":\"&DDotrahd;\",\"Ђ\":\"&DJcy;\",\"Ѕ\":\"&DScy;\",\"Џ\":\"&DZcy;\",\"‡\":\"&ddagger;\",\"↡\":\"&Darr;\",\"⫤\":\"&DoubleLeftTee;\",\"Ď\":\"&Dcaron;\",\"Д\":\"&Dcy;\",\"∇\":\"&nabla;\",\"Δ\":\"&Delta;\",\"𝔇\":\"&Dfr;\",\"´\":\"&acute;\",\"˙\":\"&dot;\",\"˝\":\"&dblac;\",\"`\":\"&grave;\",\"˜\":\"&tilde;\",\"⋄\":\"&diamond;\",\"ⅆ\":\"&dd;\",\"𝔻\":\"&Dopf;\",\"¨\":\"&uml;\",\"⃜\":\"&DotDot;\",\"≐\":\"&esdot;\",\"⇓\":\"&dArr;\",\"⇐\":\"&lArr;\",\"⇔\":\"&iff;\",\"⟸\":\"&xlArr;\",\"⟺\":\"&xhArr;\",\"⟹\":\"&xrArr;\",\"⇒\":\"&rArr;\",\"⊨\":\"&vDash;\",\"⇑\":\"&uArr;\",\"⇕\":\"&vArr;\",\"∥\":\"&spar;\",\"↓\":\"&downarrow;\",\"⤓\":\"&DownArrowBar;\",\"⇵\":\"&duarr;\",\"̑\":\"&DownBreve;\",\"⥐\":\"&DownLeftRightVector;\",\"⥞\":\"&DownLeftTeeVector;\",\"↽\":\"&lhard;\",\"⥖\":\"&DownLeftVectorBar;\",\"⥟\":\"&DownRightTeeVector;\",\"⇁\":\"&rightharpoondown;\",\"⥗\":\"&DownRightVectorBar;\",\"⊤\":\"&top;\",\"↧\":\"&mapstodown;\",\"𝒟\":\"&Dscr;\",\"Đ\":\"&Dstrok;\",\"Ŋ\":\"&ENG;\",\"Ð\":\"&ETH;\",\"É\":\"&Eacute;\",\"Ě\":\"&Ecaron;\",\"Ê\":\"&Ecirc;\",\"Э\":\"&Ecy;\",\"Ė\":\"&Edot;\",\"𝔈\":\"&Efr;\",\"È\":\"&Egrave;\",\"∈\":\"&isinv;\",\"Ē\":\"&Emacr;\",\"◻\":\"&EmptySmallSquare;\",\"▫\":\"&EmptyVerySmallSquare;\",\"Ę\":\"&Eogon;\",\"𝔼\":\"&Eopf;\",\"Ε\":\"&Epsilon;\",\"⩵\":\"&Equal;\",\"≂\":\"&esim;\",\"⇌\":\"&rlhar;\",\"ℰ\":\"&expectation;\",\"⩳\":\"&Esim;\",\"Η\":\"&Eta;\",\"Ë\":\"&Euml;\",\"∃\":\"&exist;\",\"ⅇ\":\"&exponentiale;\",\"Ф\":\"&Fcy;\",\"𝔉\":\"&Ffr;\",\"◼\":\"&FilledSmallSquare;\",\"▪\":\"&squf;\",\"𝔽\":\"&Fopf;\",\"∀\":\"&forall;\",\"ℱ\":\"&Fscr;\",\"Ѓ\":\"&GJcy;\",\">\":\"&gt;\",\"Γ\":\"&Gamma;\",\"Ϝ\":\"&Gammad;\",\"Ğ\":\"&Gbreve;\",\"Ģ\":\"&Gcedil;\",\"Ĝ\":\"&Gcirc;\",\"Г\":\"&Gcy;\",\"Ġ\":\"&Gdot;\",\"𝔊\":\"&Gfr;\",\"⋙\":\"&ggg;\",\"𝔾\":\"&Gopf;\",\"≥\":\"&geq;\",\"⋛\":\"&gtreqless;\",\"≧\":\"&geqq;\",\"⪢\":\"&GreaterGreater;\",\"≷\":\"&gtrless;\",\"⩾\":\"&ges;\",\"≳\":\"&gtrsim;\",\"𝒢\":\"&Gscr;\",\"≫\":\"&gg;\",\"Ъ\":\"&HARDcy;\",\"ˇ\":\"&caron;\",\"^\":\"&Hat;\",\"Ĥ\":\"&Hcirc;\",\"ℌ\":\"&Poincareplane;\",\"ℋ\":\"&hamilt;\",\"ℍ\":\"&quaternions;\",\"─\":\"&boxh;\",\"Ħ\":\"&Hstrok;\",\"≏\":\"&bumpeq;\",\"Е\":\"&IEcy;\",\"IJ\":\"&IJlig;\",\"Ё\":\"&IOcy;\",\"Í\":\"&Iacute;\",\"Î\":\"&Icirc;\",\"И\":\"&Icy;\",\"İ\":\"&Idot;\",\"ℑ\":\"&imagpart;\",\"Ì\":\"&Igrave;\",\"Ī\":\"&Imacr;\",\"ⅈ\":\"&ii;\",\"∬\":\"&Int;\",\"∫\":\"&int;\",\"⋂\":\"&xcap;\",\"⁣\":\"&ic;\",\"⁢\":\"&it;\",\"Į\":\"&Iogon;\",\"𝕀\":\"&Iopf;\",\"Ι\":\"&Iota;\",\"ℐ\":\"&imagline;\",\"Ĩ\":\"&Itilde;\",\"І\":\"&Iukcy;\",\"Ï\":\"&Iuml;\",\"Ĵ\":\"&Jcirc;\",\"Й\":\"&Jcy;\",\"𝔍\":\"&Jfr;\",\"𝕁\":\"&Jopf;\",\"𝒥\":\"&Jscr;\",\"Ј\":\"&Jsercy;\",\"Є\":\"&Jukcy;\",\"Х\":\"&KHcy;\",\"Ќ\":\"&KJcy;\",\"Κ\":\"&Kappa;\",\"Ķ\":\"&Kcedil;\",\"К\":\"&Kcy;\",\"𝔎\":\"&Kfr;\",\"𝕂\":\"&Kopf;\",\"𝒦\":\"&Kscr;\",\"Љ\":\"&LJcy;\",\"<\":\"&lt;\",\"Ĺ\":\"&Lacute;\",\"Λ\":\"&Lambda;\",\"⟪\":\"&Lang;\",\"ℒ\":\"&lagran;\",\"↞\":\"&twoheadleftarrow;\",\"Ľ\":\"&Lcaron;\",\"Ļ\":\"&Lcedil;\",\"Л\":\"&Lcy;\",\"⟨\":\"&langle;\",\"←\":\"&slarr;\",\"⇤\":\"&larrb;\",\"⇆\":\"&lrarr;\",\"⌈\":\"&lceil;\",\"⟦\":\"&lobrk;\",\"⥡\":\"&LeftDownTeeVector;\",\"⇃\":\"&downharpoonleft;\",\"⥙\":\"&LeftDownVectorBar;\",\"⌊\":\"&lfloor;\",\"↔\":\"&leftrightarrow;\",\"⥎\":\"&LeftRightVector;\",\"⊣\":\"&dashv;\",\"↤\":\"&mapstoleft;\",\"⥚\":\"&LeftTeeVector;\",\"⊲\":\"&vltri;\",\"⧏\":\"&LeftTriangleBar;\",\"⊴\":\"&trianglelefteq;\",\"⥑\":\"&LeftUpDownVector;\",\"⥠\":\"&LeftUpTeeVector;\",\"↿\":\"&upharpoonleft;\",\"⥘\":\"&LeftUpVectorBar;\",\"↼\":\"&lharu;\",\"⥒\":\"&LeftVectorBar;\",\"⋚\":\"&lesseqgtr;\",\"≦\":\"&leqq;\",\"≶\":\"&lg;\",\"⪡\":\"&LessLess;\",\"⩽\":\"&les;\",\"≲\":\"&lsim;\",\"𝔏\":\"&Lfr;\",\"⋘\":\"&Ll;\",\"⇚\":\"&lAarr;\",\"Ŀ\":\"&Lmidot;\",\"⟵\":\"&xlarr;\",\"⟷\":\"&xharr;\",\"⟶\":\"&xrarr;\",\"𝕃\":\"&Lopf;\",\"↙\":\"&swarrow;\",\"↘\":\"&searrow;\",\"↰\":\"&lsh;\",\"Ł\":\"&Lstrok;\",\"≪\":\"&ll;\",\"⤅\":\"&Map;\",\"М\":\"&Mcy;\",\" \":\"&MediumSpace;\",\"ℳ\":\"&phmmat;\",\"𝔐\":\"&Mfr;\",\"∓\":\"&mp;\",\"𝕄\":\"&Mopf;\",\"Μ\":\"&Mu;\",\"Њ\":\"&NJcy;\",\"Ń\":\"&Nacute;\",\"Ň\":\"&Ncaron;\",\"Ņ\":\"&Ncedil;\",\"Н\":\"&Ncy;\",\"​\":\"&ZeroWidthSpace;\",\"\\n\":\"&NewLine;\",\"𝔑\":\"&Nfr;\",\"⁠\":\"&NoBreak;\",\" \":\"&nbsp;\",\"ℕ\":\"&naturals;\",\"⫬\":\"&Not;\",\"≢\":\"&nequiv;\",\"≭\":\"&NotCupCap;\",\"∦\":\"&nspar;\",\"∉\":\"&notinva;\",\"≠\":\"&ne;\",\"≂̸\":\"&nesim;\",\"∄\":\"&nexists;\",\"≯\":\"&ngtr;\",\"≱\":\"&ngeq;\",\"≧̸\":\"&ngeqq;\",\"≫̸\":\"&nGtv;\",\"≹\":\"&ntgl;\",\"⩾̸\":\"&nges;\",\"≵\":\"&ngsim;\",\"≎̸\":\"&nbump;\",\"≏̸\":\"&nbumpe;\",\"⋪\":\"&ntriangleleft;\",\"⧏̸\":\"&NotLeftTriangleBar;\",\"⋬\":\"&ntrianglelefteq;\",\"≮\":\"&nlt;\",\"≰\":\"&nleq;\",\"≸\":\"&ntlg;\",\"≪̸\":\"&nLtv;\",\"⩽̸\":\"&nles;\",\"≴\":\"&nlsim;\",\"⪢̸\":\"&NotNestedGreaterGreater;\",\"⪡̸\":\"&NotNestedLessLess;\",\"⊀\":\"&nprec;\",\"⪯̸\":\"&npreceq;\",\"⋠\":\"&nprcue;\",\"∌\":\"&notniva;\",\"⋫\":\"&ntriangleright;\",\"⧐̸\":\"&NotRightTriangleBar;\",\"⋭\":\"&ntrianglerighteq;\",\"⊏̸\":\"&NotSquareSubset;\",\"⋢\":\"&nsqsube;\",\"⊐̸\":\"&NotSquareSuperset;\",\"⋣\":\"&nsqsupe;\",\"⊂⃒\":\"&vnsub;\",\"⊈\":\"&nsubseteq;\",\"⊁\":\"&nsucc;\",\"⪰̸\":\"&nsucceq;\",\"⋡\":\"&nsccue;\",\"≿̸\":\"&NotSucceedsTilde;\",\"⊃⃒\":\"&vnsup;\",\"⊉\":\"&nsupseteq;\",\"≁\":\"&nsim;\",\"≄\":\"&nsimeq;\",\"≇\":\"&ncong;\",\"≉\":\"&napprox;\",\"∤\":\"&nsmid;\",\"𝒩\":\"&Nscr;\",\"Ñ\":\"&Ntilde;\",\"Ν\":\"&Nu;\",\"Œ\":\"&OElig;\",\"Ó\":\"&Oacute;\",\"Ô\":\"&Ocirc;\",\"О\":\"&Ocy;\",\"Ő\":\"&Odblac;\",\"𝔒\":\"&Ofr;\",\"Ò\":\"&Ograve;\",\"Ō\":\"&Omacr;\",\"Ω\":\"&ohm;\",\"Ο\":\"&Omicron;\",\"𝕆\":\"&Oopf;\",\"“\":\"&ldquo;\",\"‘\":\"&lsquo;\",\"⩔\":\"&Or;\",\"𝒪\":\"&Oscr;\",\"Ø\":\"&Oslash;\",\"Õ\":\"&Otilde;\",\"⨷\":\"&Otimes;\",\"Ö\":\"&Ouml;\",\"‾\":\"&oline;\",\"⏞\":\"&OverBrace;\",\"⎴\":\"&tbrk;\",\"⏜\":\"&OverParenthesis;\",\"∂\":\"&part;\",\"П\":\"&Pcy;\",\"𝔓\":\"&Pfr;\",\"Φ\":\"&Phi;\",\"Π\":\"&Pi;\",\"±\":\"&pm;\",\"ℙ\":\"&primes;\",\"⪻\":\"&Pr;\",\"≺\":\"&prec;\",\"⪯\":\"&preceq;\",\"≼\":\"&preccurlyeq;\",\"≾\":\"&prsim;\",\"″\":\"&Prime;\",\"∏\":\"&prod;\",\"∝\":\"&vprop;\",\"𝒫\":\"&Pscr;\",\"Ψ\":\"&Psi;\",'\"':\"&quot;\",\"𝔔\":\"&Qfr;\",\"ℚ\":\"&rationals;\",\"𝒬\":\"&Qscr;\",\"⤐\":\"&drbkarow;\",\"®\":\"&reg;\",\"Ŕ\":\"&Racute;\",\"⟫\":\"&Rang;\",\"↠\":\"&twoheadrightarrow;\",\"⤖\":\"&Rarrtl;\",\"Ř\":\"&Rcaron;\",\"Ŗ\":\"&Rcedil;\",\"Р\":\"&Rcy;\",\"ℜ\":\"&realpart;\",\"∋\":\"&niv;\",\"⇋\":\"&lrhar;\",\"⥯\":\"&duhar;\",\"Ρ\":\"&Rho;\",\"⟩\":\"&rangle;\",\"→\":\"&srarr;\",\"⇥\":\"&rarrb;\",\"⇄\":\"&rlarr;\",\"⌉\":\"&rceil;\",\"⟧\":\"&robrk;\",\"⥝\":\"&RightDownTeeVector;\",\"⇂\":\"&downharpoonright;\",\"⥕\":\"&RightDownVectorBar;\",\"⌋\":\"&rfloor;\",\"⊢\":\"&vdash;\",\"↦\":\"&mapsto;\",\"⥛\":\"&RightTeeVector;\",\"⊳\":\"&vrtri;\",\"⧐\":\"&RightTriangleBar;\",\"⊵\":\"&trianglerighteq;\",\"⥏\":\"&RightUpDownVector;\",\"⥜\":\"&RightUpTeeVector;\",\"↾\":\"&upharpoonright;\",\"⥔\":\"&RightUpVectorBar;\",\"⇀\":\"&rightharpoonup;\",\"⥓\":\"&RightVectorBar;\",\"ℝ\":\"&reals;\",\"⥰\":\"&RoundImplies;\",\"⇛\":\"&rAarr;\",\"ℛ\":\"&realine;\",\"↱\":\"&rsh;\",\"⧴\":\"&RuleDelayed;\",\"Щ\":\"&SHCHcy;\",\"Ш\":\"&SHcy;\",\"Ь\":\"&SOFTcy;\",\"Ś\":\"&Sacute;\",\"⪼\":\"&Sc;\",\"Š\":\"&Scaron;\",\"Ş\":\"&Scedil;\",\"Ŝ\":\"&Scirc;\",\"С\":\"&Scy;\",\"𝔖\":\"&Sfr;\",\"↑\":\"&uparrow;\",\"Σ\":\"&Sigma;\",\"∘\":\"&compfn;\",\"𝕊\":\"&Sopf;\",\"√\":\"&radic;\",\"□\":\"&square;\",\"⊓\":\"&sqcap;\",\"⊏\":\"&sqsubset;\",\"⊑\":\"&sqsubseteq;\",\"⊐\":\"&sqsupset;\",\"⊒\":\"&sqsupseteq;\",\"⊔\":\"&sqcup;\",\"𝒮\":\"&Sscr;\",\"⋆\":\"&sstarf;\",\"⋐\":\"&Subset;\",\"⊆\":\"&subseteq;\",\"≻\":\"&succ;\",\"⪰\":\"&succeq;\",\"≽\":\"&succcurlyeq;\",\"≿\":\"&succsim;\",\"∑\":\"&sum;\",\"⋑\":\"&Supset;\",\"⊃\":\"&supset;\",\"⊇\":\"&supseteq;\",\"Þ\":\"&THORN;\",\"™\":\"&trade;\",\"Ћ\":\"&TSHcy;\",\"Ц\":\"&TScy;\",\"\\t\":\"&Tab;\",\"Τ\":\"&Tau;\",\"Ť\":\"&Tcaron;\",\"Ţ\":\"&Tcedil;\",\"Т\":\"&Tcy;\",\"𝔗\":\"&Tfr;\",\"∴\":\"&therefore;\",\"Θ\":\"&Theta;\",\"  \":\"&ThickSpace;\",\" \":\"&thinsp;\",\"∼\":\"&thksim;\",\"≃\":\"&simeq;\",\"≅\":\"&cong;\",\"≈\":\"&thkap;\",\"𝕋\":\"&Topf;\",\"⃛\":\"&tdot;\",\"𝒯\":\"&Tscr;\",\"Ŧ\":\"&Tstrok;\",\"Ú\":\"&Uacute;\",\"↟\":\"&Uarr;\",\"⥉\":\"&Uarrocir;\",\"Ў\":\"&Ubrcy;\",\"Ŭ\":\"&Ubreve;\",\"Û\":\"&Ucirc;\",\"У\":\"&Ucy;\",\"Ű\":\"&Udblac;\",\"𝔘\":\"&Ufr;\",\"Ù\":\"&Ugrave;\",\"Ū\":\"&Umacr;\",_:\"&lowbar;\",\"⏟\":\"&UnderBrace;\",\"⎵\":\"&bbrk;\",\"⏝\":\"&UnderParenthesis;\",\"⋃\":\"&xcup;\",\"⊎\":\"&uplus;\",\"Ų\":\"&Uogon;\",\"𝕌\":\"&Uopf;\",\"⤒\":\"&UpArrowBar;\",\"⇅\":\"&udarr;\",\"↕\":\"&varr;\",\"⥮\":\"&udhar;\",\"⊥\":\"&perp;\",\"↥\":\"&mapstoup;\",\"↖\":\"&nwarrow;\",\"↗\":\"&nearrow;\",\"ϒ\":\"&upsih;\",\"Υ\":\"&Upsilon;\",\"Ů\":\"&Uring;\",\"𝒰\":\"&Uscr;\",\"Ũ\":\"&Utilde;\",\"Ü\":\"&Uuml;\",\"⊫\":\"&VDash;\",\"⫫\":\"&Vbar;\",\"В\":\"&Vcy;\",\"⊩\":\"&Vdash;\",\"⫦\":\"&Vdashl;\",\"⋁\":\"&xvee;\",\"‖\":\"&Vert;\",\"∣\":\"&smid;\",\"|\":\"&vert;\",\"❘\":\"&VerticalSeparator;\",\"≀\":\"&wreath;\",\" \":\"&hairsp;\",\"𝔙\":\"&Vfr;\",\"𝕍\":\"&Vopf;\",\"𝒱\":\"&Vscr;\",\"⊪\":\"&Vvdash;\",\"Ŵ\":\"&Wcirc;\",\"⋀\":\"&xwedge;\",\"𝔚\":\"&Wfr;\",\"𝕎\":\"&Wopf;\",\"𝒲\":\"&Wscr;\",\"𝔛\":\"&Xfr;\",\"Ξ\":\"&Xi;\",\"𝕏\":\"&Xopf;\",\"𝒳\":\"&Xscr;\",\"Я\":\"&YAcy;\",\"Ї\":\"&YIcy;\",\"Ю\":\"&YUcy;\",\"Ý\":\"&Yacute;\",\"Ŷ\":\"&Ycirc;\",\"Ы\":\"&Ycy;\",\"𝔜\":\"&Yfr;\",\"𝕐\":\"&Yopf;\",\"𝒴\":\"&Yscr;\",\"Ÿ\":\"&Yuml;\",\"Ж\":\"&ZHcy;\",\"Ź\":\"&Zacute;\",\"Ž\":\"&Zcaron;\",\"З\":\"&Zcy;\",\"Ż\":\"&Zdot;\",\"Ζ\":\"&Zeta;\",\"ℨ\":\"&zeetrf;\",\"ℤ\":\"&integers;\",\"𝒵\":\"&Zscr;\",\"á\":\"&aacute;\",\"ă\":\"&abreve;\",\"∾\":\"&mstpos;\",\"∾̳\":\"&acE;\",\"∿\":\"&acd;\",\"â\":\"&acirc;\",\"а\":\"&acy;\",\"æ\":\"&aelig;\",\"𝔞\":\"&afr;\",\"à\":\"&agrave;\",\"ℵ\":\"&aleph;\",\"α\":\"&alpha;\",\"ā\":\"&amacr;\",\"⨿\":\"&amalg;\",\"∧\":\"&wedge;\",\"⩕\":\"&andand;\",\"⩜\":\"&andd;\",\"⩘\":\"&andslope;\",\"⩚\":\"&andv;\",\"∠\":\"&angle;\",\"⦤\":\"&ange;\",\"∡\":\"&measuredangle;\",\"⦨\":\"&angmsdaa;\",\"⦩\":\"&angmsdab;\",\"⦪\":\"&angmsdac;\",\"⦫\":\"&angmsdad;\",\"⦬\":\"&angmsdae;\",\"⦭\":\"&angmsdaf;\",\"⦮\":\"&angmsdag;\",\"⦯\":\"&angmsdah;\",\"∟\":\"&angrt;\",\"⊾\":\"&angrtvb;\",\"⦝\":\"&angrtvbd;\",\"∢\":\"&angsph;\",\"⍼\":\"&angzarr;\",\"ą\":\"&aogon;\",\"𝕒\":\"&aopf;\",\"⩰\":\"&apE;\",\"⩯\":\"&apacir;\",\"≊\":\"&approxeq;\",\"≋\":\"&apid;\",\"'\":\"&apos;\",\"å\":\"&aring;\",\"𝒶\":\"&ascr;\",\"*\":\"&midast;\",\"ã\":\"&atilde;\",\"ä\":\"&auml;\",\"⨑\":\"&awint;\",\"⫭\":\"&bNot;\",\"≌\":\"&bcong;\",\"϶\":\"&bepsi;\",\"‵\":\"&bprime;\",\"∽\":\"&bsim;\",\"⋍\":\"&bsime;\",\"⊽\":\"&barvee;\",\"⌅\":\"&barwedge;\",\"⎶\":\"&bbrktbrk;\",\"б\":\"&bcy;\",\"„\":\"&ldquor;\",\"⦰\":\"&bemptyv;\",\"β\":\"&beta;\",\"ℶ\":\"&beth;\",\"≬\":\"&twixt;\",\"𝔟\":\"&bfr;\",\"◯\":\"&xcirc;\",\"⨀\":\"&xodot;\",\"⨁\":\"&xoplus;\",\"⨂\":\"&xotime;\",\"⨆\":\"&xsqcup;\",\"★\":\"&starf;\",\"▽\":\"&xdtri;\",\"△\":\"&xutri;\",\"⨄\":\"&xuplus;\",\"⤍\":\"&rbarr;\",\"⧫\":\"&lozf;\",\"▴\":\"&utrif;\",\"▾\":\"&dtrif;\",\"◂\":\"&ltrif;\",\"▸\":\"&rtrif;\",\"␣\":\"&blank;\",\"▒\":\"&blk12;\",\"░\":\"&blk14;\",\"▓\":\"&blk34;\",\"█\":\"&block;\",\"=⃥\":\"&bne;\",\"≡⃥\":\"&bnequiv;\",\"⌐\":\"&bnot;\",\"𝕓\":\"&bopf;\",\"⋈\":\"&bowtie;\",\"╗\":\"&boxDL;\",\"╔\":\"&boxDR;\",\"╖\":\"&boxDl;\",\"╓\":\"&boxDr;\",\"═\":\"&boxH;\",\"╦\":\"&boxHD;\",\"╩\":\"&boxHU;\",\"╤\":\"&boxHd;\",\"╧\":\"&boxHu;\",\"╝\":\"&boxUL;\",\"╚\":\"&boxUR;\",\"╜\":\"&boxUl;\",\"╙\":\"&boxUr;\",\"║\":\"&boxV;\",\"╬\":\"&boxVH;\",\"╣\":\"&boxVL;\",\"╠\":\"&boxVR;\",\"╫\":\"&boxVh;\",\"╢\":\"&boxVl;\",\"╟\":\"&boxVr;\",\"⧉\":\"&boxbox;\",\"╕\":\"&boxdL;\",\"╒\":\"&boxdR;\",\"┐\":\"&boxdl;\",\"┌\":\"&boxdr;\",\"╥\":\"&boxhD;\",\"╨\":\"&boxhU;\",\"┬\":\"&boxhd;\",\"┴\":\"&boxhu;\",\"⊟\":\"&minusb;\",\"⊞\":\"&plusb;\",\"⊠\":\"&timesb;\",\"╛\":\"&boxuL;\",\"╘\":\"&boxuR;\",\"┘\":\"&boxul;\",\"└\":\"&boxur;\",\"│\":\"&boxv;\",\"╪\":\"&boxvH;\",\"╡\":\"&boxvL;\",\"╞\":\"&boxvR;\",\"┼\":\"&boxvh;\",\"┤\":\"&boxvl;\",\"├\":\"&boxvr;\",\"¦\":\"&brvbar;\",\"𝒷\":\"&bscr;\",\"⁏\":\"&bsemi;\",\"\\\\\":\"&bsol;\",\"⧅\":\"&bsolb;\",\"⟈\":\"&bsolhsub;\",\"•\":\"&bullet;\",\"⪮\":\"&bumpE;\",\"ć\":\"&cacute;\",\"∩\":\"&cap;\",\"⩄\":\"&capand;\",\"⩉\":\"&capbrcup;\",\"⩋\":\"&capcap;\",\"⩇\":\"&capcup;\",\"⩀\":\"&capdot;\",\"∩︀\":\"&caps;\",\"⁁\":\"&caret;\",\"⩍\":\"&ccaps;\",\"č\":\"&ccaron;\",\"ç\":\"&ccedil;\",\"ĉ\":\"&ccirc;\",\"⩌\":\"&ccups;\",\"⩐\":\"&ccupssm;\",\"ċ\":\"&cdot;\",\"⦲\":\"&cemptyv;\",\"¢\":\"&cent;\",\"𝔠\":\"&cfr;\",\"ч\":\"&chcy;\",\"✓\":\"&checkmark;\",\"χ\":\"&chi;\",\"○\":\"&cir;\",\"⧃\":\"&cirE;\",\"ˆ\":\"&circ;\",\"≗\":\"&cire;\",\"↺\":\"&olarr;\",\"↻\":\"&orarr;\",\"Ⓢ\":\"&oS;\",\"⊛\":\"&oast;\",\"⊚\":\"&ocir;\",\"⊝\":\"&odash;\",\"⨐\":\"&cirfnint;\",\"⫯\":\"&cirmid;\",\"⧂\":\"&cirscir;\",\"♣\":\"&clubsuit;\",\":\":\"&colon;\",\",\":\"&comma;\",\"@\":\"&commat;\",\"∁\":\"&complement;\",\"⩭\":\"&congdot;\",\"𝕔\":\"&copf;\",\"℗\":\"&copysr;\",\"↵\":\"&crarr;\",\"✗\":\"&cross;\",\"𝒸\":\"&cscr;\",\"⫏\":\"&csub;\",\"⫑\":\"&csube;\",\"⫐\":\"&csup;\",\"⫒\":\"&csupe;\",\"⋯\":\"&ctdot;\",\"⤸\":\"&cudarrl;\",\"⤵\":\"&cudarrr;\",\"⋞\":\"&curlyeqprec;\",\"⋟\":\"&curlyeqsucc;\",\"↶\":\"&curvearrowleft;\",\"⤽\":\"&cularrp;\",\"∪\":\"&cup;\",\"⩈\":\"&cupbrcap;\",\"⩆\":\"&cupcap;\",\"⩊\":\"&cupcup;\",\"⊍\":\"&cupdot;\",\"⩅\":\"&cupor;\",\"∪︀\":\"&cups;\",\"↷\":\"&curvearrowright;\",\"⤼\":\"&curarrm;\",\"⋎\":\"&cuvee;\",\"⋏\":\"&cuwed;\",\"¤\":\"&curren;\",\"∱\":\"&cwint;\",\"⌭\":\"&cylcty;\",\"⥥\":\"&dHar;\",\"†\":\"&dagger;\",\"ℸ\":\"&daleth;\",\"‐\":\"&hyphen;\",\"⤏\":\"&rBarr;\",\"ď\":\"&dcaron;\",\"д\":\"&dcy;\",\"⇊\":\"&downdownarrows;\",\"⩷\":\"&eDDot;\",\"°\":\"&deg;\",\"δ\":\"&delta;\",\"⦱\":\"&demptyv;\",\"⥿\":\"&dfisht;\",\"𝔡\":\"&dfr;\",\"♦\":\"&diams;\",\"ϝ\":\"&gammad;\",\"⋲\":\"&disin;\",\"÷\":\"&divide;\",\"⋇\":\"&divonx;\",\"ђ\":\"&djcy;\",\"⌞\":\"&llcorner;\",\"⌍\":\"&dlcrop;\",$:\"&dollar;\",\"𝕕\":\"&dopf;\",\"≑\":\"&eDot;\",\"∸\":\"&minusd;\",\"∔\":\"&plusdo;\",\"⊡\":\"&sdotb;\",\"⌟\":\"&lrcorner;\",\"⌌\":\"&drcrop;\",\"𝒹\":\"&dscr;\",\"ѕ\":\"&dscy;\",\"⧶\":\"&dsol;\",\"đ\":\"&dstrok;\",\"⋱\":\"&dtdot;\",\"▿\":\"&triangledown;\",\"⦦\":\"&dwangle;\",\"џ\":\"&dzcy;\",\"⟿\":\"&dzigrarr;\",\"é\":\"&eacute;\",\"⩮\":\"&easter;\",\"ě\":\"&ecaron;\",\"≖\":\"&eqcirc;\",\"ê\":\"&ecirc;\",\"≕\":\"&eqcolon;\",\"э\":\"&ecy;\",\"ė\":\"&edot;\",\"≒\":\"&fallingdotseq;\",\"𝔢\":\"&efr;\",\"⪚\":\"&eg;\",\"è\":\"&egrave;\",\"⪖\":\"&eqslantgtr;\",\"⪘\":\"&egsdot;\",\"⪙\":\"&el;\",\"⏧\":\"&elinters;\",\"ℓ\":\"&ell;\",\"⪕\":\"&eqslantless;\",\"⪗\":\"&elsdot;\",\"ē\":\"&emacr;\",\"∅\":\"&varnothing;\",\" \":\"&emsp13;\",\" \":\"&emsp14;\",\" \":\"&emsp;\",\"ŋ\":\"&eng;\",\" \":\"&ensp;\",\"ę\":\"&eogon;\",\"𝕖\":\"&eopf;\",\"⋕\":\"&epar;\",\"⧣\":\"&eparsl;\",\"⩱\":\"&eplus;\",\"ε\":\"&epsilon;\",\"ϵ\":\"&varepsilon;\",\"=\":\"&equals;\",\"≟\":\"&questeq;\",\"⩸\":\"&equivDD;\",\"⧥\":\"&eqvparsl;\",\"≓\":\"&risingdotseq;\",\"⥱\":\"&erarr;\",\"ℯ\":\"&escr;\",\"η\":\"&eta;\",\"ð\":\"&eth;\",\"ë\":\"&euml;\",\"€\":\"&euro;\",\"!\":\"&excl;\",\"ф\":\"&fcy;\",\"♀\":\"&female;\",\"ffi\":\"&ffilig;\",\"ff\":\"&fflig;\",\"ffl\":\"&ffllig;\",\"𝔣\":\"&ffr;\",\"fi\":\"&filig;\",fj:\"&fjlig;\",\"♭\":\"&flat;\",\"fl\":\"&fllig;\",\"▱\":\"&fltns;\",\"ƒ\":\"&fnof;\",\"𝕗\":\"&fopf;\",\"⋔\":\"&pitchfork;\",\"⫙\":\"&forkv;\",\"⨍\":\"&fpartint;\",\"½\":\"&half;\",\"⅓\":\"&frac13;\",\"¼\":\"&frac14;\",\"⅕\":\"&frac15;\",\"⅙\":\"&frac16;\",\"⅛\":\"&frac18;\",\"⅔\":\"&frac23;\",\"⅖\":\"&frac25;\",\"¾\":\"&frac34;\",\"⅗\":\"&frac35;\",\"⅜\":\"&frac38;\",\"⅘\":\"&frac45;\",\"⅚\":\"&frac56;\",\"⅝\":\"&frac58;\",\"⅞\":\"&frac78;\",\"⁄\":\"&frasl;\",\"⌢\":\"&sfrown;\",\"𝒻\":\"&fscr;\",\"⪌\":\"&gtreqqless;\",\"ǵ\":\"&gacute;\",\"γ\":\"&gamma;\",\"⪆\":\"&gtrapprox;\",\"ğ\":\"&gbreve;\",\"ĝ\":\"&gcirc;\",\"г\":\"&gcy;\",\"ġ\":\"&gdot;\",\"⪩\":\"&gescc;\",\"⪀\":\"&gesdot;\",\"⪂\":\"&gesdoto;\",\"⪄\":\"&gesdotol;\",\"⋛︀\":\"&gesl;\",\"⪔\":\"&gesles;\",\"𝔤\":\"&gfr;\",\"ℷ\":\"&gimel;\",\"ѓ\":\"&gjcy;\",\"⪒\":\"&glE;\",\"⪥\":\"&gla;\",\"⪤\":\"&glj;\",\"≩\":\"&gneqq;\",\"⪊\":\"&gnapprox;\",\"⪈\":\"&gneq;\",\"⋧\":\"&gnsim;\",\"𝕘\":\"&gopf;\",\"ℊ\":\"&gscr;\",\"⪎\":\"&gsime;\",\"⪐\":\"&gsiml;\",\"⪧\":\"&gtcc;\",\"⩺\":\"&gtcir;\",\"⋗\":\"&gtrdot;\",\"⦕\":\"&gtlPar;\",\"⩼\":\"&gtquest;\",\"⥸\":\"&gtrarr;\",\"≩︀\":\"&gvnE;\",\"ъ\":\"&hardcy;\",\"⥈\":\"&harrcir;\",\"↭\":\"&leftrightsquigarrow;\",\"ℏ\":\"&plankv;\",\"ĥ\":\"&hcirc;\",\"♥\":\"&heartsuit;\",\"…\":\"&mldr;\",\"⊹\":\"&hercon;\",\"𝔥\":\"&hfr;\",\"⤥\":\"&searhk;\",\"⤦\":\"&swarhk;\",\"⇿\":\"&hoarr;\",\"∻\":\"&homtht;\",\"↩\":\"&larrhk;\",\"↪\":\"&rarrhk;\",\"𝕙\":\"&hopf;\",\"―\":\"&horbar;\",\"𝒽\":\"&hscr;\",\"ħ\":\"&hstrok;\",\"⁃\":\"&hybull;\",\"í\":\"&iacute;\",\"î\":\"&icirc;\",\"и\":\"&icy;\",\"е\":\"&iecy;\",\"¡\":\"&iexcl;\",\"𝔦\":\"&ifr;\",\"ì\":\"&igrave;\",\"⨌\":\"&qint;\",\"∭\":\"&tint;\",\"⧜\":\"&iinfin;\",\"℩\":\"&iiota;\",\"ij\":\"&ijlig;\",\"ī\":\"&imacr;\",\"ı\":\"&inodot;\",\"⊷\":\"&imof;\",\"Ƶ\":\"&imped;\",\"℅\":\"&incare;\",\"∞\":\"&infin;\",\"⧝\":\"&infintie;\",\"⊺\":\"&intercal;\",\"⨗\":\"&intlarhk;\",\"⨼\":\"&iprod;\",\"ё\":\"&iocy;\",\"į\":\"&iogon;\",\"𝕚\":\"&iopf;\",\"ι\":\"&iota;\",\"¿\":\"&iquest;\",\"𝒾\":\"&iscr;\",\"⋹\":\"&isinE;\",\"⋵\":\"&isindot;\",\"⋴\":\"&isins;\",\"⋳\":\"&isinsv;\",\"ĩ\":\"&itilde;\",\"і\":\"&iukcy;\",\"ï\":\"&iuml;\",\"ĵ\":\"&jcirc;\",\"й\":\"&jcy;\",\"𝔧\":\"&jfr;\",\"ȷ\":\"&jmath;\",\"𝕛\":\"&jopf;\",\"𝒿\":\"&jscr;\",\"ј\":\"&jsercy;\",\"є\":\"&jukcy;\",\"κ\":\"&kappa;\",\"ϰ\":\"&varkappa;\",\"ķ\":\"&kcedil;\",\"к\":\"&kcy;\",\"𝔨\":\"&kfr;\",\"ĸ\":\"&kgreen;\",\"х\":\"&khcy;\",\"ќ\":\"&kjcy;\",\"𝕜\":\"&kopf;\",\"𝓀\":\"&kscr;\",\"⤛\":\"&lAtail;\",\"⤎\":\"&lBarr;\",\"⪋\":\"&lesseqqgtr;\",\"⥢\":\"&lHar;\",\"ĺ\":\"&lacute;\",\"⦴\":\"&laemptyv;\",\"λ\":\"&lambda;\",\"⦑\":\"&langd;\",\"⪅\":\"&lessapprox;\",\"«\":\"&laquo;\",\"⤟\":\"&larrbfs;\",\"⤝\":\"&larrfs;\",\"↫\":\"&looparrowleft;\",\"⤹\":\"&larrpl;\",\"⥳\":\"&larrsim;\",\"↢\":\"&leftarrowtail;\",\"⪫\":\"&lat;\",\"⤙\":\"&latail;\",\"⪭\":\"&late;\",\"⪭︀\":\"&lates;\",\"⤌\":\"&lbarr;\",\"❲\":\"&lbbrk;\",\"{\":\"&lcub;\",\"[\":\"&lsqb;\",\"⦋\":\"&lbrke;\",\"⦏\":\"&lbrksld;\",\"⦍\":\"&lbrkslu;\",\"ľ\":\"&lcaron;\",\"ļ\":\"&lcedil;\",\"л\":\"&lcy;\",\"⤶\":\"&ldca;\",\"⥧\":\"&ldrdhar;\",\"⥋\":\"&ldrushar;\",\"↲\":\"&ldsh;\",\"≤\":\"&leq;\",\"⇇\":\"&llarr;\",\"⋋\":\"&lthree;\",\"⪨\":\"&lescc;\",\"⩿\":\"&lesdot;\",\"⪁\":\"&lesdoto;\",\"⪃\":\"&lesdotor;\",\"⋚︀\":\"&lesg;\",\"⪓\":\"&lesges;\",\"⋖\":\"&ltdot;\",\"⥼\":\"&lfisht;\",\"𝔩\":\"&lfr;\",\"⪑\":\"&lgE;\",\"⥪\":\"&lharul;\",\"▄\":\"&lhblk;\",\"љ\":\"&ljcy;\",\"⥫\":\"&llhard;\",\"◺\":\"&lltri;\",\"ŀ\":\"&lmidot;\",\"⎰\":\"&lmoustache;\",\"≨\":\"&lneqq;\",\"⪉\":\"&lnapprox;\",\"⪇\":\"&lneq;\",\"⋦\":\"&lnsim;\",\"⟬\":\"&loang;\",\"⇽\":\"&loarr;\",\"⟼\":\"&xmap;\",\"↬\":\"&rarrlp;\",\"⦅\":\"&lopar;\",\"𝕝\":\"&lopf;\",\"⨭\":\"&loplus;\",\"⨴\":\"&lotimes;\",\"∗\":\"&lowast;\",\"◊\":\"&lozenge;\",\"(\":\"&lpar;\",\"⦓\":\"&lparlt;\",\"⥭\":\"&lrhard;\",\"‎\":\"&lrm;\",\"⊿\":\"&lrtri;\",\"‹\":\"&lsaquo;\",\"𝓁\":\"&lscr;\",\"⪍\":\"&lsime;\",\"⪏\":\"&lsimg;\",\"‚\":\"&sbquo;\",\"ł\":\"&lstrok;\",\"⪦\":\"&ltcc;\",\"⩹\":\"&ltcir;\",\"⋉\":\"&ltimes;\",\"⥶\":\"&ltlarr;\",\"⩻\":\"&ltquest;\",\"⦖\":\"&ltrPar;\",\"◃\":\"&triangleleft;\",\"⥊\":\"&lurdshar;\",\"⥦\":\"&luruhar;\",\"≨︀\":\"&lvnE;\",\"∺\":\"&mDDot;\",\"¯\":\"&strns;\",\"♂\":\"&male;\",\"✠\":\"&maltese;\",\"▮\":\"&marker;\",\"⨩\":\"&mcomma;\",\"м\":\"&mcy;\",\"—\":\"&mdash;\",\"𝔪\":\"&mfr;\",\"℧\":\"&mho;\",\"µ\":\"&micro;\",\"⫰\":\"&midcir;\",\"−\":\"&minus;\",\"⨪\":\"&minusdu;\",\"⫛\":\"&mlcp;\",\"⊧\":\"&models;\",\"𝕞\":\"&mopf;\",\"𝓂\":\"&mscr;\",\"μ\":\"&mu;\",\"⊸\":\"&mumap;\",\"⋙̸\":\"&nGg;\",\"≫⃒\":\"&nGt;\",\"⇍\":\"&nlArr;\",\"⇎\":\"&nhArr;\",\"⋘̸\":\"&nLl;\",\"≪⃒\":\"&nLt;\",\"⇏\":\"&nrArr;\",\"⊯\":\"&nVDash;\",\"⊮\":\"&nVdash;\",\"ń\":\"&nacute;\",\"∠⃒\":\"&nang;\",\"⩰̸\":\"&napE;\",\"≋̸\":\"&napid;\",\"ʼn\":\"&napos;\",\"♮\":\"&natural;\",\"⩃\":\"&ncap;\",\"ň\":\"&ncaron;\",\"ņ\":\"&ncedil;\",\"⩭̸\":\"&ncongdot;\",\"⩂\":\"&ncup;\",\"н\":\"&ncy;\",\"–\":\"&ndash;\",\"⇗\":\"&neArr;\",\"⤤\":\"&nearhk;\",\"≐̸\":\"&nedot;\",\"⤨\":\"&toea;\",\"𝔫\":\"&nfr;\",\"↮\":\"&nleftrightarrow;\",\"⫲\":\"&nhpar;\",\"⋼\":\"&nis;\",\"⋺\":\"&nisd;\",\"њ\":\"&njcy;\",\"≦̸\":\"&nleqq;\",\"↚\":\"&nleftarrow;\",\"‥\":\"&nldr;\",\"𝕟\":\"&nopf;\",\"¬\":\"&not;\",\"⋹̸\":\"&notinE;\",\"⋵̸\":\"&notindot;\",\"⋷\":\"&notinvb;\",\"⋶\":\"&notinvc;\",\"⋾\":\"&notnivb;\",\"⋽\":\"&notnivc;\",\"⫽⃥\":\"&nparsl;\",\"∂̸\":\"&npart;\",\"⨔\":\"&npolint;\",\"↛\":\"&nrightarrow;\",\"⤳̸\":\"&nrarrc;\",\"↝̸\":\"&nrarrw;\",\"𝓃\":\"&nscr;\",\"⊄\":\"&nsub;\",\"⫅̸\":\"&nsubseteqq;\",\"⊅\":\"&nsup;\",\"⫆̸\":\"&nsupseteqq;\",\"ñ\":\"&ntilde;\",\"ν\":\"&nu;\",\"#\":\"&num;\",\"№\":\"&numero;\",\" \":\"&numsp;\",\"⊭\":\"&nvDash;\",\"⤄\":\"&nvHarr;\",\"≍⃒\":\"&nvap;\",\"⊬\":\"&nvdash;\",\"≥⃒\":\"&nvge;\",\">⃒\":\"&nvgt;\",\"⧞\":\"&nvinfin;\",\"⤂\":\"&nvlArr;\",\"≤⃒\":\"&nvle;\",\"<⃒\":\"&nvlt;\",\"⊴⃒\":\"&nvltrie;\",\"⤃\":\"&nvrArr;\",\"⊵⃒\":\"&nvrtrie;\",\"∼⃒\":\"&nvsim;\",\"⇖\":\"&nwArr;\",\"⤣\":\"&nwarhk;\",\"⤧\":\"&nwnear;\",\"ó\":\"&oacute;\",\"ô\":\"&ocirc;\",\"о\":\"&ocy;\",\"ő\":\"&odblac;\",\"⨸\":\"&odiv;\",\"⦼\":\"&odsold;\",\"œ\":\"&oelig;\",\"⦿\":\"&ofcir;\",\"𝔬\":\"&ofr;\",\"˛\":\"&ogon;\",\"ò\":\"&ograve;\",\"⧁\":\"&ogt;\",\"⦵\":\"&ohbar;\",\"⦾\":\"&olcir;\",\"⦻\":\"&olcross;\",\"⧀\":\"&olt;\",\"ō\":\"&omacr;\",\"ω\":\"&omega;\",\"ο\":\"&omicron;\",\"⦶\":\"&omid;\",\"𝕠\":\"&oopf;\",\"⦷\":\"&opar;\",\"⦹\":\"&operp;\",\"∨\":\"&vee;\",\"⩝\":\"&ord;\",\"ℴ\":\"&oscr;\",\"ª\":\"&ordf;\",\"º\":\"&ordm;\",\"⊶\":\"&origof;\",\"⩖\":\"&oror;\",\"⩗\":\"&orslope;\",\"⩛\":\"&orv;\",\"ø\":\"&oslash;\",\"⊘\":\"&osol;\",\"õ\":\"&otilde;\",\"⨶\":\"&otimesas;\",\"ö\":\"&ouml;\",\"⌽\":\"&ovbar;\",\"¶\":\"&para;\",\"⫳\":\"&parsim;\",\"⫽\":\"&parsl;\",\"п\":\"&pcy;\",\"%\":\"&percnt;\",\".\":\"&period;\",\"‰\":\"&permil;\",\"‱\":\"&pertenk;\",\"𝔭\":\"&pfr;\",\"φ\":\"&phi;\",\"ϕ\":\"&varphi;\",\"☎\":\"&phone;\",\"π\":\"&pi;\",\"ϖ\":\"&varpi;\",\"ℎ\":\"&planckh;\",\"+\":\"&plus;\",\"⨣\":\"&plusacir;\",\"⨢\":\"&pluscir;\",\"⨥\":\"&plusdu;\",\"⩲\":\"&pluse;\",\"⨦\":\"&plussim;\",\"⨧\":\"&plustwo;\",\"⨕\":\"&pointint;\",\"𝕡\":\"&popf;\",\"£\":\"&pound;\",\"⪳\":\"&prE;\",\"⪷\":\"&precapprox;\",\"⪹\":\"&prnap;\",\"⪵\":\"&prnE;\",\"⋨\":\"&prnsim;\",\"′\":\"&prime;\",\"⌮\":\"&profalar;\",\"⌒\":\"&profline;\",\"⌓\":\"&profsurf;\",\"⊰\":\"&prurel;\",\"𝓅\":\"&pscr;\",\"ψ\":\"&psi;\",\" \":\"&puncsp;\",\"𝔮\":\"&qfr;\",\"𝕢\":\"&qopf;\",\"⁗\":\"&qprime;\",\"𝓆\":\"&qscr;\",\"⨖\":\"&quatint;\",\"?\":\"&quest;\",\"⤜\":\"&rAtail;\",\"⥤\":\"&rHar;\",\"∽̱\":\"&race;\",\"ŕ\":\"&racute;\",\"⦳\":\"&raemptyv;\",\"⦒\":\"&rangd;\",\"⦥\":\"&range;\",\"»\":\"&raquo;\",\"⥵\":\"&rarrap;\",\"⤠\":\"&rarrbfs;\",\"⤳\":\"&rarrc;\",\"⤞\":\"&rarrfs;\",\"⥅\":\"&rarrpl;\",\"⥴\":\"&rarrsim;\",\"↣\":\"&rightarrowtail;\",\"↝\":\"&rightsquigarrow;\",\"⤚\":\"&ratail;\",\"∶\":\"&ratio;\",\"❳\":\"&rbbrk;\",\"}\":\"&rcub;\",\"]\":\"&rsqb;\",\"⦌\":\"&rbrke;\",\"⦎\":\"&rbrksld;\",\"⦐\":\"&rbrkslu;\",\"ř\":\"&rcaron;\",\"ŗ\":\"&rcedil;\",\"р\":\"&rcy;\",\"⤷\":\"&rdca;\",\"⥩\":\"&rdldhar;\",\"↳\":\"&rdsh;\",\"▭\":\"&rect;\",\"⥽\":\"&rfisht;\",\"𝔯\":\"&rfr;\",\"⥬\":\"&rharul;\",\"ρ\":\"&rho;\",\"ϱ\":\"&varrho;\",\"⇉\":\"&rrarr;\",\"⋌\":\"&rthree;\",\"˚\":\"&ring;\",\"‏\":\"&rlm;\",\"⎱\":\"&rmoustache;\",\"⫮\":\"&rnmid;\",\"⟭\":\"&roang;\",\"⇾\":\"&roarr;\",\"⦆\":\"&ropar;\",\"𝕣\":\"&ropf;\",\"⨮\":\"&roplus;\",\"⨵\":\"&rotimes;\",\")\":\"&rpar;\",\"⦔\":\"&rpargt;\",\"⨒\":\"&rppolint;\",\"›\":\"&rsaquo;\",\"𝓇\":\"&rscr;\",\"⋊\":\"&rtimes;\",\"▹\":\"&triangleright;\",\"⧎\":\"&rtriltri;\",\"⥨\":\"&ruluhar;\",\"℞\":\"&rx;\",\"ś\":\"&sacute;\",\"⪴\":\"&scE;\",\"⪸\":\"&succapprox;\",\"š\":\"&scaron;\",\"ş\":\"&scedil;\",\"ŝ\":\"&scirc;\",\"⪶\":\"&succneqq;\",\"⪺\":\"&succnapprox;\",\"⋩\":\"&succnsim;\",\"⨓\":\"&scpolint;\",\"с\":\"&scy;\",\"⋅\":\"&sdot;\",\"⩦\":\"&sdote;\",\"⇘\":\"&seArr;\",\"§\":\"&sect;\",\";\":\"&semi;\",\"⤩\":\"&tosa;\",\"✶\":\"&sext;\",\"𝔰\":\"&sfr;\",\"♯\":\"&sharp;\",\"щ\":\"&shchcy;\",\"ш\":\"&shcy;\",\"­\":\"&shy;\",\"σ\":\"&sigma;\",\"ς\":\"&varsigma;\",\"⩪\":\"&simdot;\",\"⪞\":\"&simg;\",\"⪠\":\"&simgE;\",\"⪝\":\"&siml;\",\"⪟\":\"&simlE;\",\"≆\":\"&simne;\",\"⨤\":\"&simplus;\",\"⥲\":\"&simrarr;\",\"⨳\":\"&smashp;\",\"⧤\":\"&smeparsl;\",\"⌣\":\"&ssmile;\",\"⪪\":\"&smt;\",\"⪬\":\"&smte;\",\"⪬︀\":\"&smtes;\",\"ь\":\"&softcy;\",\"/\":\"&sol;\",\"⧄\":\"&solb;\",\"⌿\":\"&solbar;\",\"𝕤\":\"&sopf;\",\"♠\":\"&spadesuit;\",\"⊓︀\":\"&sqcaps;\",\"⊔︀\":\"&sqcups;\",\"𝓈\":\"&sscr;\",\"☆\":\"&star;\",\"⊂\":\"&subset;\",\"⫅\":\"&subseteqq;\",\"⪽\":\"&subdot;\",\"⫃\":\"&subedot;\",\"⫁\":\"&submult;\",\"⫋\":\"&subsetneqq;\",\"⊊\":\"&subsetneq;\",\"⪿\":\"&subplus;\",\"⥹\":\"&subrarr;\",\"⫇\":\"&subsim;\",\"⫕\":\"&subsub;\",\"⫓\":\"&subsup;\",\"♪\":\"&sung;\",\"¹\":\"&sup1;\",\"²\":\"&sup2;\",\"³\":\"&sup3;\",\"⫆\":\"&supseteqq;\",\"⪾\":\"&supdot;\",\"⫘\":\"&supdsub;\",\"⫄\":\"&supedot;\",\"⟉\":\"&suphsol;\",\"⫗\":\"&suphsub;\",\"⥻\":\"&suplarr;\",\"⫂\":\"&supmult;\",\"⫌\":\"&supsetneqq;\",\"⊋\":\"&supsetneq;\",\"⫀\":\"&supplus;\",\"⫈\":\"&supsim;\",\"⫔\":\"&supsub;\",\"⫖\":\"&supsup;\",\"⇙\":\"&swArr;\",\"⤪\":\"&swnwar;\",\"ß\":\"&szlig;\",\"⌖\":\"&target;\",\"τ\":\"&tau;\",\"ť\":\"&tcaron;\",\"ţ\":\"&tcedil;\",\"т\":\"&tcy;\",\"⌕\":\"&telrec;\",\"𝔱\":\"&tfr;\",\"θ\":\"&theta;\",\"ϑ\":\"&vartheta;\",\"þ\":\"&thorn;\",\"×\":\"&times;\",\"⨱\":\"&timesbar;\",\"⨰\":\"&timesd;\",\"⌶\":\"&topbot;\",\"⫱\":\"&topcir;\",\"𝕥\":\"&topf;\",\"⫚\":\"&topfork;\",\"‴\":\"&tprime;\",\"▵\":\"&utri;\",\"≜\":\"&trie;\",\"◬\":\"&tridot;\",\"⨺\":\"&triminus;\",\"⨹\":\"&triplus;\",\"⧍\":\"&trisb;\",\"⨻\":\"&tritime;\",\"⏢\":\"&trpezium;\",\"𝓉\":\"&tscr;\",\"ц\":\"&tscy;\",\"ћ\":\"&tshcy;\",\"ŧ\":\"&tstrok;\",\"⥣\":\"&uHar;\",\"ú\":\"&uacute;\",\"ў\":\"&ubrcy;\",\"ŭ\":\"&ubreve;\",\"û\":\"&ucirc;\",\"у\":\"&ucy;\",\"ű\":\"&udblac;\",\"⥾\":\"&ufisht;\",\"𝔲\":\"&ufr;\",\"ù\":\"&ugrave;\",\"▀\":\"&uhblk;\",\"⌜\":\"&ulcorner;\",\"⌏\":\"&ulcrop;\",\"◸\":\"&ultri;\",\"ū\":\"&umacr;\",\"ų\":\"&uogon;\",\"𝕦\":\"&uopf;\",\"υ\":\"&upsilon;\",\"⇈\":\"&uuarr;\",\"⌝\":\"&urcorner;\",\"⌎\":\"&urcrop;\",\"ů\":\"&uring;\",\"◹\":\"&urtri;\",\"𝓊\":\"&uscr;\",\"⋰\":\"&utdot;\",\"ũ\":\"&utilde;\",\"ü\":\"&uuml;\",\"⦧\":\"&uwangle;\",\"⫨\":\"&vBar;\",\"⫩\":\"&vBarv;\",\"⦜\":\"&vangrt;\",\"⊊︀\":\"&vsubne;\",\"⫋︀\":\"&vsubnE;\",\"⊋︀\":\"&vsupne;\",\"⫌︀\":\"&vsupnE;\",\"в\":\"&vcy;\",\"⊻\":\"&veebar;\",\"≚\":\"&veeeq;\",\"⋮\":\"&vellip;\",\"𝔳\":\"&vfr;\",\"𝕧\":\"&vopf;\",\"𝓋\":\"&vscr;\",\"⦚\":\"&vzigzag;\",\"ŵ\":\"&wcirc;\",\"⩟\":\"&wedbar;\",\"≙\":\"&wedgeq;\",\"℘\":\"&wp;\",\"𝔴\":\"&wfr;\",\"𝕨\":\"&wopf;\",\"𝓌\":\"&wscr;\",\"𝔵\":\"&xfr;\",\"ξ\":\"&xi;\",\"⋻\":\"&xnis;\",\"𝕩\":\"&xopf;\",\"𝓍\":\"&xscr;\",\"ý\":\"&yacute;\",\"я\":\"&yacy;\",\"ŷ\":\"&ycirc;\",\"ы\":\"&ycy;\",\"¥\":\"&yen;\",\"𝔶\":\"&yfr;\",\"ї\":\"&yicy;\",\"𝕪\":\"&yopf;\",\"𝓎\":\"&yscr;\",\"ю\":\"&yucy;\",\"ÿ\":\"&yuml;\",\"ź\":\"&zacute;\",\"ž\":\"&zcaron;\",\"з\":\"&zcy;\",\"ż\":\"&zdot;\",\"ζ\":\"&zeta;\",\"𝔷\":\"&zfr;\",\"ж\":\"&zhcy;\",\"⇝\":\"&zigrarr;\",\"𝕫\":\"&zopf;\",\"𝓏\":\"&zscr;\",\"‍\":\"&zwj;\",\"‌\":\"&zwnj;\"}}};","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.numericUnicodeMap={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.fromCodePoint=String.fromCodePoint||function(astralCodePoint){return String.fromCharCode(Math.floor((astralCodePoint-65536)/1024)+55296,(astralCodePoint-65536)%1024+56320)};exports.getCodePoint=String.prototype.codePointAt?function(input,position){return input.codePointAt(position)}:function(input,position){return(input.charCodeAt(position)-55296)*1024+input.charCodeAt(position+1)-56320+65536};exports.highSurrogateFrom=55296;exports.highSurrogateTo=56319;","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(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))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar named_references_1 = require(\"./named-references\");\nvar numeric_unicode_map_1 = require(\"./numeric-unicode-map\");\nvar surrogate_pairs_1 = require(\"./surrogate-pairs\");\nvar allNamedReferences = __assign(__assign({}, named_references_1.namedReferences), { all: named_references_1.namedReferences.html5 });\nvar encodeRegExps = {\n specialChars: /[<>'\"&]/g,\n nonAscii: /(?:[<>'\"&\\u0080-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g,\n nonAsciiPrintable: /(?:[<>'\"&\\x01-\\x08\\x11-\\x15\\x17-\\x1F\\x7f-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g,\n extensive: /(?:[\\x01-\\x0c\\x0e-\\x1f\\x21-\\x2c\\x2e-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7d\\x7f-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g\n};\nvar defaultEncodeOptions = {\n mode: 'specialChars',\n level: 'all',\n numeric: 'decimal'\n};\n/** Encodes all the necessary (specified by `level`) characters in the text */\nfunction encode(text, _a) {\n var _b = _a === void 0 ? defaultEncodeOptions : _a, _c = _b.mode, mode = _c === void 0 ? 'specialChars' : _c, _d = _b.numeric, numeric = _d === void 0 ? 'decimal' : _d, _e = _b.level, level = _e === void 0 ? 'all' : _e;\n if (!text) {\n return '';\n }\n var encodeRegExp = encodeRegExps[mode];\n var references = allNamedReferences[level].characters;\n var isHex = numeric === 'hexadecimal';\n encodeRegExp.lastIndex = 0;\n var _b = encodeRegExp.exec(text);\n var _c;\n if (_b) {\n _c = '';\n var _d = 0;\n do {\n if (_d !== _b.index) {\n _c += text.substring(_d, _b.index);\n }\n var _e = _b[0];\n var result_1 = references[_e];\n if (!result_1) {\n var code_1 = _e.length > 1 ? surrogate_pairs_1.getCodePoint(_e, 0) : _e.charCodeAt(0);\n result_1 = (isHex ? '&#x' + code_1.toString(16) : '&#' + code_1) + ';';\n }\n _c += result_1;\n _d = _b.index + _e.length;\n } while ((_b = encodeRegExp.exec(text)));\n if (_d !== text.length) {\n _c += text.substring(_d);\n }\n }\n else {\n _c =\n text;\n }\n return _c;\n}\nexports.encode = encode;\nvar defaultDecodeOptions = {\n scope: 'body',\n level: 'all'\n};\nvar strict = /&(?:#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);/g;\nvar attribute = /&(?:#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g;\nvar baseDecodeRegExps = {\n xml: {\n strict: strict,\n attribute: attribute,\n body: named_references_1.bodyRegExps.xml\n },\n html4: {\n strict: strict,\n attribute: attribute,\n body: named_references_1.bodyRegExps.html4\n },\n html5: {\n strict: strict,\n attribute: attribute,\n body: named_references_1.bodyRegExps.html5\n }\n};\nvar decodeRegExps = __assign(__assign({}, baseDecodeRegExps), { all: baseDecodeRegExps.html5 });\nvar fromCharCode = String.fromCharCode;\nvar outOfBoundsChar = fromCharCode(65533);\nvar defaultDecodeEntityOptions = {\n level: 'all'\n};\n/** Decodes a single entity */\nfunction decodeEntity(entity, _a) {\n var _b = (_a === void 0 ? defaultDecodeEntityOptions : _a).level, level = _b === void 0 ? 'all' : _b;\n if (!entity) {\n return '';\n }\n var _b = entity;\n var decodeEntityLastChar_1 = entity[entity.length - 1];\n if (false\n && decodeEntityLastChar_1 === '=') {\n _b =\n entity;\n }\n else if (false\n && decodeEntityLastChar_1 !== ';') {\n _b =\n entity;\n }\n else {\n var decodeResultByReference_1 = allNamedReferences[level].entities[entity];\n if (decodeResultByReference_1) {\n _b = decodeResultByReference_1;\n }\n else if (entity[0] === '&' && entity[1] === '#') {\n var decodeSecondChar_1 = entity[2];\n var decodeCode_1 = decodeSecondChar_1 == 'x' || decodeSecondChar_1 == 'X'\n ? parseInt(entity.substr(3), 16)\n : parseInt(entity.substr(2));\n _b =\n decodeCode_1 >= 0x10ffff\n ? outOfBoundsChar\n : decodeCode_1 > 65535\n ? surrogate_pairs_1.fromCodePoint(decodeCode_1)\n : fromCharCode(numeric_unicode_map_1.numericUnicodeMap[decodeCode_1] || decodeCode_1);\n }\n }\n return _b;\n}\nexports.decodeEntity = decodeEntity;\n/** Decodes all entities in the text */\nfunction decode(text, _a) {\n var decodeSecondChar_1 = _a === void 0 ? defaultDecodeOptions : _a, decodeCode_1 = decodeSecondChar_1.level, level = decodeCode_1 === void 0 ? 'all' : decodeCode_1, _b = decodeSecondChar_1.scope, scope = _b === void 0 ? level === 'xml' ? 'strict' : 'body' : _b;\n if (!text) {\n return '';\n }\n var decodeRegExp = decodeRegExps[level][scope];\n var references = allNamedReferences[level].entities;\n var isAttribute = scope === 'attribute';\n var isStrict = scope === 'strict';\n decodeRegExp.lastIndex = 0;\n var replaceMatch_1 = decodeRegExp.exec(text);\n var replaceResult_1;\n if (replaceMatch_1) {\n replaceResult_1 = '';\n var replaceLastIndex_1 = 0;\n do {\n if (replaceLastIndex_1 !== replaceMatch_1.index) {\n replaceResult_1 += text.substring(replaceLastIndex_1, replaceMatch_1.index);\n }\n var replaceInput_1 = replaceMatch_1[0];\n var decodeResult_1 = replaceInput_1;\n var decodeEntityLastChar_2 = replaceInput_1[replaceInput_1.length - 1];\n if (isAttribute\n && decodeEntityLastChar_2 === '=') {\n decodeResult_1 = replaceInput_1;\n }\n else if (isStrict\n && decodeEntityLastChar_2 !== ';') {\n decodeResult_1 = replaceInput_1;\n }\n else {\n var decodeResultByReference_2 = references[replaceInput_1];\n if (decodeResultByReference_2) {\n decodeResult_1 = decodeResultByReference_2;\n }\n else if (replaceInput_1[0] === '&' && replaceInput_1[1] === '#') {\n var decodeSecondChar_2 = replaceInput_1[2];\n var decodeCode_2 = decodeSecondChar_2 == 'x' || decodeSecondChar_2 == 'X'\n ? parseInt(replaceInput_1.substr(3), 16)\n : parseInt(replaceInput_1.substr(2));\n decodeResult_1 =\n decodeCode_2 >= 0x10ffff\n ? outOfBoundsChar\n : decodeCode_2 > 65535\n ? surrogate_pairs_1.fromCodePoint(decodeCode_2)\n : fromCharCode(numeric_unicode_map_1.numericUnicodeMap[decodeCode_2] || decodeCode_2);\n }\n }\n replaceResult_1 += decodeResult_1;\n replaceLastIndex_1 = replaceMatch_1.index + replaceInput_1.length;\n } while ((replaceMatch_1 = decodeRegExp.exec(text)));\n if (replaceLastIndex_1 !== text.length) {\n replaceResult_1 += text.substring(replaceLastIndex_1);\n }\n }\n else {\n replaceResult_1 =\n text;\n }\n return replaceResult_1;\n}\nexports.decode = decode;\n","export const safeTagsAndAttributes = {\n a: [\n \"class\",\n \"target\",\n \"href\",\n \"title\",\n \"data-collection-id\",\n \"data-page-id\",\n \"rel\",\n \"data-user-id\",\n \"data-user-id-old\",\n ],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\"autoplay\", \"controls\", \"loop\", \"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: [\"id\"],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [\"style\"],\n dl: [],\n dt: [],\n em: [],\n font: [\"color\", \"size\", \"face\", \"style\"],\n footer: [],\n h1: [\"style\"],\n h2: [\"style\"],\n h3: [\"style\"],\n h4: [\"style\"],\n h5: [\"style\"],\n h6: [\"style\"],\n header: [\"style\"],\n hr: [\"style\", \"class\"],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\", \"style\", \"class\", \"type\"],\n ins: [\"datetime\"],\n li: [\"style\"],\n mark: [],\n nav: [],\n ol: [\"style\"],\n p: [\"style\"],\n pre: [\"id\", \"style\"],\n s: [],\n section: [],\n small: [],\n span: [\"style\", \"class\"],\n sub: [],\n sup: [],\n strong: [],\n table: [\"width\", \"border\", \"align\", \"valign\", \"style\", \"class\"],\n tbody: [\"align\", \"valign\", \"style\", \"class\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\", \"style\", \"class\"],\n tfoot: [\"align\", \"valign\", \"style\", \"class\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\", \"style\", \"class\"],\n thead: [\"align\", \"valign\", \"style\", \"class\"],\n tr: [\"rowspan\", \"align\", \"valign\", \"style\", \"class\"],\n tt: [],\n u: [],\n ul: [\"style\", \"class\"],\n video: [\n \"style\",\n \"autoplay\",\n \"controls\",\n \"loop\",\n \"preload\",\n \"src\",\n \"height\",\n \"width\",\n ],\n iframe: [\n \"src\",\n \"frameborder\",\n \"allow\",\n \"sandbox\",\n \"referrerpolicy\",\n \"allowfullscreen\",\n \"style\",\n \"class\",\n ],\n};\n\nconst HIGHLIGHT_JS_THEME = \"a11y-light\";\n\nexport const MONOSPACE_FONT_URL =\n \"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono&display=swap\";\nexport const HIGHLIGHJS_JS = [\n \"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.6.0/highlight.min.js\",\n];\nexport const HIGHLIGHJS_CSS = [\n \"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.6.0/styles/default.min.css\",\n `https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.6.0/styles/${HIGHLIGHT_JS_THEME}.min.css`,\n];\nexport const ELEMENT_TYPE_PRE = \"PRE\";\nexport const ELEMENT_TYPE_CODE = \"CODE\";\nexport const CODE_BLOCK_AVAILABLE_LANGUAGES = [\n \"javascript\",\n \"html\",\n \"css\",\n \"xml\",\n \"json\",\n \"java\",\n \"php\",\n \"typescript\",\n];\n",";/*! showdown v 2.1.0 - 21-04-2022 */\r\n(function(){\r\n/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n describe: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n describe: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n describe: 'Parses simple line breaks as <br> (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n describe: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n describe: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n describe: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n describe: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n type: 'boolean'\n },\n ellipsis: {\n defaultValue: true,\n describe: 'Replaces three dots with the ellipsis unicode character',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n describe: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n describe: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n\r\n/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|object[]|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n\r\n/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/&quot;/g, '\"')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n var obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n var encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof (console) === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '+1':'\\ud83d\\udc4d',\n '-1':'\\ud83d\\udc4e',\n '100':'\\ud83d\\udcaf',\n '1234':'\\ud83d\\udd22',\n '1st_place_medal':'\\ud83e\\udd47',\n '2nd_place_medal':'\\ud83e\\udd48',\n '3rd_place_medal':'\\ud83e\\udd49',\n '8ball':'\\ud83c\\udfb1',\n 'a':'\\ud83c\\udd70\\ufe0f',\n 'ab':'\\ud83c\\udd8e',\n 'abc':'\\ud83d\\udd24',\n 'abcd':'\\ud83d\\udd21',\n 'accept':'\\ud83c\\ude51',\n 'aerial_tramway':'\\ud83d\\udea1',\n 'airplane':'\\u2708\\ufe0f',\n 'alarm_clock':'\\u23f0',\n 'alembic':'\\u2697\\ufe0f',\n 'alien':'\\ud83d\\udc7d',\n 'ambulance':'\\ud83d\\ude91',\n 'amphora':'\\ud83c\\udffa',\n 'anchor':'\\u2693\\ufe0f',\n 'angel':'\\ud83d\\udc7c',\n 'anger':'\\ud83d\\udca2',\n 'angry':'\\ud83d\\ude20',\n 'anguished':'\\ud83d\\ude27',\n 'ant':'\\ud83d\\udc1c',\n 'apple':'\\ud83c\\udf4e',\n 'aquarius':'\\u2652\\ufe0f',\n 'aries':'\\u2648\\ufe0f',\n 'arrow_backward':'\\u25c0\\ufe0f',\n 'arrow_double_down':'\\u23ec',\n 'arrow_double_up':'\\u23eb',\n 'arrow_down':'\\u2b07\\ufe0f',\n 'arrow_down_small':'\\ud83d\\udd3d',\n 'arrow_forward':'\\u25b6\\ufe0f',\n 'arrow_heading_down':'\\u2935\\ufe0f',\n 'arrow_heading_up':'\\u2934\\ufe0f',\n 'arrow_left':'\\u2b05\\ufe0f',\n 'arrow_lower_left':'\\u2199\\ufe0f',\n 'arrow_lower_right':'\\u2198\\ufe0f',\n 'arrow_right':'\\u27a1\\ufe0f',\n 'arrow_right_hook':'\\u21aa\\ufe0f',\n 'arrow_up':'\\u2b06\\ufe0f',\n 'arrow_up_down':'\\u2195\\ufe0f',\n 'arrow_up_small':'\\ud83d\\udd3c',\n 'arrow_upper_left':'\\u2196\\ufe0f',\n 'arrow_upper_right':'\\u2197\\ufe0f',\n 'arrows_clockwise':'\\ud83d\\udd03',\n 'arrows_counterclockwise':'\\ud83d\\udd04',\n 'art':'\\ud83c\\udfa8',\n 'articulated_lorry':'\\ud83d\\ude9b',\n 'artificial_satellite':'\\ud83d\\udef0',\n 'astonished':'\\ud83d\\ude32',\n 'athletic_shoe':'\\ud83d\\udc5f',\n 'atm':'\\ud83c\\udfe7',\n 'atom_symbol':'\\u269b\\ufe0f',\n 'avocado':'\\ud83e\\udd51',\n 'b':'\\ud83c\\udd71\\ufe0f',\n 'baby':'\\ud83d\\udc76',\n 'baby_bottle':'\\ud83c\\udf7c',\n 'baby_chick':'\\ud83d\\udc24',\n 'baby_symbol':'\\ud83d\\udebc',\n 'back':'\\ud83d\\udd19',\n 'bacon':'\\ud83e\\udd53',\n 'badminton':'\\ud83c\\udff8',\n 'baggage_claim':'\\ud83d\\udec4',\n 'baguette_bread':'\\ud83e\\udd56',\n 'balance_scale':'\\u2696\\ufe0f',\n 'balloon':'\\ud83c\\udf88',\n 'ballot_box':'\\ud83d\\uddf3',\n 'ballot_box_with_check':'\\u2611\\ufe0f',\n 'bamboo':'\\ud83c\\udf8d',\n 'banana':'\\ud83c\\udf4c',\n 'bangbang':'\\u203c\\ufe0f',\n 'bank':'\\ud83c\\udfe6',\n 'bar_chart':'\\ud83d\\udcca',\n 'barber':'\\ud83d\\udc88',\n 'baseball':'\\u26be\\ufe0f',\n 'basketball':'\\ud83c\\udfc0',\n 'basketball_man':'\\u26f9\\ufe0f',\n 'basketball_woman':'\\u26f9\\ufe0f&zwj;\\u2640\\ufe0f',\n 'bat':'\\ud83e\\udd87',\n 'bath':'\\ud83d\\udec0',\n 'bathtub':'\\ud83d\\udec1',\n 'battery':'\\ud83d\\udd0b',\n 'beach_umbrella':'\\ud83c\\udfd6',\n 'bear':'\\ud83d\\udc3b',\n 'bed':'\\ud83d\\udecf',\n 'bee':'\\ud83d\\udc1d',\n 'beer':'\\ud83c\\udf7a',\n 'beers':'\\ud83c\\udf7b',\n 'beetle':'\\ud83d\\udc1e',\n 'beginner':'\\ud83d\\udd30',\n 'bell':'\\ud83d\\udd14',\n 'bellhop_bell':'\\ud83d\\udece',\n 'bento':'\\ud83c\\udf71',\n 'biking_man':'\\ud83d\\udeb4',\n 'bike':'\\ud83d\\udeb2',\n 'biking_woman':'\\ud83d\\udeb4&zwj;\\u2640\\ufe0f',\n 'bikini':'\\ud83d\\udc59',\n 'biohazard':'\\u2623\\ufe0f',\n 'bird':'\\ud83d\\udc26',\n 'birthday':'\\ud83c\\udf82',\n 'black_circle':'\\u26ab\\ufe0f',\n 'black_flag':'\\ud83c\\udff4',\n 'black_heart':'\\ud83d\\udda4',\n 'black_joker':'\\ud83c\\udccf',\n 'black_large_square':'\\u2b1b\\ufe0f',\n 'black_medium_small_square':'\\u25fe\\ufe0f',\n 'black_medium_square':'\\u25fc\\ufe0f',\n 'black_nib':'\\u2712\\ufe0f',\n 'black_small_square':'\\u25aa\\ufe0f',\n 'black_square_button':'\\ud83d\\udd32',\n 'blonde_man':'\\ud83d\\udc71',\n 'blonde_woman':'\\ud83d\\udc71&zwj;\\u2640\\ufe0f',\n 'blossom':'\\ud83c\\udf3c',\n 'blowfish':'\\ud83d\\udc21',\n 'blue_book':'\\ud83d\\udcd8',\n 'blue_car':'\\ud83d\\ude99',\n 'blue_heart':'\\ud83d\\udc99',\n 'blush':'\\ud83d\\ude0a',\n 'boar':'\\ud83d\\udc17',\n 'boat':'\\u26f5\\ufe0f',\n 'bomb':'\\ud83d\\udca3',\n 'book':'\\ud83d\\udcd6',\n 'bookmark':'\\ud83d\\udd16',\n 'bookmark_tabs':'\\ud83d\\udcd1',\n 'books':'\\ud83d\\udcda',\n 'boom':'\\ud83d\\udca5',\n 'boot':'\\ud83d\\udc62',\n 'bouquet':'\\ud83d\\udc90',\n 'bowing_man':'\\ud83d\\ude47',\n 'bow_and_arrow':'\\ud83c\\udff9',\n 'bowing_woman':'\\ud83d\\ude47&zwj;\\u2640\\ufe0f',\n 'bowling':'\\ud83c\\udfb3',\n 'boxing_glove':'\\ud83e\\udd4a',\n 'boy':'\\ud83d\\udc66',\n 'bread':'\\ud83c\\udf5e',\n 'bride_with_veil':'\\ud83d\\udc70',\n 'bridge_at_night':'\\ud83c\\udf09',\n 'briefcase':'\\ud83d\\udcbc',\n 'broken_heart':'\\ud83d\\udc94',\n 'bug':'\\ud83d\\udc1b',\n 'building_construction':'\\ud83c\\udfd7',\n 'bulb':'\\ud83d\\udca1',\n 'bullettrain_front':'\\ud83d\\ude85',\n 'bullettrain_side':'\\ud83d\\ude84',\n 'burrito':'\\ud83c\\udf2f',\n 'bus':'\\ud83d\\ude8c',\n 'business_suit_levitating':'\\ud83d\\udd74',\n 'busstop':'\\ud83d\\ude8f',\n 'bust_in_silhouette':'\\ud83d\\udc64',\n 'busts_in_silhouette':'\\ud83d\\udc65',\n 'butterfly':'\\ud83e\\udd8b',\n 'cactus':'\\ud83c\\udf35',\n 'cake':'\\ud83c\\udf70',\n 'calendar':'\\ud83d\\udcc6',\n 'call_me_hand':'\\ud83e\\udd19',\n 'calling':'\\ud83d\\udcf2',\n 'camel':'\\ud83d\\udc2b',\n 'camera':'\\ud83d\\udcf7',\n 'camera_flash':'\\ud83d\\udcf8',\n 'camping':'\\ud83c\\udfd5',\n 'cancer':'\\u264b\\ufe0f',\n 'candle':'\\ud83d\\udd6f',\n 'candy':'\\ud83c\\udf6c',\n 'canoe':'\\ud83d\\udef6',\n 'capital_abcd':'\\ud83d\\udd20',\n 'capricorn':'\\u2651\\ufe0f',\n 'car':'\\ud83d\\ude97',\n 'card_file_box':'\\ud83d\\uddc3',\n 'card_index':'\\ud83d\\udcc7',\n 'card_index_dividers':'\\ud83d\\uddc2',\n 'carousel_horse':'\\ud83c\\udfa0',\n 'carrot':'\\ud83e\\udd55',\n 'cat':'\\ud83d\\udc31',\n 'cat2':'\\ud83d\\udc08',\n 'cd':'\\ud83d\\udcbf',\n 'chains':'\\u26d3',\n 'champagne':'\\ud83c\\udf7e',\n 'chart':'\\ud83d\\udcb9',\n 'chart_with_downwards_trend':'\\ud83d\\udcc9',\n 'chart_with_upwards_trend':'\\ud83d\\udcc8',\n 'checkered_flag':'\\ud83c\\udfc1',\n 'cheese':'\\ud83e\\uddc0',\n 'cherries':'\\ud83c\\udf52',\n 'cherry_blossom':'\\ud83c\\udf38',\n 'chestnut':'\\ud83c\\udf30',\n 'chicken':'\\ud83d\\udc14',\n 'children_crossing':'\\ud83d\\udeb8',\n 'chipmunk':'\\ud83d\\udc3f',\n 'chocolate_bar':'\\ud83c\\udf6b',\n 'christmas_tree':'\\ud83c\\udf84',\n 'church':'\\u26ea\\ufe0f',\n 'cinema':'\\ud83c\\udfa6',\n 'circus_tent':'\\ud83c\\udfaa',\n 'city_sunrise':'\\ud83c\\udf07',\n 'city_sunset':'\\ud83c\\udf06',\n 'cityscape':'\\ud83c\\udfd9',\n 'cl':'\\ud83c\\udd91',\n 'clamp':'\\ud83d\\udddc',\n 'clap':'\\ud83d\\udc4f',\n 'clapper':'\\ud83c\\udfac',\n 'classical_building':'\\ud83c\\udfdb',\n 'clinking_glasses':'\\ud83e\\udd42',\n 'clipboard':'\\ud83d\\udccb',\n 'clock1':'\\ud83d\\udd50',\n 'clock10':'\\ud83d\\udd59',\n 'clock1030':'\\ud83d\\udd65',\n 'clock11':'\\ud83d\\udd5a',\n 'clock1130':'\\ud83d\\udd66',\n 'clock12':'\\ud83d\\udd5b',\n 'clock1230':'\\ud83d\\udd67',\n 'clock130':'\\ud83d\\udd5c',\n 'clock2':'\\ud83d\\udd51',\n 'clock230':'\\ud83d\\udd5d',\n 'clock3':'\\ud83d\\udd52',\n 'clock330':'\\ud83d\\udd5e',\n 'clock4':'\\ud83d\\udd53',\n 'clock430':'\\ud83d\\udd5f',\n 'clock5':'\\ud83d\\udd54',\n 'clock530':'\\ud83d\\udd60',\n 'clock6':'\\ud83d\\udd55',\n 'clock630':'\\ud83d\\udd61',\n 'clock7':'\\ud83d\\udd56',\n 'clock730':'\\ud83d\\udd62',\n 'clock8':'\\ud83d\\udd57',\n 'clock830':'\\ud83d\\udd63',\n 'clock9':'\\ud83d\\udd58',\n 'clock930':'\\ud83d\\udd64',\n 'closed_book':'\\ud83d\\udcd5',\n 'closed_lock_with_key':'\\ud83d\\udd10',\n 'closed_umbrella':'\\ud83c\\udf02',\n 'cloud':'\\u2601\\ufe0f',\n 'cloud_with_lightning':'\\ud83c\\udf29',\n 'cloud_with_lightning_and_rain':'\\u26c8',\n 'cloud_with_rain':'\\ud83c\\udf27',\n 'cloud_with_snow':'\\ud83c\\udf28',\n 'clown_face':'\\ud83e\\udd21',\n 'clubs':'\\u2663\\ufe0f',\n 'cocktail':'\\ud83c\\udf78',\n 'coffee':'\\u2615\\ufe0f',\n 'coffin':'\\u26b0\\ufe0f',\n 'cold_sweat':'\\ud83d\\ude30',\n 'comet':'\\u2604\\ufe0f',\n 'computer':'\\ud83d\\udcbb',\n 'computer_mouse':'\\ud83d\\uddb1',\n 'confetti_ball':'\\ud83c\\udf8a',\n 'confounded':'\\ud83d\\ude16',\n 'confused':'\\ud83d\\ude15',\n 'congratulations':'\\u3297\\ufe0f',\n 'construction':'\\ud83d\\udea7',\n 'construction_worker_man':'\\ud83d\\udc77',\n 'construction_worker_woman':'\\ud83d\\udc77&zwj;\\u2640\\ufe0f',\n 'control_knobs':'\\ud83c\\udf9b',\n 'convenience_store':'\\ud83c\\udfea',\n 'cookie':'\\ud83c\\udf6a',\n 'cool':'\\ud83c\\udd92',\n 'policeman':'\\ud83d\\udc6e',\n 'copyright':'\\u00a9\\ufe0f',\n 'corn':'\\ud83c\\udf3d',\n 'couch_and_lamp':'\\ud83d\\udecb',\n 'couple':'\\ud83d\\udc6b',\n 'couple_with_heart_woman_man':'\\ud83d\\udc91',\n 'couple_with_heart_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc68',\n 'couple_with_heart_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc69',\n 'couplekiss_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc68',\n 'couplekiss_man_woman':'\\ud83d\\udc8f',\n 'couplekiss_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc69',\n 'cow':'\\ud83d\\udc2e',\n 'cow2':'\\ud83d\\udc04',\n 'cowboy_hat_face':'\\ud83e\\udd20',\n 'crab':'\\ud83e\\udd80',\n 'crayon':'\\ud83d\\udd8d',\n 'credit_card':'\\ud83d\\udcb3',\n 'crescent_moon':'\\ud83c\\udf19',\n 'cricket':'\\ud83c\\udfcf',\n 'crocodile':'\\ud83d\\udc0a',\n 'croissant':'\\ud83e\\udd50',\n 'crossed_fingers':'\\ud83e\\udd1e',\n 'crossed_flags':'\\ud83c\\udf8c',\n 'crossed_swords':'\\u2694\\ufe0f',\n 'crown':'\\ud83d\\udc51',\n 'cry':'\\ud83d\\ude22',\n 'crying_cat_face':'\\ud83d\\ude3f',\n 'crystal_ball':'\\ud83d\\udd2e',\n 'cucumber':'\\ud83e\\udd52',\n 'cupid':'\\ud83d\\udc98',\n 'curly_loop':'\\u27b0',\n 'currency_exchange':'\\ud83d\\udcb1',\n 'curry':'\\ud83c\\udf5b',\n 'custard':'\\ud83c\\udf6e',\n 'customs':'\\ud83d\\udec3',\n 'cyclone':'\\ud83c\\udf00',\n 'dagger':'\\ud83d\\udde1',\n 'dancer':'\\ud83d\\udc83',\n 'dancing_women':'\\ud83d\\udc6f',\n 'dancing_men':'\\ud83d\\udc6f&zwj;\\u2642\\ufe0f',\n 'dango':'\\ud83c\\udf61',\n 'dark_sunglasses':'\\ud83d\\udd76',\n 'dart':'\\ud83c\\udfaf',\n 'dash':'\\ud83d\\udca8',\n 'date':'\\ud83d\\udcc5',\n 'deciduous_tree':'\\ud83c\\udf33',\n 'deer':'\\ud83e\\udd8c',\n 'department_store':'\\ud83c\\udfec',\n 'derelict_house':'\\ud83c\\udfda',\n 'desert':'\\ud83c\\udfdc',\n 'desert_island':'\\ud83c\\udfdd',\n 'desktop_computer':'\\ud83d\\udda5',\n 'male_detective':'\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n 'diamonds':'\\u2666\\ufe0f',\n 'disappointed':'\\ud83d\\ude1e',\n 'disappointed_relieved':'\\ud83d\\ude25',\n 'dizzy':'\\ud83d\\udcab',\n 'dizzy_face':'\\ud83d\\ude35',\n 'do_not_litter':'\\ud83d\\udeaf',\n 'dog':'\\ud83d\\udc36',\n 'dog2':'\\ud83d\\udc15',\n 'dollar':'\\ud83d\\udcb5',\n 'dolls':'\\ud83c\\udf8e',\n 'dolphin':'\\ud83d\\udc2c',\n 'door':'\\ud83d\\udeaa',\n 'doughnut':'\\ud83c\\udf69',\n 'dove':'\\ud83d\\udd4a',\n 'dragon':'\\ud83d\\udc09',\n 'dragon_face':'\\ud83d\\udc32',\n 'dress':'\\ud83d\\udc57',\n 'dromedary_camel':'\\ud83d\\udc2a',\n 'drooling_face':'\\ud83e\\udd24',\n 'droplet':'\\ud83d\\udca7',\n 'drum':'\\ud83e\\udd41',\n 'duck':'\\ud83e\\udd86',\n 'dvd':'\\ud83d\\udcc0',\n 'e-mail':'\\ud83d\\udce7',\n 'eagle':'\\ud83e\\udd85',\n 'ear':'\\ud83d\\udc42',\n 'ear_of_rice':'\\ud83c\\udf3e',\n 'earth_africa':'\\ud83c\\udf0d',\n 'earth_americas':'\\ud83c\\udf0e',\n 'earth_asia':'\\ud83c\\udf0f',\n 'egg':'\\ud83e\\udd5a',\n 'eggplant':'\\ud83c\\udf46',\n 'eight_pointed_black_star':'\\u2734\\ufe0f',\n 'eight_spoked_asterisk':'\\u2733\\ufe0f',\n 'electric_plug':'\\ud83d\\udd0c',\n 'elephant':'\\ud83d\\udc18',\n 'email':'\\u2709\\ufe0f',\n 'end':'\\ud83d\\udd1a',\n 'envelope_with_arrow':'\\ud83d\\udce9',\n 'euro':'\\ud83d\\udcb6',\n 'european_castle':'\\ud83c\\udff0',\n 'european_post_office':'\\ud83c\\udfe4',\n 'evergreen_tree':'\\ud83c\\udf32',\n 'exclamation':'\\u2757\\ufe0f',\n 'expressionless':'\\ud83d\\ude11',\n 'eye':'\\ud83d\\udc41',\n 'eye_speech_bubble':'\\ud83d\\udc41&zwj;\\ud83d\\udde8',\n 'eyeglasses':'\\ud83d\\udc53',\n 'eyes':'\\ud83d\\udc40',\n 'face_with_head_bandage':'\\ud83e\\udd15',\n 'face_with_thermometer':'\\ud83e\\udd12',\n 'fist_oncoming':'\\ud83d\\udc4a',\n 'factory':'\\ud83c\\udfed',\n 'fallen_leaf':'\\ud83c\\udf42',\n 'family_man_woman_boy':'\\ud83d\\udc6a',\n 'family_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n 'family_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n 'family_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_man_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n 'family_man_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_man_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n 'family_man_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_man_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_man_woman_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_man_woman_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n 'family_man_woman_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_man_woman_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n 'family_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n 'family_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_woman_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n 'family_woman_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_woman_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n 'family_woman_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_woman_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'fast_forward':'\\u23e9',\n 'fax':'\\ud83d\\udce0',\n 'fearful':'\\ud83d\\ude28',\n 'feet':'\\ud83d\\udc3e',\n 'female_detective':'\\ud83d\\udd75\\ufe0f&zwj;\\u2640\\ufe0f',\n 'ferris_wheel':'\\ud83c\\udfa1',\n 'ferry':'\\u26f4',\n 'field_hockey':'\\ud83c\\udfd1',\n 'file_cabinet':'\\ud83d\\uddc4',\n 'file_folder':'\\ud83d\\udcc1',\n 'film_projector':'\\ud83d\\udcfd',\n 'film_strip':'\\ud83c\\udf9e',\n 'fire':'\\ud83d\\udd25',\n 'fire_engine':'\\ud83d\\ude92',\n 'fireworks':'\\ud83c\\udf86',\n 'first_quarter_moon':'\\ud83c\\udf13',\n 'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n 'fish':'\\ud83d\\udc1f',\n 'fish_cake':'\\ud83c\\udf65',\n 'fishing_pole_and_fish':'\\ud83c\\udfa3',\n 'fist_raised':'\\u270a',\n 'fist_left':'\\ud83e\\udd1b',\n 'fist_right':'\\ud83e\\udd1c',\n 'flags':'\\ud83c\\udf8f',\n 'flashlight':'\\ud83d\\udd26',\n 'fleur_de_lis':'\\u269c\\ufe0f',\n 'flight_arrival':'\\ud83d\\udeec',\n 'flight_departure':'\\ud83d\\udeeb',\n 'floppy_disk':'\\ud83d\\udcbe',\n 'flower_playing_cards':'\\ud83c\\udfb4',\n 'flushed':'\\ud83d\\ude33',\n 'fog':'\\ud83c\\udf2b',\n 'foggy':'\\ud83c\\udf01',\n 'football':'\\ud83c\\udfc8',\n 'footprints':'\\ud83d\\udc63',\n 'fork_and_knife':'\\ud83c\\udf74',\n 'fountain':'\\u26f2\\ufe0f',\n 'fountain_pen':'\\ud83d\\udd8b',\n 'four_leaf_clover':'\\ud83c\\udf40',\n 'fox_face':'\\ud83e\\udd8a',\n 'framed_picture':'\\ud83d\\uddbc',\n 'free':'\\ud83c\\udd93',\n 'fried_egg':'\\ud83c\\udf73',\n 'fried_shrimp':'\\ud83c\\udf64',\n 'fries':'\\ud83c\\udf5f',\n 'frog':'\\ud83d\\udc38',\n 'frowning':'\\ud83d\\ude26',\n 'frowning_face':'\\u2639\\ufe0f',\n 'frowning_man':'\\ud83d\\ude4d&zwj;\\u2642\\ufe0f',\n 'frowning_woman':'\\ud83d\\ude4d',\n 'middle_finger':'\\ud83d\\udd95',\n 'fuelpump':'\\u26fd\\ufe0f',\n 'full_moon':'\\ud83c\\udf15',\n 'full_moon_with_face':'\\ud83c\\udf1d',\n 'funeral_urn':'\\u26b1\\ufe0f',\n 'game_die':'\\ud83c\\udfb2',\n 'gear':'\\u2699\\ufe0f',\n 'gem':'\\ud83d\\udc8e',\n 'gemini':'\\u264a\\ufe0f',\n 'ghost':'\\ud83d\\udc7b',\n 'gift':'\\ud83c\\udf81',\n 'gift_heart':'\\ud83d\\udc9d',\n 'girl':'\\ud83d\\udc67',\n 'globe_with_meridians':'\\ud83c\\udf10',\n 'goal_net':'\\ud83e\\udd45',\n 'goat':'\\ud83d\\udc10',\n 'golf':'\\u26f3\\ufe0f',\n 'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n 'golfing_woman':'\\ud83c\\udfcc\\ufe0f&zwj;\\u2640\\ufe0f',\n 'gorilla':'\\ud83e\\udd8d',\n 'grapes':'\\ud83c\\udf47',\n 'green_apple':'\\ud83c\\udf4f',\n 'green_book':'\\ud83d\\udcd7',\n 'green_heart':'\\ud83d\\udc9a',\n 'green_salad':'\\ud83e\\udd57',\n 'grey_exclamation':'\\u2755',\n 'grey_question':'\\u2754',\n 'grimacing':'\\ud83d\\ude2c',\n 'grin':'\\ud83d\\ude01',\n 'grinning':'\\ud83d\\ude00',\n 'guardsman':'\\ud83d\\udc82',\n 'guardswoman':'\\ud83d\\udc82&zwj;\\u2640\\ufe0f',\n 'guitar':'\\ud83c\\udfb8',\n 'gun':'\\ud83d\\udd2b',\n 'haircut_woman':'\\ud83d\\udc87',\n 'haircut_man':'\\ud83d\\udc87&zwj;\\u2642\\ufe0f',\n 'hamburger':'\\ud83c\\udf54',\n 'hammer':'\\ud83d\\udd28',\n 'hammer_and_pick':'\\u2692',\n 'hammer_and_wrench':'\\ud83d\\udee0',\n 'hamster':'\\ud83d\\udc39',\n 'hand':'\\u270b',\n 'handbag':'\\ud83d\\udc5c',\n 'handshake':'\\ud83e\\udd1d',\n 'hankey':'\\ud83d\\udca9',\n 'hatched_chick':'\\ud83d\\udc25',\n 'hatching_chick':'\\ud83d\\udc23',\n 'headphones':'\\ud83c\\udfa7',\n 'hear_no_evil':'\\ud83d\\ude49',\n 'heart':'\\u2764\\ufe0f',\n 'heart_decoration':'\\ud83d\\udc9f',\n 'heart_eyes':'\\ud83d\\ude0d',\n 'heart_eyes_cat':'\\ud83d\\ude3b',\n 'heartbeat':'\\ud83d\\udc93',\n 'heartpulse':'\\ud83d\\udc97',\n 'hearts':'\\u2665\\ufe0f',\n 'heavy_check_mark':'\\u2714\\ufe0f',\n 'heavy_division_sign':'\\u2797',\n 'heavy_dollar_sign':'\\ud83d\\udcb2',\n 'heavy_heart_exclamation':'\\u2763\\ufe0f',\n 'heavy_minus_sign':'\\u2796',\n 'heavy_multiplication_x':'\\u2716\\ufe0f',\n 'heavy_plus_sign':'\\u2795',\n 'helicopter':'\\ud83d\\ude81',\n 'herb':'\\ud83c\\udf3f',\n 'hibiscus':'\\ud83c\\udf3a',\n 'high_brightness':'\\ud83d\\udd06',\n 'high_heel':'\\ud83d\\udc60',\n 'hocho':'\\ud83d\\udd2a',\n 'hole':'\\ud83d\\udd73',\n 'honey_pot':'\\ud83c\\udf6f',\n 'horse':'\\ud83d\\udc34',\n 'horse_racing':'\\ud83c\\udfc7',\n 'hospital':'\\ud83c\\udfe5',\n 'hot_pepper':'\\ud83c\\udf36',\n 'hotdog':'\\ud83c\\udf2d',\n 'hotel':'\\ud83c\\udfe8',\n 'hotsprings':'\\u2668\\ufe0f',\n 'hourglass':'\\u231b\\ufe0f',\n 'hourglass_flowing_sand':'\\u23f3',\n 'house':'\\ud83c\\udfe0',\n 'house_with_garden':'\\ud83c\\udfe1',\n 'houses':'\\ud83c\\udfd8',\n 'hugs':'\\ud83e\\udd17',\n 'hushed':'\\ud83d\\ude2f',\n 'ice_cream':'\\ud83c\\udf68',\n 'ice_hockey':'\\ud83c\\udfd2',\n 'ice_skate':'\\u26f8',\n 'icecream':'\\ud83c\\udf66',\n 'id':'\\ud83c\\udd94',\n 'ideograph_advantage':'\\ud83c\\ude50',\n 'imp':'\\ud83d\\udc7f',\n 'inbox_tray':'\\ud83d\\udce5',\n 'incoming_envelope':'\\ud83d\\udce8',\n 'tipping_hand_woman':'\\ud83d\\udc81',\n 'information_source':'\\u2139\\ufe0f',\n 'innocent':'\\ud83d\\ude07',\n 'interrobang':'\\u2049\\ufe0f',\n 'iphone':'\\ud83d\\udcf1',\n 'izakaya_lantern':'\\ud83c\\udfee',\n 'jack_o_lantern':'\\ud83c\\udf83',\n 'japan':'\\ud83d\\uddfe',\n 'japanese_castle':'\\ud83c\\udfef',\n 'japanese_goblin':'\\ud83d\\udc7a',\n 'japanese_ogre':'\\ud83d\\udc79',\n 'jeans':'\\ud83d\\udc56',\n 'joy':'\\ud83d\\ude02',\n 'joy_cat':'\\ud83d\\ude39',\n 'joystick':'\\ud83d\\udd79',\n 'kaaba':'\\ud83d\\udd4b',\n 'key':'\\ud83d\\udd11',\n 'keyboard':'\\u2328\\ufe0f',\n 'keycap_ten':'\\ud83d\\udd1f',\n 'kick_scooter':'\\ud83d\\udef4',\n 'kimono':'\\ud83d\\udc58',\n 'kiss':'\\ud83d\\udc8b',\n 'kissing':'\\ud83d\\ude17',\n 'kissing_cat':'\\ud83d\\ude3d',\n 'kissing_closed_eyes':'\\ud83d\\ude1a',\n 'kissing_heart':'\\ud83d\\ude18',\n 'kissing_smiling_eyes':'\\ud83d\\ude19',\n 'kiwi_fruit':'\\ud83e\\udd5d',\n 'koala':'\\ud83d\\udc28',\n 'koko':'\\ud83c\\ude01',\n 'label':'\\ud83c\\udff7',\n 'large_blue_circle':'\\ud83d\\udd35',\n 'large_blue_diamond':'\\ud83d\\udd37',\n 'large_orange_diamond':'\\ud83d\\udd36',\n 'last_quarter_moon':'\\ud83c\\udf17',\n 'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n 'latin_cross':'\\u271d\\ufe0f',\n 'laughing':'\\ud83d\\ude06',\n 'leaves':'\\ud83c\\udf43',\n 'ledger':'\\ud83d\\udcd2',\n 'left_luggage':'\\ud83d\\udec5',\n 'left_right_arrow':'\\u2194\\ufe0f',\n 'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n 'lemon':'\\ud83c\\udf4b',\n 'leo':'\\u264c\\ufe0f',\n 'leopard':'\\ud83d\\udc06',\n 'level_slider':'\\ud83c\\udf9a',\n 'libra':'\\u264e\\ufe0f',\n 'light_rail':'\\ud83d\\ude88',\n 'link':'\\ud83d\\udd17',\n 'lion':'\\ud83e\\udd81',\n 'lips':'\\ud83d\\udc44',\n 'lipstick':'\\ud83d\\udc84',\n 'lizard':'\\ud83e\\udd8e',\n 'lock':'\\ud83d\\udd12',\n 'lock_with_ink_pen':'\\ud83d\\udd0f',\n 'lollipop':'\\ud83c\\udf6d',\n 'loop':'\\u27bf',\n 'loud_sound':'\\ud83d\\udd0a',\n 'loudspeaker':'\\ud83d\\udce2',\n 'love_hotel':'\\ud83c\\udfe9',\n 'love_letter':'\\ud83d\\udc8c',\n 'low_brightness':'\\ud83d\\udd05',\n 'lying_face':'\\ud83e\\udd25',\n 'm':'\\u24c2\\ufe0f',\n 'mag':'\\ud83d\\udd0d',\n 'mag_right':'\\ud83d\\udd0e',\n 'mahjong':'\\ud83c\\udc04\\ufe0f',\n 'mailbox':'\\ud83d\\udceb',\n 'mailbox_closed':'\\ud83d\\udcea',\n 'mailbox_with_mail':'\\ud83d\\udcec',\n 'mailbox_with_no_mail':'\\ud83d\\udced',\n 'man':'\\ud83d\\udc68',\n 'man_artist':'\\ud83d\\udc68&zwj;\\ud83c\\udfa8',\n 'man_astronaut':'\\ud83d\\udc68&zwj;\\ud83d\\ude80',\n 'man_cartwheeling':'\\ud83e\\udd38&zwj;\\u2642\\ufe0f',\n 'man_cook':'\\ud83d\\udc68&zwj;\\ud83c\\udf73',\n 'man_dancing':'\\ud83d\\udd7a',\n 'man_facepalming':'\\ud83e\\udd26&zwj;\\u2642\\ufe0f',\n 'man_factory_worker':'\\ud83d\\udc68&zwj;\\ud83c\\udfed',\n 'man_farmer':'\\ud83d\\udc68&zwj;\\ud83c\\udf3e',\n 'man_firefighter':'\\ud83d\\udc68&zwj;\\ud83d\\ude92',\n 'man_health_worker':'\\ud83d\\udc68&zwj;\\u2695\\ufe0f',\n 'man_in_tuxedo':'\\ud83e\\udd35',\n 'man_judge':'\\ud83d\\udc68&zwj;\\u2696\\ufe0f',\n 'man_juggling':'\\ud83e\\udd39&zwj;\\u2642\\ufe0f',\n 'man_mechanic':'\\ud83d\\udc68&zwj;\\ud83d\\udd27',\n 'man_office_worker':'\\ud83d\\udc68&zwj;\\ud83d\\udcbc',\n 'man_pilot':'\\ud83d\\udc68&zwj;\\u2708\\ufe0f',\n 'man_playing_handball':'\\ud83e\\udd3e&zwj;\\u2642\\ufe0f',\n 'man_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2642\\ufe0f',\n 'man_scientist':'\\ud83d\\udc68&zwj;\\ud83d\\udd2c',\n 'man_shrugging':'\\ud83e\\udd37&zwj;\\u2642\\ufe0f',\n 'man_singer':'\\ud83d\\udc68&zwj;\\ud83c\\udfa4',\n 'man_student':'\\ud83d\\udc68&zwj;\\ud83c\\udf93',\n 'man_teacher':'\\ud83d\\udc68&zwj;\\ud83c\\udfeb',\n 'man_technologist':'\\ud83d\\udc68&zwj;\\ud83d\\udcbb',\n 'man_with_gua_pi_mao':'\\ud83d\\udc72',\n 'man_with_turban':'\\ud83d\\udc73',\n 'tangerine':'\\ud83c\\udf4a',\n 'mans_shoe':'\\ud83d\\udc5e',\n 'mantelpiece_clock':'\\ud83d\\udd70',\n 'maple_leaf':'\\ud83c\\udf41',\n 'martial_arts_uniform':'\\ud83e\\udd4b',\n 'mask':'\\ud83d\\ude37',\n 'massage_woman':'\\ud83d\\udc86',\n 'massage_man':'\\ud83d\\udc86&zwj;\\u2642\\ufe0f',\n 'meat_on_bone':'\\ud83c\\udf56',\n 'medal_military':'\\ud83c\\udf96',\n 'medal_sports':'\\ud83c\\udfc5',\n 'mega':'\\ud83d\\udce3',\n 'melon':'\\ud83c\\udf48',\n 'memo':'\\ud83d\\udcdd',\n 'men_wrestling':'\\ud83e\\udd3c&zwj;\\u2642\\ufe0f',\n 'menorah':'\\ud83d\\udd4e',\n 'mens':'\\ud83d\\udeb9',\n 'metal':'\\ud83e\\udd18',\n 'metro':'\\ud83d\\ude87',\n 'microphone':'\\ud83c\\udfa4',\n 'microscope':'\\ud83d\\udd2c',\n 'milk_glass':'\\ud83e\\udd5b',\n 'milky_way':'\\ud83c\\udf0c',\n 'minibus':'\\ud83d\\ude90',\n 'minidisc':'\\ud83d\\udcbd',\n 'mobile_phone_off':'\\ud83d\\udcf4',\n 'money_mouth_face':'\\ud83e\\udd11',\n 'money_with_wings':'\\ud83d\\udcb8',\n 'moneybag':'\\ud83d\\udcb0',\n 'monkey':'\\ud83d\\udc12',\n 'monkey_face':'\\ud83d\\udc35',\n 'monorail':'\\ud83d\\ude9d',\n 'moon':'\\ud83c\\udf14',\n 'mortar_board':'\\ud83c\\udf93',\n 'mosque':'\\ud83d\\udd4c',\n 'motor_boat':'\\ud83d\\udee5',\n 'motor_scooter':'\\ud83d\\udef5',\n 'motorcycle':'\\ud83c\\udfcd',\n 'motorway':'\\ud83d\\udee3',\n 'mount_fuji':'\\ud83d\\uddfb',\n 'mountain':'\\u26f0',\n 'mountain_biking_man':'\\ud83d\\udeb5',\n 'mountain_biking_woman':'\\ud83d\\udeb5&zwj;\\u2640\\ufe0f',\n 'mountain_cableway':'\\ud83d\\udea0',\n 'mountain_railway':'\\ud83d\\ude9e',\n 'mountain_snow':'\\ud83c\\udfd4',\n 'mouse':'\\ud83d\\udc2d',\n 'mouse2':'\\ud83d\\udc01',\n 'movie_camera':'\\ud83c\\udfa5',\n 'moyai':'\\ud83d\\uddff',\n 'mrs_claus':'\\ud83e\\udd36',\n 'muscle':'\\ud83d\\udcaa',\n 'mushroom':'\\ud83c\\udf44',\n 'musical_keyboard':'\\ud83c\\udfb9',\n 'musical_note':'\\ud83c\\udfb5',\n 'musical_score':'\\ud83c\\udfbc',\n 'mute':'\\ud83d\\udd07',\n 'nail_care':'\\ud83d\\udc85',\n 'name_badge':'\\ud83d\\udcdb',\n 'national_park':'\\ud83c\\udfde',\n 'nauseated_face':'\\ud83e\\udd22',\n 'necktie':'\\ud83d\\udc54',\n 'negative_squared_cross_mark':'\\u274e',\n 'nerd_face':'\\ud83e\\udd13',\n 'neutral_face':'\\ud83d\\ude10',\n 'new':'\\ud83c\\udd95',\n 'new_moon':'\\ud83c\\udf11',\n 'new_moon_with_face':'\\ud83c\\udf1a',\n 'newspaper':'\\ud83d\\udcf0',\n 'newspaper_roll':'\\ud83d\\uddde',\n 'next_track_button':'\\u23ed',\n 'ng':'\\ud83c\\udd96',\n 'no_good_man':'\\ud83d\\ude45&zwj;\\u2642\\ufe0f',\n 'no_good_woman':'\\ud83d\\ude45',\n 'night_with_stars':'\\ud83c\\udf03',\n 'no_bell':'\\ud83d\\udd15',\n 'no_bicycles':'\\ud83d\\udeb3',\n 'no_entry':'\\u26d4\\ufe0f',\n 'no_entry_sign':'\\ud83d\\udeab',\n 'no_mobile_phones':'\\ud83d\\udcf5',\n 'no_mouth':'\\ud83d\\ude36',\n 'no_pedestrians':'\\ud83d\\udeb7',\n 'no_smoking':'\\ud83d\\udead',\n 'non-potable_water':'\\ud83d\\udeb1',\n 'nose':'\\ud83d\\udc43',\n 'notebook':'\\ud83d\\udcd3',\n 'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n 'notes':'\\ud83c\\udfb6',\n 'nut_and_bolt':'\\ud83d\\udd29',\n 'o':'\\u2b55\\ufe0f',\n 'o2':'\\ud83c\\udd7e\\ufe0f',\n 'ocean':'\\ud83c\\udf0a',\n 'octopus':'\\ud83d\\udc19',\n 'oden':'\\ud83c\\udf62',\n 'office':'\\ud83c\\udfe2',\n 'oil_drum':'\\ud83d\\udee2',\n 'ok':'\\ud83c\\udd97',\n 'ok_hand':'\\ud83d\\udc4c',\n 'ok_man':'\\ud83d\\ude46&zwj;\\u2642\\ufe0f',\n 'ok_woman':'\\ud83d\\ude46',\n 'old_key':'\\ud83d\\udddd',\n 'older_man':'\\ud83d\\udc74',\n 'older_woman':'\\ud83d\\udc75',\n 'om':'\\ud83d\\udd49',\n 'on':'\\ud83d\\udd1b',\n 'oncoming_automobile':'\\ud83d\\ude98',\n 'oncoming_bus':'\\ud83d\\ude8d',\n 'oncoming_police_car':'\\ud83d\\ude94',\n 'oncoming_taxi':'\\ud83d\\ude96',\n 'open_file_folder':'\\ud83d\\udcc2',\n 'open_hands':'\\ud83d\\udc50',\n 'open_mouth':'\\ud83d\\ude2e',\n 'open_umbrella':'\\u2602\\ufe0f',\n 'ophiuchus':'\\u26ce',\n 'orange_book':'\\ud83d\\udcd9',\n 'orthodox_cross':'\\u2626\\ufe0f',\n 'outbox_tray':'\\ud83d\\udce4',\n 'owl':'\\ud83e\\udd89',\n 'ox':'\\ud83d\\udc02',\n 'package':'\\ud83d\\udce6',\n 'page_facing_up':'\\ud83d\\udcc4',\n 'page_with_curl':'\\ud83d\\udcc3',\n 'pager':'\\ud83d\\udcdf',\n 'paintbrush':'\\ud83d\\udd8c',\n 'palm_tree':'\\ud83c\\udf34',\n 'pancakes':'\\ud83e\\udd5e',\n 'panda_face':'\\ud83d\\udc3c',\n 'paperclip':'\\ud83d\\udcce',\n 'paperclips':'\\ud83d\\udd87',\n 'parasol_on_ground':'\\u26f1',\n 'parking':'\\ud83c\\udd7f\\ufe0f',\n 'part_alternation_mark':'\\u303d\\ufe0f',\n 'partly_sunny':'\\u26c5\\ufe0f',\n 'passenger_ship':'\\ud83d\\udef3',\n 'passport_control':'\\ud83d\\udec2',\n 'pause_button':'\\u23f8',\n 'peace_symbol':'\\u262e\\ufe0f',\n 'peach':'\\ud83c\\udf51',\n 'peanuts':'\\ud83e\\udd5c',\n 'pear':'\\ud83c\\udf50',\n 'pen':'\\ud83d\\udd8a',\n 'pencil2':'\\u270f\\ufe0f',\n 'penguin':'\\ud83d\\udc27',\n 'pensive':'\\ud83d\\ude14',\n 'performing_arts':'\\ud83c\\udfad',\n 'persevere':'\\ud83d\\ude23',\n 'person_fencing':'\\ud83e\\udd3a',\n 'pouting_woman':'\\ud83d\\ude4e',\n 'phone':'\\u260e\\ufe0f',\n 'pick':'\\u26cf',\n 'pig':'\\ud83d\\udc37',\n 'pig2':'\\ud83d\\udc16',\n 'pig_nose':'\\ud83d\\udc3d',\n 'pill':'\\ud83d\\udc8a',\n 'pineapple':'\\ud83c\\udf4d',\n 'ping_pong':'\\ud83c\\udfd3',\n 'pisces':'\\u2653\\ufe0f',\n 'pizza':'\\ud83c\\udf55',\n 'place_of_worship':'\\ud83d\\uded0',\n 'plate_with_cutlery':'\\ud83c\\udf7d',\n 'play_or_pause_button':'\\u23ef',\n 'point_down':'\\ud83d\\udc47',\n 'point_left':'\\ud83d\\udc48',\n 'point_right':'\\ud83d\\udc49',\n 'point_up':'\\u261d\\ufe0f',\n 'point_up_2':'\\ud83d\\udc46',\n 'police_car':'\\ud83d\\ude93',\n 'policewoman':'\\ud83d\\udc6e&zwj;\\u2640\\ufe0f',\n 'poodle':'\\ud83d\\udc29',\n 'popcorn':'\\ud83c\\udf7f',\n 'post_office':'\\ud83c\\udfe3',\n 'postal_horn':'\\ud83d\\udcef',\n 'postbox':'\\ud83d\\udcee',\n 'potable_water':'\\ud83d\\udeb0',\n 'potato':'\\ud83e\\udd54',\n 'pouch':'\\ud83d\\udc5d',\n 'poultry_leg':'\\ud83c\\udf57',\n 'pound':'\\ud83d\\udcb7',\n 'rage':'\\ud83d\\ude21',\n 'pouting_cat':'\\ud83d\\ude3e',\n 'pouting_man':'\\ud83d\\ude4e&zwj;\\u2642\\ufe0f',\n 'pray':'\\ud83d\\ude4f',\n 'prayer_beads':'\\ud83d\\udcff',\n 'pregnant_woman':'\\ud83e\\udd30',\n 'previous_track_button':'\\u23ee',\n 'prince':'\\ud83e\\udd34',\n 'princess':'\\ud83d\\udc78',\n 'printer':'\\ud83d\\udda8',\n 'purple_heart':'\\ud83d\\udc9c',\n 'purse':'\\ud83d\\udc5b',\n 'pushpin':'\\ud83d\\udccc',\n 'put_litter_in_its_place':'\\ud83d\\udeae',\n 'question':'\\u2753',\n 'rabbit':'\\ud83d\\udc30',\n 'rabbit2':'\\ud83d\\udc07',\n 'racehorse':'\\ud83d\\udc0e',\n 'racing_car':'\\ud83c\\udfce',\n 'radio':'\\ud83d\\udcfb',\n 'radio_button':'\\ud83d\\udd18',\n 'radioactive':'\\u2622\\ufe0f',\n 'railway_car':'\\ud83d\\ude83',\n 'railway_track':'\\ud83d\\udee4',\n 'rainbow':'\\ud83c\\udf08',\n 'rainbow_flag':'\\ud83c\\udff3\\ufe0f&zwj;\\ud83c\\udf08',\n 'raised_back_of_hand':'\\ud83e\\udd1a',\n 'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n 'raised_hands':'\\ud83d\\ude4c',\n 'raising_hand_woman':'\\ud83d\\ude4b',\n 'raising_hand_man':'\\ud83d\\ude4b&zwj;\\u2642\\ufe0f',\n 'ram':'\\ud83d\\udc0f',\n 'ramen':'\\ud83c\\udf5c',\n 'rat':'\\ud83d\\udc00',\n 'record_button':'\\u23fa',\n 'recycle':'\\u267b\\ufe0f',\n 'red_circle':'\\ud83d\\udd34',\n 'registered':'\\u00ae\\ufe0f',\n 'relaxed':'\\u263a\\ufe0f',\n 'relieved':'\\ud83d\\ude0c',\n 'reminder_ribbon':'\\ud83c\\udf97',\n 'repeat':'\\ud83d\\udd01',\n 'repeat_one':'\\ud83d\\udd02',\n 'rescue_worker_helmet':'\\u26d1',\n 'restroom':'\\ud83d\\udebb',\n 'revolving_hearts':'\\ud83d\\udc9e',\n 'rewind':'\\u23ea',\n 'rhinoceros':'\\ud83e\\udd8f',\n 'ribbon':'\\ud83c\\udf80',\n 'rice':'\\ud83c\\udf5a',\n 'rice_ball':'\\ud83c\\udf59',\n 'rice_cracker':'\\ud83c\\udf58',\n 'rice_scene':'\\ud83c\\udf91',\n 'right_anger_bubble':'\\ud83d\\uddef',\n 'ring':'\\ud83d\\udc8d',\n 'robot':'\\ud83e\\udd16',\n 'rocket':'\\ud83d\\ude80',\n 'rofl':'\\ud83e\\udd23',\n 'roll_eyes':'\\ud83d\\ude44',\n 'roller_coaster':'\\ud83c\\udfa2',\n 'rooster':'\\ud83d\\udc13',\n 'rose':'\\ud83c\\udf39',\n 'rosette':'\\ud83c\\udff5',\n 'rotating_light':'\\ud83d\\udea8',\n 'round_pushpin':'\\ud83d\\udccd',\n 'rowing_man':'\\ud83d\\udea3',\n 'rowing_woman':'\\ud83d\\udea3&zwj;\\u2640\\ufe0f',\n 'rugby_football':'\\ud83c\\udfc9',\n 'running_man':'\\ud83c\\udfc3',\n 'running_shirt_with_sash':'\\ud83c\\udfbd',\n 'running_woman':'\\ud83c\\udfc3&zwj;\\u2640\\ufe0f',\n 'sa':'\\ud83c\\ude02\\ufe0f',\n 'sagittarius':'\\u2650\\ufe0f',\n 'sake':'\\ud83c\\udf76',\n 'sandal':'\\ud83d\\udc61',\n 'santa':'\\ud83c\\udf85',\n 'satellite':'\\ud83d\\udce1',\n 'saxophone':'\\ud83c\\udfb7',\n 'school':'\\ud83c\\udfeb',\n 'school_satchel':'\\ud83c\\udf92',\n 'scissors':'\\u2702\\ufe0f',\n 'scorpion':'\\ud83e\\udd82',\n 'scorpius':'\\u264f\\ufe0f',\n 'scream':'\\ud83d\\ude31',\n 'scream_cat':'\\ud83d\\ude40',\n 'scroll':'\\ud83d\\udcdc',\n 'seat':'\\ud83d\\udcba',\n 'secret':'\\u3299\\ufe0f',\n 'see_no_evil':'\\ud83d\\ude48',\n 'seedling':'\\ud83c\\udf31',\n 'selfie':'\\ud83e\\udd33',\n 'shallow_pan_of_food':'\\ud83e\\udd58',\n 'shamrock':'\\u2618\\ufe0f',\n 'shark':'\\ud83e\\udd88',\n 'shaved_ice':'\\ud83c\\udf67',\n 'sheep':'\\ud83d\\udc11',\n 'shell':'\\ud83d\\udc1a',\n 'shield':'\\ud83d\\udee1',\n 'shinto_shrine':'\\u26e9',\n 'ship':'\\ud83d\\udea2',\n 'shirt':'\\ud83d\\udc55',\n 'shopping':'\\ud83d\\udecd',\n 'shopping_cart':'\\ud83d\\uded2',\n 'shower':'\\ud83d\\udebf',\n 'shrimp':'\\ud83e\\udd90',\n 'signal_strength':'\\ud83d\\udcf6',\n 'six_pointed_star':'\\ud83d\\udd2f',\n 'ski':'\\ud83c\\udfbf',\n 'skier':'\\u26f7',\n 'skull':'\\ud83d\\udc80',\n 'skull_and_crossbones':'\\u2620\\ufe0f',\n 'sleeping':'\\ud83d\\ude34',\n 'sleeping_bed':'\\ud83d\\udecc',\n 'sleepy':'\\ud83d\\ude2a',\n 'slightly_frowning_face':'\\ud83d\\ude41',\n 'slightly_smiling_face':'\\ud83d\\ude42',\n 'slot_machine':'\\ud83c\\udfb0',\n 'small_airplane':'\\ud83d\\udee9',\n 'small_blue_diamond':'\\ud83d\\udd39',\n 'small_orange_diamond':'\\ud83d\\udd38',\n 'small_red_triangle':'\\ud83d\\udd3a',\n 'small_red_triangle_down':'\\ud83d\\udd3b',\n 'smile':'\\ud83d\\ude04',\n 'smile_cat':'\\ud83d\\ude38',\n 'smiley':'\\ud83d\\ude03',\n 'smiley_cat':'\\ud83d\\ude3a',\n 'smiling_imp':'\\ud83d\\ude08',\n 'smirk':'\\ud83d\\ude0f',\n 'smirk_cat':'\\ud83d\\ude3c',\n 'smoking':'\\ud83d\\udeac',\n 'snail':'\\ud83d\\udc0c',\n 'snake':'\\ud83d\\udc0d',\n 'sneezing_face':'\\ud83e\\udd27',\n 'snowboarder':'\\ud83c\\udfc2',\n 'snowflake':'\\u2744\\ufe0f',\n 'snowman':'\\u26c4\\ufe0f',\n 'snowman_with_snow':'\\u2603\\ufe0f',\n 'sob':'\\ud83d\\ude2d',\n 'soccer':'\\u26bd\\ufe0f',\n 'soon':'\\ud83d\\udd1c',\n 'sos':'\\ud83c\\udd98',\n 'sound':'\\ud83d\\udd09',\n 'space_invader':'\\ud83d\\udc7e',\n 'spades':'\\u2660\\ufe0f',\n 'spaghetti':'\\ud83c\\udf5d',\n 'sparkle':'\\u2747\\ufe0f',\n 'sparkler':'\\ud83c\\udf87',\n 'sparkles':'\\u2728',\n 'sparkling_heart':'\\ud83d\\udc96',\n 'speak_no_evil':'\\ud83d\\ude4a',\n 'speaker':'\\ud83d\\udd08',\n 'speaking_head':'\\ud83d\\udde3',\n 'speech_balloon':'\\ud83d\\udcac',\n 'speedboat':'\\ud83d\\udea4',\n 'spider':'\\ud83d\\udd77',\n 'spider_web':'\\ud83d\\udd78',\n 'spiral_calendar':'\\ud83d\\uddd3',\n 'spiral_notepad':'\\ud83d\\uddd2',\n 'spoon':'\\ud83e\\udd44',\n 'squid':'\\ud83e\\udd91',\n 'stadium':'\\ud83c\\udfdf',\n 'star':'\\u2b50\\ufe0f',\n 'star2':'\\ud83c\\udf1f',\n 'star_and_crescent':'\\u262a\\ufe0f',\n 'star_of_david':'\\u2721\\ufe0f',\n 'stars':'\\ud83c\\udf20',\n 'station':'\\ud83d\\ude89',\n 'statue_of_liberty':'\\ud83d\\uddfd',\n 'steam_locomotive':'\\ud83d\\ude82',\n 'stew':'\\ud83c\\udf72',\n 'stop_button':'\\u23f9',\n 'stop_sign':'\\ud83d\\uded1',\n 'stopwatch':'\\u23f1',\n 'straight_ruler':'\\ud83d\\udccf',\n 'strawberry':'\\ud83c\\udf53',\n 'stuck_out_tongue':'\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n 'studio_microphone':'\\ud83c\\udf99',\n 'stuffed_flatbread':'\\ud83e\\udd59',\n 'sun_behind_large_cloud':'\\ud83c\\udf25',\n 'sun_behind_rain_cloud':'\\ud83c\\udf26',\n 'sun_behind_small_cloud':'\\ud83c\\udf24',\n 'sun_with_face':'\\ud83c\\udf1e',\n 'sunflower':'\\ud83c\\udf3b',\n 'sunglasses':'\\ud83d\\ude0e',\n 'sunny':'\\u2600\\ufe0f',\n 'sunrise':'\\ud83c\\udf05',\n 'sunrise_over_mountains':'\\ud83c\\udf04',\n 'surfing_man':'\\ud83c\\udfc4',\n 'surfing_woman':'\\ud83c\\udfc4&zwj;\\u2640\\ufe0f',\n 'sushi':'\\ud83c\\udf63',\n 'suspension_railway':'\\ud83d\\ude9f',\n 'sweat':'\\ud83d\\ude13',\n 'sweat_drops':'\\ud83d\\udca6',\n 'sweat_smile':'\\ud83d\\ude05',\n 'sweet_potato':'\\ud83c\\udf60',\n 'swimming_man':'\\ud83c\\udfca',\n 'swimming_woman':'\\ud83c\\udfca&zwj;\\u2640\\ufe0f',\n 'symbols':'\\ud83d\\udd23',\n 'synagogue':'\\ud83d\\udd4d',\n 'syringe':'\\ud83d\\udc89',\n 'taco':'\\ud83c\\udf2e',\n 'tada':'\\ud83c\\udf89',\n 'tanabata_tree':'\\ud83c\\udf8b',\n 'taurus':'\\u2649\\ufe0f',\n 'taxi':'\\ud83d\\ude95',\n 'tea':'\\ud83c\\udf75',\n 'telephone_receiver':'\\ud83d\\udcde',\n 'telescope':'\\ud83d\\udd2d',\n 'tennis':'\\ud83c\\udfbe',\n 'tent':'\\u26fa\\ufe0f',\n 'thermometer':'\\ud83c\\udf21',\n 'thinking':'\\ud83e\\udd14',\n 'thought_balloon':'\\ud83d\\udcad',\n 'ticket':'\\ud83c\\udfab',\n 'tickets':'\\ud83c\\udf9f',\n 'tiger':'\\ud83d\\udc2f',\n 'tiger2':'\\ud83d\\udc05',\n 'timer_clock':'\\u23f2',\n 'tipping_hand_man':'\\ud83d\\udc81&zwj;\\u2642\\ufe0f',\n 'tired_face':'\\ud83d\\ude2b',\n 'tm':'\\u2122\\ufe0f',\n 'toilet':'\\ud83d\\udebd',\n 'tokyo_tower':'\\ud83d\\uddfc',\n 'tomato':'\\ud83c\\udf45',\n 'tongue':'\\ud83d\\udc45',\n 'top':'\\ud83d\\udd1d',\n 'tophat':'\\ud83c\\udfa9',\n 'tornado':'\\ud83c\\udf2a',\n 'trackball':'\\ud83d\\uddb2',\n 'tractor':'\\ud83d\\ude9c',\n 'traffic_light':'\\ud83d\\udea5',\n 'train':'\\ud83d\\ude8b',\n 'train2':'\\ud83d\\ude86',\n 'tram':'\\ud83d\\ude8a',\n 'triangular_flag_on_post':'\\ud83d\\udea9',\n 'triangular_ruler':'\\ud83d\\udcd0',\n 'trident':'\\ud83d\\udd31',\n 'triumph':'\\ud83d\\ude24',\n 'trolleybus':'\\ud83d\\ude8e',\n 'trophy':'\\ud83c\\udfc6',\n 'tropical_drink':'\\ud83c\\udf79',\n 'tropical_fish':'\\ud83d\\udc20',\n 'truck':'\\ud83d\\ude9a',\n 'trumpet':'\\ud83c\\udfba',\n 'tulip':'\\ud83c\\udf37',\n 'tumbler_glass':'\\ud83e\\udd43',\n 'turkey':'\\ud83e\\udd83',\n 'turtle':'\\ud83d\\udc22',\n 'tv':'\\ud83d\\udcfa',\n 'twisted_rightwards_arrows':'\\ud83d\\udd00',\n 'two_hearts':'\\ud83d\\udc95',\n 'two_men_holding_hands':'\\ud83d\\udc6c',\n 'two_women_holding_hands':'\\ud83d\\udc6d',\n 'u5272':'\\ud83c\\ude39',\n 'u5408':'\\ud83c\\ude34',\n 'u55b6':'\\ud83c\\ude3a',\n 'u6307':'\\ud83c\\ude2f\\ufe0f',\n 'u6708':'\\ud83c\\ude37\\ufe0f',\n 'u6709':'\\ud83c\\ude36',\n 'u6e80':'\\ud83c\\ude35',\n 'u7121':'\\ud83c\\ude1a\\ufe0f',\n 'u7533':'\\ud83c\\ude38',\n 'u7981':'\\ud83c\\ude32',\n 'u7a7a':'\\ud83c\\ude33',\n 'umbrella':'\\u2614\\ufe0f',\n 'unamused':'\\ud83d\\ude12',\n 'underage':'\\ud83d\\udd1e',\n 'unicorn':'\\ud83e\\udd84',\n 'unlock':'\\ud83d\\udd13',\n 'up':'\\ud83c\\udd99',\n 'upside_down_face':'\\ud83d\\ude43',\n 'v':'\\u270c\\ufe0f',\n 'vertical_traffic_light':'\\ud83d\\udea6',\n 'vhs':'\\ud83d\\udcfc',\n 'vibration_mode':'\\ud83d\\udcf3',\n 'video_camera':'\\ud83d\\udcf9',\n 'video_game':'\\ud83c\\udfae',\n 'violin':'\\ud83c\\udfbb',\n 'virgo':'\\u264d\\ufe0f',\n 'volcano':'\\ud83c\\udf0b',\n 'volleyball':'\\ud83c\\udfd0',\n 'vs':'\\ud83c\\udd9a',\n 'vulcan_salute':'\\ud83d\\udd96',\n 'walking_man':'\\ud83d\\udeb6',\n 'walking_woman':'\\ud83d\\udeb6&zwj;\\u2640\\ufe0f',\n 'waning_crescent_moon':'\\ud83c\\udf18',\n 'waning_gibbous_moon':'\\ud83c\\udf16',\n 'warning':'\\u26a0\\ufe0f',\n 'wastebasket':'\\ud83d\\uddd1',\n 'watch':'\\u231a\\ufe0f',\n 'water_buffalo':'\\ud83d\\udc03',\n 'watermelon':'\\ud83c\\udf49',\n 'wave':'\\ud83d\\udc4b',\n 'wavy_dash':'\\u3030\\ufe0f',\n 'waxing_crescent_moon':'\\ud83c\\udf12',\n 'wc':'\\ud83d\\udebe',\n 'weary':'\\ud83d\\ude29',\n 'wedding':'\\ud83d\\udc92',\n 'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f&zwj;\\u2640\\ufe0f',\n 'whale':'\\ud83d\\udc33',\n 'whale2':'\\ud83d\\udc0b',\n 'wheel_of_dharma':'\\u2638\\ufe0f',\n 'wheelchair':'\\u267f\\ufe0f',\n 'white_check_mark':'\\u2705',\n 'white_circle':'\\u26aa\\ufe0f',\n 'white_flag':'\\ud83c\\udff3\\ufe0f',\n 'white_flower':'\\ud83d\\udcae',\n 'white_large_square':'\\u2b1c\\ufe0f',\n 'white_medium_small_square':'\\u25fd\\ufe0f',\n 'white_medium_square':'\\u25fb\\ufe0f',\n 'white_small_square':'\\u25ab\\ufe0f',\n 'white_square_button':'\\ud83d\\udd33',\n 'wilted_flower':'\\ud83e\\udd40',\n 'wind_chime':'\\ud83c\\udf90',\n 'wind_face':'\\ud83c\\udf2c',\n 'wine_glass':'\\ud83c\\udf77',\n 'wink':'\\ud83d\\ude09',\n 'wolf':'\\ud83d\\udc3a',\n 'woman':'\\ud83d\\udc69',\n 'woman_artist':'\\ud83d\\udc69&zwj;\\ud83c\\udfa8',\n 'woman_astronaut':'\\ud83d\\udc69&zwj;\\ud83d\\ude80',\n 'woman_cartwheeling':'\\ud83e\\udd38&zwj;\\u2640\\ufe0f',\n 'woman_cook':'\\ud83d\\udc69&zwj;\\ud83c\\udf73',\n 'woman_facepalming':'\\ud83e\\udd26&zwj;\\u2640\\ufe0f',\n 'woman_factory_worker':'\\ud83d\\udc69&zwj;\\ud83c\\udfed',\n 'woman_farmer':'\\ud83d\\udc69&zwj;\\ud83c\\udf3e',\n 'woman_firefighter':'\\ud83d\\udc69&zwj;\\ud83d\\ude92',\n 'woman_health_worker':'\\ud83d\\udc69&zwj;\\u2695\\ufe0f',\n 'woman_judge':'\\ud83d\\udc69&zwj;\\u2696\\ufe0f',\n 'woman_juggling':'\\ud83e\\udd39&zwj;\\u2640\\ufe0f',\n 'woman_mechanic':'\\ud83d\\udc69&zwj;\\ud83d\\udd27',\n 'woman_office_worker':'\\ud83d\\udc69&zwj;\\ud83d\\udcbc',\n 'woman_pilot':'\\ud83d\\udc69&zwj;\\u2708\\ufe0f',\n 'woman_playing_handball':'\\ud83e\\udd3e&zwj;\\u2640\\ufe0f',\n 'woman_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2640\\ufe0f',\n 'woman_scientist':'\\ud83d\\udc69&zwj;\\ud83d\\udd2c',\n 'woman_shrugging':'\\ud83e\\udd37&zwj;\\u2640\\ufe0f',\n 'woman_singer':'\\ud83d\\udc69&zwj;\\ud83c\\udfa4',\n 'woman_student':'\\ud83d\\udc69&zwj;\\ud83c\\udf93',\n 'woman_teacher':'\\ud83d\\udc69&zwj;\\ud83c\\udfeb',\n 'woman_technologist':'\\ud83d\\udc69&zwj;\\ud83d\\udcbb',\n 'woman_with_turban':'\\ud83d\\udc73&zwj;\\u2640\\ufe0f',\n 'womans_clothes':'\\ud83d\\udc5a',\n 'womans_hat':'\\ud83d\\udc52',\n 'women_wrestling':'\\ud83e\\udd3c&zwj;\\u2640\\ufe0f',\n 'womens':'\\ud83d\\udeba',\n 'world_map':'\\ud83d\\uddfa',\n 'worried':'\\ud83d\\ude1f',\n 'wrench':'\\ud83d\\udd27',\n 'writing_hand':'\\u270d\\ufe0f',\n 'x':'\\u274c',\n 'yellow_heart':'\\ud83d\\udc9b',\n 'yen':'\\ud83d\\udcb4',\n 'yin_yang':'\\u262f\\ufe0f',\n 'yum':'\\ud83d\\ude0b',\n 'zap':'\\u26a1\\ufe0f',\n 'zipper_mouth_face':'\\ud83e\\udd10',\n 'zzz':'\\ud83d\\udca4',\n\n /* special emojis :P */\n 'octocat': '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n 'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n\r\n/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor () {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension (ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading (ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen (name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText (text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch (evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, '&nbsp;');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: <em>this is</em> <strong>sparta</strong>\n src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean (node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags (doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions.splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++ii) {\n if (outputModifiers[ii] === ext) {\n outputModifiers.splice(ii, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n};\n\r\n/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '<a href=\"' + url + '\"';\n\n if (title !== '' && title !== null) {\n title = title.replace(/\"/g, '&quot;');\n //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n // escaped _\n result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n\n result += '>' + linkText + '</a>';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n\r\n// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n replaceLink = function (options) {\n 'use strict';\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n };\n },\n\n replaceMail = function (options, globals) {\n 'use strict';\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '<a href=\"' + href + '\">' + mail + '</a>';\n };\n };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n // <p> tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n});\n\r\nshowdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with <pre> content, so we need to fix that:\n bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n var pre = m1;\n // attacklab: hack around Konqueror 3.5.4 bug:\n pre = pre.replace(/^ /mg, '¨0');\n pre = pre.replace(/¨0/g, '');\n return pre;\n });\n\n return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n text = text.replace(pattern, function (wholeMatch, m1, m2) {\n var codeblock = m1,\n nextChar = m2,\n end = '\\n';\n\n codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n if (options.omitExtraWLInCodeBlocks) {\n end = '';\n }\n\n codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n});\n\r\n/**\n *\n * * Backtick quotes are used for <code></code> spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof (text) === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '<code>' + c + '</code>';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n }\n );\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '<!DOCTYPE HTML>\\n',\n title = '',\n charset = '<meta charset=\"utf-8\">\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"utf-8\">';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '<title>' + globals.metadata.parsed.title + '</title>\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n } else {\n charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n break;\n\n default:\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n }\n }\n }\n\n text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n if (!options.ellipsis) {\n return text;\n }\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&amp;');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '&lt;');\n\n // Encode <\n text = text.replace(/</g, '&lt;');\n\n // Encode >\n text = text.replace(/>/g, '&gt;');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&amp;')\n // Do the angle bracket song and dance:\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n\r\nshowdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked <code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n\r\nshowdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '&lt;' + inside + '&gt;';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '</' + blockTags[i] + '>';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}<!--', '-->', 'gm');\n\n // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan (html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n // encode html entities\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n };\n\n // Hash <pre><code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId (m) {\n var title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&amp;/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&amp;/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '&quot;')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n if (title && showdown.helper.isString(title)) {\n title = title\n .replace(/\"/g, '&quot;')\n //title = showdown.helper.escapeCharacters(title, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n if (width && height) {\n width = (width === '*') ? 'auto' : width;\n height = (height === '*') ? 'auto' : height;\n\n result += ' width=\"' + width + '\"';\n result += ' height=\"' + height + '\"';\n }\n\n result += ' />';\n\n return result;\n }\n\n // First, handle reference-style labeled images: ![alt text][id]\n text = text.replace(referenceRegExp, writeImageTag);\n\n // Next, handle inline images: ![alt text](url =<width>x<height> \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside (txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong><em>', '</em></strong>');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong>', '</strong>');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside (txt, '<em>', '</em>');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n // Now parse asterisks\n if (options.literalMidWordAsterisks) {\n text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong><em>', '</em></strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong>', '</strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<em>', '</em>');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n 'use strict';\n\n /**\n * Process the contents of a single ordered or unordered list, splitting it\n * into individual list items.\n * @param {string} listStr\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function processListItems (listStr, trimTrailing) {\n // The $g_list_level global keeps track of when we're inside a list.\n // Each time we enter a list, we increment it; when we leave a list,\n // we decrement. If it's zero, we're not in a list anymore.\n //\n // We do this because when we're not inside a list, we want to treat\n // something like this:\n //\n // I recommend upgrading to version\n // 8. Oops, now this line is treated\n // as a sub-list.\n //\n // As a single paragraph, despite the fact that the second line starts\n // with a digit-period-space sequence.\n //\n // Whereas when we're inside a list (or sub-list), that line will be\n // treated as the start of a sub-list. What a kludge, huh? This is\n // an aspect of Markdown's syntax that's hard to parse perfectly\n // without resorting to mind-reading. Perhaps the solution is to\n // change the syntax rules such that sub-lists must start with a\n // starting cardinal number; e.g. \"1.\" or \"a.\".\n globals.gListLevel++;\n\n // trim trailing blank lines:\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n // attacklab: add sentinel to emulate \\z\n listStr += '¨0';\n\n var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n // which is a syntax breaking change\n // activating this option reverts to old behavior\n if (options.disableForced4SpacesIndentedSublists) {\n rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n }\n\n listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n checked = (checked && checked.trim() !== '');\n\n var item = showdown.subParser('outdent')(m4, options, globals),\n bulletStyle = '';\n\n // Support for github tasklists\n if (taskbtn && options.tasklists) {\n bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n if (checked) {\n otp += ' checked';\n }\n otp += '>';\n return otp;\n });\n }\n\n // ISSUE #312\n // This input: - - - a\n // causes trouble to the parser, since it interprets it as:\n // <ul><li><li><li>a</li></li></li></ul>\n // instead of:\n // <ul><li>- - a</li></ul>\n // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n return '¨A' + wm2;\n });\n\n // m1 - Leading line or\n // Has a double return (multi paragraph) or\n // Has sublist\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\n item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n item = showdown.subParser('blockGamut')(item, options, globals);\n } else {\n // Recursion for sub-lists:\n item = showdown.subParser('lists')(item, options, globals);\n item = item.replace(/\\n$/, ''); // chomp(item)\n item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n // Colapse double linebreaks\n item = item.replace(/\\n\\n+/g, '\\n\\n');\n if (isParagraphed) {\n item = showdown.subParser('paragraphs')(item, options, globals);\n } else {\n item = showdown.subParser('spanGamut')(item, options, globals);\n }\n }\n\n // now we need to remove the marker (¨A)\n item = item.replace('¨A', '');\n // we can finally wrap the line in list item tags\n item = '<li' + bulletStyle + '>' + item + '</li>\\n';\n\n return item;\n });\n\n // attacklab: strip sentinel\n listStr = listStr.replace(/¨0/g, '');\n\n globals.gListLevel--;\n\n if (trimTrailing) {\n listStr = listStr.replace(/\\s+$/, '');\n }\n\n return listStr;\n }\n\n function styleStartNumber (list, listType) {\n // check if ol and starts by a number different than 1\n if (listType === 'ol') {\n var res = list.match(/^ *(\\d+)\\./);\n if (res && res[1] !== '1') {\n return ' start=\"' + res[1] + '\"';\n }\n }\n return '';\n }\n\n /**\n * Check and parse consecutive lists (better fix for issue #142)\n * @param {string} list\n * @param {string} listType\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function parseConsecutiveLists (list, listType, trimTrailing) {\n // check if we caught 2 or more consecutive lists by mistake\n // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n result = '';\n\n if (list.search(counterRxg) !== -1) {\n (function parseCL (txt) {\n var pos = txt.search(counterRxg),\n style = styleStartNumber(list, listType);\n if (pos !== -1) {\n // slice\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n';\n\n // invert counterType and listType\n listType = (listType === 'ul') ? 'ol' : 'ul';\n counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n //recurse\n parseCL(txt.slice(pos));\n } else {\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n';\n }\n\n return result;\n }\n\n /** Start of list parsing **/\n text = globals.converter._dispatch('lists.before', text, options, globals);\n // add sentinel to hack around khtml/safari bug:\n // http://bugs.webkit.org/show_bug.cgi?id=11231\n text += '¨0';\n\n if (globals.gListLevel) {\n text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, list, m2) {\n var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, true);\n }\n );\n } else {\n text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, m1, list, m3) {\n var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, false);\n }\n );\n }\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n text = globals.converter._dispatch('lists.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n 'use strict';\n\n if (!options.metadata) {\n return text;\n }\n\n text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n function parseMetadataContents (content) {\n // raw is raw so it's not changed in any way\n globals.metadata.raw = content;\n\n // escape chars forbidden in html attributes\n // double quotes\n content = content\n // ampersand first\n .replace(/&/g, '&amp;')\n // double quotes\n .replace(/\"/g, '&quot;');\n\n content = content.replace(/\\n {4}/g, ' ');\n content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n globals.metadata.parsed[key] = value;\n return '';\n });\n }\n\n text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n if (format) {\n globals.metadata.format = format;\n }\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/¨M/g, '');\n\n text = globals.converter._dispatch('metadata.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n // attacklab: clean up hack\n text = text.replace(/¨0/g, '');\n\n text = globals.converter._dispatch('outdent.after', text, options, globals);\n return text;\n});\n\r\n/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n\n var grafs = text.split(/\\n{2,}/g),\n grafsOut = [],\n end = grafs.length; // Wrap <p> tags\n\n for (var i = 0; i < end; i++) {\n var str = grafs[i];\n // if this is an HTML marker, copy it\n if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n grafsOut.push(str);\n\n // test for presence of characters to prevent empty lines being parsed\n // as paragraphs (resulting in undesired extra empty paragraphs)\n } else if (str.search(/\\S/) >= 0) {\n str = showdown.subParser('spanGamut')(str, options, globals);\n str = str.replace(/^([ \\t]*)/g, '<p>');\n str += '</p>';\n grafsOut.push(str);\n }\n }\n\n /** Unhashify HTML blocks */\n end = grafsOut.length;\n for (i = 0; i < end; i++) {\n var blockText = '',\n grafsOutIt = grafsOut[i],\n codeFlag = false;\n // if this is a marker for an html block...\n // use RegExp.test instead of string.search because of QML bug\n while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n var delim = RegExp.$1,\n num = RegExp.$2;\n\n if (delim === 'K') {\n blockText = globals.gHtmlBlocks[num];\n } else {\n // we need to check if ghBlock is a false positive\n if (codeFlag) {\n // use encoded version of all text\n blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n } else {\n blockText = globals.ghCodeBlocks[num].codeblock;\n }\n }\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n // Check if grafsOutIt is a pre->code\n if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n codeFlag = true;\n }\n }\n grafsOut[i] = grafsOutIt;\n }\n text = grafsOut.join('\\n');\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n\r\n/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n 'use strict';\n\n if (ext.filter) {\n text = ext.filter(text, globals.converter, options);\n\n } else if (ext.regex) {\n // TODO remove this when old extension loading mechanism is deprecated\n var re = ext.regex;\n if (!(re instanceof RegExp)) {\n re = new RegExp(re, 'g');\n }\n text = text.replace(re, ext.replace);\n }\n\n return text;\n});\n\r\n/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n text = showdown.subParser('codeSpans')(text, options, globals);\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n // Process anchor and image tags. Images must come first,\n // because ![foo][f] looks like an anchor.\n text = showdown.subParser('images')(text, options, globals);\n text = showdown.subParser('anchors')(text, options, globals);\n\n // Make links out of things like `<http://example.com/>`\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this](<url>).\n text = showdown.subParser('autoLinks')(text, options, globals);\n text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n text = showdown.subParser('emoji')(text, options, globals);\n text = showdown.subParser('underline')(text, options, globals);\n text = showdown.subParser('italicsAndBold')(text, options, globals);\n text = showdown.subParser('strikethrough')(text, options, globals);\n text = showdown.subParser('ellipsis')(text, options, globals);\n\n // we need to hash HTML tags inside spans\n text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n // now we encode amps and angles\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n // Do hard breaks\n if (options.simpleLineBreaks) {\n // GFM style hard breaks\n // only add line breaks if the text does not contain a block (special case for lists)\n if (!/\\n\\n¨K/.test(text)) {\n text = text.replace(/\\n+/g, '<br />\\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '<br />\\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('strikethrough', function (text, options, globals) {\n 'use strict';\n\n function parseInside (txt) {\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n return '<del>' + txt + '</del>';\n }\n\n if (options.strikethrough) {\n text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n }\n\n return text;\n});\n\r\n/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?([^>\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n base64Regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n\n // if there aren't two instances of linkId it must not be a reference link so back out\n linkId = linkId.toLowerCase();\n if (text.toLowerCase().split(linkId).length - 1 < 2) {\n return wholeMatch;\n }\n if (url.match(/^data:.+?\\/.+?;base64,/)) {\n // remove newlines\n globals.gUrls[linkId] = url.replace(/\\s/g, '');\n } else {\n globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive\n }\n\n if (blankLines) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return blankLines + title;\n\n } else {\n if (title) {\n globals.gTitles[linkId] = title.replace(/\"|'/g, '&quot;');\n }\n if (options.parseImgDimensions && width && height) {\n globals.gDimensions[linkId] = {\n width: width,\n height: height\n };\n }\n }\n // Completely remove the definition from the text\n return '';\n };\n\n // first we try to find base64 link references\n text = text.replace(base64Regex, replaceFunc);\n\n text = text.replace(regex, replaceFunc);\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return text;\n});\n\r\nshowdown.subParser('tables', function (text, options, globals) {\n 'use strict';\n\n if (!options.tables) {\n return text;\n }\n\n var tableRgx = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n function parseStyles (sLine) {\n if (/^:[ \\t]*--*$/.test(sLine)) {\n return ' style=\"text-align:left;\"';\n } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n return ' style=\"text-align:right;\"';\n } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n return ' style=\"text-align:center;\"';\n } else {\n return '';\n }\n }\n\n function parseHeaders (header, style) {\n var id = '';\n header = header.trim();\n // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n if (options.tablesHeaderId || options.tableHeaderId) {\n id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n }\n header = showdown.subParser('spanGamut')(header, options, globals);\n\n return '<th' + id + style + '>' + header + '</th>\\n';\n }\n\n function parseCells (cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '<td' + style + '>' + subText + '</td>\\n';\n }\n\n function buildTable (headers, cells) {\n var tb = '<table>\\n<thead>\\n<tr>\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '<tr>\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '</tr>\\n';\n }\n tb += '</tbody>\\n</table>\\n';\n return tb;\n }\n\n function parseTable (rawTable) {\n var i, tableLines = rawTable.split('\\n');\n\n for (i = 0; i < tableLines.length; ++i) {\n // strip wrong first and last column if wrapped tables are used\n if (/^ {0,3}\\|/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n }\n if (/\\|[ \\t]*$/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n }\n // parse code spans first, but we only support one line code spans\n tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n }\n\n var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n rawCells = [],\n headers = [],\n styles = [],\n cells = [];\n\n tableLines.shift();\n tableLines.shift();\n\n for (i = 0; i < tableLines.length; ++i) {\n if (tableLines[i].trim() === '') {\n continue;\n }\n rawCells.push(\n tableLines[i]\n .split('|')\n .map(function (s) {\n return s.trim();\n })\n );\n }\n\n if (rawHeaders.length < rawStyles.length) {\n return rawTable;\n }\n\n for (i = 0; i < rawStyles.length; ++i) {\n styles.push(parseStyles(rawStyles[i]));\n }\n\n for (i = 0; i < rawHeaders.length; ++i) {\n if (showdown.helper.isUndefined(styles[i])) {\n styles[i] = '';\n }\n headers.push(parseHeaders(rawHeaders[i], styles[i]));\n }\n\n for (i = 0; i < rawCells.length; ++i) {\n var row = [];\n for (var ii = 0; ii < headers.length; ++ii) {\n if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n }\n row.push(parseCells(rawCells[i][ii], styles[ii]));\n }\n cells.push(row);\n }\n\n return buildTable(headers, cells);\n }\n\n text = globals.converter._dispatch('tables.before', text, options, globals);\n\n // find escaped pipe characters\n text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n // parse multi column tables\n text = text.replace(tableRgx, parseTable);\n\n // parse one column tables\n text = text.replace(singeColTblRgx, parseTable);\n\n text = globals.converter._dispatch('tables.after', text, options, globals);\n\n return text;\n});\n\r\nshowdown.subParser('underline', function (text, options, globals) {\n 'use strict';\n\n if (!options.underline) {\n return text;\n }\n\n text = globals.converter._dispatch('underline.before', text, options, globals);\n\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n }\n\n // escape remaining underscores to prevent them being parsed by italic and bold\n text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('underline.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n var charCodeToReplace = parseInt(m1);\n return String.fromCharCode(charCodeToReplace);\n });\n\n text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n if (innerTxt === '') {\n continue;\n }\n txt += innerTxt;\n }\n }\n // cleanup\n txt = txt.trim();\n txt = '> ' + txt.split('\\n').join('\\n> ');\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n 'use strict';\n\n var lang = node.getAttribute('language'),\n num = node.getAttribute('precodenum');\n return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n\r\nshowdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n});\n\r\nshowdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '*';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '*';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n 'use strict';\n\n var headerMark = new Array(headerLevel + 1).join('#'),\n txt = '';\n\n if (node.hasChildNodes()) {\n txt = headerMark + ' ';\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n});\n\r\nshowdown.subParser('makeMarkdown.image', function (node) {\n 'use strict';\n\n var txt = '';\n if (node.hasAttribute('src')) {\n txt += '![' + node.getAttribute('alt') + '](';\n txt += '<' + node.getAttribute('src') + '>';\n if (node.hasAttribute('width') && node.hasAttribute('height')) {\n txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n }\n\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.links', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes() && node.hasAttribute('href')) {\n var children = node.childNodes,\n childrenLength = children.length;\n txt = '[';\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '](';\n txt += '<' + node.getAttribute('href') + '>';\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.list', function (node, globals, type) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var listItems = node.childNodes,\n listItemsLenght = listItems.length,\n listNum = node.getAttribute('start') || 1;\n\n for (var i = 0; i < listItemsLenght; ++i) {\n if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n continue;\n }\n\n // define the bullet to use in list\n var bullet = '';\n if (type === 'ol') {\n bullet = listNum.toString() + '. ';\n } else {\n bullet = '- ';\n }\n\n // parse list item\n txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n ++listNum;\n }\n\n // add comment at the end to prevent consecutive lists to be parsed as one\n txt += '\\n<!-- -->\\n';\n return txt.trim();\n});\n\r\nshowdown.subParser('makeMarkdown.listItem', function (node, globals) {\n 'use strict';\n\n var listItemTxt = '';\n\n var children = node.childNodes,\n childrenLenght = children.length;\n\n for (var i = 0; i < childrenLenght; ++i) {\n listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n // if it's only one liner, we need to add a newline at the end\n if (!/\\n$/.test(listItemTxt)) {\n listItemTxt += '\\n';\n } else {\n // it's multiparagraph, so we need to indent\n listItemTxt = listItemTxt\n .split('\\n')\n .join('\\n ')\n .replace(/^ {4}$/gm, '')\n .replace(/\\n\\n+/g, '\\n\\n');\n }\n\n return listItemTxt;\n});\n\r\n\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n 'use strict';\n\n spansOnly = spansOnly || false;\n\n var txt = '';\n\n // edge case of text without wrapper paragraph\n if (node.nodeType === 3) {\n return showdown.subParser('makeMarkdown.txt')(node, globals);\n }\n\n // HTML comment\n if (node.nodeType === 8) {\n return '<!--' + node.data + '-->\\n\\n';\n }\n\n // process only node elements\n if (node.nodeType !== 1) {\n return '';\n }\n\n var tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n\n //\n // BLOCKS\n //\n case 'h1':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n break;\n case 'h2':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n break;\n case 'h3':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n break;\n case 'h4':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n break;\n case 'h5':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n break;\n case 'h6':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n break;\n\n case 'p':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n break;\n\n case 'blockquote':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n break;\n\n case 'hr':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n break;\n\n case 'ol':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n break;\n\n case 'ul':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n break;\n\n case 'precode':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n break;\n\n case 'pre':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n break;\n\n case 'table':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n break;\n\n //\n // SPANS\n //\n case 'code':\n txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n break;\n\n case 'em':\n case 'i':\n txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n break;\n\n case 'strong':\n case 'b':\n txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n break;\n\n case 'del':\n txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n break;\n\n case 'a':\n txt = showdown.subParser('makeMarkdown.links')(node, globals);\n break;\n\n case 'img':\n txt = showdown.subParser('makeMarkdown.image')(node, globals);\n break;\n\n default:\n txt = node.outerHTML + '\\n\\n';\n }\n\n // common normalization\n // TODO eventually\n\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n\n // some text normalization\n txt = txt.trim();\n\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '<pre>' + globals.preList[num] + '</pre>';\n});\n\r\nshowdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '~~';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '~~';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.strong', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '**';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '**';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.table', function (node, globals) {\n 'use strict';\n\n var txt = '',\n tableArray = [[], []],\n headings = node.querySelectorAll('thead>tr>th'),\n rows = node.querySelectorAll('tbody>tr'),\n i, ii;\n for (i = 0; i < headings.length; ++i) {\n var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n allign = '---';\n\n if (headings[i].hasAttribute('style')) {\n var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n switch (style) {\n case 'text-align:left;':\n allign = ':---';\n break;\n case 'text-align:right;':\n allign = '---:';\n break;\n case 'text-align:center;':\n allign = ':---:';\n break;\n }\n }\n tableArray[0][i] = headContent.trim();\n tableArray[1][i] = allign;\n }\n\n for (i = 0; i < rows.length; ++i) {\n var r = tableArray.push([]) - 1,\n cols = rows[i].getElementsByTagName('td');\n\n for (ii = 0; ii < headings.length; ++ii) {\n var cellContent = ' ';\n if (typeof cols[ii] !== 'undefined') {\n cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n }\n tableArray[r].push(cellContent);\n }\n }\n\n var cellSpacesCount = 3;\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n var strLen = tableArray[i][ii].length;\n if (strLen > cellSpacesCount) {\n cellSpacesCount = strLen;\n }\n }\n }\n\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n if (i === 1) {\n if (tableArray[i][ii].slice(-1) === ':') {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n }\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n }\n }\n txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n }\n\n return txt.trim();\n});\n\r\nshowdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n }\n return txt.trim();\n});\n\r\nshowdown.subParser('makeMarkdown.txt', function (node) {\n 'use strict';\n\n var txt = node.nodeValue;\n\n // multiple spaces are collapsed\n txt = txt.replace(/ +/g, ' ');\n\n // replace the custom ¨NBSP; with a space\n txt = txt.replace(/¨NBSP;/g, ' ');\n\n // \", <, > and & should replace escaped html entities\n txt = showdown.helper.unescapeHTMLEntities(txt);\n\n // escape markdown magic characters\n // emphasis, strong and strikethrough - can appear everywhere\n // we also escape pipe (|) because of tables\n // and escape ` because of code blocks and spans\n txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n // escape > because of blockquotes\n txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n // hash character, only troublesome at the beginning of a line because of headers\n txt = txt.replace(/^#/gm, '\\\\#');\n\n // horizontal rules\n txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n // images and links, ] followed by ( is problematic, so we escape it\n txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n // reference URIs must also be escaped\n txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n return txt;\n});\n\r\nvar root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n define(function () {\n 'use strict';\n return showdown;\n });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n module.exports = showdown;\n\n// Regular Browser loader\n} else {\n root.showdown = showdown;\n}\n}).call(this);\r\n\n//# sourceMappingURL=showdown.js.map\r\n","export const mentioningRegex = /@(\\d*|channel|editors):\\((.*?)\\)/;\nexport const extraMentioning = [\"channel\", \"editors\"];\n","import showdown from \"showdown\";\nimport { extraMentioning, mentioningRegex } from \"./mentioningUtils\";\n\nconst mentioningRegexCaseInsensitive = new RegExp(mentioningRegex, \"i\");\nconst mentioningRegexGroupCaseInsensitive = new RegExp(mentioningRegex, \"gi\");\n\nlet converter;\nconst customRules = {\n color: {\n type: \"lang\",\n regex: /\\((.*?)\\)\\[(rgb\\((?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]))\\))\\]/gi,\n replace: (s, val) => {\n const color = s\n .match(\n /\\[(rgb\\((?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]))\\))\\]/gi\n )[0]\n .replace(\"[\", \"\")\n .replace(\"]\", \"\");\n return `<span style=\"color:${color}\">${val}</span>`;\n },\n },\n mention: {\n type: \"lang\",\n regex: mentioningRegexGroupCaseInsensitive,\n replace: (s) => {\n const r = s.match(mentioningRegexCaseInsensitive);\n const id = r && r.length > 1 && r[1];\n const name = r && r.length > 2 && r[2];\n if (\n extraMentioning.find(\n (mentioning) => mentioning.toLowerCase() === String(id).toLowerCase()\n )\n ) {\n return `<a class=\"mention extraMention\" data-user-id=\"${id}\">@${name}</a>`;\n }\n return `<a class=\"mention\" data-user-id=\"${id}\">@${name}</a>`;\n },\n },\n userMentioTag: {\n type: \"lang\",\n regex: /<user-mentio[^>]*>(.+?)<\\/user-mentio>/gi,\n replace: (s) => {\n const r = s.match(/<user-mentio[^>]*>(.+?)<\\/user-mentio>/);\n const attr = s.match(/data-user-id=[\"']([^\"]+)[\"']/);\n const name = r && r.length > 1 && r[1];\n const id = attr && attr.length > 1 && attr[1];\n return `<a class=\"mention\" data-user-id=\"${id}\">${name}</a>`;\n },\n },\n};\n\nfunction getConverter() {\n if (converter) return converter;\n\n showdown.extension(\"color\", customRules.color);\n showdown.extension(\"mention\", customRules.mention);\n showdown.extension(\"usermentiotag\", customRules.userMentioTag);\n\n converter = new showdown.Converter({\n extensions: [\"color\", \"mention\", \"usermentiotag\"],\n });\n converter.setOption(\"strikethrough\", true); // <del>\n converter.setOption(\"tables\", true); // <table>\n converter.setOption(\"openLinksInNewWindow\", true);\n converter.setOption(\"disableForced4SpacesIndentedSublists\", true);\n\n return converter;\n}\n\nexport default getConverter();\n","import xss from \"xss\";\nimport linkifyHtml from \"linkify-html\";\nimport { decode as decodeHtmlEntities } from \"html-entities\";\n// @ts-ignore no types available\nimport { fixEmojioneBug, shortToUnicode } from \"@happeouikit/emojis\";\nimport { MONOSPACE_FONT_URL, safeTagsAndAttributes } from \"./constants\";\nimport htmlConverter from \"./htmlConverter\";\nimport { extraMentioning, mentioningRegex } from \"./mentioningUtils\";\n\nconst mentioningRegexGroupCaseInsensitive = new RegExp(mentioningRegex, \"gi\");\nconst mentioningHtmlRegexGroupCaseInsensitive = new RegExp(\n /<user-mentio[^>]*data-user-id=[\"']([^\"]+)[\"'][^>]*>(?:@|(?:&#64;))(.+?)<\\/user-mentio>/,\n \"gi\"\n);\n\nconst processMatch = (_: any, id: string, name: string): string => {\n if (\n extraMentioning.find(\n (mentioning) => mentioning.toLowerCase() === String(id).toLowerCase()\n )\n ) {\n return `<a class=\"mention extraMention\" data-user-id=\"${id}\">@${name}</a>`;\n }\n return `<a class=\"mention\" data-user-id=\"${id}\">@${name}</a>`;\n};\n\nconst processMentions = (str = \"\") =>\n str\n .replace(mentioningRegexGroupCaseInsensitive, processMatch)\n .replace(mentioningHtmlRegexGroupCaseInsensitive, processMatch);\n\n/**\n * @name toSafeText\n * @description Returns filtered text with filterXSS library\n * @author Antero Hanhirova\n * @param {String} - Text to whitelist\n * @returns {String}\n */\nconst toSafeText = (text = \"\") => {\n return xss(text, {\n whiteList: safeTagsAndAttributes,\n css: {\n whiteList: {\n // @ts-ignore method not found\n ...xss.getDefaultCSSWhiteList(),\n \"vertical-align\": true,\n },\n },\n stripIgnoreTag: true,\n })\n .replace(/&nbsp;/g, \" \")\n .replace(/\\u2060/g, \"\"); // Replaces a hidden character that resulted in a \"?\"-character in backend\n};\n\n/**\n * Adds spans with `color-block` class after color codes hex, rgb and rgba\n */\nconst addColorSpanAfterColorCodes = (text = \"\") => {\n const colorRegex = /#(?:[0-9a-fA-F]{3}){1,2}|\\brgb\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*\\)|\\brgba\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d*(?:\\.\\d+)?\\s*\\)/gi;\n return text.replace(\n colorRegex,\n (match) =>\n `${match}<span class=\"color-block\" style=\"background-color: ${match};\"></span>`\n );\n};\n\nconst addLinksToText = (text = \"\") => {\n try {\n return linkifyHtml(text, {\n target: \"_blank\",\n ignoreTags: [\"pre\", \"code\", \"script\", \"style\"],\n render: ({ tagName, attributes, content }) => {\n let newContent = content;\n if (newContent.length > 85) {\n // Truncate long urls from the middle\n const start = newContent.slice(0, 40);\n const end = newContent.slice(-40);\n newContent = `${start}[...]${end}`;\n }\n const attrs = Object.keys(attributes).reduce((acc, key) => {\n const attr = attributes[key];\n return `${acc} ${key}=\"${attr}\"`;\n });\n return `<${tagName} ${attrs}>${newContent}</${tagName}>`;\n },\n validate: {\n url(value: string) {\n return /^(http|ftp)s?:\\/\\//.test(value);\n },\n },\n });\n } catch (error) {\n return text;\n }\n};\n\n/**\n * @name toHtml\n * @description Converts markdown to html, adds space to end of String\n * The non-breaking space helps users to add text if last word is mention item\n * @author Antero Hanhirova\n * @param {String} - Markdown\n * @returns {String} - Html\n */\n\nconst toHtml = (str = \"\", type = \"html\") => {\n let newString = shortToUnicode(str);\n\n newString = fixEmojioneBug(newString);\n\n if (type === \"markdown\") {\n newString = htmlConverter.makeHtml(newString);\n } else {\n newString = processMentions(newString);\n }\n\n // Decoding is required for linkify to work\n newString = decodeHtmlEntities(newString);\n newString = addLinksToText(newString);\n return newString;\n};\n\nconst loadCodeFont = () => {\n const id = \"ibmMonoOnDemand\";\n if (!document.getElementById(id)) {\n const style = document.createElement(\"style\");\n style.id = id;\n style.appendChild(\n document.createTextNode(`@import url(${MONOSPACE_FONT_URL});`)\n );\n document.head.appendChild(style);\n }\n};\n\nconst getNearestRelativeParent = (el: HTMLElement): HTMLElement | null => {\n if (!el) {\n return null;\n }\n const elStyle = el.style || window.getComputedStyle(el, \"\");\n const positionStyle = elStyle.position;\n if ([\"relative\", \"absolute\"].includes(positionStyle)) {\n return el;\n }\n return getNearestRelativeParent(el.parentNode as HTMLElement);\n};\n\n// Remove special and hidden characters from string\nconst removeSpecialCharacters = (str = \"\") =>\n // eslint-disable-next-line no-control-regex\n str.replace(/[^\\u0000-\\u007E]/g, \"\");\n\nconst replacePTagsInCodeBlocks = (html = \"\") => {\n // Regex to match <pre> and <code> blocks with optional attributes\n const regex = /<pre\\b[^>]*>\\s*<code\\b[^>]*>([\\s\\S]*?)<\\/code>\\s*<\\/pre>/g;\n\n const replacedHtml = html.replace(regex, (match) => {\n return match\n .replace(/<\\/p>\\s*<p>/g, \"\\n\") // Replace </p><p> with a newline\n .replace(/<p>/g, \"\") // Remove opening <p> tags\n .replace(/<\\/p>/g, \"\"); // Remove closing </p> tags\n });\n\n // Encode content to prevent XSS\n const encodedCodeBlocks = replacedHtml.replace(regex, (match) => {\n return xss(match, {\n whiteList: {\n pre: [],\n code: [],\n },\n });\n });\n\n return encodedCodeBlocks;\n};\n\nexport {\n toHtml,\n toSafeText,\n loadCodeFont,\n decodeHtmlEntities,\n getNearestRelativeParent,\n removeSpecialCharacters,\n addColorSpanAfterColorCodes,\n replacePTagsInCodeBlocks,\n};\n","/**\n *\n * ContentRenderer\n *\n */\n// @ts-ignore React not used\nimport React, {\n useRef,\n useEffect,\n useState,\n useCallback,\n useMemo,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport styled, { css } from \"styled-components\";\nimport loadjs from \"loadjs\";\nimport { CopyToClipboardButton } from \"@happeouikit/copy-to-clipboard-button\";\nimport { BodyUI, sansFamily } from \"@happeouikit/typography\";\nimport { media } from \"@happeouikit/layout\";\nimport {\n toHtml,\n loadCodeFont,\n decodeHtmlEntities,\n removeSpecialCharacters,\n toSafeText,\n addColorSpanAfterColorCodes,\n replacePTagsInCodeBlocks,\n} from \"./utils\";\nimport {\n ELEMENT_TYPE_PRE,\n ELEMENT_TYPE_CODE,\n HIGHLIGHJS_CSS,\n HIGHLIGHJS_JS,\n CODE_BLOCK_AVAILABLE_LANGUAGES,\n} from \"./constants\";\nimport { ContentRendererProps } from \"./ContentRenderer.types\";\n\n// highlight.js\ndeclare global {\n interface Window {\n hljs: any;\n }\n}\n\nconst ContentRenderer = ({\n content,\n type,\n widgetType = \"post\",\n createAnchors,\n useHashAutoscroll,\n hashAutoscrollTopMargin = 0,\n forceDefaultLinkTarget,\n inheritBrandingStyles = false,\n addColorBlocks = false,\n}: ContentRendererProps) => {\n const element = useRef<HTMLDivElement>(null);\n const [copyBtns, setCopyBtns] = useState<Element[]>([]);\n\n // Autoscroll to hashes\n const scrollAndHighlightHash = useCallback(() => {\n try {\n const { hash } = window.location;\n if (element.current && hash) {\n const hashEl = element.current?.querySelector(hash);\n if (hashEl) {\n setTimeout(() => {\n window.scrollTo({\n top: hashEl.getBoundingClientRect().top - hashAutoscrollTopMargin,\n behavior: \"smooth\",\n });\n hashEl.classList.add(\"highlight\");\n setTimeout(() => {\n hashEl.classList.remove(\"highlight\");\n }, 5000);\n }, 500);\n }\n }\n } catch (error) {\n /* In some cases the hash may be cause this function to fail. In this case, handle and do nothing */\n }\n }, [hashAutoscrollTopMargin]);\n\n useEffect(() => {\n if (!element.current) return;\n\n const doCreateAnchors = () => {\n if (!element.current || !createAnchors) {\n return;\n }\n\n const headerElems =\n element.current.querySelectorAll(\"h1, h2, h3, h4, h5, h6\") || [];\n if (headerElems.length > 0) {\n headerElems.forEach((header) => {\n const { textContent = \"\" } = header;\n if ((textContent || \"\").length > 0) {\n header.id =\n header.id ||\n removeSpecialCharacters(\n (textContent || \"\").toLowerCase().replace(/\\s/g, \"-\")\n );\n }\n });\n }\n\n setCopyBtns((prevValue) => [...prevValue, ...headerElems]);\n };\n\n const doForceDefaultLinkTarget = () => {\n if (!element.current || !forceDefaultLinkTarget) {\n return;\n }\n\n const linkElems = element.current.querySelectorAll(\"a\") || [];\n if (linkElems.length > 0) {\n const currentOrigin = window.origin;\n linkElems.forEach((link) => {\n const { href } = link;\n if (href.startsWith(currentOrigin)) {\n // @ts-ignore - delete needs to be optional\n delete link.target;\n } else {\n link.target = \"_blank\";\n }\n });\n }\n };\n\n const doFormatCodeBlocks = () => {\n if (!element.current) {\n return;\n }\n const blockElems = element.current.querySelectorAll(\n ELEMENT_TYPE_PRE\n ) as NodeListOf<HTMLPreElement>;\n if (blockElems.length > 0) {\n if (!loadjs.isDefined(\"highlightjs\")) {\n loadCodeFont();\n loadjs([...HIGHLIGHJS_JS, ...HIGHLIGHJS_CSS], \"highlightjs\");\n }\n\n loadjs.ready(\"highlightjs\", () => {\n window.hljs.configure({\n languages: CODE_BLOCK_AVAILABLE_LANGUAGES,\n useBr: true,\n });\n blockElems.forEach((elem) => {\n const plainCode = elem.innerText;\n\n // Take the inner content and put inside single code block\n // This will ensure nice readability.\n // Needs to be done since editor will generate multiple lines for code for ease of editing\n const codeBlock = document.createElement(ELEMENT_TYPE_CODE);\n const decodedText = decodeHtmlEntities(plainCode);\n codeBlock.textContent = decodedText; // Done like this to prevent xss\n elem.innerHTML = \"\"; // Clear content so we can set just the single code block there\n elem.appendChild(codeBlock);\n\n window.hljs.highlightBlock(elem);\n });\n setCopyBtns((prevValue) => [...prevValue, ...blockElems]);\n });\n }\n };\n\n if (useHashAutoscroll) {\n scrollAndHighlightHash();\n }\n\n const handleChange = () => {\n doCreateAnchors();\n doForceDefaultLinkTarget();\n doFormatCodeBlocks();\n };\n\n setTimeout(() => {\n handleChange();\n }, 1);\n }, [\n element,\n createAnchors,\n forceDefaultLinkTarget,\n useHashAutoscroll,\n scrollAndHighlightHash,\n ]);\n\n const safeText = useMemo(() => {\n const lowercaseType =\n type && typeof type === \"string\" ? type.toLowerCase() : \"html\";\n\n let transformedContent =\n lowercaseType === \"text\"\n ? `<p>${content}</p>`\n : toHtml(content, lowercaseType);\n\n if (addColorBlocks) {\n transformedContent = addColorSpanAfterColorCodes(transformedContent);\n }\n\n transformedContent = replacePTagsInCodeBlocks(transformedContent);\n\n // Run the xss filter as the last step to ensure safety\n return toSafeText(transformedContent);\n }, [content, type, addColorBlocks]);\n\n // Use dangerouslySetInnerHTML as there might be nested <p>'s header etc\n // This requires that all content is run through the toSafeText filter\n // before displaying. This will run it through xss filter.\n return (\n <>\n <Wrapper\n className={`content-renderer ${\n widgetType === \"page\" ? \"fr-view pages-text\" : \"\"\n }`}\n ref={element}\n widgetType={widgetType}\n createAnchors={createAnchors}\n dangerouslySetInnerHTML={{\n __html: safeText,\n }}\n inheritBrandingStyles={inheritBrandingStyles}\n />\n {copyBtns.map((el) => {\n let clipboardContent = el.textContent || \"\";\n if (el.tagName !== ELEMENT_TYPE_PRE) {\n clipboardContent = `${window.location.href.split(\"#\")[0]}#${el.id}`;\n }\n\n // eslint-disable-next-line no-control-regex\n clipboardContent = removeSpecialCharacters(clipboardContent);\n\n return ReactDOM.createPortal(\n <BtnContainer className=\"content-copy-btn\">\n <CopyToClipboardButton clipboardContent={clipboardContent} />\n </BtnContainer>,\n el\n );\n })}\n </>\n );\n};\n\nconst BtnContainer = styled.div`\n display: inline-flex;\n margin-left: var(--space-xs);\n button {\n opacity: 0;\n transition-property: opacity;\n transition-duration: 150ms;\n transition-timing-function: ease-in;\n }\n button:hover,\n button:active,\n button:focus {\n opacity: 1 !important;\n }\n div p {\n font-size: 12px;\n line-height: 16px;\n }\n`;\n\nconst Wrapper = styled(BodyUI).attrs({ as: \"div\" })`\n ${({ createAnchors }) =>\n createAnchors\n ? `\n h1, h2, h3, h4, h5, h6 {\n display: flex;\n align-items: center;\n :hover button {\n opacity: 0.4;\n }\n }\n `\n : \"\"}\n h1.highlight,\n h2.highlight,\n h3.highlight,\n h4.highlight,\n h5.highlight,\n h6.highlight {\n border-radius: var(--radius-lg);\n position: relative;\n :after {\n content: \" \";\n position: absolute;\n top: -8px;\n bottom: -8px;\n left: -8px;\n right: -8px;\n border-radius: var(--radius-lg);\n border: 5px solid var(--color-warning-lighten80);\n }\n }\n\n pre {\n border-radius: var(--radius-md);\n background: var(--color-surface-darken);\n padding: var(--space-sm);\n margin-bottom: var(--space-sm-plus);\n overflow: auto;\n white-space: pre;\n position: relative; \n *:not(p) {\n font-weight: inherit;\n font-family: \"IBM Plex Mono\", monospace !important;\n }\n code {\n padding: 0;\n background-color: transparent;\n white-space: pre;\n }\n code p {\n font-family: \"IBM Plex Mono\",monospace !important; \n } \n .content-copy-btn {\n position: absolute;\n top: 0;\n right: 0;\n padding: var(--space-sm) 0;\n }\n :hover button {\n opacity: 1;\n }\n }\n code {\n font-family: \"IBM Plex Mono\",monospace !important;\n padding: var(--space-xs);\n white-space: nowrap;\n font-family: monospace;\n border-radius: var(--radius-md);\n background-color: var(--color-surface-darken);\n }\n .mention {\n border-radius: var(--radii-md);\n background-color: var(--color-yellow50);\n border: 1px solid var(--color-yellow50);\n color: var(--color-primary-text-on-light)\n font-weight: 400;\n\n &:hover {\n text-decoration: none;\n border: 1px solid var(--color-yellow200);\n }\n }\n .extraMention {\n cursor: inherit;\n }\n .color-block {\n display: inline-block;\n width: 18px;\n height: 18px;\n margin-left: var(--space-xxs);\n transform: translateY(4px);\n margin-right: var(--space-xxs);\n border-radius: var(--radius-md);\n border: 1px solid var(--color-gray100);\n }\n ${({ widgetType, inheritBrandingStyles }) =>\n widgetType === \"page\"\n ? \"\"\n : `\n * {\n font-family: ${sansFamily};\n }\n\n h1 {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h1-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles ? \"var(--channels-h1-font-weight, 500)\" : \"500\"\n };\n font-size: 24px;\n letter-spacing: -0.5px;\n line-height: 32px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md);\n }\n & * {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h1-font-family, revert)\"\n : \"revert\"\n }; \n }\n }\n h2 {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h2-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles ? \"var(--channels-h2-font-weight, 500)\" : \"500\"\n };\n font-size: 20px;\n line-height: 28px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md);\n }\n & * {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h2-font-family, revert)\"\n : \"revert\"\n }; \n }\n }\n h3 {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h3-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles ? \"var(--channels-h3-font-weight, 500)\" : \"500\"\n };\n font-size: 16px;\n line-height: 24px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md-minus);\n }\n & * {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h3-font-family, revert);\"\n : \"revert\"\n } \n }\n }\n h4 {\n font-size: 16px;\n line-height: 24px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md-minus);\n }\n }\n p {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-weight, revert)\"\n : \"revert\"\n };\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md-minus);\n }\n\n & * {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"\n }; \n }\n }\n }\n a {\n color: var(--color-active-primary);\n text-decoration: none;\n :hover {\n text-decoration: underline;\n }\n }\n ul {\n list-style-type: disc;\n }\n ol {\n list-style-type: decimal;\n counter-reset: item;\n li {\n padding-left: var(--space-md-minus);\n text-indent: -33px;\n list-style-type: none;\n counter-increment: item;\n &:before {\n display: inline-block;\n width: 13px;\n padding-right: var(--space-md);\n padding-left: var(--space-xs-plus);\n font-weight: bold;\n text-align: right;\n content: counter(item) \".\";\n }\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-weight, revert)\"\n : \"revert\"\n };\n }\n }\n ol,\n ul {\n font-size: 16px;\n line-height: 24px;\n margin: var(--space-md);\n display: block;\n -webkit-margin-before: var(--space-sm);\n -webkit-margin-after: var(--space-sm);\n -webkit-padding-start: var(--space-sm);\n li,\n li {\n margin-bottom: var(--space-xs-plus);\n padding-left: var(--space-sm-plus);\n > ul,\n > ol {\n -webkit-margin-before: var(--space-sm) !important;\n -webkit-margin-after: var(--space-sm) !important;\n }\n\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert);\"\n : \"revert\"\n };\n font-weight: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-weight, revert)\"\n : \"revert\"\n };\n }\n\n &:first-child,\n &:first-child {\n -webkit-margin-before: 0;\n }\n &:last-child,\n &:last-child {\n -webkit-margin-after: 0;\n }\n }\n hr {\n -webkit-margin-before: var(--space-md);\n -webkit-margin-after: var(--space-md-minus);\n border-color: var(--color-divider);\n border-style: solid;\n height: 0px;\n border-width: 1px 0 0 0;\n }\n table {\n width: 100%;\n margin: 15px 0;\n text-align: left;\n thead th {\n background: var(--color-surface);\n }\n th,\n td {\n border-width: 1px;\n border-style: solid;\n border-color: var(--color-divider);\n padding: 0.5em;\n }\n tr:nth-child(even) {\n background: var(--color-surface-darken);\n }\n tr:nth-child(odd) {\n background: var(--color-surface);\n }\n }\n table.no-borders {\n th,\n td {\n border: none;\n }\n }\n table.padded-2 {\n th,\n td {\n padding: 2em;\n }\n }\n table.padded-1 {\n th,\n td {\n padding: 1em;\n }\n }\n img {\n max-width: 100%;\n margin: var(--space-md) 0;\n & + img {\n margin-top: 0;\n }\n }\n .xl-emoji * {\n font-size: 40px;\n line-height: 1.2;\n }\n \n blockquote {\n border-top: 2px solid var(--color-divider);\n border-bottom: 2px solid var(--color-divider);\n font-size: 18px;\n padding: var(--space-lg) var(--space-xxxl);\n position: relative;\n text-align: center;\n margin: var(--space-xxxl) 0;\n }\n `}\n\n ${({ widgetType, inheritBrandingStyles }) =>\n widgetType === \"article\" &&\n css`\n h1 {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h1-font-family, revert)\"\n : \"revert\"};\n & * {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h1-font-family, revert)\"\n : \"revert\"};\n }\n }\n h2 {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h2-font-family, revert)\"\n : \"revert\"};\n & * {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h2-font-family, revert)\"\n : \"revert\"};\n }\n }\n h3 {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h3-font-family, revert)\"\n : \"revert\"};\n & * {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h3-font-family, revert)\"\n : \"revert\"};\n }\n }\n\n h4,\n h5,\n h6,\n p,\n ul,\n ol,\n li,\n table {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"};\n & * {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"};\n }\n }\n\n h1 {\n font-size: 32px;\n line-height: 1.13;\n margin: 0 0 20px;\n letter-spacing: -0.75px;\n }\n\n h2 {\n font-size: 24px;\n line-height: 1.17;\n margin: 0 0 var(--space-md);\n letter-spacing: -0.5px;\n }\n\n h3 {\n font-size: 20px;\n line-height: 1.2;\n margin: 0 0 14px;\n }\n\n h4,\n h5,\n h6,\n p,\n ul,\n ol,\n li {\n font-size: var(--font-size-subtitle-sm);\n line-height: 1.56;\n margin-bottom: var(--space-md-minus);\n margin-top: 0;\n }\n\n hr {\n border-color: var(--color-divider);\n }\n\n table {\n width: 100% !important;\n margin: var(--space-md) 0;\n font-size: var(--font-size-subtitle-sm) !important;\n text-align: left;\n border-collapse: collapse;\n border-spacing: 0;\n\n thead th {\n background: var(--color-surface);\n }\n th,\n td {\n border-width: 1px;\n border-style: solid;\n border-color: var(--color-divider);\n padding: var(--space-sm);\n word-wrap: break-word;\n }\n tr:nth-child(odd) {\n background: var(--color-divider-lighten);\n }\n tr:nth-child(even) {\n background: var(--color-surface);\n }\n }\n\n table.no-borders {\n th,\n td {\n border: none;\n }\n\n tr:nth-child(odd) {\n background: var(--color-surface-darken);\n }\n tr:nth-child(even) {\n background: var(--color-surface);\n }\n }\n\n img,\n span.fr-img-caption,\n span.fr-video {\n display: block;\n margin: 30px auto;\n ${media.only.xs` \n max-width: 100%;\n `};\n &.article-align-left {\n display: block;\n max-width: 100%;\n ${media.min.md`\n margin: 30px 30px 10px 0px;\n float: left;\n max-width: 75%;\n `}\n }\n &.article-align-center {\n display: block;\n }\n &.article-align-right {\n display: block;\n max-width: 100%;\n ${media.min.md`\n margin: 30px 0px 10px 30px;\n float: right;\n max-width: 75%;\n `}\n }\n &.article-align-overflow {\n display: block;\n max-width: 100%;\n ${media.min.md`\n margin: 30px -150px;\n width: calc(100% + 300px) !important;\n max-width: none;\n `}\n img {\n width: 100%;\n }\n }\n }\n\n img {\n &.image-border-radius {\n border-radius: var(--radius-lg);\n }\n &.image-box-shadow {\n box-shadow: 0 4px 16px 0 #bacad5;\n }\n }\n\n span.fr-img-caption {\n &.image-border-radius img {\n border-radius: var(--radius-lg);\n }\n &.image-box-shadow img {\n box-shadow: 0 4px 16px 0 #bacad5;\n }\n }\n\n p {\n img:first-child,\n span.fr-img-caption:first-child {\n &.article-align-left,\n &.article-align-right {\n ${media.min.md`\n margin-top: var(--space-sm);\n `}\n }\n }\n }\n\n span.fr-img-caption {\n text-align: center;\n img {\n margin: 0;\n }\n .fr-inner {\n font-weight: 400;\n font-size: 16px;\n margin: var(--space-sm) auto 0 auto;\n padding: 0 var(--space-sm);\n color: var(--color-secondary-text-on-light);\n display: block;\n max-width: 671px;\n }\n }\n\n span.fr-video {\n position: relative;\n padding-bottom: 56.25%;\n padding-top: 30px;\n height: 0;\n overflow: hidden;\n\n border-radius: var(--radius-lg);\n\n &.article-align-overflow {\n padding-top: 170px;\n }\n iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100% !important;\n height: 100% !important;\n }\n }\n\n blockquote {\n border-left: 0 !important;\n padding-left: 0 !important;\n margin: 0 !important;\n color: inherit !important;\n\n p {\n line-height: 30px;\n font-size: 26px;\n text-align: center;\n margin: 0 auto;\n }\n }\n\n .content-attachments {\n width: 100%;\n }\n `}\n }\n`;\n\nexport default ContentRenderer;\n"],"names":["root","factory","module","this","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","subscribe","bundleIds","callbackFn","depsNotFound","i","numWaiting","fn","bundleId","r","q","pathsNotFound","publish","executeCallbacks","args","loadFile","path","numTries","doc","async","maxTries","beforeCallbackFn","pathname","pathStripped","isLegacyIECss","hasModuleSupport","e","ev","result","x","loadFiles","paths","defaultPrevented","loadjs","arg1","arg2","loadFn","resolve","reject","deps","getDefaultWhiteList","whiteList","onAttr","name","value","options","onIgnoreAttr","REGEXP_URL_JAVASCRIPT","safeAttrValue","_default","util","arr","item","j","scope","str","_","require$$0","parseStyle","css","cssLength","isParenthesisOpen","lastPos","retCSS","addNewAttr","source","ret","c","parser","DEFAULT","require$$1","isNull","obj","shallowCopyObject","FilterCSS","me","sourcePosition","position","check","isWhite","opts","filterCSS","html","xss","exports","reg","match","getDefaultCSSWhiteList","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","getTagName","tagName","isClosing","parseTag","tagStart","quoteStart","currentPos","currentTagName","currentHtml","chariterator","ic","REGEXP_ILLEGAL_ATTR_NAME","parseAttr","lastMarkPos","retAttrs","tmpName","addAttr","v","findNextQuotationMark","findNextEqual","findBeforeEqual","stripQuoteWrap","isQuoteWrapString","text","require$$2","require$$3","getAttrs","keysToLowerCase","FilterXSS","attributeWrapSign","stripIgnoreTagBody","info","attrs","whiteAttrList","attrsHtml","isWhiteAttr","filterXSS","isWorkerEnv","encodedTlds","encodedUtlds","assign","target","properties","key","numeric","ascii","alpha","asciinumeric","alphanumeric","domain","emoji","scheme","slashscheme","whitespace","registerGroup","groups","addToGroups","t","flags","k","group","flagsForToken","State","token","input","state","nextState","regex","exactOnly","inputs","regexp","templateState","allFlags","ta","tr","ts","tt","WORD","UWORD","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL$1","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","ASCII_LETTER","LETTER","EMOJI","DIGIT","SPACE","NL","EMOJI_VARIATION","EMOJI_JOINER","tlds","utlds","init$2","customSchemes","Start","decodeTlds","Num","Word","UWord","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","fastts","a","b","sch","run$1","start","iterable","stringToArray","charCount","tokens","cursor","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","index","first","second","defaultt","jr","encoded","words","stack","digits","popDigitCount","popCount","defaults","noop","Options","defaultRender","o","ignoredTags","uppercaseIgnoredTags","ir","operator","isCallable","option","val","MultiToken","truncate","formatted","protocol","href","formattedHref","content","attributes","className","rel","eventListeners","createTokenClass","type","props","Token","p","Email","Text","Nl","Url","makeState","arg","init$1","_ref","qsAccepting","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","EmailColon","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","run","multis","textTokens","secondState","multiLength","initMultiToken","Multi","subtokens","startIdx","endIdx","INIT","init","tokenize","HTML5NamedCharRefs","HEXCHARCODE","CHARCODE","NAMED","EntityParser","named","entity","matches","WSP","ALPHA","CRLF","isSpace","isAlpha","preprocessInput","EventedTokenizer","delegate","entityParser","mode","maybeDoctype","nextSixChars","isPublic","isSystem","handler","endIndex","count","Tokenizer","doctype","isQuoted","message","tokenizer","LinkifyResult","StartTag","EndTag","Chars","Comment","Doctype","linkifyHtml","linkifiedTokens","linkified","preskipLen","skipTagTokens","linkifedChars","linkifyChars","link","attributeArrayToStrings","escapeText","tokenize$1","skippedTokens","stackCount","attributesToString","escapeAttr","attr","attrStrs","namedReferences","numericUnicodeMap","surrogatePairs","astralCodePoint","__assign","s","n","lib","named_references_1","numeric_unicode_map_1","surrogate_pairs_1","allNamedReferences","encodeRegExps","defaultEncodeOptions","encode","_a","_b","_c","_d","_e","level","encodeRegExp","references","isHex","result_1","code_1","defaultDecodeOptions","strict","attribute","baseDecodeRegExps","decodeRegExps","fromCharCode","outOfBoundsChar","defaultDecodeEntityOptions","decodeEntity","decodeResultByReference_1","decodeSecondChar_1","decodeCode_1","decode","decodeRegExp","isAttribute","isStrict","replaceMatch_1","replaceResult_1","replaceLastIndex_1","replaceInput_1","decodeResult_1","decodeEntityLastChar_2","decodeResultByReference_2","decodeSecondChar_2","decodeCode_2","decode_1","safeTagsAndAttributes","HIGHLIGHT_JS_THEME","MONOSPACE_FONT_URL","HIGHLIGHJS_JS","HIGHLIGHJS_CSS","ELEMENT_TYPE_PRE","ELEMENT_TYPE_CODE","CODE_BLOCK_AVAILABLE_LANGUAGES","getDefaultOpts","simple","defaultOptions","opt","allOptionsOn","showdown","parsers","extensions","globalOptions","setFlavor","flavor","preset","func","ext","validExtension","validate","extension","errMsg","baseMsg","ln","validateExtension","getType","callback","prop","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charsToEscape","afterBackslash","regexString","txt","rgxFindMatchPos","left","right","f","g","l","m","matchPos","results","replacement","repStr","finalStr","lng","bits","fromIndex","indexOf","mail","ch","targetLength","padString","msg","converterOptions","langExtensions","outputModifiers","listeners","setConvFlavor","metadata","_constructor","gOpt","_parseExtension","legacyExtensionLoading","validExt","listen","valid","rTrimInputText","rsp","rgx","evtName","globals","ei","nText","src","HTMLParser","substitutePreCodeTags","clean","nodes","mdDoc","node","child","pres","presPH","language","classes","extensionName","ii","raw","format","writeAnchorTag","linkText","linkId","url","m5","m6","title","wm","st","escape","mentions","username","lnk","simpleURLRegex","simpleURLRegex2","delimUrlRegex","simpleMailRegex","delimMailRegex","replaceLink","leadingMagicChars","m2","m3","trailingPunctuation","trailingMagicChars","lnkTxt","append","lmc","tmc","replaceMail","bq","pre","pattern","codeblock","nextChar","doctypeParsed","charset","lang","meta","leadingText","numSpaces","emojiRgx","emojiCode","comments","delim","repFunc","blockText","blockTags","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","hashHTMLSpan","repText","limit","num","headerLevelStart","setextRegexH1","setextRegexH2","spanGamut","hID","headerId","hLevel","hashBlock","matchFound","atxStyle","hText","span","header","prefix","inlineRegExp","crazyRegExp","base64RegExp","referenceRegExp","refShortcutRegExp","writeImageTagBase64","altText","width","height","writeImageTag","gUrls","gTitles","gDims","parseInside","lead","processListItems","listStr","trimTrailing","isParagraphed","m4","taskbtn","checked","bulletStyle","otp","wm2","styleStartNumber","list","listType","res","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","style","parseMetadataContents","wholematch","grafs","grafsOut","grafsOutIt","codeFlag","re","base64Regex","replaceFunc","blankLines","tableRgx","singeColTblRgx","parseStyles","sLine","parseHeaders","id","parseCells","cell","subText","buildTable","headers","cells","tb","tblLgn","parseTable","rawTable","tableLines","rawHeaders","rawStyles","rawCells","styles","row","charCodeToReplace","children","childrenLength","innerTxt","headerLevel","headerMark","listItems","listItemsLenght","listNum","bullet","listItemTxt","childrenLenght","spansOnly","tableArray","headings","rows","headContent","allign","cols","cellContent","cellSpacesCount","strLen","mentioningRegex","extraMentioning","mentioningRegexCaseInsensitive","mentioningRegexGroupCaseInsensitive","converter","customRules","mentioning","getConverter","htmlConverter","mentioningHtmlRegexGroupCaseInsensitive","processMatch","processMentions","toSafeText","addColorSpanAfterColorCodes","colorRegex","addLinksToText","newContent","acc","toHtml","newString","shortToUnicode","fixEmojioneBug","decodeHtmlEntities","loadCodeFont","removeSpecialCharacters","replacePTagsInCodeBlocks","ContentRenderer","widgetType","createAnchors","useHashAutoscroll","hashAutoscrollTopMargin","forceDefaultLinkTarget","inheritBrandingStyles","addColorBlocks","element","useRef","copyBtns","setCopyBtns","useState","scrollAndHighlightHash","useCallback","hash","hashEl","useEffect","doCreateAnchors","headerElems","textContent","prevValue","doForceDefaultLinkTarget","linkElems","currentOrigin","doFormatCodeBlocks","blockElems","elem","plainCode","codeBlock","decodedText","handleChange","safeText","useMemo","lowercaseType","transformedContent","jsxs","Fragment","jsx","Wrapper","el","clipboardContent","ReactDOM","BtnContainer","CopyToClipboardButton","styled","BodyUI","sansFamily","media"],"mappings":";;;;;;;;;;;;;;AAAA,GAAC,SAASA,GAAMC,GAAS;AAIrB,IAAAC,EAAA,UAAiBD;EAIpB,GAACE,IAAM,WAAW;AAMnB,QAAIC,IAAU,WAAW;AAAA,IAAE,GACvBC,IAAgB,CAAE,GAClBC,IAAoB,CAAE,GACtBC,IAAsB,CAAA;AAQ1B,aAASC,EAAUC,GAAWC,GAAY;AAExC,MAAAD,IAAYA,EAAU,OAAOA,IAAY,CAACA,CAAS;AAEnD,UAAIE,IAAe,CAAE,GACjBC,IAAIH,EAAU,QACdI,IAAaD,GACbE,GACAC,GACAC,GACAC;AAWJ,WARAH,IAAK,SAAUC,GAAUG,GAAe;AACtC,QAAIA,EAAc,UAAQP,EAAa,KAAKI,CAAQ,GAEpDF,KACKA,KAAYH,EAAWC,CAAY;AAAA,MAC5C,GAGSC,OAAK;AAKV,YAJAG,IAAWN,EAAUG,CAAC,GAGtBI,IAAIV,EAAkBS,CAAQ,GAC1BC,GAAG;AACL,UAAAF,EAAGC,GAAUC,CAAC;AACd;AAAA,QACD;AAGD,QAAAC,IAAIV,EAAoBQ,CAAQ,IAAIR,EAAoBQ,CAAQ,KAAK,IACrEE,EAAE,KAAKH,CAAE;AAAA,MACV;AAAA,IACF;AAQD,aAASK,EAAQJ,GAAUG,GAAe;AAExC,UAAKH,GAEL;AAAA,YAAIE,IAAIV,EAAoBQ,CAAQ;AAMpC,YAHAT,EAAkBS,CAAQ,IAAIG,GAG1B,EAACD;AAGL,iBAAOA,EAAE;AACP,YAAAA,EAAE,CAAC,EAAEF,GAAUG,CAAa,GAC5BD,EAAE,OAAO,GAAG,CAAC;AAAA;AAAA,IAEhB;AAQD,aAASG,EAAiBC,GAAMV,GAAc;AAE5C,MAAIU,EAAK,SAAMA,IAAO,EAAC,SAASA,EAAI,IAGhCV,EAAa,UAASU,EAAK,SAASjB,GAASO,CAAY,KACvDU,EAAK,WAAWjB,GAASiB,CAAI;AAAA,IACpC;AAQD,aAASC,EAASC,GAAMb,GAAYW,GAAMG,GAAU;AAClD,UAAIC,IAAM,UACNC,IAAQL,EAAK,OACbM,KAAYN,EAAK,cAAc,KAAK,GACpCO,IAAmBP,EAAK,UAAUjB,GAClCyB,IAAWN,EAAK,QAAQ,aAAa,EAAE,GACvCO,IAAeP,EAAK,QAAQ,+BAA+B,EAAE,GAC7DQ,GACAC,GACAC;AAIJ,UAFAT,IAAWA,KAAY,GAEnB,iBAAiB,KAAKK,CAAQ;AAEhC,QAAAI,IAAIR,EAAI,cAAc,MAAM,GAC5BQ,EAAE,MAAM,cACRA,EAAE,OAAOH,GAGTC,IAAgB,eAAeE,GAG3BF,KAAiBE,EAAE,YACrBF,IAAgB,GAChBE,EAAE,MAAM,WACRA,EAAE,KAAK;AAAA,eAEA,oCAAoC,KAAKJ,CAAQ;AAE1D,QAAAI,IAAIR,EAAI,cAAc,KAAK,GAC3BQ,EAAE,MAAMH;AAAA,eAGRG,IAAIR,EAAI,cAAc,QAAQ,GAC9BQ,EAAE,MAAMH,GACRG,EAAE,QAAQP,MAAU,SAAY,KAAOA,GASvCM,IAAmB,cAAcC,GAC7B,WAAW,KAAKJ,CAAQ,GAAG;AAC7B,YAAI,CAACG;AAAkB,iBAAOtB,EAAWa,GAAM,GAAG;AAClD,QAAAU,EAAE,OAAO;AAAA,MACf,WAAe,aAAa,KAAKJ,CAAQ,KAAKG;AAAkB,eAAOtB,EAAWa,GAAM,GAAG;AAGzF,MAAAU,EAAE,SAASA,EAAE,UAAUA,EAAE,eAAe,SAAUC,GAAI;AACpD,YAAIC,IAASD,EAAG,KAAK,CAAC;AAItB,YAAIH;AACF,cAAI;AACF,YAAKE,EAAE,MAAM,QAAQ,WAAQE,IAAS;AAAA,UACvC,SAAQC,GAAG;AAGV,YAAIA,EAAE,QAAQ,OAAID,IAAS;AAAA,UAC5B;AAIH,YAAIA,KAAU;AAKZ,cAHAX,KAAY,GAGRA,IAAWG;AACb,mBAAOL,EAASC,GAAMb,GAAYW,GAAMG,CAAQ;AAAA,mBAEzCS,EAAE,OAAO,aAAaA,EAAE,MAAM;AAEvC,iBAAOA,EAAE,MAAM;AAIjB,QAAAvB,EAAWa,GAAMY,GAAQD,EAAG,gBAAgB;AAAA,MAChD,GAGMN,EAAiBL,GAAMU,CAAC,MAAM,MAAOR,EAAI,KAAK,YAAYQ,CAAC;AAAA,IAChE;AAQD,aAASI,EAAUC,GAAO5B,GAAYW,GAAM;AAE1C,MAAAiB,IAAQA,EAAM,OAAOA,IAAQ,CAACA,CAAK;AAEnC,UAAIzB,IAAayB,EAAM,QACnBF,IAAIvB,GACJK,IAAgB,CAAE,GAClBJ,GACAF;AAmBJ,WAhBAE,IAAK,SAASS,GAAMY,GAAQI,GAAkB;AAM5C,YAJIJ,KAAU,OAAKjB,EAAc,KAAKK,CAAI,GAItCY,KAAU;AACZ,cAAII;AAAkB,YAAArB,EAAc,KAAKK,CAAI;AAAA;AACxC;AAGP,QAAAV,KACKA,KAAYH,EAAWQ,CAAa;AAAA,MAC7C,GAGON,IAAE,GAAGA,IAAIwB,GAAGxB;AAAK,QAAAU,EAASgB,EAAM1B,CAAC,GAAGE,GAAIO,CAAI;AAAA,IAClD;AAYD,aAASmB,EAAOF,GAAOG,GAAMC,GAAM;AACjC,UAAI3B,GACAM;AASJ,UANIoB,KAAQA,EAAK,SAAM1B,IAAW0B,IAGlCpB,KAAQN,IAAW2B,IAAOD,MAAS,CAAA,GAG/B1B,GAAU;AACZ,YAAIA,KAAYV;AACd,gBAAM;AAEN,QAAAA,EAAcU,CAAQ,IAAI;AAAA,MAE7B;AAED,eAAS4B,EAAOC,GAASC,GAAQ;AAC/B,QAAAR,EAAUC,GAAO,SAAUpB,GAAe;AAExC,UAAAE,EAAiBC,GAAMH,CAAa,GAGhC0B,KACFxB,EAAiB,EAAC,SAASwB,GAAS,OAAOC,EAAM,GAAG3B,CAAa,GAInEC,EAAQJ,GAAUG,CAAa;AAAA,QAChC,GAAEG,CAAI;AAAA,MACR;AAED,UAAIA,EAAK;AAAe,eAAO,IAAI,QAAQsB,CAAM;AAC5C,MAAAA;IACN;AAQD,WAAAH,EAAO,QAAQ,SAAeM,GAAMzB,GAAM;AAExC,aAAAb,EAAUsC,GAAM,SAAUnC,GAAc;AAEtC,QAAAS,EAAiBC,GAAMV,CAAY;AAAA,MACvC,CAAG,GAEM6B;AAAA,IACT,GAOAA,EAAO,OAAO,SAAczB,GAAU;AACpC,MAAAI,EAAQJ,GAAU,CAAA,CAAE;AAAA,IACtB,GAMAyB,EAAO,QAAQ,WAAiB;AAC9B,MAAAnC,IAAgB,CAAA,GAChBC,IAAoB,CAAA,GACpBC,IAAsB,CAAA;AAAA,IACxB,GAOAiC,EAAO,YAAY,SAAmBzB,GAAU;AAC9C,aAAOA,KAAYV;AAAA,IACrB,GAIOmC;AAAA,EAEP,CAAC;;;;;ACnUD,SAASO,KAAuB;AAM9B,MAAIC,IAAY,CAAA;AAEhB,SAAAA,EAAU,eAAe,IAAI,IAC7BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,MAAS,IACnBA,EAAU,cAAc,IAAI,IAC5BA,EAAU,YAAe,IACzBA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,2BAA2B,IAAI,IACzCA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,sBAAsB,IAAI,IACpCA,EAAU,2BAA2B,IAAI,IACzCA,EAAU,UAAa,IACvBA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,aAAgB,IAC1BA,EAAU,uBAAuB,IAAI,IACrCA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,UAAa,IACvBA,EAAU,QAAW,IACrBA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,SAAY,IACtBA,EAAU,eAAe,IAAI,IAC7BA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,2BAA2B,IAAI,IACzCA,EAAU,4BAA4B,IAAI,IAC1CA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,aAAa,IAAI,IAC3BA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,eAAe,IAAI,IAC7BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,wBAAwB,IAAI,IACtCA,EAAU,yBAAyB,IAAI,IACvCA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,cAAc,IAAI,IAC5BA,EAAU,SAAY,IACtBA,EAAU,sBAAsB,IAAI,IACpCA,EAAU,YAAY,IAAI,IAC1BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,UAAU,IAAI,IACxBA,EAAU,cAAc,IAAI,IAC5BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,SAAY,IACtBA,EAAU,QAAW,IACrBA,EAAU,OAAU,IACpBA,EAAU,WAAW,IAAI,IACzBA,EAAU,WAAW,IAAI,IACzBA,EAAU,QAAW,IACrBA,EAAU,6BAA6B,IAAI,IAC3CA,EAAU,cAAc,IAAI,IAC5BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,aAAa,IAAI,IAC3BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,UAAa,IACvBA,EAAU,UAAa,IACvBA,EAAU,UAAa,IACvBA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,eAAe,IAAI,IAC7BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,OAAU,IACpBA,EAAU,MAAS,IACnBA,EAAU,WAAW,IAAI,IACzBA,EAAU,YAAY,IAAI,IAC1BA,EAAU,SAAY,IACtBA,EAAU,YAAe,IACzBA,EAAU,UAAa,IACvBA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,YAAe,IACzBA,EAAU,aAAa,IAAI,IAC3BA,EAAU,SAAY,IACtBA,EAAU,OAAU,IACpBA,EAAU,YAAY,IAAI,IAC1BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,WAAW,IAAI,IACzBA,EAAU,WAAW,IAAI,IACzBA,EAAU,aAAa,IAAI,IAC3BA,EAAU,WAAW,IAAI,IACzBA,EAAU,QAAW,IACrBA,EAAU,cAAc,IAAI,IAC5BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,WAAW,IAAI,IACzBA,EAAU,WAAW,IAAI,IACzBA,EAAU,OAAU,IACpBA,EAAU,aAAa,IAAI,IAC3BA,EAAU,uBAAuB,IAAI,IACrCA,EAAU,cAAc,IAAI,IAC5BA,EAAU,wBAAwB,IAAI,IACtCA,EAAU,WAAW,IAAI,IACzBA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,cAAc,IAAI,IAC5BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,yBAAyB,IAAI,IACvCA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,yBAAyB,IAAI,IACvCA,EAAU,wBAAwB,IAAI,IACtCA,EAAU,sBAAsB,IAAI,IACpCA,EAAU,uBAAuB,IAAI,IACrCA,EAAU,aAAa,IAAI,IAC3BA,EAAU,OAAU,IACpBA,EAAU,WAAW,IAAI,IACzBA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,UAAU,IAAI,IACxBA,EAAU,cAAc,IAAI,IAC5BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,uBAAuB,IAAI,IACrCA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,SAAY,IACtBA,EAAU,UAAa,IACvBA,EAAU,OAAU,IACpBA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,UAAU,IAAI,IACxBA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,OAAU,IACpBA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,YAAY,IAAI,IAC1BA,EAAU,WAAW,IAAI,IACzBA,EAAU,aAAa,IAAI,IAC3BA,EAAU,WAAW,IAAI,IACzBA,EAAU,eAAe,IAAI,IAC7BA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,wBAAwB,IAAI,IACtCA,EAAU,YAAY,IAAI,IAC1BA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,SAAY,IACtBA,EAAU,eAAe,IAAI,IAC7BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,QAAW,IACrBA,EAAU,OAAU,IACpBA,EAAU,UAAU,IAAI,IACxBA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,WAAW,IAAI,IACzBA,EAAU,YAAY,IAAI,IAC1BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,WAAW,IAAI,IACzBA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,WAAW,IAAI,IACzBA,EAAU,YAAY,IAAI,IAC1BA,EAAU,WAAW,IAAI,IACzBA,EAAU,WAAW,IAAI,IACzBA,EAAU,YAAY,IAAI,IAC1BA,EAAU,WAAW,IAAI,IACzBA,EAAU,SAAS,IAAI,IACvBA,EAAU,UAAU,IAAI,IACxBA,EAAU,WAAW,IAAI,IACzBA,EAAU,UAAU,IAAI,IACxBA,EAAU,WAAW,IAAI,IACzBA,EAAU,QAAQ,IAAI,IACtBA,EAAU,YAAY,IAAI,IAC1BA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,UAAa,IACvBA,EAAU,QAAW,IACrBA,EAAU,UAAa,IACvBA,EAAU,UAAa,IACvBA,EAAU,eAAe,IAAI,IAC7BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,WAAc,IACxBA,EAAU,eAAe,IAAI,IAC7BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,UAAa,IACvBA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,OAAU,IACpBA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,aAAa,IAAI,IAC3BA,EAAU,QAAW,IACrBA,EAAU,aAAa,IAAI,IAC3BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,cAAiB,IAC3BA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,QAAW,IACrBA,EAAU,aAAa,IAAI,IAC3BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,WAAc,IACxBA,EAAU,oBAAoB,IAAI,IAClCA,EAAU,SAAY,IACtBA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,SAAY,IACtBA,EAAU,OAAU,IACpBA,EAAU,YAAY,IAAI,IAC1BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,WAAc,IACxBA,EAAU,QAAW,IACrBA,EAAU,WAAc,IACxBA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,uBAAuB,IAAI,IACrCA,EAAU,eAAe,IAAI,IAC7BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,OAAU,IACpBA,EAAU,QAAW,IACrBA,EAAU,UAAU,IAAI,IACxBA,EAAU,cAAc,IAAI,IAC5BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,mBAAmB,IAAI,IACjCA,EAAU,aAAa,IAAI,IAC3BA,EAAU,SAAY,IACtBA,EAAU,YAAY,IAAI,IAC1BA,EAAU,UAAU,IAAI,IACxBA,EAAU,cAAc,IAAI,IAC5BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,sBAAsB,IAAI,IACpCA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,uBAAuB,IAAI,IACrCA,EAAU,sBAAsB,IAAI,IACpCA,EAAU,sBAAsB,IAAI,IACpCA,EAAU,uBAAuB,IAAI,IACrCA,EAAU,eAAe,IAAI,IAC7BA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,wBAAwB,IAAI,IACtCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,aAAa,IAAI,IAC3BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,eAAe,IAAI,IAC7BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,yBAAyB,IAAI,IACvCA,EAAU,WAAW,IAAI,IACzBA,EAAU,MAAS,IACnBA,EAAU,YAAe,IACzBA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,iBAAiB,IAAI,IAC/BA,EAAU,aAAgB,IAC1BA,EAAU,kBAAkB,IAAI,IAChCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,qBAAqB,IAAI,IACnCA,EAAU,4BAA4B,IAAI,IAC1CA,EAAU,cAAc,IAAI,IAC5BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,aAAgB,IAC1BA,EAAU,eAAe,IAAI,IAC7BA,EAAU,gBAAgB,IAAI,IAC9BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,aAAa,IAAI,IAC3BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,SAAY,IACtBA,EAAU,aAAa,IAAI,IAC3BA,EAAU,SAAY,IACtBA,EAAU,QAAW,IACrBA,EAAU,aAAa,IAAI,IAC3BA,EAAU,YAAY,IAAI,IAC1BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,WAAW,IAAI,IACzBA,EAAU,WAAW,IAAI,IACzBA,EAAU,cAAc,IAAI,IAC5BA,EAAU,cAAc,IAAI,IAC5BA,EAAU,SAAS,IAAI,IAEhBA;AACT;AAWA,SAASC,GAAQC,GAAMC,GAAOC,GAAS;AAEvC;AAUA,SAASC,GAAcH,GAAMC,GAAOC,GAAS;AAE7C;AAEA,IAAIE,KAAwB;AAS5B,SAASC,GAAcL,GAAMC,GAAO;AAClC,SAAIG,GAAsB,KAAKH,CAAK,IAAU,KACvCA;AACT;AAGiBK,GAAA,YAAGT,GAAsB;AACfS,GAAA,sBAAGT;AAChBS,GAAA,SAAGP;AACGO,GAAA,eAAGH;AACvBG,GAAA,gBAAwBD;AC7YxB,IAAAE,KAAiB;AAAA,EACf,SAAS,SAAUC,GAAKC,GAAM;AAC5B,QAAI/C,GAAGgD;AACP,QAAI,MAAM,UAAU;AAClB,aAAOF,EAAI,QAAQC,CAAI;AAEzB,SAAK/C,IAAI,GAAGgD,IAAIF,EAAI,QAAQ9C,IAAIgD,GAAGhD;AACjC,UAAI8C,EAAI9C,CAAC,MAAM+C;AACb,eAAO/C;AAGX,WAAO;AAAA,EACR;AAAA,EACD,SAAS,SAAU8C,GAAK5C,GAAI+C,GAAO;AACjC,QAAIjD,GAAGgD;AACP,QAAI,MAAM,UAAU;AAClB,aAAOF,EAAI,QAAQ5C,GAAI+C,CAAK;AAE9B,SAAKjD,IAAI,GAAGgD,IAAIF,EAAI,QAAQ9C,IAAIgD,GAAGhD;AACjC,MAAAE,EAAG,KAAK+C,GAAOH,EAAI9C,CAAC,GAAGA,GAAG8C,CAAG;AAAA,EAEhC;AAAA,EACD,MAAM,SAAUI,GAAK;AACnB,WAAI,OAAO,UAAU,OACZA,EAAI,SAENA,EAAI,QAAQ,kBAAkB,EAAE;AAAA,EACxC;AAAA,EACD,WAAW,SAAUA,GAAK;AACxB,WAAI,OAAO,UAAU,YACZA,EAAI,cAENA,EAAI,QAAQ,WAAW,EAAE;AAAA,EACjC;AACH,GC5BIC,KAAIC;AAWR,SAASC,GAAYC,GAAKjB,GAAQ;AAChC,EAAAiB,IAAMH,GAAE,UAAUG,CAAG,GACjBA,EAAIA,EAAI,SAAS,CAAC,MAAM,QAAKA,KAAO;AACxC,MAAIC,IAAYD,EAAI,QAChBE,IAAoB,IACpBC,IAAU,GACVzD,IAAI,GACJ0D,IAAS;AAEb,WAASC,IAAc;AAErB,QAAI,CAACH,GAAmB;AACtB,UAAII,IAAST,GAAE,KAAKG,EAAI,MAAMG,GAASzD,CAAC,CAAC,GACrCgD,IAAIY,EAAO,QAAQ,GAAG;AAC1B,UAAIZ,MAAM,IAAI;AACZ,YAAIV,IAAOa,GAAE,KAAKS,EAAO,MAAM,GAAGZ,CAAC,CAAC,GAChCT,IAAQY,GAAE,KAAKS,EAAO,MAAMZ,IAAI,CAAC,CAAC;AAEtC,YAAIV,GAAM;AACR,cAAIuB,IAAMxB,EAAOoB,GAASC,EAAO,QAAQpB,GAAMC,GAAOqB,CAAM;AAC5D,UAAIC,MAAKH,KAAUG,IAAM;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AACD,IAAAJ,IAAUzD,IAAI;AAAA,EACf;AAED,SAAOA,IAAIuD,GAAWvD,KAAK;AACzB,QAAI8D,IAAIR,EAAItD,CAAC;AACb,QAAI8D,MAAM,OAAOR,EAAItD,IAAI,CAAC,MAAM,KAAK;AAEnC,UAAIgD,IAAIM,EAAI,QAAQ,MAAMtD,IAAI,CAAC;AAE/B,UAAIgD,MAAM;AAAI;AAEd,MAAAhD,IAAIgD,IAAI,GACRS,IAAUzD,IAAI,GACdwD,IAAoB;AAAA,IAC1B;AAAW,MAAIM,MAAM,MACfN,IAAoB,KACXM,MAAM,MACfN,IAAoB,KACXM,MAAM,MACXN,KAGFG,MAEOG,MAAM;AAAA,KACfH;EAEH;AAED,SAAOR,GAAE,KAAKO,CAAM;AACtB;AAEA,IAAAK,KAAiBV,ICnEbW,KAAUZ,IACVC,KAAaY;AAUjB,SAASC,GAAQC,GAAK;AACpB,SAA6BA,KAAQ;AACvC;AAQA,SAASC,GAAmBD,GAAK;AAC/B,MAAIN,IAAM,CAAA;AACV,WAAS7D,KAAKmE;AACZ,IAAAN,EAAI7D,CAAC,IAAImE,EAAInE,CAAC;AAEhB,SAAO6D;AACT;AAWA,SAASQ,GAAW7B,GAAS;AAC3B,EAAAA,IAAU4B,GAAkB5B,KAAW,CAAA,CAAE,GACzCA,EAAQ,YAAYA,EAAQ,aAAawB,GAAQ,WACjDxB,EAAQ,SAASA,EAAQ,UAAUwB,GAAQ,QAC3CxB,EAAQ,eAAeA,EAAQ,gBAAgBwB,GAAQ,cACvDxB,EAAQ,gBAAgBA,EAAQ,iBAAiBwB,GAAQ,eACzD,KAAK,UAAUxB;AACjB;AAEA6B,GAAU,UAAU,UAAU,SAAUf,GAAK;AAI3C,MAFAA,IAAMA,KAAO,IACbA,IAAMA,EAAI,YACN,CAACA;AAAK,WAAO;AAEjB,MAAIgB,IAAK,MACL9B,IAAU8B,EAAG,SACblC,IAAYI,EAAQ,WACpBH,IAASG,EAAQ,QACjBC,IAAeD,EAAQ,cACvBG,IAAgBH,EAAQ,eAExBkB,IAASL,GAAWC,GAAK,SAAUiB,GAAgBC,GAAUlC,GAAMC,GAAOqB,GAAQ;AAEpF,QAAIa,IAAQrC,EAAUE,CAAI,GACtBoC,IAAU;AAQd,QAPID,MAAU,KAAMC,IAAUD,IACrB,OAAOA,KAAU,aAAYC,IAAUD,EAAMlC,CAAK,IAClDkC,aAAiB,WAAQC,IAAUD,EAAM,KAAKlC,CAAK,IACxDmC,MAAY,OAAMA,IAAU,KAGhCnC,IAAQI,EAAcL,GAAMC,CAAK,GAC7B,EAACA,GAEL;AAAA,UAAIoC,IAAO;AAAA,QACT,UAAUH;AAAA,QACV,gBAAgBD;AAAA,QAChB,QAAQX;AAAA,QACR,SAASc;AAAA,MACf;AAEI,UAAIA,GAAS;AAEX,YAAIb,IAAMxB,EAAOC,GAAMC,GAAOoC,CAAI;AAClC,eAAIT,GAAOL,CAAG,IACLvB,IAAO,MAAMC,IAEbsB;AAAA,MAGf,OAAW;AAEL,YAAIA,IAAMpB,EAAaH,GAAMC,GAAOoC,CAAI;AACxC,YAAI,CAACT,GAAOL,CAAG;AACb,iBAAOA;AAAA,MAGV;AAAA;AAAA,EACL,CAAG;AAED,SAAOH;AACT;AAGA,IAAAJ,KAAiBe;AAAAA;ACvGjB,MAAIL,IAAUZ,IACViB,IAAYJ;AAUhB,WAASW,EAAWC,GAAMrC,GAAS;AACjC,QAAIsC,IAAM,IAAIT,EAAU7B,CAAO;AAC/B,WAAOsC,EAAI,QAAQD,CAAI;AAAA,EACxB;AAID,EAAAE,IAAUzF,EAAiB,UAAAsF,GAC3BG,EAAA,YAAoBV;AACpB,WAASrE,KAAKgE;AAAS,IAAAe,EAAQ/E,CAAC,IAAIgE,EAAQhE,CAAC;AAG7C,EAAI,OAAO,SAAW,QACpB,OAAO,YAAYV,EAAO;;qBC9B5BuD,KAAiB;AAAA,EACf,SAAS,SAAUC,GAAKC,GAAM;AAC5B,QAAI/C,GAAGgD;AACP,QAAI,MAAM,UAAU;AAClB,aAAOF,EAAI,QAAQC,CAAI;AAEzB,SAAK/C,IAAI,GAAGgD,IAAIF,EAAI,QAAQ9C,IAAIgD,GAAGhD;AACjC,UAAI8C,EAAI9C,CAAC,MAAM+C;AACb,eAAO/C;AAGX,WAAO;AAAA,EACR;AAAA,EACD,SAAS,SAAU8C,GAAK5C,GAAI+C,GAAO;AACjC,QAAIjD,GAAGgD;AACP,QAAI,MAAM,UAAU;AAClB,aAAOF,EAAI,QAAQ5C,GAAI+C,CAAK;AAE9B,SAAKjD,IAAI,GAAGgD,IAAIF,EAAI,QAAQ9C,IAAIgD,GAAGhD;AACjC,MAAAE,EAAG,KAAK+C,GAAOH,EAAI9C,CAAC,GAAGA,GAAG8C,CAAG;AAAA,EAEhC;AAAA,EACD,MAAM,SAAUI,GAAK;AACnB,WAAI,OAAO,UAAU,OACZA,EAAI,SAENA,EAAI,QAAQ,kBAAkB,EAAE;AAAA,EACxC;AAAA,EACD,YAAY,SAAUA,GAAK;AACzB,QAAI8B,IAAM,YACNC,IAAQD,EAAI,KAAK9B,CAAG;AACxB,WAAO+B,IAAQA,EAAM,QAAQ;AAAA,EAC9B;AACH,GC3BIZ,KAAYjB,GAAqB,WACjC8B,KAAyB9B,GAAqB,qBAC9CD,KAAIc;AAER,SAAS9B,KAAsB;AAC7B,SAAO;AAAA,IACL,GAAG,CAAC,UAAU,QAAQ,OAAO;AAAA,IAC7B,MAAM,CAAC,OAAO;AAAA,IACd,SAAS,CAAE;AAAA,IACX,MAAM,CAAC,SAAS,UAAU,QAAQ,KAAK;AAAA,IACvC,SAAS,CAAE;AAAA,IACX,OAAO,CAAE;AAAA,IACT,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACD,GAAG,CAAE;AAAA,IACL,KAAK,CAAC,KAAK;AAAA,IACX,KAAK,CAAC,KAAK;AAAA,IACX,KAAK,CAAE;AAAA,IACP,YAAY,CAAC,MAAM;AAAA,IACnB,IAAI,CAAE;AAAA,IACN,SAAS,CAAE;AAAA,IACX,QAAQ,CAAE;AAAA,IACV,MAAM,CAAE;AAAA,IACR,MAAM,CAAE;AAAA,IACR,KAAK,CAAC,SAAS,UAAU,QAAQ,OAAO;AAAA,IACxC,UAAU,CAAC,SAAS,UAAU,QAAQ,OAAO;AAAA,IAC7C,IAAI,CAAE;AAAA,IACN,KAAK,CAAC,UAAU;AAAA,IAChB,SAAS,CAAC,MAAM;AAAA,IAChB,KAAK,CAAE;AAAA,IACP,IAAI,CAAE;AAAA,IACN,IAAI,CAAE;AAAA,IACN,IAAI,CAAE;AAAA,IACN,YAAY,CAAE;AAAA,IACd,QAAQ,CAAE;AAAA,IACV,MAAM,CAAC,SAAS,QAAQ,MAAM;AAAA,IAC9B,QAAQ,CAAE;AAAA,IACV,IAAI,CAAE;AAAA,IACN,IAAI,CAAE;AAAA,IACN,IAAI,CAAE;AAAA,IACN,IAAI,CAAE;AAAA,IACN,IAAI,CAAE;AAAA,IACN,IAAI,CAAE;AAAA,IACN,QAAQ,CAAE;AAAA,IACV,IAAI,CAAE;AAAA,IACN,GAAG,CAAE;AAAA,IACL,KAAK,CAAC,OAAO,OAAO,SAAS,SAAS,UAAU,SAAS;AAAA,IACzD,KAAK,CAAC,UAAU;AAAA,IAChB,KAAK,CAAE;AAAA,IACP,IAAI,CAAE;AAAA,IACN,MAAM,CAAE;AAAA,IACR,KAAK,CAAE;AAAA,IACP,IAAI,CAAE;AAAA,IACN,GAAG,CAAE;AAAA,IACL,KAAK,CAAE;AAAA,IACP,GAAG,CAAE;AAAA,IACL,SAAS,CAAE;AAAA,IACX,OAAO,CAAE;AAAA,IACT,MAAM,CAAE;AAAA,IACR,KAAK,CAAE;AAAA,IACP,SAAS,CAAE;AAAA,IACX,KAAK,CAAE;AAAA,IACP,QAAQ,CAAE;AAAA,IACV,QAAQ,CAAE;AAAA,IACV,OAAO,CAAC,SAAS,UAAU,SAAS,QAAQ;AAAA,IAC5C,OAAO,CAAC,SAAS,QAAQ;AAAA,IACzB,IAAI,CAAC,SAAS,WAAW,WAAW,SAAS,QAAQ;AAAA,IACrD,OAAO,CAAC,SAAS,QAAQ;AAAA,IACzB,IAAI,CAAC,SAAS,WAAW,WAAW,SAAS,QAAQ;AAAA,IACrD,OAAO,CAAC,SAAS,QAAQ;AAAA,IACzB,IAAI,CAAC,WAAW,SAAS,QAAQ;AAAA,IACjC,IAAI,CAAE;AAAA,IACN,GAAG,CAAE;AAAA,IACL,IAAI,CAAE;AAAA,IACN,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACL;AACA;AAEA,IAAIgD,KAAmB,IAAId;AAU3B,SAASe,GAAMC,GAAKR,GAAMrC,GAAS;AAEnC;AAUA,SAAS8C,GAAYD,GAAKR,GAAMrC,GAAS;AAEzC;AAUA,SAAS+C,GAAUF,GAAK/C,GAAMC,GAAO;AAErC;AAUA,SAASiD,GAAgBH,GAAK/C,GAAMC,GAAO;AAE3C;AAOA,SAASkD,GAAWZ,GAAM;AACxB,SAAOA,EAAK,QAAQa,IAAW,MAAM,EAAE,QAAQC,IAAW,MAAM;AAClE;AAWA,SAAShD,GAAc0C,GAAK/C,GAAMC,GAAOqD,GAAW;AAIlD,MAFArD,IAAQsD,GAAkBtD,CAAK,GAE3BD,MAAS,UAAUA,MAAS,OAAO;AAIrC,QADAC,IAAQY,GAAE,KAAKZ,CAAK,GAChBA,MAAU;AAAK,aAAO;AAC1B,QACE,EACEA,EAAM,OAAO,GAAG,CAAC,MAAM,aACvBA,EAAM,OAAO,GAAG,CAAC,MAAM,cACvBA,EAAM,OAAO,GAAG,CAAC,MAAM,aACvBA,EAAM,OAAO,GAAG,CAAC,MAAM,UACvBA,EAAM,OAAO,GAAG,EAAE,MAAM,iBACxBA,EAAM,OAAO,GAAG,CAAC,MAAM,YACvBA,EAAM,OAAO,GAAG,CAAC,MAAM,QACvBA,EAAM,OAAO,GAAG,CAAC,MAAM,SACvBA,EAAM,CAAC,MAAM,OACbA,EAAM,CAAC,MAAM;AAGf,aAAO;AAAA,EAEb,WAAaD,MAAS;AAIlB,QADAwD,GAA6B,YAAY,GACrCA,GAA6B,KAAKvD,CAAK;AACzC,aAAO;AAAA,aAEAD,MAAS,SAAS;AAQ3B,QANAyD,GAA6B,YAAY,GACrCA,GAA6B,KAAKxD,CAAK,MAI3CyD,GAA6B,YAAY,GACrCA,GAA6B,KAAKzD,CAAK,MACzCuD,GAA6B,YAAY,GACrCA,GAA6B,KAAKvD,CAAK;AACzC,aAAO;AAGX,IAAIqD,MAAc,OAChBA,IAAYA,KAAaT,IACzB5C,IAAQqD,EAAU,QAAQrD,CAAK;AAAA,EAElC;AAGD,SAAAA,IAAQ0D,GAAgB1D,CAAK,GACtBA;AACT;AAGA,IAAImD,KAAY,MACZC,KAAY,MACZO,KAAe,MACfC,KAAiB,WACjBC,KAAsB,yBACtBC,KAA0B,eAC1BC,KAA4B,iBAE5BR,KACF,yFAGEC,KACF,kDACEC,KAA+B;AAQnC,SAASO,GAAYrD,GAAK;AACxB,SAAOA,EAAI,QAAQgD,IAAc,QAAQ;AAC3C;AAQA,SAASM,GAActD,GAAK;AAC1B,SAAOA,EAAI,QAAQiD,IAAgB,GAAG;AACxC;AAQA,SAASM,GAAmBvD,GAAK;AAC/B,SAAOA,EAAI,QAAQkD,IAAqB,SAAwBlD,GAAKwD,GAAM;AACzE,WAAOA,EAAK,CAAC,MAAM,OAAOA,EAAK,CAAC,MAAM,MAClC,OAAO,aAAa,SAASA,EAAK,OAAO,CAAC,GAAG,EAAE,CAAC,IAChD,OAAO,aAAa,SAASA,GAAM,EAAE,CAAC;AAAA,EAC9C,CAAG;AACH;AAQA,SAASC,GAA0BzD,GAAK;AACtC,SAAOA,EACJ,QAAQmD,IAAyB,GAAG,EACpC,QAAQC,IAA2B,GAAG;AAC3C;AAQA,SAASM,GAA2B1D,GAAK;AAEvC,WADI2D,IAAO,IACF7G,IAAI,GAAG8G,IAAM5D,EAAI,QAAQlD,IAAI8G,GAAK9G;AACzC,IAAA6G,KAAQ3D,EAAI,WAAWlD,CAAC,IAAI,KAAK,MAAMkD,EAAI,OAAOlD,CAAC;AAErD,SAAOmD,GAAE,KAAK0D,CAAI;AACpB;AAQA,SAAShB,GAAkB3C,GAAK;AAC9B,SAAAA,IAAMsD,GAActD,CAAG,GACvBA,IAAMuD,GAAmBvD,CAAG,GAC5BA,IAAMyD,GAA0BzD,CAAG,GACnCA,IAAM0D,GAA2B1D,CAAG,GAC7BA;AACT;AAQA,SAAS+C,GAAgB/C,GAAK;AAC5B,SAAAA,IAAMqD,GAAYrD,CAAG,GACrBA,IAAMuC,GAAWvC,CAAG,GACbA;AACT;AAKA,SAAS6D,KAAsB;AAC7B,SAAO;AACT;AASA,SAASC,GAAaC,GAAMC,GAAM;AAChC,EAAI,OAAOA,KAAS,eAClBA,IAAO,WAAY;AAAA,EAAA;AAGrB,MAAIC,IAAiB,CAAC,MAAM,QAAQF,CAAI;AACxC,WAASG,EAAY/B,GAAK;AACxB,WAAI8B,IAAuB,KACpBhE,GAAE,QAAQ8D,GAAM5B,CAAG,MAAM;AAAA,EACjC;AAED,MAAIgC,IAAa,CAAA,GACbC,IAAW;AAEf,SAAO;AAAA,IACL,aAAa,SAAUjC,GAAKR,GAAMrC,GAAS;AACzC,UAAI4E,EAAY/B,CAAG;AACjB,YAAI7C,EAAQ,WAAW;AACrB,cAAIqB,IAAM,cACN0D,IAAM/E,EAAQ,WAAWqB,EAAI;AACjC,iBAAAwD,EAAW,KAAK;AAAA,YACdC,MAAa,KAAQA,IAAW9E,EAAQ;AAAA,YACxC+E;AAAA,UACZ,CAAW,GACDD,IAAW,IACJzD;AAAA,QACjB;AACU,iBAAKyD,MACHA,IAAW9E,EAAQ,WAEd;AAAA;AAGT,eAAO0E,EAAK7B,GAAKR,GAAMrC,CAAO;AAAA,IAEjC;AAAA,IACD,QAAQ,SAAUqC,GAAM;AACtB,UAAI2C,IAAU,IACV/D,IAAU;AACdN,aAAAA,GAAE,QAAQkE,GAAY,SAAUI,GAAK;AACnC,QAAAD,KAAW3C,EAAK,MAAMpB,GAASgE,EAAI,CAAC,CAAC,GACrChE,IAAUgE,EAAI,CAAC;AAAA,MACvB,CAAO,GACDD,KAAW3C,EAAK,MAAMpB,CAAO,GACtB+D;AAAA,IACR;AAAA,EACL;AACA;AAQA,SAASE,GAAgB7C,GAAM;AAG7B,WAFI8C,IAAU,IACVlE,IAAU,GACPA,IAAUoB,EAAK,UAAQ;AAC5B,QAAI7E,IAAI6E,EAAK,QAAQ,QAAQpB,CAAO;AACpC,QAAIzD,MAAM,IAAI;AACZ,MAAA2H,KAAW9C,EAAK,MAAMpB,CAAO;AAC7B;AAAA,IACD;AACD,IAAAkE,KAAW9C,EAAK,MAAMpB,GAASzD,CAAC;AAChC,QAAIgD,IAAI6B,EAAK,QAAQ,OAAO7E,CAAC;AAC7B,QAAIgD,MAAM;AACR;AAEF,IAAAS,IAAUT,IAAI;AAAA,EACf;AACD,SAAO2E;AACT;AAQA,SAASC,GAAe/C,GAAM;AAC5B,MAAIgD,IAAQhD,EAAK,MAAM,EAAE;AACzB,SAAAgD,IAAQA,EAAM,OAAO,SAAUC,GAAM;AACnC,QAAIhE,IAAIgE,EAAK,WAAW,CAAC;AACzB,WAAIhE,MAAM,MAAY,KAClBA,KAAK,KACHA,MAAM,MAAMA,MAAM,KAGjB;AAAA,EACX,CAAG,GACM+D,EAAM,KAAK,EAAE;AACtB;AAEiBjF,EAAA,YAAGT,GAAsB;AACfS,EAAA,sBAAGT;AACjBS,EAAA,QAAGwC;AACGxC,EAAA,cAAG0C;AACL1C,EAAA,YAAG2C;AACG3C,EAAA,kBAAG4C;AACL5C,EAAA,gBAAGD;AACNC,EAAA,aAAG6C;AACF7C,EAAA,cAAG2D;AACD3D,EAAA,gBAAG4D;AACE5D,EAAA,qBAAG6D;AACI7D,EAAA,4BAAG+D;AACF/D,EAAA,6BAAGgE;AACZhE,EAAA,oBAAGiD;AACLjD,EAAA,kBAAGqD;AACCrD,EAAA,sBAAGmE;AACVnE,EAAA,eAAGoE;AACApE,EAAA,kBAAG8E;AACJ9E,EAAA,iBAAGgF;AACAhF,EAAA,oBAAG;AACXA,EAAA,YAAGuC;AACpBvC,EAAA,yBAAiCsC;aCtc7B/B,KAAIC;AAQR,SAAS2E,GAAWlD,GAAM;AACxB,MAAI,IAAI1B,GAAE,WAAW0B,CAAI,GACrBmD;AACJ,SAAI,MAAM,KACRA,IAAUnD,EAAK,MAAM,GAAG,EAAE,IAE1BmD,IAAUnD,EAAK,MAAM,GAAG,IAAI,CAAC,GAE/BmD,IAAU7E,GAAE,KAAK6E,CAAO,EAAE,YAAW,GACjCA,EAAQ,MAAM,GAAG,CAAC,MAAM,QAAKA,IAAUA,EAAQ,MAAM,CAAC,IACtDA,EAAQ,MAAM,EAAE,MAAM,QAAKA,IAAUA,EAAQ,MAAM,GAAG,EAAE,IACrDA;AACT;AAQA,SAASC,GAAUpD,GAAM;AACvB,SAAOA,EAAK,MAAM,GAAG,CAAC,MAAM;AAC9B;AAUA,SAASqD,GAASrD,GAAMO,GAAOK,GAAY;AAGzC,MAAI+B,IAAU,IACV/D,IAAU,GACV0E,IAAW,IACXC,IAAa,IACbC,IAAa,GACbvB,IAAMjC,EAAK,QACXyD,IAAiB,IACjBC,IAAc;AAElB,EAAAC;AAAc,SAAKH,IAAa,GAAGA,IAAavB,GAAKuB,KAAc;AACjE,UAAIvE,IAAIe,EAAK,OAAOwD,CAAU;AAC9B,UAAIF,MAAa;AACf,YAAIrE,MAAM,KAAK;AACb,UAAAqE,IAAWE;AACX;AAAA,QACD;AAAA,iBAEGD,MAAe,IAAO;AACxB,YAAItE,MAAM,KAAK;AACb,UAAA0D,KAAW/B,EAAWZ,EAAK,MAAMpB,GAAS4E,CAAU,CAAC,GACrDF,IAAWE,GACX5E,IAAU4E;AACV;AAAA,QACD;AACD,YAAIvE,MAAM,OAAOuE,MAAevB,IAAM,GAAG;AACvC,UAAAU,KAAW/B,EAAWZ,EAAK,MAAMpB,GAAS0E,CAAQ,CAAC,GACnDI,IAAc1D,EAAK,MAAMsD,GAAUE,IAAa,CAAC,GACjDC,IAAiBP,GAAWQ,CAAW,GACvCf,KAAWpC;AAAA,YACT+C;AAAA,YACAX,EAAQ;AAAA,YACRc;AAAA,YACAC;AAAA,YACAN,GAAUM,CAAW;AAAA,UACjC,GACU9E,IAAU4E,IAAa,GACvBF,IAAW;AACX;AAAA,QACD;AACD,YAAIrE,MAAM,OAAOA,MAAM;AAIrB,mBAHI9D,IAAI,GACJyI,IAAK5D,EAAK,OAAOwD,IAAarI,CAAC,GAE5ByI,EAAG,KAAI,MAAO,MAAMA,MAAO,OAAK;AACrC,gBAAIA,MAAO,KAAK;AACd,cAAAL,IAAatE;AACb,uBAAS0E;AAAA,YACV;AACD,YAAAC,IAAK5D,EAAK,OAAOwD,IAAa,EAAErI,CAAC;AAAA,UAClC;AAAA,MAEX,WACY8D,MAAMsE,GAAY;AACpB,QAAAA,IAAa;AACb;AAAA,MACD;AAAA,IAGN;AACD,SAAI3E,IAAUqD,MACZU,KAAW/B,EAAWZ,EAAK,OAAOpB,CAAO,CAAC,IAGrC+D;AACT;AAEA,IAAIkB,KAA2B;AAS/B,SAASC,GAAU9D,GAAMxC,GAAQ;AAG/B,MAAIoB,IAAU,GACVmF,IAAc,GACdC,IAAW,CAAA,GACXC,IAAU,IACVhC,IAAMjC,EAAK;AAEf,WAASkE,EAAQzG,GAAMC,GAAO;AAG5B,QAFAD,IAAOa,GAAE,KAAKb,CAAI,GAClBA,IAAOA,EAAK,QAAQoG,IAA0B,EAAE,EAAE,eAC9C,EAAApG,EAAK,SAAS,IAClB;AAAA,UAAIuB,IAAMxB,EAAOC,GAAMC,KAAS,EAAE;AAClC,MAAIsB,KAAKgF,EAAS,KAAKhF,CAAG;AAAA;AAAA,EAC3B;AAGD,WAAS7D,IAAI,GAAGA,IAAI8G,GAAK9G,KAAK;AAC5B,QAAI8D,IAAIe,EAAK,OAAO7E,CAAC,GACjBgJ,GAAGhG;AACP,QAAI8F,MAAY,MAAShF,MAAM,KAAK;AAClC,MAAAgF,IAAUjE,EAAK,MAAMpB,GAASzD,CAAC,GAC/ByD,IAAUzD,IAAI,GACd4I,IAAc/D,EAAK,OAAOpB,CAAO,MAAM,OAAOoB,EAAK,OAAOpB,CAAO,MAAM,MAAMA,IAAUwF,GAAsBpE,GAAM7E,IAAI,CAAC;AACxH;AAAA,IACD;AACD,QAAI8I,MAAY,MAEZ9I,MAAM4I,GACN;AAEA,UADA5F,IAAI6B,EAAK,QAAQf,GAAG9D,IAAI,CAAC,GACrBgD,MAAM;AACR;AAEA,MAAAgG,IAAI7F,GAAE,KAAK0B,EAAK,MAAM+D,IAAc,GAAG5F,CAAC,CAAC,GACzC+F,EAAQD,GAASE,CAAC,GAClBF,IAAU,IACV9I,IAAIgD,GACJS,IAAUzD,IAAI;AACd;AAAA,IAEH;AAEH,QAAI,WAAW,KAAK8D,CAAC;AAEnB,UADAe,IAAOA,EAAK,QAAQ,aAAa,GAAG,GAChCiE,MAAY;AAEd,YADA9F,IAAIkG,GAAcrE,GAAM7E,CAAC,GACrBgD,MAAM,IAAI;AACZ,UAAAgG,IAAI7F,GAAE,KAAK0B,EAAK,MAAMpB,GAASzD,CAAC,CAAC,GACjC+I,EAAQC,CAAC,GACTF,IAAU,IACVrF,IAAUzD,IAAI;AACd;AAAA,QACV,OAAe;AACL,UAAAA,IAAIgD,IAAI;AACR;AAAA,QACD;AAAA,eAEDA,IAAImG,GAAgBtE,GAAM7E,IAAI,CAAC,GAC3BgD,MAAM,IAAI;AACZ,QAAAgG,IAAI7F,GAAE,KAAK0B,EAAK,MAAMpB,GAASzD,CAAC,CAAC,GACjCgJ,IAAII,GAAeJ,CAAC,GACpBD,EAAQD,GAASE,CAAC,GAClBF,IAAU,IACVrF,IAAUzD,IAAI;AACd;AAAA,MACV;AACU;AAAA,EAIP;AAED,SAAIyD,IAAUoB,EAAK,WACbiE,MAAY,KACdC,EAAQlE,EAAK,MAAMpB,CAAO,CAAC,IAE3BsF,EAAQD,GAASM,GAAejG,GAAE,KAAK0B,EAAK,MAAMpB,CAAO,CAAC,CAAC,CAAC,IAIzDN,GAAE,KAAK0F,EAAS,KAAK,GAAG,CAAC;AAClC;AAEA,SAASK,GAAchG,GAAK,GAAG;AAC7B,SAAO,IAAIA,EAAI,QAAQ,KAAK;AAC1B,QAAIY,IAAIZ,EAAI,CAAC;AACb,QAAIY,MAAM;AACV,aAAIA,MAAM,MAAY,IACf;AAAA,EACR;AACH;AAEA,SAASmF,GAAsB/F,GAAK,GAAG;AACrC,SAAO,IAAIA,EAAI,QAAQ,KAAK;AAC1B,QAAIY,IAAIZ,EAAI,CAAC;AACb,QAAIY,MAAM;AACV,aAAIA,MAAM,OAAOA,MAAM,MAAY,IAC5B;AAAA,EACR;AACH;AAEA,SAASqF,GAAgBjG,GAAK,GAAG;AAC/B,SAAO,IAAI,GAAG,KAAK;AACjB,QAAIY,IAAIZ,EAAI,CAAC;AACb,QAAIY,MAAM;AACV,aAAIA,MAAM,MAAY,IACf;AAAA,EACR;AACH;AAEA,SAASuF,GAAkBC,GAAM;AAC/B,SACGA,EAAK,CAAC,MAAM,OAAOA,EAAKA,EAAK,SAAS,CAAC,MAAM,OAC7CA,EAAK,CAAC,MAAM,OAAOA,EAAKA,EAAK,SAAS,CAAC,MAAM;AAMlD;AAEA,SAASF,GAAeE,GAAM;AAC5B,SAAID,GAAkBC,CAAI,IACjBA,EAAK,OAAO,GAAGA,EAAK,SAAS,CAAC,IAE9BA;AAEX;AAEgBvF,GAAA,WAAGmE;AACnBnE,GAAA,YAAoB4E;AC1PpB,IAAItE,KAAYjB,GAAqB,WACjCY,IAAUC,GACVF,KAASwF,IACTrB,KAAWnE,GAAO,UAClB4E,KAAY5E,GAAO,WACnBZ,KAAIqG;AAQR,SAAStF,GAAOC,GAAK;AACnB,SAA4BA,KAAQ;AACtC;AAUA,SAASsF,GAAS5E,GAAM;AACtB,MAAI,IAAI1B,GAAE,WAAW0B,CAAI;AACzB,MAAI,MAAM;AACR,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAASA,EAAKA,EAAK,SAAS,CAAC,MAAM;AAAA,IACzC;AAEE,EAAAA,IAAO1B,GAAE,KAAK0B,EAAK,MAAM,IAAI,GAAG,EAAE,CAAC;AACnC,MAAIoD,IAAYpD,EAAKA,EAAK,SAAS,CAAC,MAAM;AAC1C,SAAIoD,MAAWpD,IAAO1B,GAAE,KAAK0B,EAAK,MAAM,GAAG,EAAE,CAAC,IACvC;AAAA,IACL,MAAMA;AAAA,IACN,SAASoD;AAAA,EACb;AACA;AAQA,SAAS7D,GAAkBD,GAAK;AAC9B,MAAIN,IAAM,CAAA;AACV,WAAS7D,KAAKmE;AACZ,IAAAN,EAAI7D,CAAC,IAAImE,EAAInE,CAAC;AAEhB,SAAO6D;AACT;AAEA,SAAS6F,GAAgBvF,GAAK;AAC5B,MAAIN,IAAM,CAAA;AACV,WAAS7D,KAAKmE;AACZ,IAAI,MAAM,QAAQA,EAAInE,CAAC,CAAC,IACtB6D,EAAI7D,EAAE,aAAa,IAAImE,EAAInE,CAAC,EAAE,IAAI,SAAU+C,GAAM;AAChD,aAAOA,EAAK;IACpB,CAAO,IAEDc,EAAI7D,EAAE,YAAW,CAAE,IAAImE,EAAInE,CAAC;AAGhC,SAAO6D;AACT;AAWA,SAAS8F,GAAUnH,GAAS;AAC1B,EAAAA,IAAU4B,GAAkB5B,KAAW,CAAA,CAAE,GAErCA,EAAQ,mBACNA,EAAQ,eACV,QAAQ;AAAA,IACN;AAAA,EACR,GAEIA,EAAQ,cAAcwB,EAAQ,sBAE5BxB,EAAQ,aAAaA,EAAQ,YAC/BA,EAAQ,YAAYkH,GAAgBlH,EAAQ,aAAaA,EAAQ,SAAS,IAE1EA,EAAQ,YAAYwB,EAAQ,WAG9B,KAAK,oBAAoBxB,EAAQ,+BAA+B,KAAO,MAAMwB,EAAQ,mBAErFxB,EAAQ,QAAQA,EAAQ,SAASwB,EAAQ,OACzCxB,EAAQ,YAAYA,EAAQ,aAAawB,EAAQ,WACjDxB,EAAQ,cAAcA,EAAQ,eAAewB,EAAQ,aACrDxB,EAAQ,kBAAkBA,EAAQ,mBAAmBwB,EAAQ,iBAC7DxB,EAAQ,gBAAgBA,EAAQ,iBAAiBwB,EAAQ,eACzDxB,EAAQ,aAAaA,EAAQ,cAAcwB,EAAQ,YACnD,KAAK,UAAUxB,GAEXA,EAAQ,QAAQ,KAClB,KAAK,YAAY,MAEjBA,EAAQ,MAAMA,EAAQ,OAAO,CAAA,GAC7B,KAAK,YAAY,IAAI6B,GAAU7B,EAAQ,GAAG;AAE9C;AAQAmH,GAAU,UAAU,UAAU,SAAU9E,GAAM;AAI5C,MAFAA,IAAOA,KAAQ,IACfA,IAAOA,EAAK,YACR,CAACA;AAAM,WAAO;AAElB,MAAIP,IAAK,MACL9B,IAAU8B,EAAG,SACblC,IAAYI,EAAQ,WACpB4C,IAAQ5C,EAAQ,OAChB8C,IAAc9C,EAAQ,aACtB+C,IAAY/C,EAAQ,WACpBgD,IAAkBhD,EAAQ,iBAC1BG,IAAgBH,EAAQ,eACxBiD,IAAajD,EAAQ,YACrBoH,IAAoBtF,EAAG,mBACvBsB,IAAYtB,EAAG;AAGnB,EAAI9B,EAAQ,mBACVqC,IAAOb,EAAQ,eAAea,CAAI,IAI/BrC,EAAQ,oBACXqC,IAAOb,EAAQ,gBAAgBa,CAAI;AAIrC,MAAIgF,IAAqB;AACzB,EAAIrH,EAAQ,uBACVqH,IAAqB7F,EAAQ;AAAA,IAC3BxB,EAAQ;AAAA,IACR8C;AAAA,EACN,GACIA,IAAcuE,EAAmB;AAGnC,MAAIlC,IAAUO;AAAA,IACZrD;AAAA,IACA,SAAUN,GAAgBC,GAAUa,GAAKR,GAAMoD,GAAW;AACxD,UAAI6B,IAAO;AAAA,QACT,gBAAgBvF;AAAA,QAChB,UAAUC;AAAA,QACV,WAAWyD;AAAA,QACX,SAAS,OAAO,UAAU,eAAe,KAAK7F,GAAWiD,CAAG;AAAA,MACpE,GAGUxB,IAAMuB,EAAMC,GAAKR,GAAMiF,CAAI;AAC/B,UAAI,CAAC5F,GAAOL,CAAG;AAAG,eAAOA;AAEzB,UAAIiG,EAAK,SAAS;AAChB,YAAIA,EAAK;AACP,iBAAO,OAAOzE,IAAM;AAGtB,YAAI0E,IAAQN,GAAS5E,CAAI,GACrBmF,IAAgB5H,EAAUiD,CAAG,GAC7B4E,IAAYtB,GAAUoB,EAAM,MAAM,SAAUzH,GAAMC,GAAO;AAE3D,cAAI2H,IAAc/G,GAAE,QAAQ6G,GAAe1H,CAAI,MAAM,IACjDuB,IAAM0B,EAAUF,GAAK/C,GAAMC,GAAO2H,CAAW;AACjD,iBAAKhG,GAAOL,CAAG,IAEXqG,KAEF3H,IAAQI,EAAc0C,GAAK/C,GAAMC,GAAOqD,CAAS,GAC7CrD,IACKD,IAAO,MAAMsH,IAAoBrH,IAAQqH,IAEzCtH,MAITuB,IAAM2B,EAAgBH,GAAK/C,GAAMC,GAAO2H,CAAW,GAC9ChG,GAAOL,CAAG,IACf,SADyBA,KAbFA;AAAA,QAgBnC,CAAS;AAGD,eAAAgB,IAAO,MAAMQ,GACT4E,MAAWpF,KAAQ,MAAMoF,IACzBF,EAAM,YAASlF,KAAQ,OAC3BA,KAAQ,KACDA;AAAA,MACf;AAGQ,eADAhB,IAAMyB,EAAYD,GAAKR,GAAMiF,CAAI,GAC5B5F,GAAOL,CAAG,IACR4B,EAAWZ,CAAI,IADGhB;AAAA,IAG5B;AAAA,IACD4B;AAAA,EACJ;AAGE,SAAIoE,MACFlC,IAAUkC,EAAmB,OAAOlC,CAAO,IAGtCA;AACT;AAEA,IAAA7C,KAAiB6E;AAAA;ACjOjB,MAAI3F,IAAUZ,GACVW,IAASE,IACT0F,IAAYJ;AAShB,WAASY,EAAUtF,GAAMrC,GAAS;AAChC,QAAIsC,IAAM,IAAI6E,EAAUnH,CAAO;AAC/B,WAAOsC,EAAI,QAAQD,CAAI;AAAA,EACxB;AAED,EAAAE,IAAUzF,EAAiB,UAAA6K,GAC3BpF,EAAA,YAAoBoF,GACpBpF,EAAA,YAAoB4E,GAEnB,WAAY;AACX,aAAS3J,KAAKgE;AACZ,MAAAe,EAAQ/E,CAAC,IAAIgE,EAAQhE,CAAC;AAExB,aAASgD,KAAKe;AACZ,MAAAgB,EAAQ/B,CAAC,IAAIe,EAAOf,CAAC;AAAA,EAEzB,KAGI,OAAO,SAAW,QACpB,OAAO,YAAY1D,EAAO;AAI5B,WAAS8K,IAAc;AACrB,WACE,OAAO,OAAS,OAChB,OAAO,6BAA+B,OACtC,gBAAgB;AAAA,EAEnB;AACD,EAAIA,EAAW,MACb,KAAK,YAAY9K,EAAO;;;mCC9CpB+K,KAAc,i3JAEdC,KAAe,qmBASfC,KAAS,CAACC,GAAQC,MAAe;AACrC,aAAWC,KAAOD;AAChB,IAAAD,EAAOE,CAAG,IAAID,EAAWC,CAAG;AAE9B,SAAOF;AACT,GAgBMG,KAAU,WACVC,KAAQ,SACRC,KAAQ,SACRC,KAAe,gBACfC,KAAe,gBACfC,KAAS,UACTC,KAAQ,SACRC,KAAS,UACTC,KAAc,eACdC,KAAa;AAQnB,SAASC,GAAc/I,GAAMgJ,GAAQ;AACnC,SAAMhJ,KAAQgJ,MACZA,EAAOhJ,CAAI,IAAI,KAEVgJ,EAAOhJ,CAAI;AACpB;AAQA,SAASiJ,GAAYC,GAAGC,GAAOH,GAAQ;AACrC,EAAIG,EAAMd,EAAO,MACfc,EAAMX,EAAY,IAAI,IACtBW,EAAMV,EAAY,IAAI,KAEpBU,EAAMb,EAAK,MACba,EAAMX,EAAY,IAAI,IACtBW,EAAMZ,EAAK,IAAI,KAEbY,EAAMX,EAAY,MACpBW,EAAMV,EAAY,IAAI,KAEpBU,EAAMZ,EAAK,MACbY,EAAMV,EAAY,IAAI,KAEpBU,EAAMV,EAAY,MACpBU,EAAMT,EAAM,IAAI,KAEdS,EAAMR,EAAK,MACbQ,EAAMT,EAAM,IAAI;AAElB,aAAWU,KAAKD,GAAO;AACrB,UAAME,IAAQN,GAAcK,GAAGJ,CAAM;AACrC,IAAIK,EAAM,QAAQH,CAAC,IAAI,KACrBG,EAAM,KAAKH,CAAC;AAAA,EAEf;AACH;AAQA,SAASI,GAAcJ,GAAGF,GAAQ;AAChC,QAAM/J,IAAS,CAAA;AACf,aAAWuC,KAAKwH;AACd,IAAIA,EAAOxH,CAAC,EAAE,QAAQ0H,CAAC,KAAK,MAC1BjK,EAAOuC,CAAC,IAAI;AAGhB,SAAOvC;AACT;AAoBA,SAASsK,EAAMC,GAAO;AACpB,EAAIA,MAAU,WACZA,IAAQ,OAIV,KAAK,IAAI,IAGT,KAAK,KAAK,IAEV,KAAK,KAAK,MAEV,KAAK,IAAIA;AACX;AAMAD,EAAM,SAAS,CAAA;AACfA,EAAM,YAAY;AAAA,EAChB,UAAU;AACR,WAAO,CAAC,CAAC,KAAK;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,GAAGE,GAAO;AACR,UAAMC,IAAQ,MACRC,IAAYD,EAAM,EAAED,CAAK;AAC/B,QAAIE;AACF,aAAOA;AAET,aAASjM,IAAI,GAAGA,IAAIgM,EAAM,GAAG,QAAQhM,KAAK;AACxC,YAAMkM,IAAQF,EAAM,GAAGhM,CAAC,EAAE,CAAC,GACrBiM,IAAYD,EAAM,GAAGhM,CAAC,EAAE,CAAC;AAC/B,UAAIiM,KAAaC,EAAM,KAAKH,CAAK;AAC/B,eAAOE;AAAA,IAEV;AAED,WAAOD,EAAM;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,IAAID,GAAOI,GAAW;AACpB,WAAIA,MAAc,WAChBA,IAAY,KAEPA,IAAYJ,KAAS,KAAK,IAAI,CAAC,CAAC,KAAK,GAAGA,CAAK;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASD,GAAGK,GAAQlF,GAAMuE,GAAOH,GAAQ;AAC9B,aAAStL,IAAI,GAAGA,IAAIoM,EAAO,QAAQpM;AACjC,WAAK,GAAGoM,EAAOpM,CAAC,GAAGkH,GAAMuE,GAAOH,CAAM;AAAA,EAEzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD,GAAGe,GAAQnF,GAAMuE,GAAOH,GAAQ;AAC9B,IAAAA,IAASA,KAAUO,EAAM;AACzB,QAAII;AACJ,WAAI/E,KAAQA,EAAK,IACf+E,IAAY/E,KAGZ+E,IAAY,IAAIJ,EAAM3E,CAAI,GACtBuE,KAASH,KACXC,GAAYrE,GAAMuE,GAAOH,CAAM,IAGnC,KAAK,GAAG,KAAK,CAACe,GAAQJ,CAAS,CAAC,GACzBA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWD,GAAGF,GAAO7E,GAAMuE,GAAOH,GAAQ;AAC7B,QAAIU,IAAQ;AACZ,UAAMlF,IAAMiF,EAAM;AAClB,QAAI,CAACjF;AACH,aAAOkF;AAET,aAAShM,IAAI,GAAGA,IAAI8G,IAAM,GAAG9G;AAC3B,MAAAgM,IAAQA,EAAM,GAAGD,EAAM/L,CAAC,CAAC;AAE3B,WAAOgM,EAAM,GAAGD,EAAMjF,IAAM,CAAC,GAAGI,GAAMuE,GAAOH,CAAM;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2BD,GAAGS,GAAO7E,GAAMuE,GAAOH,GAAQ;AAC7B,IAAAA,IAASA,KAAUO,EAAM;AACzB,UAAMG,IAAQ;AAGd,QAAI9E,KAAQA,EAAK;AACf,aAAA8E,EAAM,EAAED,CAAK,IAAI7E,GACVA;AAET,UAAMsE,IAAItE;AAIV,QAAI+E,GACFK,IAAgBN,EAAM,GAAGD,CAAK;AAUhC,QATIO,KACFL,IAAY,IAAIJ,KAChBtB,GAAO0B,EAAU,GAAGK,EAAc,CAAC,GACnCL,EAAU,GAAG,KAAK,MAAMA,EAAU,IAAIK,EAAc,EAAE,GACtDL,EAAU,KAAKK,EAAc,IAC7BL,EAAU,IAAIK,EAAc,KAE5BL,IAAY,IAAIJ,KAEdL,GAAG;AAEL,UAAIF;AACF,YAAIW,EAAU,KAAK,OAAOA,EAAU,KAAM,UAAU;AAClD,gBAAMM,IAAWhC,GAAOqB,GAAcK,EAAU,GAAGX,CAAM,GAAGG,CAAK;AACjE,UAAAF,GAAYC,GAAGe,GAAUjB,CAAM;AAAA,QAChC;AAAM,UAAIG,KACTF,GAAYC,GAAGC,GAAOH,CAAM;AAGhC,MAAAW,EAAU,IAAIT;AAAA,IACf;AAED,WAAAQ,EAAM,EAAED,CAAK,IAAIE,GACVA;AAAA,EACR;AACH;AAWA,MAAMO,IAAK,CAACR,GAAOD,GAAO7E,GAAMuE,GAAOH,MAAWU,EAAM,GAAGD,GAAO7E,GAAMuE,GAAOH,CAAM,GAU/EmB,IAAK,CAACT,GAAOK,GAAQnF,GAAMuE,GAAOH,MAAWU,EAAM,GAAGK,GAAQnF,GAAMuE,GAAOH,CAAM,GAUjFoB,KAAK,CAACV,GAAOD,GAAO7E,GAAMuE,GAAOH,MAAWU,EAAM,GAAGD,GAAO7E,GAAMuE,GAAOH,CAAM,GAU/EqB,IAAK,CAACX,GAAOD,GAAO7E,GAAMuE,GAAOH,MAAWU,EAAM,GAAGD,GAAO7E,GAAMuE,GAAOH,CAAM,GAQ/EsB,KAAO,QACPC,KAAQ,SAGRC,KAAY,aAGZC,KAAM,OAGNC,KAAO,QAKPC,KAAS,UAKTC,KAAe,gBAGfC,KAAM,OAGNC,KAAK,MAGLC,KAAO,MAKPC,KAAY,aACZC,KAAa,cACbC,KAAc,eACdC,KAAe,gBACfC,KAAY,aACZC,KAAa,cACbC,KAAmB,oBACnBC,KAAoB,qBACpBC,KAAqB,sBACrBC,KAAsB,uBACtBC,KAAoB,qBACpBC,KAAqB,sBACrBC,KAAyB,0BACzBC,KAA0B,2BAC1BC,KAAoB,qBACpBC,KAAuB,wBAGvBC,KAAY,aACZC,KAAa,cACbC,KAAW,YACXC,KAAK,MACLC,KAAY,aACZC,KAAW,YACXC,KAAQ,SACRC,KAAQ,SACRC,KAAQ,SACRC,KAAS,UACTC,KAAM,OACNC,KAAS,UACTC,KAAc,eACdC,KAAS,UACTC,KAAU,WACVC,KAAO,QACPC,KAAO,QACPC,KAAQ,SACRC,KAAQ,SACRC,KAAQ,SAERC,KAAO,QACPC,KAAQ,SACRC,KAAQ,SACRC,KAAa,cAGbC,KAAU,SAGVC,KAAM;AAEZ,IAAIC,KAAkB,uBAAO,OAAO;AAAA,EACnC,WAAW;AAAA,EACX,MAAMpD;AAAA,EACN,OAAOC;AAAA,EACP,WAAWC;AAAA,EACX,KAAKC;AAAA,EACL,MAAMC;AAAA,EACN,QAAQC;AAAA,EACR,cAAcC;AAAA,EACd,KAAKC;AAAA,EACL,IAAIC;AAAA,EACJ,IAAIC;AAAA,EACJ,WAAWC;AAAA,EACX,YAAYC;AAAA,EACZ,aAAaC;AAAA,EACb,cAAcC;AAAA,EACd,WAAWC;AAAA,EACX,YAAYC;AAAA,EACZ,kBAAkBC;AAAA,EAClB,mBAAmBC;AAAA,EACnB,oBAAoBC;AAAA,EACpB,qBAAqBC;AAAA,EACrB,mBAAmBC;AAAA,EACnB,oBAAoBC;AAAA,EACpB,wBAAwBC;AAAA,EACxB,yBAAyBC;AAAA,EACzB,mBAAmBC;AAAA,EACnB,sBAAsBC;AAAA,EACtB,WAAWC;AAAA,EACX,YAAYC;AAAA,EACZ,UAAUC;AAAA,EACV,IAAIC;AAAA,EACJ,WAAWC;AAAA,EACX,UAAUC;AAAA,EACV,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,QAAQC;AAAA,EACR,KAAKC;AAAA,EACL,QAAQC;AAAA,EACR,aAAaC;AAAA,EACb,QAAQC;AAAA,EACR,SAASC;AAAA,EACT,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,MAAMC;AAAA,EACN,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,YAAYC;AAAA,EACZ,OAAOC;AAAA,EACP,KAAKC;AACN,CAAC;AAGD,MAAME,KAAe,SACfC,KAAS,WAAA,UAAA,GAAQ,GACjBC,KAAQ,WAAA,cAAA,GAAY,GAEpBC,KAAQ,MACRC,KAAQ,MAgBRC,KAAK;AAAA,GACLC,KAAkB,KAClBC,KAAe;AAErB,IAAIC,KAAO,MACTC,KAAQ;AAuBV,SAASC,GAAOC,GAAe;AAC7B,EAAIA,MAAkB,WACpBA,IAAgB,CAAA;AAIlB,QAAMtF,IAAS,CAAA;AACf,EAAAO,EAAM,SAASP;AAEf,QAAMuF,IAAQ,IAAIhF;AAClB,EAAI4E,MAAQ,SACVA,KAAOK,GAAWzG,EAAW,IAE3BqG,MAAS,SACXA,KAAQI,GAAWxG,EAAY,IAIjCqC,EAAGkE,GAAO,KAAKtC,EAAU,GACzB5B,EAAGkE,GAAO,KAAKvD,EAAS,GACxBX,EAAGkE,GAAO,KAAKtD,EAAU,GACzBZ,EAAGkE,GAAO,KAAKrD,EAAW,GAC1Bb,EAAGkE,GAAO,KAAKpD,EAAY,GAC3Bd,EAAGkE,GAAO,KAAKnD,EAAS,GACxBf,EAAGkE,GAAO,KAAKlD,EAAU,GACzBhB,EAAGkE,GAAO,KAAKjD,EAAgB,GAC/BjB,EAAGkE,GAAO,KAAKhD,EAAiB,GAChClB,EAAGkE,GAAO,KAAK/C,EAAkB,GACjCnB,EAAGkE,GAAO,KAAK9C,EAAmB,GAClCpB,EAAGkE,GAAO,KAAK7C,EAAiB,GAChCrB,EAAGkE,GAAO,KAAK5C,EAAkB,GACjCtB,EAAGkE,GAAO,KAAK3C,EAAsB,GACrCvB,EAAGkE,GAAO,KAAK1C,EAAuB,GACtCxB,EAAGkE,GAAO,KAAKzC,EAAiB,GAChCzB,EAAGkE,GAAO,KAAKxC,EAAoB,GACnC1B,EAAGkE,GAAO,KAAKvC,EAAS,GACxB3B,EAAGkE,GAAO,KAAKrC,EAAQ,GACvB7B,EAAGkE,GAAO,KAAKpC,EAAE,GACjB9B,EAAGkE,GAAO,KAAKlC,EAAQ,GACvBhC,EAAGkE,GAAO,KAAKjC,EAAK,GACpBjC,EAAGkE,GAAO,KAAKhC,EAAK,GACpBlC,EAAGkE,GAAO,KAAK/B,EAAK,GACpBnC,EAAGkE,GAAO,KAAK9B,EAAM,GACrBpC,EAAGkE,GAAO,KAAK7B,EAAG,GAClBrC,EAAGkE,GAAO,KAAK5B,EAAM,GACrBtC,EAAGkE,GAAO,KAAK3B,EAAW,GAC1BvC,EAAGkE,GAAO,KAAK1B,EAAM,GACrBxC,EAAGkE,GAAO,KAAKzB,EAAO,GACtBzC,EAAGkE,GAAO,KAAKxB,EAAI,GACnB1C,EAAGkE,GAAO,KAAKvB,EAAI,GACnB3C,EAAGkE,GAAO,KAAKtB,EAAK,GACpB5C,EAAGkE,GAAO,KAAKrB,EAAK,GACpB7C,EAAGkE,GAAO,KAAKpB,EAAK,GACpB9C,EAAGkE,GAAO,KAAKlB,EAAK,GACpBhD,EAAGkE,GAAO,KAAKnB,EAAI,GACnB/C,EAAGkE,GAAO,KAAKjB,EAAK,GACpBjD,EAAGkE,GAAO,KAAKhB,EAAU,GACzBlD,EAAGkE,GAAO,MAAMnC,EAAS;AACzB,QAAMqC,IAAMtE,EAAGoE,GAAOT,IAAOjD,IAAK;AAAA,IAChC,CAACxC,EAAO,GAAG;AAAA,EACf,CAAG;AACD,EAAA8B,EAAGsE,GAAKX,IAAOW,CAAG;AAGlB,QAAMC,IAAOvE,EAAGoE,GAAOZ,IAAcrD,IAAM;AAAA,IACzC,CAAChC,EAAK,GAAG;AAAA,EACb,CAAG;AACD,EAAA6B,EAAGuE,GAAMf,IAAce,CAAI;AAG3B,QAAMC,IAAQxE,EAAGoE,GAAOX,IAAQrD,IAAO;AAAA,IACrC,CAAChC,EAAK,GAAG;AAAA,EACb,CAAG;AACD,EAAA4B,EAAGwE,GAAOhB,EAAY,GACtBxD,EAAGwE,GAAOf,IAAQe,CAAK;AAKvB,QAAMC,IAAKzE,EAAGoE,GAAOR,IAAOjD,IAAI;AAAA,IAC9B,CAAChC,EAAU,GAAG;AAAA,EAClB,CAAG;AACD,EAAAuB,EAAGkE,GAAOP,IAAIjD,IAAM;AAAA,IAClB,CAACjC,EAAU,GAAG;AAAA,EAClB,CAAG,GACDuB,EAAGuE,GAAIZ,EAAE,GACT7D,EAAGyE,GAAIb,IAAOa,CAAE;AAIhB,QAAMC,IAAQ1E,EAAGoE,GAAOV,IAAOL,IAAS;AAAA,IACtC,CAAC7E,EAAK,GAAG;AAAA,EACb,CAAG;AACD,EAAAwB,EAAG0E,GAAOhB,IAAOgB,CAAK,GACtBxE,EAAGwE,GAAOZ,IAAiBY,CAAK;AAGhC,QAAMC,IAAczE,EAAGwE,GAAOX,EAAY;AAC1C,EAAA/D,EAAG2E,GAAajB,IAAOgB,CAAK;AAK5B,QAAME,IAAS,CAAC,CAACpB,IAAce,CAAI,CAAC,GAC9BM,IAAU,CAAC,CAACrB,IAAc,IAAI,GAAG,CAACC,IAAQe,CAAK,CAAC;AACtD,WAASjR,IAAI,GAAGA,IAAIyQ,GAAK,QAAQzQ;AAC/B,IAAAuR,GAAOV,GAAOJ,GAAKzQ,CAAC,GAAG+M,IAAKH,IAAMyE,CAAM;AAE1C,WAASrR,IAAI,GAAGA,IAAI0Q,GAAM,QAAQ1Q;AAChC,IAAAuR,GAAOV,GAAOH,GAAM1Q,CAAC,GAAGgN,IAAMH,IAAOyE,CAAO;AAE9C,EAAA/F,GAAYwB,IAAK;AAAA,IACf,KAAK;AAAA,IACL,OAAO;AAAA,EACR,GAAEzB,CAAM,GACTC,GAAYyB,IAAM;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,EACR,GAAE1B,CAAM,GAKTiG,GAAOV,GAAO,QAAQ5D,IAAQL,IAAMyE,CAAM,GAC1CE,GAAOV,GAAO,UAAU5D,IAAQL,IAAMyE,CAAM,GAC5CE,GAAOV,GAAO,QAAQ3D,IAAcN,IAAMyE,CAAM,GAChDE,GAAOV,GAAO,SAAS3D,IAAcN,IAAMyE,CAAM,GACjDE,GAAOV,GAAO,OAAO3D,IAAcN,IAAMyE,CAAM,GAC/CE,GAAOV,GAAO,QAAQ3D,IAAcN,IAAMyE,CAAM,GAChD9F,GAAY0B,IAAQ;AAAA,IAClB,QAAQ;AAAA,IACR,OAAO;AAAA,EACR,GAAE3B,CAAM,GACTC,GAAY2B,IAAc;AAAA,IACxB,aAAa;AAAA,IACb,OAAO;AAAA,EACR,GAAE5B,CAAM,GAGTsF,IAAgBA,EAAc,KAAK,CAACY,GAAGC,MAAMD,EAAE,CAAC,IAAIC,EAAE,CAAC,IAAI,IAAI,EAAE;AACjE,WAASzR,IAAI,GAAGA,IAAI4Q,EAAc,QAAQ5Q,KAAK;AAC7C,UAAM0R,IAAMd,EAAc5Q,CAAC,EAAE,CAAC,GAExByL,IADqBmF,EAAc5Q,CAAC,EAAE,CAAC,IACV;AAAA,MACjC,CAACkL,EAAM,GAAG;AAAA,IAChB,IAAQ;AAAA,MACF,CAACC,EAAW,GAAG;AAAA,IACrB;AACI,IAAIuG,EAAI,QAAQ,GAAG,KAAK,IACtBjG,EAAMT,EAAM,IAAI,KACNiF,GAAa,KAAKyB,CAAG,IAEtBtB,GAAM,KAAKsB,CAAG,IACvBjG,EAAMX,EAAY,IAAI,KAEtBW,EAAMb,EAAK,IAAI,KAJfa,EAAMd,EAAO,IAAI,IAMnB+B,GAAGmE,GAAOa,GAAKA,GAAKjG,CAAK;AAAA,EAC1B;AAGD,SAAAiB,GAAGmE,GAAO,aAAa/D,IAAW;AAAA,IAChC,OAAO;AAAA,EACX,CAAG,GAGD+D,EAAM,KAAK,IAAIhF,EAAMkE,EAAG,GACjB;AAAA,IACL,OAAOc;AAAA,IACP,QAAQtG,GAAO;AAAA,MACb,QAAAe;AAAA,IACD,GAAE0E,EAAE;AAAA,EACT;AACA;AAWA,SAAS2B,GAAMC,GAAO1O,GAAK;AAKzB,QAAM2O,IAAWC,GAAc5O,EAAI,QAAQ,UAAU,CAAAY,MAAKA,EAAE,YAAa,CAAA,CAAC,GACpEiO,IAAYF,EAAS,QACrBG,IAAS,CAAA;AAIf,MAAIC,IAAS,GAGTC,IAAa;AAGjB,SAAOA,IAAaH,KAAW;AAC7B,QAAI/F,IAAQ4F,GACR3F,IAAY,MACZkG,IAAc,GACdC,IAAkB,MAClBC,IAAe,IACfC,IAAoB;AACxB,WAAOJ,IAAaH,MAAc9F,IAAYD,EAAM,GAAG6F,EAASK,CAAU,CAAC;AACzE,MAAAlG,IAAQC,GAGJD,EAAM,aACRqG,IAAe,GACfC,IAAoB,GACpBF,IAAkBpG,KACTqG,KAAgB,MACzBA,KAAgBR,EAASK,CAAU,EAAE,QACrCI,MAEFH,KAAeN,EAASK,CAAU,EAAE,QACpCD,KAAUJ,EAASK,CAAU,EAAE,QAC/BA;AAIF,IAAAD,KAAUI,GACVH,KAAcI,GACdH,KAAeE,GAGfL,EAAO,KAAK;AAAA,MACV,GAAGI,EAAgB;AAAA;AAAA,MAEnB,GAAGlP,EAAI,MAAM+O,IAASE,GAAaF,CAAM;AAAA;AAAA,MAEzC,GAAGA,IAASE;AAAA;AAAA,MAEZ,GAAGF;AAAA;AAAA,IACT,CAAK;AAAA,EACF;AAED,SAAOD;AACT;AAaA,SAASF,GAAc5O,GAAK;AAC1B,QAAM3B,IAAS,CAAA,GACTuF,IAAM5D,EAAI;AAChB,MAAIqP,IAAQ;AACZ,SAAOA,IAAQzL,KAAK;AAClB,QAAI0L,IAAQtP,EAAI,WAAWqP,CAAK,GAC5BE,GACA3K,IAAO0K,IAAQ,SAAUA,IAAQ,SAAUD,IAAQ,MAAMzL,MAAQ2L,IAASvP,EAAI,WAAWqP,IAAQ,CAAC,KAAK,SAAUE,IAAS,QAASvP,EAAIqP,CAAK,IAC9IrP,EAAI,MAAMqP,GAAOA,IAAQ,CAAC;AAC5B,IAAAhR,EAAO,KAAKuG,CAAI,GAChByK,KAASzK,EAAK;AAAA,EACf;AACD,SAAOvG;AACT;AAWA,SAASgQ,GAAOvF,GAAOD,GAAOP,GAAGkH,GAAUC,GAAI;AAC7C,MAAIzL;AACJ,QAAMJ,IAAMiF,EAAM;AAClB,WAAS/L,IAAI,GAAGA,IAAI8G,IAAM,GAAG9G,KAAK;AAChC,UAAM8H,IAAOiE,EAAM/L,CAAC;AACpB,IAAIgM,EAAM,EAAElE,CAAI,IACdZ,IAAO8E,EAAM,EAAElE,CAAI,KAEnBZ,IAAO,IAAI2E,EAAM6G,CAAQ,GACzBxL,EAAK,KAAKyL,EAAG,SACb3G,EAAM,EAAElE,CAAI,IAAIZ,IAElB8E,IAAQ9E;AAAA,EACT;AACD,SAAAA,IAAO,IAAI2E,EAAML,CAAC,GAClBtE,EAAK,KAAKyL,EAAG,SACb3G,EAAM,EAAED,EAAMjF,IAAM,CAAC,CAAC,IAAII,GACnBA;AACT;AAQA,SAAS4J,GAAW8B,GAAS;AAC3B,QAAMC,IAAQ,CAAA,GACRC,IAAQ,CAAA;AACd,MAAI9S,IAAI,GACJ+S,IAAS;AACb,SAAO/S,IAAI4S,EAAQ,UAAQ;AACzB,QAAII,IAAgB;AACpB,WAAOD,EAAO,QAAQH,EAAQ5S,IAAIgT,CAAa,CAAC,KAAK;AACnD,MAAAA;AAGF,QAAIA,IAAgB,GAAG;AACrB,MAAAH,EAAM,KAAKC,EAAM,KAAK,EAAE,CAAC;AACzB,eAASG,IAAW,SAASL,EAAQ,UAAU5S,GAAGA,IAAIgT,CAAa,GAAG,EAAE,GAAGC,IAAW,GAAGA;AACvF,QAAAH,EAAM,IAAG;AAEX,MAAA9S,KAAKgT;AAAA,IACX;AACM,MAAAF,EAAM,KAAKF,EAAQ5S,CAAC,CAAC,GACrBA;AAAA,EAEH;AACD,SAAO6S;AACT;AAmFA,MAAMK,KAAW;AAAA,EACf,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,QAAQC;AAAA,EACR,YAAYA;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY,CAAE;AAAA,EACd,QAAQ;AACV;AAYA,SAASC,GAAQzO,GAAM0O,GAAe;AACpC,EAAIA,MAAkB,WACpBA,IAAgB;AAElB,MAAIC,IAAI/I,GAAO,CAAE,GAAE2I,EAAQ;AAC3B,EAAIvO,MACF2O,IAAI/I,GAAO+I,GAAG3O,aAAgByO,KAAUzO,EAAK,IAAIA,CAAI;AAIvD,QAAM4O,IAAcD,EAAE,YAChBE,IAAuB,CAAA;AAC7B,WAASxT,IAAI,GAAGA,IAAIuT,EAAY,QAAQvT;AACtC,IAAAwT,EAAqB,KAAKD,EAAYvT,CAAC,EAAE,YAAa,CAAA;AAGxD,OAAK,IAAIsT,GACLD,MACF,KAAK,gBAAgBA,IAEvB,KAAK,aAAaG;AACpB;AACAJ,GAAQ,YAAY;AAAA,EAClB,GAAGF;AAAA;AAAA;AAAA;AAAA,EAIH,YAAY,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKd,cAAcO,GAAI;AAChB,WAAOA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,MAAM3H,GAAO;AACX,WAAO,KAAK,IAAI,YAAYA,EAAM,SAAQ,GAAIA,CAAK;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcD,IAAIpB,GAAKgJ,GAAU5H,GAAO;AACxB,UAAM6H,IAAaD,KAAY;AAC/B,QAAIE,IAAS,KAAK,EAAElJ,CAAG;AACvB,WAAKkJ,MAGD,OAAOA,KAAW,YACpBA,IAAS9H,EAAM,KAAK8H,IAASA,EAAO9H,EAAM,CAAC,IAAIoH,GAASxI,CAAG,GACvD,OAAOkJ,KAAW,cAAcD,MAClCC,IAASA,EAAOF,GAAU5H,CAAK,MAExB,OAAO8H,KAAW,cAAcD,MACzCC,IAASA,EAAOF,GAAU5H,EAAM,GAAGA,CAAK,IAEnC8H;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,OAAOlJ,GAAKgJ,GAAU5H,GAAO;AAC3B,QAAI3H,IAAM,KAAK,EAAEuG,CAAG;AACpB,WAAI,OAAOvG,KAAQ,cAAcuP,KAAY,SAC3CvP,IAAMA,EAAIuP,GAAU5H,EAAM,GAAGA,CAAK,IAE7B3H;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQD,OAAO2H,GAAO;AACZ,UAAM2H,IAAK3H,EAAM,OAAO,IAAI;AAE5B,YADiB,KAAK,IAAI,UAAU,MAAMA,CAAK,KAAK,KAAK,eACzC2H,GAAI3H,EAAM,GAAGA,CAAK;AAAA,EACnC;AACH;AACA,SAASqH,GAAKU,GAAK;AACjB,SAAOA;AACT;AAkBA,SAASC,GAAWvR,GAAOyP,GAAQ;AACjC,OAAK,IAAI,SACT,KAAK,IAAIzP,GACT,KAAK,KAAKyP;AACZ;AAeA8B,GAAW,YAAY;AAAA,EACrB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKR,WAAW;AACT,WAAO,KAAK;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOD,OAAO5I,GAAQ;AACb,WAAO,KAAK;EACb;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,kBAAkB1I,GAAS;AACzB,UAAMqR,IAAM,KAAK,YACXE,IAAWvR,EAAQ,IAAI,YAAYqR,GAAK,IAAI,GAC5CG,IAAYxR,EAAQ,IAAI,UAAUqR,GAAK,IAAI;AACjD,WAAOE,KAAYC,EAAU,SAASD,IAAWC,EAAU,UAAU,GAAGD,CAAQ,IAAI,MAAMC;AAAA,EAC3F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,gBAAgBxR,GAAS;AACvB,WAAOA,EAAQ,IAAI,cAAc,KAAK,OAAOA,EAAQ,IAAI,iBAAiB,CAAC,GAAG,IAAI;AAAA,EACnF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,aAAa;AACX,WAAO,KAAK,GAAG,CAAC,EAAE;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,WAAW;AACT,WAAO,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC,EAAE;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUD,SAASyR,GAAU;AACjB,WAAIA,MAAa,WACfA,IAAWf,GAAS,kBAEf;AAAA,MACL,MAAM,KAAK;AAAA,MACX,OAAO,KAAK,SAAU;AAAA,MACtB,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK,OAAOe,CAAQ;AAAA,MAC1B,OAAO,KAAK,WAAY;AAAA,MACxB,KAAK,KAAK,SAAU;AAAA,IAC1B;AAAA,EACG;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,kBAAkBzR,GAAS;AACzB,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,OAAO,KAAK,kBAAkBA,CAAO;AAAA,MACrC,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK,gBAAgBA,CAAO;AAAA,MAClC,OAAO,KAAK,WAAY;AAAA,MACxB,KAAK,KAAK,SAAU;AAAA,IAC1B;AAAA,EACG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,SAASA,GAAS;AAChB,WAAOA,EAAQ,IAAI,YAAY,KAAK,SAAQ,GAAI,IAAI;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,OAAOA,GAAS;AACd,UAAMsJ,IAAQ,MACRoI,IAAO,KAAK,OAAO1R,EAAQ,IAAI,iBAAiB,CAAC,GACjD2R,IAAgB3R,EAAQ,IAAI,cAAc0R,GAAM,IAAI,GACpDlM,IAAUxF,EAAQ,IAAI,WAAW0R,GAAMpI,CAAK,GAC5CsI,IAAU,KAAK,kBAAkB5R,CAAO,GACxC6R,IAAa,CAAA,GACbC,IAAY9R,EAAQ,IAAI,aAAa0R,GAAMpI,CAAK,GAChDtB,IAAShI,EAAQ,IAAI,UAAU0R,GAAMpI,CAAK,GAC1CyI,IAAM/R,EAAQ,IAAI,OAAO0R,GAAMpI,CAAK,GACpC/B,IAAQvH,EAAQ,OAAO,cAAc0R,GAAMpI,CAAK,GAChD0I,IAAiBhS,EAAQ,OAAO,UAAU0R,GAAMpI,CAAK;AAC3D,WAAAuI,EAAW,OAAOF,GACdG,MACFD,EAAW,QAAQC,IAEjB9J,MACF6J,EAAW,SAAS7J,IAElB+J,MACFF,EAAW,MAAME,IAEfxK,KACFQ,GAAO8J,GAAYtK,CAAK,GAEnB;AAAA,MACL,SAAA/B;AAAA,MACA,YAAAqM;AAAA,MACA,SAAAD;AAAA,MACA,gBAAAI;AAAA,IACN;AAAA,EACG;AACH;AAQA,SAASC,GAAiBC,GAAMC,GAAO;AAAA,EACrC,MAAMC,UAAcd,GAAW;AAAA,IAC7B,YAAYvR,GAAOyP,GAAQ;AACzB,YAAMzP,GAAOyP,CAAM,GACnB,KAAK,IAAI0C;AAAA,IACV;AAAA,EACF;AACD,aAAWG,KAAKF;AACd,IAAAC,EAAM,UAAUC,CAAC,IAAIF,EAAME,CAAC;AAE9B,SAAAD,EAAM,IAAIF,GACHE;AACT;AAKA,MAAME,KAAQL,GAAiB,SAAS;AAAA,EACtC,QAAQ;AAAA,EACR,SAAS;AACP,WAAO,YAAY,KAAK;EACzB;AACH,CAAC,GAKKM,KAAON,GAAiB,MAAM,GAM9BO,KAAKP,GAAiB,IAAI,GAM1BQ,KAAMR,GAAiB,OAAO;AAAA,EAClC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQR,OAAOvJ,GAAQ;AACb,WAAIA,MAAW,WACbA,IAASgI,GAAS,kBAGb,KAAK,gBAAgB,KAAK,IAAI,GAAGhI,CAAM,MAAM,KAAK,CAAC;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,cAAc;AACZ,UAAM8G,IAAS,KAAK;AACpB,WAAOA,EAAO,UAAU,KAAKA,EAAO,CAAC,EAAE,MAAMlF,MAAakF,EAAO,CAAC,EAAE,MAAMnD;AAAA,EAC3E;AACH,CAAC,GA2BKqG,IAAY,CAAAC,MAAO,IAAItJ,EAAMsJ,CAAG;AAMtC,SAASC,GAAOC,GAAM;AACpB,MAAI;AAAA,IACF,QAAA/J;AAAA,EACD,IAAG+J;AAEJ,QAAMC,IAAchK,EAAO,OAAO,OAAO,CAACgD,IAAWE,IAAUC,IAAIC,IAAWC,IAAUC,IAAOG,IAAQE,IAAQE,IAAQhC,IAAKiC,IAASC,IAAMC,IAAMC,IAAOI,IAAOI,IAAKH,IAAOC,EAAU,CAAC,GAKhL0F,IAAiB,CAAChH,IAAYM,IAAOC,IAAOE,IAAKE,IAAaM,IAAOC,IAAOC,IAAM9B,IAAkBC,IAAmBP,IAAWC,IAAYE,IAAcD,IAAaE,IAAWC,IAAYG,IAAoBC,IAAqBC,IAAmBC,IAAoBC,IAAwBC,IAAyBC,IAAmBC,EAAoB,GAIxWmH,IAAqB,CAAClH,IAAWC,IAAYC,IAAUE,IAAWC,IAAUC,IAAOG,IAAQE,IAAQE,IAAQ7B,IAAWC,IAAY6B,IAASC,IAAMC,IAAMC,IAAOC,IAAOG,IAAOI,IAAKH,IAAOC,EAAU,GAMlMgB,IAAQqE,KACRO,IAAY9I,EAAGkE,GAAOjB,EAAK;AACjC,EAAApD,EAAGiJ,GAAWD,GAAoBC,CAAS,GAC3CjJ,EAAGiJ,GAAWnK,EAAO,QAAQmK,CAAS;AACtC,QAAMC,IAASR,EAAW,GACxBS,IAAST,EAAW,GACpBU,IAAcV,EAAS;AACzB,EAAA1I,EAAGqE,GAAOvF,EAAO,QAAQoK,CAAM,GAC/BlJ,EAAGqE,GAAOvF,EAAO,QAAQqK,CAAM,GAC/BnJ,EAAGqE,GAAOvF,EAAO,aAAasK,CAAW,GAEzCpJ,EAAGkJ,GAAQF,GAAoBC,CAAS,GACxCjJ,EAAGkJ,GAAQpK,EAAO,QAAQoK,CAAM;AAChC,QAAMG,IAAclJ,EAAG+I,GAAQjH,EAAE;AAEjC,EAAA9B,EAAG8I,GAAWhH,IAAIoH,CAAW,GAG7BlJ,EAAGgJ,GAAQlH,IAAIoH,CAAW,GAC1BlJ,EAAGiJ,GAAanH,IAAIoH,CAAW;AAC/B,QAAMC,IAAenJ,EAAG8I,GAAWzG,EAAG;AACtC,EAAAxC,EAAGsJ,GAAcN,GAAoBC,CAAS,GAC9CjJ,EAAGsJ,GAAcxK,EAAO,QAAQmK,CAAS;AACzC,QAAMM,IAAcb;AACpB,EAAA1I,EAAGqJ,GAAavK,EAAO,QAAQyK,CAAW,GAC1CvJ,EAAGuJ,GAAazK,EAAO,QAAQyK,CAAW;AAC1C,QAAMC,IAAiBrJ,EAAGoJ,GAAa/G,EAAG;AAC1C,EAAAxC,EAAGwJ,GAAgB1K,EAAO,QAAQyK,CAAW;AAC7C,QAAME,IAAUf,EAAUJ,EAAK;AAC/B,EAAAtI,EAAGwJ,GAAgB1K,EAAO,KAAK2K,CAAO,GACtCzJ,EAAGwJ,GAAgB1K,EAAO,MAAM2K,CAAO,GACvCtJ,EAAGkJ,GAAa/I,IAAWmJ,CAAO;AAGlC,QAAMC,IAAoBvJ,EAAGoJ,GAAa5G,EAAM;AAChD,EAAA3C,EAAG0J,GAAmB5K,EAAO,QAAQyK,CAAW,GAChDvJ,EAAGyJ,GAAS3K,EAAO,QAAQyK,CAAW,GACtCpJ,EAAGsJ,GAASjH,IAAKgH,CAAc,GAC/BrJ,EAAGsJ,GAAS9G,IAAQ+G,CAAiB;AAGrC,QAAMC,IAAaxJ,EAAGsJ,GAASpH,EAAK;AAEpC,EAAArC,EAAG2J,GAAY7K,EAAO,SAASwJ,EAAK;AAIpC,QAAMsB,IAAezJ,EAAG+I,GAAQvG,EAAM,GAChCkH,IAAY1J,EAAG+I,GAAQ1G,EAAG;AAChC,EAAAxC,EAAG4J,GAAc9K,EAAO,QAAQoK,CAAM,GACtClJ,EAAG6J,GAAWb,GAAoBC,CAAS,GAC3CjJ,EAAG6J,GAAW/K,EAAO,QAAQoK,CAAM;AACnC,QAAMY,IAAepB,EAAUD,EAAG;AAClC,EAAAzI,EAAG6J,GAAW/K,EAAO,KAAKgL,CAAY,GACtC9J,EAAG6J,GAAW/K,EAAO,MAAMgL,CAAY,GACvC9J,EAAG8J,GAAchL,EAAO,QAAQoK,CAAM,GACtClJ,EAAG8J,GAAcd,GAAoBC,CAAS,GAC9C9I,EAAG2J,GAActH,IAAKqH,CAAS,GAC/B1J,EAAG2J,GAAcnH,IAAQiH,CAAY,GACrCzJ,EAAG2J,GAAc7H,IAAIoH,CAAW;AAChC,QAAMU,IAAoB5J,EAAG2J,GAAczH,EAAK,GAC1C2H,IAAwBtB,EAAUD,EAAG;AAC3C,EAAAzI,EAAG+J,GAAmBjL,EAAO,SAASkL,CAAqB;AAG3D,QAAMC,IAAQvB,EAAUD,EAAG,GAGrByB,IAAexB;AAGrB,EAAA1I,EAAGiK,GAAOnB,GAAamB,CAAK,GAC5BjK,EAAGiK,GAAOlB,GAAgBmB,CAAY,GACtClK,EAAGkK,GAAcpB,GAAamB,CAAK,GACnCjK,EAAGkK,GAAcnB,GAAgBmB,CAAY,GAI7C/J,EAAG2J,GAAc3G,IAAO8G,CAAK,GAC7B9J,EAAG6J,GAAuB7G,IAAO8G,CAAK;AAGtC,QAAME,IAAchK,EAAGgJ,GAAQ9G,EAAK,GAC9B+H,IAAmBjK,EAAGiJ,GAAa/G,EAAK,GACxCgI,IAAwBlK,EAAGiK,GAAkBjH,EAAK,GAElDmH,IAAYnK,EAAGkK,GAAuBlH,EAAK;AAGjD,EAAAnD,EAAGmJ,GAAQrK,EAAO,QAAQoK,CAAM,GAChC/I,EAAGgJ,GAAQ3G,IAAKqH,CAAS,GACzB1J,EAAGgJ,GAAQxG,IAAQiH,CAAY,GAC/B5J,EAAGoJ,GAAatK,EAAO,QAAQoK,CAAM,GACrC/I,EAAGiJ,GAAa5G,IAAKqH,CAAS,GAC9B1J,EAAGiJ,GAAazG,IAAQiH,CAAY,GAGpC5J,EAAGmK,GAAarL,EAAO,QAAQmL,CAAK,GACpC9J,EAAGgK,GAAahH,IAAO8G,CAAK,GAC5BjK,EAAGsK,GAAWxL,EAAO,QAAQmL,CAAK,GAClCjK,EAAGsK,GAAWxB,GAAamB,CAAK,GAChC9J,EAAGmK,GAAWnH,IAAO8G,CAAK;AAC1B,QAAMM,IAAe;AAAA,IAAC,CAACzJ,IAAWC,EAAU;AAAA;AAAA,IAE5C,CAACC,IAAaC,EAAY;AAAA;AAAA,IAE1B,CAACC,IAAWC,EAAU;AAAA;AAAA,IAEtB,CAACC,IAAkBC,EAAiB;AAAA;AAAA,IAEpC,CAACC,IAAoBC,EAAmB;AAAA;AAAA,IAExC,CAACC,IAAmBC,EAAkB;AAAA;AAAA,IAEtC,CAACC,IAAwBC,EAAuB;AAAA;AAAA,IAEhD,CAACC,IAAmBC,EAAoB;AAAA;AAAA,EAC1C;AAEE,WAASrO,IAAI,GAAGA,IAAI+W,EAAa,QAAQ/W,KAAK;AAC5C,UAAM,CAACgX,GAAMC,CAAK,IAAIF,EAAa/W,CAAC,GAC9BkX,IAAUvK,EAAG8J,GAAOO,CAAI;AAG9B,IAAArK,EAAG+J,GAAcM,GAAME,CAAO,GAG9BvK,EAAGuK,GAASD,GAAOR,CAAK;AAKxB,UAAMU,IAAWjC,EAAUD,EAAG;AAC9B,IAAAzI,EAAG0K,GAAS5B,GAAa6B,CAAQ;AACjC,UAAMC,IAAclC;AACpB,IAAA1I,EAAG0K,GAAS3B,CAAc,GAG1B/I,EAAG2K,GAAU7B,GAAa6B,CAAQ,GAClC3K,EAAG2K,GAAU5B,GAAgB6B,CAAW,GACxC5K,EAAG4K,GAAa9B,GAAa6B,CAAQ,GACrC3K,EAAG4K,GAAa7B,GAAgB6B,CAAW,GAG3CzK,EAAGwK,GAAUF,GAAOR,CAAK,GACzB9J,EAAGyK,GAAaH,GAAOR,CAAK;AAAA,EAC7B;AACD,SAAA9J,EAAGkE,GAAO/D,IAAWwJ,CAAY,GACjC3J,EAAGkE,GAAOxD,IAAM2H,EAAE,GAEX;AAAA,IACL,OAAOnE;AAAA,IACP,QAAQb;AAAA,EACZ;AACA;AAYA,SAASqH,GAAIzF,GAAO7F,GAAOiG,GAAQ;AACjC,MAAIlL,IAAMkL,EAAO,QACbC,IAAS,GACTqF,IAAS,CAAA,GACTC,IAAa,CAAA;AACjB,SAAOtF,IAASnL,KAAK;AACnB,QAAIkF,IAAQ4F,GACR4F,IAAc,MACdvL,IAAY,MACZwL,IAAc,GACdrF,IAAkB,MAClBC,IAAe;AACnB,WAAOJ,IAASnL,KAAO,EAAE0Q,IAAcxL,EAAM,GAAGgG,EAAOC,CAAM,EAAE,CAAC;AAG9D,MAAAsF,EAAW,KAAKvF,EAAOC,GAAQ,CAAC;AAElC,WAAOA,IAASnL,MAAQmF,IAAYuL,KAAexL,EAAM,GAAGgG,EAAOC,CAAM,EAAE,CAAC;AAE1E,MAAAuF,IAAc,MACdxL,IAAQC,GAGJD,EAAM,aACRqG,IAAe,GACfD,IAAkBpG,KACTqG,KAAgB,KACzBA,KAEFJ,KACAwF;AAEF,QAAIpF,IAAe;AAIjB,MAAAJ,KAAUwF,GACNxF,IAASnL,MACXyQ,EAAW,KAAKvF,EAAOC,CAAM,CAAC,GAC9BA;AAAA,SAEG;AAGL,MAAIsF,EAAW,SAAS,MACtBD,EAAO,KAAKI,GAAe3C,IAAMhJ,GAAOwL,CAAU,CAAC,GACnDA,IAAa,CAAA,IAIftF,KAAUI,GACVoF,KAAepF;AAGf,YAAMsF,IAAQvF,EAAgB,GACxBwF,IAAY5F,EAAO,MAAMC,IAASwF,GAAaxF,CAAM;AAC3D,MAAAqF,EAAO,KAAKI,GAAeC,GAAO5L,GAAO6L,CAAS,CAAC;AAAA,IACpD;AAAA,EACF;AAGD,SAAIL,EAAW,SAAS,KACtBD,EAAO,KAAKI,GAAe3C,IAAMhJ,GAAOwL,CAAU,CAAC,GAE9CD;AACT;AAUA,SAASI,GAAeC,GAAO5L,GAAOiG,GAAQ;AAC5C,QAAM6F,IAAW7F,EAAO,CAAC,EAAE,GACrB8F,IAAS9F,EAAOA,EAAO,SAAS,CAAC,EAAE,GACnCzP,IAAQwJ,EAAM,MAAM8L,GAAUC,CAAM;AAC1C,SAAO,IAAIH,EAAMpV,GAAOyP,CAAM;AAChC;AAMA,MAAM+F,IAAO;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,YAAY,CAAE;AAAA,EACd,aAAa,CAAE;AAAA,EACf,eAAe,CAAE;AAAA,EACjB,aAAa;AACf;AAkHA,SAASC,KAAO;AAEd,EAAAD,EAAK,UAAUpH,GAAOoH,EAAK,aAAa;AACxC,WAAS/X,IAAI,GAAGA,IAAI+X,EAAK,WAAW,QAAQ/X;AAC1C,IAAA+X,EAAK,WAAW/X,CAAC,EAAE,CAAC,EAAE;AAAA,MACpB,SAAS+X,EAAK;AAAA,IACpB,CAAK;AAIH,EAAAA,EAAK,SAAS3C,GAAO2C,EAAK,QAAQ,MAAM;AACxC,WAAS/X,IAAI,GAAGA,IAAI+X,EAAK,YAAY,QAAQ/X;AAC3C,IAAA+X,EAAK,YAAY/X,CAAC,EAAE,CAAC,EAAE;AAAA,MACrB,SAAS+X,EAAK;AAAA,MACd,QAAQA,EAAK;AAAA,IACnB,CAAK;AAEH,EAAAA,EAAK,cAAc;AACrB;AAOA,SAASE,GAAS/U,GAAK;AACrB,SAAK6U,EAAK,eACRC,MAEKX,GAAIU,EAAK,OAAO,OAAO7U,GAAKyO,GAAMoG,EAAK,QAAQ,OAAO7U,CAAG,CAAC;AACnE;ACrvDA,IAAIgV,KAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvB,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,MAAM;AACR,GACIC,KAAc,yBACdC,KAAW,eACXC,KAAQ,oBACRC;AAAA;AAAA,EAA4B,WAAY;AAC1C,aAASA,EAAaC,GAAO;AAC3B,WAAK,QAAQA;AAAA,IACd;AACD,WAAAD,EAAa,UAAU,QAAQ,SAAUE,GAAQ;AAC/C,UAAKA,GAGL;AAAA,YAAIC,IAAUD,EAAO,MAAML,EAAW;AACtC,YAAIM;AACF,iBAAO,OAAO,aAAa,SAASA,EAAQ,CAAC,GAAG,EAAE,CAAC;AAGrD,YADAA,IAAUD,EAAO,MAAMJ,EAAQ,GAC3BK;AACF,iBAAO,OAAO,aAAa,SAASA,EAAQ,CAAC,GAAG,EAAE,CAAC;AAGrD,YADAA,IAAUD,EAAO,MAAMH,EAAK,GACxBI;AACF,iBAAO,KAAK,MAAMA,EAAQ,CAAC,CAAC,KAAK,MAAMA,EAAQ,CAAC,IAAI;AAAA;AAAA,IAE1D,GACSH;AAAA,EACT;GACII,KAAM,aACNC,KAAQ,YACRC,KAAO;AACX,SAASC,EAAQ/Q,GAAM;AACrB,SAAO4Q,GAAI,KAAK5Q,CAAI;AACtB;AACA,SAASgR,GAAQhR,GAAM;AACrB,SAAO6Q,GAAM,KAAK7Q,CAAI;AACxB;AACA,SAASiR,GAAgBhN,GAAO;AAC9B,SAAOA,EAAM,QAAQ6M,IAAM;AAAA,CAAI;AACjC;AACA,IAAII;AAAA;AAAA,EAAgC,WAAY;AAC9C,aAASA,EAAiBC,GAAUC,GAAcC,GAAM;AACtD,MAAIA,MAAS,WACXA,IAAO,eAET,KAAK,WAAWF,GAChB,KAAK,eAAeC,GACpB,KAAK,OAAOC,GACZ,KAAK,QAAQ,cACb,KAAK,OAAO,IACZ,KAAK,SAAS,IACd,KAAK,QAAQ,IACb,KAAK,QAAQ,IACb,KAAK,gBAAgB,IACrB,KAAK,SAAS;AAAA,QACZ,YAAY,WAAY;AACtB,cAAIrR,IAAO,KAAK;AAChB,cAAIA,MAAS,OAAO,CAAC,KAAK,gBAAe;AACvC,iBAAK;AAAA,cAAa;AAAA;AAAA,eAClB,KAAK,aAAY,GACjB,KAAK,QAAO;AAAA,eACP;AACL,gBAAI,KAAK,SAAS,gBAAgBA,MAAS;AAAA,GAAM;AAC/C,kBAAIzC,IAAM,KAAK,cAAc,YAAW;AACxC,eAAIA,MAAQ,SAASA,MAAQ,eAC3B,KAAK,QAAO;AAAA,YAEf;AACD,iBAAK;AAAA,cAAa;AAAA;AAAA,eAClB,KAAK,SAAS;UACf;AAAA,QACF;AAAA,QACD,MAAM,WAAY;AAChB,cAAIyC,IAAO,KAAK,QACZzC,IAAM,KAAK;AACf,UAAIyC,MAAS,OAAO,CAAC,KAAK,gBAAe,KACvC,KAAK,SAAS,cACd,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,aAAY,GACjB,KAAK,QAAO,KACHA,MAAS,OAAOzC,MAAQ,YAAYA,MAAQ,WACrD,KAAK,QAAO,GACZ,KAAK,SAAS,aAAa,KAAK,eAAc,KAAM,GAAG,MAEvD,KAAK,QAAO,GACZ,KAAK,SAAS,aAAayC,CAAI;AAAA,QAElC;AAAA,QACD,SAAS,WAAY;AACnB,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,MACX,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,MAClB,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,OAAOA,MAAS,OAAOgR,GAAQhR,CAAI,OACrD,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,gBAAgB,IACrB,KAAK,SAAS,iBACd,KAAK,gBAAgBA,CAAI;AAAA,QAE5B;AAAA,QACD,uBAAuB,WAAY;AACjC,cAAIA,IAAO,KAAK;AAChB,cAAIA,MAAS,OAAO,KAAK,KAAI,MAAO;AAClC,iBAAK,QAAO,GACZ,KAAK;AAAA,cAAa;AAAA;AAAA,eAClB,KAAK,SAAS;eACT;AACL,gBAAIsR,IAAetR,EAAK,YAAW,IAAK,KAAK,MAAM,UAAU,KAAK,OAAO,KAAK,QAAQ,CAAC,EAAE,YAAW;AACpG,YAAIsR,MAAiB,cACnB,KAAK,QAAO,GACZ,KAAK,QAAO,GACZ,KAAK,QAAO,GACZ,KAAK,QAAO,GACZ,KAAK,QAAO,GACZ,KAAK,QAAO,GACZ,KAAK;AAAA,cAAa;AAAA;AAAA,eACd,KAAK,SAAS,gBAAc,KAAK,SAAS;UAEjD;AAAA,QACF;AAAA,QACD,SAAS,WAAY;AACnB,cAAItR,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,KACd,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,mBAAmB,WAAY;AAC7B,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,MAGd,KAAK;AAAA,YAAa;AAAA;AAAA,aACd,KAAK,SAAS,uBAAqB,KAAK,SAAS,oBAAoBA,EAAK,YAAW,CAAE;AAAA,QAE9F;AAAA,QACD,aAAa,WAAY;AACvB,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,IACd,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OACd,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,YAAa;AAAA;AAAA,eAEd,KAAK,SAAS,uBAAqB,KAAK,SAAS,oBAAoBA,EAAK,YAAW,CAAE;AAAA,QAE9F;AAAA,QACD,kBAAkB,WAAY;AAC5B,cAAIA,IAAO,KAAK;AAChB,cAAI,CAAA+Q,EAAQ/Q,CAAI;AAET,gBAAIA,MAAS;AAClB,cAAI,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,gBAAa;AAAA;AAAA;iBACb;AACL,kBAAIuR,IAAevR,EAAK,YAAW,IAAK,KAAK,MAAM,UAAU,KAAK,OAAO,KAAK,QAAQ,CAAC,EAAE,YAAW,GAChGwR,IAAWD,EAAa,YAAW,MAAO,UAC1CE,IAAWF,EAAa,YAAW,MAAO;AAC9C,eAAIC,KAAYC,OACd,KAAK,QAAO,GACZ,KAAK,QAAO,GACZ,KAAK,QAAO,GACZ,KAAK,QAAO,GACZ,KAAK,QAAO,GACZ,KAAK,QAAO,IAEVD,IACF,KAAK;AAAA,gBAAa;AAAA;AAAA,kBACTC,KACT,KAAK;AAAA,gBAAa;AAAA;AAAA;YAErB;AAAA,QACF;AAAA,QAED,2BAA2B,WAAY;AACrC,cAAIzR,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,KACd,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,QAAO,KACHA,MAAS,OAClB,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,QAAO,KACHA,MAAS,OAClB,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,QAAO,KACHA,MAAS,QAClB,KAAK,QAAO,GACR,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,qCAAqC,WAAY;AAC/C,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,MACX,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OACd,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,YAAa;AAAA;AAAA,eAEd,KAAK,SAAS,mCAAiC,KAAK,SAAS,gCAAgCA,CAAI;AAAA,QAExG;AAAA,QACD,qCAAqC,WAAY;AAC/C,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,MACX,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OACd,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,YAAa;AAAA;AAAA,eAEd,KAAK,SAAS,mCAAiC,KAAK,SAAS,gCAAgCA,CAAI;AAAA,QAExG;AAAA,QACD,8BAA8B,WAAY;AACxC,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,IACd,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OACd,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,MAClB,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OAClB,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,0CAA0C,WAAY;AACpD,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,MAELA,MAAS,OACd,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,MAClB,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OAClB,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,qCAAqC,WAAY;AAC/C,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,MACX,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OACd,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,YAAa;AAAA;AAAA,eAEd,KAAK,SAAS,mCAAiC,KAAK,SAAS,gCAAgCA,CAAI;AAAA,QAExG;AAAA,QACD,qCAAqC,WAAY;AAC/C,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,MACX,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OACd,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,YAAa;AAAA;AAAA,eAEd,KAAK,SAAS,mCAAiC,KAAK,SAAS,gCAAgCA,CAAI;AAAA,QAExG;AAAA,QACD,8BAA8B,WAAY;AACxC,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,KAELA,MAAS,QACd,KAAK,SAAS,cAAY,KAAK,SAAS,cAC5C,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,cAAc,WAAY;AACxB,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,MACX,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OAClB,KAAK,SAAS,iBACd,KAAK;AAAA,YAAa;AAAA;AAAA,gBAElB,KAAK,SAAS,oBAAoBA,CAAI,GACtC,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,kBAAkB,WAAY;AAC5B,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,MACX,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OAClB,KAAK,SAAS,iBACd,KAAK;AAAA,YAAa;AAAA;AAAA,gBAElB,KAAK,SAAS,oBAAoB,GAAG,GACrC,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,SAAS,WAAY;AACnB,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,MACX,KAAK;AAAA,YAAa;AAAA;AAAA,cAElB,KAAK,SAAS,oBAAoBA,CAAI;AAAA,QAEzC;AAAA,QACD,gBAAgB,WAAY;AAC1B,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,MACX,KAAK;AAAA,YAAa;AAAA;AAAA,eAElB,KAAK,SAAS,oBAAoB,MAAMA,CAAI,GAC5C,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,YAAY,WAAY;AACtB,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,OACX,KAAK,SAAS,iBACd,KAAK;AAAA,YAAa;AAAA;AAAA,gBAElB,KAAK,SAAS,oBAAoB,OAAOA,CAAI,GAC7C,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,SAAS,WAAY;AACnB,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,IACd,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,MAClB,KAAK;AAAA,YAAa;AAAA;AAAA,cACTA,MAAS,OAClB,KAAK,SAAS,aACd,KAAK;AAAA,YAAa;AAAA;AAAA,eAElB,KAAK,gBAAgBA,CAAI;AAAA,QAE5B;AAAA,QACD,YAAY,WAAY;AACtB,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,KACd,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,gBAAgB,MACZA,MAAS,OAClB,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,gBAAgB,MACZA,MAAS,OAClB,KAAK,SAAS,aACd,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,gBAAgB,MAErB,KAAK,gBAAgBA,CAAI;AAAA,QAE5B;AAAA,QACD,qBAAqB,WAAY;AAC/B,cAAIA,IAAO,KAAK;AAChB,cAAI+Q,EAAQ/Q,CAAI,GAAG;AACjB,iBAAK,QAAO;AACZ;AAAA,UACV;AAAe,YAAIA,MAAS,OAClB,KAAK;AAAA,cAAa;AAAA;AAAA,eAClB,KAAK,QAAO,KACHA,MAAS,OAClB,KAAK,QAAO,GACZ,KAAK,SAAS,aACd,KAAK;AAAA,cAAa;AAAA;AAAA,iBACTA,MAAS,OAClB,KAAK,SAAS,kBAAkB,8CAA8C,GAC9E,KAAK;AAAA,cAAa;AAAA;AAAA,eAClB,KAAK,SAAS,kBACd,KAAK,QAAO,GACZ,KAAK,SAAS,sBAAsBA,CAAI,MAExC,KAAK;AAAA,cAAa;AAAA;AAAA,eAClB,KAAK,SAAS;QAEjB;AAAA,QACD,eAAe,WAAY;AACzB,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,KACd,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,QAAO,KACHA,MAAS,OAClB,KAAK,SAAS,oBAAoB,EAAK,GACvC,KAAK,SAAS,wBACd,KAAK,QAAO,GACZ,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,OAClB,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,QAAO,KACHA,MAAS,OAClB,KAAK,SAAS,oBAAoB,EAAK,GACvC,KAAK,SAAS,wBACd,KAAK,QAAO,GACZ,KAAK,SAAS,aACd,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,OAAOA,MAAS,OAAOA,MAAS,OAClD,KAAK,SAAS,kBAAkBA,IAAO,kDAAkD,GACzF,KAAK,QAAO,GACZ,KAAK,SAAS,sBAAsBA,CAAI,MAExC,KAAK,QAAO,GACZ,KAAK,SAAS,sBAAsBA,CAAI;AAAA,QAE3C;AAAA,QACD,oBAAoB,WAAY;AAC9B,cAAIA,IAAO,KAAK;AAChB,cAAI+Q,EAAQ/Q,CAAI,GAAG;AACjB,iBAAK,QAAO;AACZ;AAAA,UACV;AAAe,YAAIA,MAAS,OAClB,KAAK,SAAS,oBAAoB,EAAK,GACvC,KAAK,SAAS,wBACd,KAAK,QAAO,GACZ,KAAK;AAAA,cAAa;AAAA;AAAA,iBACTA,MAAS,OAClB,KAAK,QAAO,GACZ,KAAK;AAAA,cAAa;AAAA;AAAA,iBACTA,MAAS,OAClB,KAAK,SAAS,oBAAoB,EAAK,GACvC,KAAK,SAAS,wBACd,KAAK,QAAO,GACZ,KAAK,SAAS,aACd,KAAK;AAAA,cAAa;AAAA;AAAA,kBAElB,KAAK,SAAS,oBAAoB,EAAK,GACvC,KAAK,SAAS,wBACd,KAAK;AAAA,cAAa;AAAA;AAAA,eAClB,KAAK,SAAS,kBACd,KAAK,QAAO,GACZ,KAAK,SAAS,sBAAsBA,CAAI;AAAA,QAE3C;AAAA,QACD,sBAAsB,WAAY;AAChC,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,IACd,KAAK,QAAO,IACHA,MAAS,OAClB,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,SAAS,oBAAoB,EAAI,GACtC,KAAK,QAAO,KACHA,MAAS,OAClB,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,SAAS,oBAAoB,EAAI,GACtC,KAAK,QAAO,KACHA,MAAS,OAClB,KAAK,SAAS,oBAAoB,EAAK,GACvC,KAAK,SAAS,wBACd,KAAK,QAAO,GACZ,KAAK,SAAS,aACd,KAAK;AAAA,YAAa;AAAA;AAAA,gBAElB,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,SAAS,oBAAoB,EAAK,GACvC,KAAK,QAAO,GACZ,KAAK,SAAS,uBAAuBA,CAAI;AAAA,QAE5C;AAAA,QACD,4BAA4B,WAAY;AACtC,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,OACX,KAAK,SAAS,wBACd,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,MAClB,KAAK,SAAS,uBAAuB,KAAK,eAAc,KAAM,GAAG,IAEjE,KAAK,SAAS,uBAAuBA,CAAI;AAAA,QAE5C;AAAA,QACD,4BAA4B,WAAY;AACtC,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,OACX,KAAK,SAAS,wBACd,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,MAClB,KAAK,SAAS,uBAAuB,KAAK,eAAc,KAAM,GAAG,IAEjE,KAAK,SAAS,uBAAuBA,CAAI;AAAA,QAE5C;AAAA,QACD,wBAAwB,WAAY;AAClC,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,KACd,KAAK,SAAS,wBACd,KAAK,QAAO,GACZ,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,OAClB,KAAK,SAAS,wBACd,KAAK,QAAO,GACZ,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,OAClB,KAAK,QAAO,GACZ,KAAK,SAAS,uBAAuB,KAAK,eAAc,KAAM,GAAG,KACxDA,MAAS,OAClB,KAAK,SAAS,wBACd,KAAK,QAAO,GACZ,KAAK,SAAS,aACd,KAAK;AAAA,YAAa;AAAA;AAAA,gBAElB,KAAK,QAAO,GACZ,KAAK,SAAS,uBAAuBA,CAAI;AAAA,QAE5C;AAAA,QACD,2BAA2B,WAAY;AACrC,cAAIA,IAAO,KAAK;AAChB,UAAI+Q,EAAQ/Q,CAAI,KACd,KAAK,QAAO,GACZ,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,OAClB,KAAK,QAAO,GACZ,KAAK;AAAA,YAAa;AAAA;AAAA,eACTA,MAAS,OAClB,KAAK,QAAO,GACZ,KAAK,SAAS,aACd,KAAK;AAAA,YAAa;AAAA;AAAA,eAElB,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,qBAAqB,WAAY;AAC/B,cAAIA,IAAO,KAAK;AAChB,UAAIA,MAAS,OACX,KAAK,QAAO,GACZ,KAAK,SAAS,wBACd,KAAK,SAAS,aACd,KAAK;AAAA,YAAa;AAAA;AAAA,eAElB,KAAK;AAAA,YAAa;AAAA;AAAA;QAErB;AAAA,QAED,YAAY,WAAY;AACtB,cAAIA,IAAO,KAAK;AAChB,WAAIA,MAAS,OAAOA,MAAS,OAAOgR,GAAQhR,CAAI,OAC9C,KAAK;AAAA,YAAa;AAAA;AAAA,aAClB,KAAK,gBAAgB,IACrB,KAAK,SAAS,eACd,KAAK,gBAAgBA,CAAI;AAAA,QAE5B;AAAA,MACP,GACI,KAAK,MAAK;AAAA,IACX;AACD,WAAAkR,EAAiB,UAAU,QAAQ,WAAY;AAC7C,WAAK;AAAA,QAAa;AAAA;AAAA,SAClB,KAAK,QAAQ,IACb,KAAK,gBAAgB,IACrB,KAAK,QAAQ,GACb,KAAK,OAAO,GACZ,KAAK,SAAS,GACd,KAAK,SAAS;IAClB,GACEA,EAAiB,UAAU,eAAe,SAAUhN,GAAO;AACzD,WAAK,QAAQA;AAAA,IACjB,GACEgN,EAAiB,UAAU,WAAW,SAAUjN,GAAO;AACrD,WAAK,MAAK,GACV,KAAK,aAAaA,CAAK,GACvB,KAAK,YAAW;AAAA,IACpB,GACEiN,EAAiB,UAAU,eAAe,SAAUjN,GAAO;AAEzD,WADA,KAAK,SAASgN,GAAgBhN,CAAK,GAC5B,KAAK,QAAQ,KAAK,MAAM,UAAQ;AACrC,YAAIyN,IAAU,KAAK,OAAO,KAAK,KAAK;AACpC,YAAIA,MAAY;AACd,UAAAA,EAAQ,KAAK,IAAI;AAAA;AAEjB,gBAAM,IAAI,MAAM,qBAAqB,KAAK,KAAK;AAAA,MAElD;AAAA,IACL,GACER,EAAiB,UAAU,cAAc,WAAY;AACnD,WAAK,UAAS;AAAA,IAClB,GACEA,EAAiB,UAAU,YAAY,WAAY;AACjD,MAAI,KAAK,UAAU,WACjB,KAAK,SAAS,cACd,KAAK;AAAA,QAAa;AAAA;AAAA;IAExB,GAEEA,EAAiB,UAAU,OAAO,WAAY;AAC5C,aAAO,KAAK,MAAM,OAAO,KAAK,KAAK;AAAA,IACvC,GACEA,EAAiB,UAAU,UAAU,WAAY;AAC/C,UAAIlR,IAAO,KAAK;AAChB,kBAAK,SACDA,MAAS;AAAA,KACX,KAAK,QACL,KAAK,SAAS,KAEd,KAAK,UAEAA;AAAA,IACX,GACEkR,EAAiB,UAAU,iBAAiB,WAAY;AACtD,UAAIS,IAAW,KAAK,MAAM,QAAQ,KAAK,KAAK,KAAK;AACjD,UAAIA,MAAa,IAGjB;AAAA,YAAIjB,IAAS,KAAK,MAAM,MAAM,KAAK,OAAOiB,CAAQ,GAC9C5R,IAAQ,KAAK,aAAa,MAAM2Q,CAAM;AAC1C,YAAI3Q,GAAO;AAGT,mBAFI6R,IAAQlB,EAAO,QAEZkB;AACL,iBAAK,QAAO,GACZA;AAGF,sBAAK,QAAO,GACL7R;AAAA,QACR;AAAA;AAAA,IACL,GACEmR,EAAiB,UAAU,eAAe,WAAY;AACpD,WAAK,SAAS;IAClB,GACEA,EAAiB,UAAU,kBAAkB,SAAUlR,GAAM;AAC3D,WAAK,iBAAiBA,GACtB,KAAK,SAAS,gBAAgBA,CAAI;AAAA,IACtC,GACEkR,EAAiB,UAAU,kBAAkB,WAAY;AACvD,UAAI3T,IAAM,KAAK;AACf,aAAOA,MAAQ,WAAW,KAAK,MAAM,UAAU,KAAK,OAAO,KAAK,QAAQ,CAAC,MAAM,cAAcA,MAAQ,WAAW,KAAK,MAAM,UAAU,KAAK,OAAO,KAAK,QAAQ,CAAC,MAAM,cAAcA,MAAQ,YAAY,KAAK,MAAM,UAAU,KAAK,OAAO,KAAK,QAAQ,CAAC,MAAM;AAAA,IAChQ,GACS2T;AAAA,EACT;GACIW;AAAA;AAAA,EAAyB,WAAY;AACvC,aAASA,EAAUT,GAAc1W,GAAS;AACxC,MAAIA,MAAY,WACdA,IAAU,CAAA,IAEZ,KAAK,UAAUA,GACf,KAAK,QAAQ,MACb,KAAK,YAAY,GACjB,KAAK,cAAc,GACnB,KAAK,SAAS,IACd,KAAK,YAAY,IAAIwW,GAAiB,MAAME,GAAc1W,EAAQ,IAAI,GACtE,KAAK,oBAAoB;AAAA,IAC1B;AACD,WAAAmX,EAAU,UAAU,WAAW,SAAU5N,GAAO;AAC9C,kBAAK,SAAS,IACd,KAAK,UAAU,SAASA,CAAK,GACtB,KAAK;AAAA,IAChB,GACE4N,EAAU,UAAU,eAAe,SAAU5N,GAAO;AAClD,kBAAK,SAAS,IACd,KAAK,UAAU,aAAaA,CAAK,GAC1B,KAAK;AAAA,IAChB,GACE4N,EAAU,UAAU,cAAc,WAAY;AAC5C,kBAAK,SAAS,IACd,KAAK,UAAU,eACR,KAAK,OAAO,CAAC;AAAA,IACxB,GACEA,EAAU,UAAU,QAAQ,WAAY;AACtC,WAAK,QAAQ,MACb,KAAK,YAAY,GACjB,KAAK,cAAc;AAAA,IACvB,GACEA,EAAU,UAAU,UAAU,WAAY;AACxC,UAAI7N,IAAQ,KAAK;AACjB,UAAIA,MAAU;AACZ,cAAM,IAAI,MAAM,6BAA6B;AAE/C,UAAI,UAAU,WAAW;AACvB,eAAOA;AAET,eAAS9L,IAAI,GAAGA,IAAI,UAAU,QAAQA;AACpC,YAAI8L,EAAM,SAAS,UAAU9L,CAAC;AAC5B,iBAAO8L;AAGX,YAAM,IAAI,MAAM,iCAAiCA,EAAM,IAAI;AAAA,IAC/D,GACE6N,EAAU,UAAU,OAAO,SAAU7N,GAAO;AAC1C,WAAK,QAAQA,GACb,KAAK,OAAO,KAAKA,CAAK;AAAA,IAC1B,GACE6N,EAAU,UAAU,mBAAmB,WAAY;AACjD,aAAO,KAAK;AAAA,IAChB,GACEA,EAAU,UAAU,aAAa,WAAY;AAC3C,MAAI,KAAK,QAAQ,QACf,KAAK,QAAS,EAAC,MAAM;AAAA,QACnB,OAAO;AAAA,UACL,MAAM,KAAK;AAAA,UACX,QAAQ,KAAK;AAAA,QACd;AAAA,QACD,KAAK;AAAA,UACH,MAAM,KAAK,UAAU;AAAA,UACrB,QAAQ,KAAK,UAAU;AAAA,QACxB;AAAA,MACT,IAEI,KAAK,YAAY,KAAK,UAAU,MAChC,KAAK,cAAc,KAAK,UAAU;AAAA,IACtC,GAEEA,EAAU,UAAU,eAAe,WAAY;AAC7C,WAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,MACZ,CAAK;AAAA,IACL,GACEA,EAAU,UAAU,sBAAsB,SAAU7R,GAAM;AACxD,WAAK;AAAA,QAAQ;AAAA;AAAA,QAAyB,QAAQA;AAAA,IAClD,GACE6R,EAAU,UAAU,kCAAkC,SAAU7R,GAAM;AACpE,UAAI8R,IAAU,KAAK;AAAA,QAAQ;AAAA;AAAA,MAAS;AACpC,MAAIA,EAAQ,qBAAqB,SAC/BA,EAAQ,mBAAmB9R,IAE3B8R,EAAQ,oBAAoB9R;AAAA,IAElC,GACE6R,EAAU,UAAU,kCAAkC,SAAU7R,GAAM;AACpE,UAAI8R,IAAU,KAAK;AAAA,QAAQ;AAAA;AAAA,MAAS;AACpC,MAAIA,EAAQ,qBAAqB,SAC/BA,EAAQ,mBAAmB9R,IAE3B8R,EAAQ,oBAAoB9R;AAAA,IAElC,GACE6R,EAAU,UAAU,aAAa,WAAY;AAC3C,WAAK,WAAU;AAAA,IACnB,GACEA,EAAU,UAAU,YAAY,WAAY;AAC1C,WAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACb,CAAK;AAAA,IACL,GACEA,EAAU,UAAU,eAAe,SAAU7R,GAAM;AACjD,WAAK;AAAA,QAAQ;AAAA;AAAA,QAAqB,SAASA;AAAA,IAC/C,GACE6R,EAAU,UAAU,aAAa,WAAY;AAC3C,WAAK,WAAU;AAAA,IACnB,GAEEA,EAAU,UAAU,eAAe,WAAY;AAC7C,WAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,MACb,CAAK;AAAA,IACL,GACEA,EAAU,UAAU,sBAAsB,SAAU7R,GAAM;AACxD,WAAK;AAAA,QAAQ;AAAA;AAAA,QAAyB,SAASA;AAAA,IACnD,GACE6R,EAAU,UAAU,gBAAgB,WAAY;AAC9C,WAAK,WAAU;AAAA,IACnB,GAEEA,EAAU,UAAU,UAAU,WAAY;AAAA,OAC1CA,EAAU,UAAU,gBAAgB,WAAY;AAC9C,WAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,QACT,YAAY,CAAE;AAAA,QACd,aAAa;AAAA,MACnB,CAAK;AAAA,IACL,GACEA,EAAU,UAAU,cAAc,WAAY;AAC5C,WAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,MACf,CAAK;AAAA,IACL,GACEA,EAAU,UAAU,YAAY,WAAY;AAC1C,WAAK,WAAU;AAAA,IACnB,GACEA,EAAU,UAAU,uBAAuB,WAAY;AACrD,WAAK;AAAA,QAAQ;AAAA;AAAA,QAA2B,cAAc;AAAA,IAC1D,GAEEA,EAAU,UAAU,kBAAkB,SAAU7R,GAAM;AACpD,WAAK;AAAA,QAAQ;AAAA,QAA2B;AAAA;AAAA,MAAQ,EAAe,WAAWA;AAAA,IAC9E,GAEE6R,EAAU,UAAU,iBAAiB,WAAY;AAC/C,WAAK,oBAAoB,CAAC,IAAI,IAAI,EAAK;AAAA,IAC3C,GACEA,EAAU,UAAU,wBAAwB,SAAU7R,GAAM;AAC1D,WAAK,iBAAgB,EAAG,CAAC,KAAKA;AAAA,IAClC,GACE6R,EAAU,UAAU,sBAAsB,SAAUE,GAAU;AAC5D,WAAK,iBAAgB,EAAG,CAAC,IAAIA;AAAA,IACjC,GACEF,EAAU,UAAU,yBAAyB,SAAU7R,GAAM;AAC3D,WAAK,iBAAgB,EAAG,CAAC,KAAKA;AAAA,IAClC,GACE6R,EAAU,UAAU,uBAAuB,WAAY;AACrD,WAAK;AAAA,QAAQ;AAAA;AAAA,MAA0B,EAAC,WAAW,KAAK,KAAK,iBAAiB;AAAA,IAClF,GACEA,EAAU,UAAU,oBAAoB,SAAUG,GAAS;AACzD,WAAK,QAAO,EAAG,cAAcA;AAAA,IACjC,GACSH;AAAA,EACT;;AACA,SAAS1B,GAASlM,GAAOvJ,GAAS;AAChC,MAAIuX,IAAY,IAAIJ,GAAU,IAAIrB,GAAaJ,EAAkB,GAAG1V,CAAO;AAC3E,SAAOuX,EAAU,SAAShO,CAAK;AACjC;AAEA,MAAMiO,KAAgB,iBAChBC,KAAW,YACXC,KAAS,UACTC,KAAQ,SACRC,KAAU,WACVC,KAAU;AAOhB,SAASC,GAAYpX,GAAKyB,GAAM;AAC9B,EAAIA,MAAS,WACXA,IAAO,CAAA;AAIT,QAAMqN,IAASiG,GAAS/U,CAAG,GACrBqX,IAAkB,CAAA,GAClBC,IAAY,CAAA,GACZhY,IAAU,IAAI4Q,GAAQzO,GAAM0O,EAAa;AAG/C,WAASrT,IAAI,GAAGA,IAAIgS,EAAO,QAAQhS,KAAK;AACtC,UAAM8L,IAAQkG,EAAOhS,CAAC;AACtB,QAAI8L,EAAM,SAASmO,IAAU;AAC3B,MAAAM,EAAgB,KAAKzO,CAAK;AAG1B,YAAM9D,IAAU8D,EAAM,QAAQ,YAAW;AAEzC,UAAI,EADc9D,MAAY,OAAOxF,EAAQ,WAAW,QAAQwF,CAAO,KAAK;AAE1E;AAEF,UAAIyS,IAAaF,EAAgB;AACjC,MAAAG,GAAc1S,GAASgK,GAAQ,EAAEhS,GAAGua,CAAe,GACnDva,KAAKua,EAAgB,SAASE,IAAa;AAAA,IACjD,WAAe3O,EAAM,SAASqO;AAExB,MAAAI,EAAgB,KAAKzO,CAAK;AAAA,SACrB;AAEL,YAAM6O,IAAgBC,GAAa9O,EAAM,OAAOtJ,CAAO;AACvD,MAAA+X,EAAgB,KAAK,MAAMA,GAAiBI,CAAa;AAAA,IAC1D;AAAA,EACF;AAGD,WAAS3a,IAAI,GAAGA,IAAIua,EAAgB,QAAQva,KAAK;AAC/C,UAAM8L,IAAQyO,EAAgBva,CAAC;AAC/B,YAAQ8L,EAAM,MAAI;AAAA,MAChB,KAAKkO;AACH,QAAAQ,EAAU,KAAK1O,EAAM,QAAQ;AAC7B;AAAA,MACF,KAAKmO,IACH;AACE,YAAIY,IAAO,MAAM/O,EAAM;AACvB,QAAIA,EAAM,WAAW,SAAS,MAC5B+O,KAAQ,MAAMC,GAAwBhP,EAAM,UAAU,EAAE,KAAK,GAAG,IAE9DA,EAAM,gBACR+O,KAAQ,OAEVA,KAAQ,KACRL,EAAU,KAAKK,CAAI;AACnB;AAAA,MACD;AAAA,MACH,KAAKX;AACH,QAAAM,EAAU,KAAK,KAAK1O,EAAM,OAAO,GAAG;AACpC;AAAA,MACF,KAAKqO;AACH,QAAAK,EAAU,KAAKO,GAAWjP,EAAM,KAAK,CAAC;AACtC;AAAA,MACF,KAAKsO;AACH,QAAAI,EAAU,KAAK,OAAOO,GAAWjP,EAAM,KAAK,CAAC,KAAK;AAClD;AAAA,MACF,KAAKuO,IACH;AACE,YAAIT,IAAU,aAAa9N,EAAM,IAAI;AACrC,QAAIA,EAAM,qBACR8N,KAAW,YAAY9N,EAAM,gBAAgB,MAE3CA,EAAM,qBACR8N,KAAW,KAAK9N,EAAM,gBAAgB,MAExC8N,KAAW,KACXY,EAAU,KAAKZ,CAAO;AACtB;AAAA,MACD;AAAA,IACJ;AAAA,EACF;AACD,SAAOY,EAAU,KAAK,EAAE;AAC1B;AAQA,SAASI,GAAa1X,GAAKV,GAAS;AAClC,QAAMwP,IAASgJ,GAAW9X,CAAG,GACvB3B,IAAS,CAAA;AACf,WAASvB,IAAI,GAAGA,IAAIgS,EAAO,QAAQhS,KAAK;AACtC,UAAM8L,IAAQkG,EAAOhS,CAAC;AACtB,IAAI8L,EAAM,MAAM,QAAQtJ,EAAQ,IAAI,OAAO,IACzCjB,EAAO,KAAK;AAAA,MACV,MAAM0Y;AAAA,MACN,SAAS;AAAA,MACT,YAAY,CAAE;AAAA,MACd,aAAa;AAAA,IACrB,CAAO,IACQ,CAACnO,EAAM,UAAU,CAACtJ,EAAQ,MAAMsJ,CAAK,IAC9CvK,EAAO,KAAK;AAAA,MACV,MAAM4Y;AAAA,MACN,OAAOrO,EAAM,SAAU;AAAA,IAC/B,CAAO,IAEDvK,EAAO,KAAK;AAAA,MACV,MAAMyY;AAAA,MACN,UAAUxX,EAAQ,OAAOsJ,CAAK;AAAA,IACtC,CAAO;AAAA,EAEJ;AACD,SAAOvK;AACT;AAgBA,SAASmZ,GAAc1S,GAASgK,GAAQhS,GAAGib,GAAe;AAExD,MAAIC,IAAa;AACjB,SAAOlb,IAAIgS,EAAO,UAAUkJ,IAAa,KAAG;AAC1C,QAAIpP,IAAQkG,EAAOhS,CAAC;AACpB,IAAI8L,EAAM,SAASmO,MAAYnO,EAAM,QAAQ,YAAa,MAAK9D,IAE7DkT,MACSpP,EAAM,SAASoO,MAAUpO,EAAM,QAAQ,YAAa,MAAK9D,KAElEkT,KAEFD,EAAc,KAAKnP,CAAK,GACxB9L;AAAA,EACD;AAGD,SAAOib;AACT;AACA,SAAS5H,GAAcgC,GAAM;AAC3B,MAAI;AAAA,IACF,SAAArN;AAAA,IACA,YAAAqM;AAAA,IACA,SAAAD;AAAA,EACD,IAAGiB;AACJ,SAAO,IAAIrN,CAAO,IAAImT,GAAmB9G,CAAU,CAAC,IAAI0G,GAAW3G,CAAO,CAAC,KAAKpM,CAAO;AACzF;AACA,SAAS+S,GAAWzR,GAAM;AACxB,SAAOA,EAAK,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AACxD;AACA,SAAS8R,GAAWC,GAAM;AACxB,SAAOA,EAAK,QAAQ,MAAM,QAAQ;AACpC;AACA,SAASF,GAAmB9G,GAAY;AACtC,QAAM9S,IAAS,CAAA;AACf,aAAW8Z,KAAQhH,GAAY;AAC7B,UAAMR,IAAMQ,EAAWgH,CAAI,IAAI;AAC/B,IAAA9Z,EAAO,KAAK,GAAG8Z,CAAI,KAAKD,GAAWvH,CAAG,CAAC,GAAG;AAAA,EAC3C;AACD,SAAOtS,EAAO,KAAK,GAAG;AACxB;AACA,SAASuZ,GAAwB/Q,GAAO;AACtC,QAAMuR,IAAW,CAAA;AACjB,WAAStb,IAAI,GAAGA,IAAI+J,EAAM,QAAQ/J,KAAK;AACrC,UAAMsC,IAAOyH,EAAM/J,CAAC,EAAE,CAAC,GACjBuC,IAAQwH,EAAM/J,CAAC,EAAE,CAAC,IAAI;AAC5B,IAAAsb,EAAS,KAAK,GAAGhZ,CAAI,KAAK8Y,GAAW7Y,CAAK,CAAC,GAAG;AAAA,EAC/C;AACD,SAAO+Y;AACT;;ACx/Ba,OAAO,eAAeC,IAAQ,cAAa,EAAC,OAAM,GAAI,CAAC;AAAEA,GAAA,cAAoB,EAAC,KAAI,8CAA6C,OAAM,goBAA+nB,OAAM,upBAAspB;AAAyBA,GAAA,kBAAC,EAAC,KAAI,EAAC,UAAS,EAAC,QAAO,KAAI,QAAO,KAAI,UAAS,KAAI,UAAS,KAAI,SAAQ,IAAG,GAAE,YAAW,EAAC,KAAI,QAAO,KAAI,QAAO,KAAI,UAAS,KAAI,UAAS,KAAI,QAAO,EAAC,GAAE,OAAM,EAAC,UAAS,EAAC,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,QAAO,KAAI,SAAQ,KAAI,QAAO,KAAI,SAAQ,KAAI,QAAO,KAAI,SAAQ,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,OAAM,KAAI,QAAO,KAAI,OAAM,KAAI,QAAO,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,UAAS,KAAI,YAAW,KAAI,UAAS,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,aAAY,KAAI,UAAS,KAAI,SAAQ,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,aAAY,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,SAAQ,KAAI,aAAY,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,WAAU,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,aAAY,KAAI,UAAS,KAAI,SAAQ,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,aAAY,KAAI,QAAO,KAAI,SAAQ,KAAI,YAAW,KAAI,WAAU,KAAI,SAAQ,KAAI,aAAY,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,WAAU,KAAI,cAAa,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,YAAW,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,aAAY,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,QAAO,KAAI,UAAS,KAAI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,SAAQ,KAAI,QAAO,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,QAAO,KAAI,WAAU,KAAI,QAAO,KAAI,QAAO,KAAI,SAAQ,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,SAAQ,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,IAAG,GAAE,YAAW,EAAC,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,YAAW,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,GAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,GAAI,WAAU,KAAI,UAAS,KAAI,YAAW,KAAI,WAAU,KAAI,UAAS,GAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,YAAW,GAAI,UAAS,GAAI,WAAU,GAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,SAAQ,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,YAAW,GAAI,UAAS,KAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,YAAW,GAAI,WAAU,GAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,YAAW,GAAI,UAAS,GAAI,WAAU,GAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,SAAQ,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,YAAW,GAAI,UAAS,KAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,KAAI,UAAS,KAAI,SAAQ,KAAI,QAAO,KAAI,QAAO,GAAI,WAAU,GAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,UAAS,KAAI,YAAW,KAAI,UAAS,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,UAAS,GAAI,UAAS,GAAI,WAAU,GAAI,UAAS,GAAI,WAAU,GAAI,WAAU,GAAI,aAAY,GAAI,UAAS,GAAI,SAAQ,GA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18]}
1
+ {"version":3,"file":"index.es.js","sources":["../../../node_modules/loadjs/dist/loadjs.umd.js","../../../node_modules/cssfilter/lib/default.js","../../../node_modules/cssfilter/lib/util.js","../../../node_modules/cssfilter/lib/parser.js","../../../node_modules/cssfilter/lib/css.js","../../../node_modules/cssfilter/lib/index.js","../../../node_modules/xss/lib/util.js","../../../node_modules/xss/lib/default.js","../../../node_modules/xss/lib/parser.js","../../../node_modules/xss/lib/xss.js","../../../node_modules/xss/lib/index.js","../../../node_modules/linkifyjs/dist/linkify.es.js","../../../node_modules/linkify-html/dist/linkify-html.es.js","../node_modules/html-entities/lib/named-references.js","../node_modules/html-entities/lib/numeric-unicode-map.js","../node_modules/html-entities/lib/surrogate-pairs.js","../node_modules/html-entities/lib/index.js","../src/constants.js","../../../node_modules/showdown/dist/showdown.js","../src/mentioningUtils.js","../src/htmlConverter.jsx","../src/utils.tsx","../src/ContentRenderer.tsx"],"sourcesContent":["(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathname = path.replace(/[\\?|#].*$/, ''),\n pathStripped = path.replace(/^(css|img|module|nomodule)!/, ''),\n isLegacyIECss,\n hasModuleSupport,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(pathname)) {\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped;\n\n // tag IE9+\n isLegacyIECss = 'hideFocus' in e;\n\n // use preload in IE Edge (to detect load errors)\n if (isLegacyIECss && e.relList) {\n isLegacyIECss = 0;\n e.rel = 'preload';\n e.as = 'style';\n }\n } else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = pathStripped;\n e.async = async === undefined ? true : async;\n\n // handle es modules\n // modern browsers:\n // module: add to dom with type=\"module\"\n // nomodule: call success() callback without adding to dom\n // legacy browsers:\n // module: call success() callback without adding to dom\n // nomodule: add to dom with default type (\"text/javascript\")\n hasModuleSupport = 'noModule' in e;\n if (/^module!/.test(pathname)) {\n if (!hasModuleSupport) return callbackFn(path, 'l');\n e.type = \"module\";\n } else if (/^nomodule!/.test(pathname) && hasModuleSupport) return callbackFn(path, 'l');\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // treat empty stylesheets as failures to get around lack of onerror\n // support in IE9-11\n if (isLegacyIECss) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText` (unless error is Code:18 SecurityError)\n if (x.code != 18) result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n } else if (e.rel == 'preload' && e.as == 'style') {\n // activate preloaded stylesheets\n return e.rel = 'stylesheet'; // jshint ignore:line\n }\n \n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n * callback or (3) object literal with success/error arguments, numRetries,\n * etc.\n * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n * literal with success/error arguments, numRetries, etc.\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n function loadFn(resolve, reject) {\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n \n // resolve Promise\n if (resolve) {\n executeCallbacks({success: resolve, error: reject}, pathsNotFound);\n }\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n }\n \n if (args.returnPromise) return new Promise(loadFn);\n else loadFn();\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\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 *\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}\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(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n","module.exports = {\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 * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar _ = require('./util');\n\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 (css, onAttr) {\n css = _.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\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.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\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) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\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}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\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\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n 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\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n","/**\n * cssfilter\n *\n * @author 老雷<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require('./default');\nvar FilterCSS = require('./css');\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n","module.exports = {\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 * default settings\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\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: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"preload\",\n \"src\",\n ],\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\", \"loading\"],\n ins: [\"datetime\"],\n kbd: [],\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: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\",\n \"height\",\n \"width\",\n ],\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\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, \"&lt;\").replace(REGEXP_GT, \"&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\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 = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value.substr(0, 11) === \"data:image/\" ||\n value.substr(0, 6) === \"ftp://\" ||\n value.substr(0, 2) === \"./\" ||\n value.substr(0, 3) === \"../\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\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_GT = />/g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /&quot;/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /&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 =\n /((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 =\n /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, \"&quot;\");\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\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : 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\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .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 _.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\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\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([\n posStart !== false ? posStart : options.position,\n end,\n ]);\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 _.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(\"<!--\", lastPos);\n if (i === -1) {\n retHtml += html.slice(lastPos);\n break;\n }\n retHtml += html.slice(lastPos, i);\n var j = 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\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.attributeWrapSign = '\"';\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. '<a hef=\"#\">'\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.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 = _.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 如:'<a hef=\"#\">'\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"</\";\n}\n\n/**\n * parse input html and returns processed html\n *\n * @param {String} html\n * @param {Function} onTag e.g. function (sourcePosition, position, tag, html, isClosing)\n * @param {Function} escapeHtml\n * @return {String}\n */\nfunction parseTag(html, onTag, escapeHtml) {\n \"use strict\";\n\n var rethtml = \"\";\n var lastPos = 0;\n var tagStart = false;\n var quoteStart = false;\n var currentPos = 0;\n var len = html.length;\n var currentTagName = \"\";\n var currentHtml = \"\";\n\n chariterator: for (currentPos = 0; currentPos < len; currentPos++) {\n var c = html.charAt(currentPos);\n if (tagStart === false) {\n if (c === \"<\") {\n tagStart = currentPos;\n continue;\n }\n } else {\n if (quoteStart === false) {\n if (c === \"<\") {\n rethtml += escapeHtml(html.slice(lastPos, currentPos));\n tagStart = currentPos;\n lastPos = currentPos;\n continue;\n }\n if (c === \">\" || currentPos === len - 1) {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\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\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 < len) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\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(html, onAttr) {\n \"use strict\";\n\n var lastPos = 0;\n var lastMarkPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.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 (\n i === lastMarkPos\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.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 = _.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 = _.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\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\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}\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}\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}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","/**\n * filter xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./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}\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\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\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\n this.attributeWrapSign = options.singleQuotedAttributeValue === true ? \"'\" : DEFAULT.attributeWrapSign;\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\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\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 attributeWrapSign = me.attributeWrapSign;\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(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n 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\n if (info.isWhite) {\n if (info.isClosing) {\n return \"</\" + tag + \">\";\n }\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\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=' + attributeWrapSign + value + attributeWrapSign;\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 },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n","/**\n * xss\n *\n * @author Zongmin Lei<leizongmin@gmail.com>\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./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 */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\n\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 browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return (\n typeof self !== \"undefined\" &&\n typeof DedicatedWorkerGlobalScope !== \"undefined\" &&\n self instanceof DedicatedWorkerGlobalScope\n );\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4vianca6w0s2x0a2z0ure5ba0by2idu3namex3narepublic11d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2ntley5rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0cast4mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dabur3d1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0ardian6cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6logistics9properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3ncaster6d0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2psy3ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2tura4vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9dnavy5lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0america6xi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0a1b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp2w2ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4finity6ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * @template A\n * @template B\n * @param {A} target\n * @param {B} properties\n * @return {A & B}\n */\nconst assign = (target, properties) => {\n for (const key in properties) {\n target[key] = properties[key];\n }\n return target;\n};\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token) {\n if (token === void 0) {\n token = null;\n }\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly) {\n if (exactOnly === void 0) {\n exactOnly = false;\n }\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL$1 = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tWORD: WORD,\n\tUWORD: UWORD,\n\tLOCALHOST: LOCALHOST,\n\tTLD: TLD,\n\tUTLD: UTLD,\n\tSCHEME: SCHEME,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tNUM: NUM,\n\tWS: WS,\n\tNL: NL$1,\n\tOPENBRACE: OPENBRACE,\n\tCLOSEBRACE: CLOSEBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tCLOSEPAREN: CLOSEPAREN,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tHYPHEN: HYPHEN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tTILDE: TILDE,\n\tUNDERSCORE: UNDERSCORE,\n\tEMOJI: EMOJI$1,\n\tSYM: SYM\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tLETTER: LETTER,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tDIGIT: DIGIT,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\nconst NL = '\\n'; // New line character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes) {\n if (customSchemes === void 0) {\n customSchemes = [];\n }\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, ASCII_LETTER, Word);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, LETTER, UWord);\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, NL, NL$1, {\n [whitespace]: true\n });\n tt(Ws, NL); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender) {\n if (defaultRender === void 0) {\n defaultRender = null;\n }\n let o = assign({}, defaults);\n if (opts) {\n o = assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tdefaults: defaults,\n\tOptions: Options,\n\tassign: assign\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol) {\n if (protocol === void 0) {\n protocol = defaults.defaultProtocol;\n }\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme) {\n if (scheme === void 0) {\n scheme = defaults.defaultProtocol;\n }\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tMultiToken: MultiToken,\n\tBase: MultiToken,\n\tcreateTokenClass: createTokenClass,\n\tEmail: Email,\n\tText: Text,\n\tNl: Nl,\n\tUrl: Url\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1(_ref) {\n let {\n groups\n } = _ref;\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Final possible email states\n const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */\n ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // Closing bracket component. This character WILL be included in the URL\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL$1, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} protocol\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash) {\n if (optionalSlashSlash === void 0) {\n optionalSlashSlash = false;\n }\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type, opts) {\n if (type === void 0) {\n type = null;\n }\n if (opts === void 0) {\n opts = null;\n }\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type) {\n if (type === void 0) {\n type = null;\n }\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, tokenize };\n","import { Options, tokenize as tokenize$1 } from 'linkifyjs';\n\n/**\n * generated from https://raw.githubusercontent.com/w3c/html/26b5126f96f736f796b9e29718138919dd513744/entities.json\n * do not edit\n */\nvar HTML5NamedCharRefs = {\n // We don't need the complete named character reference because linkifyHtml\n // does not modify the escape sequences. We do need &nbsp; so that\n // whitespace is parsed properly. Other types of whitespace should already\n // be accounted for. &gt; &lt; and &quot; are also frequently relevant ones\n amp: \"&\",\n gt: \">\",\n lt: \"<\",\n nbsp: \" \",\n quot: \"\\\"\"\n};\nvar HEXCHARCODE = /^#[xX]([A-Fa-f0-9]+)$/;\nvar CHARCODE = /^#([0-9]+)$/;\nvar NAMED = /^([A-Za-z0-9]+)$/;\nvar EntityParser = /** @class */function () {\n function EntityParser(named) {\n this.named = named;\n }\n EntityParser.prototype.parse = function (entity) {\n if (!entity) {\n return;\n }\n var matches = entity.match(HEXCHARCODE);\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 16));\n }\n matches = entity.match(CHARCODE);\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 10));\n }\n matches = entity.match(NAMED);\n if (matches) {\n return this.named[matches[1]] || \"&\" + matches[1] + \";\";\n }\n };\n return EntityParser;\n}();\nvar WSP = /[\\t\\n\\f ]/;\nvar ALPHA = /[A-Za-z]/;\nvar CRLF = /\\r\\n?/g;\nfunction isSpace(char) {\n return WSP.test(char);\n}\nfunction isAlpha(char) {\n return ALPHA.test(char);\n}\nfunction preprocessInput(input) {\n return input.replace(CRLF, '\\n');\n}\nvar EventedTokenizer = /** @class */function () {\n function EventedTokenizer(delegate, entityParser, mode) {\n if (mode === void 0) {\n mode = 'precompile';\n }\n this.delegate = delegate;\n this.entityParser = entityParser;\n this.mode = mode;\n this.state = \"beforeData\" /* beforeData */;\n this.line = -1;\n this.column = -1;\n this.input = '';\n this.index = -1;\n this.tagNameBuffer = '';\n this.states = {\n beforeData: function () {\n var char = this.peek();\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.transitionTo(\"tagOpen\" /* tagOpen */);\n this.markTagStart();\n this.consume();\n } else {\n if (this.mode === 'precompile' && char === '\\n') {\n var tag = this.tagNameBuffer.toLowerCase();\n if (tag === 'pre' || tag === 'textarea') {\n this.consume();\n }\n }\n this.transitionTo(\"data\" /* data */);\n this.delegate.beginData();\n }\n },\n data: function () {\n var char = this.peek();\n var tag = this.tagNameBuffer;\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.delegate.finishData();\n this.transitionTo(\"tagOpen\" /* tagOpen */);\n this.markTagStart();\n this.consume();\n } else if (char === '&' && tag !== 'script' && tag !== 'style') {\n this.consume();\n this.delegate.appendToData(this.consumeCharRef() || '&');\n } else {\n this.consume();\n this.delegate.appendToData(char);\n }\n },\n tagOpen: function () {\n var char = this.consume();\n if (char === '!') {\n this.transitionTo(\"markupDeclarationOpen\" /* markupDeclarationOpen */);\n } else if (char === '/') {\n this.transitionTo(\"endTagOpen\" /* endTagOpen */);\n } else if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"tagName\" /* tagName */);\n this.tagNameBuffer = '';\n this.delegate.beginStartTag();\n this.appendToTagName(char);\n }\n },\n markupDeclarationOpen: function () {\n var char = this.consume();\n if (char === '-' && this.peek() === '-') {\n this.consume();\n this.transitionTo(\"commentStart\" /* commentStart */);\n this.delegate.beginComment();\n } else {\n var maybeDoctype = char.toUpperCase() + this.input.substring(this.index, this.index + 6).toUpperCase();\n if (maybeDoctype === 'DOCTYPE') {\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.transitionTo(\"doctype\" /* doctype */);\n if (this.delegate.beginDoctype) this.delegate.beginDoctype();\n }\n }\n },\n doctype: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"beforeDoctypeName\" /* beforeDoctypeName */);\n }\n },\n\n beforeDoctypeName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n } else {\n this.transitionTo(\"doctypeName\" /* doctypeName */);\n if (this.delegate.appendToDoctypeName) this.delegate.appendToDoctypeName(char.toLowerCase());\n }\n },\n doctypeName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"afterDoctypeName\" /* afterDoctypeName */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypeName) this.delegate.appendToDoctypeName(char.toLowerCase());\n }\n },\n afterDoctypeName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n var nextSixChars = char.toUpperCase() + this.input.substring(this.index, this.index + 5).toUpperCase();\n var isPublic = nextSixChars.toUpperCase() === 'PUBLIC';\n var isSystem = nextSixChars.toUpperCase() === 'SYSTEM';\n if (isPublic || isSystem) {\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n }\n if (isPublic) {\n this.transitionTo(\"afterDoctypePublicKeyword\" /* afterDoctypePublicKeyword */);\n } else if (isSystem) {\n this.transitionTo(\"afterDoctypeSystemKeyword\" /* afterDoctypeSystemKeyword */);\n }\n }\n },\n\n afterDoctypePublicKeyword: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.transitionTo(\"beforeDoctypePublicIdentifier\" /* beforeDoctypePublicIdentifier */);\n this.consume();\n } else if (char === '\"') {\n this.transitionTo(\"doctypePublicIdentifierDoubleQuoted\" /* doctypePublicIdentifierDoubleQuoted */);\n this.consume();\n } else if (char === \"'\") {\n this.transitionTo(\"doctypePublicIdentifierSingleQuoted\" /* doctypePublicIdentifierSingleQuoted */);\n this.consume();\n } else if (char === '>') {\n this.consume();\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n },\n\n doctypePublicIdentifierDoubleQuoted: function () {\n var char = this.consume();\n if (char === '\"') {\n this.transitionTo(\"afterDoctypePublicIdentifier\" /* afterDoctypePublicIdentifier */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypePublicIdentifier) this.delegate.appendToDoctypePublicIdentifier(char);\n }\n },\n doctypePublicIdentifierSingleQuoted: function () {\n var char = this.consume();\n if (char === \"'\") {\n this.transitionTo(\"afterDoctypePublicIdentifier\" /* afterDoctypePublicIdentifier */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypePublicIdentifier) this.delegate.appendToDoctypePublicIdentifier(char);\n }\n },\n afterDoctypePublicIdentifier: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"betweenDoctypePublicAndSystemIdentifiers\" /* betweenDoctypePublicAndSystemIdentifiers */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else if (char === '\"') {\n this.transitionTo(\"doctypeSystemIdentifierDoubleQuoted\" /* doctypeSystemIdentifierDoubleQuoted */);\n } else if (char === \"'\") {\n this.transitionTo(\"doctypeSystemIdentifierSingleQuoted\" /* doctypeSystemIdentifierSingleQuoted */);\n }\n },\n\n betweenDoctypePublicAndSystemIdentifiers: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else if (char === '\"') {\n this.transitionTo(\"doctypeSystemIdentifierDoubleQuoted\" /* doctypeSystemIdentifierDoubleQuoted */);\n } else if (char === \"'\") {\n this.transitionTo(\"doctypeSystemIdentifierSingleQuoted\" /* doctypeSystemIdentifierSingleQuoted */);\n }\n },\n\n doctypeSystemIdentifierDoubleQuoted: function () {\n var char = this.consume();\n if (char === '\"') {\n this.transitionTo(\"afterDoctypeSystemIdentifier\" /* afterDoctypeSystemIdentifier */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypeSystemIdentifier) this.delegate.appendToDoctypeSystemIdentifier(char);\n }\n },\n doctypeSystemIdentifierSingleQuoted: function () {\n var char = this.consume();\n if (char === \"'\") {\n this.transitionTo(\"afterDoctypeSystemIdentifier\" /* afterDoctypeSystemIdentifier */);\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n if (this.delegate.appendToDoctypeSystemIdentifier) this.delegate.appendToDoctypeSystemIdentifier(char);\n }\n },\n afterDoctypeSystemIdentifier: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n } else if (char === '>') {\n if (this.delegate.endDoctype) this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n },\n\n commentStart: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentStartDash\" /* commentStartDash */);\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.delegate.appendToCommentData(char);\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n\n commentStartDash: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentEnd\" /* commentEnd */);\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.delegate.appendToCommentData('-');\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n\n comment: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentEndDash\" /* commentEndDash */);\n } else {\n this.delegate.appendToCommentData(char);\n }\n },\n commentEndDash: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentEnd\" /* commentEnd */);\n } else {\n this.delegate.appendToCommentData('-' + char);\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n\n commentEnd: function () {\n var char = this.consume();\n if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.delegate.appendToCommentData('--' + char);\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n\n tagName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.appendToTagName(char);\n }\n },\n endTagName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n this.tagNameBuffer = '';\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n this.tagNameBuffer = '';\n } else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n this.tagNameBuffer = '';\n } else {\n this.appendToTagName(char);\n }\n },\n beforeAttributeName: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n this.consume();\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else if (char === '=') {\n this.delegate.reportSyntaxError('attribute name cannot start with equals sign');\n this.transitionTo(\"attributeName\" /* attributeName */);\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.transitionTo(\"attributeName\" /* attributeName */);\n this.delegate.beginAttribute();\n }\n },\n attributeName: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.transitionTo(\"afterAttributeName\" /* afterAttributeName */);\n this.consume();\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '=') {\n this.transitionTo(\"beforeAttributeValue\" /* beforeAttributeValue */);\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else if (char === '\"' || char === \"'\" || char === '<') {\n this.delegate.reportSyntaxError(char + ' is not a valid character within attribute names');\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n afterAttributeName: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '=') {\n this.consume();\n this.transitionTo(\"beforeAttributeValue\" /* beforeAttributeValue */);\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.transitionTo(\"attributeName\" /* attributeName */);\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n beforeAttributeValue: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n } else if (char === '\"') {\n this.transitionTo(\"attributeValueDoubleQuoted\" /* attributeValueDoubleQuoted */);\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === \"'\") {\n this.transitionTo(\"attributeValueSingleQuoted\" /* attributeValueSingleQuoted */);\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.transitionTo(\"attributeValueUnquoted\" /* attributeValueUnquoted */);\n this.delegate.beginAttributeValue(false);\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueDoubleQuoted: function () {\n var char = this.consume();\n if (char === '\"') {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\" /* afterAttributeValueQuoted */);\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueSingleQuoted: function () {\n var char = this.consume();\n if (char === \"'\") {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\" /* afterAttributeValueQuoted */);\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueUnquoted: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n } else if (char === '/') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '&') {\n this.consume();\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else if (char === '>') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n afterAttributeValueQuoted: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n } else if (char === '/') {\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n }\n },\n\n selfClosingStartTag: function () {\n var char = this.peek();\n if (char === '>') {\n this.consume();\n this.delegate.markTagAsSelfClosing();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n } else {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n }\n },\n\n endTagOpen: function () {\n var char = this.consume();\n if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"endTagName\" /* endTagName */);\n this.tagNameBuffer = '';\n this.delegate.beginEndTag();\n this.appendToTagName(char);\n }\n }\n };\n this.reset();\n }\n EventedTokenizer.prototype.reset = function () {\n this.transitionTo(\"beforeData\" /* beforeData */);\n this.input = '';\n this.tagNameBuffer = '';\n this.index = 0;\n this.line = 1;\n this.column = 0;\n this.delegate.reset();\n };\n EventedTokenizer.prototype.transitionTo = function (state) {\n this.state = state;\n };\n EventedTokenizer.prototype.tokenize = function (input) {\n this.reset();\n this.tokenizePart(input);\n this.tokenizeEOF();\n };\n EventedTokenizer.prototype.tokenizePart = function (input) {\n this.input += preprocessInput(input);\n while (this.index < this.input.length) {\n var handler = this.states[this.state];\n if (handler !== undefined) {\n handler.call(this);\n } else {\n throw new Error(\"unhandled state \" + this.state);\n }\n }\n };\n EventedTokenizer.prototype.tokenizeEOF = function () {\n this.flushData();\n };\n EventedTokenizer.prototype.flushData = function () {\n if (this.state === 'data') {\n this.delegate.finishData();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n };\n\n EventedTokenizer.prototype.peek = function () {\n return this.input.charAt(this.index);\n };\n EventedTokenizer.prototype.consume = function () {\n var char = this.peek();\n this.index++;\n if (char === '\\n') {\n this.line++;\n this.column = 0;\n } else {\n this.column++;\n }\n return char;\n };\n EventedTokenizer.prototype.consumeCharRef = function () {\n var endIndex = this.input.indexOf(';', this.index);\n if (endIndex === -1) {\n return;\n }\n var entity = this.input.slice(this.index, endIndex);\n var chars = this.entityParser.parse(entity);\n if (chars) {\n var count = entity.length;\n // consume the entity chars\n while (count) {\n this.consume();\n count--;\n }\n // consume the `;`\n this.consume();\n return chars;\n }\n };\n EventedTokenizer.prototype.markTagStart = function () {\n this.delegate.tagOpen();\n };\n EventedTokenizer.prototype.appendToTagName = function (char) {\n this.tagNameBuffer += char;\n this.delegate.appendToTagName(char);\n };\n EventedTokenizer.prototype.isIgnoredEndTag = function () {\n var tag = this.tagNameBuffer;\n return tag === 'title' && this.input.substring(this.index, this.index + 8) !== '</title>' || tag === 'style' && this.input.substring(this.index, this.index + 8) !== '</style>' || tag === 'script' && this.input.substring(this.index, this.index + 9) !== '</script>';\n };\n return EventedTokenizer;\n}();\nvar Tokenizer = /** @class */function () {\n function Tokenizer(entityParser, options) {\n if (options === void 0) {\n options = {};\n }\n this.options = options;\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n this.tokens = [];\n this.tokenizer = new EventedTokenizer(this, entityParser, options.mode);\n this._currentAttribute = undefined;\n }\n Tokenizer.prototype.tokenize = function (input) {\n this.tokens = [];\n this.tokenizer.tokenize(input);\n return this.tokens;\n };\n Tokenizer.prototype.tokenizePart = function (input) {\n this.tokens = [];\n this.tokenizer.tokenizePart(input);\n return this.tokens;\n };\n Tokenizer.prototype.tokenizeEOF = function () {\n this.tokens = [];\n this.tokenizer.tokenizeEOF();\n return this.tokens[0];\n };\n Tokenizer.prototype.reset = function () {\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n };\n Tokenizer.prototype.current = function () {\n var token = this.token;\n if (token === null) {\n throw new Error('token was unexpectedly null');\n }\n if (arguments.length === 0) {\n return token;\n }\n for (var i = 0; i < arguments.length; i++) {\n if (token.type === arguments[i]) {\n return token;\n }\n }\n throw new Error(\"token type was unexpectedly \" + token.type);\n };\n Tokenizer.prototype.push = function (token) {\n this.token = token;\n this.tokens.push(token);\n };\n Tokenizer.prototype.currentAttribute = function () {\n return this._currentAttribute;\n };\n Tokenizer.prototype.addLocInfo = function () {\n if (this.options.loc) {\n this.current().loc = {\n start: {\n line: this.startLine,\n column: this.startColumn\n },\n end: {\n line: this.tokenizer.line,\n column: this.tokenizer.column\n }\n };\n }\n this.startLine = this.tokenizer.line;\n this.startColumn = this.tokenizer.column;\n };\n // Data\n Tokenizer.prototype.beginDoctype = function () {\n this.push({\n type: \"Doctype\" /* Doctype */,\n name: ''\n });\n };\n Tokenizer.prototype.appendToDoctypeName = function (char) {\n this.current(\"Doctype\" /* Doctype */).name += char;\n };\n Tokenizer.prototype.appendToDoctypePublicIdentifier = function (char) {\n var doctype = this.current(\"Doctype\" /* Doctype */);\n if (doctype.publicIdentifier === undefined) {\n doctype.publicIdentifier = char;\n } else {\n doctype.publicIdentifier += char;\n }\n };\n Tokenizer.prototype.appendToDoctypeSystemIdentifier = function (char) {\n var doctype = this.current(\"Doctype\" /* Doctype */);\n if (doctype.systemIdentifier === undefined) {\n doctype.systemIdentifier = char;\n } else {\n doctype.systemIdentifier += char;\n }\n };\n Tokenizer.prototype.endDoctype = function () {\n this.addLocInfo();\n };\n Tokenizer.prototype.beginData = function () {\n this.push({\n type: \"Chars\" /* Chars */,\n chars: ''\n });\n };\n Tokenizer.prototype.appendToData = function (char) {\n this.current(\"Chars\" /* Chars */).chars += char;\n };\n Tokenizer.prototype.finishData = function () {\n this.addLocInfo();\n };\n // Comment\n Tokenizer.prototype.beginComment = function () {\n this.push({\n type: \"Comment\" /* Comment */,\n chars: ''\n });\n };\n Tokenizer.prototype.appendToCommentData = function (char) {\n this.current(\"Comment\" /* Comment */).chars += char;\n };\n Tokenizer.prototype.finishComment = function () {\n this.addLocInfo();\n };\n // Tags - basic\n Tokenizer.prototype.tagOpen = function () {};\n Tokenizer.prototype.beginStartTag = function () {\n this.push({\n type: \"StartTag\" /* StartTag */,\n tagName: '',\n attributes: [],\n selfClosing: false\n });\n };\n Tokenizer.prototype.beginEndTag = function () {\n this.push({\n type: \"EndTag\" /* EndTag */,\n tagName: ''\n });\n };\n Tokenizer.prototype.finishTag = function () {\n this.addLocInfo();\n };\n Tokenizer.prototype.markTagAsSelfClosing = function () {\n this.current(\"StartTag\" /* StartTag */).selfClosing = true;\n };\n // Tags - name\n Tokenizer.prototype.appendToTagName = function (char) {\n this.current(\"StartTag\" /* StartTag */, \"EndTag\" /* EndTag */).tagName += char;\n };\n // Tags - attributes\n Tokenizer.prototype.beginAttribute = function () {\n this._currentAttribute = ['', '', false];\n };\n Tokenizer.prototype.appendToAttributeName = function (char) {\n this.currentAttribute()[0] += char;\n };\n Tokenizer.prototype.beginAttributeValue = function (isQuoted) {\n this.currentAttribute()[2] = isQuoted;\n };\n Tokenizer.prototype.appendToAttributeValue = function (char) {\n this.currentAttribute()[1] += char;\n };\n Tokenizer.prototype.finishAttributeValue = function () {\n this.current(\"StartTag\" /* StartTag */).attributes.push(this._currentAttribute);\n };\n Tokenizer.prototype.reportSyntaxError = function (message) {\n this.current().syntaxError = message;\n };\n return Tokenizer;\n}();\nfunction tokenize(input, options) {\n var tokenizer = new Tokenizer(new EntityParser(HTML5NamedCharRefs), options);\n return tokenizer.tokenize(input);\n}\n\nconst LinkifyResult = 'LinkifyResult';\nconst StartTag = 'StartTag';\nconst EndTag = 'EndTag';\nconst Chars = 'Chars';\nconst Comment = 'Comment';\nconst Doctype = 'Doctype';\n\n/**\n * @param {string} str html string to link\n * @param {import('linkifyjs').Opts} [opts] linkify options\n * @returns {string} resulting string\n */\nfunction linkifyHtml(str, opts) {\n if (opts === void 0) {\n opts = {};\n }\n // `tokens` and `token` in this section refer to tokens generated by the\n // HTML parser, not linkify's parser\n const tokens = tokenize(str);\n const linkifiedTokens = [];\n const linkified = [];\n const options = new Options(opts, defaultRender);\n\n // Linkify the tokens given by the parser\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.type === StartTag) {\n linkifiedTokens.push(token);\n\n // Ignore all the contents of ignored tags\n const tagName = token.tagName.toUpperCase();\n const isIgnored = tagName === 'A' || options.ignoreTags.indexOf(tagName) >= 0;\n if (!isIgnored) {\n continue;\n }\n let preskipLen = linkifiedTokens.length;\n skipTagTokens(tagName, tokens, ++i, linkifiedTokens);\n i += linkifiedTokens.length - preskipLen - 1;\n } else if (token.type !== Chars) {\n // Skip this token, it's not important\n linkifiedTokens.push(token);\n } else {\n // Valid text token, linkify it!\n const linkifedChars = linkifyChars(token.chars, options);\n linkifiedTokens.push.apply(linkifiedTokens, linkifedChars);\n }\n }\n\n // Convert the tokens back into a string\n for (let i = 0; i < linkifiedTokens.length; i++) {\n const token = linkifiedTokens[i];\n switch (token.type) {\n case LinkifyResult:\n linkified.push(token.rendered);\n break;\n case StartTag:\n {\n let link = '<' + token.tagName;\n if (token.attributes.length > 0) {\n link += ' ' + attributeArrayToStrings(token.attributes).join(' ');\n }\n if (token.selfClosing) {\n link += ' /';\n }\n link += '>';\n linkified.push(link);\n break;\n }\n case EndTag:\n linkified.push(`</${token.tagName}>`);\n break;\n case Chars:\n linkified.push(escapeText(token.chars));\n break;\n case Comment:\n linkified.push(`<!--${escapeText(token.chars)}-->`);\n break;\n case Doctype:\n {\n let doctype = `<!DOCTYPE ${token.name}`;\n if (token.publicIdentifier) {\n doctype += ` PUBLIC \"${token.publicIdentifier}\"`;\n }\n if (token.systemIdentifier) {\n doctype += ` \"${token.systemIdentifier}\"`;\n }\n doctype += '>';\n linkified.push(doctype);\n break;\n }\n }\n }\n return linkified.join('');\n}\n\n/**\n\t`tokens` and `token` in this section referes to tokens returned by\n\t`linkify.tokenize`. `linkified` will contain HTML Parser-style tokens\n\t@param {string}\n\t@param {import('linkifyjs').Options}\n*/\nfunction linkifyChars(str, options) {\n const tokens = tokenize$1(str);\n const result = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.t === 'nl' && options.get('nl2br')) {\n result.push({\n type: StartTag,\n tagName: 'br',\n attributes: [],\n selfClosing: true\n });\n } else if (!token.isLink || !options.check(token)) {\n result.push({\n type: Chars,\n chars: token.toString()\n });\n } else {\n result.push({\n type: LinkifyResult,\n rendered: options.render(token)\n });\n }\n }\n return result;\n}\n\n/**\n\tReturns a list of tokens skipped until the closing tag of tagName.\n\n\t* `tagName` is the closing tag which will prompt us to stop skipping\n\t* `tokens` is the array of tokens generated by HTML5Tokenizer which\n\t* `i` is the index immediately after the opening tag to skip\n\t* `skippedTokens` is an array which skipped tokens are being pushed into\n\n\tCaveats\n\n\t* Assumes that i is the first token after the given opening tagName\n\t* The closing tag will be skipped, but nothing after it\n\t* Will track whether there is a nested tag of the same type\n*/\nfunction skipTagTokens(tagName, tokens, i, skippedTokens) {\n // number of tokens of this type on the [fictional] stack\n let stackCount = 1;\n while (i < tokens.length && stackCount > 0) {\n let token = tokens[i];\n if (token.type === StartTag && token.tagName.toUpperCase() === tagName) {\n // Nested tag of the same type, \"add to stack\"\n stackCount++;\n } else if (token.type === EndTag && token.tagName.toUpperCase() === tagName) {\n // Closing tag\n stackCount--;\n }\n skippedTokens.push(token);\n i++;\n }\n\n // Note that if stackCount > 0 here, the HTML is probably invalid\n return skippedTokens;\n}\nfunction defaultRender(_ref) {\n let {\n tagName,\n attributes,\n content\n } = _ref;\n return `<${tagName} ${attributesToString(attributes)}>${escapeText(content)}</${tagName}>`;\n}\nfunction escapeText(text) {\n return text.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction escapeAttr(attr) {\n return attr.replace(/\"/g, '&quot;');\n}\nfunction attributesToString(attributes) {\n const result = [];\n for (const attr in attributes) {\n const val = attributes[attr] + '';\n result.push(`${attr}=\"${escapeAttr(val)}\"`);\n }\n return result.join(' ');\n}\nfunction attributeArrayToStrings(attrs) {\n const attrStrs = [];\n for (let i = 0; i < attrs.length; i++) {\n const name = attrs[i][0];\n const value = attrs[i][1] + '';\n attrStrs.push(`${name}=\"${escapeAttr(value)}\"`);\n }\n return attrStrs;\n}\n\nexport { linkifyHtml as default };\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.bodyRegExps={xml:/&(?:#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);?/g};exports.namedReferences={xml:{entities:{\"&lt;\":\"<\",\"&gt;\":\">\",\"&quot;\":'\"',\"&apos;\":\"'\",\"&amp;\":\"&\"},characters:{\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&apos;\",\"&\":\"&amp;\"}},html4:{entities:{\"&apos;\":\"'\",\"&nbsp\":\" \",\"&nbsp;\":\" \",\"&iexcl\":\"¡\",\"&iexcl;\":\"¡\",\"&cent\":\"¢\",\"&cent;\":\"¢\",\"&pound\":\"£\",\"&pound;\":\"£\",\"&curren\":\"¤\",\"&curren;\":\"¤\",\"&yen\":\"¥\",\"&yen;\":\"¥\",\"&brvbar\":\"¦\",\"&brvbar;\":\"¦\",\"&sect\":\"§\",\"&sect;\":\"§\",\"&uml\":\"¨\",\"&uml;\":\"¨\",\"&copy\":\"©\",\"&copy;\":\"©\",\"&ordf\":\"ª\",\"&ordf;\":\"ª\",\"&laquo\":\"«\",\"&laquo;\":\"«\",\"&not\":\"¬\",\"&not;\":\"¬\",\"&shy\":\"­\",\"&shy;\":\"­\",\"&reg\":\"®\",\"&reg;\":\"®\",\"&macr\":\"¯\",\"&macr;\":\"¯\",\"&deg\":\"°\",\"&deg;\":\"°\",\"&plusmn\":\"±\",\"&plusmn;\":\"±\",\"&sup2\":\"²\",\"&sup2;\":\"²\",\"&sup3\":\"³\",\"&sup3;\":\"³\",\"&acute\":\"´\",\"&acute;\":\"´\",\"&micro\":\"µ\",\"&micro;\":\"µ\",\"&para\":\"¶\",\"&para;\":\"¶\",\"&middot\":\"·\",\"&middot;\":\"·\",\"&cedil\":\"¸\",\"&cedil;\":\"¸\",\"&sup1\":\"¹\",\"&sup1;\":\"¹\",\"&ordm\":\"º\",\"&ordm;\":\"º\",\"&raquo\":\"»\",\"&raquo;\":\"»\",\"&frac14\":\"¼\",\"&frac14;\":\"¼\",\"&frac12\":\"½\",\"&frac12;\":\"½\",\"&frac34\":\"¾\",\"&frac34;\":\"¾\",\"&iquest\":\"¿\",\"&iquest;\":\"¿\",\"&Agrave\":\"À\",\"&Agrave;\":\"À\",\"&Aacute\":\"Á\",\"&Aacute;\":\"Á\",\"&Acirc\":\"Â\",\"&Acirc;\":\"Â\",\"&Atilde\":\"Ã\",\"&Atilde;\":\"Ã\",\"&Auml\":\"Ä\",\"&Auml;\":\"Ä\",\"&Aring\":\"Å\",\"&Aring;\":\"Å\",\"&AElig\":\"Æ\",\"&AElig;\":\"Æ\",\"&Ccedil\":\"Ç\",\"&Ccedil;\":\"Ç\",\"&Egrave\":\"È\",\"&Egrave;\":\"È\",\"&Eacute\":\"É\",\"&Eacute;\":\"É\",\"&Ecirc\":\"Ê\",\"&Ecirc;\":\"Ê\",\"&Euml\":\"Ë\",\"&Euml;\":\"Ë\",\"&Igrave\":\"Ì\",\"&Igrave;\":\"Ì\",\"&Iacute\":\"Í\",\"&Iacute;\":\"Í\",\"&Icirc\":\"Î\",\"&Icirc;\":\"Î\",\"&Iuml\":\"Ï\",\"&Iuml;\":\"Ï\",\"&ETH\":\"Ð\",\"&ETH;\":\"Ð\",\"&Ntilde\":\"Ñ\",\"&Ntilde;\":\"Ñ\",\"&Ograve\":\"Ò\",\"&Ograve;\":\"Ò\",\"&Oacute\":\"Ó\",\"&Oacute;\":\"Ó\",\"&Ocirc\":\"Ô\",\"&Ocirc;\":\"Ô\",\"&Otilde\":\"Õ\",\"&Otilde;\":\"Õ\",\"&Ouml\":\"Ö\",\"&Ouml;\":\"Ö\",\"&times\":\"×\",\"&times;\":\"×\",\"&Oslash\":\"Ø\",\"&Oslash;\":\"Ø\",\"&Ugrave\":\"Ù\",\"&Ugrave;\":\"Ù\",\"&Uacute\":\"Ú\",\"&Uacute;\":\"Ú\",\"&Ucirc\":\"Û\",\"&Ucirc;\":\"Û\",\"&Uuml\":\"Ü\",\"&Uuml;\":\"Ü\",\"&Yacute\":\"Ý\",\"&Yacute;\":\"Ý\",\"&THORN\":\"Þ\",\"&THORN;\":\"Þ\",\"&szlig\":\"ß\",\"&szlig;\":\"ß\",\"&agrave\":\"à\",\"&agrave;\":\"à\",\"&aacute\":\"á\",\"&aacute;\":\"á\",\"&acirc\":\"â\",\"&acirc;\":\"â\",\"&atilde\":\"ã\",\"&atilde;\":\"ã\",\"&auml\":\"ä\",\"&auml;\":\"ä\",\"&aring\":\"å\",\"&aring;\":\"å\",\"&aelig\":\"æ\",\"&aelig;\":\"æ\",\"&ccedil\":\"ç\",\"&ccedil;\":\"ç\",\"&egrave\":\"è\",\"&egrave;\":\"è\",\"&eacute\":\"é\",\"&eacute;\":\"é\",\"&ecirc\":\"ê\",\"&ecirc;\":\"ê\",\"&euml\":\"ë\",\"&euml;\":\"ë\",\"&igrave\":\"ì\",\"&igrave;\":\"ì\",\"&iacute\":\"í\",\"&iacute;\":\"í\",\"&icirc\":\"î\",\"&icirc;\":\"î\",\"&iuml\":\"ï\",\"&iuml;\":\"ï\",\"&eth\":\"ð\",\"&eth;\":\"ð\",\"&ntilde\":\"ñ\",\"&ntilde;\":\"ñ\",\"&ograve\":\"ò\",\"&ograve;\":\"ò\",\"&oacute\":\"ó\",\"&oacute;\":\"ó\",\"&ocirc\":\"ô\",\"&ocirc;\":\"ô\",\"&otilde\":\"õ\",\"&otilde;\":\"õ\",\"&ouml\":\"ö\",\"&ouml;\":\"ö\",\"&divide\":\"÷\",\"&divide;\":\"÷\",\"&oslash\":\"ø\",\"&oslash;\":\"ø\",\"&ugrave\":\"ù\",\"&ugrave;\":\"ù\",\"&uacute\":\"ú\",\"&uacute;\":\"ú\",\"&ucirc\":\"û\",\"&ucirc;\":\"û\",\"&uuml\":\"ü\",\"&uuml;\":\"ü\",\"&yacute\":\"ý\",\"&yacute;\":\"ý\",\"&thorn\":\"þ\",\"&thorn;\":\"þ\",\"&yuml\":\"ÿ\",\"&yuml;\":\"ÿ\",\"&quot\":'\"',\"&quot;\":'\"',\"&amp\":\"&\",\"&amp;\":\"&\",\"&lt\":\"<\",\"&lt;\":\"<\",\"&gt\":\">\",\"&gt;\":\">\",\"&OElig;\":\"Œ\",\"&oelig;\":\"œ\",\"&Scaron;\":\"Š\",\"&scaron;\":\"š\",\"&Yuml;\":\"Ÿ\",\"&circ;\":\"ˆ\",\"&tilde;\":\"˜\",\"&ensp;\":\" \",\"&emsp;\":\" \",\"&thinsp;\":\" \",\"&zwnj;\":\"‌\",\"&zwj;\":\"‍\",\"&lrm;\":\"‎\",\"&rlm;\":\"‏\",\"&ndash;\":\"–\",\"&mdash;\":\"—\",\"&lsquo;\":\"‘\",\"&rsquo;\":\"’\",\"&sbquo;\":\"‚\",\"&ldquo;\":\"“\",\"&rdquo;\":\"”\",\"&bdquo;\":\"„\",\"&dagger;\":\"†\",\"&Dagger;\":\"‡\",\"&permil;\":\"‰\",\"&lsaquo;\":\"‹\",\"&rsaquo;\":\"›\",\"&euro;\":\"€\",\"&fnof;\":\"ƒ\",\"&Alpha;\":\"Α\",\"&Beta;\":\"Β\",\"&Gamma;\":\"Γ\",\"&Delta;\":\"Δ\",\"&Epsilon;\":\"Ε\",\"&Zeta;\":\"Ζ\",\"&Eta;\":\"Η\",\"&Theta;\":\"Θ\",\"&Iota;\":\"Ι\",\"&Kappa;\":\"Κ\",\"&Lambda;\":\"Λ\",\"&Mu;\":\"Μ\",\"&Nu;\":\"Ν\",\"&Xi;\":\"Ξ\",\"&Omicron;\":\"Ο\",\"&Pi;\":\"Π\",\"&Rho;\":\"Ρ\",\"&Sigma;\":\"Σ\",\"&Tau;\":\"Τ\",\"&Upsilon;\":\"Υ\",\"&Phi;\":\"Φ\",\"&Chi;\":\"Χ\",\"&Psi;\":\"Ψ\",\"&Omega;\":\"Ω\",\"&alpha;\":\"α\",\"&beta;\":\"β\",\"&gamma;\":\"γ\",\"&delta;\":\"δ\",\"&epsilon;\":\"ε\",\"&zeta;\":\"ζ\",\"&eta;\":\"η\",\"&theta;\":\"θ\",\"&iota;\":\"ι\",\"&kappa;\":\"κ\",\"&lambda;\":\"λ\",\"&mu;\":\"μ\",\"&nu;\":\"ν\",\"&xi;\":\"ξ\",\"&omicron;\":\"ο\",\"&pi;\":\"π\",\"&rho;\":\"ρ\",\"&sigmaf;\":\"ς\",\"&sigma;\":\"σ\",\"&tau;\":\"τ\",\"&upsilon;\":\"υ\",\"&phi;\":\"φ\",\"&chi;\":\"χ\",\"&psi;\":\"ψ\",\"&omega;\":\"ω\",\"&thetasym;\":\"ϑ\",\"&upsih;\":\"ϒ\",\"&piv;\":\"ϖ\",\"&bull;\":\"•\",\"&hellip;\":\"…\",\"&prime;\":\"′\",\"&Prime;\":\"″\",\"&oline;\":\"‾\",\"&frasl;\":\"⁄\",\"&weierp;\":\"℘\",\"&image;\":\"ℑ\",\"&real;\":\"ℜ\",\"&trade;\":\"™\",\"&alefsym;\":\"ℵ\",\"&larr;\":\"←\",\"&uarr;\":\"↑\",\"&rarr;\":\"→\",\"&darr;\":\"↓\",\"&harr;\":\"↔\",\"&crarr;\":\"↵\",\"&lArr;\":\"⇐\",\"&uArr;\":\"⇑\",\"&rArr;\":\"⇒\",\"&dArr;\":\"⇓\",\"&hArr;\":\"⇔\",\"&forall;\":\"∀\",\"&part;\":\"∂\",\"&exist;\":\"∃\",\"&empty;\":\"∅\",\"&nabla;\":\"∇\",\"&isin;\":\"∈\",\"&notin;\":\"∉\",\"&ni;\":\"∋\",\"&prod;\":\"∏\",\"&sum;\":\"∑\",\"&minus;\":\"−\",\"&lowast;\":\"∗\",\"&radic;\":\"√\",\"&prop;\":\"∝\",\"&infin;\":\"∞\",\"&ang;\":\"∠\",\"&and;\":\"∧\",\"&or;\":\"∨\",\"&cap;\":\"∩\",\"&cup;\":\"∪\",\"&int;\":\"∫\",\"&there4;\":\"∴\",\"&sim;\":\"∼\",\"&cong;\":\"≅\",\"&asymp;\":\"≈\",\"&ne;\":\"≠\",\"&equiv;\":\"≡\",\"&le;\":\"≤\",\"&ge;\":\"≥\",\"&sub;\":\"⊂\",\"&sup;\":\"⊃\",\"&nsub;\":\"⊄\",\"&sube;\":\"⊆\",\"&supe;\":\"⊇\",\"&oplus;\":\"⊕\",\"&otimes;\":\"⊗\",\"&perp;\":\"⊥\",\"&sdot;\":\"⋅\",\"&lceil;\":\"⌈\",\"&rceil;\":\"⌉\",\"&lfloor;\":\"⌊\",\"&rfloor;\":\"⌋\",\"&lang;\":\"〈\",\"&rang;\":\"〉\",\"&loz;\":\"◊\",\"&spades;\":\"♠\",\"&clubs;\":\"♣\",\"&hearts;\":\"♥\",\"&diams;\":\"♦\"},characters:{\"'\":\"&apos;\",\" \":\"&nbsp;\",\"¡\":\"&iexcl;\",\"¢\":\"&cent;\",\"£\":\"&pound;\",\"¤\":\"&curren;\",\"¥\":\"&yen;\",\"¦\":\"&brvbar;\",\"§\":\"&sect;\",\"¨\":\"&uml;\",\"©\":\"&copy;\",\"ª\":\"&ordf;\",\"«\":\"&laquo;\",\"¬\":\"&not;\",\"­\":\"&shy;\",\"®\":\"&reg;\",\"¯\":\"&macr;\",\"°\":\"&deg;\",\"±\":\"&plusmn;\",\"²\":\"&sup2;\",\"³\":\"&sup3;\",\"´\":\"&acute;\",\"µ\":\"&micro;\",\"¶\":\"&para;\",\"·\":\"&middot;\",\"¸\":\"&cedil;\",\"¹\":\"&sup1;\",\"º\":\"&ordm;\",\"»\":\"&raquo;\",\"¼\":\"&frac14;\",\"½\":\"&frac12;\",\"¾\":\"&frac34;\",\"¿\":\"&iquest;\",\"À\":\"&Agrave;\",\"Á\":\"&Aacute;\",\"Â\":\"&Acirc;\",\"Ã\":\"&Atilde;\",\"Ä\":\"&Auml;\",\"Å\":\"&Aring;\",\"Æ\":\"&AElig;\",\"Ç\":\"&Ccedil;\",\"È\":\"&Egrave;\",\"É\":\"&Eacute;\",\"Ê\":\"&Ecirc;\",\"Ë\":\"&Euml;\",\"Ì\":\"&Igrave;\",\"Í\":\"&Iacute;\",\"Î\":\"&Icirc;\",\"Ï\":\"&Iuml;\",\"Ð\":\"&ETH;\",\"Ñ\":\"&Ntilde;\",\"Ò\":\"&Ograve;\",\"Ó\":\"&Oacute;\",\"Ô\":\"&Ocirc;\",\"Õ\":\"&Otilde;\",\"Ö\":\"&Ouml;\",\"×\":\"&times;\",\"Ø\":\"&Oslash;\",\"Ù\":\"&Ugrave;\",\"Ú\":\"&Uacute;\",\"Û\":\"&Ucirc;\",\"Ü\":\"&Uuml;\",\"Ý\":\"&Yacute;\",\"Þ\":\"&THORN;\",\"ß\":\"&szlig;\",\"à\":\"&agrave;\",\"á\":\"&aacute;\",\"â\":\"&acirc;\",\"ã\":\"&atilde;\",\"ä\":\"&auml;\",\"å\":\"&aring;\",\"æ\":\"&aelig;\",\"ç\":\"&ccedil;\",\"è\":\"&egrave;\",\"é\":\"&eacute;\",\"ê\":\"&ecirc;\",\"ë\":\"&euml;\",\"ì\":\"&igrave;\",\"í\":\"&iacute;\",\"î\":\"&icirc;\",\"ï\":\"&iuml;\",\"ð\":\"&eth;\",\"ñ\":\"&ntilde;\",\"ò\":\"&ograve;\",\"ó\":\"&oacute;\",\"ô\":\"&ocirc;\",\"õ\":\"&otilde;\",\"ö\":\"&ouml;\",\"÷\":\"&divide;\",\"ø\":\"&oslash;\",\"ù\":\"&ugrave;\",\"ú\":\"&uacute;\",\"û\":\"&ucirc;\",\"ü\":\"&uuml;\",\"ý\":\"&yacute;\",\"þ\":\"&thorn;\",\"ÿ\":\"&yuml;\",'\"':\"&quot;\",\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"Œ\":\"&OElig;\",\"œ\":\"&oelig;\",\"Š\":\"&Scaron;\",\"š\":\"&scaron;\",\"Ÿ\":\"&Yuml;\",\"ˆ\":\"&circ;\",\"˜\":\"&tilde;\",\" \":\"&ensp;\",\" \":\"&emsp;\",\" \":\"&thinsp;\",\"‌\":\"&zwnj;\",\"‍\":\"&zwj;\",\"‎\":\"&lrm;\",\"‏\":\"&rlm;\",\"–\":\"&ndash;\",\"—\":\"&mdash;\",\"‘\":\"&lsquo;\",\"’\":\"&rsquo;\",\"‚\":\"&sbquo;\",\"“\":\"&ldquo;\",\"”\":\"&rdquo;\",\"„\":\"&bdquo;\",\"†\":\"&dagger;\",\"‡\":\"&Dagger;\",\"‰\":\"&permil;\",\"‹\":\"&lsaquo;\",\"›\":\"&rsaquo;\",\"€\":\"&euro;\",\"ƒ\":\"&fnof;\",\"Α\":\"&Alpha;\",\"Β\":\"&Beta;\",\"Γ\":\"&Gamma;\",\"Δ\":\"&Delta;\",\"Ε\":\"&Epsilon;\",\"Ζ\":\"&Zeta;\",\"Η\":\"&Eta;\",\"Θ\":\"&Theta;\",\"Ι\":\"&Iota;\",\"Κ\":\"&Kappa;\",\"Λ\":\"&Lambda;\",\"Μ\":\"&Mu;\",\"Ν\":\"&Nu;\",\"Ξ\":\"&Xi;\",\"Ο\":\"&Omicron;\",\"Π\":\"&Pi;\",\"Ρ\":\"&Rho;\",\"Σ\":\"&Sigma;\",\"Τ\":\"&Tau;\",\"Υ\":\"&Upsilon;\",\"Φ\":\"&Phi;\",\"Χ\":\"&Chi;\",\"Ψ\":\"&Psi;\",\"Ω\":\"&Omega;\",\"α\":\"&alpha;\",\"β\":\"&beta;\",\"γ\":\"&gamma;\",\"δ\":\"&delta;\",\"ε\":\"&epsilon;\",\"ζ\":\"&zeta;\",\"η\":\"&eta;\",\"θ\":\"&theta;\",\"ι\":\"&iota;\",\"κ\":\"&kappa;\",\"λ\":\"&lambda;\",\"μ\":\"&mu;\",\"ν\":\"&nu;\",\"ξ\":\"&xi;\",\"ο\":\"&omicron;\",\"π\":\"&pi;\",\"ρ\":\"&rho;\",\"ς\":\"&sigmaf;\",\"σ\":\"&sigma;\",\"τ\":\"&tau;\",\"υ\":\"&upsilon;\",\"φ\":\"&phi;\",\"χ\":\"&chi;\",\"ψ\":\"&psi;\",\"ω\":\"&omega;\",\"ϑ\":\"&thetasym;\",\"ϒ\":\"&upsih;\",\"ϖ\":\"&piv;\",\"•\":\"&bull;\",\"…\":\"&hellip;\",\"′\":\"&prime;\",\"″\":\"&Prime;\",\"‾\":\"&oline;\",\"⁄\":\"&frasl;\",\"℘\":\"&weierp;\",\"ℑ\":\"&image;\",\"ℜ\":\"&real;\",\"™\":\"&trade;\",\"ℵ\":\"&alefsym;\",\"←\":\"&larr;\",\"↑\":\"&uarr;\",\"→\":\"&rarr;\",\"↓\":\"&darr;\",\"↔\":\"&harr;\",\"↵\":\"&crarr;\",\"⇐\":\"&lArr;\",\"⇑\":\"&uArr;\",\"⇒\":\"&rArr;\",\"⇓\":\"&dArr;\",\"⇔\":\"&hArr;\",\"∀\":\"&forall;\",\"∂\":\"&part;\",\"∃\":\"&exist;\",\"∅\":\"&empty;\",\"∇\":\"&nabla;\",\"∈\":\"&isin;\",\"∉\":\"&notin;\",\"∋\":\"&ni;\",\"∏\":\"&prod;\",\"∑\":\"&sum;\",\"−\":\"&minus;\",\"∗\":\"&lowast;\",\"√\":\"&radic;\",\"∝\":\"&prop;\",\"∞\":\"&infin;\",\"∠\":\"&ang;\",\"∧\":\"&and;\",\"∨\":\"&or;\",\"∩\":\"&cap;\",\"∪\":\"&cup;\",\"∫\":\"&int;\",\"∴\":\"&there4;\",\"∼\":\"&sim;\",\"≅\":\"&cong;\",\"≈\":\"&asymp;\",\"≠\":\"&ne;\",\"≡\":\"&equiv;\",\"≤\":\"&le;\",\"≥\":\"&ge;\",\"⊂\":\"&sub;\",\"⊃\":\"&sup;\",\"⊄\":\"&nsub;\",\"⊆\":\"&sube;\",\"⊇\":\"&supe;\",\"⊕\":\"&oplus;\",\"⊗\":\"&otimes;\",\"⊥\":\"&perp;\",\"⋅\":\"&sdot;\",\"⌈\":\"&lceil;\",\"⌉\":\"&rceil;\",\"⌊\":\"&lfloor;\",\"⌋\":\"&rfloor;\",\"〈\":\"&lang;\",\"〉\":\"&rang;\",\"◊\":\"&loz;\",\"♠\":\"&spades;\",\"♣\":\"&clubs;\",\"♥\":\"&hearts;\",\"♦\":\"&diams;\"}},html5:{entities:{\"&AElig\":\"Æ\",\"&AElig;\":\"Æ\",\"&AMP\":\"&\",\"&AMP;\":\"&\",\"&Aacute\":\"Á\",\"&Aacute;\":\"Á\",\"&Abreve;\":\"Ă\",\"&Acirc\":\"Â\",\"&Acirc;\":\"Â\",\"&Acy;\":\"А\",\"&Afr;\":\"𝔄\",\"&Agrave\":\"À\",\"&Agrave;\":\"À\",\"&Alpha;\":\"Α\",\"&Amacr;\":\"Ā\",\"&And;\":\"⩓\",\"&Aogon;\":\"Ą\",\"&Aopf;\":\"𝔸\",\"&ApplyFunction;\":\"⁡\",\"&Aring\":\"Å\",\"&Aring;\":\"Å\",\"&Ascr;\":\"𝒜\",\"&Assign;\":\"≔\",\"&Atilde\":\"Ã\",\"&Atilde;\":\"Ã\",\"&Auml\":\"Ä\",\"&Auml;\":\"Ä\",\"&Backslash;\":\"∖\",\"&Barv;\":\"⫧\",\"&Barwed;\":\"⌆\",\"&Bcy;\":\"Б\",\"&Because;\":\"∵\",\"&Bernoullis;\":\"ℬ\",\"&Beta;\":\"Β\",\"&Bfr;\":\"𝔅\",\"&Bopf;\":\"𝔹\",\"&Breve;\":\"˘\",\"&Bscr;\":\"ℬ\",\"&Bumpeq;\":\"≎\",\"&CHcy;\":\"Ч\",\"&COPY\":\"©\",\"&COPY;\":\"©\",\"&Cacute;\":\"Ć\",\"&Cap;\":\"⋒\",\"&CapitalDifferentialD;\":\"ⅅ\",\"&Cayleys;\":\"ℭ\",\"&Ccaron;\":\"Č\",\"&Ccedil\":\"Ç\",\"&Ccedil;\":\"Ç\",\"&Ccirc;\":\"Ĉ\",\"&Cconint;\":\"∰\",\"&Cdot;\":\"Ċ\",\"&Cedilla;\":\"¸\",\"&CenterDot;\":\"·\",\"&Cfr;\":\"ℭ\",\"&Chi;\":\"Χ\",\"&CircleDot;\":\"⊙\",\"&CircleMinus;\":\"⊖\",\"&CirclePlus;\":\"⊕\",\"&CircleTimes;\":\"⊗\",\"&ClockwiseContourIntegral;\":\"∲\",\"&CloseCurlyDoubleQuote;\":\"”\",\"&CloseCurlyQuote;\":\"’\",\"&Colon;\":\"∷\",\"&Colone;\":\"⩴\",\"&Congruent;\":\"≡\",\"&Conint;\":\"∯\",\"&ContourIntegral;\":\"∮\",\"&Copf;\":\"ℂ\",\"&Coproduct;\":\"∐\",\"&CounterClockwiseContourIntegral;\":\"∳\",\"&Cross;\":\"⨯\",\"&Cscr;\":\"𝒞\",\"&Cup;\":\"⋓\",\"&CupCap;\":\"≍\",\"&DD;\":\"ⅅ\",\"&DDotrahd;\":\"⤑\",\"&DJcy;\":\"Ђ\",\"&DScy;\":\"Ѕ\",\"&DZcy;\":\"Џ\",\"&Dagger;\":\"‡\",\"&Darr;\":\"↡\",\"&Dashv;\":\"⫤\",\"&Dcaron;\":\"Ď\",\"&Dcy;\":\"Д\",\"&Del;\":\"∇\",\"&Delta;\":\"Δ\",\"&Dfr;\":\"𝔇\",\"&DiacriticalAcute;\":\"´\",\"&DiacriticalDot;\":\"˙\",\"&DiacriticalDoubleAcute;\":\"˝\",\"&DiacriticalGrave;\":\"`\",\"&DiacriticalTilde;\":\"˜\",\"&Diamond;\":\"⋄\",\"&DifferentialD;\":\"ⅆ\",\"&Dopf;\":\"𝔻\",\"&Dot;\":\"¨\",\"&DotDot;\":\"⃜\",\"&DotEqual;\":\"≐\",\"&DoubleContourIntegral;\":\"∯\",\"&DoubleDot;\":\"¨\",\"&DoubleDownArrow;\":\"⇓\",\"&DoubleLeftArrow;\":\"⇐\",\"&DoubleLeftRightArrow;\":\"⇔\",\"&DoubleLeftTee;\":\"⫤\",\"&DoubleLongLeftArrow;\":\"⟸\",\"&DoubleLongLeftRightArrow;\":\"⟺\",\"&DoubleLongRightArrow;\":\"⟹\",\"&DoubleRightArrow;\":\"⇒\",\"&DoubleRightTee;\":\"⊨\",\"&DoubleUpArrow;\":\"⇑\",\"&DoubleUpDownArrow;\":\"⇕\",\"&DoubleVerticalBar;\":\"∥\",\"&DownArrow;\":\"↓\",\"&DownArrowBar;\":\"⤓\",\"&DownArrowUpArrow;\":\"⇵\",\"&DownBreve;\":\"̑\",\"&DownLeftRightVector;\":\"⥐\",\"&DownLeftTeeVector;\":\"⥞\",\"&DownLeftVector;\":\"↽\",\"&DownLeftVectorBar;\":\"⥖\",\"&DownRightTeeVector;\":\"⥟\",\"&DownRightVector;\":\"⇁\",\"&DownRightVectorBar;\":\"⥗\",\"&DownTee;\":\"⊤\",\"&DownTeeArrow;\":\"↧\",\"&Downarrow;\":\"⇓\",\"&Dscr;\":\"𝒟\",\"&Dstrok;\":\"Đ\",\"&ENG;\":\"Ŋ\",\"&ETH\":\"Ð\",\"&ETH;\":\"Ð\",\"&Eacute\":\"É\",\"&Eacute;\":\"É\",\"&Ecaron;\":\"Ě\",\"&Ecirc\":\"Ê\",\"&Ecirc;\":\"Ê\",\"&Ecy;\":\"Э\",\"&Edot;\":\"Ė\",\"&Efr;\":\"𝔈\",\"&Egrave\":\"È\",\"&Egrave;\":\"È\",\"&Element;\":\"∈\",\"&Emacr;\":\"Ē\",\"&EmptySmallSquare;\":\"◻\",\"&EmptyVerySmallSquare;\":\"▫\",\"&Eogon;\":\"Ę\",\"&Eopf;\":\"𝔼\",\"&Epsilon;\":\"Ε\",\"&Equal;\":\"⩵\",\"&EqualTilde;\":\"≂\",\"&Equilibrium;\":\"⇌\",\"&Escr;\":\"ℰ\",\"&Esim;\":\"⩳\",\"&Eta;\":\"Η\",\"&Euml\":\"Ë\",\"&Euml;\":\"Ë\",\"&Exists;\":\"∃\",\"&ExponentialE;\":\"ⅇ\",\"&Fcy;\":\"Ф\",\"&Ffr;\":\"𝔉\",\"&FilledSmallSquare;\":\"◼\",\"&FilledVerySmallSquare;\":\"▪\",\"&Fopf;\":\"𝔽\",\"&ForAll;\":\"∀\",\"&Fouriertrf;\":\"ℱ\",\"&Fscr;\":\"ℱ\",\"&GJcy;\":\"Ѓ\",\"&GT\":\">\",\"&GT;\":\">\",\"&Gamma;\":\"Γ\",\"&Gammad;\":\"Ϝ\",\"&Gbreve;\":\"Ğ\",\"&Gcedil;\":\"Ģ\",\"&Gcirc;\":\"Ĝ\",\"&Gcy;\":\"Г\",\"&Gdot;\":\"Ġ\",\"&Gfr;\":\"𝔊\",\"&Gg;\":\"⋙\",\"&Gopf;\":\"𝔾\",\"&GreaterEqual;\":\"≥\",\"&GreaterEqualLess;\":\"⋛\",\"&GreaterFullEqual;\":\"≧\",\"&GreaterGreater;\":\"⪢\",\"&GreaterLess;\":\"≷\",\"&GreaterSlantEqual;\":\"⩾\",\"&GreaterTilde;\":\"≳\",\"&Gscr;\":\"𝒢\",\"&Gt;\":\"≫\",\"&HARDcy;\":\"Ъ\",\"&Hacek;\":\"ˇ\",\"&Hat;\":\"^\",\"&Hcirc;\":\"Ĥ\",\"&Hfr;\":\"ℌ\",\"&HilbertSpace;\":\"ℋ\",\"&Hopf;\":\"ℍ\",\"&HorizontalLine;\":\"─\",\"&Hscr;\":\"ℋ\",\"&Hstrok;\":\"Ħ\",\"&HumpDownHump;\":\"≎\",\"&HumpEqual;\":\"≏\",\"&IEcy;\":\"Е\",\"&IJlig;\":\"IJ\",\"&IOcy;\":\"Ё\",\"&Iacute\":\"Í\",\"&Iacute;\":\"Í\",\"&Icirc\":\"Î\",\"&Icirc;\":\"Î\",\"&Icy;\":\"И\",\"&Idot;\":\"İ\",\"&Ifr;\":\"ℑ\",\"&Igrave\":\"Ì\",\"&Igrave;\":\"Ì\",\"&Im;\":\"ℑ\",\"&Imacr;\":\"Ī\",\"&ImaginaryI;\":\"ⅈ\",\"&Implies;\":\"⇒\",\"&Int;\":\"∬\",\"&Integral;\":\"∫\",\"&Intersection;\":\"⋂\",\"&InvisibleComma;\":\"⁣\",\"&InvisibleTimes;\":\"⁢\",\"&Iogon;\":\"Į\",\"&Iopf;\":\"𝕀\",\"&Iota;\":\"Ι\",\"&Iscr;\":\"ℐ\",\"&Itilde;\":\"Ĩ\",\"&Iukcy;\":\"І\",\"&Iuml\":\"Ï\",\"&Iuml;\":\"Ï\",\"&Jcirc;\":\"Ĵ\",\"&Jcy;\":\"Й\",\"&Jfr;\":\"𝔍\",\"&Jopf;\":\"𝕁\",\"&Jscr;\":\"𝒥\",\"&Jsercy;\":\"Ј\",\"&Jukcy;\":\"Є\",\"&KHcy;\":\"Х\",\"&KJcy;\":\"Ќ\",\"&Kappa;\":\"Κ\",\"&Kcedil;\":\"Ķ\",\"&Kcy;\":\"К\",\"&Kfr;\":\"𝔎\",\"&Kopf;\":\"𝕂\",\"&Kscr;\":\"𝒦\",\"&LJcy;\":\"Љ\",\"&LT\":\"<\",\"&LT;\":\"<\",\"&Lacute;\":\"Ĺ\",\"&Lambda;\":\"Λ\",\"&Lang;\":\"⟪\",\"&Laplacetrf;\":\"ℒ\",\"&Larr;\":\"↞\",\"&Lcaron;\":\"Ľ\",\"&Lcedil;\":\"Ļ\",\"&Lcy;\":\"Л\",\"&LeftAngleBracket;\":\"⟨\",\"&LeftArrow;\":\"←\",\"&LeftArrowBar;\":\"⇤\",\"&LeftArrowRightArrow;\":\"⇆\",\"&LeftCeiling;\":\"⌈\",\"&LeftDoubleBracket;\":\"⟦\",\"&LeftDownTeeVector;\":\"⥡\",\"&LeftDownVector;\":\"⇃\",\"&LeftDownVectorBar;\":\"⥙\",\"&LeftFloor;\":\"⌊\",\"&LeftRightArrow;\":\"↔\",\"&LeftRightVector;\":\"⥎\",\"&LeftTee;\":\"⊣\",\"&LeftTeeArrow;\":\"↤\",\"&LeftTeeVector;\":\"⥚\",\"&LeftTriangle;\":\"⊲\",\"&LeftTriangleBar;\":\"⧏\",\"&LeftTriangleEqual;\":\"⊴\",\"&LeftUpDownVector;\":\"⥑\",\"&LeftUpTeeVector;\":\"⥠\",\"&LeftUpVector;\":\"↿\",\"&LeftUpVectorBar;\":\"⥘\",\"&LeftVector;\":\"↼\",\"&LeftVectorBar;\":\"⥒\",\"&Leftarrow;\":\"⇐\",\"&Leftrightarrow;\":\"⇔\",\"&LessEqualGreater;\":\"⋚\",\"&LessFullEqual;\":\"≦\",\"&LessGreater;\":\"≶\",\"&LessLess;\":\"⪡\",\"&LessSlantEqual;\":\"⩽\",\"&LessTilde;\":\"≲\",\"&Lfr;\":\"𝔏\",\"&Ll;\":\"⋘\",\"&Lleftarrow;\":\"⇚\",\"&Lmidot;\":\"Ŀ\",\"&LongLeftArrow;\":\"⟵\",\"&LongLeftRightArrow;\":\"⟷\",\"&LongRightArrow;\":\"⟶\",\"&Longleftarrow;\":\"⟸\",\"&Longleftrightarrow;\":\"⟺\",\"&Longrightarrow;\":\"⟹\",\"&Lopf;\":\"𝕃\",\"&LowerLeftArrow;\":\"↙\",\"&LowerRightArrow;\":\"↘\",\"&Lscr;\":\"ℒ\",\"&Lsh;\":\"↰\",\"&Lstrok;\":\"Ł\",\"&Lt;\":\"≪\",\"&Map;\":\"⤅\",\"&Mcy;\":\"М\",\"&MediumSpace;\":\" \",\"&Mellintrf;\":\"ℳ\",\"&Mfr;\":\"𝔐\",\"&MinusPlus;\":\"∓\",\"&Mopf;\":\"𝕄\",\"&Mscr;\":\"ℳ\",\"&Mu;\":\"Μ\",\"&NJcy;\":\"Њ\",\"&Nacute;\":\"Ń\",\"&Ncaron;\":\"Ň\",\"&Ncedil;\":\"Ņ\",\"&Ncy;\":\"Н\",\"&NegativeMediumSpace;\":\"​\",\"&NegativeThickSpace;\":\"​\",\"&NegativeThinSpace;\":\"​\",\"&NegativeVeryThinSpace;\":\"​\",\"&NestedGreaterGreater;\":\"≫\",\"&NestedLessLess;\":\"≪\",\"&NewLine;\":\"\\n\",\"&Nfr;\":\"𝔑\",\"&NoBreak;\":\"⁠\",\"&NonBreakingSpace;\":\" \",\"&Nopf;\":\"ℕ\",\"&Not;\":\"⫬\",\"&NotCongruent;\":\"≢\",\"&NotCupCap;\":\"≭\",\"&NotDoubleVerticalBar;\":\"∦\",\"&NotElement;\":\"∉\",\"&NotEqual;\":\"≠\",\"&NotEqualTilde;\":\"≂̸\",\"&NotExists;\":\"∄\",\"&NotGreater;\":\"≯\",\"&NotGreaterEqual;\":\"≱\",\"&NotGreaterFullEqual;\":\"≧̸\",\"&NotGreaterGreater;\":\"≫̸\",\"&NotGreaterLess;\":\"≹\",\"&NotGreaterSlantEqual;\":\"⩾̸\",\"&NotGreaterTilde;\":\"≵\",\"&NotHumpDownHump;\":\"≎̸\",\"&NotHumpEqual;\":\"≏̸\",\"&NotLeftTriangle;\":\"⋪\",\"&NotLeftTriangleBar;\":\"⧏̸\",\"&NotLeftTriangleEqual;\":\"⋬\",\"&NotLess;\":\"≮\",\"&NotLessEqual;\":\"≰\",\"&NotLessGreater;\":\"≸\",\"&NotLessLess;\":\"≪̸\",\"&NotLessSlantEqual;\":\"⩽̸\",\"&NotLessTilde;\":\"≴\",\"&NotNestedGreaterGreater;\":\"⪢̸\",\"&NotNestedLessLess;\":\"⪡̸\",\"&NotPrecedes;\":\"⊀\",\"&NotPrecedesEqual;\":\"⪯̸\",\"&NotPrecedesSlantEqual;\":\"⋠\",\"&NotReverseElement;\":\"∌\",\"&NotRightTriangle;\":\"⋫\",\"&NotRightTriangleBar;\":\"⧐̸\",\"&NotRightTriangleEqual;\":\"⋭\",\"&NotSquareSubset;\":\"⊏̸\",\"&NotSquareSubsetEqual;\":\"⋢\",\"&NotSquareSuperset;\":\"⊐̸\",\"&NotSquareSupersetEqual;\":\"⋣\",\"&NotSubset;\":\"⊂⃒\",\"&NotSubsetEqual;\":\"⊈\",\"&NotSucceeds;\":\"⊁\",\"&NotSucceedsEqual;\":\"⪰̸\",\"&NotSucceedsSlantEqual;\":\"⋡\",\"&NotSucceedsTilde;\":\"≿̸\",\"&NotSuperset;\":\"⊃⃒\",\"&NotSupersetEqual;\":\"⊉\",\"&NotTilde;\":\"≁\",\"&NotTildeEqual;\":\"≄\",\"&NotTildeFullEqual;\":\"≇\",\"&NotTildeTilde;\":\"≉\",\"&NotVerticalBar;\":\"∤\",\"&Nscr;\":\"𝒩\",\"&Ntilde\":\"Ñ\",\"&Ntilde;\":\"Ñ\",\"&Nu;\":\"Ν\",\"&OElig;\":\"Œ\",\"&Oacute\":\"Ó\",\"&Oacute;\":\"Ó\",\"&Ocirc\":\"Ô\",\"&Ocirc;\":\"Ô\",\"&Ocy;\":\"О\",\"&Odblac;\":\"Ő\",\"&Ofr;\":\"𝔒\",\"&Ograve\":\"Ò\",\"&Ograve;\":\"Ò\",\"&Omacr;\":\"Ō\",\"&Omega;\":\"Ω\",\"&Omicron;\":\"Ο\",\"&Oopf;\":\"𝕆\",\"&OpenCurlyDoubleQuote;\":\"“\",\"&OpenCurlyQuote;\":\"‘\",\"&Or;\":\"⩔\",\"&Oscr;\":\"𝒪\",\"&Oslash\":\"Ø\",\"&Oslash;\":\"Ø\",\"&Otilde\":\"Õ\",\"&Otilde;\":\"Õ\",\"&Otimes;\":\"⨷\",\"&Ouml\":\"Ö\",\"&Ouml;\":\"Ö\",\"&OverBar;\":\"‾\",\"&OverBrace;\":\"⏞\",\"&OverBracket;\":\"⎴\",\"&OverParenthesis;\":\"⏜\",\"&PartialD;\":\"∂\",\"&Pcy;\":\"П\",\"&Pfr;\":\"𝔓\",\"&Phi;\":\"Φ\",\"&Pi;\":\"Π\",\"&PlusMinus;\":\"±\",\"&Poincareplane;\":\"ℌ\",\"&Popf;\":\"ℙ\",\"&Pr;\":\"⪻\",\"&Precedes;\":\"≺\",\"&PrecedesEqual;\":\"⪯\",\"&PrecedesSlantEqual;\":\"≼\",\"&PrecedesTilde;\":\"≾\",\"&Prime;\":\"″\",\"&Product;\":\"∏\",\"&Proportion;\":\"∷\",\"&Proportional;\":\"∝\",\"&Pscr;\":\"𝒫\",\"&Psi;\":\"Ψ\",\"&QUOT\":'\"',\"&QUOT;\":'\"',\"&Qfr;\":\"𝔔\",\"&Qopf;\":\"ℚ\",\"&Qscr;\":\"𝒬\",\"&RBarr;\":\"⤐\",\"&REG\":\"®\",\"&REG;\":\"®\",\"&Racute;\":\"Ŕ\",\"&Rang;\":\"⟫\",\"&Rarr;\":\"↠\",\"&Rarrtl;\":\"⤖\",\"&Rcaron;\":\"Ř\",\"&Rcedil;\":\"Ŗ\",\"&Rcy;\":\"Р\",\"&Re;\":\"ℜ\",\"&ReverseElement;\":\"∋\",\"&ReverseEquilibrium;\":\"⇋\",\"&ReverseUpEquilibrium;\":\"⥯\",\"&Rfr;\":\"ℜ\",\"&Rho;\":\"Ρ\",\"&RightAngleBracket;\":\"⟩\",\"&RightArrow;\":\"→\",\"&RightArrowBar;\":\"⇥\",\"&RightArrowLeftArrow;\":\"⇄\",\"&RightCeiling;\":\"⌉\",\"&RightDoubleBracket;\":\"⟧\",\"&RightDownTeeVector;\":\"⥝\",\"&RightDownVector;\":\"⇂\",\"&RightDownVectorBar;\":\"⥕\",\"&RightFloor;\":\"⌋\",\"&RightTee;\":\"⊢\",\"&RightTeeArrow;\":\"↦\",\"&RightTeeVector;\":\"⥛\",\"&RightTriangle;\":\"⊳\",\"&RightTriangleBar;\":\"⧐\",\"&RightTriangleEqual;\":\"⊵\",\"&RightUpDownVector;\":\"⥏\",\"&RightUpTeeVector;\":\"⥜\",\"&RightUpVector;\":\"↾\",\"&RightUpVectorBar;\":\"⥔\",\"&RightVector;\":\"⇀\",\"&RightVectorBar;\":\"⥓\",\"&Rightarrow;\":\"⇒\",\"&Ropf;\":\"ℝ\",\"&RoundImplies;\":\"⥰\",\"&Rrightarrow;\":\"⇛\",\"&Rscr;\":\"ℛ\",\"&Rsh;\":\"↱\",\"&RuleDelayed;\":\"⧴\",\"&SHCHcy;\":\"Щ\",\"&SHcy;\":\"Ш\",\"&SOFTcy;\":\"Ь\",\"&Sacute;\":\"Ś\",\"&Sc;\":\"⪼\",\"&Scaron;\":\"Š\",\"&Scedil;\":\"Ş\",\"&Scirc;\":\"Ŝ\",\"&Scy;\":\"С\",\"&Sfr;\":\"𝔖\",\"&ShortDownArrow;\":\"↓\",\"&ShortLeftArrow;\":\"←\",\"&ShortRightArrow;\":\"→\",\"&ShortUpArrow;\":\"↑\",\"&Sigma;\":\"Σ\",\"&SmallCircle;\":\"∘\",\"&Sopf;\":\"𝕊\",\"&Sqrt;\":\"√\",\"&Square;\":\"□\",\"&SquareIntersection;\":\"⊓\",\"&SquareSubset;\":\"⊏\",\"&SquareSubsetEqual;\":\"⊑\",\"&SquareSuperset;\":\"⊐\",\"&SquareSupersetEqual;\":\"⊒\",\"&SquareUnion;\":\"⊔\",\"&Sscr;\":\"𝒮\",\"&Star;\":\"⋆\",\"&Sub;\":\"⋐\",\"&Subset;\":\"⋐\",\"&SubsetEqual;\":\"⊆\",\"&Succeeds;\":\"≻\",\"&SucceedsEqual;\":\"⪰\",\"&SucceedsSlantEqual;\":\"≽\",\"&SucceedsTilde;\":\"≿\",\"&SuchThat;\":\"∋\",\"&Sum;\":\"∑\",\"&Sup;\":\"⋑\",\"&Superset;\":\"⊃\",\"&SupersetEqual;\":\"⊇\",\"&Supset;\":\"⋑\",\"&THORN\":\"Þ\",\"&THORN;\":\"Þ\",\"&TRADE;\":\"™\",\"&TSHcy;\":\"Ћ\",\"&TScy;\":\"Ц\",\"&Tab;\":\"\\t\",\"&Tau;\":\"Τ\",\"&Tcaron;\":\"Ť\",\"&Tcedil;\":\"Ţ\",\"&Tcy;\":\"Т\",\"&Tfr;\":\"𝔗\",\"&Therefore;\":\"∴\",\"&Theta;\":\"Θ\",\"&ThickSpace;\":\"  \",\"&ThinSpace;\":\" \",\"&Tilde;\":\"∼\",\"&TildeEqual;\":\"≃\",\"&TildeFullEqual;\":\"≅\",\"&TildeTilde;\":\"≈\",\"&Topf;\":\"𝕋\",\"&TripleDot;\":\"⃛\",\"&Tscr;\":\"𝒯\",\"&Tstrok;\":\"Ŧ\",\"&Uacute\":\"Ú\",\"&Uacute;\":\"Ú\",\"&Uarr;\":\"↟\",\"&Uarrocir;\":\"⥉\",\"&Ubrcy;\":\"Ў\",\"&Ubreve;\":\"Ŭ\",\"&Ucirc\":\"Û\",\"&Ucirc;\":\"Û\",\"&Ucy;\":\"У\",\"&Udblac;\":\"Ű\",\"&Ufr;\":\"𝔘\",\"&Ugrave\":\"Ù\",\"&Ugrave;\":\"Ù\",\"&Umacr;\":\"Ū\",\"&UnderBar;\":\"_\",\"&UnderBrace;\":\"⏟\",\"&UnderBracket;\":\"⎵\",\"&UnderParenthesis;\":\"⏝\",\"&Union;\":\"⋃\",\"&UnionPlus;\":\"⊎\",\"&Uogon;\":\"Ų\",\"&Uopf;\":\"𝕌\",\"&UpArrow;\":\"↑\",\"&UpArrowBar;\":\"⤒\",\"&UpArrowDownArrow;\":\"⇅\",\"&UpDownArrow;\":\"↕\",\"&UpEquilibrium;\":\"⥮\",\"&UpTee;\":\"⊥\",\"&UpTeeArrow;\":\"↥\",\"&Uparrow;\":\"⇑\",\"&Updownarrow;\":\"⇕\",\"&UpperLeftArrow;\":\"↖\",\"&UpperRightArrow;\":\"↗\",\"&Upsi;\":\"ϒ\",\"&Upsilon;\":\"Υ\",\"&Uring;\":\"Ů\",\"&Uscr;\":\"𝒰\",\"&Utilde;\":\"Ũ\",\"&Uuml\":\"Ü\",\"&Uuml;\":\"Ü\",\"&VDash;\":\"⊫\",\"&Vbar;\":\"⫫\",\"&Vcy;\":\"В\",\"&Vdash;\":\"⊩\",\"&Vdashl;\":\"⫦\",\"&Vee;\":\"⋁\",\"&Verbar;\":\"‖\",\"&Vert;\":\"‖\",\"&VerticalBar;\":\"∣\",\"&VerticalLine;\":\"|\",\"&VerticalSeparator;\":\"❘\",\"&VerticalTilde;\":\"≀\",\"&VeryThinSpace;\":\" \",\"&Vfr;\":\"𝔙\",\"&Vopf;\":\"𝕍\",\"&Vscr;\":\"𝒱\",\"&Vvdash;\":\"⊪\",\"&Wcirc;\":\"Ŵ\",\"&Wedge;\":\"⋀\",\"&Wfr;\":\"𝔚\",\"&Wopf;\":\"𝕎\",\"&Wscr;\":\"𝒲\",\"&Xfr;\":\"𝔛\",\"&Xi;\":\"Ξ\",\"&Xopf;\":\"𝕏\",\"&Xscr;\":\"𝒳\",\"&YAcy;\":\"Я\",\"&YIcy;\":\"Ї\",\"&YUcy;\":\"Ю\",\"&Yacute\":\"Ý\",\"&Yacute;\":\"Ý\",\"&Ycirc;\":\"Ŷ\",\"&Ycy;\":\"Ы\",\"&Yfr;\":\"𝔜\",\"&Yopf;\":\"𝕐\",\"&Yscr;\":\"𝒴\",\"&Yuml;\":\"Ÿ\",\"&ZHcy;\":\"Ж\",\"&Zacute;\":\"Ź\",\"&Zcaron;\":\"Ž\",\"&Zcy;\":\"З\",\"&Zdot;\":\"Ż\",\"&ZeroWidthSpace;\":\"​\",\"&Zeta;\":\"Ζ\",\"&Zfr;\":\"ℨ\",\"&Zopf;\":\"ℤ\",\"&Zscr;\":\"𝒵\",\"&aacute\":\"á\",\"&aacute;\":\"á\",\"&abreve;\":\"ă\",\"&ac;\":\"∾\",\"&acE;\":\"∾̳\",\"&acd;\":\"∿\",\"&acirc\":\"â\",\"&acirc;\":\"â\",\"&acute\":\"´\",\"&acute;\":\"´\",\"&acy;\":\"а\",\"&aelig\":\"æ\",\"&aelig;\":\"æ\",\"&af;\":\"⁡\",\"&afr;\":\"𝔞\",\"&agrave\":\"à\",\"&agrave;\":\"à\",\"&alefsym;\":\"ℵ\",\"&aleph;\":\"ℵ\",\"&alpha;\":\"α\",\"&amacr;\":\"ā\",\"&amalg;\":\"⨿\",\"&amp\":\"&\",\"&amp;\":\"&\",\"&and;\":\"∧\",\"&andand;\":\"⩕\",\"&andd;\":\"⩜\",\"&andslope;\":\"⩘\",\"&andv;\":\"⩚\",\"&ang;\":\"∠\",\"&ange;\":\"⦤\",\"&angle;\":\"∠\",\"&angmsd;\":\"∡\",\"&angmsdaa;\":\"⦨\",\"&angmsdab;\":\"⦩\",\"&angmsdac;\":\"⦪\",\"&angmsdad;\":\"⦫\",\"&angmsdae;\":\"⦬\",\"&angmsdaf;\":\"⦭\",\"&angmsdag;\":\"⦮\",\"&angmsdah;\":\"⦯\",\"&angrt;\":\"∟\",\"&angrtvb;\":\"⊾\",\"&angrtvbd;\":\"⦝\",\"&angsph;\":\"∢\",\"&angst;\":\"Å\",\"&angzarr;\":\"⍼\",\"&aogon;\":\"ą\",\"&aopf;\":\"𝕒\",\"&ap;\":\"≈\",\"&apE;\":\"⩰\",\"&apacir;\":\"⩯\",\"&ape;\":\"≊\",\"&apid;\":\"≋\",\"&apos;\":\"'\",\"&approx;\":\"≈\",\"&approxeq;\":\"≊\",\"&aring\":\"å\",\"&aring;\":\"å\",\"&ascr;\":\"𝒶\",\"&ast;\":\"*\",\"&asymp;\":\"≈\",\"&asympeq;\":\"≍\",\"&atilde\":\"ã\",\"&atilde;\":\"ã\",\"&auml\":\"ä\",\"&auml;\":\"ä\",\"&awconint;\":\"∳\",\"&awint;\":\"⨑\",\"&bNot;\":\"⫭\",\"&backcong;\":\"≌\",\"&backepsilon;\":\"϶\",\"&backprime;\":\"‵\",\"&backsim;\":\"∽\",\"&backsimeq;\":\"⋍\",\"&barvee;\":\"⊽\",\"&barwed;\":\"⌅\",\"&barwedge;\":\"⌅\",\"&bbrk;\":\"⎵\",\"&bbrktbrk;\":\"⎶\",\"&bcong;\":\"≌\",\"&bcy;\":\"б\",\"&bdquo;\":\"„\",\"&becaus;\":\"∵\",\"&because;\":\"∵\",\"&bemptyv;\":\"⦰\",\"&bepsi;\":\"϶\",\"&bernou;\":\"ℬ\",\"&beta;\":\"β\",\"&beth;\":\"ℶ\",\"&between;\":\"≬\",\"&bfr;\":\"𝔟\",\"&bigcap;\":\"⋂\",\"&bigcirc;\":\"◯\",\"&bigcup;\":\"⋃\",\"&bigodot;\":\"⨀\",\"&bigoplus;\":\"⨁\",\"&bigotimes;\":\"⨂\",\"&bigsqcup;\":\"⨆\",\"&bigstar;\":\"★\",\"&bigtriangledown;\":\"▽\",\"&bigtriangleup;\":\"△\",\"&biguplus;\":\"⨄\",\"&bigvee;\":\"⋁\",\"&bigwedge;\":\"⋀\",\"&bkarow;\":\"⤍\",\"&blacklozenge;\":\"⧫\",\"&blacksquare;\":\"▪\",\"&blacktriangle;\":\"▴\",\"&blacktriangledown;\":\"▾\",\"&blacktriangleleft;\":\"◂\",\"&blacktriangleright;\":\"▸\",\"&blank;\":\"␣\",\"&blk12;\":\"▒\",\"&blk14;\":\"░\",\"&blk34;\":\"▓\",\"&block;\":\"█\",\"&bne;\":\"=⃥\",\"&bnequiv;\":\"≡⃥\",\"&bnot;\":\"⌐\",\"&bopf;\":\"𝕓\",\"&bot;\":\"⊥\",\"&bottom;\":\"⊥\",\"&bowtie;\":\"⋈\",\"&boxDL;\":\"╗\",\"&boxDR;\":\"╔\",\"&boxDl;\":\"╖\",\"&boxDr;\":\"╓\",\"&boxH;\":\"═\",\"&boxHD;\":\"╦\",\"&boxHU;\":\"╩\",\"&boxHd;\":\"╤\",\"&boxHu;\":\"╧\",\"&boxUL;\":\"╝\",\"&boxUR;\":\"╚\",\"&boxUl;\":\"╜\",\"&boxUr;\":\"╙\",\"&boxV;\":\"║\",\"&boxVH;\":\"╬\",\"&boxVL;\":\"╣\",\"&boxVR;\":\"╠\",\"&boxVh;\":\"╫\",\"&boxVl;\":\"╢\",\"&boxVr;\":\"╟\",\"&boxbox;\":\"⧉\",\"&boxdL;\":\"╕\",\"&boxdR;\":\"╒\",\"&boxdl;\":\"┐\",\"&boxdr;\":\"┌\",\"&boxh;\":\"─\",\"&boxhD;\":\"╥\",\"&boxhU;\":\"╨\",\"&boxhd;\":\"┬\",\"&boxhu;\":\"┴\",\"&boxminus;\":\"⊟\",\"&boxplus;\":\"⊞\",\"&boxtimes;\":\"⊠\",\"&boxuL;\":\"╛\",\"&boxuR;\":\"╘\",\"&boxul;\":\"┘\",\"&boxur;\":\"└\",\"&boxv;\":\"│\",\"&boxvH;\":\"╪\",\"&boxvL;\":\"╡\",\"&boxvR;\":\"╞\",\"&boxvh;\":\"┼\",\"&boxvl;\":\"┤\",\"&boxvr;\":\"├\",\"&bprime;\":\"‵\",\"&breve;\":\"˘\",\"&brvbar\":\"¦\",\"&brvbar;\":\"¦\",\"&bscr;\":\"𝒷\",\"&bsemi;\":\"⁏\",\"&bsim;\":\"∽\",\"&bsime;\":\"⋍\",\"&bsol;\":\"\\\\\",\"&bsolb;\":\"⧅\",\"&bsolhsub;\":\"⟈\",\"&bull;\":\"•\",\"&bullet;\":\"•\",\"&bump;\":\"≎\",\"&bumpE;\":\"⪮\",\"&bumpe;\":\"≏\",\"&bumpeq;\":\"≏\",\"&cacute;\":\"ć\",\"&cap;\":\"∩\",\"&capand;\":\"⩄\",\"&capbrcup;\":\"⩉\",\"&capcap;\":\"⩋\",\"&capcup;\":\"⩇\",\"&capdot;\":\"⩀\",\"&caps;\":\"∩︀\",\"&caret;\":\"⁁\",\"&caron;\":\"ˇ\",\"&ccaps;\":\"⩍\",\"&ccaron;\":\"č\",\"&ccedil\":\"ç\",\"&ccedil;\":\"ç\",\"&ccirc;\":\"ĉ\",\"&ccups;\":\"⩌\",\"&ccupssm;\":\"⩐\",\"&cdot;\":\"ċ\",\"&cedil\":\"¸\",\"&cedil;\":\"¸\",\"&cemptyv;\":\"⦲\",\"&cent\":\"¢\",\"&cent;\":\"¢\",\"&centerdot;\":\"·\",\"&cfr;\":\"𝔠\",\"&chcy;\":\"ч\",\"&check;\":\"✓\",\"&checkmark;\":\"✓\",\"&chi;\":\"χ\",\"&cir;\":\"○\",\"&cirE;\":\"⧃\",\"&circ;\":\"ˆ\",\"&circeq;\":\"≗\",\"&circlearrowleft;\":\"↺\",\"&circlearrowright;\":\"↻\",\"&circledR;\":\"®\",\"&circledS;\":\"Ⓢ\",\"&circledast;\":\"⊛\",\"&circledcirc;\":\"⊚\",\"&circleddash;\":\"⊝\",\"&cire;\":\"≗\",\"&cirfnint;\":\"⨐\",\"&cirmid;\":\"⫯\",\"&cirscir;\":\"⧂\",\"&clubs;\":\"♣\",\"&clubsuit;\":\"♣\",\"&colon;\":\":\",\"&colone;\":\"≔\",\"&coloneq;\":\"≔\",\"&comma;\":\",\",\"&commat;\":\"@\",\"&comp;\":\"∁\",\"&compfn;\":\"∘\",\"&complement;\":\"∁\",\"&complexes;\":\"ℂ\",\"&cong;\":\"≅\",\"&congdot;\":\"⩭\",\"&conint;\":\"∮\",\"&copf;\":\"𝕔\",\"&coprod;\":\"∐\",\"&copy\":\"©\",\"&copy;\":\"©\",\"&copysr;\":\"℗\",\"&crarr;\":\"↵\",\"&cross;\":\"✗\",\"&cscr;\":\"𝒸\",\"&csub;\":\"⫏\",\"&csube;\":\"⫑\",\"&csup;\":\"⫐\",\"&csupe;\":\"⫒\",\"&ctdot;\":\"⋯\",\"&cudarrl;\":\"⤸\",\"&cudarrr;\":\"⤵\",\"&cuepr;\":\"⋞\",\"&cuesc;\":\"⋟\",\"&cularr;\":\"↶\",\"&cularrp;\":\"⤽\",\"&cup;\":\"∪\",\"&cupbrcap;\":\"⩈\",\"&cupcap;\":\"⩆\",\"&cupcup;\":\"⩊\",\"&cupdot;\":\"⊍\",\"&cupor;\":\"⩅\",\"&cups;\":\"∪︀\",\"&curarr;\":\"↷\",\"&curarrm;\":\"⤼\",\"&curlyeqprec;\":\"⋞\",\"&curlyeqsucc;\":\"⋟\",\"&curlyvee;\":\"⋎\",\"&curlywedge;\":\"⋏\",\"&curren\":\"¤\",\"&curren;\":\"¤\",\"&curvearrowleft;\":\"↶\",\"&curvearrowright;\":\"↷\",\"&cuvee;\":\"⋎\",\"&cuwed;\":\"⋏\",\"&cwconint;\":\"∲\",\"&cwint;\":\"∱\",\"&cylcty;\":\"⌭\",\"&dArr;\":\"⇓\",\"&dHar;\":\"⥥\",\"&dagger;\":\"†\",\"&daleth;\":\"ℸ\",\"&darr;\":\"↓\",\"&dash;\":\"‐\",\"&dashv;\":\"⊣\",\"&dbkarow;\":\"⤏\",\"&dblac;\":\"˝\",\"&dcaron;\":\"ď\",\"&dcy;\":\"д\",\"&dd;\":\"ⅆ\",\"&ddagger;\":\"‡\",\"&ddarr;\":\"⇊\",\"&ddotseq;\":\"⩷\",\"&deg\":\"°\",\"&deg;\":\"°\",\"&delta;\":\"δ\",\"&demptyv;\":\"⦱\",\"&dfisht;\":\"⥿\",\"&dfr;\":\"𝔡\",\"&dharl;\":\"⇃\",\"&dharr;\":\"⇂\",\"&diam;\":\"⋄\",\"&diamond;\":\"⋄\",\"&diamondsuit;\":\"♦\",\"&diams;\":\"♦\",\"&die;\":\"¨\",\"&digamma;\":\"ϝ\",\"&disin;\":\"⋲\",\"&div;\":\"÷\",\"&divide\":\"÷\",\"&divide;\":\"÷\",\"&divideontimes;\":\"⋇\",\"&divonx;\":\"⋇\",\"&djcy;\":\"ђ\",\"&dlcorn;\":\"⌞\",\"&dlcrop;\":\"⌍\",\"&dollar;\":\"$\",\"&dopf;\":\"𝕕\",\"&dot;\":\"˙\",\"&doteq;\":\"≐\",\"&doteqdot;\":\"≑\",\"&dotminus;\":\"∸\",\"&dotplus;\":\"∔\",\"&dotsquare;\":\"⊡\",\"&doublebarwedge;\":\"⌆\",\"&downarrow;\":\"↓\",\"&downdownarrows;\":\"⇊\",\"&downharpoonleft;\":\"⇃\",\"&downharpoonright;\":\"⇂\",\"&drbkarow;\":\"⤐\",\"&drcorn;\":\"⌟\",\"&drcrop;\":\"⌌\",\"&dscr;\":\"𝒹\",\"&dscy;\":\"ѕ\",\"&dsol;\":\"⧶\",\"&dstrok;\":\"đ\",\"&dtdot;\":\"⋱\",\"&dtri;\":\"▿\",\"&dtrif;\":\"▾\",\"&duarr;\":\"⇵\",\"&duhar;\":\"⥯\",\"&dwangle;\":\"⦦\",\"&dzcy;\":\"џ\",\"&dzigrarr;\":\"⟿\",\"&eDDot;\":\"⩷\",\"&eDot;\":\"≑\",\"&eacute\":\"é\",\"&eacute;\":\"é\",\"&easter;\":\"⩮\",\"&ecaron;\":\"ě\",\"&ecir;\":\"≖\",\"&ecirc\":\"ê\",\"&ecirc;\":\"ê\",\"&ecolon;\":\"≕\",\"&ecy;\":\"э\",\"&edot;\":\"ė\",\"&ee;\":\"ⅇ\",\"&efDot;\":\"≒\",\"&efr;\":\"𝔢\",\"&eg;\":\"⪚\",\"&egrave\":\"è\",\"&egrave;\":\"è\",\"&egs;\":\"⪖\",\"&egsdot;\":\"⪘\",\"&el;\":\"⪙\",\"&elinters;\":\"⏧\",\"&ell;\":\"ℓ\",\"&els;\":\"⪕\",\"&elsdot;\":\"⪗\",\"&emacr;\":\"ē\",\"&empty;\":\"∅\",\"&emptyset;\":\"∅\",\"&emptyv;\":\"∅\",\"&emsp13;\":\" \",\"&emsp14;\":\" \",\"&emsp;\":\" \",\"&eng;\":\"ŋ\",\"&ensp;\":\" \",\"&eogon;\":\"ę\",\"&eopf;\":\"𝕖\",\"&epar;\":\"⋕\",\"&eparsl;\":\"⧣\",\"&eplus;\":\"⩱\",\"&epsi;\":\"ε\",\"&epsilon;\":\"ε\",\"&epsiv;\":\"ϵ\",\"&eqcirc;\":\"≖\",\"&eqcolon;\":\"≕\",\"&eqsim;\":\"≂\",\"&eqslantgtr;\":\"⪖\",\"&eqslantless;\":\"⪕\",\"&equals;\":\"=\",\"&equest;\":\"≟\",\"&equiv;\":\"≡\",\"&equivDD;\":\"⩸\",\"&eqvparsl;\":\"⧥\",\"&erDot;\":\"≓\",\"&erarr;\":\"⥱\",\"&escr;\":\"ℯ\",\"&esdot;\":\"≐\",\"&esim;\":\"≂\",\"&eta;\":\"η\",\"&eth\":\"ð\",\"&eth;\":\"ð\",\"&euml\":\"ë\",\"&euml;\":\"ë\",\"&euro;\":\"€\",\"&excl;\":\"!\",\"&exist;\":\"∃\",\"&expectation;\":\"ℰ\",\"&exponentiale;\":\"ⅇ\",\"&fallingdotseq;\":\"≒\",\"&fcy;\":\"ф\",\"&female;\":\"♀\",\"&ffilig;\":\"ffi\",\"&fflig;\":\"ff\",\"&ffllig;\":\"ffl\",\"&ffr;\":\"𝔣\",\"&filig;\":\"fi\",\"&fjlig;\":\"fj\",\"&flat;\":\"♭\",\"&fllig;\":\"fl\",\"&fltns;\":\"▱\",\"&fnof;\":\"ƒ\",\"&fopf;\":\"𝕗\",\"&forall;\":\"∀\",\"&fork;\":\"⋔\",\"&forkv;\":\"⫙\",\"&fpartint;\":\"⨍\",\"&frac12\":\"½\",\"&frac12;\":\"½\",\"&frac13;\":\"⅓\",\"&frac14\":\"¼\",\"&frac14;\":\"¼\",\"&frac15;\":\"⅕\",\"&frac16;\":\"⅙\",\"&frac18;\":\"⅛\",\"&frac23;\":\"⅔\",\"&frac25;\":\"⅖\",\"&frac34\":\"¾\",\"&frac34;\":\"¾\",\"&frac35;\":\"⅗\",\"&frac38;\":\"⅜\",\"&frac45;\":\"⅘\",\"&frac56;\":\"⅚\",\"&frac58;\":\"⅝\",\"&frac78;\":\"⅞\",\"&frasl;\":\"⁄\",\"&frown;\":\"⌢\",\"&fscr;\":\"𝒻\",\"&gE;\":\"≧\",\"&gEl;\":\"⪌\",\"&gacute;\":\"ǵ\",\"&gamma;\":\"γ\",\"&gammad;\":\"ϝ\",\"&gap;\":\"⪆\",\"&gbreve;\":\"ğ\",\"&gcirc;\":\"ĝ\",\"&gcy;\":\"г\",\"&gdot;\":\"ġ\",\"&ge;\":\"≥\",\"&gel;\":\"⋛\",\"&geq;\":\"≥\",\"&geqq;\":\"≧\",\"&geqslant;\":\"⩾\",\"&ges;\":\"⩾\",\"&gescc;\":\"⪩\",\"&gesdot;\":\"⪀\",\"&gesdoto;\":\"⪂\",\"&gesdotol;\":\"⪄\",\"&gesl;\":\"⋛︀\",\"&gesles;\":\"⪔\",\"&gfr;\":\"𝔤\",\"&gg;\":\"≫\",\"&ggg;\":\"⋙\",\"&gimel;\":\"ℷ\",\"&gjcy;\":\"ѓ\",\"&gl;\":\"≷\",\"&glE;\":\"⪒\",\"&gla;\":\"⪥\",\"&glj;\":\"⪤\",\"&gnE;\":\"≩\",\"&gnap;\":\"⪊\",\"&gnapprox;\":\"⪊\",\"&gne;\":\"⪈\",\"&gneq;\":\"⪈\",\"&gneqq;\":\"≩\",\"&gnsim;\":\"⋧\",\"&gopf;\":\"𝕘\",\"&grave;\":\"`\",\"&gscr;\":\"ℊ\",\"&gsim;\":\"≳\",\"&gsime;\":\"⪎\",\"&gsiml;\":\"⪐\",\"&gt\":\">\",\"&gt;\":\">\",\"&gtcc;\":\"⪧\",\"&gtcir;\":\"⩺\",\"&gtdot;\":\"⋗\",\"&gtlPar;\":\"⦕\",\"&gtquest;\":\"⩼\",\"&gtrapprox;\":\"⪆\",\"&gtrarr;\":\"⥸\",\"&gtrdot;\":\"⋗\",\"&gtreqless;\":\"⋛\",\"&gtreqqless;\":\"⪌\",\"&gtrless;\":\"≷\",\"&gtrsim;\":\"≳\",\"&gvertneqq;\":\"≩︀\",\"&gvnE;\":\"≩︀\",\"&hArr;\":\"⇔\",\"&hairsp;\":\" \",\"&half;\":\"½\",\"&hamilt;\":\"ℋ\",\"&hardcy;\":\"ъ\",\"&harr;\":\"↔\",\"&harrcir;\":\"⥈\",\"&harrw;\":\"↭\",\"&hbar;\":\"ℏ\",\"&hcirc;\":\"ĥ\",\"&hearts;\":\"♥\",\"&heartsuit;\":\"♥\",\"&hellip;\":\"…\",\"&hercon;\":\"⊹\",\"&hfr;\":\"𝔥\",\"&hksearow;\":\"⤥\",\"&hkswarow;\":\"⤦\",\"&hoarr;\":\"⇿\",\"&homtht;\":\"∻\",\"&hookleftarrow;\":\"↩\",\"&hookrightarrow;\":\"↪\",\"&hopf;\":\"𝕙\",\"&horbar;\":\"―\",\"&hscr;\":\"𝒽\",\"&hslash;\":\"ℏ\",\"&hstrok;\":\"ħ\",\"&hybull;\":\"⁃\",\"&hyphen;\":\"‐\",\"&iacute\":\"í\",\"&iacute;\":\"í\",\"&ic;\":\"⁣\",\"&icirc\":\"î\",\"&icirc;\":\"î\",\"&icy;\":\"и\",\"&iecy;\":\"е\",\"&iexcl\":\"¡\",\"&iexcl;\":\"¡\",\"&iff;\":\"⇔\",\"&ifr;\":\"𝔦\",\"&igrave\":\"ì\",\"&igrave;\":\"ì\",\"&ii;\":\"ⅈ\",\"&iiiint;\":\"⨌\",\"&iiint;\":\"∭\",\"&iinfin;\":\"⧜\",\"&iiota;\":\"℩\",\"&ijlig;\":\"ij\",\"&imacr;\":\"ī\",\"&image;\":\"ℑ\",\"&imagline;\":\"ℐ\",\"&imagpart;\":\"ℑ\",\"&imath;\":\"ı\",\"&imof;\":\"⊷\",\"&imped;\":\"Ƶ\",\"&in;\":\"∈\",\"&incare;\":\"℅\",\"&infin;\":\"∞\",\"&infintie;\":\"⧝\",\"&inodot;\":\"ı\",\"&int;\":\"∫\",\"&intcal;\":\"⊺\",\"&integers;\":\"ℤ\",\"&intercal;\":\"⊺\",\"&intlarhk;\":\"⨗\",\"&intprod;\":\"⨼\",\"&iocy;\":\"ё\",\"&iogon;\":\"į\",\"&iopf;\":\"𝕚\",\"&iota;\":\"ι\",\"&iprod;\":\"⨼\",\"&iquest\":\"¿\",\"&iquest;\":\"¿\",\"&iscr;\":\"𝒾\",\"&isin;\":\"∈\",\"&isinE;\":\"⋹\",\"&isindot;\":\"⋵\",\"&isins;\":\"⋴\",\"&isinsv;\":\"⋳\",\"&isinv;\":\"∈\",\"&it;\":\"⁢\",\"&itilde;\":\"ĩ\",\"&iukcy;\":\"і\",\"&iuml\":\"ï\",\"&iuml;\":\"ï\",\"&jcirc;\":\"ĵ\",\"&jcy;\":\"й\",\"&jfr;\":\"𝔧\",\"&jmath;\":\"ȷ\",\"&jopf;\":\"𝕛\",\"&jscr;\":\"𝒿\",\"&jsercy;\":\"ј\",\"&jukcy;\":\"є\",\"&kappa;\":\"κ\",\"&kappav;\":\"ϰ\",\"&kcedil;\":\"ķ\",\"&kcy;\":\"к\",\"&kfr;\":\"𝔨\",\"&kgreen;\":\"ĸ\",\"&khcy;\":\"х\",\"&kjcy;\":\"ќ\",\"&kopf;\":\"𝕜\",\"&kscr;\":\"𝓀\",\"&lAarr;\":\"⇚\",\"&lArr;\":\"⇐\",\"&lAtail;\":\"⤛\",\"&lBarr;\":\"⤎\",\"&lE;\":\"≦\",\"&lEg;\":\"⪋\",\"&lHar;\":\"⥢\",\"&lacute;\":\"ĺ\",\"&laemptyv;\":\"⦴\",\"&lagran;\":\"ℒ\",\"&lambda;\":\"λ\",\"&lang;\":\"⟨\",\"&langd;\":\"⦑\",\"&langle;\":\"⟨\",\"&lap;\":\"⪅\",\"&laquo\":\"«\",\"&laquo;\":\"«\",\"&larr;\":\"←\",\"&larrb;\":\"⇤\",\"&larrbfs;\":\"⤟\",\"&larrfs;\":\"⤝\",\"&larrhk;\":\"↩\",\"&larrlp;\":\"↫\",\"&larrpl;\":\"⤹\",\"&larrsim;\":\"⥳\",\"&larrtl;\":\"↢\",\"&lat;\":\"⪫\",\"&latail;\":\"⤙\",\"&late;\":\"⪭\",\"&lates;\":\"⪭︀\",\"&lbarr;\":\"⤌\",\"&lbbrk;\":\"❲\",\"&lbrace;\":\"{\",\"&lbrack;\":\"[\",\"&lbrke;\":\"⦋\",\"&lbrksld;\":\"⦏\",\"&lbrkslu;\":\"⦍\",\"&lcaron;\":\"ľ\",\"&lcedil;\":\"ļ\",\"&lceil;\":\"⌈\",\"&lcub;\":\"{\",\"&lcy;\":\"л\",\"&ldca;\":\"⤶\",\"&ldquo;\":\"“\",\"&ldquor;\":\"„\",\"&ldrdhar;\":\"⥧\",\"&ldrushar;\":\"⥋\",\"&ldsh;\":\"↲\",\"&le;\":\"≤\",\"&leftarrow;\":\"←\",\"&leftarrowtail;\":\"↢\",\"&leftharpoondown;\":\"↽\",\"&leftharpoonup;\":\"↼\",\"&leftleftarrows;\":\"⇇\",\"&leftrightarrow;\":\"↔\",\"&leftrightarrows;\":\"⇆\",\"&leftrightharpoons;\":\"⇋\",\"&leftrightsquigarrow;\":\"↭\",\"&leftthreetimes;\":\"⋋\",\"&leg;\":\"⋚\",\"&leq;\":\"≤\",\"&leqq;\":\"≦\",\"&leqslant;\":\"⩽\",\"&les;\":\"⩽\",\"&lescc;\":\"⪨\",\"&lesdot;\":\"⩿\",\"&lesdoto;\":\"⪁\",\"&lesdotor;\":\"⪃\",\"&lesg;\":\"⋚︀\",\"&lesges;\":\"⪓\",\"&lessapprox;\":\"⪅\",\"&lessdot;\":\"⋖\",\"&lesseqgtr;\":\"⋚\",\"&lesseqqgtr;\":\"⪋\",\"&lessgtr;\":\"≶\",\"&lesssim;\":\"≲\",\"&lfisht;\":\"⥼\",\"&lfloor;\":\"⌊\",\"&lfr;\":\"𝔩\",\"&lg;\":\"≶\",\"&lgE;\":\"⪑\",\"&lhard;\":\"↽\",\"&lharu;\":\"↼\",\"&lharul;\":\"⥪\",\"&lhblk;\":\"▄\",\"&ljcy;\":\"љ\",\"&ll;\":\"≪\",\"&llarr;\":\"⇇\",\"&llcorner;\":\"⌞\",\"&llhard;\":\"⥫\",\"&lltri;\":\"◺\",\"&lmidot;\":\"ŀ\",\"&lmoust;\":\"⎰\",\"&lmoustache;\":\"⎰\",\"&lnE;\":\"≨\",\"&lnap;\":\"⪉\",\"&lnapprox;\":\"⪉\",\"&lne;\":\"⪇\",\"&lneq;\":\"⪇\",\"&lneqq;\":\"≨\",\"&lnsim;\":\"⋦\",\"&loang;\":\"⟬\",\"&loarr;\":\"⇽\",\"&lobrk;\":\"⟦\",\"&longleftarrow;\":\"⟵\",\"&longleftrightarrow;\":\"⟷\",\"&longmapsto;\":\"⟼\",\"&longrightarrow;\":\"⟶\",\"&looparrowleft;\":\"↫\",\"&looparrowright;\":\"↬\",\"&lopar;\":\"⦅\",\"&lopf;\":\"𝕝\",\"&loplus;\":\"⨭\",\"&lotimes;\":\"⨴\",\"&lowast;\":\"∗\",\"&lowbar;\":\"_\",\"&loz;\":\"◊\",\"&lozenge;\":\"◊\",\"&lozf;\":\"⧫\",\"&lpar;\":\"(\",\"&lparlt;\":\"⦓\",\"&lrarr;\":\"⇆\",\"&lrcorner;\":\"⌟\",\"&lrhar;\":\"⇋\",\"&lrhard;\":\"⥭\",\"&lrm;\":\"‎\",\"&lrtri;\":\"⊿\",\"&lsaquo;\":\"‹\",\"&lscr;\":\"𝓁\",\"&lsh;\":\"↰\",\"&lsim;\":\"≲\",\"&lsime;\":\"⪍\",\"&lsimg;\":\"⪏\",\"&lsqb;\":\"[\",\"&lsquo;\":\"‘\",\"&lsquor;\":\"‚\",\"&lstrok;\":\"ł\",\"&lt\":\"<\",\"&lt;\":\"<\",\"&ltcc;\":\"⪦\",\"&ltcir;\":\"⩹\",\"&ltdot;\":\"⋖\",\"&lthree;\":\"⋋\",\"&ltimes;\":\"⋉\",\"&ltlarr;\":\"⥶\",\"&ltquest;\":\"⩻\",\"&ltrPar;\":\"⦖\",\"&ltri;\":\"◃\",\"&ltrie;\":\"⊴\",\"&ltrif;\":\"◂\",\"&lurdshar;\":\"⥊\",\"&luruhar;\":\"⥦\",\"&lvertneqq;\":\"≨︀\",\"&lvnE;\":\"≨︀\",\"&mDDot;\":\"∺\",\"&macr\":\"¯\",\"&macr;\":\"¯\",\"&male;\":\"♂\",\"&malt;\":\"✠\",\"&maltese;\":\"✠\",\"&map;\":\"↦\",\"&mapsto;\":\"↦\",\"&mapstodown;\":\"↧\",\"&mapstoleft;\":\"↤\",\"&mapstoup;\":\"↥\",\"&marker;\":\"▮\",\"&mcomma;\":\"⨩\",\"&mcy;\":\"м\",\"&mdash;\":\"—\",\"&measuredangle;\":\"∡\",\"&mfr;\":\"𝔪\",\"&mho;\":\"℧\",\"&micro\":\"µ\",\"&micro;\":\"µ\",\"&mid;\":\"∣\",\"&midast;\":\"*\",\"&midcir;\":\"⫰\",\"&middot\":\"·\",\"&middot;\":\"·\",\"&minus;\":\"−\",\"&minusb;\":\"⊟\",\"&minusd;\":\"∸\",\"&minusdu;\":\"⨪\",\"&mlcp;\":\"⫛\",\"&mldr;\":\"…\",\"&mnplus;\":\"∓\",\"&models;\":\"⊧\",\"&mopf;\":\"𝕞\",\"&mp;\":\"∓\",\"&mscr;\":\"𝓂\",\"&mstpos;\":\"∾\",\"&mu;\":\"μ\",\"&multimap;\":\"⊸\",\"&mumap;\":\"⊸\",\"&nGg;\":\"⋙̸\",\"&nGt;\":\"≫⃒\",\"&nGtv;\":\"≫̸\",\"&nLeftarrow;\":\"⇍\",\"&nLeftrightarrow;\":\"⇎\",\"&nLl;\":\"⋘̸\",\"&nLt;\":\"≪⃒\",\"&nLtv;\":\"≪̸\",\"&nRightarrow;\":\"⇏\",\"&nVDash;\":\"⊯\",\"&nVdash;\":\"⊮\",\"&nabla;\":\"∇\",\"&nacute;\":\"ń\",\"&nang;\":\"∠⃒\",\"&nap;\":\"≉\",\"&napE;\":\"⩰̸\",\"&napid;\":\"≋̸\",\"&napos;\":\"ʼn\",\"&napprox;\":\"≉\",\"&natur;\":\"♮\",\"&natural;\":\"♮\",\"&naturals;\":\"ℕ\",\"&nbsp\":\" \",\"&nbsp;\":\" \",\"&nbump;\":\"≎̸\",\"&nbumpe;\":\"≏̸\",\"&ncap;\":\"⩃\",\"&ncaron;\":\"ň\",\"&ncedil;\":\"ņ\",\"&ncong;\":\"≇\",\"&ncongdot;\":\"⩭̸\",\"&ncup;\":\"⩂\",\"&ncy;\":\"н\",\"&ndash;\":\"–\",\"&ne;\":\"≠\",\"&neArr;\":\"⇗\",\"&nearhk;\":\"⤤\",\"&nearr;\":\"↗\",\"&nearrow;\":\"↗\",\"&nedot;\":\"≐̸\",\"&nequiv;\":\"≢\",\"&nesear;\":\"⤨\",\"&nesim;\":\"≂̸\",\"&nexist;\":\"∄\",\"&nexists;\":\"∄\",\"&nfr;\":\"𝔫\",\"&ngE;\":\"≧̸\",\"&nge;\":\"≱\",\"&ngeq;\":\"≱\",\"&ngeqq;\":\"≧̸\",\"&ngeqslant;\":\"⩾̸\",\"&nges;\":\"⩾̸\",\"&ngsim;\":\"≵\",\"&ngt;\":\"≯\",\"&ngtr;\":\"≯\",\"&nhArr;\":\"⇎\",\"&nharr;\":\"↮\",\"&nhpar;\":\"⫲\",\"&ni;\":\"∋\",\"&nis;\":\"⋼\",\"&nisd;\":\"⋺\",\"&niv;\":\"∋\",\"&njcy;\":\"њ\",\"&nlArr;\":\"⇍\",\"&nlE;\":\"≦̸\",\"&nlarr;\":\"↚\",\"&nldr;\":\"‥\",\"&nle;\":\"≰\",\"&nleftarrow;\":\"↚\",\"&nleftrightarrow;\":\"↮\",\"&nleq;\":\"≰\",\"&nleqq;\":\"≦̸\",\"&nleqslant;\":\"⩽̸\",\"&nles;\":\"⩽̸\",\"&nless;\":\"≮\",\"&nlsim;\":\"≴\",\"&nlt;\":\"≮\",\"&nltri;\":\"⋪\",\"&nltrie;\":\"⋬\",\"&nmid;\":\"∤\",\"&nopf;\":\"𝕟\",\"&not\":\"¬\",\"&not;\":\"¬\",\"&notin;\":\"∉\",\"&notinE;\":\"⋹̸\",\"&notindot;\":\"⋵̸\",\"&notinva;\":\"∉\",\"&notinvb;\":\"⋷\",\"&notinvc;\":\"⋶\",\"&notni;\":\"∌\",\"&notniva;\":\"∌\",\"&notnivb;\":\"⋾\",\"&notnivc;\":\"⋽\",\"&npar;\":\"∦\",\"&nparallel;\":\"∦\",\"&nparsl;\":\"⫽⃥\",\"&npart;\":\"∂̸\",\"&npolint;\":\"⨔\",\"&npr;\":\"⊀\",\"&nprcue;\":\"⋠\",\"&npre;\":\"⪯̸\",\"&nprec;\":\"⊀\",\"&npreceq;\":\"⪯̸\",\"&nrArr;\":\"⇏\",\"&nrarr;\":\"↛\",\"&nrarrc;\":\"⤳̸\",\"&nrarrw;\":\"↝̸\",\"&nrightarrow;\":\"↛\",\"&nrtri;\":\"⋫\",\"&nrtrie;\":\"⋭\",\"&nsc;\":\"⊁\",\"&nsccue;\":\"⋡\",\"&nsce;\":\"⪰̸\",\"&nscr;\":\"𝓃\",\"&nshortmid;\":\"∤\",\"&nshortparallel;\":\"∦\",\"&nsim;\":\"≁\",\"&nsime;\":\"≄\",\"&nsimeq;\":\"≄\",\"&nsmid;\":\"∤\",\"&nspar;\":\"∦\",\"&nsqsube;\":\"⋢\",\"&nsqsupe;\":\"⋣\",\"&nsub;\":\"⊄\",\"&nsubE;\":\"⫅̸\",\"&nsube;\":\"⊈\",\"&nsubset;\":\"⊂⃒\",\"&nsubseteq;\":\"⊈\",\"&nsubseteqq;\":\"⫅̸\",\"&nsucc;\":\"⊁\",\"&nsucceq;\":\"⪰̸\",\"&nsup;\":\"⊅\",\"&nsupE;\":\"⫆̸\",\"&nsupe;\":\"⊉\",\"&nsupset;\":\"⊃⃒\",\"&nsupseteq;\":\"⊉\",\"&nsupseteqq;\":\"⫆̸\",\"&ntgl;\":\"≹\",\"&ntilde\":\"ñ\",\"&ntilde;\":\"ñ\",\"&ntlg;\":\"≸\",\"&ntriangleleft;\":\"⋪\",\"&ntrianglelefteq;\":\"⋬\",\"&ntriangleright;\":\"⋫\",\"&ntrianglerighteq;\":\"⋭\",\"&nu;\":\"ν\",\"&num;\":\"#\",\"&numero;\":\"№\",\"&numsp;\":\" \",\"&nvDash;\":\"⊭\",\"&nvHarr;\":\"⤄\",\"&nvap;\":\"≍⃒\",\"&nvdash;\":\"⊬\",\"&nvge;\":\"≥⃒\",\"&nvgt;\":\">⃒\",\"&nvinfin;\":\"⧞\",\"&nvlArr;\":\"⤂\",\"&nvle;\":\"≤⃒\",\"&nvlt;\":\"<⃒\",\"&nvltrie;\":\"⊴⃒\",\"&nvrArr;\":\"⤃\",\"&nvrtrie;\":\"⊵⃒\",\"&nvsim;\":\"∼⃒\",\"&nwArr;\":\"⇖\",\"&nwarhk;\":\"⤣\",\"&nwarr;\":\"↖\",\"&nwarrow;\":\"↖\",\"&nwnear;\":\"⤧\",\"&oS;\":\"Ⓢ\",\"&oacute\":\"ó\",\"&oacute;\":\"ó\",\"&oast;\":\"⊛\",\"&ocir;\":\"⊚\",\"&ocirc\":\"ô\",\"&ocirc;\":\"ô\",\"&ocy;\":\"о\",\"&odash;\":\"⊝\",\"&odblac;\":\"ő\",\"&odiv;\":\"⨸\",\"&odot;\":\"⊙\",\"&odsold;\":\"⦼\",\"&oelig;\":\"œ\",\"&ofcir;\":\"⦿\",\"&ofr;\":\"𝔬\",\"&ogon;\":\"˛\",\"&ograve\":\"ò\",\"&ograve;\":\"ò\",\"&ogt;\":\"⧁\",\"&ohbar;\":\"⦵\",\"&ohm;\":\"Ω\",\"&oint;\":\"∮\",\"&olarr;\":\"↺\",\"&olcir;\":\"⦾\",\"&olcross;\":\"⦻\",\"&oline;\":\"‾\",\"&olt;\":\"⧀\",\"&omacr;\":\"ō\",\"&omega;\":\"ω\",\"&omicron;\":\"ο\",\"&omid;\":\"⦶\",\"&ominus;\":\"⊖\",\"&oopf;\":\"𝕠\",\"&opar;\":\"⦷\",\"&operp;\":\"⦹\",\"&oplus;\":\"⊕\",\"&or;\":\"∨\",\"&orarr;\":\"↻\",\"&ord;\":\"⩝\",\"&order;\":\"ℴ\",\"&orderof;\":\"ℴ\",\"&ordf\":\"ª\",\"&ordf;\":\"ª\",\"&ordm\":\"º\",\"&ordm;\":\"º\",\"&origof;\":\"⊶\",\"&oror;\":\"⩖\",\"&orslope;\":\"⩗\",\"&orv;\":\"⩛\",\"&oscr;\":\"ℴ\",\"&oslash\":\"ø\",\"&oslash;\":\"ø\",\"&osol;\":\"⊘\",\"&otilde\":\"õ\",\"&otilde;\":\"õ\",\"&otimes;\":\"⊗\",\"&otimesas;\":\"⨶\",\"&ouml\":\"ö\",\"&ouml;\":\"ö\",\"&ovbar;\":\"⌽\",\"&par;\":\"∥\",\"&para\":\"¶\",\"&para;\":\"¶\",\"&parallel;\":\"∥\",\"&parsim;\":\"⫳\",\"&parsl;\":\"⫽\",\"&part;\":\"∂\",\"&pcy;\":\"п\",\"&percnt;\":\"%\",\"&period;\":\".\",\"&permil;\":\"‰\",\"&perp;\":\"⊥\",\"&pertenk;\":\"‱\",\"&pfr;\":\"𝔭\",\"&phi;\":\"φ\",\"&phiv;\":\"ϕ\",\"&phmmat;\":\"ℳ\",\"&phone;\":\"☎\",\"&pi;\":\"π\",\"&pitchfork;\":\"⋔\",\"&piv;\":\"ϖ\",\"&planck;\":\"ℏ\",\"&planckh;\":\"ℎ\",\"&plankv;\":\"ℏ\",\"&plus;\":\"+\",\"&plusacir;\":\"⨣\",\"&plusb;\":\"⊞\",\"&pluscir;\":\"⨢\",\"&plusdo;\":\"∔\",\"&plusdu;\":\"⨥\",\"&pluse;\":\"⩲\",\"&plusmn\":\"±\",\"&plusmn;\":\"±\",\"&plussim;\":\"⨦\",\"&plustwo;\":\"⨧\",\"&pm;\":\"±\",\"&pointint;\":\"⨕\",\"&popf;\":\"𝕡\",\"&pound\":\"£\",\"&pound;\":\"£\",\"&pr;\":\"≺\",\"&prE;\":\"⪳\",\"&prap;\":\"⪷\",\"&prcue;\":\"≼\",\"&pre;\":\"⪯\",\"&prec;\":\"≺\",\"&precapprox;\":\"⪷\",\"&preccurlyeq;\":\"≼\",\"&preceq;\":\"⪯\",\"&precnapprox;\":\"⪹\",\"&precneqq;\":\"⪵\",\"&precnsim;\":\"⋨\",\"&precsim;\":\"≾\",\"&prime;\":\"′\",\"&primes;\":\"ℙ\",\"&prnE;\":\"⪵\",\"&prnap;\":\"⪹\",\"&prnsim;\":\"⋨\",\"&prod;\":\"∏\",\"&profalar;\":\"⌮\",\"&profline;\":\"⌒\",\"&profsurf;\":\"⌓\",\"&prop;\":\"∝\",\"&propto;\":\"∝\",\"&prsim;\":\"≾\",\"&prurel;\":\"⊰\",\"&pscr;\":\"𝓅\",\"&psi;\":\"ψ\",\"&puncsp;\":\" \",\"&qfr;\":\"𝔮\",\"&qint;\":\"⨌\",\"&qopf;\":\"𝕢\",\"&qprime;\":\"⁗\",\"&qscr;\":\"𝓆\",\"&quaternions;\":\"ℍ\",\"&quatint;\":\"⨖\",\"&quest;\":\"?\",\"&questeq;\":\"≟\",\"&quot\":'\"',\"&quot;\":'\"',\"&rAarr;\":\"⇛\",\"&rArr;\":\"⇒\",\"&rAtail;\":\"⤜\",\"&rBarr;\":\"⤏\",\"&rHar;\":\"⥤\",\"&race;\":\"∽̱\",\"&racute;\":\"ŕ\",\"&radic;\":\"√\",\"&raemptyv;\":\"⦳\",\"&rang;\":\"⟩\",\"&rangd;\":\"⦒\",\"&range;\":\"⦥\",\"&rangle;\":\"⟩\",\"&raquo\":\"»\",\"&raquo;\":\"»\",\"&rarr;\":\"→\",\"&rarrap;\":\"⥵\",\"&rarrb;\":\"⇥\",\"&rarrbfs;\":\"⤠\",\"&rarrc;\":\"⤳\",\"&rarrfs;\":\"⤞\",\"&rarrhk;\":\"↪\",\"&rarrlp;\":\"↬\",\"&rarrpl;\":\"⥅\",\"&rarrsim;\":\"⥴\",\"&rarrtl;\":\"↣\",\"&rarrw;\":\"↝\",\"&ratail;\":\"⤚\",\"&ratio;\":\"∶\",\"&rationals;\":\"ℚ\",\"&rbarr;\":\"⤍\",\"&rbbrk;\":\"❳\",\"&rbrace;\":\"}\",\"&rbrack;\":\"]\",\"&rbrke;\":\"⦌\",\"&rbrksld;\":\"⦎\",\"&rbrkslu;\":\"⦐\",\"&rcaron;\":\"ř\",\"&rcedil;\":\"ŗ\",\"&rceil;\":\"⌉\",\"&rcub;\":\"}\",\"&rcy;\":\"р\",\"&rdca;\":\"⤷\",\"&rdldhar;\":\"⥩\",\"&rdquo;\":\"”\",\"&rdquor;\":\"”\",\"&rdsh;\":\"↳\",\"&real;\":\"ℜ\",\"&realine;\":\"ℛ\",\"&realpart;\":\"ℜ\",\"&reals;\":\"ℝ\",\"&rect;\":\"▭\",\"&reg\":\"®\",\"&reg;\":\"®\",\"&rfisht;\":\"⥽\",\"&rfloor;\":\"⌋\",\"&rfr;\":\"𝔯\",\"&rhard;\":\"⇁\",\"&rharu;\":\"⇀\",\"&rharul;\":\"⥬\",\"&rho;\":\"ρ\",\"&rhov;\":\"ϱ\",\"&rightarrow;\":\"→\",\"&rightarrowtail;\":\"↣\",\"&rightharpoondown;\":\"⇁\",\"&rightharpoonup;\":\"⇀\",\"&rightleftarrows;\":\"⇄\",\"&rightleftharpoons;\":\"⇌\",\"&rightrightarrows;\":\"⇉\",\"&rightsquigarrow;\":\"↝\",\"&rightthreetimes;\":\"⋌\",\"&ring;\":\"˚\",\"&risingdotseq;\":\"≓\",\"&rlarr;\":\"⇄\",\"&rlhar;\":\"⇌\",\"&rlm;\":\"‏\",\"&rmoust;\":\"⎱\",\"&rmoustache;\":\"⎱\",\"&rnmid;\":\"⫮\",\"&roang;\":\"⟭\",\"&roarr;\":\"⇾\",\"&robrk;\":\"⟧\",\"&ropar;\":\"⦆\",\"&ropf;\":\"𝕣\",\"&roplus;\":\"⨮\",\"&rotimes;\":\"⨵\",\"&rpar;\":\")\",\"&rpargt;\":\"⦔\",\"&rppolint;\":\"⨒\",\"&rrarr;\":\"⇉\",\"&rsaquo;\":\"›\",\"&rscr;\":\"𝓇\",\"&rsh;\":\"↱\",\"&rsqb;\":\"]\",\"&rsquo;\":\"’\",\"&rsquor;\":\"’\",\"&rthree;\":\"⋌\",\"&rtimes;\":\"⋊\",\"&rtri;\":\"▹\",\"&rtrie;\":\"⊵\",\"&rtrif;\":\"▸\",\"&rtriltri;\":\"⧎\",\"&ruluhar;\":\"⥨\",\"&rx;\":\"℞\",\"&sacute;\":\"ś\",\"&sbquo;\":\"‚\",\"&sc;\":\"≻\",\"&scE;\":\"⪴\",\"&scap;\":\"⪸\",\"&scaron;\":\"š\",\"&sccue;\":\"≽\",\"&sce;\":\"⪰\",\"&scedil;\":\"ş\",\"&scirc;\":\"ŝ\",\"&scnE;\":\"⪶\",\"&scnap;\":\"⪺\",\"&scnsim;\":\"⋩\",\"&scpolint;\":\"⨓\",\"&scsim;\":\"≿\",\"&scy;\":\"с\",\"&sdot;\":\"⋅\",\"&sdotb;\":\"⊡\",\"&sdote;\":\"⩦\",\"&seArr;\":\"⇘\",\"&searhk;\":\"⤥\",\"&searr;\":\"↘\",\"&searrow;\":\"↘\",\"&sect\":\"§\",\"&sect;\":\"§\",\"&semi;\":\";\",\"&seswar;\":\"⤩\",\"&setminus;\":\"∖\",\"&setmn;\":\"∖\",\"&sext;\":\"✶\",\"&sfr;\":\"𝔰\",\"&sfrown;\":\"⌢\",\"&sharp;\":\"♯\",\"&shchcy;\":\"щ\",\"&shcy;\":\"ш\",\"&shortmid;\":\"∣\",\"&shortparallel;\":\"∥\",\"&shy\":\"­\",\"&shy;\":\"­\",\"&sigma;\":\"σ\",\"&sigmaf;\":\"ς\",\"&sigmav;\":\"ς\",\"&sim;\":\"∼\",\"&simdot;\":\"⩪\",\"&sime;\":\"≃\",\"&simeq;\":\"≃\",\"&simg;\":\"⪞\",\"&simgE;\":\"⪠\",\"&siml;\":\"⪝\",\"&simlE;\":\"⪟\",\"&simne;\":\"≆\",\"&simplus;\":\"⨤\",\"&simrarr;\":\"⥲\",\"&slarr;\":\"←\",\"&smallsetminus;\":\"∖\",\"&smashp;\":\"⨳\",\"&smeparsl;\":\"⧤\",\"&smid;\":\"∣\",\"&smile;\":\"⌣\",\"&smt;\":\"⪪\",\"&smte;\":\"⪬\",\"&smtes;\":\"⪬︀\",\"&softcy;\":\"ь\",\"&sol;\":\"/\",\"&solb;\":\"⧄\",\"&solbar;\":\"⌿\",\"&sopf;\":\"𝕤\",\"&spades;\":\"♠\",\"&spadesuit;\":\"♠\",\"&spar;\":\"∥\",\"&sqcap;\":\"⊓\",\"&sqcaps;\":\"⊓︀\",\"&sqcup;\":\"⊔\",\"&sqcups;\":\"⊔︀\",\"&sqsub;\":\"⊏\",\"&sqsube;\":\"⊑\",\"&sqsubset;\":\"⊏\",\"&sqsubseteq;\":\"⊑\",\"&sqsup;\":\"⊐\",\"&sqsupe;\":\"⊒\",\"&sqsupset;\":\"⊐\",\"&sqsupseteq;\":\"⊒\",\"&squ;\":\"□\",\"&square;\":\"□\",\"&squarf;\":\"▪\",\"&squf;\":\"▪\",\"&srarr;\":\"→\",\"&sscr;\":\"𝓈\",\"&ssetmn;\":\"∖\",\"&ssmile;\":\"⌣\",\"&sstarf;\":\"⋆\",\"&star;\":\"☆\",\"&starf;\":\"★\",\"&straightepsilon;\":\"ϵ\",\"&straightphi;\":\"ϕ\",\"&strns;\":\"¯\",\"&sub;\":\"⊂\",\"&subE;\":\"⫅\",\"&subdot;\":\"⪽\",\"&sube;\":\"⊆\",\"&subedot;\":\"⫃\",\"&submult;\":\"⫁\",\"&subnE;\":\"⫋\",\"&subne;\":\"⊊\",\"&subplus;\":\"⪿\",\"&subrarr;\":\"⥹\",\"&subset;\":\"⊂\",\"&subseteq;\":\"⊆\",\"&subseteqq;\":\"⫅\",\"&subsetneq;\":\"⊊\",\"&subsetneqq;\":\"⫋\",\"&subsim;\":\"⫇\",\"&subsub;\":\"⫕\",\"&subsup;\":\"⫓\",\"&succ;\":\"≻\",\"&succapprox;\":\"⪸\",\"&succcurlyeq;\":\"≽\",\"&succeq;\":\"⪰\",\"&succnapprox;\":\"⪺\",\"&succneqq;\":\"⪶\",\"&succnsim;\":\"⋩\",\"&succsim;\":\"≿\",\"&sum;\":\"∑\",\"&sung;\":\"♪\",\"&sup1\":\"¹\",\"&sup1;\":\"¹\",\"&sup2\":\"²\",\"&sup2;\":\"²\",\"&sup3\":\"³\",\"&sup3;\":\"³\",\"&sup;\":\"⊃\",\"&supE;\":\"⫆\",\"&supdot;\":\"⪾\",\"&supdsub;\":\"⫘\",\"&supe;\":\"⊇\",\"&supedot;\":\"⫄\",\"&suphsol;\":\"⟉\",\"&suphsub;\":\"⫗\",\"&suplarr;\":\"⥻\",\"&supmult;\":\"⫂\",\"&supnE;\":\"⫌\",\"&supne;\":\"⊋\",\"&supplus;\":\"⫀\",\"&supset;\":\"⊃\",\"&supseteq;\":\"⊇\",\"&supseteqq;\":\"⫆\",\"&supsetneq;\":\"⊋\",\"&supsetneqq;\":\"⫌\",\"&supsim;\":\"⫈\",\"&supsub;\":\"⫔\",\"&supsup;\":\"⫖\",\"&swArr;\":\"⇙\",\"&swarhk;\":\"⤦\",\"&swarr;\":\"↙\",\"&swarrow;\":\"↙\",\"&swnwar;\":\"⤪\",\"&szlig\":\"ß\",\"&szlig;\":\"ß\",\"&target;\":\"⌖\",\"&tau;\":\"τ\",\"&tbrk;\":\"⎴\",\"&tcaron;\":\"ť\",\"&tcedil;\":\"ţ\",\"&tcy;\":\"т\",\"&tdot;\":\"⃛\",\"&telrec;\":\"⌕\",\"&tfr;\":\"𝔱\",\"&there4;\":\"∴\",\"&therefore;\":\"∴\",\"&theta;\":\"θ\",\"&thetasym;\":\"ϑ\",\"&thetav;\":\"ϑ\",\"&thickapprox;\":\"≈\",\"&thicksim;\":\"∼\",\"&thinsp;\":\" \",\"&thkap;\":\"≈\",\"&thksim;\":\"∼\",\"&thorn\":\"þ\",\"&thorn;\":\"þ\",\"&tilde;\":\"˜\",\"&times\":\"×\",\"&times;\":\"×\",\"&timesb;\":\"⊠\",\"&timesbar;\":\"⨱\",\"&timesd;\":\"⨰\",\"&tint;\":\"∭\",\"&toea;\":\"⤨\",\"&top;\":\"⊤\",\"&topbot;\":\"⌶\",\"&topcir;\":\"⫱\",\"&topf;\":\"𝕥\",\"&topfork;\":\"⫚\",\"&tosa;\":\"⤩\",\"&tprime;\":\"‴\",\"&trade;\":\"™\",\"&triangle;\":\"▵\",\"&triangledown;\":\"▿\",\"&triangleleft;\":\"◃\",\"&trianglelefteq;\":\"⊴\",\"&triangleq;\":\"≜\",\"&triangleright;\":\"▹\",\"&trianglerighteq;\":\"⊵\",\"&tridot;\":\"◬\",\"&trie;\":\"≜\",\"&triminus;\":\"⨺\",\"&triplus;\":\"⨹\",\"&trisb;\":\"⧍\",\"&tritime;\":\"⨻\",\"&trpezium;\":\"⏢\",\"&tscr;\":\"𝓉\",\"&tscy;\":\"ц\",\"&tshcy;\":\"ћ\",\"&tstrok;\":\"ŧ\",\"&twixt;\":\"≬\",\"&twoheadleftarrow;\":\"↞\",\"&twoheadrightarrow;\":\"↠\",\"&uArr;\":\"⇑\",\"&uHar;\":\"⥣\",\"&uacute\":\"ú\",\"&uacute;\":\"ú\",\"&uarr;\":\"↑\",\"&ubrcy;\":\"ў\",\"&ubreve;\":\"ŭ\",\"&ucirc\":\"û\",\"&ucirc;\":\"û\",\"&ucy;\":\"у\",\"&udarr;\":\"⇅\",\"&udblac;\":\"ű\",\"&udhar;\":\"⥮\",\"&ufisht;\":\"⥾\",\"&ufr;\":\"𝔲\",\"&ugrave\":\"ù\",\"&ugrave;\":\"ù\",\"&uharl;\":\"↿\",\"&uharr;\":\"↾\",\"&uhblk;\":\"▀\",\"&ulcorn;\":\"⌜\",\"&ulcorner;\":\"⌜\",\"&ulcrop;\":\"⌏\",\"&ultri;\":\"◸\",\"&umacr;\":\"ū\",\"&uml\":\"¨\",\"&uml;\":\"¨\",\"&uogon;\":\"ų\",\"&uopf;\":\"𝕦\",\"&uparrow;\":\"↑\",\"&updownarrow;\":\"↕\",\"&upharpoonleft;\":\"↿\",\"&upharpoonright;\":\"↾\",\"&uplus;\":\"⊎\",\"&upsi;\":\"υ\",\"&upsih;\":\"ϒ\",\"&upsilon;\":\"υ\",\"&upuparrows;\":\"⇈\",\"&urcorn;\":\"⌝\",\"&urcorner;\":\"⌝\",\"&urcrop;\":\"⌎\",\"&uring;\":\"ů\",\"&urtri;\":\"◹\",\"&uscr;\":\"𝓊\",\"&utdot;\":\"⋰\",\"&utilde;\":\"ũ\",\"&utri;\":\"▵\",\"&utrif;\":\"▴\",\"&uuarr;\":\"⇈\",\"&uuml\":\"ü\",\"&uuml;\":\"ü\",\"&uwangle;\":\"⦧\",\"&vArr;\":\"⇕\",\"&vBar;\":\"⫨\",\"&vBarv;\":\"⫩\",\"&vDash;\":\"⊨\",\"&vangrt;\":\"⦜\",\"&varepsilon;\":\"ϵ\",\"&varkappa;\":\"ϰ\",\"&varnothing;\":\"∅\",\"&varphi;\":\"ϕ\",\"&varpi;\":\"ϖ\",\"&varpropto;\":\"∝\",\"&varr;\":\"↕\",\"&varrho;\":\"ϱ\",\"&varsigma;\":\"ς\",\"&varsubsetneq;\":\"⊊︀\",\"&varsubsetneqq;\":\"⫋︀\",\"&varsupsetneq;\":\"⊋︀\",\"&varsupsetneqq;\":\"⫌︀\",\"&vartheta;\":\"ϑ\",\"&vartriangleleft;\":\"⊲\",\"&vartriangleright;\":\"⊳\",\"&vcy;\":\"в\",\"&vdash;\":\"⊢\",\"&vee;\":\"∨\",\"&veebar;\":\"⊻\",\"&veeeq;\":\"≚\",\"&vellip;\":\"⋮\",\"&verbar;\":\"|\",\"&vert;\":\"|\",\"&vfr;\":\"𝔳\",\"&vltri;\":\"⊲\",\"&vnsub;\":\"⊂⃒\",\"&vnsup;\":\"⊃⃒\",\"&vopf;\":\"𝕧\",\"&vprop;\":\"∝\",\"&vrtri;\":\"⊳\",\"&vscr;\":\"𝓋\",\"&vsubnE;\":\"⫋︀\",\"&vsubne;\":\"⊊︀\",\"&vsupnE;\":\"⫌︀\",\"&vsupne;\":\"⊋︀\",\"&vzigzag;\":\"⦚\",\"&wcirc;\":\"ŵ\",\"&wedbar;\":\"⩟\",\"&wedge;\":\"∧\",\"&wedgeq;\":\"≙\",\"&weierp;\":\"℘\",\"&wfr;\":\"𝔴\",\"&wopf;\":\"𝕨\",\"&wp;\":\"℘\",\"&wr;\":\"≀\",\"&wreath;\":\"≀\",\"&wscr;\":\"𝓌\",\"&xcap;\":\"⋂\",\"&xcirc;\":\"◯\",\"&xcup;\":\"⋃\",\"&xdtri;\":\"▽\",\"&xfr;\":\"𝔵\",\"&xhArr;\":\"⟺\",\"&xharr;\":\"⟷\",\"&xi;\":\"ξ\",\"&xlArr;\":\"⟸\",\"&xlarr;\":\"⟵\",\"&xmap;\":\"⟼\",\"&xnis;\":\"⋻\",\"&xodot;\":\"⨀\",\"&xopf;\":\"𝕩\",\"&xoplus;\":\"⨁\",\"&xotime;\":\"⨂\",\"&xrArr;\":\"⟹\",\"&xrarr;\":\"⟶\",\"&xscr;\":\"𝓍\",\"&xsqcup;\":\"⨆\",\"&xuplus;\":\"⨄\",\"&xutri;\":\"△\",\"&xvee;\":\"⋁\",\"&xwedge;\":\"⋀\",\"&yacute\":\"ý\",\"&yacute;\":\"ý\",\"&yacy;\":\"я\",\"&ycirc;\":\"ŷ\",\"&ycy;\":\"ы\",\"&yen\":\"¥\",\"&yen;\":\"¥\",\"&yfr;\":\"𝔶\",\"&yicy;\":\"ї\",\"&yopf;\":\"𝕪\",\"&yscr;\":\"𝓎\",\"&yucy;\":\"ю\",\"&yuml\":\"ÿ\",\"&yuml;\":\"ÿ\",\"&zacute;\":\"ź\",\"&zcaron;\":\"ž\",\"&zcy;\":\"з\",\"&zdot;\":\"ż\",\"&zeetrf;\":\"ℨ\",\"&zeta;\":\"ζ\",\"&zfr;\":\"𝔷\",\"&zhcy;\":\"ж\",\"&zigrarr;\":\"⇝\",\"&zopf;\":\"𝕫\",\"&zscr;\":\"𝓏\",\"&zwj;\":\"‍\",\"&zwnj;\":\"‌\"},characters:{\"Æ\":\"&AElig;\",\"&\":\"&amp;\",\"Á\":\"&Aacute;\",\"Ă\":\"&Abreve;\",\"Â\":\"&Acirc;\",\"А\":\"&Acy;\",\"𝔄\":\"&Afr;\",\"À\":\"&Agrave;\",\"Α\":\"&Alpha;\",\"Ā\":\"&Amacr;\",\"⩓\":\"&And;\",\"Ą\":\"&Aogon;\",\"𝔸\":\"&Aopf;\",\"⁡\":\"&af;\",\"Å\":\"&angst;\",\"𝒜\":\"&Ascr;\",\"≔\":\"&coloneq;\",\"Ã\":\"&Atilde;\",\"Ä\":\"&Auml;\",\"∖\":\"&ssetmn;\",\"⫧\":\"&Barv;\",\"⌆\":\"&doublebarwedge;\",\"Б\":\"&Bcy;\",\"∵\":\"&because;\",\"ℬ\":\"&bernou;\",\"Β\":\"&Beta;\",\"𝔅\":\"&Bfr;\",\"𝔹\":\"&Bopf;\",\"˘\":\"&breve;\",\"≎\":\"&bump;\",\"Ч\":\"&CHcy;\",\"©\":\"&copy;\",\"Ć\":\"&Cacute;\",\"⋒\":\"&Cap;\",\"ⅅ\":\"&DD;\",\"ℭ\":\"&Cfr;\",\"Č\":\"&Ccaron;\",\"Ç\":\"&Ccedil;\",\"Ĉ\":\"&Ccirc;\",\"∰\":\"&Cconint;\",\"Ċ\":\"&Cdot;\",\"¸\":\"&cedil;\",\"·\":\"&middot;\",\"Χ\":\"&Chi;\",\"⊙\":\"&odot;\",\"⊖\":\"&ominus;\",\"⊕\":\"&oplus;\",\"⊗\":\"&otimes;\",\"∲\":\"&cwconint;\",\"”\":\"&rdquor;\",\"’\":\"&rsquor;\",\"∷\":\"&Proportion;\",\"⩴\":\"&Colone;\",\"≡\":\"&equiv;\",\"∯\":\"&DoubleContourIntegral;\",\"∮\":\"&oint;\",\"ℂ\":\"&complexes;\",\"∐\":\"&coprod;\",\"∳\":\"&awconint;\",\"⨯\":\"&Cross;\",\"𝒞\":\"&Cscr;\",\"⋓\":\"&Cup;\",\"≍\":\"&asympeq;\",\"⤑\":\"&DDotrahd;\",\"Ђ\":\"&DJcy;\",\"Ѕ\":\"&DScy;\",\"Џ\":\"&DZcy;\",\"‡\":\"&ddagger;\",\"↡\":\"&Darr;\",\"⫤\":\"&DoubleLeftTee;\",\"Ď\":\"&Dcaron;\",\"Д\":\"&Dcy;\",\"∇\":\"&nabla;\",\"Δ\":\"&Delta;\",\"𝔇\":\"&Dfr;\",\"´\":\"&acute;\",\"˙\":\"&dot;\",\"˝\":\"&dblac;\",\"`\":\"&grave;\",\"˜\":\"&tilde;\",\"⋄\":\"&diamond;\",\"ⅆ\":\"&dd;\",\"𝔻\":\"&Dopf;\",\"¨\":\"&uml;\",\"⃜\":\"&DotDot;\",\"≐\":\"&esdot;\",\"⇓\":\"&dArr;\",\"⇐\":\"&lArr;\",\"⇔\":\"&iff;\",\"⟸\":\"&xlArr;\",\"⟺\":\"&xhArr;\",\"⟹\":\"&xrArr;\",\"⇒\":\"&rArr;\",\"⊨\":\"&vDash;\",\"⇑\":\"&uArr;\",\"⇕\":\"&vArr;\",\"∥\":\"&spar;\",\"↓\":\"&downarrow;\",\"⤓\":\"&DownArrowBar;\",\"⇵\":\"&duarr;\",\"̑\":\"&DownBreve;\",\"⥐\":\"&DownLeftRightVector;\",\"⥞\":\"&DownLeftTeeVector;\",\"↽\":\"&lhard;\",\"⥖\":\"&DownLeftVectorBar;\",\"⥟\":\"&DownRightTeeVector;\",\"⇁\":\"&rightharpoondown;\",\"⥗\":\"&DownRightVectorBar;\",\"⊤\":\"&top;\",\"↧\":\"&mapstodown;\",\"𝒟\":\"&Dscr;\",\"Đ\":\"&Dstrok;\",\"Ŋ\":\"&ENG;\",\"Ð\":\"&ETH;\",\"É\":\"&Eacute;\",\"Ě\":\"&Ecaron;\",\"Ê\":\"&Ecirc;\",\"Э\":\"&Ecy;\",\"Ė\":\"&Edot;\",\"𝔈\":\"&Efr;\",\"È\":\"&Egrave;\",\"∈\":\"&isinv;\",\"Ē\":\"&Emacr;\",\"◻\":\"&EmptySmallSquare;\",\"▫\":\"&EmptyVerySmallSquare;\",\"Ę\":\"&Eogon;\",\"𝔼\":\"&Eopf;\",\"Ε\":\"&Epsilon;\",\"⩵\":\"&Equal;\",\"≂\":\"&esim;\",\"⇌\":\"&rlhar;\",\"ℰ\":\"&expectation;\",\"⩳\":\"&Esim;\",\"Η\":\"&Eta;\",\"Ë\":\"&Euml;\",\"∃\":\"&exist;\",\"ⅇ\":\"&exponentiale;\",\"Ф\":\"&Fcy;\",\"𝔉\":\"&Ffr;\",\"◼\":\"&FilledSmallSquare;\",\"▪\":\"&squf;\",\"𝔽\":\"&Fopf;\",\"∀\":\"&forall;\",\"ℱ\":\"&Fscr;\",\"Ѓ\":\"&GJcy;\",\">\":\"&gt;\",\"Γ\":\"&Gamma;\",\"Ϝ\":\"&Gammad;\",\"Ğ\":\"&Gbreve;\",\"Ģ\":\"&Gcedil;\",\"Ĝ\":\"&Gcirc;\",\"Г\":\"&Gcy;\",\"Ġ\":\"&Gdot;\",\"𝔊\":\"&Gfr;\",\"⋙\":\"&ggg;\",\"𝔾\":\"&Gopf;\",\"≥\":\"&geq;\",\"⋛\":\"&gtreqless;\",\"≧\":\"&geqq;\",\"⪢\":\"&GreaterGreater;\",\"≷\":\"&gtrless;\",\"⩾\":\"&ges;\",\"≳\":\"&gtrsim;\",\"𝒢\":\"&Gscr;\",\"≫\":\"&gg;\",\"Ъ\":\"&HARDcy;\",\"ˇ\":\"&caron;\",\"^\":\"&Hat;\",\"Ĥ\":\"&Hcirc;\",\"ℌ\":\"&Poincareplane;\",\"ℋ\":\"&hamilt;\",\"ℍ\":\"&quaternions;\",\"─\":\"&boxh;\",\"Ħ\":\"&Hstrok;\",\"≏\":\"&bumpeq;\",\"Е\":\"&IEcy;\",\"IJ\":\"&IJlig;\",\"Ё\":\"&IOcy;\",\"Í\":\"&Iacute;\",\"Î\":\"&Icirc;\",\"И\":\"&Icy;\",\"İ\":\"&Idot;\",\"ℑ\":\"&imagpart;\",\"Ì\":\"&Igrave;\",\"Ī\":\"&Imacr;\",\"ⅈ\":\"&ii;\",\"∬\":\"&Int;\",\"∫\":\"&int;\",\"⋂\":\"&xcap;\",\"⁣\":\"&ic;\",\"⁢\":\"&it;\",\"Į\":\"&Iogon;\",\"𝕀\":\"&Iopf;\",\"Ι\":\"&Iota;\",\"ℐ\":\"&imagline;\",\"Ĩ\":\"&Itilde;\",\"І\":\"&Iukcy;\",\"Ï\":\"&Iuml;\",\"Ĵ\":\"&Jcirc;\",\"Й\":\"&Jcy;\",\"𝔍\":\"&Jfr;\",\"𝕁\":\"&Jopf;\",\"𝒥\":\"&Jscr;\",\"Ј\":\"&Jsercy;\",\"Є\":\"&Jukcy;\",\"Х\":\"&KHcy;\",\"Ќ\":\"&KJcy;\",\"Κ\":\"&Kappa;\",\"Ķ\":\"&Kcedil;\",\"К\":\"&Kcy;\",\"𝔎\":\"&Kfr;\",\"𝕂\":\"&Kopf;\",\"𝒦\":\"&Kscr;\",\"Љ\":\"&LJcy;\",\"<\":\"&lt;\",\"Ĺ\":\"&Lacute;\",\"Λ\":\"&Lambda;\",\"⟪\":\"&Lang;\",\"ℒ\":\"&lagran;\",\"↞\":\"&twoheadleftarrow;\",\"Ľ\":\"&Lcaron;\",\"Ļ\":\"&Lcedil;\",\"Л\":\"&Lcy;\",\"⟨\":\"&langle;\",\"←\":\"&slarr;\",\"⇤\":\"&larrb;\",\"⇆\":\"&lrarr;\",\"⌈\":\"&lceil;\",\"⟦\":\"&lobrk;\",\"⥡\":\"&LeftDownTeeVector;\",\"⇃\":\"&downharpoonleft;\",\"⥙\":\"&LeftDownVectorBar;\",\"⌊\":\"&lfloor;\",\"↔\":\"&leftrightarrow;\",\"⥎\":\"&LeftRightVector;\",\"⊣\":\"&dashv;\",\"↤\":\"&mapstoleft;\",\"⥚\":\"&LeftTeeVector;\",\"⊲\":\"&vltri;\",\"⧏\":\"&LeftTriangleBar;\",\"⊴\":\"&trianglelefteq;\",\"⥑\":\"&LeftUpDownVector;\",\"⥠\":\"&LeftUpTeeVector;\",\"↿\":\"&upharpoonleft;\",\"⥘\":\"&LeftUpVectorBar;\",\"↼\":\"&lharu;\",\"⥒\":\"&LeftVectorBar;\",\"⋚\":\"&lesseqgtr;\",\"≦\":\"&leqq;\",\"≶\":\"&lg;\",\"⪡\":\"&LessLess;\",\"⩽\":\"&les;\",\"≲\":\"&lsim;\",\"𝔏\":\"&Lfr;\",\"⋘\":\"&Ll;\",\"⇚\":\"&lAarr;\",\"Ŀ\":\"&Lmidot;\",\"⟵\":\"&xlarr;\",\"⟷\":\"&xharr;\",\"⟶\":\"&xrarr;\",\"𝕃\":\"&Lopf;\",\"↙\":\"&swarrow;\",\"↘\":\"&searrow;\",\"↰\":\"&lsh;\",\"Ł\":\"&Lstrok;\",\"≪\":\"&ll;\",\"⤅\":\"&Map;\",\"М\":\"&Mcy;\",\" \":\"&MediumSpace;\",\"ℳ\":\"&phmmat;\",\"𝔐\":\"&Mfr;\",\"∓\":\"&mp;\",\"𝕄\":\"&Mopf;\",\"Μ\":\"&Mu;\",\"Њ\":\"&NJcy;\",\"Ń\":\"&Nacute;\",\"Ň\":\"&Ncaron;\",\"Ņ\":\"&Ncedil;\",\"Н\":\"&Ncy;\",\"​\":\"&ZeroWidthSpace;\",\"\\n\":\"&NewLine;\",\"𝔑\":\"&Nfr;\",\"⁠\":\"&NoBreak;\",\" \":\"&nbsp;\",\"ℕ\":\"&naturals;\",\"⫬\":\"&Not;\",\"≢\":\"&nequiv;\",\"≭\":\"&NotCupCap;\",\"∦\":\"&nspar;\",\"∉\":\"&notinva;\",\"≠\":\"&ne;\",\"≂̸\":\"&nesim;\",\"∄\":\"&nexists;\",\"≯\":\"&ngtr;\",\"≱\":\"&ngeq;\",\"≧̸\":\"&ngeqq;\",\"≫̸\":\"&nGtv;\",\"≹\":\"&ntgl;\",\"⩾̸\":\"&nges;\",\"≵\":\"&ngsim;\",\"≎̸\":\"&nbump;\",\"≏̸\":\"&nbumpe;\",\"⋪\":\"&ntriangleleft;\",\"⧏̸\":\"&NotLeftTriangleBar;\",\"⋬\":\"&ntrianglelefteq;\",\"≮\":\"&nlt;\",\"≰\":\"&nleq;\",\"≸\":\"&ntlg;\",\"≪̸\":\"&nLtv;\",\"⩽̸\":\"&nles;\",\"≴\":\"&nlsim;\",\"⪢̸\":\"&NotNestedGreaterGreater;\",\"⪡̸\":\"&NotNestedLessLess;\",\"⊀\":\"&nprec;\",\"⪯̸\":\"&npreceq;\",\"⋠\":\"&nprcue;\",\"∌\":\"&notniva;\",\"⋫\":\"&ntriangleright;\",\"⧐̸\":\"&NotRightTriangleBar;\",\"⋭\":\"&ntrianglerighteq;\",\"⊏̸\":\"&NotSquareSubset;\",\"⋢\":\"&nsqsube;\",\"⊐̸\":\"&NotSquareSuperset;\",\"⋣\":\"&nsqsupe;\",\"⊂⃒\":\"&vnsub;\",\"⊈\":\"&nsubseteq;\",\"⊁\":\"&nsucc;\",\"⪰̸\":\"&nsucceq;\",\"⋡\":\"&nsccue;\",\"≿̸\":\"&NotSucceedsTilde;\",\"⊃⃒\":\"&vnsup;\",\"⊉\":\"&nsupseteq;\",\"≁\":\"&nsim;\",\"≄\":\"&nsimeq;\",\"≇\":\"&ncong;\",\"≉\":\"&napprox;\",\"∤\":\"&nsmid;\",\"𝒩\":\"&Nscr;\",\"Ñ\":\"&Ntilde;\",\"Ν\":\"&Nu;\",\"Œ\":\"&OElig;\",\"Ó\":\"&Oacute;\",\"Ô\":\"&Ocirc;\",\"О\":\"&Ocy;\",\"Ő\":\"&Odblac;\",\"𝔒\":\"&Ofr;\",\"Ò\":\"&Ograve;\",\"Ō\":\"&Omacr;\",\"Ω\":\"&ohm;\",\"Ο\":\"&Omicron;\",\"𝕆\":\"&Oopf;\",\"“\":\"&ldquo;\",\"‘\":\"&lsquo;\",\"⩔\":\"&Or;\",\"𝒪\":\"&Oscr;\",\"Ø\":\"&Oslash;\",\"Õ\":\"&Otilde;\",\"⨷\":\"&Otimes;\",\"Ö\":\"&Ouml;\",\"‾\":\"&oline;\",\"⏞\":\"&OverBrace;\",\"⎴\":\"&tbrk;\",\"⏜\":\"&OverParenthesis;\",\"∂\":\"&part;\",\"П\":\"&Pcy;\",\"𝔓\":\"&Pfr;\",\"Φ\":\"&Phi;\",\"Π\":\"&Pi;\",\"±\":\"&pm;\",\"ℙ\":\"&primes;\",\"⪻\":\"&Pr;\",\"≺\":\"&prec;\",\"⪯\":\"&preceq;\",\"≼\":\"&preccurlyeq;\",\"≾\":\"&prsim;\",\"″\":\"&Prime;\",\"∏\":\"&prod;\",\"∝\":\"&vprop;\",\"𝒫\":\"&Pscr;\",\"Ψ\":\"&Psi;\",'\"':\"&quot;\",\"𝔔\":\"&Qfr;\",\"ℚ\":\"&rationals;\",\"𝒬\":\"&Qscr;\",\"⤐\":\"&drbkarow;\",\"®\":\"&reg;\",\"Ŕ\":\"&Racute;\",\"⟫\":\"&Rang;\",\"↠\":\"&twoheadrightarrow;\",\"⤖\":\"&Rarrtl;\",\"Ř\":\"&Rcaron;\",\"Ŗ\":\"&Rcedil;\",\"Р\":\"&Rcy;\",\"ℜ\":\"&realpart;\",\"∋\":\"&niv;\",\"⇋\":\"&lrhar;\",\"⥯\":\"&duhar;\",\"Ρ\":\"&Rho;\",\"⟩\":\"&rangle;\",\"→\":\"&srarr;\",\"⇥\":\"&rarrb;\",\"⇄\":\"&rlarr;\",\"⌉\":\"&rceil;\",\"⟧\":\"&robrk;\",\"⥝\":\"&RightDownTeeVector;\",\"⇂\":\"&downharpoonright;\",\"⥕\":\"&RightDownVectorBar;\",\"⌋\":\"&rfloor;\",\"⊢\":\"&vdash;\",\"↦\":\"&mapsto;\",\"⥛\":\"&RightTeeVector;\",\"⊳\":\"&vrtri;\",\"⧐\":\"&RightTriangleBar;\",\"⊵\":\"&trianglerighteq;\",\"⥏\":\"&RightUpDownVector;\",\"⥜\":\"&RightUpTeeVector;\",\"↾\":\"&upharpoonright;\",\"⥔\":\"&RightUpVectorBar;\",\"⇀\":\"&rightharpoonup;\",\"⥓\":\"&RightVectorBar;\",\"ℝ\":\"&reals;\",\"⥰\":\"&RoundImplies;\",\"⇛\":\"&rAarr;\",\"ℛ\":\"&realine;\",\"↱\":\"&rsh;\",\"⧴\":\"&RuleDelayed;\",\"Щ\":\"&SHCHcy;\",\"Ш\":\"&SHcy;\",\"Ь\":\"&SOFTcy;\",\"Ś\":\"&Sacute;\",\"⪼\":\"&Sc;\",\"Š\":\"&Scaron;\",\"Ş\":\"&Scedil;\",\"Ŝ\":\"&Scirc;\",\"С\":\"&Scy;\",\"𝔖\":\"&Sfr;\",\"↑\":\"&uparrow;\",\"Σ\":\"&Sigma;\",\"∘\":\"&compfn;\",\"𝕊\":\"&Sopf;\",\"√\":\"&radic;\",\"□\":\"&square;\",\"⊓\":\"&sqcap;\",\"⊏\":\"&sqsubset;\",\"⊑\":\"&sqsubseteq;\",\"⊐\":\"&sqsupset;\",\"⊒\":\"&sqsupseteq;\",\"⊔\":\"&sqcup;\",\"𝒮\":\"&Sscr;\",\"⋆\":\"&sstarf;\",\"⋐\":\"&Subset;\",\"⊆\":\"&subseteq;\",\"≻\":\"&succ;\",\"⪰\":\"&succeq;\",\"≽\":\"&succcurlyeq;\",\"≿\":\"&succsim;\",\"∑\":\"&sum;\",\"⋑\":\"&Supset;\",\"⊃\":\"&supset;\",\"⊇\":\"&supseteq;\",\"Þ\":\"&THORN;\",\"™\":\"&trade;\",\"Ћ\":\"&TSHcy;\",\"Ц\":\"&TScy;\",\"\\t\":\"&Tab;\",\"Τ\":\"&Tau;\",\"Ť\":\"&Tcaron;\",\"Ţ\":\"&Tcedil;\",\"Т\":\"&Tcy;\",\"𝔗\":\"&Tfr;\",\"∴\":\"&therefore;\",\"Θ\":\"&Theta;\",\"  \":\"&ThickSpace;\",\" \":\"&thinsp;\",\"∼\":\"&thksim;\",\"≃\":\"&simeq;\",\"≅\":\"&cong;\",\"≈\":\"&thkap;\",\"𝕋\":\"&Topf;\",\"⃛\":\"&tdot;\",\"𝒯\":\"&Tscr;\",\"Ŧ\":\"&Tstrok;\",\"Ú\":\"&Uacute;\",\"↟\":\"&Uarr;\",\"⥉\":\"&Uarrocir;\",\"Ў\":\"&Ubrcy;\",\"Ŭ\":\"&Ubreve;\",\"Û\":\"&Ucirc;\",\"У\":\"&Ucy;\",\"Ű\":\"&Udblac;\",\"𝔘\":\"&Ufr;\",\"Ù\":\"&Ugrave;\",\"Ū\":\"&Umacr;\",_:\"&lowbar;\",\"⏟\":\"&UnderBrace;\",\"⎵\":\"&bbrk;\",\"⏝\":\"&UnderParenthesis;\",\"⋃\":\"&xcup;\",\"⊎\":\"&uplus;\",\"Ų\":\"&Uogon;\",\"𝕌\":\"&Uopf;\",\"⤒\":\"&UpArrowBar;\",\"⇅\":\"&udarr;\",\"↕\":\"&varr;\",\"⥮\":\"&udhar;\",\"⊥\":\"&perp;\",\"↥\":\"&mapstoup;\",\"↖\":\"&nwarrow;\",\"↗\":\"&nearrow;\",\"ϒ\":\"&upsih;\",\"Υ\":\"&Upsilon;\",\"Ů\":\"&Uring;\",\"𝒰\":\"&Uscr;\",\"Ũ\":\"&Utilde;\",\"Ü\":\"&Uuml;\",\"⊫\":\"&VDash;\",\"⫫\":\"&Vbar;\",\"В\":\"&Vcy;\",\"⊩\":\"&Vdash;\",\"⫦\":\"&Vdashl;\",\"⋁\":\"&xvee;\",\"‖\":\"&Vert;\",\"∣\":\"&smid;\",\"|\":\"&vert;\",\"❘\":\"&VerticalSeparator;\",\"≀\":\"&wreath;\",\" \":\"&hairsp;\",\"𝔙\":\"&Vfr;\",\"𝕍\":\"&Vopf;\",\"𝒱\":\"&Vscr;\",\"⊪\":\"&Vvdash;\",\"Ŵ\":\"&Wcirc;\",\"⋀\":\"&xwedge;\",\"𝔚\":\"&Wfr;\",\"𝕎\":\"&Wopf;\",\"𝒲\":\"&Wscr;\",\"𝔛\":\"&Xfr;\",\"Ξ\":\"&Xi;\",\"𝕏\":\"&Xopf;\",\"𝒳\":\"&Xscr;\",\"Я\":\"&YAcy;\",\"Ї\":\"&YIcy;\",\"Ю\":\"&YUcy;\",\"Ý\":\"&Yacute;\",\"Ŷ\":\"&Ycirc;\",\"Ы\":\"&Ycy;\",\"𝔜\":\"&Yfr;\",\"𝕐\":\"&Yopf;\",\"𝒴\":\"&Yscr;\",\"Ÿ\":\"&Yuml;\",\"Ж\":\"&ZHcy;\",\"Ź\":\"&Zacute;\",\"Ž\":\"&Zcaron;\",\"З\":\"&Zcy;\",\"Ż\":\"&Zdot;\",\"Ζ\":\"&Zeta;\",\"ℨ\":\"&zeetrf;\",\"ℤ\":\"&integers;\",\"𝒵\":\"&Zscr;\",\"á\":\"&aacute;\",\"ă\":\"&abreve;\",\"∾\":\"&mstpos;\",\"∾̳\":\"&acE;\",\"∿\":\"&acd;\",\"â\":\"&acirc;\",\"а\":\"&acy;\",\"æ\":\"&aelig;\",\"𝔞\":\"&afr;\",\"à\":\"&agrave;\",\"ℵ\":\"&aleph;\",\"α\":\"&alpha;\",\"ā\":\"&amacr;\",\"⨿\":\"&amalg;\",\"∧\":\"&wedge;\",\"⩕\":\"&andand;\",\"⩜\":\"&andd;\",\"⩘\":\"&andslope;\",\"⩚\":\"&andv;\",\"∠\":\"&angle;\",\"⦤\":\"&ange;\",\"∡\":\"&measuredangle;\",\"⦨\":\"&angmsdaa;\",\"⦩\":\"&angmsdab;\",\"⦪\":\"&angmsdac;\",\"⦫\":\"&angmsdad;\",\"⦬\":\"&angmsdae;\",\"⦭\":\"&angmsdaf;\",\"⦮\":\"&angmsdag;\",\"⦯\":\"&angmsdah;\",\"∟\":\"&angrt;\",\"⊾\":\"&angrtvb;\",\"⦝\":\"&angrtvbd;\",\"∢\":\"&angsph;\",\"⍼\":\"&angzarr;\",\"ą\":\"&aogon;\",\"𝕒\":\"&aopf;\",\"⩰\":\"&apE;\",\"⩯\":\"&apacir;\",\"≊\":\"&approxeq;\",\"≋\":\"&apid;\",\"'\":\"&apos;\",\"å\":\"&aring;\",\"𝒶\":\"&ascr;\",\"*\":\"&midast;\",\"ã\":\"&atilde;\",\"ä\":\"&auml;\",\"⨑\":\"&awint;\",\"⫭\":\"&bNot;\",\"≌\":\"&bcong;\",\"϶\":\"&bepsi;\",\"‵\":\"&bprime;\",\"∽\":\"&bsim;\",\"⋍\":\"&bsime;\",\"⊽\":\"&barvee;\",\"⌅\":\"&barwedge;\",\"⎶\":\"&bbrktbrk;\",\"б\":\"&bcy;\",\"„\":\"&ldquor;\",\"⦰\":\"&bemptyv;\",\"β\":\"&beta;\",\"ℶ\":\"&beth;\",\"≬\":\"&twixt;\",\"𝔟\":\"&bfr;\",\"◯\":\"&xcirc;\",\"⨀\":\"&xodot;\",\"⨁\":\"&xoplus;\",\"⨂\":\"&xotime;\",\"⨆\":\"&xsqcup;\",\"★\":\"&starf;\",\"▽\":\"&xdtri;\",\"△\":\"&xutri;\",\"⨄\":\"&xuplus;\",\"⤍\":\"&rbarr;\",\"⧫\":\"&lozf;\",\"▴\":\"&utrif;\",\"▾\":\"&dtrif;\",\"◂\":\"&ltrif;\",\"▸\":\"&rtrif;\",\"␣\":\"&blank;\",\"▒\":\"&blk12;\",\"░\":\"&blk14;\",\"▓\":\"&blk34;\",\"█\":\"&block;\",\"=⃥\":\"&bne;\",\"≡⃥\":\"&bnequiv;\",\"⌐\":\"&bnot;\",\"𝕓\":\"&bopf;\",\"⋈\":\"&bowtie;\",\"╗\":\"&boxDL;\",\"╔\":\"&boxDR;\",\"╖\":\"&boxDl;\",\"╓\":\"&boxDr;\",\"═\":\"&boxH;\",\"╦\":\"&boxHD;\",\"╩\":\"&boxHU;\",\"╤\":\"&boxHd;\",\"╧\":\"&boxHu;\",\"╝\":\"&boxUL;\",\"╚\":\"&boxUR;\",\"╜\":\"&boxUl;\",\"╙\":\"&boxUr;\",\"║\":\"&boxV;\",\"╬\":\"&boxVH;\",\"╣\":\"&boxVL;\",\"╠\":\"&boxVR;\",\"╫\":\"&boxVh;\",\"╢\":\"&boxVl;\",\"╟\":\"&boxVr;\",\"⧉\":\"&boxbox;\",\"╕\":\"&boxdL;\",\"╒\":\"&boxdR;\",\"┐\":\"&boxdl;\",\"┌\":\"&boxdr;\",\"╥\":\"&boxhD;\",\"╨\":\"&boxhU;\",\"┬\":\"&boxhd;\",\"┴\":\"&boxhu;\",\"⊟\":\"&minusb;\",\"⊞\":\"&plusb;\",\"⊠\":\"&timesb;\",\"╛\":\"&boxuL;\",\"╘\":\"&boxuR;\",\"┘\":\"&boxul;\",\"└\":\"&boxur;\",\"│\":\"&boxv;\",\"╪\":\"&boxvH;\",\"╡\":\"&boxvL;\",\"╞\":\"&boxvR;\",\"┼\":\"&boxvh;\",\"┤\":\"&boxvl;\",\"├\":\"&boxvr;\",\"¦\":\"&brvbar;\",\"𝒷\":\"&bscr;\",\"⁏\":\"&bsemi;\",\"\\\\\":\"&bsol;\",\"⧅\":\"&bsolb;\",\"⟈\":\"&bsolhsub;\",\"•\":\"&bullet;\",\"⪮\":\"&bumpE;\",\"ć\":\"&cacute;\",\"∩\":\"&cap;\",\"⩄\":\"&capand;\",\"⩉\":\"&capbrcup;\",\"⩋\":\"&capcap;\",\"⩇\":\"&capcup;\",\"⩀\":\"&capdot;\",\"∩︀\":\"&caps;\",\"⁁\":\"&caret;\",\"⩍\":\"&ccaps;\",\"č\":\"&ccaron;\",\"ç\":\"&ccedil;\",\"ĉ\":\"&ccirc;\",\"⩌\":\"&ccups;\",\"⩐\":\"&ccupssm;\",\"ċ\":\"&cdot;\",\"⦲\":\"&cemptyv;\",\"¢\":\"&cent;\",\"𝔠\":\"&cfr;\",\"ч\":\"&chcy;\",\"✓\":\"&checkmark;\",\"χ\":\"&chi;\",\"○\":\"&cir;\",\"⧃\":\"&cirE;\",\"ˆ\":\"&circ;\",\"≗\":\"&cire;\",\"↺\":\"&olarr;\",\"↻\":\"&orarr;\",\"Ⓢ\":\"&oS;\",\"⊛\":\"&oast;\",\"⊚\":\"&ocir;\",\"⊝\":\"&odash;\",\"⨐\":\"&cirfnint;\",\"⫯\":\"&cirmid;\",\"⧂\":\"&cirscir;\",\"♣\":\"&clubsuit;\",\":\":\"&colon;\",\",\":\"&comma;\",\"@\":\"&commat;\",\"∁\":\"&complement;\",\"⩭\":\"&congdot;\",\"𝕔\":\"&copf;\",\"℗\":\"&copysr;\",\"↵\":\"&crarr;\",\"✗\":\"&cross;\",\"𝒸\":\"&cscr;\",\"⫏\":\"&csub;\",\"⫑\":\"&csube;\",\"⫐\":\"&csup;\",\"⫒\":\"&csupe;\",\"⋯\":\"&ctdot;\",\"⤸\":\"&cudarrl;\",\"⤵\":\"&cudarrr;\",\"⋞\":\"&curlyeqprec;\",\"⋟\":\"&curlyeqsucc;\",\"↶\":\"&curvearrowleft;\",\"⤽\":\"&cularrp;\",\"∪\":\"&cup;\",\"⩈\":\"&cupbrcap;\",\"⩆\":\"&cupcap;\",\"⩊\":\"&cupcup;\",\"⊍\":\"&cupdot;\",\"⩅\":\"&cupor;\",\"∪︀\":\"&cups;\",\"↷\":\"&curvearrowright;\",\"⤼\":\"&curarrm;\",\"⋎\":\"&cuvee;\",\"⋏\":\"&cuwed;\",\"¤\":\"&curren;\",\"∱\":\"&cwint;\",\"⌭\":\"&cylcty;\",\"⥥\":\"&dHar;\",\"†\":\"&dagger;\",\"ℸ\":\"&daleth;\",\"‐\":\"&hyphen;\",\"⤏\":\"&rBarr;\",\"ď\":\"&dcaron;\",\"д\":\"&dcy;\",\"⇊\":\"&downdownarrows;\",\"⩷\":\"&eDDot;\",\"°\":\"&deg;\",\"δ\":\"&delta;\",\"⦱\":\"&demptyv;\",\"⥿\":\"&dfisht;\",\"𝔡\":\"&dfr;\",\"♦\":\"&diams;\",\"ϝ\":\"&gammad;\",\"⋲\":\"&disin;\",\"÷\":\"&divide;\",\"⋇\":\"&divonx;\",\"ђ\":\"&djcy;\",\"⌞\":\"&llcorner;\",\"⌍\":\"&dlcrop;\",$:\"&dollar;\",\"𝕕\":\"&dopf;\",\"≑\":\"&eDot;\",\"∸\":\"&minusd;\",\"∔\":\"&plusdo;\",\"⊡\":\"&sdotb;\",\"⌟\":\"&lrcorner;\",\"⌌\":\"&drcrop;\",\"𝒹\":\"&dscr;\",\"ѕ\":\"&dscy;\",\"⧶\":\"&dsol;\",\"đ\":\"&dstrok;\",\"⋱\":\"&dtdot;\",\"▿\":\"&triangledown;\",\"⦦\":\"&dwangle;\",\"џ\":\"&dzcy;\",\"⟿\":\"&dzigrarr;\",\"é\":\"&eacute;\",\"⩮\":\"&easter;\",\"ě\":\"&ecaron;\",\"≖\":\"&eqcirc;\",\"ê\":\"&ecirc;\",\"≕\":\"&eqcolon;\",\"э\":\"&ecy;\",\"ė\":\"&edot;\",\"≒\":\"&fallingdotseq;\",\"𝔢\":\"&efr;\",\"⪚\":\"&eg;\",\"è\":\"&egrave;\",\"⪖\":\"&eqslantgtr;\",\"⪘\":\"&egsdot;\",\"⪙\":\"&el;\",\"⏧\":\"&elinters;\",\"ℓ\":\"&ell;\",\"⪕\":\"&eqslantless;\",\"⪗\":\"&elsdot;\",\"ē\":\"&emacr;\",\"∅\":\"&varnothing;\",\" \":\"&emsp13;\",\" \":\"&emsp14;\",\" \":\"&emsp;\",\"ŋ\":\"&eng;\",\" \":\"&ensp;\",\"ę\":\"&eogon;\",\"𝕖\":\"&eopf;\",\"⋕\":\"&epar;\",\"⧣\":\"&eparsl;\",\"⩱\":\"&eplus;\",\"ε\":\"&epsilon;\",\"ϵ\":\"&varepsilon;\",\"=\":\"&equals;\",\"≟\":\"&questeq;\",\"⩸\":\"&equivDD;\",\"⧥\":\"&eqvparsl;\",\"≓\":\"&risingdotseq;\",\"⥱\":\"&erarr;\",\"ℯ\":\"&escr;\",\"η\":\"&eta;\",\"ð\":\"&eth;\",\"ë\":\"&euml;\",\"€\":\"&euro;\",\"!\":\"&excl;\",\"ф\":\"&fcy;\",\"♀\":\"&female;\",\"ffi\":\"&ffilig;\",\"ff\":\"&fflig;\",\"ffl\":\"&ffllig;\",\"𝔣\":\"&ffr;\",\"fi\":\"&filig;\",fj:\"&fjlig;\",\"♭\":\"&flat;\",\"fl\":\"&fllig;\",\"▱\":\"&fltns;\",\"ƒ\":\"&fnof;\",\"𝕗\":\"&fopf;\",\"⋔\":\"&pitchfork;\",\"⫙\":\"&forkv;\",\"⨍\":\"&fpartint;\",\"½\":\"&half;\",\"⅓\":\"&frac13;\",\"¼\":\"&frac14;\",\"⅕\":\"&frac15;\",\"⅙\":\"&frac16;\",\"⅛\":\"&frac18;\",\"⅔\":\"&frac23;\",\"⅖\":\"&frac25;\",\"¾\":\"&frac34;\",\"⅗\":\"&frac35;\",\"⅜\":\"&frac38;\",\"⅘\":\"&frac45;\",\"⅚\":\"&frac56;\",\"⅝\":\"&frac58;\",\"⅞\":\"&frac78;\",\"⁄\":\"&frasl;\",\"⌢\":\"&sfrown;\",\"𝒻\":\"&fscr;\",\"⪌\":\"&gtreqqless;\",\"ǵ\":\"&gacute;\",\"γ\":\"&gamma;\",\"⪆\":\"&gtrapprox;\",\"ğ\":\"&gbreve;\",\"ĝ\":\"&gcirc;\",\"г\":\"&gcy;\",\"ġ\":\"&gdot;\",\"⪩\":\"&gescc;\",\"⪀\":\"&gesdot;\",\"⪂\":\"&gesdoto;\",\"⪄\":\"&gesdotol;\",\"⋛︀\":\"&gesl;\",\"⪔\":\"&gesles;\",\"𝔤\":\"&gfr;\",\"ℷ\":\"&gimel;\",\"ѓ\":\"&gjcy;\",\"⪒\":\"&glE;\",\"⪥\":\"&gla;\",\"⪤\":\"&glj;\",\"≩\":\"&gneqq;\",\"⪊\":\"&gnapprox;\",\"⪈\":\"&gneq;\",\"⋧\":\"&gnsim;\",\"𝕘\":\"&gopf;\",\"ℊ\":\"&gscr;\",\"⪎\":\"&gsime;\",\"⪐\":\"&gsiml;\",\"⪧\":\"&gtcc;\",\"⩺\":\"&gtcir;\",\"⋗\":\"&gtrdot;\",\"⦕\":\"&gtlPar;\",\"⩼\":\"&gtquest;\",\"⥸\":\"&gtrarr;\",\"≩︀\":\"&gvnE;\",\"ъ\":\"&hardcy;\",\"⥈\":\"&harrcir;\",\"↭\":\"&leftrightsquigarrow;\",\"ℏ\":\"&plankv;\",\"ĥ\":\"&hcirc;\",\"♥\":\"&heartsuit;\",\"…\":\"&mldr;\",\"⊹\":\"&hercon;\",\"𝔥\":\"&hfr;\",\"⤥\":\"&searhk;\",\"⤦\":\"&swarhk;\",\"⇿\":\"&hoarr;\",\"∻\":\"&homtht;\",\"↩\":\"&larrhk;\",\"↪\":\"&rarrhk;\",\"𝕙\":\"&hopf;\",\"―\":\"&horbar;\",\"𝒽\":\"&hscr;\",\"ħ\":\"&hstrok;\",\"⁃\":\"&hybull;\",\"í\":\"&iacute;\",\"î\":\"&icirc;\",\"и\":\"&icy;\",\"е\":\"&iecy;\",\"¡\":\"&iexcl;\",\"𝔦\":\"&ifr;\",\"ì\":\"&igrave;\",\"⨌\":\"&qint;\",\"∭\":\"&tint;\",\"⧜\":\"&iinfin;\",\"℩\":\"&iiota;\",\"ij\":\"&ijlig;\",\"ī\":\"&imacr;\",\"ı\":\"&inodot;\",\"⊷\":\"&imof;\",\"Ƶ\":\"&imped;\",\"℅\":\"&incare;\",\"∞\":\"&infin;\",\"⧝\":\"&infintie;\",\"⊺\":\"&intercal;\",\"⨗\":\"&intlarhk;\",\"⨼\":\"&iprod;\",\"ё\":\"&iocy;\",\"į\":\"&iogon;\",\"𝕚\":\"&iopf;\",\"ι\":\"&iota;\",\"¿\":\"&iquest;\",\"𝒾\":\"&iscr;\",\"⋹\":\"&isinE;\",\"⋵\":\"&isindot;\",\"⋴\":\"&isins;\",\"⋳\":\"&isinsv;\",\"ĩ\":\"&itilde;\",\"і\":\"&iukcy;\",\"ï\":\"&iuml;\",\"ĵ\":\"&jcirc;\",\"й\":\"&jcy;\",\"𝔧\":\"&jfr;\",\"ȷ\":\"&jmath;\",\"𝕛\":\"&jopf;\",\"𝒿\":\"&jscr;\",\"ј\":\"&jsercy;\",\"є\":\"&jukcy;\",\"κ\":\"&kappa;\",\"ϰ\":\"&varkappa;\",\"ķ\":\"&kcedil;\",\"к\":\"&kcy;\",\"𝔨\":\"&kfr;\",\"ĸ\":\"&kgreen;\",\"х\":\"&khcy;\",\"ќ\":\"&kjcy;\",\"𝕜\":\"&kopf;\",\"𝓀\":\"&kscr;\",\"⤛\":\"&lAtail;\",\"⤎\":\"&lBarr;\",\"⪋\":\"&lesseqqgtr;\",\"⥢\":\"&lHar;\",\"ĺ\":\"&lacute;\",\"⦴\":\"&laemptyv;\",\"λ\":\"&lambda;\",\"⦑\":\"&langd;\",\"⪅\":\"&lessapprox;\",\"«\":\"&laquo;\",\"⤟\":\"&larrbfs;\",\"⤝\":\"&larrfs;\",\"↫\":\"&looparrowleft;\",\"⤹\":\"&larrpl;\",\"⥳\":\"&larrsim;\",\"↢\":\"&leftarrowtail;\",\"⪫\":\"&lat;\",\"⤙\":\"&latail;\",\"⪭\":\"&late;\",\"⪭︀\":\"&lates;\",\"⤌\":\"&lbarr;\",\"❲\":\"&lbbrk;\",\"{\":\"&lcub;\",\"[\":\"&lsqb;\",\"⦋\":\"&lbrke;\",\"⦏\":\"&lbrksld;\",\"⦍\":\"&lbrkslu;\",\"ľ\":\"&lcaron;\",\"ļ\":\"&lcedil;\",\"л\":\"&lcy;\",\"⤶\":\"&ldca;\",\"⥧\":\"&ldrdhar;\",\"⥋\":\"&ldrushar;\",\"↲\":\"&ldsh;\",\"≤\":\"&leq;\",\"⇇\":\"&llarr;\",\"⋋\":\"&lthree;\",\"⪨\":\"&lescc;\",\"⩿\":\"&lesdot;\",\"⪁\":\"&lesdoto;\",\"⪃\":\"&lesdotor;\",\"⋚︀\":\"&lesg;\",\"⪓\":\"&lesges;\",\"⋖\":\"&ltdot;\",\"⥼\":\"&lfisht;\",\"𝔩\":\"&lfr;\",\"⪑\":\"&lgE;\",\"⥪\":\"&lharul;\",\"▄\":\"&lhblk;\",\"љ\":\"&ljcy;\",\"⥫\":\"&llhard;\",\"◺\":\"&lltri;\",\"ŀ\":\"&lmidot;\",\"⎰\":\"&lmoustache;\",\"≨\":\"&lneqq;\",\"⪉\":\"&lnapprox;\",\"⪇\":\"&lneq;\",\"⋦\":\"&lnsim;\",\"⟬\":\"&loang;\",\"⇽\":\"&loarr;\",\"⟼\":\"&xmap;\",\"↬\":\"&rarrlp;\",\"⦅\":\"&lopar;\",\"𝕝\":\"&lopf;\",\"⨭\":\"&loplus;\",\"⨴\":\"&lotimes;\",\"∗\":\"&lowast;\",\"◊\":\"&lozenge;\",\"(\":\"&lpar;\",\"⦓\":\"&lparlt;\",\"⥭\":\"&lrhard;\",\"‎\":\"&lrm;\",\"⊿\":\"&lrtri;\",\"‹\":\"&lsaquo;\",\"𝓁\":\"&lscr;\",\"⪍\":\"&lsime;\",\"⪏\":\"&lsimg;\",\"‚\":\"&sbquo;\",\"ł\":\"&lstrok;\",\"⪦\":\"&ltcc;\",\"⩹\":\"&ltcir;\",\"⋉\":\"&ltimes;\",\"⥶\":\"&ltlarr;\",\"⩻\":\"&ltquest;\",\"⦖\":\"&ltrPar;\",\"◃\":\"&triangleleft;\",\"⥊\":\"&lurdshar;\",\"⥦\":\"&luruhar;\",\"≨︀\":\"&lvnE;\",\"∺\":\"&mDDot;\",\"¯\":\"&strns;\",\"♂\":\"&male;\",\"✠\":\"&maltese;\",\"▮\":\"&marker;\",\"⨩\":\"&mcomma;\",\"м\":\"&mcy;\",\"—\":\"&mdash;\",\"𝔪\":\"&mfr;\",\"℧\":\"&mho;\",\"µ\":\"&micro;\",\"⫰\":\"&midcir;\",\"−\":\"&minus;\",\"⨪\":\"&minusdu;\",\"⫛\":\"&mlcp;\",\"⊧\":\"&models;\",\"𝕞\":\"&mopf;\",\"𝓂\":\"&mscr;\",\"μ\":\"&mu;\",\"⊸\":\"&mumap;\",\"⋙̸\":\"&nGg;\",\"≫⃒\":\"&nGt;\",\"⇍\":\"&nlArr;\",\"⇎\":\"&nhArr;\",\"⋘̸\":\"&nLl;\",\"≪⃒\":\"&nLt;\",\"⇏\":\"&nrArr;\",\"⊯\":\"&nVDash;\",\"⊮\":\"&nVdash;\",\"ń\":\"&nacute;\",\"∠⃒\":\"&nang;\",\"⩰̸\":\"&napE;\",\"≋̸\":\"&napid;\",\"ʼn\":\"&napos;\",\"♮\":\"&natural;\",\"⩃\":\"&ncap;\",\"ň\":\"&ncaron;\",\"ņ\":\"&ncedil;\",\"⩭̸\":\"&ncongdot;\",\"⩂\":\"&ncup;\",\"н\":\"&ncy;\",\"–\":\"&ndash;\",\"⇗\":\"&neArr;\",\"⤤\":\"&nearhk;\",\"≐̸\":\"&nedot;\",\"⤨\":\"&toea;\",\"𝔫\":\"&nfr;\",\"↮\":\"&nleftrightarrow;\",\"⫲\":\"&nhpar;\",\"⋼\":\"&nis;\",\"⋺\":\"&nisd;\",\"њ\":\"&njcy;\",\"≦̸\":\"&nleqq;\",\"↚\":\"&nleftarrow;\",\"‥\":\"&nldr;\",\"𝕟\":\"&nopf;\",\"¬\":\"&not;\",\"⋹̸\":\"&notinE;\",\"⋵̸\":\"&notindot;\",\"⋷\":\"&notinvb;\",\"⋶\":\"&notinvc;\",\"⋾\":\"&notnivb;\",\"⋽\":\"&notnivc;\",\"⫽⃥\":\"&nparsl;\",\"∂̸\":\"&npart;\",\"⨔\":\"&npolint;\",\"↛\":\"&nrightarrow;\",\"⤳̸\":\"&nrarrc;\",\"↝̸\":\"&nrarrw;\",\"𝓃\":\"&nscr;\",\"⊄\":\"&nsub;\",\"⫅̸\":\"&nsubseteqq;\",\"⊅\":\"&nsup;\",\"⫆̸\":\"&nsupseteqq;\",\"ñ\":\"&ntilde;\",\"ν\":\"&nu;\",\"#\":\"&num;\",\"№\":\"&numero;\",\" \":\"&numsp;\",\"⊭\":\"&nvDash;\",\"⤄\":\"&nvHarr;\",\"≍⃒\":\"&nvap;\",\"⊬\":\"&nvdash;\",\"≥⃒\":\"&nvge;\",\">⃒\":\"&nvgt;\",\"⧞\":\"&nvinfin;\",\"⤂\":\"&nvlArr;\",\"≤⃒\":\"&nvle;\",\"<⃒\":\"&nvlt;\",\"⊴⃒\":\"&nvltrie;\",\"⤃\":\"&nvrArr;\",\"⊵⃒\":\"&nvrtrie;\",\"∼⃒\":\"&nvsim;\",\"⇖\":\"&nwArr;\",\"⤣\":\"&nwarhk;\",\"⤧\":\"&nwnear;\",\"ó\":\"&oacute;\",\"ô\":\"&ocirc;\",\"о\":\"&ocy;\",\"ő\":\"&odblac;\",\"⨸\":\"&odiv;\",\"⦼\":\"&odsold;\",\"œ\":\"&oelig;\",\"⦿\":\"&ofcir;\",\"𝔬\":\"&ofr;\",\"˛\":\"&ogon;\",\"ò\":\"&ograve;\",\"⧁\":\"&ogt;\",\"⦵\":\"&ohbar;\",\"⦾\":\"&olcir;\",\"⦻\":\"&olcross;\",\"⧀\":\"&olt;\",\"ō\":\"&omacr;\",\"ω\":\"&omega;\",\"ο\":\"&omicron;\",\"⦶\":\"&omid;\",\"𝕠\":\"&oopf;\",\"⦷\":\"&opar;\",\"⦹\":\"&operp;\",\"∨\":\"&vee;\",\"⩝\":\"&ord;\",\"ℴ\":\"&oscr;\",\"ª\":\"&ordf;\",\"º\":\"&ordm;\",\"⊶\":\"&origof;\",\"⩖\":\"&oror;\",\"⩗\":\"&orslope;\",\"⩛\":\"&orv;\",\"ø\":\"&oslash;\",\"⊘\":\"&osol;\",\"õ\":\"&otilde;\",\"⨶\":\"&otimesas;\",\"ö\":\"&ouml;\",\"⌽\":\"&ovbar;\",\"¶\":\"&para;\",\"⫳\":\"&parsim;\",\"⫽\":\"&parsl;\",\"п\":\"&pcy;\",\"%\":\"&percnt;\",\".\":\"&period;\",\"‰\":\"&permil;\",\"‱\":\"&pertenk;\",\"𝔭\":\"&pfr;\",\"φ\":\"&phi;\",\"ϕ\":\"&varphi;\",\"☎\":\"&phone;\",\"π\":\"&pi;\",\"ϖ\":\"&varpi;\",\"ℎ\":\"&planckh;\",\"+\":\"&plus;\",\"⨣\":\"&plusacir;\",\"⨢\":\"&pluscir;\",\"⨥\":\"&plusdu;\",\"⩲\":\"&pluse;\",\"⨦\":\"&plussim;\",\"⨧\":\"&plustwo;\",\"⨕\":\"&pointint;\",\"𝕡\":\"&popf;\",\"£\":\"&pound;\",\"⪳\":\"&prE;\",\"⪷\":\"&precapprox;\",\"⪹\":\"&prnap;\",\"⪵\":\"&prnE;\",\"⋨\":\"&prnsim;\",\"′\":\"&prime;\",\"⌮\":\"&profalar;\",\"⌒\":\"&profline;\",\"⌓\":\"&profsurf;\",\"⊰\":\"&prurel;\",\"𝓅\":\"&pscr;\",\"ψ\":\"&psi;\",\" \":\"&puncsp;\",\"𝔮\":\"&qfr;\",\"𝕢\":\"&qopf;\",\"⁗\":\"&qprime;\",\"𝓆\":\"&qscr;\",\"⨖\":\"&quatint;\",\"?\":\"&quest;\",\"⤜\":\"&rAtail;\",\"⥤\":\"&rHar;\",\"∽̱\":\"&race;\",\"ŕ\":\"&racute;\",\"⦳\":\"&raemptyv;\",\"⦒\":\"&rangd;\",\"⦥\":\"&range;\",\"»\":\"&raquo;\",\"⥵\":\"&rarrap;\",\"⤠\":\"&rarrbfs;\",\"⤳\":\"&rarrc;\",\"⤞\":\"&rarrfs;\",\"⥅\":\"&rarrpl;\",\"⥴\":\"&rarrsim;\",\"↣\":\"&rightarrowtail;\",\"↝\":\"&rightsquigarrow;\",\"⤚\":\"&ratail;\",\"∶\":\"&ratio;\",\"❳\":\"&rbbrk;\",\"}\":\"&rcub;\",\"]\":\"&rsqb;\",\"⦌\":\"&rbrke;\",\"⦎\":\"&rbrksld;\",\"⦐\":\"&rbrkslu;\",\"ř\":\"&rcaron;\",\"ŗ\":\"&rcedil;\",\"р\":\"&rcy;\",\"⤷\":\"&rdca;\",\"⥩\":\"&rdldhar;\",\"↳\":\"&rdsh;\",\"▭\":\"&rect;\",\"⥽\":\"&rfisht;\",\"𝔯\":\"&rfr;\",\"⥬\":\"&rharul;\",\"ρ\":\"&rho;\",\"ϱ\":\"&varrho;\",\"⇉\":\"&rrarr;\",\"⋌\":\"&rthree;\",\"˚\":\"&ring;\",\"‏\":\"&rlm;\",\"⎱\":\"&rmoustache;\",\"⫮\":\"&rnmid;\",\"⟭\":\"&roang;\",\"⇾\":\"&roarr;\",\"⦆\":\"&ropar;\",\"𝕣\":\"&ropf;\",\"⨮\":\"&roplus;\",\"⨵\":\"&rotimes;\",\")\":\"&rpar;\",\"⦔\":\"&rpargt;\",\"⨒\":\"&rppolint;\",\"›\":\"&rsaquo;\",\"𝓇\":\"&rscr;\",\"⋊\":\"&rtimes;\",\"▹\":\"&triangleright;\",\"⧎\":\"&rtriltri;\",\"⥨\":\"&ruluhar;\",\"℞\":\"&rx;\",\"ś\":\"&sacute;\",\"⪴\":\"&scE;\",\"⪸\":\"&succapprox;\",\"š\":\"&scaron;\",\"ş\":\"&scedil;\",\"ŝ\":\"&scirc;\",\"⪶\":\"&succneqq;\",\"⪺\":\"&succnapprox;\",\"⋩\":\"&succnsim;\",\"⨓\":\"&scpolint;\",\"с\":\"&scy;\",\"⋅\":\"&sdot;\",\"⩦\":\"&sdote;\",\"⇘\":\"&seArr;\",\"§\":\"&sect;\",\";\":\"&semi;\",\"⤩\":\"&tosa;\",\"✶\":\"&sext;\",\"𝔰\":\"&sfr;\",\"♯\":\"&sharp;\",\"щ\":\"&shchcy;\",\"ш\":\"&shcy;\",\"­\":\"&shy;\",\"σ\":\"&sigma;\",\"ς\":\"&varsigma;\",\"⩪\":\"&simdot;\",\"⪞\":\"&simg;\",\"⪠\":\"&simgE;\",\"⪝\":\"&siml;\",\"⪟\":\"&simlE;\",\"≆\":\"&simne;\",\"⨤\":\"&simplus;\",\"⥲\":\"&simrarr;\",\"⨳\":\"&smashp;\",\"⧤\":\"&smeparsl;\",\"⌣\":\"&ssmile;\",\"⪪\":\"&smt;\",\"⪬\":\"&smte;\",\"⪬︀\":\"&smtes;\",\"ь\":\"&softcy;\",\"/\":\"&sol;\",\"⧄\":\"&solb;\",\"⌿\":\"&solbar;\",\"𝕤\":\"&sopf;\",\"♠\":\"&spadesuit;\",\"⊓︀\":\"&sqcaps;\",\"⊔︀\":\"&sqcups;\",\"𝓈\":\"&sscr;\",\"☆\":\"&star;\",\"⊂\":\"&subset;\",\"⫅\":\"&subseteqq;\",\"⪽\":\"&subdot;\",\"⫃\":\"&subedot;\",\"⫁\":\"&submult;\",\"⫋\":\"&subsetneqq;\",\"⊊\":\"&subsetneq;\",\"⪿\":\"&subplus;\",\"⥹\":\"&subrarr;\",\"⫇\":\"&subsim;\",\"⫕\":\"&subsub;\",\"⫓\":\"&subsup;\",\"♪\":\"&sung;\",\"¹\":\"&sup1;\",\"²\":\"&sup2;\",\"³\":\"&sup3;\",\"⫆\":\"&supseteqq;\",\"⪾\":\"&supdot;\",\"⫘\":\"&supdsub;\",\"⫄\":\"&supedot;\",\"⟉\":\"&suphsol;\",\"⫗\":\"&suphsub;\",\"⥻\":\"&suplarr;\",\"⫂\":\"&supmult;\",\"⫌\":\"&supsetneqq;\",\"⊋\":\"&supsetneq;\",\"⫀\":\"&supplus;\",\"⫈\":\"&supsim;\",\"⫔\":\"&supsub;\",\"⫖\":\"&supsup;\",\"⇙\":\"&swArr;\",\"⤪\":\"&swnwar;\",\"ß\":\"&szlig;\",\"⌖\":\"&target;\",\"τ\":\"&tau;\",\"ť\":\"&tcaron;\",\"ţ\":\"&tcedil;\",\"т\":\"&tcy;\",\"⌕\":\"&telrec;\",\"𝔱\":\"&tfr;\",\"θ\":\"&theta;\",\"ϑ\":\"&vartheta;\",\"þ\":\"&thorn;\",\"×\":\"&times;\",\"⨱\":\"&timesbar;\",\"⨰\":\"&timesd;\",\"⌶\":\"&topbot;\",\"⫱\":\"&topcir;\",\"𝕥\":\"&topf;\",\"⫚\":\"&topfork;\",\"‴\":\"&tprime;\",\"▵\":\"&utri;\",\"≜\":\"&trie;\",\"◬\":\"&tridot;\",\"⨺\":\"&triminus;\",\"⨹\":\"&triplus;\",\"⧍\":\"&trisb;\",\"⨻\":\"&tritime;\",\"⏢\":\"&trpezium;\",\"𝓉\":\"&tscr;\",\"ц\":\"&tscy;\",\"ћ\":\"&tshcy;\",\"ŧ\":\"&tstrok;\",\"⥣\":\"&uHar;\",\"ú\":\"&uacute;\",\"ў\":\"&ubrcy;\",\"ŭ\":\"&ubreve;\",\"û\":\"&ucirc;\",\"у\":\"&ucy;\",\"ű\":\"&udblac;\",\"⥾\":\"&ufisht;\",\"𝔲\":\"&ufr;\",\"ù\":\"&ugrave;\",\"▀\":\"&uhblk;\",\"⌜\":\"&ulcorner;\",\"⌏\":\"&ulcrop;\",\"◸\":\"&ultri;\",\"ū\":\"&umacr;\",\"ų\":\"&uogon;\",\"𝕦\":\"&uopf;\",\"υ\":\"&upsilon;\",\"⇈\":\"&uuarr;\",\"⌝\":\"&urcorner;\",\"⌎\":\"&urcrop;\",\"ů\":\"&uring;\",\"◹\":\"&urtri;\",\"𝓊\":\"&uscr;\",\"⋰\":\"&utdot;\",\"ũ\":\"&utilde;\",\"ü\":\"&uuml;\",\"⦧\":\"&uwangle;\",\"⫨\":\"&vBar;\",\"⫩\":\"&vBarv;\",\"⦜\":\"&vangrt;\",\"⊊︀\":\"&vsubne;\",\"⫋︀\":\"&vsubnE;\",\"⊋︀\":\"&vsupne;\",\"⫌︀\":\"&vsupnE;\",\"в\":\"&vcy;\",\"⊻\":\"&veebar;\",\"≚\":\"&veeeq;\",\"⋮\":\"&vellip;\",\"𝔳\":\"&vfr;\",\"𝕧\":\"&vopf;\",\"𝓋\":\"&vscr;\",\"⦚\":\"&vzigzag;\",\"ŵ\":\"&wcirc;\",\"⩟\":\"&wedbar;\",\"≙\":\"&wedgeq;\",\"℘\":\"&wp;\",\"𝔴\":\"&wfr;\",\"𝕨\":\"&wopf;\",\"𝓌\":\"&wscr;\",\"𝔵\":\"&xfr;\",\"ξ\":\"&xi;\",\"⋻\":\"&xnis;\",\"𝕩\":\"&xopf;\",\"𝓍\":\"&xscr;\",\"ý\":\"&yacute;\",\"я\":\"&yacy;\",\"ŷ\":\"&ycirc;\",\"ы\":\"&ycy;\",\"¥\":\"&yen;\",\"𝔶\":\"&yfr;\",\"ї\":\"&yicy;\",\"𝕪\":\"&yopf;\",\"𝓎\":\"&yscr;\",\"ю\":\"&yucy;\",\"ÿ\":\"&yuml;\",\"ź\":\"&zacute;\",\"ž\":\"&zcaron;\",\"з\":\"&zcy;\",\"ż\":\"&zdot;\",\"ζ\":\"&zeta;\",\"𝔷\":\"&zfr;\",\"ж\":\"&zhcy;\",\"⇝\":\"&zigrarr;\",\"𝕫\":\"&zopf;\",\"𝓏\":\"&zscr;\",\"‍\":\"&zwj;\",\"‌\":\"&zwnj;\"}}};","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.numericUnicodeMap={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.fromCodePoint=String.fromCodePoint||function(astralCodePoint){return String.fromCharCode(Math.floor((astralCodePoint-65536)/1024)+55296,(astralCodePoint-65536)%1024+56320)};exports.getCodePoint=String.prototype.codePointAt?function(input,position){return input.codePointAt(position)}:function(input,position){return(input.charCodeAt(position)-55296)*1024+input.charCodeAt(position+1)-56320+65536};exports.highSurrogateFrom=55296;exports.highSurrogateTo=56319;","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(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))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar named_references_1 = require(\"./named-references\");\nvar numeric_unicode_map_1 = require(\"./numeric-unicode-map\");\nvar surrogate_pairs_1 = require(\"./surrogate-pairs\");\nvar allNamedReferences = __assign(__assign({}, named_references_1.namedReferences), { all: named_references_1.namedReferences.html5 });\nvar encodeRegExps = {\n specialChars: /[<>'\"&]/g,\n nonAscii: /(?:[<>'\"&\\u0080-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g,\n nonAsciiPrintable: /(?:[<>'\"&\\x01-\\x08\\x11-\\x15\\x17-\\x1F\\x7f-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g,\n extensive: /(?:[\\x01-\\x0c\\x0e-\\x1f\\x21-\\x2c\\x2e-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7d\\x7f-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g\n};\nvar defaultEncodeOptions = {\n mode: 'specialChars',\n level: 'all',\n numeric: 'decimal'\n};\n/** Encodes all the necessary (specified by `level`) characters in the text */\nfunction encode(text, _a) {\n var _b = _a === void 0 ? defaultEncodeOptions : _a, _c = _b.mode, mode = _c === void 0 ? 'specialChars' : _c, _d = _b.numeric, numeric = _d === void 0 ? 'decimal' : _d, _e = _b.level, level = _e === void 0 ? 'all' : _e;\n if (!text) {\n return '';\n }\n var encodeRegExp = encodeRegExps[mode];\n var references = allNamedReferences[level].characters;\n var isHex = numeric === 'hexadecimal';\n encodeRegExp.lastIndex = 0;\n var _b = encodeRegExp.exec(text);\n var _c;\n if (_b) {\n _c = '';\n var _d = 0;\n do {\n if (_d !== _b.index) {\n _c += text.substring(_d, _b.index);\n }\n var _e = _b[0];\n var result_1 = references[_e];\n if (!result_1) {\n var code_1 = _e.length > 1 ? surrogate_pairs_1.getCodePoint(_e, 0) : _e.charCodeAt(0);\n result_1 = (isHex ? '&#x' + code_1.toString(16) : '&#' + code_1) + ';';\n }\n _c += result_1;\n _d = _b.index + _e.length;\n } while ((_b = encodeRegExp.exec(text)));\n if (_d !== text.length) {\n _c += text.substring(_d);\n }\n }\n else {\n _c =\n text;\n }\n return _c;\n}\nexports.encode = encode;\nvar defaultDecodeOptions = {\n scope: 'body',\n level: 'all'\n};\nvar strict = /&(?:#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+);/g;\nvar attribute = /&(?:#\\d+|#[xX][\\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g;\nvar baseDecodeRegExps = {\n xml: {\n strict: strict,\n attribute: attribute,\n body: named_references_1.bodyRegExps.xml\n },\n html4: {\n strict: strict,\n attribute: attribute,\n body: named_references_1.bodyRegExps.html4\n },\n html5: {\n strict: strict,\n attribute: attribute,\n body: named_references_1.bodyRegExps.html5\n }\n};\nvar decodeRegExps = __assign(__assign({}, baseDecodeRegExps), { all: baseDecodeRegExps.html5 });\nvar fromCharCode = String.fromCharCode;\nvar outOfBoundsChar = fromCharCode(65533);\nvar defaultDecodeEntityOptions = {\n level: 'all'\n};\n/** Decodes a single entity */\nfunction decodeEntity(entity, _a) {\n var _b = (_a === void 0 ? defaultDecodeEntityOptions : _a).level, level = _b === void 0 ? 'all' : _b;\n if (!entity) {\n return '';\n }\n var _b = entity;\n var decodeEntityLastChar_1 = entity[entity.length - 1];\n if (false\n && decodeEntityLastChar_1 === '=') {\n _b =\n entity;\n }\n else if (false\n && decodeEntityLastChar_1 !== ';') {\n _b =\n entity;\n }\n else {\n var decodeResultByReference_1 = allNamedReferences[level].entities[entity];\n if (decodeResultByReference_1) {\n _b = decodeResultByReference_1;\n }\n else if (entity[0] === '&' && entity[1] === '#') {\n var decodeSecondChar_1 = entity[2];\n var decodeCode_1 = decodeSecondChar_1 == 'x' || decodeSecondChar_1 == 'X'\n ? parseInt(entity.substr(3), 16)\n : parseInt(entity.substr(2));\n _b =\n decodeCode_1 >= 0x10ffff\n ? outOfBoundsChar\n : decodeCode_1 > 65535\n ? surrogate_pairs_1.fromCodePoint(decodeCode_1)\n : fromCharCode(numeric_unicode_map_1.numericUnicodeMap[decodeCode_1] || decodeCode_1);\n }\n }\n return _b;\n}\nexports.decodeEntity = decodeEntity;\n/** Decodes all entities in the text */\nfunction decode(text, _a) {\n var decodeSecondChar_1 = _a === void 0 ? defaultDecodeOptions : _a, decodeCode_1 = decodeSecondChar_1.level, level = decodeCode_1 === void 0 ? 'all' : decodeCode_1, _b = decodeSecondChar_1.scope, scope = _b === void 0 ? level === 'xml' ? 'strict' : 'body' : _b;\n if (!text) {\n return '';\n }\n var decodeRegExp = decodeRegExps[level][scope];\n var references = allNamedReferences[level].entities;\n var isAttribute = scope === 'attribute';\n var isStrict = scope === 'strict';\n decodeRegExp.lastIndex = 0;\n var replaceMatch_1 = decodeRegExp.exec(text);\n var replaceResult_1;\n if (replaceMatch_1) {\n replaceResult_1 = '';\n var replaceLastIndex_1 = 0;\n do {\n if (replaceLastIndex_1 !== replaceMatch_1.index) {\n replaceResult_1 += text.substring(replaceLastIndex_1, replaceMatch_1.index);\n }\n var replaceInput_1 = replaceMatch_1[0];\n var decodeResult_1 = replaceInput_1;\n var decodeEntityLastChar_2 = replaceInput_1[replaceInput_1.length - 1];\n if (isAttribute\n && decodeEntityLastChar_2 === '=') {\n decodeResult_1 = replaceInput_1;\n }\n else if (isStrict\n && decodeEntityLastChar_2 !== ';') {\n decodeResult_1 = replaceInput_1;\n }\n else {\n var decodeResultByReference_2 = references[replaceInput_1];\n if (decodeResultByReference_2) {\n decodeResult_1 = decodeResultByReference_2;\n }\n else if (replaceInput_1[0] === '&' && replaceInput_1[1] === '#') {\n var decodeSecondChar_2 = replaceInput_1[2];\n var decodeCode_2 = decodeSecondChar_2 == 'x' || decodeSecondChar_2 == 'X'\n ? parseInt(replaceInput_1.substr(3), 16)\n : parseInt(replaceInput_1.substr(2));\n decodeResult_1 =\n decodeCode_2 >= 0x10ffff\n ? outOfBoundsChar\n : decodeCode_2 > 65535\n ? surrogate_pairs_1.fromCodePoint(decodeCode_2)\n : fromCharCode(numeric_unicode_map_1.numericUnicodeMap[decodeCode_2] || decodeCode_2);\n }\n }\n replaceResult_1 += decodeResult_1;\n replaceLastIndex_1 = replaceMatch_1.index + replaceInput_1.length;\n } while ((replaceMatch_1 = decodeRegExp.exec(text)));\n if (replaceLastIndex_1 !== text.length) {\n replaceResult_1 += text.substring(replaceLastIndex_1);\n }\n }\n else {\n replaceResult_1 =\n text;\n }\n return replaceResult_1;\n}\nexports.decode = decode;\n","export const safeTagsAndAttributes = {\n a: [\n \"class\",\n \"target\",\n \"href\",\n \"title\",\n \"data-collection-id\",\n \"data-page-id\",\n \"rel\",\n \"data-user-id\",\n \"data-user-id-old\",\n ],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\"autoplay\", \"controls\", \"loop\", \"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: [\"id\"],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [\"style\"],\n dl: [],\n dt: [],\n em: [],\n font: [\"color\", \"size\", \"face\", \"style\"],\n footer: [],\n h1: [\"style\"],\n h2: [\"style\"],\n h3: [\"style\"],\n h4: [\"style\"],\n h5: [\"style\"],\n h6: [\"style\"],\n header: [\"style\"],\n hr: [\"style\", \"class\"],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\", \"style\", \"class\", \"type\"],\n ins: [\"datetime\"],\n li: [\"style\"],\n mark: [],\n nav: [],\n ol: [\"style\"],\n p: [\"style\"],\n pre: [\"id\", \"style\"],\n s: [],\n section: [],\n small: [],\n span: [\"style\", \"class\"],\n sub: [],\n sup: [],\n strong: [],\n table: [\"width\", \"border\", \"align\", \"valign\", \"style\", \"class\"],\n tbody: [\"align\", \"valign\", \"style\", \"class\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\", \"style\", \"class\"],\n tfoot: [\"align\", \"valign\", \"style\", \"class\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\", \"style\", \"class\"],\n thead: [\"align\", \"valign\", \"style\", \"class\"],\n tr: [\"rowspan\", \"align\", \"valign\", \"style\", \"class\"],\n tt: [],\n u: [],\n ul: [\"style\", \"class\"],\n video: [\n \"style\",\n \"autoplay\",\n \"controls\",\n \"loop\",\n \"preload\",\n \"src\",\n \"height\",\n \"width\",\n ],\n iframe: [\n \"src\",\n \"frameborder\",\n \"allow\",\n \"sandbox\",\n \"referrerpolicy\",\n \"allowfullscreen\",\n \"style\",\n \"class\",\n ],\n};\n\nconst HIGHLIGHT_JS_THEME = \"a11y-light\";\n\nexport const MONOSPACE_FONT_URL =\n \"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono&display=swap\";\nexport const HIGHLIGHJS_JS = [\n \"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.6.0/highlight.min.js\",\n];\nexport const HIGHLIGHJS_CSS = [\n \"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.6.0/styles/default.min.css\",\n `https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.6.0/styles/${HIGHLIGHT_JS_THEME}.min.css`,\n];\nexport const ELEMENT_TYPE_PRE = \"PRE\";\nexport const ELEMENT_TYPE_CODE = \"CODE\";\nexport const CODE_BLOCK_AVAILABLE_LANGUAGES = [\n \"javascript\",\n \"html\",\n \"css\",\n \"xml\",\n \"json\",\n \"java\",\n \"php\",\n \"typescript\",\n];\n",";/*! showdown v 2.1.0 - 21-04-2022 */\r\n(function(){\r\n/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n describe: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n describe: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n describe: 'Parses simple line breaks as <br> (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n describe: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n describe: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n describe: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n describe: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n type: 'boolean'\n },\n ellipsis: {\n defaultValue: true,\n describe: 'Replaces three dots with the ellipsis unicode character',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n describe: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n describe: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n\r\n/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|object[]|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n\r\n/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/&quot;/g, '\"')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&amp;/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n var obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n var encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof (console) === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '+1':'\\ud83d\\udc4d',\n '-1':'\\ud83d\\udc4e',\n '100':'\\ud83d\\udcaf',\n '1234':'\\ud83d\\udd22',\n '1st_place_medal':'\\ud83e\\udd47',\n '2nd_place_medal':'\\ud83e\\udd48',\n '3rd_place_medal':'\\ud83e\\udd49',\n '8ball':'\\ud83c\\udfb1',\n 'a':'\\ud83c\\udd70\\ufe0f',\n 'ab':'\\ud83c\\udd8e',\n 'abc':'\\ud83d\\udd24',\n 'abcd':'\\ud83d\\udd21',\n 'accept':'\\ud83c\\ude51',\n 'aerial_tramway':'\\ud83d\\udea1',\n 'airplane':'\\u2708\\ufe0f',\n 'alarm_clock':'\\u23f0',\n 'alembic':'\\u2697\\ufe0f',\n 'alien':'\\ud83d\\udc7d',\n 'ambulance':'\\ud83d\\ude91',\n 'amphora':'\\ud83c\\udffa',\n 'anchor':'\\u2693\\ufe0f',\n 'angel':'\\ud83d\\udc7c',\n 'anger':'\\ud83d\\udca2',\n 'angry':'\\ud83d\\ude20',\n 'anguished':'\\ud83d\\ude27',\n 'ant':'\\ud83d\\udc1c',\n 'apple':'\\ud83c\\udf4e',\n 'aquarius':'\\u2652\\ufe0f',\n 'aries':'\\u2648\\ufe0f',\n 'arrow_backward':'\\u25c0\\ufe0f',\n 'arrow_double_down':'\\u23ec',\n 'arrow_double_up':'\\u23eb',\n 'arrow_down':'\\u2b07\\ufe0f',\n 'arrow_down_small':'\\ud83d\\udd3d',\n 'arrow_forward':'\\u25b6\\ufe0f',\n 'arrow_heading_down':'\\u2935\\ufe0f',\n 'arrow_heading_up':'\\u2934\\ufe0f',\n 'arrow_left':'\\u2b05\\ufe0f',\n 'arrow_lower_left':'\\u2199\\ufe0f',\n 'arrow_lower_right':'\\u2198\\ufe0f',\n 'arrow_right':'\\u27a1\\ufe0f',\n 'arrow_right_hook':'\\u21aa\\ufe0f',\n 'arrow_up':'\\u2b06\\ufe0f',\n 'arrow_up_down':'\\u2195\\ufe0f',\n 'arrow_up_small':'\\ud83d\\udd3c',\n 'arrow_upper_left':'\\u2196\\ufe0f',\n 'arrow_upper_right':'\\u2197\\ufe0f',\n 'arrows_clockwise':'\\ud83d\\udd03',\n 'arrows_counterclockwise':'\\ud83d\\udd04',\n 'art':'\\ud83c\\udfa8',\n 'articulated_lorry':'\\ud83d\\ude9b',\n 'artificial_satellite':'\\ud83d\\udef0',\n 'astonished':'\\ud83d\\ude32',\n 'athletic_shoe':'\\ud83d\\udc5f',\n 'atm':'\\ud83c\\udfe7',\n 'atom_symbol':'\\u269b\\ufe0f',\n 'avocado':'\\ud83e\\udd51',\n 'b':'\\ud83c\\udd71\\ufe0f',\n 'baby':'\\ud83d\\udc76',\n 'baby_bottle':'\\ud83c\\udf7c',\n 'baby_chick':'\\ud83d\\udc24',\n 'baby_symbol':'\\ud83d\\udebc',\n 'back':'\\ud83d\\udd19',\n 'bacon':'\\ud83e\\udd53',\n 'badminton':'\\ud83c\\udff8',\n 'baggage_claim':'\\ud83d\\udec4',\n 'baguette_bread':'\\ud83e\\udd56',\n 'balance_scale':'\\u2696\\ufe0f',\n 'balloon':'\\ud83c\\udf88',\n 'ballot_box':'\\ud83d\\uddf3',\n 'ballot_box_with_check':'\\u2611\\ufe0f',\n 'bamboo':'\\ud83c\\udf8d',\n 'banana':'\\ud83c\\udf4c',\n 'bangbang':'\\u203c\\ufe0f',\n 'bank':'\\ud83c\\udfe6',\n 'bar_chart':'\\ud83d\\udcca',\n 'barber':'\\ud83d\\udc88',\n 'baseball':'\\u26be\\ufe0f',\n 'basketball':'\\ud83c\\udfc0',\n 'basketball_man':'\\u26f9\\ufe0f',\n 'basketball_woman':'\\u26f9\\ufe0f&zwj;\\u2640\\ufe0f',\n 'bat':'\\ud83e\\udd87',\n 'bath':'\\ud83d\\udec0',\n 'bathtub':'\\ud83d\\udec1',\n 'battery':'\\ud83d\\udd0b',\n 'beach_umbrella':'\\ud83c\\udfd6',\n 'bear':'\\ud83d\\udc3b',\n 'bed':'\\ud83d\\udecf',\n 'bee':'\\ud83d\\udc1d',\n 'beer':'\\ud83c\\udf7a',\n 'beers':'\\ud83c\\udf7b',\n 'beetle':'\\ud83d\\udc1e',\n 'beginner':'\\ud83d\\udd30',\n 'bell':'\\ud83d\\udd14',\n 'bellhop_bell':'\\ud83d\\udece',\n 'bento':'\\ud83c\\udf71',\n 'biking_man':'\\ud83d\\udeb4',\n 'bike':'\\ud83d\\udeb2',\n 'biking_woman':'\\ud83d\\udeb4&zwj;\\u2640\\ufe0f',\n 'bikini':'\\ud83d\\udc59',\n 'biohazard':'\\u2623\\ufe0f',\n 'bird':'\\ud83d\\udc26',\n 'birthday':'\\ud83c\\udf82',\n 'black_circle':'\\u26ab\\ufe0f',\n 'black_flag':'\\ud83c\\udff4',\n 'black_heart':'\\ud83d\\udda4',\n 'black_joker':'\\ud83c\\udccf',\n 'black_large_square':'\\u2b1b\\ufe0f',\n 'black_medium_small_square':'\\u25fe\\ufe0f',\n 'black_medium_square':'\\u25fc\\ufe0f',\n 'black_nib':'\\u2712\\ufe0f',\n 'black_small_square':'\\u25aa\\ufe0f',\n 'black_square_button':'\\ud83d\\udd32',\n 'blonde_man':'\\ud83d\\udc71',\n 'blonde_woman':'\\ud83d\\udc71&zwj;\\u2640\\ufe0f',\n 'blossom':'\\ud83c\\udf3c',\n 'blowfish':'\\ud83d\\udc21',\n 'blue_book':'\\ud83d\\udcd8',\n 'blue_car':'\\ud83d\\ude99',\n 'blue_heart':'\\ud83d\\udc99',\n 'blush':'\\ud83d\\ude0a',\n 'boar':'\\ud83d\\udc17',\n 'boat':'\\u26f5\\ufe0f',\n 'bomb':'\\ud83d\\udca3',\n 'book':'\\ud83d\\udcd6',\n 'bookmark':'\\ud83d\\udd16',\n 'bookmark_tabs':'\\ud83d\\udcd1',\n 'books':'\\ud83d\\udcda',\n 'boom':'\\ud83d\\udca5',\n 'boot':'\\ud83d\\udc62',\n 'bouquet':'\\ud83d\\udc90',\n 'bowing_man':'\\ud83d\\ude47',\n 'bow_and_arrow':'\\ud83c\\udff9',\n 'bowing_woman':'\\ud83d\\ude47&zwj;\\u2640\\ufe0f',\n 'bowling':'\\ud83c\\udfb3',\n 'boxing_glove':'\\ud83e\\udd4a',\n 'boy':'\\ud83d\\udc66',\n 'bread':'\\ud83c\\udf5e',\n 'bride_with_veil':'\\ud83d\\udc70',\n 'bridge_at_night':'\\ud83c\\udf09',\n 'briefcase':'\\ud83d\\udcbc',\n 'broken_heart':'\\ud83d\\udc94',\n 'bug':'\\ud83d\\udc1b',\n 'building_construction':'\\ud83c\\udfd7',\n 'bulb':'\\ud83d\\udca1',\n 'bullettrain_front':'\\ud83d\\ude85',\n 'bullettrain_side':'\\ud83d\\ude84',\n 'burrito':'\\ud83c\\udf2f',\n 'bus':'\\ud83d\\ude8c',\n 'business_suit_levitating':'\\ud83d\\udd74',\n 'busstop':'\\ud83d\\ude8f',\n 'bust_in_silhouette':'\\ud83d\\udc64',\n 'busts_in_silhouette':'\\ud83d\\udc65',\n 'butterfly':'\\ud83e\\udd8b',\n 'cactus':'\\ud83c\\udf35',\n 'cake':'\\ud83c\\udf70',\n 'calendar':'\\ud83d\\udcc6',\n 'call_me_hand':'\\ud83e\\udd19',\n 'calling':'\\ud83d\\udcf2',\n 'camel':'\\ud83d\\udc2b',\n 'camera':'\\ud83d\\udcf7',\n 'camera_flash':'\\ud83d\\udcf8',\n 'camping':'\\ud83c\\udfd5',\n 'cancer':'\\u264b\\ufe0f',\n 'candle':'\\ud83d\\udd6f',\n 'candy':'\\ud83c\\udf6c',\n 'canoe':'\\ud83d\\udef6',\n 'capital_abcd':'\\ud83d\\udd20',\n 'capricorn':'\\u2651\\ufe0f',\n 'car':'\\ud83d\\ude97',\n 'card_file_box':'\\ud83d\\uddc3',\n 'card_index':'\\ud83d\\udcc7',\n 'card_index_dividers':'\\ud83d\\uddc2',\n 'carousel_horse':'\\ud83c\\udfa0',\n 'carrot':'\\ud83e\\udd55',\n 'cat':'\\ud83d\\udc31',\n 'cat2':'\\ud83d\\udc08',\n 'cd':'\\ud83d\\udcbf',\n 'chains':'\\u26d3',\n 'champagne':'\\ud83c\\udf7e',\n 'chart':'\\ud83d\\udcb9',\n 'chart_with_downwards_trend':'\\ud83d\\udcc9',\n 'chart_with_upwards_trend':'\\ud83d\\udcc8',\n 'checkered_flag':'\\ud83c\\udfc1',\n 'cheese':'\\ud83e\\uddc0',\n 'cherries':'\\ud83c\\udf52',\n 'cherry_blossom':'\\ud83c\\udf38',\n 'chestnut':'\\ud83c\\udf30',\n 'chicken':'\\ud83d\\udc14',\n 'children_crossing':'\\ud83d\\udeb8',\n 'chipmunk':'\\ud83d\\udc3f',\n 'chocolate_bar':'\\ud83c\\udf6b',\n 'christmas_tree':'\\ud83c\\udf84',\n 'church':'\\u26ea\\ufe0f',\n 'cinema':'\\ud83c\\udfa6',\n 'circus_tent':'\\ud83c\\udfaa',\n 'city_sunrise':'\\ud83c\\udf07',\n 'city_sunset':'\\ud83c\\udf06',\n 'cityscape':'\\ud83c\\udfd9',\n 'cl':'\\ud83c\\udd91',\n 'clamp':'\\ud83d\\udddc',\n 'clap':'\\ud83d\\udc4f',\n 'clapper':'\\ud83c\\udfac',\n 'classical_building':'\\ud83c\\udfdb',\n 'clinking_glasses':'\\ud83e\\udd42',\n 'clipboard':'\\ud83d\\udccb',\n 'clock1':'\\ud83d\\udd50',\n 'clock10':'\\ud83d\\udd59',\n 'clock1030':'\\ud83d\\udd65',\n 'clock11':'\\ud83d\\udd5a',\n 'clock1130':'\\ud83d\\udd66',\n 'clock12':'\\ud83d\\udd5b',\n 'clock1230':'\\ud83d\\udd67',\n 'clock130':'\\ud83d\\udd5c',\n 'clock2':'\\ud83d\\udd51',\n 'clock230':'\\ud83d\\udd5d',\n 'clock3':'\\ud83d\\udd52',\n 'clock330':'\\ud83d\\udd5e',\n 'clock4':'\\ud83d\\udd53',\n 'clock430':'\\ud83d\\udd5f',\n 'clock5':'\\ud83d\\udd54',\n 'clock530':'\\ud83d\\udd60',\n 'clock6':'\\ud83d\\udd55',\n 'clock630':'\\ud83d\\udd61',\n 'clock7':'\\ud83d\\udd56',\n 'clock730':'\\ud83d\\udd62',\n 'clock8':'\\ud83d\\udd57',\n 'clock830':'\\ud83d\\udd63',\n 'clock9':'\\ud83d\\udd58',\n 'clock930':'\\ud83d\\udd64',\n 'closed_book':'\\ud83d\\udcd5',\n 'closed_lock_with_key':'\\ud83d\\udd10',\n 'closed_umbrella':'\\ud83c\\udf02',\n 'cloud':'\\u2601\\ufe0f',\n 'cloud_with_lightning':'\\ud83c\\udf29',\n 'cloud_with_lightning_and_rain':'\\u26c8',\n 'cloud_with_rain':'\\ud83c\\udf27',\n 'cloud_with_snow':'\\ud83c\\udf28',\n 'clown_face':'\\ud83e\\udd21',\n 'clubs':'\\u2663\\ufe0f',\n 'cocktail':'\\ud83c\\udf78',\n 'coffee':'\\u2615\\ufe0f',\n 'coffin':'\\u26b0\\ufe0f',\n 'cold_sweat':'\\ud83d\\ude30',\n 'comet':'\\u2604\\ufe0f',\n 'computer':'\\ud83d\\udcbb',\n 'computer_mouse':'\\ud83d\\uddb1',\n 'confetti_ball':'\\ud83c\\udf8a',\n 'confounded':'\\ud83d\\ude16',\n 'confused':'\\ud83d\\ude15',\n 'congratulations':'\\u3297\\ufe0f',\n 'construction':'\\ud83d\\udea7',\n 'construction_worker_man':'\\ud83d\\udc77',\n 'construction_worker_woman':'\\ud83d\\udc77&zwj;\\u2640\\ufe0f',\n 'control_knobs':'\\ud83c\\udf9b',\n 'convenience_store':'\\ud83c\\udfea',\n 'cookie':'\\ud83c\\udf6a',\n 'cool':'\\ud83c\\udd92',\n 'policeman':'\\ud83d\\udc6e',\n 'copyright':'\\u00a9\\ufe0f',\n 'corn':'\\ud83c\\udf3d',\n 'couch_and_lamp':'\\ud83d\\udecb',\n 'couple':'\\ud83d\\udc6b',\n 'couple_with_heart_woman_man':'\\ud83d\\udc91',\n 'couple_with_heart_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc68',\n 'couple_with_heart_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc69',\n 'couplekiss_man_man':'\\ud83d\\udc68&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc68',\n 'couplekiss_man_woman':'\\ud83d\\udc8f',\n 'couplekiss_woman_woman':'\\ud83d\\udc69&zwj;\\u2764\\ufe0f&zwj;\\ud83d\\udc8b&zwj;\\ud83d\\udc69',\n 'cow':'\\ud83d\\udc2e',\n 'cow2':'\\ud83d\\udc04',\n 'cowboy_hat_face':'\\ud83e\\udd20',\n 'crab':'\\ud83e\\udd80',\n 'crayon':'\\ud83d\\udd8d',\n 'credit_card':'\\ud83d\\udcb3',\n 'crescent_moon':'\\ud83c\\udf19',\n 'cricket':'\\ud83c\\udfcf',\n 'crocodile':'\\ud83d\\udc0a',\n 'croissant':'\\ud83e\\udd50',\n 'crossed_fingers':'\\ud83e\\udd1e',\n 'crossed_flags':'\\ud83c\\udf8c',\n 'crossed_swords':'\\u2694\\ufe0f',\n 'crown':'\\ud83d\\udc51',\n 'cry':'\\ud83d\\ude22',\n 'crying_cat_face':'\\ud83d\\ude3f',\n 'crystal_ball':'\\ud83d\\udd2e',\n 'cucumber':'\\ud83e\\udd52',\n 'cupid':'\\ud83d\\udc98',\n 'curly_loop':'\\u27b0',\n 'currency_exchange':'\\ud83d\\udcb1',\n 'curry':'\\ud83c\\udf5b',\n 'custard':'\\ud83c\\udf6e',\n 'customs':'\\ud83d\\udec3',\n 'cyclone':'\\ud83c\\udf00',\n 'dagger':'\\ud83d\\udde1',\n 'dancer':'\\ud83d\\udc83',\n 'dancing_women':'\\ud83d\\udc6f',\n 'dancing_men':'\\ud83d\\udc6f&zwj;\\u2642\\ufe0f',\n 'dango':'\\ud83c\\udf61',\n 'dark_sunglasses':'\\ud83d\\udd76',\n 'dart':'\\ud83c\\udfaf',\n 'dash':'\\ud83d\\udca8',\n 'date':'\\ud83d\\udcc5',\n 'deciduous_tree':'\\ud83c\\udf33',\n 'deer':'\\ud83e\\udd8c',\n 'department_store':'\\ud83c\\udfec',\n 'derelict_house':'\\ud83c\\udfda',\n 'desert':'\\ud83c\\udfdc',\n 'desert_island':'\\ud83c\\udfdd',\n 'desktop_computer':'\\ud83d\\udda5',\n 'male_detective':'\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n 'diamonds':'\\u2666\\ufe0f',\n 'disappointed':'\\ud83d\\ude1e',\n 'disappointed_relieved':'\\ud83d\\ude25',\n 'dizzy':'\\ud83d\\udcab',\n 'dizzy_face':'\\ud83d\\ude35',\n 'do_not_litter':'\\ud83d\\udeaf',\n 'dog':'\\ud83d\\udc36',\n 'dog2':'\\ud83d\\udc15',\n 'dollar':'\\ud83d\\udcb5',\n 'dolls':'\\ud83c\\udf8e',\n 'dolphin':'\\ud83d\\udc2c',\n 'door':'\\ud83d\\udeaa',\n 'doughnut':'\\ud83c\\udf69',\n 'dove':'\\ud83d\\udd4a',\n 'dragon':'\\ud83d\\udc09',\n 'dragon_face':'\\ud83d\\udc32',\n 'dress':'\\ud83d\\udc57',\n 'dromedary_camel':'\\ud83d\\udc2a',\n 'drooling_face':'\\ud83e\\udd24',\n 'droplet':'\\ud83d\\udca7',\n 'drum':'\\ud83e\\udd41',\n 'duck':'\\ud83e\\udd86',\n 'dvd':'\\ud83d\\udcc0',\n 'e-mail':'\\ud83d\\udce7',\n 'eagle':'\\ud83e\\udd85',\n 'ear':'\\ud83d\\udc42',\n 'ear_of_rice':'\\ud83c\\udf3e',\n 'earth_africa':'\\ud83c\\udf0d',\n 'earth_americas':'\\ud83c\\udf0e',\n 'earth_asia':'\\ud83c\\udf0f',\n 'egg':'\\ud83e\\udd5a',\n 'eggplant':'\\ud83c\\udf46',\n 'eight_pointed_black_star':'\\u2734\\ufe0f',\n 'eight_spoked_asterisk':'\\u2733\\ufe0f',\n 'electric_plug':'\\ud83d\\udd0c',\n 'elephant':'\\ud83d\\udc18',\n 'email':'\\u2709\\ufe0f',\n 'end':'\\ud83d\\udd1a',\n 'envelope_with_arrow':'\\ud83d\\udce9',\n 'euro':'\\ud83d\\udcb6',\n 'european_castle':'\\ud83c\\udff0',\n 'european_post_office':'\\ud83c\\udfe4',\n 'evergreen_tree':'\\ud83c\\udf32',\n 'exclamation':'\\u2757\\ufe0f',\n 'expressionless':'\\ud83d\\ude11',\n 'eye':'\\ud83d\\udc41',\n 'eye_speech_bubble':'\\ud83d\\udc41&zwj;\\ud83d\\udde8',\n 'eyeglasses':'\\ud83d\\udc53',\n 'eyes':'\\ud83d\\udc40',\n 'face_with_head_bandage':'\\ud83e\\udd15',\n 'face_with_thermometer':'\\ud83e\\udd12',\n 'fist_oncoming':'\\ud83d\\udc4a',\n 'factory':'\\ud83c\\udfed',\n 'fallen_leaf':'\\ud83c\\udf42',\n 'family_man_woman_boy':'\\ud83d\\udc6a',\n 'family_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n 'family_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n 'family_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_man_man_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66',\n 'family_man_man_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_man_man_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67',\n 'family_man_man_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_man_man_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc68&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_man_woman_boy_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_man_woman_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n 'family_man_woman_girl_boy':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_man_woman_girl_girl':'\\ud83d\\udc68&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n 'family_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n 'family_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'family_woman_woman_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66',\n 'family_woman_woman_boy_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc66&zwj;\\ud83d\\udc66',\n 'family_woman_woman_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67',\n 'family_woman_woman_girl_boy':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc66',\n 'family_woman_woman_girl_girl':'\\ud83d\\udc69&zwj;\\ud83d\\udc69&zwj;\\ud83d\\udc67&zwj;\\ud83d\\udc67',\n 'fast_forward':'\\u23e9',\n 'fax':'\\ud83d\\udce0',\n 'fearful':'\\ud83d\\ude28',\n 'feet':'\\ud83d\\udc3e',\n 'female_detective':'\\ud83d\\udd75\\ufe0f&zwj;\\u2640\\ufe0f',\n 'ferris_wheel':'\\ud83c\\udfa1',\n 'ferry':'\\u26f4',\n 'field_hockey':'\\ud83c\\udfd1',\n 'file_cabinet':'\\ud83d\\uddc4',\n 'file_folder':'\\ud83d\\udcc1',\n 'film_projector':'\\ud83d\\udcfd',\n 'film_strip':'\\ud83c\\udf9e',\n 'fire':'\\ud83d\\udd25',\n 'fire_engine':'\\ud83d\\ude92',\n 'fireworks':'\\ud83c\\udf86',\n 'first_quarter_moon':'\\ud83c\\udf13',\n 'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n 'fish':'\\ud83d\\udc1f',\n 'fish_cake':'\\ud83c\\udf65',\n 'fishing_pole_and_fish':'\\ud83c\\udfa3',\n 'fist_raised':'\\u270a',\n 'fist_left':'\\ud83e\\udd1b',\n 'fist_right':'\\ud83e\\udd1c',\n 'flags':'\\ud83c\\udf8f',\n 'flashlight':'\\ud83d\\udd26',\n 'fleur_de_lis':'\\u269c\\ufe0f',\n 'flight_arrival':'\\ud83d\\udeec',\n 'flight_departure':'\\ud83d\\udeeb',\n 'floppy_disk':'\\ud83d\\udcbe',\n 'flower_playing_cards':'\\ud83c\\udfb4',\n 'flushed':'\\ud83d\\ude33',\n 'fog':'\\ud83c\\udf2b',\n 'foggy':'\\ud83c\\udf01',\n 'football':'\\ud83c\\udfc8',\n 'footprints':'\\ud83d\\udc63',\n 'fork_and_knife':'\\ud83c\\udf74',\n 'fountain':'\\u26f2\\ufe0f',\n 'fountain_pen':'\\ud83d\\udd8b',\n 'four_leaf_clover':'\\ud83c\\udf40',\n 'fox_face':'\\ud83e\\udd8a',\n 'framed_picture':'\\ud83d\\uddbc',\n 'free':'\\ud83c\\udd93',\n 'fried_egg':'\\ud83c\\udf73',\n 'fried_shrimp':'\\ud83c\\udf64',\n 'fries':'\\ud83c\\udf5f',\n 'frog':'\\ud83d\\udc38',\n 'frowning':'\\ud83d\\ude26',\n 'frowning_face':'\\u2639\\ufe0f',\n 'frowning_man':'\\ud83d\\ude4d&zwj;\\u2642\\ufe0f',\n 'frowning_woman':'\\ud83d\\ude4d',\n 'middle_finger':'\\ud83d\\udd95',\n 'fuelpump':'\\u26fd\\ufe0f',\n 'full_moon':'\\ud83c\\udf15',\n 'full_moon_with_face':'\\ud83c\\udf1d',\n 'funeral_urn':'\\u26b1\\ufe0f',\n 'game_die':'\\ud83c\\udfb2',\n 'gear':'\\u2699\\ufe0f',\n 'gem':'\\ud83d\\udc8e',\n 'gemini':'\\u264a\\ufe0f',\n 'ghost':'\\ud83d\\udc7b',\n 'gift':'\\ud83c\\udf81',\n 'gift_heart':'\\ud83d\\udc9d',\n 'girl':'\\ud83d\\udc67',\n 'globe_with_meridians':'\\ud83c\\udf10',\n 'goal_net':'\\ud83e\\udd45',\n 'goat':'\\ud83d\\udc10',\n 'golf':'\\u26f3\\ufe0f',\n 'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n 'golfing_woman':'\\ud83c\\udfcc\\ufe0f&zwj;\\u2640\\ufe0f',\n 'gorilla':'\\ud83e\\udd8d',\n 'grapes':'\\ud83c\\udf47',\n 'green_apple':'\\ud83c\\udf4f',\n 'green_book':'\\ud83d\\udcd7',\n 'green_heart':'\\ud83d\\udc9a',\n 'green_salad':'\\ud83e\\udd57',\n 'grey_exclamation':'\\u2755',\n 'grey_question':'\\u2754',\n 'grimacing':'\\ud83d\\ude2c',\n 'grin':'\\ud83d\\ude01',\n 'grinning':'\\ud83d\\ude00',\n 'guardsman':'\\ud83d\\udc82',\n 'guardswoman':'\\ud83d\\udc82&zwj;\\u2640\\ufe0f',\n 'guitar':'\\ud83c\\udfb8',\n 'gun':'\\ud83d\\udd2b',\n 'haircut_woman':'\\ud83d\\udc87',\n 'haircut_man':'\\ud83d\\udc87&zwj;\\u2642\\ufe0f',\n 'hamburger':'\\ud83c\\udf54',\n 'hammer':'\\ud83d\\udd28',\n 'hammer_and_pick':'\\u2692',\n 'hammer_and_wrench':'\\ud83d\\udee0',\n 'hamster':'\\ud83d\\udc39',\n 'hand':'\\u270b',\n 'handbag':'\\ud83d\\udc5c',\n 'handshake':'\\ud83e\\udd1d',\n 'hankey':'\\ud83d\\udca9',\n 'hatched_chick':'\\ud83d\\udc25',\n 'hatching_chick':'\\ud83d\\udc23',\n 'headphones':'\\ud83c\\udfa7',\n 'hear_no_evil':'\\ud83d\\ude49',\n 'heart':'\\u2764\\ufe0f',\n 'heart_decoration':'\\ud83d\\udc9f',\n 'heart_eyes':'\\ud83d\\ude0d',\n 'heart_eyes_cat':'\\ud83d\\ude3b',\n 'heartbeat':'\\ud83d\\udc93',\n 'heartpulse':'\\ud83d\\udc97',\n 'hearts':'\\u2665\\ufe0f',\n 'heavy_check_mark':'\\u2714\\ufe0f',\n 'heavy_division_sign':'\\u2797',\n 'heavy_dollar_sign':'\\ud83d\\udcb2',\n 'heavy_heart_exclamation':'\\u2763\\ufe0f',\n 'heavy_minus_sign':'\\u2796',\n 'heavy_multiplication_x':'\\u2716\\ufe0f',\n 'heavy_plus_sign':'\\u2795',\n 'helicopter':'\\ud83d\\ude81',\n 'herb':'\\ud83c\\udf3f',\n 'hibiscus':'\\ud83c\\udf3a',\n 'high_brightness':'\\ud83d\\udd06',\n 'high_heel':'\\ud83d\\udc60',\n 'hocho':'\\ud83d\\udd2a',\n 'hole':'\\ud83d\\udd73',\n 'honey_pot':'\\ud83c\\udf6f',\n 'horse':'\\ud83d\\udc34',\n 'horse_racing':'\\ud83c\\udfc7',\n 'hospital':'\\ud83c\\udfe5',\n 'hot_pepper':'\\ud83c\\udf36',\n 'hotdog':'\\ud83c\\udf2d',\n 'hotel':'\\ud83c\\udfe8',\n 'hotsprings':'\\u2668\\ufe0f',\n 'hourglass':'\\u231b\\ufe0f',\n 'hourglass_flowing_sand':'\\u23f3',\n 'house':'\\ud83c\\udfe0',\n 'house_with_garden':'\\ud83c\\udfe1',\n 'houses':'\\ud83c\\udfd8',\n 'hugs':'\\ud83e\\udd17',\n 'hushed':'\\ud83d\\ude2f',\n 'ice_cream':'\\ud83c\\udf68',\n 'ice_hockey':'\\ud83c\\udfd2',\n 'ice_skate':'\\u26f8',\n 'icecream':'\\ud83c\\udf66',\n 'id':'\\ud83c\\udd94',\n 'ideograph_advantage':'\\ud83c\\ude50',\n 'imp':'\\ud83d\\udc7f',\n 'inbox_tray':'\\ud83d\\udce5',\n 'incoming_envelope':'\\ud83d\\udce8',\n 'tipping_hand_woman':'\\ud83d\\udc81',\n 'information_source':'\\u2139\\ufe0f',\n 'innocent':'\\ud83d\\ude07',\n 'interrobang':'\\u2049\\ufe0f',\n 'iphone':'\\ud83d\\udcf1',\n 'izakaya_lantern':'\\ud83c\\udfee',\n 'jack_o_lantern':'\\ud83c\\udf83',\n 'japan':'\\ud83d\\uddfe',\n 'japanese_castle':'\\ud83c\\udfef',\n 'japanese_goblin':'\\ud83d\\udc7a',\n 'japanese_ogre':'\\ud83d\\udc79',\n 'jeans':'\\ud83d\\udc56',\n 'joy':'\\ud83d\\ude02',\n 'joy_cat':'\\ud83d\\ude39',\n 'joystick':'\\ud83d\\udd79',\n 'kaaba':'\\ud83d\\udd4b',\n 'key':'\\ud83d\\udd11',\n 'keyboard':'\\u2328\\ufe0f',\n 'keycap_ten':'\\ud83d\\udd1f',\n 'kick_scooter':'\\ud83d\\udef4',\n 'kimono':'\\ud83d\\udc58',\n 'kiss':'\\ud83d\\udc8b',\n 'kissing':'\\ud83d\\ude17',\n 'kissing_cat':'\\ud83d\\ude3d',\n 'kissing_closed_eyes':'\\ud83d\\ude1a',\n 'kissing_heart':'\\ud83d\\ude18',\n 'kissing_smiling_eyes':'\\ud83d\\ude19',\n 'kiwi_fruit':'\\ud83e\\udd5d',\n 'koala':'\\ud83d\\udc28',\n 'koko':'\\ud83c\\ude01',\n 'label':'\\ud83c\\udff7',\n 'large_blue_circle':'\\ud83d\\udd35',\n 'large_blue_diamond':'\\ud83d\\udd37',\n 'large_orange_diamond':'\\ud83d\\udd36',\n 'last_quarter_moon':'\\ud83c\\udf17',\n 'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n 'latin_cross':'\\u271d\\ufe0f',\n 'laughing':'\\ud83d\\ude06',\n 'leaves':'\\ud83c\\udf43',\n 'ledger':'\\ud83d\\udcd2',\n 'left_luggage':'\\ud83d\\udec5',\n 'left_right_arrow':'\\u2194\\ufe0f',\n 'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n 'lemon':'\\ud83c\\udf4b',\n 'leo':'\\u264c\\ufe0f',\n 'leopard':'\\ud83d\\udc06',\n 'level_slider':'\\ud83c\\udf9a',\n 'libra':'\\u264e\\ufe0f',\n 'light_rail':'\\ud83d\\ude88',\n 'link':'\\ud83d\\udd17',\n 'lion':'\\ud83e\\udd81',\n 'lips':'\\ud83d\\udc44',\n 'lipstick':'\\ud83d\\udc84',\n 'lizard':'\\ud83e\\udd8e',\n 'lock':'\\ud83d\\udd12',\n 'lock_with_ink_pen':'\\ud83d\\udd0f',\n 'lollipop':'\\ud83c\\udf6d',\n 'loop':'\\u27bf',\n 'loud_sound':'\\ud83d\\udd0a',\n 'loudspeaker':'\\ud83d\\udce2',\n 'love_hotel':'\\ud83c\\udfe9',\n 'love_letter':'\\ud83d\\udc8c',\n 'low_brightness':'\\ud83d\\udd05',\n 'lying_face':'\\ud83e\\udd25',\n 'm':'\\u24c2\\ufe0f',\n 'mag':'\\ud83d\\udd0d',\n 'mag_right':'\\ud83d\\udd0e',\n 'mahjong':'\\ud83c\\udc04\\ufe0f',\n 'mailbox':'\\ud83d\\udceb',\n 'mailbox_closed':'\\ud83d\\udcea',\n 'mailbox_with_mail':'\\ud83d\\udcec',\n 'mailbox_with_no_mail':'\\ud83d\\udced',\n 'man':'\\ud83d\\udc68',\n 'man_artist':'\\ud83d\\udc68&zwj;\\ud83c\\udfa8',\n 'man_astronaut':'\\ud83d\\udc68&zwj;\\ud83d\\ude80',\n 'man_cartwheeling':'\\ud83e\\udd38&zwj;\\u2642\\ufe0f',\n 'man_cook':'\\ud83d\\udc68&zwj;\\ud83c\\udf73',\n 'man_dancing':'\\ud83d\\udd7a',\n 'man_facepalming':'\\ud83e\\udd26&zwj;\\u2642\\ufe0f',\n 'man_factory_worker':'\\ud83d\\udc68&zwj;\\ud83c\\udfed',\n 'man_farmer':'\\ud83d\\udc68&zwj;\\ud83c\\udf3e',\n 'man_firefighter':'\\ud83d\\udc68&zwj;\\ud83d\\ude92',\n 'man_health_worker':'\\ud83d\\udc68&zwj;\\u2695\\ufe0f',\n 'man_in_tuxedo':'\\ud83e\\udd35',\n 'man_judge':'\\ud83d\\udc68&zwj;\\u2696\\ufe0f',\n 'man_juggling':'\\ud83e\\udd39&zwj;\\u2642\\ufe0f',\n 'man_mechanic':'\\ud83d\\udc68&zwj;\\ud83d\\udd27',\n 'man_office_worker':'\\ud83d\\udc68&zwj;\\ud83d\\udcbc',\n 'man_pilot':'\\ud83d\\udc68&zwj;\\u2708\\ufe0f',\n 'man_playing_handball':'\\ud83e\\udd3e&zwj;\\u2642\\ufe0f',\n 'man_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2642\\ufe0f',\n 'man_scientist':'\\ud83d\\udc68&zwj;\\ud83d\\udd2c',\n 'man_shrugging':'\\ud83e\\udd37&zwj;\\u2642\\ufe0f',\n 'man_singer':'\\ud83d\\udc68&zwj;\\ud83c\\udfa4',\n 'man_student':'\\ud83d\\udc68&zwj;\\ud83c\\udf93',\n 'man_teacher':'\\ud83d\\udc68&zwj;\\ud83c\\udfeb',\n 'man_technologist':'\\ud83d\\udc68&zwj;\\ud83d\\udcbb',\n 'man_with_gua_pi_mao':'\\ud83d\\udc72',\n 'man_with_turban':'\\ud83d\\udc73',\n 'tangerine':'\\ud83c\\udf4a',\n 'mans_shoe':'\\ud83d\\udc5e',\n 'mantelpiece_clock':'\\ud83d\\udd70',\n 'maple_leaf':'\\ud83c\\udf41',\n 'martial_arts_uniform':'\\ud83e\\udd4b',\n 'mask':'\\ud83d\\ude37',\n 'massage_woman':'\\ud83d\\udc86',\n 'massage_man':'\\ud83d\\udc86&zwj;\\u2642\\ufe0f',\n 'meat_on_bone':'\\ud83c\\udf56',\n 'medal_military':'\\ud83c\\udf96',\n 'medal_sports':'\\ud83c\\udfc5',\n 'mega':'\\ud83d\\udce3',\n 'melon':'\\ud83c\\udf48',\n 'memo':'\\ud83d\\udcdd',\n 'men_wrestling':'\\ud83e\\udd3c&zwj;\\u2642\\ufe0f',\n 'menorah':'\\ud83d\\udd4e',\n 'mens':'\\ud83d\\udeb9',\n 'metal':'\\ud83e\\udd18',\n 'metro':'\\ud83d\\ude87',\n 'microphone':'\\ud83c\\udfa4',\n 'microscope':'\\ud83d\\udd2c',\n 'milk_glass':'\\ud83e\\udd5b',\n 'milky_way':'\\ud83c\\udf0c',\n 'minibus':'\\ud83d\\ude90',\n 'minidisc':'\\ud83d\\udcbd',\n 'mobile_phone_off':'\\ud83d\\udcf4',\n 'money_mouth_face':'\\ud83e\\udd11',\n 'money_with_wings':'\\ud83d\\udcb8',\n 'moneybag':'\\ud83d\\udcb0',\n 'monkey':'\\ud83d\\udc12',\n 'monkey_face':'\\ud83d\\udc35',\n 'monorail':'\\ud83d\\ude9d',\n 'moon':'\\ud83c\\udf14',\n 'mortar_board':'\\ud83c\\udf93',\n 'mosque':'\\ud83d\\udd4c',\n 'motor_boat':'\\ud83d\\udee5',\n 'motor_scooter':'\\ud83d\\udef5',\n 'motorcycle':'\\ud83c\\udfcd',\n 'motorway':'\\ud83d\\udee3',\n 'mount_fuji':'\\ud83d\\uddfb',\n 'mountain':'\\u26f0',\n 'mountain_biking_man':'\\ud83d\\udeb5',\n 'mountain_biking_woman':'\\ud83d\\udeb5&zwj;\\u2640\\ufe0f',\n 'mountain_cableway':'\\ud83d\\udea0',\n 'mountain_railway':'\\ud83d\\ude9e',\n 'mountain_snow':'\\ud83c\\udfd4',\n 'mouse':'\\ud83d\\udc2d',\n 'mouse2':'\\ud83d\\udc01',\n 'movie_camera':'\\ud83c\\udfa5',\n 'moyai':'\\ud83d\\uddff',\n 'mrs_claus':'\\ud83e\\udd36',\n 'muscle':'\\ud83d\\udcaa',\n 'mushroom':'\\ud83c\\udf44',\n 'musical_keyboard':'\\ud83c\\udfb9',\n 'musical_note':'\\ud83c\\udfb5',\n 'musical_score':'\\ud83c\\udfbc',\n 'mute':'\\ud83d\\udd07',\n 'nail_care':'\\ud83d\\udc85',\n 'name_badge':'\\ud83d\\udcdb',\n 'national_park':'\\ud83c\\udfde',\n 'nauseated_face':'\\ud83e\\udd22',\n 'necktie':'\\ud83d\\udc54',\n 'negative_squared_cross_mark':'\\u274e',\n 'nerd_face':'\\ud83e\\udd13',\n 'neutral_face':'\\ud83d\\ude10',\n 'new':'\\ud83c\\udd95',\n 'new_moon':'\\ud83c\\udf11',\n 'new_moon_with_face':'\\ud83c\\udf1a',\n 'newspaper':'\\ud83d\\udcf0',\n 'newspaper_roll':'\\ud83d\\uddde',\n 'next_track_button':'\\u23ed',\n 'ng':'\\ud83c\\udd96',\n 'no_good_man':'\\ud83d\\ude45&zwj;\\u2642\\ufe0f',\n 'no_good_woman':'\\ud83d\\ude45',\n 'night_with_stars':'\\ud83c\\udf03',\n 'no_bell':'\\ud83d\\udd15',\n 'no_bicycles':'\\ud83d\\udeb3',\n 'no_entry':'\\u26d4\\ufe0f',\n 'no_entry_sign':'\\ud83d\\udeab',\n 'no_mobile_phones':'\\ud83d\\udcf5',\n 'no_mouth':'\\ud83d\\ude36',\n 'no_pedestrians':'\\ud83d\\udeb7',\n 'no_smoking':'\\ud83d\\udead',\n 'non-potable_water':'\\ud83d\\udeb1',\n 'nose':'\\ud83d\\udc43',\n 'notebook':'\\ud83d\\udcd3',\n 'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n 'notes':'\\ud83c\\udfb6',\n 'nut_and_bolt':'\\ud83d\\udd29',\n 'o':'\\u2b55\\ufe0f',\n 'o2':'\\ud83c\\udd7e\\ufe0f',\n 'ocean':'\\ud83c\\udf0a',\n 'octopus':'\\ud83d\\udc19',\n 'oden':'\\ud83c\\udf62',\n 'office':'\\ud83c\\udfe2',\n 'oil_drum':'\\ud83d\\udee2',\n 'ok':'\\ud83c\\udd97',\n 'ok_hand':'\\ud83d\\udc4c',\n 'ok_man':'\\ud83d\\ude46&zwj;\\u2642\\ufe0f',\n 'ok_woman':'\\ud83d\\ude46',\n 'old_key':'\\ud83d\\udddd',\n 'older_man':'\\ud83d\\udc74',\n 'older_woman':'\\ud83d\\udc75',\n 'om':'\\ud83d\\udd49',\n 'on':'\\ud83d\\udd1b',\n 'oncoming_automobile':'\\ud83d\\ude98',\n 'oncoming_bus':'\\ud83d\\ude8d',\n 'oncoming_police_car':'\\ud83d\\ude94',\n 'oncoming_taxi':'\\ud83d\\ude96',\n 'open_file_folder':'\\ud83d\\udcc2',\n 'open_hands':'\\ud83d\\udc50',\n 'open_mouth':'\\ud83d\\ude2e',\n 'open_umbrella':'\\u2602\\ufe0f',\n 'ophiuchus':'\\u26ce',\n 'orange_book':'\\ud83d\\udcd9',\n 'orthodox_cross':'\\u2626\\ufe0f',\n 'outbox_tray':'\\ud83d\\udce4',\n 'owl':'\\ud83e\\udd89',\n 'ox':'\\ud83d\\udc02',\n 'package':'\\ud83d\\udce6',\n 'page_facing_up':'\\ud83d\\udcc4',\n 'page_with_curl':'\\ud83d\\udcc3',\n 'pager':'\\ud83d\\udcdf',\n 'paintbrush':'\\ud83d\\udd8c',\n 'palm_tree':'\\ud83c\\udf34',\n 'pancakes':'\\ud83e\\udd5e',\n 'panda_face':'\\ud83d\\udc3c',\n 'paperclip':'\\ud83d\\udcce',\n 'paperclips':'\\ud83d\\udd87',\n 'parasol_on_ground':'\\u26f1',\n 'parking':'\\ud83c\\udd7f\\ufe0f',\n 'part_alternation_mark':'\\u303d\\ufe0f',\n 'partly_sunny':'\\u26c5\\ufe0f',\n 'passenger_ship':'\\ud83d\\udef3',\n 'passport_control':'\\ud83d\\udec2',\n 'pause_button':'\\u23f8',\n 'peace_symbol':'\\u262e\\ufe0f',\n 'peach':'\\ud83c\\udf51',\n 'peanuts':'\\ud83e\\udd5c',\n 'pear':'\\ud83c\\udf50',\n 'pen':'\\ud83d\\udd8a',\n 'pencil2':'\\u270f\\ufe0f',\n 'penguin':'\\ud83d\\udc27',\n 'pensive':'\\ud83d\\ude14',\n 'performing_arts':'\\ud83c\\udfad',\n 'persevere':'\\ud83d\\ude23',\n 'person_fencing':'\\ud83e\\udd3a',\n 'pouting_woman':'\\ud83d\\ude4e',\n 'phone':'\\u260e\\ufe0f',\n 'pick':'\\u26cf',\n 'pig':'\\ud83d\\udc37',\n 'pig2':'\\ud83d\\udc16',\n 'pig_nose':'\\ud83d\\udc3d',\n 'pill':'\\ud83d\\udc8a',\n 'pineapple':'\\ud83c\\udf4d',\n 'ping_pong':'\\ud83c\\udfd3',\n 'pisces':'\\u2653\\ufe0f',\n 'pizza':'\\ud83c\\udf55',\n 'place_of_worship':'\\ud83d\\uded0',\n 'plate_with_cutlery':'\\ud83c\\udf7d',\n 'play_or_pause_button':'\\u23ef',\n 'point_down':'\\ud83d\\udc47',\n 'point_left':'\\ud83d\\udc48',\n 'point_right':'\\ud83d\\udc49',\n 'point_up':'\\u261d\\ufe0f',\n 'point_up_2':'\\ud83d\\udc46',\n 'police_car':'\\ud83d\\ude93',\n 'policewoman':'\\ud83d\\udc6e&zwj;\\u2640\\ufe0f',\n 'poodle':'\\ud83d\\udc29',\n 'popcorn':'\\ud83c\\udf7f',\n 'post_office':'\\ud83c\\udfe3',\n 'postal_horn':'\\ud83d\\udcef',\n 'postbox':'\\ud83d\\udcee',\n 'potable_water':'\\ud83d\\udeb0',\n 'potato':'\\ud83e\\udd54',\n 'pouch':'\\ud83d\\udc5d',\n 'poultry_leg':'\\ud83c\\udf57',\n 'pound':'\\ud83d\\udcb7',\n 'rage':'\\ud83d\\ude21',\n 'pouting_cat':'\\ud83d\\ude3e',\n 'pouting_man':'\\ud83d\\ude4e&zwj;\\u2642\\ufe0f',\n 'pray':'\\ud83d\\ude4f',\n 'prayer_beads':'\\ud83d\\udcff',\n 'pregnant_woman':'\\ud83e\\udd30',\n 'previous_track_button':'\\u23ee',\n 'prince':'\\ud83e\\udd34',\n 'princess':'\\ud83d\\udc78',\n 'printer':'\\ud83d\\udda8',\n 'purple_heart':'\\ud83d\\udc9c',\n 'purse':'\\ud83d\\udc5b',\n 'pushpin':'\\ud83d\\udccc',\n 'put_litter_in_its_place':'\\ud83d\\udeae',\n 'question':'\\u2753',\n 'rabbit':'\\ud83d\\udc30',\n 'rabbit2':'\\ud83d\\udc07',\n 'racehorse':'\\ud83d\\udc0e',\n 'racing_car':'\\ud83c\\udfce',\n 'radio':'\\ud83d\\udcfb',\n 'radio_button':'\\ud83d\\udd18',\n 'radioactive':'\\u2622\\ufe0f',\n 'railway_car':'\\ud83d\\ude83',\n 'railway_track':'\\ud83d\\udee4',\n 'rainbow':'\\ud83c\\udf08',\n 'rainbow_flag':'\\ud83c\\udff3\\ufe0f&zwj;\\ud83c\\udf08',\n 'raised_back_of_hand':'\\ud83e\\udd1a',\n 'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n 'raised_hands':'\\ud83d\\ude4c',\n 'raising_hand_woman':'\\ud83d\\ude4b',\n 'raising_hand_man':'\\ud83d\\ude4b&zwj;\\u2642\\ufe0f',\n 'ram':'\\ud83d\\udc0f',\n 'ramen':'\\ud83c\\udf5c',\n 'rat':'\\ud83d\\udc00',\n 'record_button':'\\u23fa',\n 'recycle':'\\u267b\\ufe0f',\n 'red_circle':'\\ud83d\\udd34',\n 'registered':'\\u00ae\\ufe0f',\n 'relaxed':'\\u263a\\ufe0f',\n 'relieved':'\\ud83d\\ude0c',\n 'reminder_ribbon':'\\ud83c\\udf97',\n 'repeat':'\\ud83d\\udd01',\n 'repeat_one':'\\ud83d\\udd02',\n 'rescue_worker_helmet':'\\u26d1',\n 'restroom':'\\ud83d\\udebb',\n 'revolving_hearts':'\\ud83d\\udc9e',\n 'rewind':'\\u23ea',\n 'rhinoceros':'\\ud83e\\udd8f',\n 'ribbon':'\\ud83c\\udf80',\n 'rice':'\\ud83c\\udf5a',\n 'rice_ball':'\\ud83c\\udf59',\n 'rice_cracker':'\\ud83c\\udf58',\n 'rice_scene':'\\ud83c\\udf91',\n 'right_anger_bubble':'\\ud83d\\uddef',\n 'ring':'\\ud83d\\udc8d',\n 'robot':'\\ud83e\\udd16',\n 'rocket':'\\ud83d\\ude80',\n 'rofl':'\\ud83e\\udd23',\n 'roll_eyes':'\\ud83d\\ude44',\n 'roller_coaster':'\\ud83c\\udfa2',\n 'rooster':'\\ud83d\\udc13',\n 'rose':'\\ud83c\\udf39',\n 'rosette':'\\ud83c\\udff5',\n 'rotating_light':'\\ud83d\\udea8',\n 'round_pushpin':'\\ud83d\\udccd',\n 'rowing_man':'\\ud83d\\udea3',\n 'rowing_woman':'\\ud83d\\udea3&zwj;\\u2640\\ufe0f',\n 'rugby_football':'\\ud83c\\udfc9',\n 'running_man':'\\ud83c\\udfc3',\n 'running_shirt_with_sash':'\\ud83c\\udfbd',\n 'running_woman':'\\ud83c\\udfc3&zwj;\\u2640\\ufe0f',\n 'sa':'\\ud83c\\ude02\\ufe0f',\n 'sagittarius':'\\u2650\\ufe0f',\n 'sake':'\\ud83c\\udf76',\n 'sandal':'\\ud83d\\udc61',\n 'santa':'\\ud83c\\udf85',\n 'satellite':'\\ud83d\\udce1',\n 'saxophone':'\\ud83c\\udfb7',\n 'school':'\\ud83c\\udfeb',\n 'school_satchel':'\\ud83c\\udf92',\n 'scissors':'\\u2702\\ufe0f',\n 'scorpion':'\\ud83e\\udd82',\n 'scorpius':'\\u264f\\ufe0f',\n 'scream':'\\ud83d\\ude31',\n 'scream_cat':'\\ud83d\\ude40',\n 'scroll':'\\ud83d\\udcdc',\n 'seat':'\\ud83d\\udcba',\n 'secret':'\\u3299\\ufe0f',\n 'see_no_evil':'\\ud83d\\ude48',\n 'seedling':'\\ud83c\\udf31',\n 'selfie':'\\ud83e\\udd33',\n 'shallow_pan_of_food':'\\ud83e\\udd58',\n 'shamrock':'\\u2618\\ufe0f',\n 'shark':'\\ud83e\\udd88',\n 'shaved_ice':'\\ud83c\\udf67',\n 'sheep':'\\ud83d\\udc11',\n 'shell':'\\ud83d\\udc1a',\n 'shield':'\\ud83d\\udee1',\n 'shinto_shrine':'\\u26e9',\n 'ship':'\\ud83d\\udea2',\n 'shirt':'\\ud83d\\udc55',\n 'shopping':'\\ud83d\\udecd',\n 'shopping_cart':'\\ud83d\\uded2',\n 'shower':'\\ud83d\\udebf',\n 'shrimp':'\\ud83e\\udd90',\n 'signal_strength':'\\ud83d\\udcf6',\n 'six_pointed_star':'\\ud83d\\udd2f',\n 'ski':'\\ud83c\\udfbf',\n 'skier':'\\u26f7',\n 'skull':'\\ud83d\\udc80',\n 'skull_and_crossbones':'\\u2620\\ufe0f',\n 'sleeping':'\\ud83d\\ude34',\n 'sleeping_bed':'\\ud83d\\udecc',\n 'sleepy':'\\ud83d\\ude2a',\n 'slightly_frowning_face':'\\ud83d\\ude41',\n 'slightly_smiling_face':'\\ud83d\\ude42',\n 'slot_machine':'\\ud83c\\udfb0',\n 'small_airplane':'\\ud83d\\udee9',\n 'small_blue_diamond':'\\ud83d\\udd39',\n 'small_orange_diamond':'\\ud83d\\udd38',\n 'small_red_triangle':'\\ud83d\\udd3a',\n 'small_red_triangle_down':'\\ud83d\\udd3b',\n 'smile':'\\ud83d\\ude04',\n 'smile_cat':'\\ud83d\\ude38',\n 'smiley':'\\ud83d\\ude03',\n 'smiley_cat':'\\ud83d\\ude3a',\n 'smiling_imp':'\\ud83d\\ude08',\n 'smirk':'\\ud83d\\ude0f',\n 'smirk_cat':'\\ud83d\\ude3c',\n 'smoking':'\\ud83d\\udeac',\n 'snail':'\\ud83d\\udc0c',\n 'snake':'\\ud83d\\udc0d',\n 'sneezing_face':'\\ud83e\\udd27',\n 'snowboarder':'\\ud83c\\udfc2',\n 'snowflake':'\\u2744\\ufe0f',\n 'snowman':'\\u26c4\\ufe0f',\n 'snowman_with_snow':'\\u2603\\ufe0f',\n 'sob':'\\ud83d\\ude2d',\n 'soccer':'\\u26bd\\ufe0f',\n 'soon':'\\ud83d\\udd1c',\n 'sos':'\\ud83c\\udd98',\n 'sound':'\\ud83d\\udd09',\n 'space_invader':'\\ud83d\\udc7e',\n 'spades':'\\u2660\\ufe0f',\n 'spaghetti':'\\ud83c\\udf5d',\n 'sparkle':'\\u2747\\ufe0f',\n 'sparkler':'\\ud83c\\udf87',\n 'sparkles':'\\u2728',\n 'sparkling_heart':'\\ud83d\\udc96',\n 'speak_no_evil':'\\ud83d\\ude4a',\n 'speaker':'\\ud83d\\udd08',\n 'speaking_head':'\\ud83d\\udde3',\n 'speech_balloon':'\\ud83d\\udcac',\n 'speedboat':'\\ud83d\\udea4',\n 'spider':'\\ud83d\\udd77',\n 'spider_web':'\\ud83d\\udd78',\n 'spiral_calendar':'\\ud83d\\uddd3',\n 'spiral_notepad':'\\ud83d\\uddd2',\n 'spoon':'\\ud83e\\udd44',\n 'squid':'\\ud83e\\udd91',\n 'stadium':'\\ud83c\\udfdf',\n 'star':'\\u2b50\\ufe0f',\n 'star2':'\\ud83c\\udf1f',\n 'star_and_crescent':'\\u262a\\ufe0f',\n 'star_of_david':'\\u2721\\ufe0f',\n 'stars':'\\ud83c\\udf20',\n 'station':'\\ud83d\\ude89',\n 'statue_of_liberty':'\\ud83d\\uddfd',\n 'steam_locomotive':'\\ud83d\\ude82',\n 'stew':'\\ud83c\\udf72',\n 'stop_button':'\\u23f9',\n 'stop_sign':'\\ud83d\\uded1',\n 'stopwatch':'\\u23f1',\n 'straight_ruler':'\\ud83d\\udccf',\n 'strawberry':'\\ud83c\\udf53',\n 'stuck_out_tongue':'\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n 'studio_microphone':'\\ud83c\\udf99',\n 'stuffed_flatbread':'\\ud83e\\udd59',\n 'sun_behind_large_cloud':'\\ud83c\\udf25',\n 'sun_behind_rain_cloud':'\\ud83c\\udf26',\n 'sun_behind_small_cloud':'\\ud83c\\udf24',\n 'sun_with_face':'\\ud83c\\udf1e',\n 'sunflower':'\\ud83c\\udf3b',\n 'sunglasses':'\\ud83d\\ude0e',\n 'sunny':'\\u2600\\ufe0f',\n 'sunrise':'\\ud83c\\udf05',\n 'sunrise_over_mountains':'\\ud83c\\udf04',\n 'surfing_man':'\\ud83c\\udfc4',\n 'surfing_woman':'\\ud83c\\udfc4&zwj;\\u2640\\ufe0f',\n 'sushi':'\\ud83c\\udf63',\n 'suspension_railway':'\\ud83d\\ude9f',\n 'sweat':'\\ud83d\\ude13',\n 'sweat_drops':'\\ud83d\\udca6',\n 'sweat_smile':'\\ud83d\\ude05',\n 'sweet_potato':'\\ud83c\\udf60',\n 'swimming_man':'\\ud83c\\udfca',\n 'swimming_woman':'\\ud83c\\udfca&zwj;\\u2640\\ufe0f',\n 'symbols':'\\ud83d\\udd23',\n 'synagogue':'\\ud83d\\udd4d',\n 'syringe':'\\ud83d\\udc89',\n 'taco':'\\ud83c\\udf2e',\n 'tada':'\\ud83c\\udf89',\n 'tanabata_tree':'\\ud83c\\udf8b',\n 'taurus':'\\u2649\\ufe0f',\n 'taxi':'\\ud83d\\ude95',\n 'tea':'\\ud83c\\udf75',\n 'telephone_receiver':'\\ud83d\\udcde',\n 'telescope':'\\ud83d\\udd2d',\n 'tennis':'\\ud83c\\udfbe',\n 'tent':'\\u26fa\\ufe0f',\n 'thermometer':'\\ud83c\\udf21',\n 'thinking':'\\ud83e\\udd14',\n 'thought_balloon':'\\ud83d\\udcad',\n 'ticket':'\\ud83c\\udfab',\n 'tickets':'\\ud83c\\udf9f',\n 'tiger':'\\ud83d\\udc2f',\n 'tiger2':'\\ud83d\\udc05',\n 'timer_clock':'\\u23f2',\n 'tipping_hand_man':'\\ud83d\\udc81&zwj;\\u2642\\ufe0f',\n 'tired_face':'\\ud83d\\ude2b',\n 'tm':'\\u2122\\ufe0f',\n 'toilet':'\\ud83d\\udebd',\n 'tokyo_tower':'\\ud83d\\uddfc',\n 'tomato':'\\ud83c\\udf45',\n 'tongue':'\\ud83d\\udc45',\n 'top':'\\ud83d\\udd1d',\n 'tophat':'\\ud83c\\udfa9',\n 'tornado':'\\ud83c\\udf2a',\n 'trackball':'\\ud83d\\uddb2',\n 'tractor':'\\ud83d\\ude9c',\n 'traffic_light':'\\ud83d\\udea5',\n 'train':'\\ud83d\\ude8b',\n 'train2':'\\ud83d\\ude86',\n 'tram':'\\ud83d\\ude8a',\n 'triangular_flag_on_post':'\\ud83d\\udea9',\n 'triangular_ruler':'\\ud83d\\udcd0',\n 'trident':'\\ud83d\\udd31',\n 'triumph':'\\ud83d\\ude24',\n 'trolleybus':'\\ud83d\\ude8e',\n 'trophy':'\\ud83c\\udfc6',\n 'tropical_drink':'\\ud83c\\udf79',\n 'tropical_fish':'\\ud83d\\udc20',\n 'truck':'\\ud83d\\ude9a',\n 'trumpet':'\\ud83c\\udfba',\n 'tulip':'\\ud83c\\udf37',\n 'tumbler_glass':'\\ud83e\\udd43',\n 'turkey':'\\ud83e\\udd83',\n 'turtle':'\\ud83d\\udc22',\n 'tv':'\\ud83d\\udcfa',\n 'twisted_rightwards_arrows':'\\ud83d\\udd00',\n 'two_hearts':'\\ud83d\\udc95',\n 'two_men_holding_hands':'\\ud83d\\udc6c',\n 'two_women_holding_hands':'\\ud83d\\udc6d',\n 'u5272':'\\ud83c\\ude39',\n 'u5408':'\\ud83c\\ude34',\n 'u55b6':'\\ud83c\\ude3a',\n 'u6307':'\\ud83c\\ude2f\\ufe0f',\n 'u6708':'\\ud83c\\ude37\\ufe0f',\n 'u6709':'\\ud83c\\ude36',\n 'u6e80':'\\ud83c\\ude35',\n 'u7121':'\\ud83c\\ude1a\\ufe0f',\n 'u7533':'\\ud83c\\ude38',\n 'u7981':'\\ud83c\\ude32',\n 'u7a7a':'\\ud83c\\ude33',\n 'umbrella':'\\u2614\\ufe0f',\n 'unamused':'\\ud83d\\ude12',\n 'underage':'\\ud83d\\udd1e',\n 'unicorn':'\\ud83e\\udd84',\n 'unlock':'\\ud83d\\udd13',\n 'up':'\\ud83c\\udd99',\n 'upside_down_face':'\\ud83d\\ude43',\n 'v':'\\u270c\\ufe0f',\n 'vertical_traffic_light':'\\ud83d\\udea6',\n 'vhs':'\\ud83d\\udcfc',\n 'vibration_mode':'\\ud83d\\udcf3',\n 'video_camera':'\\ud83d\\udcf9',\n 'video_game':'\\ud83c\\udfae',\n 'violin':'\\ud83c\\udfbb',\n 'virgo':'\\u264d\\ufe0f',\n 'volcano':'\\ud83c\\udf0b',\n 'volleyball':'\\ud83c\\udfd0',\n 'vs':'\\ud83c\\udd9a',\n 'vulcan_salute':'\\ud83d\\udd96',\n 'walking_man':'\\ud83d\\udeb6',\n 'walking_woman':'\\ud83d\\udeb6&zwj;\\u2640\\ufe0f',\n 'waning_crescent_moon':'\\ud83c\\udf18',\n 'waning_gibbous_moon':'\\ud83c\\udf16',\n 'warning':'\\u26a0\\ufe0f',\n 'wastebasket':'\\ud83d\\uddd1',\n 'watch':'\\u231a\\ufe0f',\n 'water_buffalo':'\\ud83d\\udc03',\n 'watermelon':'\\ud83c\\udf49',\n 'wave':'\\ud83d\\udc4b',\n 'wavy_dash':'\\u3030\\ufe0f',\n 'waxing_crescent_moon':'\\ud83c\\udf12',\n 'wc':'\\ud83d\\udebe',\n 'weary':'\\ud83d\\ude29',\n 'wedding':'\\ud83d\\udc92',\n 'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f&zwj;\\u2640\\ufe0f',\n 'whale':'\\ud83d\\udc33',\n 'whale2':'\\ud83d\\udc0b',\n 'wheel_of_dharma':'\\u2638\\ufe0f',\n 'wheelchair':'\\u267f\\ufe0f',\n 'white_check_mark':'\\u2705',\n 'white_circle':'\\u26aa\\ufe0f',\n 'white_flag':'\\ud83c\\udff3\\ufe0f',\n 'white_flower':'\\ud83d\\udcae',\n 'white_large_square':'\\u2b1c\\ufe0f',\n 'white_medium_small_square':'\\u25fd\\ufe0f',\n 'white_medium_square':'\\u25fb\\ufe0f',\n 'white_small_square':'\\u25ab\\ufe0f',\n 'white_square_button':'\\ud83d\\udd33',\n 'wilted_flower':'\\ud83e\\udd40',\n 'wind_chime':'\\ud83c\\udf90',\n 'wind_face':'\\ud83c\\udf2c',\n 'wine_glass':'\\ud83c\\udf77',\n 'wink':'\\ud83d\\ude09',\n 'wolf':'\\ud83d\\udc3a',\n 'woman':'\\ud83d\\udc69',\n 'woman_artist':'\\ud83d\\udc69&zwj;\\ud83c\\udfa8',\n 'woman_astronaut':'\\ud83d\\udc69&zwj;\\ud83d\\ude80',\n 'woman_cartwheeling':'\\ud83e\\udd38&zwj;\\u2640\\ufe0f',\n 'woman_cook':'\\ud83d\\udc69&zwj;\\ud83c\\udf73',\n 'woman_facepalming':'\\ud83e\\udd26&zwj;\\u2640\\ufe0f',\n 'woman_factory_worker':'\\ud83d\\udc69&zwj;\\ud83c\\udfed',\n 'woman_farmer':'\\ud83d\\udc69&zwj;\\ud83c\\udf3e',\n 'woman_firefighter':'\\ud83d\\udc69&zwj;\\ud83d\\ude92',\n 'woman_health_worker':'\\ud83d\\udc69&zwj;\\u2695\\ufe0f',\n 'woman_judge':'\\ud83d\\udc69&zwj;\\u2696\\ufe0f',\n 'woman_juggling':'\\ud83e\\udd39&zwj;\\u2640\\ufe0f',\n 'woman_mechanic':'\\ud83d\\udc69&zwj;\\ud83d\\udd27',\n 'woman_office_worker':'\\ud83d\\udc69&zwj;\\ud83d\\udcbc',\n 'woman_pilot':'\\ud83d\\udc69&zwj;\\u2708\\ufe0f',\n 'woman_playing_handball':'\\ud83e\\udd3e&zwj;\\u2640\\ufe0f',\n 'woman_playing_water_polo':'\\ud83e\\udd3d&zwj;\\u2640\\ufe0f',\n 'woman_scientist':'\\ud83d\\udc69&zwj;\\ud83d\\udd2c',\n 'woman_shrugging':'\\ud83e\\udd37&zwj;\\u2640\\ufe0f',\n 'woman_singer':'\\ud83d\\udc69&zwj;\\ud83c\\udfa4',\n 'woman_student':'\\ud83d\\udc69&zwj;\\ud83c\\udf93',\n 'woman_teacher':'\\ud83d\\udc69&zwj;\\ud83c\\udfeb',\n 'woman_technologist':'\\ud83d\\udc69&zwj;\\ud83d\\udcbb',\n 'woman_with_turban':'\\ud83d\\udc73&zwj;\\u2640\\ufe0f',\n 'womans_clothes':'\\ud83d\\udc5a',\n 'womans_hat':'\\ud83d\\udc52',\n 'women_wrestling':'\\ud83e\\udd3c&zwj;\\u2640\\ufe0f',\n 'womens':'\\ud83d\\udeba',\n 'world_map':'\\ud83d\\uddfa',\n 'worried':'\\ud83d\\ude1f',\n 'wrench':'\\ud83d\\udd27',\n 'writing_hand':'\\u270d\\ufe0f',\n 'x':'\\u274c',\n 'yellow_heart':'\\ud83d\\udc9b',\n 'yen':'\\ud83d\\udcb4',\n 'yin_yang':'\\u262f\\ufe0f',\n 'yum':'\\ud83d\\ude0b',\n 'zap':'\\u26a1\\ufe0f',\n 'zipper_mouth_face':'\\ud83e\\udd10',\n 'zzz':'\\ud83d\\udca4',\n\n /* special emojis :P */\n 'octocat': '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n 'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n\r\n/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor () {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension (ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading (ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen (name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText (text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch (evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, '&nbsp;');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: <em>this is</em> <strong>sparta</strong>\n src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean (node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags (doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions.splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++ii) {\n if (outputModifiers[ii] === ext) {\n outputModifiers.splice(ii, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n};\n\r\n/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '<a href=\"' + url + '\"';\n\n if (title !== '' && title !== null) {\n title = title.replace(/\"/g, '&quot;');\n //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n // escaped _\n result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n\n result += '>' + linkText + '</a>';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n\r\n// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n replaceLink = function (options) {\n 'use strict';\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n };\n },\n\n replaceMail = function (options, globals) {\n 'use strict';\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '<a href=\"' + href + '\">' + mail + '</a>';\n };\n };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n // <p> tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n});\n\r\nshowdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with <pre> content, so we need to fix that:\n bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n var pre = m1;\n // attacklab: hack around Konqueror 3.5.4 bug:\n pre = pre.replace(/^ /mg, '¨0');\n pre = pre.replace(/¨0/g, '');\n return pre;\n });\n\n return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n text = text.replace(pattern, function (wholeMatch, m1, m2) {\n var codeblock = m1,\n nextChar = m2,\n end = '\\n';\n\n codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n if (options.omitExtraWLInCodeBlocks) {\n end = '';\n }\n\n codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n});\n\r\n/**\n *\n * * Backtick quotes are used for <code></code> spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof (text) === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '<code>' + c + '</code>';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n }\n );\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '<!DOCTYPE HTML>\\n',\n title = '',\n charset = '<meta charset=\"utf-8\">\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"utf-8\">';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '<title>' + globals.metadata.parsed.title + '</title>\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n } else {\n charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n break;\n\n default:\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n }\n }\n }\n\n text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n if (!options.ellipsis) {\n return text;\n }\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&amp;');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '&lt;');\n\n // Encode <\n text = text.replace(/</g, '&lt;');\n\n // Encode >\n text = text.replace(/>/g, '&gt;');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&amp;')\n // Do the angle bracket song and dance:\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n\r\nshowdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked <code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n\r\nshowdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '&lt;' + inside + '&gt;';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '</' + blockTags[i] + '>';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}<!--', '-->', 'gm');\n\n // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan (html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n // encode html entities\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n };\n\n // Hash <pre><code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId (m) {\n var title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&amp;/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&amp;/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '&quot;')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n if (title && showdown.helper.isString(title)) {\n title = title\n .replace(/\"/g, '&quot;')\n //title = showdown.helper.escapeCharacters(title, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n if (width && height) {\n width = (width === '*') ? 'auto' : width;\n height = (height === '*') ? 'auto' : height;\n\n result += ' width=\"' + width + '\"';\n result += ' height=\"' + height + '\"';\n }\n\n result += ' />';\n\n return result;\n }\n\n // First, handle reference-style labeled images: ![alt text][id]\n text = text.replace(referenceRegExp, writeImageTag);\n\n // Next, handle inline images: ![alt text](url =<width>x<height> \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside (txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong><em>', '</em></strong>');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong>', '</strong>');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside (txt, '<em>', '</em>');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n // Now parse asterisks\n if (options.literalMidWordAsterisks) {\n text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong><em>', '</em></strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong>', '</strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<em>', '</em>');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n 'use strict';\n\n /**\n * Process the contents of a single ordered or unordered list, splitting it\n * into individual list items.\n * @param {string} listStr\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function processListItems (listStr, trimTrailing) {\n // The $g_list_level global keeps track of when we're inside a list.\n // Each time we enter a list, we increment it; when we leave a list,\n // we decrement. If it's zero, we're not in a list anymore.\n //\n // We do this because when we're not inside a list, we want to treat\n // something like this:\n //\n // I recommend upgrading to version\n // 8. Oops, now this line is treated\n // as a sub-list.\n //\n // As a single paragraph, despite the fact that the second line starts\n // with a digit-period-space sequence.\n //\n // Whereas when we're inside a list (or sub-list), that line will be\n // treated as the start of a sub-list. What a kludge, huh? This is\n // an aspect of Markdown's syntax that's hard to parse perfectly\n // without resorting to mind-reading. Perhaps the solution is to\n // change the syntax rules such that sub-lists must start with a\n // starting cardinal number; e.g. \"1.\" or \"a.\".\n globals.gListLevel++;\n\n // trim trailing blank lines:\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n // attacklab: add sentinel to emulate \\z\n listStr += '¨0';\n\n var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n // which is a syntax breaking change\n // activating this option reverts to old behavior\n if (options.disableForced4SpacesIndentedSublists) {\n rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n }\n\n listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n checked = (checked && checked.trim() !== '');\n\n var item = showdown.subParser('outdent')(m4, options, globals),\n bulletStyle = '';\n\n // Support for github tasklists\n if (taskbtn && options.tasklists) {\n bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n if (checked) {\n otp += ' checked';\n }\n otp += '>';\n return otp;\n });\n }\n\n // ISSUE #312\n // This input: - - - a\n // causes trouble to the parser, since it interprets it as:\n // <ul><li><li><li>a</li></li></li></ul>\n // instead of:\n // <ul><li>- - a</li></ul>\n // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n return '¨A' + wm2;\n });\n\n // m1 - Leading line or\n // Has a double return (multi paragraph) or\n // Has sublist\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\n item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n item = showdown.subParser('blockGamut')(item, options, globals);\n } else {\n // Recursion for sub-lists:\n item = showdown.subParser('lists')(item, options, globals);\n item = item.replace(/\\n$/, ''); // chomp(item)\n item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n // Colapse double linebreaks\n item = item.replace(/\\n\\n+/g, '\\n\\n');\n if (isParagraphed) {\n item = showdown.subParser('paragraphs')(item, options, globals);\n } else {\n item = showdown.subParser('spanGamut')(item, options, globals);\n }\n }\n\n // now we need to remove the marker (¨A)\n item = item.replace('¨A', '');\n // we can finally wrap the line in list item tags\n item = '<li' + bulletStyle + '>' + item + '</li>\\n';\n\n return item;\n });\n\n // attacklab: strip sentinel\n listStr = listStr.replace(/¨0/g, '');\n\n globals.gListLevel--;\n\n if (trimTrailing) {\n listStr = listStr.replace(/\\s+$/, '');\n }\n\n return listStr;\n }\n\n function styleStartNumber (list, listType) {\n // check if ol and starts by a number different than 1\n if (listType === 'ol') {\n var res = list.match(/^ *(\\d+)\\./);\n if (res && res[1] !== '1') {\n return ' start=\"' + res[1] + '\"';\n }\n }\n return '';\n }\n\n /**\n * Check and parse consecutive lists (better fix for issue #142)\n * @param {string} list\n * @param {string} listType\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function parseConsecutiveLists (list, listType, trimTrailing) {\n // check if we caught 2 or more consecutive lists by mistake\n // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n result = '';\n\n if (list.search(counterRxg) !== -1) {\n (function parseCL (txt) {\n var pos = txt.search(counterRxg),\n style = styleStartNumber(list, listType);\n if (pos !== -1) {\n // slice\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n';\n\n // invert counterType and listType\n listType = (listType === 'ul') ? 'ol' : 'ul';\n counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n //recurse\n parseCL(txt.slice(pos));\n } else {\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n';\n }\n\n return result;\n }\n\n /** Start of list parsing **/\n text = globals.converter._dispatch('lists.before', text, options, globals);\n // add sentinel to hack around khtml/safari bug:\n // http://bugs.webkit.org/show_bug.cgi?id=11231\n text += '¨0';\n\n if (globals.gListLevel) {\n text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, list, m2) {\n var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, true);\n }\n );\n } else {\n text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, m1, list, m3) {\n var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, false);\n }\n );\n }\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n text = globals.converter._dispatch('lists.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n 'use strict';\n\n if (!options.metadata) {\n return text;\n }\n\n text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n function parseMetadataContents (content) {\n // raw is raw so it's not changed in any way\n globals.metadata.raw = content;\n\n // escape chars forbidden in html attributes\n // double quotes\n content = content\n // ampersand first\n .replace(/&/g, '&amp;')\n // double quotes\n .replace(/\"/g, '&quot;');\n\n content = content.replace(/\\n {4}/g, ' ');\n content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n globals.metadata.parsed[key] = value;\n return '';\n });\n }\n\n text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n if (format) {\n globals.metadata.format = format;\n }\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/¨M/g, '');\n\n text = globals.converter._dispatch('metadata.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n // attacklab: clean up hack\n text = text.replace(/¨0/g, '');\n\n text = globals.converter._dispatch('outdent.after', text, options, globals);\n return text;\n});\n\r\n/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n\n var grafs = text.split(/\\n{2,}/g),\n grafsOut = [],\n end = grafs.length; // Wrap <p> tags\n\n for (var i = 0; i < end; i++) {\n var str = grafs[i];\n // if this is an HTML marker, copy it\n if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n grafsOut.push(str);\n\n // test for presence of characters to prevent empty lines being parsed\n // as paragraphs (resulting in undesired extra empty paragraphs)\n } else if (str.search(/\\S/) >= 0) {\n str = showdown.subParser('spanGamut')(str, options, globals);\n str = str.replace(/^([ \\t]*)/g, '<p>');\n str += '</p>';\n grafsOut.push(str);\n }\n }\n\n /** Unhashify HTML blocks */\n end = grafsOut.length;\n for (i = 0; i < end; i++) {\n var blockText = '',\n grafsOutIt = grafsOut[i],\n codeFlag = false;\n // if this is a marker for an html block...\n // use RegExp.test instead of string.search because of QML bug\n while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n var delim = RegExp.$1,\n num = RegExp.$2;\n\n if (delim === 'K') {\n blockText = globals.gHtmlBlocks[num];\n } else {\n // we need to check if ghBlock is a false positive\n if (codeFlag) {\n // use encoded version of all text\n blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n } else {\n blockText = globals.ghCodeBlocks[num].codeblock;\n }\n }\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n // Check if grafsOutIt is a pre->code\n if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n codeFlag = true;\n }\n }\n grafsOut[i] = grafsOutIt;\n }\n text = grafsOut.join('\\n');\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n\r\n/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n 'use strict';\n\n if (ext.filter) {\n text = ext.filter(text, globals.converter, options);\n\n } else if (ext.regex) {\n // TODO remove this when old extension loading mechanism is deprecated\n var re = ext.regex;\n if (!(re instanceof RegExp)) {\n re = new RegExp(re, 'g');\n }\n text = text.replace(re, ext.replace);\n }\n\n return text;\n});\n\r\n/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n text = showdown.subParser('codeSpans')(text, options, globals);\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n // Process anchor and image tags. Images must come first,\n // because ![foo][f] looks like an anchor.\n text = showdown.subParser('images')(text, options, globals);\n text = showdown.subParser('anchors')(text, options, globals);\n\n // Make links out of things like `<http://example.com/>`\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this](<url>).\n text = showdown.subParser('autoLinks')(text, options, globals);\n text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n text = showdown.subParser('emoji')(text, options, globals);\n text = showdown.subParser('underline')(text, options, globals);\n text = showdown.subParser('italicsAndBold')(text, options, globals);\n text = showdown.subParser('strikethrough')(text, options, globals);\n text = showdown.subParser('ellipsis')(text, options, globals);\n\n // we need to hash HTML tags inside spans\n text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n // now we encode amps and angles\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n // Do hard breaks\n if (options.simpleLineBreaks) {\n // GFM style hard breaks\n // only add line breaks if the text does not contain a block (special case for lists)\n if (!/\\n\\n¨K/.test(text)) {\n text = text.replace(/\\n+/g, '<br />\\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '<br />\\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('strikethrough', function (text, options, globals) {\n 'use strict';\n\n function parseInside (txt) {\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n return '<del>' + txt + '</del>';\n }\n\n if (options.strikethrough) {\n text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n }\n\n return text;\n});\n\r\n/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?([^>\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n base64Regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n\n // if there aren't two instances of linkId it must not be a reference link so back out\n linkId = linkId.toLowerCase();\n if (text.toLowerCase().split(linkId).length - 1 < 2) {\n return wholeMatch;\n }\n if (url.match(/^data:.+?\\/.+?;base64,/)) {\n // remove newlines\n globals.gUrls[linkId] = url.replace(/\\s/g, '');\n } else {\n globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive\n }\n\n if (blankLines) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return blankLines + title;\n\n } else {\n if (title) {\n globals.gTitles[linkId] = title.replace(/\"|'/g, '&quot;');\n }\n if (options.parseImgDimensions && width && height) {\n globals.gDimensions[linkId] = {\n width: width,\n height: height\n };\n }\n }\n // Completely remove the definition from the text\n return '';\n };\n\n // first we try to find base64 link references\n text = text.replace(base64Regex, replaceFunc);\n\n text = text.replace(regex, replaceFunc);\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return text;\n});\n\r\nshowdown.subParser('tables', function (text, options, globals) {\n 'use strict';\n\n if (!options.tables) {\n return text;\n }\n\n var tableRgx = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n function parseStyles (sLine) {\n if (/^:[ \\t]*--*$/.test(sLine)) {\n return ' style=\"text-align:left;\"';\n } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n return ' style=\"text-align:right;\"';\n } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n return ' style=\"text-align:center;\"';\n } else {\n return '';\n }\n }\n\n function parseHeaders (header, style) {\n var id = '';\n header = header.trim();\n // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n if (options.tablesHeaderId || options.tableHeaderId) {\n id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n }\n header = showdown.subParser('spanGamut')(header, options, globals);\n\n return '<th' + id + style + '>' + header + '</th>\\n';\n }\n\n function parseCells (cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '<td' + style + '>' + subText + '</td>\\n';\n }\n\n function buildTable (headers, cells) {\n var tb = '<table>\\n<thead>\\n<tr>\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '<tr>\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '</tr>\\n';\n }\n tb += '</tbody>\\n</table>\\n';\n return tb;\n }\n\n function parseTable (rawTable) {\n var i, tableLines = rawTable.split('\\n');\n\n for (i = 0; i < tableLines.length; ++i) {\n // strip wrong first and last column if wrapped tables are used\n if (/^ {0,3}\\|/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n }\n if (/\\|[ \\t]*$/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n }\n // parse code spans first, but we only support one line code spans\n tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n }\n\n var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n rawCells = [],\n headers = [],\n styles = [],\n cells = [];\n\n tableLines.shift();\n tableLines.shift();\n\n for (i = 0; i < tableLines.length; ++i) {\n if (tableLines[i].trim() === '') {\n continue;\n }\n rawCells.push(\n tableLines[i]\n .split('|')\n .map(function (s) {\n return s.trim();\n })\n );\n }\n\n if (rawHeaders.length < rawStyles.length) {\n return rawTable;\n }\n\n for (i = 0; i < rawStyles.length; ++i) {\n styles.push(parseStyles(rawStyles[i]));\n }\n\n for (i = 0; i < rawHeaders.length; ++i) {\n if (showdown.helper.isUndefined(styles[i])) {\n styles[i] = '';\n }\n headers.push(parseHeaders(rawHeaders[i], styles[i]));\n }\n\n for (i = 0; i < rawCells.length; ++i) {\n var row = [];\n for (var ii = 0; ii < headers.length; ++ii) {\n if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n }\n row.push(parseCells(rawCells[i][ii], styles[ii]));\n }\n cells.push(row);\n }\n\n return buildTable(headers, cells);\n }\n\n text = globals.converter._dispatch('tables.before', text, options, globals);\n\n // find escaped pipe characters\n text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n // parse multi column tables\n text = text.replace(tableRgx, parseTable);\n\n // parse one column tables\n text = text.replace(singeColTblRgx, parseTable);\n\n text = globals.converter._dispatch('tables.after', text, options, globals);\n\n return text;\n});\n\r\nshowdown.subParser('underline', function (text, options, globals) {\n 'use strict';\n\n if (!options.underline) {\n return text;\n }\n\n text = globals.converter._dispatch('underline.before', text, options, globals);\n\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n }\n\n // escape remaining underscores to prevent them being parsed by italic and bold\n text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('underline.after', text, options, globals);\n\n return text;\n});\n\r\n/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n var charCodeToReplace = parseInt(m1);\n return String.fromCharCode(charCodeToReplace);\n });\n\n text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n return text;\n});\n\r\nshowdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n if (innerTxt === '') {\n continue;\n }\n txt += innerTxt;\n }\n }\n // cleanup\n txt = txt.trim();\n txt = '> ' + txt.split('\\n').join('\\n> ');\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n 'use strict';\n\n var lang = node.getAttribute('language'),\n num = node.getAttribute('precodenum');\n return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n\r\nshowdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n});\n\r\nshowdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '*';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '*';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n 'use strict';\n\n var headerMark = new Array(headerLevel + 1).join('#'),\n txt = '';\n\n if (node.hasChildNodes()) {\n txt = headerMark + ' ';\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n});\n\r\nshowdown.subParser('makeMarkdown.image', function (node) {\n 'use strict';\n\n var txt = '';\n if (node.hasAttribute('src')) {\n txt += '![' + node.getAttribute('alt') + '](';\n txt += '<' + node.getAttribute('src') + '>';\n if (node.hasAttribute('width') && node.hasAttribute('height')) {\n txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n }\n\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.links', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes() && node.hasAttribute('href')) {\n var children = node.childNodes,\n childrenLength = children.length;\n txt = '[';\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '](';\n txt += '<' + node.getAttribute('href') + '>';\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.list', function (node, globals, type) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var listItems = node.childNodes,\n listItemsLenght = listItems.length,\n listNum = node.getAttribute('start') || 1;\n\n for (var i = 0; i < listItemsLenght; ++i) {\n if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n continue;\n }\n\n // define the bullet to use in list\n var bullet = '';\n if (type === 'ol') {\n bullet = listNum.toString() + '. ';\n } else {\n bullet = '- ';\n }\n\n // parse list item\n txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n ++listNum;\n }\n\n // add comment at the end to prevent consecutive lists to be parsed as one\n txt += '\\n<!-- -->\\n';\n return txt.trim();\n});\n\r\nshowdown.subParser('makeMarkdown.listItem', function (node, globals) {\n 'use strict';\n\n var listItemTxt = '';\n\n var children = node.childNodes,\n childrenLenght = children.length;\n\n for (var i = 0; i < childrenLenght; ++i) {\n listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n // if it's only one liner, we need to add a newline at the end\n if (!/\\n$/.test(listItemTxt)) {\n listItemTxt += '\\n';\n } else {\n // it's multiparagraph, so we need to indent\n listItemTxt = listItemTxt\n .split('\\n')\n .join('\\n ')\n .replace(/^ {4}$/gm, '')\n .replace(/\\n\\n+/g, '\\n\\n');\n }\n\n return listItemTxt;\n});\n\r\n\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n 'use strict';\n\n spansOnly = spansOnly || false;\n\n var txt = '';\n\n // edge case of text without wrapper paragraph\n if (node.nodeType === 3) {\n return showdown.subParser('makeMarkdown.txt')(node, globals);\n }\n\n // HTML comment\n if (node.nodeType === 8) {\n return '<!--' + node.data + '-->\\n\\n';\n }\n\n // process only node elements\n if (node.nodeType !== 1) {\n return '';\n }\n\n var tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n\n //\n // BLOCKS\n //\n case 'h1':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n break;\n case 'h2':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n break;\n case 'h3':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n break;\n case 'h4':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n break;\n case 'h5':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n break;\n case 'h6':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n break;\n\n case 'p':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n break;\n\n case 'blockquote':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n break;\n\n case 'hr':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n break;\n\n case 'ol':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n break;\n\n case 'ul':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n break;\n\n case 'precode':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n break;\n\n case 'pre':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n break;\n\n case 'table':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n break;\n\n //\n // SPANS\n //\n case 'code':\n txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n break;\n\n case 'em':\n case 'i':\n txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n break;\n\n case 'strong':\n case 'b':\n txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n break;\n\n case 'del':\n txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n break;\n\n case 'a':\n txt = showdown.subParser('makeMarkdown.links')(node, globals);\n break;\n\n case 'img':\n txt = showdown.subParser('makeMarkdown.image')(node, globals);\n break;\n\n default:\n txt = node.outerHTML + '\\n\\n';\n }\n\n // common normalization\n // TODO eventually\n\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n\n // some text normalization\n txt = txt.trim();\n\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '<pre>' + globals.preList[num] + '</pre>';\n});\n\r\nshowdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '~~';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '~~';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.strong', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '**';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '**';\n }\n return txt;\n});\n\r\nshowdown.subParser('makeMarkdown.table', function (node, globals) {\n 'use strict';\n\n var txt = '',\n tableArray = [[], []],\n headings = node.querySelectorAll('thead>tr>th'),\n rows = node.querySelectorAll('tbody>tr'),\n i, ii;\n for (i = 0; i < headings.length; ++i) {\n var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n allign = '---';\n\n if (headings[i].hasAttribute('style')) {\n var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n switch (style) {\n case 'text-align:left;':\n allign = ':---';\n break;\n case 'text-align:right;':\n allign = '---:';\n break;\n case 'text-align:center;':\n allign = ':---:';\n break;\n }\n }\n tableArray[0][i] = headContent.trim();\n tableArray[1][i] = allign;\n }\n\n for (i = 0; i < rows.length; ++i) {\n var r = tableArray.push([]) - 1,\n cols = rows[i].getElementsByTagName('td');\n\n for (ii = 0; ii < headings.length; ++ii) {\n var cellContent = ' ';\n if (typeof cols[ii] !== 'undefined') {\n cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n }\n tableArray[r].push(cellContent);\n }\n }\n\n var cellSpacesCount = 3;\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n var strLen = tableArray[i][ii].length;\n if (strLen > cellSpacesCount) {\n cellSpacesCount = strLen;\n }\n }\n }\n\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n if (i === 1) {\n if (tableArray[i][ii].slice(-1) === ':') {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n }\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n }\n }\n txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n }\n\n return txt.trim();\n});\n\r\nshowdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n }\n return txt.trim();\n});\n\r\nshowdown.subParser('makeMarkdown.txt', function (node) {\n 'use strict';\n\n var txt = node.nodeValue;\n\n // multiple spaces are collapsed\n txt = txt.replace(/ +/g, ' ');\n\n // replace the custom ¨NBSP; with a space\n txt = txt.replace(/¨NBSP;/g, ' ');\n\n // \", <, > and & should replace escaped html entities\n txt = showdown.helper.unescapeHTMLEntities(txt);\n\n // escape markdown magic characters\n // emphasis, strong and strikethrough - can appear everywhere\n // we also escape pipe (|) because of tables\n // and escape ` because of code blocks and spans\n txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n // escape > because of blockquotes\n txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n // hash character, only troublesome at the beginning of a line because of headers\n txt = txt.replace(/^#/gm, '\\\\#');\n\n // horizontal rules\n txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n // images and links, ] followed by ( is problematic, so we escape it\n txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n // reference URIs must also be escaped\n txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n return txt;\n});\n\r\nvar root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n define(function () {\n 'use strict';\n return showdown;\n });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n module.exports = showdown;\n\n// Regular Browser loader\n} else {\n root.showdown = showdown;\n}\n}).call(this);\r\n\n//# sourceMappingURL=showdown.js.map\r\n","export const mentioningRegex = /@(\\d*|channel|editors):\\((.*?)\\)/;\nexport const extraMentioning = [\"channel\", \"editors\"];\n","import showdown from \"showdown\";\nimport { extraMentioning, mentioningRegex } from \"./mentioningUtils\";\n\nconst mentioningRegexCaseInsensitive = new RegExp(mentioningRegex, \"i\");\nconst mentioningRegexGroupCaseInsensitive = new RegExp(mentioningRegex, \"gi\");\n\nlet converter;\nconst customRules = {\n color: {\n type: \"lang\",\n regex: /\\((.*?)\\)\\[(rgb\\((?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]))\\))\\]/gi,\n replace: (s, val) => {\n const color = s\n .match(\n /\\[(rgb\\((?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]), ?)(?:([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5]))\\))\\]/gi\n )[0]\n .replace(\"[\", \"\")\n .replace(\"]\", \"\");\n return `<span style=\"color:${color}\">${val}</span>`;\n },\n },\n mention: {\n type: \"lang\",\n regex: mentioningRegexGroupCaseInsensitive,\n replace: (s) => {\n const r = s.match(mentioningRegexCaseInsensitive);\n const id = r && r.length > 1 && r[1];\n const name = r && r.length > 2 && r[2];\n if (\n extraMentioning.find(\n (mentioning) => mentioning.toLowerCase() === String(id).toLowerCase()\n )\n ) {\n return `<a class=\"mention extraMention\" data-user-id=\"${id}\">@${name}</a>`;\n }\n return `<a class=\"mention\" data-user-id=\"${id}\">@${name}</a>`;\n },\n },\n userMentioTag: {\n type: \"lang\",\n regex: /<user-mentio[^>]*>(.+?)<\\/user-mentio>/gi,\n replace: (s) => {\n const r = s.match(/<user-mentio[^>]*>(.+?)<\\/user-mentio>/);\n const attr = s.match(/data-user-id=[\"']([^\"]+)[\"']/);\n const name = r && r.length > 1 && r[1];\n const id = attr && attr.length > 1 && attr[1];\n return `<a class=\"mention\" data-user-id=\"${id}\">${name}</a>`;\n },\n },\n};\n\nfunction getConverter() {\n if (converter) return converter;\n\n showdown.extension(\"color\", customRules.color);\n showdown.extension(\"mention\", customRules.mention);\n showdown.extension(\"usermentiotag\", customRules.userMentioTag);\n\n converter = new showdown.Converter({\n extensions: [\"color\", \"mention\", \"usermentiotag\"],\n });\n converter.setOption(\"strikethrough\", true); // <del>\n converter.setOption(\"tables\", true); // <table>\n converter.setOption(\"openLinksInNewWindow\", true);\n converter.setOption(\"disableForced4SpacesIndentedSublists\", true);\n\n return converter;\n}\n\nexport default getConverter();\n","import xss from \"xss\";\nimport linkifyHtml from \"linkify-html\";\nimport { decode as decodeHtmlEntities } from \"html-entities\";\n// @ts-ignore no types available\nimport { fixEmojioneBug, shortToUnicode } from \"@happeouikit/emojis\";\nimport { MONOSPACE_FONT_URL, safeTagsAndAttributes } from \"./constants\";\nimport htmlConverter from \"./htmlConverter\";\nimport { extraMentioning, mentioningRegex } from \"./mentioningUtils\";\n\nconst mentioningRegexGroupCaseInsensitive = new RegExp(mentioningRegex, \"gi\");\nconst mentioningHtmlRegexGroupCaseInsensitive = new RegExp(\n /<user-mentio[^>]*data-user-id=[\"']([^\"]+)[\"'][^>]*>(?:@|(?:&#64;))(.+?)<\\/user-mentio>/,\n \"gi\"\n);\n\nconst processMatch = (_: any, id: string, name: string): string => {\n if (\n extraMentioning.find(\n (mentioning) => mentioning.toLowerCase() === String(id).toLowerCase()\n )\n ) {\n return `<a class=\"mention extraMention\" data-user-id=\"${id}\">@${name}</a>`;\n }\n return `<a class=\"mention\" data-user-id=\"${id}\">@${name}</a>`;\n};\n\nconst processMentions = (str = \"\") =>\n str\n .replace(mentioningRegexGroupCaseInsensitive, processMatch)\n .replace(mentioningHtmlRegexGroupCaseInsensitive, processMatch);\n\n/**\n * @name toSafeText\n * @description Returns filtered text with filterXSS library\n * @author Antero Hanhirova\n * @param {String} - Text to whitelist\n * @returns {String}\n */\nconst toSafeText = (text = \"\") => {\n return xss(text, {\n whiteList: safeTagsAndAttributes,\n css: {\n whiteList: {\n // @ts-ignore method not found\n ...xss.getDefaultCSSWhiteList(),\n \"vertical-align\": true,\n },\n },\n stripIgnoreTag: true,\n })\n .replace(/&nbsp;/g, \" \")\n .replace(/\\u2060/g, \"\"); // Replaces a hidden character that resulted in a \"?\"-character in backend\n};\n\n/**\n * Adds spans with `color-block` class after color codes hex, rgb and rgba\n */\nconst addColorSpanAfterColorCodes = (text = \"\") => {\n const colorRegex = /#(?:[0-9a-fA-F]{3}){1,2}|\\brgb\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*\\)|\\brgba\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d*(?:\\.\\d+)?\\s*\\)/gi;\n return text.replace(\n colorRegex,\n (match) =>\n `${match}<span class=\"color-block\" style=\"background-color: ${match};\"></span>`\n );\n};\n\nconst addLinksToText = (text = \"\") => {\n try {\n return linkifyHtml(text, {\n target: \"_blank\",\n ignoreTags: [\"pre\", \"code\", \"script\", \"style\"],\n render: ({ tagName, attributes, content }) => {\n let newContent = content;\n if (newContent.length > 85) {\n // Truncate long urls from the middle\n const start = newContent.slice(0, 40);\n const end = newContent.slice(-40);\n newContent = `${start}[...]${end}`;\n }\n const attrs = Object.keys(attributes).reduce((acc, key) => {\n const attr = attributes[key];\n return `${acc} ${key}=\"${attr}\"`;\n });\n return `<${tagName} ${attrs}>${newContent}</${tagName}>`;\n },\n validate: {\n url(value: string) {\n return /^(http|ftp)s?:\\/\\//.test(value);\n },\n },\n });\n } catch (error) {\n return text;\n }\n};\n\n/**\n * @name toHtml\n * @description Converts markdown to html, adds space to end of String\n * The non-breaking space helps users to add text if last word is mention item\n * @author Antero Hanhirova\n * @param {String} - Markdown\n * @returns {String} - Html\n */\n\nconst toHtml = (str = \"\", type = \"html\") => {\n let newString = shortToUnicode(str);\n\n newString = fixEmojioneBug(newString);\n\n if (type === \"markdown\") {\n newString = htmlConverter.makeHtml(newString);\n } else {\n newString = processMentions(newString);\n }\n\n // Decoding is required for linkify to work\n newString = decodeHtmlEntities(newString);\n newString = addLinksToText(newString);\n return newString;\n};\n\nconst loadCodeFont = () => {\n const id = \"ibmMonoOnDemand\";\n if (!document.getElementById(id)) {\n const style = document.createElement(\"style\");\n style.id = id;\n style.appendChild(\n document.createTextNode(`@import url(${MONOSPACE_FONT_URL});`)\n );\n document.head.appendChild(style);\n }\n};\n\nconst getNearestRelativeParent = (el: HTMLElement): HTMLElement | null => {\n if (!el) {\n return null;\n }\n const elStyle = el.style || window.getComputedStyle(el, \"\");\n const positionStyle = elStyle.position;\n if ([\"relative\", \"absolute\"].includes(positionStyle)) {\n return el;\n }\n return getNearestRelativeParent(el.parentNode as HTMLElement);\n};\n\n// Remove special and hidden characters from string\nconst removeSpecialCharacters = (str = \"\") =>\n // eslint-disable-next-line no-control-regex\n str.replace(/[^\\u0000-\\u007E]/g, \"\");\n\nconst replacePTagsInCodeBlocks = (html = \"\") => {\n // Regex to match <pre> and <code> blocks with optional attributes\n const regex = /<pre\\b[^>]*>\\s*<code\\b[^>]*>([\\s\\S]*?)<\\/code>\\s*<\\/pre>/g;\n\n const replacedHtml = html.replace(regex, (match) => {\n return match\n .replace(/<\\/p>\\s*<p>/g, \"\\n\") // Replace </p><p> with a newline\n .replace(/<p>/g, \"\") // Remove opening <p> tags\n .replace(/<\\/p>/g, \"\"); // Remove closing </p> tags\n });\n\n // Encode content to prevent XSS\n const encodedCodeBlocks = replacedHtml.replace(regex, (match) => {\n return xss(match, {\n whiteList: {\n pre: [],\n code: [],\n },\n });\n });\n\n return encodedCodeBlocks;\n};\n\nexport {\n toHtml,\n toSafeText,\n loadCodeFont,\n decodeHtmlEntities,\n getNearestRelativeParent,\n removeSpecialCharacters,\n addColorSpanAfterColorCodes,\n replacePTagsInCodeBlocks,\n};\n","/**\n *\n * ContentRenderer\n *\n */\n// @ts-ignore React not used\nimport React, {\n useRef,\n useEffect,\n useState,\n useCallback,\n useMemo,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport styled, { css } from \"styled-components\";\nimport loadjs from \"loadjs\";\nimport { CopyToClipboardButton } from \"@happeouikit/copy-to-clipboard-button\";\nimport { BodyUI, sansFamily } from \"@happeouikit/typography\";\nimport { media } from \"@happeouikit/layout\";\nimport {\n toHtml,\n loadCodeFont,\n decodeHtmlEntities,\n removeSpecialCharacters,\n toSafeText,\n addColorSpanAfterColorCodes,\n replacePTagsInCodeBlocks,\n} from \"./utils\";\nimport {\n ELEMENT_TYPE_PRE,\n ELEMENT_TYPE_CODE,\n HIGHLIGHJS_CSS,\n HIGHLIGHJS_JS,\n CODE_BLOCK_AVAILABLE_LANGUAGES,\n} from \"./constants\";\nimport { ContentRendererProps } from \"./ContentRenderer.types\";\n\n// highlight.js\ndeclare global {\n interface Window {\n hljs: any;\n }\n}\n\nconst ContentRenderer = ({\n content,\n type,\n widgetType = \"post\",\n createAnchors,\n useHashAutoscroll,\n hashAutoscrollTopMargin = 0,\n forceDefaultLinkTarget,\n inheritBrandingStyles = false,\n addColorBlocks = false,\n}: ContentRendererProps) => {\n const element = useRef<HTMLDivElement>(null);\n const [copyBtns, setCopyBtns] = useState<Element[]>([]);\n\n // Autoscroll to hashes\n const scrollAndHighlightHash = useCallback(() => {\n try {\n const { hash } = window.location;\n if (element.current && hash) {\n const hashEl = element.current?.querySelector(hash);\n if (hashEl) {\n setTimeout(() => {\n window.scrollTo({\n top: hashEl.getBoundingClientRect().top - hashAutoscrollTopMargin,\n behavior: \"smooth\",\n });\n hashEl.classList.add(\"highlight\");\n setTimeout(() => {\n hashEl.classList.remove(\"highlight\");\n }, 5000);\n }, 500);\n }\n }\n } catch (error) {\n /* In some cases the hash may be cause this function to fail. In this case, handle and do nothing */\n }\n }, [hashAutoscrollTopMargin]);\n\n useEffect(() => {\n if (!element.current) return;\n\n const doCreateAnchors = () => {\n if (!element.current || !createAnchors) {\n return;\n }\n\n const headerElems =\n element.current.querySelectorAll(\"h1, h2, h3, h4, h5, h6\") || [];\n if (headerElems.length > 0) {\n headerElems.forEach((header) => {\n const { textContent = \"\" } = header;\n if ((textContent || \"\").length > 0) {\n header.id =\n header.id ||\n removeSpecialCharacters(\n (textContent || \"\").toLowerCase().replace(/\\s/g, \"-\")\n );\n }\n });\n }\n\n setCopyBtns((prevValue) => [...prevValue, ...headerElems]);\n };\n\n const doForceDefaultLinkTarget = () => {\n if (!element.current || !forceDefaultLinkTarget) {\n return;\n }\n\n const linkElems = element.current.querySelectorAll(\"a\") || [];\n if (linkElems.length > 0) {\n const currentOrigin = window.origin;\n linkElems.forEach((link) => {\n const { href } = link;\n if (href.startsWith(currentOrigin)) {\n // @ts-ignore - delete needs to be optional\n delete link.target;\n } else {\n link.target = \"_blank\";\n }\n });\n }\n };\n\n const doSetMailtoTargetToBlank = () => {\n if (!element.current) {\n return;\n }\n (element.current.querySelectorAll(\"a\") || []).forEach((link) => {\n const { href } = link;\n if (href.startsWith(\"mailto:\")) {\n link.target = \"_blank\";\n }\n });\n };\n\n const doFormatCodeBlocks = () => {\n if (!element.current) {\n return;\n }\n const blockElems = element.current.querySelectorAll(\n ELEMENT_TYPE_PRE\n ) as NodeListOf<HTMLPreElement>;\n if (blockElems.length > 0) {\n if (!loadjs.isDefined(\"highlightjs\")) {\n loadCodeFont();\n loadjs([...HIGHLIGHJS_JS, ...HIGHLIGHJS_CSS], \"highlightjs\");\n }\n\n loadjs.ready(\"highlightjs\", () => {\n window.hljs.configure({\n languages: CODE_BLOCK_AVAILABLE_LANGUAGES,\n useBr: true,\n });\n blockElems.forEach((elem) => {\n const plainCode = elem.innerText;\n\n // Take the inner content and put inside single code block\n // This will ensure nice readability.\n // Needs to be done since editor will generate multiple lines for code for ease of editing\n const codeBlock = document.createElement(ELEMENT_TYPE_CODE);\n const decodedText = decodeHtmlEntities(plainCode);\n codeBlock.textContent = decodedText; // Done like this to prevent xss\n elem.innerHTML = \"\"; // Clear content so we can set just the single code block there\n elem.appendChild(codeBlock);\n\n window.hljs.highlightBlock(elem);\n });\n setCopyBtns((prevValue) => [...prevValue, ...blockElems]);\n });\n }\n };\n\n if (useHashAutoscroll) {\n scrollAndHighlightHash();\n }\n\n const handleChange = () => {\n doCreateAnchors();\n doForceDefaultLinkTarget();\n doSetMailtoTargetToBlank();\n doFormatCodeBlocks();\n };\n\n setTimeout(() => {\n handleChange();\n }, 1);\n }, [\n element,\n createAnchors,\n forceDefaultLinkTarget,\n useHashAutoscroll,\n scrollAndHighlightHash,\n ]);\n\n const safeText = useMemo(() => {\n const lowercaseType =\n type && typeof type === \"string\" ? type.toLowerCase() : \"html\";\n\n let transformedContent =\n lowercaseType === \"text\"\n ? `<p>${content}</p>`\n : toHtml(content, lowercaseType);\n\n if (addColorBlocks) {\n transformedContent = addColorSpanAfterColorCodes(transformedContent);\n }\n\n transformedContent = replacePTagsInCodeBlocks(transformedContent);\n\n // Run the xss filter as the last step to ensure safety\n return toSafeText(transformedContent);\n }, [content, type, addColorBlocks]);\n\n // Use dangerouslySetInnerHTML as there might be nested <p>'s header etc\n // This requires that all content is run through the toSafeText filter\n // before displaying. This will run it through xss filter.\n return (\n <>\n <Wrapper\n className={`content-renderer ${\n widgetType === \"page\" ? \"fr-view pages-text\" : \"\"\n }`}\n ref={element}\n widgetType={widgetType}\n createAnchors={createAnchors}\n dangerouslySetInnerHTML={{\n __html: safeText,\n }}\n inheritBrandingStyles={inheritBrandingStyles}\n />\n {copyBtns.map((el) => {\n let clipboardContent = el.textContent || \"\";\n if (el.tagName !== ELEMENT_TYPE_PRE) {\n clipboardContent = `${window.location.href.split(\"#\")[0]}#${el.id}`;\n }\n\n // eslint-disable-next-line no-control-regex\n clipboardContent = removeSpecialCharacters(clipboardContent);\n\n return ReactDOM.createPortal(\n <BtnContainer className=\"content-copy-btn\">\n <CopyToClipboardButton clipboardContent={clipboardContent} />\n </BtnContainer>,\n el\n );\n })}\n </>\n );\n};\n\nconst BtnContainer = styled.div`\n display: inline-flex;\n margin-left: var(--space-xs);\n button {\n opacity: 0;\n transition-property: opacity;\n transition-duration: 150ms;\n transition-timing-function: ease-in;\n }\n button:hover,\n button:active,\n button:focus {\n opacity: 1 !important;\n }\n div p {\n font-size: 12px;\n line-height: 16px;\n }\n`;\n\nconst Wrapper = styled(BodyUI).attrs({ as: \"div\" })`\n ${({ createAnchors }) =>\n createAnchors\n ? `\n h1, h2, h3, h4, h5, h6 {\n display: flex;\n align-items: center;\n :hover button {\n opacity: 0.4;\n }\n }\n `\n : \"\"}\n h1.highlight,\n h2.highlight,\n h3.highlight,\n h4.highlight,\n h5.highlight,\n h6.highlight {\n border-radius: var(--radius-lg);\n position: relative;\n :after {\n content: \" \";\n position: absolute;\n top: -8px;\n bottom: -8px;\n left: -8px;\n right: -8px;\n border-radius: var(--radius-lg);\n border: 5px solid var(--color-warning-lighten80);\n }\n }\n\n pre {\n border-radius: var(--radius-md);\n background: var(--color-surface-darken);\n padding: var(--space-sm);\n margin-bottom: var(--space-sm-plus);\n overflow: auto;\n white-space: pre;\n position: relative; \n *:not(p) {\n font-weight: inherit;\n font-family: \"IBM Plex Mono\", monospace !important;\n }\n code {\n padding: 0;\n background-color: transparent;\n white-space: pre;\n }\n code p {\n font-family: \"IBM Plex Mono\",monospace !important; \n } \n .content-copy-btn {\n position: absolute;\n top: 0;\n right: 0;\n padding: var(--space-sm) 0;\n }\n :hover button {\n opacity: 1;\n }\n }\n code {\n font-family: \"IBM Plex Mono\",monospace !important;\n padding: var(--space-xs);\n white-space: nowrap;\n font-family: monospace;\n border-radius: var(--radius-md);\n background-color: var(--color-surface-darken);\n }\n .mention {\n border-radius: var(--radii-md);\n background-color: var(--color-yellow50);\n border: 1px solid var(--color-yellow50);\n color: var(--color-primary-text-on-light)\n font-weight: 400;\n\n &:hover {\n text-decoration: none;\n border: 1px solid var(--color-yellow200);\n }\n }\n .extraMention {\n cursor: inherit;\n }\n .color-block {\n display: inline-block;\n width: 18px;\n height: 18px;\n margin-left: var(--space-xxs);\n transform: translateY(4px);\n margin-right: var(--space-xxs);\n border-radius: var(--radius-md);\n border: 1px solid var(--color-gray100);\n }\n ${({ widgetType, inheritBrandingStyles }) =>\n widgetType === \"page\"\n ? \"\"\n : `\n * {\n font-family: ${sansFamily};\n }\n\n h1 {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h1-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles ? \"var(--channels-h1-font-weight, 500)\" : \"500\"\n };\n font-size: 24px;\n letter-spacing: -0.5px;\n line-height: 32px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md);\n }\n & * {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h1-font-family, revert)\"\n : \"revert\"\n }; \n }\n }\n h2 {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h2-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles ? \"var(--channels-h2-font-weight, 500)\" : \"500\"\n };\n font-size: 20px;\n line-height: 28px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md);\n }\n & * {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h2-font-family, revert)\"\n : \"revert\"\n }; \n }\n }\n h3 {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h3-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles ? \"var(--channels-h3-font-weight, 500)\" : \"500\"\n };\n font-size: 16px;\n line-height: 24px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md-minus);\n }\n & * {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-h3-font-family, revert);\"\n : \"revert\"\n } \n }\n }\n h4 {\n font-size: 16px;\n line-height: 24px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md-minus);\n }\n }\n p {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-weight, revert)\"\n : \"revert\"\n };\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0px;\n + h1,\n + h2,\n + h3,\n + h4,\n + p {\n margin-top: var(--space-md-minus);\n }\n\n & * {\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"\n }; \n }\n }\n }\n a {\n color: var(--color-active-primary);\n text-decoration: none;\n :hover {\n text-decoration: underline;\n }\n }\n ul {\n list-style-type: disc;\n }\n ol {\n list-style-type: decimal;\n counter-reset: item;\n li {\n padding-left: var(--space-md-minus);\n text-indent: -33px;\n list-style-type: none;\n counter-increment: item;\n &:before {\n display: inline-block;\n width: 13px;\n padding-right: var(--space-md);\n padding-left: var(--space-xs-plus);\n font-weight: bold;\n text-align: right;\n content: counter(item) \".\";\n }\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"\n }; \n font-weight: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-weight, revert)\"\n : \"revert\"\n };\n }\n }\n ol,\n ul {\n font-size: 16px;\n line-height: 24px;\n margin: var(--space-md);\n display: block;\n -webkit-margin-before: var(--space-sm);\n -webkit-margin-after: var(--space-sm);\n -webkit-padding-start: var(--space-sm);\n li,\n li {\n margin-bottom: var(--space-xs-plus);\n padding-left: var(--space-sm-plus);\n > ul,\n > ol {\n -webkit-margin-before: var(--space-sm) !important;\n -webkit-margin-after: var(--space-sm) !important;\n }\n\n font-family: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert);\"\n : \"revert\"\n };\n font-weight: ${\n inheritBrandingStyles\n ? \"var(--channels-body-font-weight, revert)\"\n : \"revert\"\n };\n }\n\n &:first-child,\n &:first-child {\n -webkit-margin-before: 0;\n }\n &:last-child,\n &:last-child {\n -webkit-margin-after: 0;\n }\n }\n hr {\n -webkit-margin-before: var(--space-md);\n -webkit-margin-after: var(--space-md-minus);\n border-color: var(--color-divider);\n border-style: solid;\n height: 0px;\n border-width: 1px 0 0 0;\n }\n table {\n width: 100%;\n margin: 15px 0;\n text-align: left;\n thead th {\n background: var(--color-surface);\n }\n th,\n td {\n border-width: 1px;\n border-style: solid;\n border-color: var(--color-divider);\n padding: 0.5em;\n }\n tr:nth-child(even) {\n background: var(--color-surface-darken);\n }\n tr:nth-child(odd) {\n background: var(--color-surface);\n }\n }\n table.no-borders {\n th,\n td {\n border: none;\n }\n }\n table.padded-2 {\n th,\n td {\n padding: 2em;\n }\n }\n table.padded-1 {\n th,\n td {\n padding: 1em;\n }\n }\n img {\n max-width: 100%;\n margin: var(--space-md) 0;\n & + img {\n margin-top: 0;\n }\n }\n .xl-emoji * {\n font-size: 40px;\n line-height: 1.2;\n }\n \n blockquote {\n border-top: 2px solid var(--color-divider);\n border-bottom: 2px solid var(--color-divider);\n font-size: 18px;\n padding: var(--space-lg) var(--space-xxxl);\n position: relative;\n text-align: center;\n margin: var(--space-xxxl) 0;\n }\n `}\n\n ${({ widgetType, inheritBrandingStyles }) =>\n widgetType === \"article\" &&\n css`\n h1 {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h1-font-family, revert)\"\n : \"revert\"};\n & * {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h1-font-family, revert)\"\n : \"revert\"};\n }\n }\n h2 {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h2-font-family, revert)\"\n : \"revert\"};\n & * {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h2-font-family, revert)\"\n : \"revert\"};\n }\n }\n h3 {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h3-font-family, revert)\"\n : \"revert\"};\n & * {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-h3-font-family, revert)\"\n : \"revert\"};\n }\n }\n\n h4,\n h5,\n h6,\n p,\n ul,\n ol,\n li,\n table {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"};\n & * {\n font-family: ${inheritBrandingStyles\n ? \"var(--channels-body-font-family, revert)\"\n : \"revert\"};\n }\n }\n\n h1 {\n font-size: 32px;\n line-height: 1.13;\n margin: 0 0 20px;\n letter-spacing: -0.75px;\n }\n\n h2 {\n font-size: 24px;\n line-height: 1.17;\n margin: 0 0 var(--space-md);\n letter-spacing: -0.5px;\n }\n\n h3 {\n font-size: 20px;\n line-height: 1.2;\n margin: 0 0 14px;\n }\n\n h4,\n h5,\n h6,\n p,\n ul,\n ol,\n li {\n font-size: var(--font-size-subtitle-sm);\n line-height: 1.56;\n margin-bottom: var(--space-md-minus);\n margin-top: 0;\n }\n\n hr {\n border-color: var(--color-divider);\n }\n\n table {\n width: 100% !important;\n margin: var(--space-md) 0;\n font-size: var(--font-size-subtitle-sm) !important;\n text-align: left;\n border-collapse: collapse;\n border-spacing: 0;\n\n thead th {\n background: var(--color-surface);\n }\n th,\n td {\n border-width: 1px;\n border-style: solid;\n border-color: var(--color-divider);\n padding: var(--space-sm);\n word-wrap: break-word;\n }\n tr:nth-child(odd) {\n background: var(--color-divider-lighten);\n }\n tr:nth-child(even) {\n background: var(--color-surface);\n }\n }\n\n table.no-borders {\n th,\n td {\n border: none;\n }\n\n tr:nth-child(odd) {\n background: var(--color-surface-darken);\n }\n tr:nth-child(even) {\n background: var(--color-surface);\n }\n }\n\n img,\n span.fr-img-caption,\n span.fr-video {\n display: block;\n margin: 30px auto;\n ${media.only.xs` \n max-width: 100%;\n `};\n &.article-align-left {\n display: block;\n max-width: 100%;\n ${media.min.md`\n margin: 30px 30px 10px 0px;\n float: left;\n max-width: 75%;\n `}\n }\n &.article-align-center {\n display: block;\n }\n &.article-align-right {\n display: block;\n max-width: 100%;\n ${media.min.md`\n margin: 30px 0px 10px 30px;\n float: right;\n max-width: 75%;\n `}\n }\n &.article-align-overflow {\n display: block;\n max-width: 100%;\n ${media.min.md`\n margin: 30px -150px;\n width: calc(100% + 300px) !important;\n max-width: none;\n `}\n img {\n width: 100%;\n }\n }\n }\n\n img {\n &.image-border-radius {\n border-radius: var(--radius-lg);\n }\n &.image-box-shadow {\n box-shadow: 0 4px 16px 0 #bacad5;\n }\n }\n\n span.fr-img-caption {\n &.image-border-radius img {\n border-radius: var(--radius-lg);\n }\n &.image-box-shadow img {\n box-shadow: 0 4px 16px 0 #bacad5;\n }\n }\n\n p {\n img:first-child,\n span.fr-img-caption:first-child {\n &.article-align-left,\n &.article-align-right {\n ${media.min.md`\n margin-top: var(--space-sm);\n `}\n }\n }\n }\n\n span.fr-img-caption {\n text-align: center;\n img {\n margin: 0;\n }\n .fr-inner {\n font-weight: 400;\n font-size: 16px;\n margin: var(--space-sm) auto 0 auto;\n padding: 0 var(--space-sm);\n color: var(--color-secondary-text-on-light);\n display: block;\n max-width: 671px;\n }\n }\n\n span.fr-video {\n position: relative;\n padding-bottom: 56.25%;\n padding-top: 30px;\n height: 0;\n overflow: hidden;\n\n border-radius: var(--radius-lg);\n\n &.article-align-overflow {\n padding-top: 170px;\n }\n iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100% !important;\n height: 100% !important;\n }\n }\n\n blockquote {\n border-left: 0 !important;\n padding-left: 0 !important;\n margin: 0 !important;\n color: inherit !important;\n\n p {\n line-height: 30px;\n font-size: 26px;\n text-align: center;\n margin: 0 auto;\n }\n }\n\n .content-attachments {\n width: 100%;\n }\n `}\n }\n`;\n\nexport default ContentRenderer;\n"],"names":["root","factory","module","this","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","subscribe","bundleIds","callbackFn","depsNotFound","i","numWaiting","fn","bundleId","r","q","pathsNotFound","publish","executeCallbacks","args","loadFile","path","numTries","doc","async","maxTries","beforeCallbackFn","pathname","pathStripped","isLegacyIECss","hasModuleSupport","e","ev","result","x","loadFiles","paths","defaultPrevented","loadjs","arg1","arg2","loadFn","resolve","reject","deps","getDefaultWhiteList","whiteList","onAttr","name","value","options","onIgnoreAttr","REGEXP_URL_JAVASCRIPT","safeAttrValue","_default","util","arr","item","j","scope","str","_","require$$0","parseStyle","css","cssLength","isParenthesisOpen","lastPos","retCSS","addNewAttr","source","ret","c","parser","DEFAULT","require$$1","isNull","obj","shallowCopyObject","FilterCSS","me","sourcePosition","position","check","isWhite","opts","filterCSS","html","xss","exports","reg","match","getDefaultCSSWhiteList","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","getTagName","tagName","isClosing","parseTag","tagStart","quoteStart","currentPos","currentTagName","currentHtml","chariterator","ic","REGEXP_ILLEGAL_ATTR_NAME","parseAttr","lastMarkPos","retAttrs","tmpName","addAttr","v","findNextQuotationMark","findNextEqual","findBeforeEqual","stripQuoteWrap","isQuoteWrapString","text","require$$2","require$$3","getAttrs","keysToLowerCase","FilterXSS","attributeWrapSign","stripIgnoreTagBody","info","attrs","whiteAttrList","attrsHtml","isWhiteAttr","filterXSS","isWorkerEnv","encodedTlds","encodedUtlds","assign","target","properties","key","numeric","ascii","alpha","asciinumeric","alphanumeric","domain","emoji","scheme","slashscheme","whitespace","registerGroup","groups","addToGroups","t","flags","k","group","flagsForToken","State","token","input","state","nextState","regex","exactOnly","inputs","regexp","templateState","allFlags","ta","tr","ts","tt","WORD","UWORD","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL$1","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","ASCII_LETTER","LETTER","EMOJI","DIGIT","SPACE","NL","EMOJI_VARIATION","EMOJI_JOINER","tlds","utlds","init$2","customSchemes","Start","decodeTlds","Num","Word","UWord","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","fastts","a","b","sch","run$1","start","iterable","stringToArray","charCount","tokens","cursor","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","index","first","second","defaultt","jr","encoded","words","stack","digits","popDigitCount","popCount","defaults","noop","Options","defaultRender","o","ignoredTags","uppercaseIgnoredTags","ir","operator","isCallable","option","val","MultiToken","truncate","formatted","protocol","href","formattedHref","content","attributes","className","rel","eventListeners","createTokenClass","type","props","Token","p","Email","Text","Nl","Url","makeState","arg","init$1","_ref","qsAccepting","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","EmailColon","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","run","multis","textTokens","secondState","multiLength","initMultiToken","Multi","subtokens","startIdx","endIdx","INIT","init","tokenize","HTML5NamedCharRefs","HEXCHARCODE","CHARCODE","NAMED","EntityParser","named","entity","matches","WSP","ALPHA","CRLF","isSpace","isAlpha","preprocessInput","EventedTokenizer","delegate","entityParser","mode","maybeDoctype","nextSixChars","isPublic","isSystem","handler","endIndex","count","Tokenizer","doctype","isQuoted","message","tokenizer","LinkifyResult","StartTag","EndTag","Chars","Comment","Doctype","linkifyHtml","linkifiedTokens","linkified","preskipLen","skipTagTokens","linkifedChars","linkifyChars","link","attributeArrayToStrings","escapeText","tokenize$1","skippedTokens","stackCount","attributesToString","escapeAttr","attr","attrStrs","namedReferences","numericUnicodeMap","surrogatePairs","astralCodePoint","__assign","s","n","lib","named_references_1","numeric_unicode_map_1","surrogate_pairs_1","allNamedReferences","encodeRegExps","defaultEncodeOptions","encode","_a","_b","_c","_d","_e","level","encodeRegExp","references","isHex","result_1","code_1","defaultDecodeOptions","strict","attribute","baseDecodeRegExps","decodeRegExps","fromCharCode","outOfBoundsChar","defaultDecodeEntityOptions","decodeEntity","decodeResultByReference_1","decodeSecondChar_1","decodeCode_1","decode","decodeRegExp","isAttribute","isStrict","replaceMatch_1","replaceResult_1","replaceLastIndex_1","replaceInput_1","decodeResult_1","decodeEntityLastChar_2","decodeResultByReference_2","decodeSecondChar_2","decodeCode_2","decode_1","safeTagsAndAttributes","HIGHLIGHT_JS_THEME","MONOSPACE_FONT_URL","HIGHLIGHJS_JS","HIGHLIGHJS_CSS","ELEMENT_TYPE_PRE","ELEMENT_TYPE_CODE","CODE_BLOCK_AVAILABLE_LANGUAGES","getDefaultOpts","simple","defaultOptions","opt","allOptionsOn","showdown","parsers","extensions","globalOptions","setFlavor","flavor","preset","func","ext","validExtension","validate","extension","errMsg","baseMsg","ln","validateExtension","getType","callback","prop","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","charsToEscape","afterBackslash","regexString","txt","rgxFindMatchPos","left","right","f","g","l","m","matchPos","results","replacement","repStr","finalStr","lng","bits","fromIndex","indexOf","mail","ch","targetLength","padString","msg","converterOptions","langExtensions","outputModifiers","listeners","setConvFlavor","metadata","_constructor","gOpt","_parseExtension","legacyExtensionLoading","validExt","listen","valid","rTrimInputText","rsp","rgx","evtName","globals","ei","nText","src","HTMLParser","substitutePreCodeTags","clean","nodes","mdDoc","node","child","pres","presPH","language","classes","extensionName","ii","raw","format","writeAnchorTag","linkText","linkId","url","m5","m6","title","wm","st","escape","mentions","username","lnk","simpleURLRegex","simpleURLRegex2","delimUrlRegex","simpleMailRegex","delimMailRegex","replaceLink","leadingMagicChars","m2","m3","trailingPunctuation","trailingMagicChars","lnkTxt","append","lmc","tmc","replaceMail","bq","pre","pattern","codeblock","nextChar","doctypeParsed","charset","lang","meta","leadingText","numSpaces","emojiRgx","emojiCode","comments","delim","repFunc","blockText","blockTags","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","hashHTMLSpan","repText","limit","num","headerLevelStart","setextRegexH1","setextRegexH2","spanGamut","hID","headerId","hLevel","hashBlock","matchFound","atxStyle","hText","span","header","prefix","inlineRegExp","crazyRegExp","base64RegExp","referenceRegExp","refShortcutRegExp","writeImageTagBase64","altText","width","height","writeImageTag","gUrls","gTitles","gDims","parseInside","lead","processListItems","listStr","trimTrailing","isParagraphed","m4","taskbtn","checked","bulletStyle","otp","wm2","styleStartNumber","list","listType","res","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","style","parseMetadataContents","wholematch","grafs","grafsOut","grafsOutIt","codeFlag","re","base64Regex","replaceFunc","blankLines","tableRgx","singeColTblRgx","parseStyles","sLine","parseHeaders","id","parseCells","cell","subText","buildTable","headers","cells","tb","tblLgn","parseTable","rawTable","tableLines","rawHeaders","rawStyles","rawCells","styles","row","charCodeToReplace","children","childrenLength","innerTxt","headerLevel","headerMark","listItems","listItemsLenght","listNum","bullet","listItemTxt","childrenLenght","spansOnly","tableArray","headings","rows","headContent","allign","cols","cellContent","cellSpacesCount","strLen","mentioningRegex","extraMentioning","mentioningRegexCaseInsensitive","mentioningRegexGroupCaseInsensitive","converter","customRules","mentioning","getConverter","htmlConverter","mentioningHtmlRegexGroupCaseInsensitive","processMatch","processMentions","toSafeText","addColorSpanAfterColorCodes","colorRegex","addLinksToText","newContent","acc","toHtml","newString","shortToUnicode","fixEmojioneBug","decodeHtmlEntities","loadCodeFont","removeSpecialCharacters","replacePTagsInCodeBlocks","ContentRenderer","widgetType","createAnchors","useHashAutoscroll","hashAutoscrollTopMargin","forceDefaultLinkTarget","inheritBrandingStyles","addColorBlocks","element","useRef","copyBtns","setCopyBtns","useState","scrollAndHighlightHash","useCallback","hash","hashEl","useEffect","doCreateAnchors","headerElems","textContent","prevValue","doForceDefaultLinkTarget","linkElems","currentOrigin","doSetMailtoTargetToBlank","doFormatCodeBlocks","blockElems","elem","plainCode","codeBlock","decodedText","handleChange","safeText","useMemo","lowercaseType","transformedContent","jsxs","Fragment","jsx","Wrapper","el","clipboardContent","ReactDOM","BtnContainer","CopyToClipboardButton","styled","BodyUI","sansFamily","media"],"mappings":"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AI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,QAAO,KAAI,SAAQ,KAAI,QAAO,KAAI,SAAQ,KAAI,QAAO,KAAI,SAAQ,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,OAAM,KAAI,QAAO,KAAI,OAAM,KAAI,QAAO,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,UAAS,KAAI,YAAW,KAAI,UAAS,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,aAAY,KAAI,UAAS,KAAI,SAAQ,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,aAAY,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,SAAQ,KAAI,aAAY,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,WAAU,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,aAAY,KAAI,UAAS,KAAI,SAAQ,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,QAAO,KAAI,QAAO,KAAI,QAAO,KAAI,aAAY,KAAI,QAAO,KAAI,SAAQ,KAAI,YAAW,KAAI,WAAU,KAAI,SAAQ,KAAI,aAAY,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,WAAU,KAAI,cAAa,KAAI,WAAU,KAAI,SAAQ,KAAI,UAAS,KAAI,YAAW,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,aAAY,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,YAAW,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,QAAO,KAAI,UAAS,KAAI,SAAQ,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,SAAQ,KAAI,QAAO,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,YAAW,KAAI,SAAQ,KAAI,UAAS,KAAI,WAAU,KAAI,QAAO,KAAI,WAAU,KAAI,QAAO,KAAI,QAAO,KAAI,SAAQ,KAAI,SAAQ,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,SAAQ,KAAI,YAAW,KAAI,WAAU,KAAI,YAAW,KAAI,WAAU,IAAG,GAAE,YAAW,EAAC,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,SAAQ,KAAI,YAAW,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,GAAI,UAAS,KAAI,WAAU,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,UAAS,KAAI,SAAQ,KAAI,YAAW,KAAI,UAAS,KAAI,UAAS,KAAI,WAAU,GAAI,WAAU,KAAI,UAAS,KAAI,YAAW,KAAI,WAAU,KAAI,UAAS,GAAI,UAAS,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,YAAW,GAAI,UAAS,GAAI,WAAU,GAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,SAAQ,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,YAAW,GAAI,UAAS,KAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,YAAW,GAAI,WAAU,GAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,YAAW,GAAI,UAAS,GAAI,WAAU,GAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,SAAQ,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,YAAW,GAAI,UAAS,KAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,GAAI,YAAW,GAAI,WAAU,GAAI,UAAS,KAAI,UAAS,KAAI,SAAQ,KAAI,QAAO,KAAI,QAAO,GAAI,WAAU,GAAI,WAAU,GAAI,YAAW,GAAI,YAAW,GAAI,UAAS,KAAI,UAAS,KAAI,WAAU,KAAI,UAAS,KAAI,UAAS,KAAI,YAAW,KAAI,UAAS,KAAI,SAAQ,KAAI,SAAQ,KAAI,SAAQ,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,WAAU,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,UAAS,GAAI,UAAS,GAAI,WAAU,GAAI,UAAS,GAAI,WAAU,GAAI,WAAU,GAAI,aAAY,GAAI,UAAS,GAAI,SAAQ,GA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18]}