{
  "version": 3,
  "sources": ["../../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/prism.js", "../../src/components/code.ts", "../../src/lib/util.ts", "../../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-typescript.js", "../../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-bash.js", "../../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-javascript.js", "../../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-shell-session.js", "../../../../node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-markup.js"],
  "sourcesContent": ["\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null)      === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123)       === 'Number'\n\t\t\t * type('foo')     === 'String'\n\t\t\t * type(true)      === 'Boolean'\n\t\t\t * type([1, 2])    === 'Array'\n\t\t\t * type({})        === 'Object'\n\t\t\t * type(String)    === 'Function'\n\t\t\t * type(/abc+/)    === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (document.currentScript && document.currentScript.tagName === 'SCRIPT' && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t//    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t//    at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t *     // at its original position\n\t\t\t *     'comment': { ... },\n\t\t\t *     // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t *     'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t *     // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t *     'style': {\n\t\t\t *         // token\n\t\t\t *     }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t *     'comment': Prism.languages.markup.comment,\n\t\t\t *     // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism\u2019s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you\u2019re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t *     if (token instanceof Prism.Token && token.type === 'number') {\n\t\t *         console.log(`Found numeric literal: ${token.content}`);\n\t\t *     }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t//   @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t *    The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading\u2026';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '\u2716 Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '\u2716 Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n", "import Prism from \"prismjs\";\nimport { getString } from \"../lib\";\nimport \"prismjs/components/prism-typescript\";\nimport \"prismjs/components/prism-bash\";\nimport \"prismjs/components/prism-javascript\";\nimport \"prismjs/components/prism-shell-session\";\nimport \"prismjs/components/prism-markup\";\n\nexport class Code {\n  el: HTMLElement;\n  constructor(el: HTMLElement) {\n    this.el = el;\n  }\n  init(): void {\n    const lang = getString(this.el, \"lang\") || \"html\";\n    if (!this.el.classList.contains(`language-${lang}`)) {\n      this.el.classList.add(`language-${lang}`);\n    }\n    Prism.highlightElement(this.el);\n  }\n}\nexport function initCode(\n  doc: HTMLElement | Document = document,\n  selector = \".code-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((codeEl) => {\n    const code = new Code(codeEl);\n    code.init();\n  });\n}\n", "/**\n * Corex utility functions for working with Zag.js components.\n *\n * Note: `normalizeProps` is provided by @zag-js/vanilla and is imported from there.\n * `spreadProps` is wrapped to ensure ARIA boolean attributes are converted to strings\n * for accessibility compliance.\n */\nimport { spreadProps as zagSpreadProps } from \"@zag-js/vanilla\";\n\n/**\n * Wrapper around zag's spreadProps that converts boolean ARIA attributes to strings\n * (\"true\" or \"false\") for accessibility compliance. All other attributes are passed\n * through unchanged.\n *\n * The vanilla spreadProps removes boolean false attributes, but ARIA attributes\n * should always be present as strings when provided by the API.\n *\n * Exception: `aria-readonly` is omitted when false as it's invalid on certain roles\n * (e.g., role=\"button\").\n */\nexport function spreadProps(\n  node: Element,\n  attrs: Record<string, any>,\n): () => void {\n  const normalizedAttrs: Record<string, any> = {};\n\n  for (const [attrName, value] of Object.entries(attrs)) {\n    if (typeof value === \"boolean\") {\n      const lowerAttrName = attrName.toLowerCase();\n      if (lowerAttrName.startsWith(\"aria-\")) {\n        if (lowerAttrName === \"aria-readonly\" && !value) continue;\n        normalizedAttrs[attrName] = String(value);\n      } else {\n        normalizedAttrs[attrName] = value;\n      }\n    } else {\n      normalizedAttrs[attrName] = value;\n    }\n  }\n\n  return zagSpreadProps(node, normalizedAttrs);\n}\n\ntype PropertyType = \"string\" | \"boolean\" | \"number\" | \"string[]\";\ntype PropMap = Record<string, PropertyType>;\n/**\n * Renders a specific part of the UI based on the component's props.\n * If `propsToSend` is a PropMap, attributes are read from the DOM.\n * If `propsToSend` is a plain object, it is passed directly to the API.\n *\n * NOTE: This version treats the passed `root` element itself as a candidate\n * part (so you can call renderPart(li, 'item', api, { item }) for a single li).\n */\nexport const renderPart = (\n  root: HTMLElement,\n  name: string,\n  api: any,\n  propsToSend?: PropMap | Record<string, any | ((el: HTMLElement) => any)>,\n) => {\n  const camelizedName = name\n    .split(\"-\")\n    .map((word, index) =>\n      index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1),\n    )\n    .join(\"\");\n  const getterName = `get${camelizedName.charAt(0).toUpperCase()}${camelizedName.slice(1)}Props`;\n  if (typeof api[getterName] !== \"function\") return;\n\n  // Collect parts: include root itself if it matches, plus any descendants\n  const parts: HTMLElement[] = [];\n  try {\n    if (\n      (root as Element).matches &&\n      (root as Element).matches(`[data-part='${name}']`)\n    ) {\n      parts.push(root);\n    }\n  } catch (e) {\n    console.log(e);\n  }\n  parts.push(\n    ...Array.from(root.querySelectorAll<HTMLElement>(`[data-part='${name}']`)),\n  );\n\n  // Find the component root (closest ancestor with class containing \"-js\")\n  const componentRoot = root.closest('[class*=\"-js\"]') as HTMLElement | null;\n\n  const scopedParts = componentRoot\n    ? parts.filter((part) => part.closest('[class*=\"-js\"]') === componentRoot)\n    : parts;\n\n  scopedParts.forEach((part) => {\n    let props: Record<string, any> | undefined;\n    if (propsToSend) {\n      if (isPropMap(propsToSend)) {\n        props = {};\n        for (const [prop, type] of Object.entries(propsToSend)) {\n          const getter =\n            type === \"string\"\n              ? getString\n              : type === \"boolean\"\n                ? getBoolean\n                : type === \"number\"\n                  ? getNumber\n                  : type === \"string[]\"\n                    ? getStringList\n                    : getString;\n          props[prop] = getter(part, prop);\n        }\n      } else {\n        props = {};\n        for (const [key, value] of Object.entries(propsToSend)) {\n          props[key] = typeof value === \"function\" ? value(part) : value;\n        }\n      }\n    }\n    const result = props ? api[getterName](props) : api[getterName]();\n    spreadProps(part, result);\n    if (name === \"preview\") {\n      const childrenValue = part.getAttribute(\"children\");\n      if (childrenValue !== null) part.textContent = childrenValue;\n    }\n  });\n};\nfunction isPropMap(value: any): value is PropMap {\n  if (typeof value !== \"object\" || value === null) return false;\n  return Object.values(value).every(\n    (v) =>\n      v === \"string\" || v === \"boolean\" || v === \"number\" || v === \"string[]\",\n  );\n}\n\n/**\n * Renders a list of items inside the root element. Each item is identified by the `name`, and the\n * properties for each item are retrieved from the API based on its `data-value`, `data-disabled`, and `data-index` attributes.\n * @param root - The root HTML element containing the items.\n * @param name - The name of the item part to render.\n * @param api - The API object used to retrieve the properties for each item.\n * ```\n */\nexport function renderList<T extends { value: string; label?: string }>(\n  root: HTMLElement,\n  name: string,\n  api: any,\n  items: T[],\n) {\n  const parts = root.querySelectorAll<HTMLElement>(`[data-part='${name}']`);\n  const getter = api[`get${capitalize(name)}Props`];\n  parts.forEach((el, index) => {\n    const value = el.getAttribute(\"data-value\") || items[index]?.value;\n    const item = items.find((item) => item.value === value);\n    if (!item) return;\n    const props = getter({ item });\n    spreadProps(el, props);\n  });\n}\n\nfunction capitalize(str: string): string {\n  return str.replace(/(^|-)([a-z])/g, (_m, _p, l) => l.toUpperCase());\n}\ninterface Node {\n  id: string;\n  name: string;\n  children?: Node[];\n}\n/**\n * Recursively searches for a node in a hierarchical structure based on its `id`.\n * @param tree - The tree structure to search through.\n * @param id - The ID of the node to find.\n * @returns The node if found, or `null` if no node with the specified ID exists.\n * ```\n */\nexport function findNodeById(tree: Node, id: string): Node | null {\n  if (tree.id === id) return tree;\n  if (!tree.children) return null;\n  for (const child of tree.children) {\n    const found = findNodeById(child, id);\n    if (found) return found;\n  }\n  return null;\n}\n/**\n * Tree View Component: Renders a node from the provided hierarchical tree view into the specified part in the UI.\n * The part is identified by the `name`, and the node is retrieved from the tree using its `id` attribute.\n * @param root - The root HTML element in which the node resides.\n * @param name - The name of the node part to render.\n * @param api - The API object used to retrieve the properties for the node.\n * @param tree - The hierarchical tree structure containing the nodes.\n *\n * Example:\n * ```ts\n * const root = document.getElementById('root');\n * const tree = { id: '1', name: 'root', children: [{ id: '2', name: 'child' }] };\n * renderNode(root, 'node', api, tree); // Renders the node with properties from the tree\n * ```\n */\nexport const renderNode = (\n  root: HTMLElement,\n  name: string,\n  api: any,\n  tree: Node,\n) => {\n  const parts = root.querySelectorAll<HTMLElement>(`[data-part='${name}']`);\n  // Convert part name to API method name, e.g., \"branch-control\" \u2192 \"getBranchControlProps\"\n  const camelizedName = name.replace(\n    /(^|-)([a-z])/g,\n    (_match, _prefix, letter) => letter.toUpperCase(),\n  );\n  const getterName = `get${camelizedName}Props`;\n  // Helper to recursively find node and index path\n  const findNodeById = (\n    node: Node,\n    id: string,\n    path: number[] = [],\n  ): { node: Node; indexPath: number[] } | null => {\n    if (node.id === id) return { node, indexPath: path };\n    if (node.children) {\n      for (let i = 0; i < node.children.length; i++) {\n        const found = findNodeById(node.children[i], id, [...path, i]);\n        if (found) return found;\n      }\n    }\n    return null;\n  };\n  parts.forEach((part) => {\n    const id = part.getAttribute(\"data-id\");\n    if (!id) return;\n    const found = findNodeById(tree, id);\n    if (!found) return;\n    const { node, indexPath } = found;\n    const getPropsFn =\n      typeof api[getterName] === \"function\" ? api[getterName] : api.getProps;\n    const props = getPropsFn({ indexPath, node });\n    spreadProps(part, props);\n    const label = part.getAttribute(\"children\");\n    if (label != null) {\n      part.textContent = label;\n    }\n  });\n};\n/**\n * Extract a string data attribute with validation for specific type\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @param validValues - Optional array of allowed values\n * @returns Validated string value or undefined\n */\nexport const getString = <T extends string>(\n  element: HTMLElement,\n  attrName: string,\n  validValues?: readonly T[],\n): T | undefined => {\n  const value = element.dataset[attrName];\n  if (\n    value !== undefined &&\n    (!validValues || (validValues as readonly string[]).includes(value))\n  ) {\n    return value as T;\n  }\n  return undefined;\n};\n/**\n * Extract a list of string values from a data attribute\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @returns Array of strings or undefined\n */\nexport const getStringList = (\n  element: HTMLElement,\n  attrName: string,\n): string[] | undefined => {\n  const value = element.dataset[attrName];\n  if (typeof value === \"string\") {\n    return value\n      .split(\",\")\n      .map((v) => v.trim())\n      .filter((v) => v.length > 0);\n  }\n  return undefined;\n};\n/**\n * Extract a number data attribute with optional validation\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @param validValues - Optional array of allowed numeric values\n * @returns Parsed number value or undefined\n */\nexport const getNumber = (\n  element: HTMLElement,\n  attrName: string,\n  validValues?: readonly number[],\n): number | undefined => {\n  const raw = element.dataset[attrName];\n  if (raw === undefined) return undefined;\n  const parsed = Number(raw);\n  if (Number.isNaN(parsed)) return undefined;\n  if (validValues && !validValues.includes(parsed)) return 0;\n  return parsed;\n};\n/**\n * Extract a boolean data attribute\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @returns Boolean value or undefined\n */\nexport const getBoolean = (\n  element: HTMLElement,\n  attrName: string,\n): boolean | undefined => {\n  const value = element.dataset[attrName];\n  if (value === \"\") return true;\n  if (value === \"true\") return true;\n  if (value === \"false\") return false;\n  if (element.hasAttribute(attrName)) return true;\n  if (element.hasAttribute(`data-${attrName}`)) return true;\n\n  return undefined;\n};\n/**\n * Generate a random ID if none is provided\n * @param element - Optional HTML element to get an existing id\n * @param fallbackId - Optional fallback base string (e.g. \"checkbox\")\n * @returns ID string (existing or generated)\n */\nexport const generateId = (\n  element?: HTMLElement,\n  fallbackId: string = \"element\",\n): string => {\n  if (element?.id) return element.id;\n  return `${fallbackId}-${Math.random().toString(36).substring(2, 9)}`;\n};\n\nexport function valuesEqual<T>(a: T, b: T): boolean {\n  return a === b;\n}\n\nexport function arraysEqualUnordered(\n  a: string[] = [],\n  b: string[] = [],\n): boolean {\n  if (a === b) return true;\n  if (!Array.isArray(a) || !Array.isArray(b)) return false;\n  if (a.length !== b.length) return false;\n  return a.every((v) => b.includes(v));\n}\n\n/**\n * Parse element IDs from child parts with data-part and data-id attributes\n * @param root - The root element containing the parts\n * @param partNames - Array of part names to look for (e.g., ['root', 'control', 'label'])\n * @returns Object with parsed IDs or undefined if no IDs found\n *\n * Example:\n * ```html\n * <div class=\"checkbox-js\">\n *   <div data-part=\"root\" data-id=\"my-root\"></div>\n *   <div data-part=\"control\" data-id=\"my-control\"></div>\n * </div>\n * ```\n * ```ts\n * const ids = getPartIds(element, ['root', 'control', 'label']);\n * // Returns: { root: 'my-root', control: 'my-control' }\n * ```\n */\nexport const getPartIds = (\n  root: HTMLElement,\n  partNames: readonly string[],\n): Record<string, string> | undefined => {\n  const ids: Record<string, string> = {};\n  let hasAnyId = false;\n\n  for (const partName of partNames) {\n    const part = root.querySelector<HTMLElement>(`[data-part=\"${partName}\"]`);\n    const id = part?.dataset.id;\n\n    if (id) {\n      // Convert kebab-case to camelCase: hidden-input -> hiddenInput\n      const camelKey = partName.replace(/-([a-z])/g, (_, letter) =>\n        letter.toUpperCase(),\n      );\n      ids[camelKey] = id;\n      hasAnyId = true;\n    }\n  }\n\n  return hasAnyId ? ids : undefined;\n};\n", "(function (Prism) {\n\n\tPrism.languages.typescript = Prism.languages.extend('javascript', {\n\t\t'class-name': {\n\t\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: null // see below\n\t\t},\n\t\t'builtin': /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/,\n\t});\n\n\t// The keywords TypeScript adds to JavaScript\n\tPrism.languages.typescript.keyword.push(\n\t\t/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,\n\t\t// keywords that have to be followed by an identifier\n\t\t/\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,\n\t\t// This is for `import type *, {}`\n\t\t/\\btype\\b(?=\\s*(?:[\\{*]|$))/\n\t);\n\n\t// doesn't work with TS because TS is too complex\n\tdelete Prism.languages.typescript['parameter'];\n\tdelete Prism.languages.typescript['literal-property'];\n\n\t// a version of typescript specifically for highlighting types\n\tvar typeInside = Prism.languages.extend('typescript', {});\n\tdelete typeInside['class-name'];\n\n\tPrism.languages.typescript['class-name'].inside = typeInside;\n\n\tPrism.languages.insertBefore('typescript', 'function', {\n\t\t'decorator': {\n\t\t\tpattern: /@[$\\w\\xA0-\\uFFFF]+/,\n\t\t\tinside: {\n\t\t\t\t'at': {\n\t\t\t\t\tpattern: /^@/,\n\t\t\t\t\talias: 'operator'\n\t\t\t\t},\n\t\t\t\t'function': /^[\\s\\S]+/\n\t\t\t}\n\t\t},\n\t\t'generic-function': {\n\t\t\t// e.g. foo<T extends \"bar\" | \"baz\">( ...\n\t\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n\t\t\t\t'generic': {\n\t\t\t\t\tpattern: /<[\\s\\S]+/, // everything after the first <\n\t\t\t\t\talias: 'class-name',\n\t\t\t\t\tinside: typeInside\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tPrism.languages.ts = Prism.languages.typescript;\n\n}(Prism));\n", "(function (Prism) {\n\t// $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n\t// + LC_ALL, RANDOM, REPLY, SECONDS.\n\t// + make sure PS1..4 are here as they are not always set,\n\t// - some useless things.\n\tvar envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n\n\tvar commandAfterHeredoc = {\n\t\tpattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n\t\tlookbehind: true,\n\t\talias: 'punctuation', // this looks reasonably well in all themes\n\t\tinside: null // see below\n\t};\n\n\tvar insideString = {\n\t\t'bash': commandAfterHeredoc,\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': [\n\t\t\t// [0]: Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t],\n\t\t\t\t\t'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t'operator': /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t'punctuation': /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [1]: Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [2]: Brace expansion\n\t\t\t{\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n\t\t\t\t\t'punctuation': /[\\[\\]]/,\n\t\t\t\t\t'environment': {\n\t\t\t\t\t\tpattern: RegExp('(\\\\{)' + envVars),\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'constant'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:\\w+|[#?*!@$])/\n\t\t],\n\t\t// Escape sequences from echo and printf's manuals, and escaped quotes.\n\t\t'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/.*/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function-name': [\n\t\t\t// a) function foo {\n\t\t\t// b) foo() {\n\t\t\t// c) function foo() {\n\t\t\t// but not \u201Cfoo {\u201D\n\t\t\t{\n\t\t\t\t// a) and c)\n\t\t\t\tpattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'function'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// b)\n\t\t\t\tpattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n\t\t\t\talias: 'function'\n\t\t\t}\n\t\t],\n\t\t// Highlight variable names as variables in for and select beginnings.\n\t\t'for-or-select': {\n\t\t\tpattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight variable names as variables in the left-hand part\n\t\t// of assignments (\u201C=\u201D and \u201C+=\u201D).\n\t\t'assign-left': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n\t\t\tinside: {\n\t\t\t\t'environment': {\n\t\t\t\t\tpattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'constant'\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight parameter names as variables\n\t\t'parameter': {\n\t\t\tpattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t// Here-document with quotes around the tag\n\t\t\t// \u2192 No expansion (so no \u201Cinside\u201D).\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'bash': commandAfterHeredoc\n\t\t\t\t}\n\t\t\t},\n\t\t\t// \u201CNormal\u201D string\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n\t\t\t\tpattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n\t\t\t\tpattern: /(^|[^$\\\\])'[^']*'/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n\t\t\t\tpattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'entity': insideString.entity\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$?' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': insideString.variable,\n\t\t'function': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n\t\t'builtin': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true,\n\t\t\t// Alias added to make those easier to distinguish from strings.\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'file-descriptor': {\n\t\t\tpattern: /\\B&\\d\\b/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'operator': {\n\t\t\t// Lots of redirections here, but not just that.\n\t\t\tpattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n\t\t\tinside: {\n\t\t\t\t'file-descriptor': {\n\t\t\t\t\tpattern: /^\\d/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n\t\t'number': {\n\t\t\tpattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t};\n\n\tcommandAfterHeredoc.inside = Prism.languages.bash;\n\n\t/* Patterns in command substitution. */\n\tvar toBeCopied = [\n\t\t'comment',\n\t\t'function-name',\n\t\t'for-or-select',\n\t\t'assign-left',\n\t\t'parameter',\n\t\t'string',\n\t\t'environment',\n\t\t'function',\n\t\t'keyword',\n\t\t'builtin',\n\t\t'boolean',\n\t\t'file-descriptor',\n\t\t'operator',\n\t\t'punctuation',\n\t\t'number'\n\t];\n\tvar inside = insideString.variable[1].inside;\n\tfor (var i = 0; i < toBeCopied.length; i++) {\n\t\tinside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n\t}\n\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.shell = Prism.languages.bash;\n}(Prism));\n", "Prism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n", "(function (Prism) {\n\n\t// CAREFUL!\n\t// The following patterns are concatenated, so the group referenced by a back reference is non-obvious!\n\n\tvar strings = [\n\t\t// normal string\n\t\t/\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/.source,\n\t\t/'[^']*'/.source,\n\t\t/\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/.source,\n\n\t\t// here doc\n\t\t// 2 capturing groups\n\t\t/<<-?\\s*([\"']?)(\\w+)\\1\\s[\\s\\S]*?[\\r\\n]\\2/.source\n\t].join('|');\n\n\tPrism.languages['shell-session'] = {\n\t\t'command': {\n\t\t\tpattern: RegExp(\n\t\t\t\t// user info\n\t\t\t\t/^/.source +\n\t\t\t\t'(?:' +\n\t\t\t\t(\n\t\t\t\t\t// <user> \":\" ( <path> )?\n\t\t\t\t\t/[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+(?::[^\\0-\\x1F$#%*?\"<>:;|]+)?/.source +\n\t\t\t\t\t'|' +\n\t\t\t\t\t// <path>\n\t\t\t\t\t// Since the path pattern is quite general, we will require it to start with a special character to\n\t\t\t\t\t// prevent false positives.\n\t\t\t\t\t/[/~.][^\\0-\\x1F$#%*?\"<>@:;|]*/.source\n\t\t\t\t) +\n\t\t\t\t')?' +\n\t\t\t\t// shell symbol\n\t\t\t\t/[$#%](?=\\s)/.source +\n\t\t\t\t// bash command\n\t\t\t\t/(?:[^\\\\\\r\\n \\t'\"<$]|[ \\t](?:(?!#)|#.*$)|\\\\(?:[^\\r]|\\r\\n?)|\\$(?!')|<(?!<)|<<str>>)+/.source.replace(/<<str>>/g, function () { return strings; }),\n\t\t\t\t'm'\n\t\t\t),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'info': {\n\t\t\t\t\t// foo@bar:~/files$ exit\n\t\t\t\t\t// foo@bar$ exit\n\t\t\t\t\t// ~/files$ exit\n\t\t\t\t\tpattern: /^[^#$%]+/,\n\t\t\t\t\talias: 'punctuation',\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'user': /^[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+/,\n\t\t\t\t\t\t'punctuation': /:/,\n\t\t\t\t\t\t'path': /[\\s\\S]+/\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'bash': {\n\t\t\t\t\tpattern: /(^[$#%]\\s*)\\S[\\s\\S]*/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'language-bash',\n\t\t\t\t\tinside: Prism.languages.bash\n\t\t\t\t},\n\t\t\t\t'shell-symbol': {\n\t\t\t\t\tpattern: /^[$#%]/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'output': /.(?:.*(?:[\\r\\n]|.$))*/\n\t};\n\n\tPrism.languages['sh-session'] = Prism.languages['shellsession'] = Prism.languages['shell-session'];\n\n}(Prism));\n", "Prism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n"],
  "mappings": "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",
  "names": ["Prism", "_self", "lang", "addInlined", "Prism", "Prism", "Prism", "Prism"]
}
