{"version":3,"sources":["jsdelivr-header.js","/npm/@readme/markdown@13.4.0/dist/main.js"],"names":[],"mappings":"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ACA,SACA,MACA,SACA,QACA,SACA,OACA,KACA,SACA,QACA,SACA,OACA,KACA,SACA,SACA,QACA,SACA,SACA,SACA,OACA,OACA,MACA,QACA,SACA,QACA,SACA,OACA,SACA,SACA,QACA,QACA,QACA,SACA,MACA,QACA,SACA,OACA,SACA,SACA,QACA,OACA,OACA,SACA,MACA,SACA,SACA,QACA,SACA,MACA,OACA,SACA,SACA,SACA,KACA,SACA,QACA,QACA,SACA,SACA,OACA,QACA,KACA,OACA,QACA,SACA,OACA,MACA,SACA,SACA,QACA,SACA,OACA,OACA,SACA,SACA,OACA,OACA,SACA,QACA,OACA,QACA,MACA,OACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,MACA,OACA,SACA,MACA,QASI,GAA4B,CAChC,EAAG,IACH,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAWP,SAAS,GAAU,GACjB,MAAM,EACiB,iBAAd,EAAyB,EAAU,WAAW,GAAK,EAE5D,OAAO,GAAQ,IAAM,GAAQ,EAC/B,CAUA,SAAS,GAAc,GACrB,MAAM,EACiB,iBAAd,EAAyB,EAAU,WAAW,GAAK,EAE5D,OACG,GAAQ,IAAc,GAAQ,KAC9B,GAAQ,IAAc,GAAQ,IAC9B,GAAQ,IAAc,GAAQ,EAEnC,CA+BA,SAAS,GAAiB,GACxB,OAtBF,SAAwB,GACtB,MAAM,EACiB,iBAAd,EAAyB,EAAU,WAAW,GAAK,EAE5D,OACG,GAAQ,IAAM,GAAQ,KACtB,GAAQ,IAAM,GAAQ,EAE3B,CAcS,CAAe,IAAc,GAAU,EAChD,CAeA,MAAM,GAAe,OAAO,aAGtB,GAAW,CACf,GAEA,+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A,QACA,MACA,OACA,SACA,cACA,cACA,OACA,UACA,UACA,UACA,QACA,UACA,QACA,OACA,UACA,SACA,WACA,MAKA,UACA,QACA,SACA,UACA,SACA,WACA,UACA,KACA,QACA,WACA,QACA,OACA,YACA,QACA,SACA,WACA,OACA,SACA,UACA,SACA,OACA,SACA,WACA,MACA,UACA,OACA,QACA,QACA,WACA,QACA,OACA,OACA,QACA,UACA,WACA,QACA,SACA,SACA,QACA,UAGJ,QAAS,CAAC,kBAAmB,iBAAkB,KAAM,QACrD,cAAe,gBACf,UAAW,CACT,KAAM,CAAC,OAAQ,SACf,KAAM,CAAC,OAAQ,QAAS,MAAO,OAAQ,SAAU,QACjD,SAAU,CAAC,OAAQ,SACnB,IAAK,CAAC,OAAQ,UAEhB,SAAU,CACR,MAAO,CAAC,UAAU,EAAM,KAAM,aAEhC,MAAO,CAAC,UACR,SAAU,CACR,IACA,IACA,aACA,KACA,OACA,KACA,MACA,UACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MAIA,QACA,MACA,MACA,KACA,KACA,IACA,UACA,MACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,OACA,SACA,SACA,MACA,UACA,MACA,QACA,QACA,KACA,QACA,KACA,QACA,KACA,KACA,KACA,QA6NE,GAA6B,CAAC,EAAE,eAgDtC,SAAS,GAAc,EAAO,GAC5B,GAAI,GAAwB,iBAAT,EAAmB,CACpC,MAAM,EAA0D,EAGhE,OAFoC,iBAAhB,EAAO,KAAoB,EAAO,KAAO,IAG3D,IAAK,UACH,OAkCR,SAAwC,EAAO,GAC7C,GAAI,EAAM,OAAO,cAAe,CAE9B,MAAM,EAAiC,iBAAjB,EAAO,MAAqB,EAAO,MAAQ,GAC3D,EAAQ,EAAO,QAAQ,UAIvB,EAAO,CAAC,KAAM,UAAW,MAHjB,EAAQ,EAAI,EAAS,EAAO,MAAM,EAAG,IAOnD,OAFA,GAA6B,EAAM,GAE5B,CACT,CACF,CAhDe,CAA+B,EAAO,GAG/C,IAAK,UACH,OAwDR,SAAwC,EAAO,GAC7C,GAAI,EAAM,OA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AgB,GACvB,OAMA,SAAe,EAAO,EAAO,GAC3B,OAAO,QACL,GAAmB,IACjB,EAAa,KACX,KACA,EACiB,iBAAV,EAAqB,OAAQ,EACpC,QAAU,GAGlB,CACF,CAQA,SAAS,GAAiC,GACxC,OAAO,QACL,GACqB,iBAAZ,GACP,SAAU,GACO,YAAjB,EAAQ,MACR,YAAa,GACc,iBAApB,EAAQ,QAErB,CAMA,SAAS,GAAmB,GAC1B,OACY,OAAV,GACiB,iBAAV,GACP,SAAU,GACV,YAAa,CAEjB,CAgBA,MAAM,GAAW,IAKf,SAAU,GACR,MACsB,UAApB,EAAQ,SACY,WAApB,EAAQ,SACY,UAApB,EAAQ,SACY,WAApB,EAAQ,SACY,QAApB,EAAQ,SACY,SAApB,EAAQ,SACY,WAApB,EAAQ,SACY,YAApB,EAAQ,SACY,QAApB,EAAQ,SACY,UAApB,EAAQ,OAEZ,IAKI,GAAe,CACnB,UACA,UACA,QACA,aACA,OACA,KACA,UACA,SACA,MACA,WACA,KACA,SACA,MACA,MACA,KACA,KACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,SACA,KACA,KACA,UACA,OACA,OACA,MACA,KACA,WACA,SACA,IACA,YACA,MACA,UACA,UACA,QACA,QACA,KACA,KACA,QACA,KACA,KACA,QACA,KACA,KACA,MACA,OAII,GAAsB,CAE1B,SACA,QACA,SACA,YAII,GAAY,CAChB,OACA,OACA,WACA,SACA,WACA,OACA,OACA,OACA,UACA,WACA,QACA,KACA,SACA,SACA,QACA,WACA,QACA,SA0DI,GAA4C,CAAC,EAC7C,GAAgB,GAAQ,CAAC,UAAW,YAU1C,SAAS,GAAuB,GAC9B,MACM,EAmQR,SAAyB,GACvB,OAAO,EAKP,SAAS,EAAS,GAChB,OAAO,OAAO,GAAO,QAAQ,kBAAmB,EAClD,CACF,CA5QmB,EADA,GAAW,IAEjB,SAAW,GAAkB,IASxC,OAAO,SAAU,GACf,GAAO,EAAM,CAAC,WAAU,WAAY,UACtC,CACF,CAUA,SAAS,GAAO,EAAM,GACpB,GAAI,aA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","file":"/npm/@readme/markdown@13.4.0/dist/main.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@readme/markdown@13.4.0/dist/main.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@readme/syntax-highlighter\"), require(\"@readme/variable\"), require(\"@tippyjs/react\"), require(\"acorn\"), require(\"mermaid\"), require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@readme/syntax-highlighter\", \"@readme/variable\", \"@tippyjs/react\", \"acorn\", \"mermaid\", \"react\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"@readme/syntax-highlighter\"), require(\"@readme/variable\"), require(\"@tippyjs/react\"), require(\"acorn\"), require(\"mermaid\"), require(\"react\")) : factory(root[\"@readme/syntax-highlighter\"], root[\"@readme/variable\"], root[\"@tippyjs/react\"], root[\"acorn\"], root[\"mermaid\"], root[\"React\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, (__WEBPACK_EXTERNAL_MODULE__3966__, __WEBPACK_EXTERNAL_MODULE__8167__, __WEBPACK_EXTERNAL_MODULE__4189__, __WEBPACK_EXTERNAL_MODULE__6473__, __WEBPACK_EXTERNAL_MODULE__1387__, __WEBPACK_EXTERNAL_MODULE__1307__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 2660:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar visit = __webpack_require__(9574);\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hastCssPropertyMap = {\n  align: 'text-align',\n  valign: 'vertical-align',\n  height: 'height',\n  width: 'width',\n};\n\nmodule.exports = function tableCellStyle(node) {\n  visit(node, 'element', visitor);\n  return node;\n};\n\nfunction visitor(node) {\n  if (node.tagName !== 'tr' && node.tagName !== 'td' && node.tagName !== 'th') {\n    return;\n  }\n\n  var hastName;\n  var cssName;\n  for (hastName in hastCssPropertyMap) {\n    if (\n      !hasOwnProperty.call(hastCssPropertyMap, hastName) ||\n      node.properties[hastName] === undefined\n    ) {\n      continue;\n    }\n    cssName = hastCssPropertyMap[hastName];\n    appendStyle(node, cssName, node.properties[hastName]);\n    delete node.properties[hastName];\n  }\n}\n\nfunction appendStyle(node, property, value) {\n  var prevStyle = (node.properties.style || '').trim();\n  if (prevStyle && !/;\\s*/.test(prevStyle)) {\n    prevStyle += ';';\n  }\n  if (prevStyle) {\n    prevStyle += ' ';\n  }\n  var nextStyle = prevStyle + property + ': ' + value + ';';\n  node.properties.style = nextStyle;\n}\n\n\n/***/ }),\n\n/***/ 856:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nmodule.exports = convert\n\nfunction convert(test) {\n  if (typeof test === 'string') {\n    return typeFactory(test)\n  }\n\n  if (test === null || test === undefined) {\n    return ok\n  }\n\n  if (typeof test === 'object') {\n    return ('length' in test ? anyFactory : matchesFactory)(test)\n  }\n\n  if (typeof test === 'function') {\n    return test\n  }\n\n  throw new Error('Expected function, string, or object as test')\n}\n\nfunction convertAll(tests) {\n  var results = []\n  var length = tests.length\n  var index = -1\n\n  while (++index < length) {\n    results[index] = convert(tests[index])\n  }\n\n  return results\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction matchesFactory(test) {\n  return matches\n\n  function matches(node) {\n    var key\n\n    for (key in test) {\n      if (node[key] !== test[key]) {\n        return false\n      }\n    }\n\n    return true\n  }\n}\n\nfunction anyFactory(tests) {\n  var checks = convertAll(tests)\n  var length = checks.length\n\n  return matches\n\n  function matches() {\n    var index = -1\n\n    while (++index < length) {\n      if (checks[index].apply(this, arguments)) {\n        return true\n      }\n    }\n\n    return false\n  }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n  return type\n\n  function type(node) {\n    return Boolean(node && node.type === test)\n  }\n}\n\n// Utility to return true.\nfunction ok() {\n  return true\n}\n\n\n/***/ }),\n\n/***/ 9222:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nmodule.exports = visitParents\n\nvar convert = __webpack_require__(856)\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n  var is\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    visitor = test\n    test = null\n  }\n\n  is = convert(test)\n\n  one(tree, null, [])\n\n  // Visit a single node.\n  function one(node, index, parents) {\n    var result = []\n    var subresult\n\n    if (!test || is(node, index, parents[parents.length - 1] || null)) {\n      result = toResult(visitor(node, parents))\n\n      if (result[0] === EXIT) {\n        return result\n      }\n    }\n\n    if (node.children && result[0] !== SKIP) {\n      subresult = toResult(all(node.children, parents.concat(node)))\n      return subresult[0] === EXIT ? subresult : result\n    }\n\n    return result\n  }\n\n  // Visit children in `parent`.\n  function all(children, parents) {\n    var min = -1\n    var step = reverse ? -1 : 1\n    var index = (reverse ? children.length : min) + step\n    var result\n\n    while (index > min && index < children.length) {\n      result = one(children[index], index, parents)\n\n      if (result[0] === EXIT) {\n        return result\n      }\n\n      index = typeof result[1] === 'number' ? result[1] : index + step\n    }\n  }\n}\n\nfunction toResult(value) {\n  if (value !== null && typeof value === 'object' && 'length' in value) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return [value]\n}\n\n\n/***/ }),\n\n/***/ 9574:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nmodule.exports = visit\n\nvar visitParents = __webpack_require__(9222)\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    visitor = test\n    test = null\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  function overload(node, parents) {\n    var parent = parents[parents.length - 1]\n    var index = parent ? parent.children.indexOf(node) : null\n    return visitor(node, index, parent)\n  }\n}\n\n\n/***/ }),\n\n/***/ 9762:\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst modeAliases = {\n    aspx: 'asp',\n    bash: 'shell',\n    'c++': 'cplusplus',\n    'c#': 'csharp',\n    clj: 'clojure',\n    cljc: 'clojure',\n    cljx: 'clojure',\n    coffeescript: 'javascript',\n    cpp: 'cplusplus',\n    cql: 'sql',\n    cs: 'csharp',\n    docker: 'dockerfile',\n    ecmascript: 'javascript',\n    erl: 'erlang',\n    gql: 'graphql',\n    gradle: 'groovy',\n    handlebars: 'html',\n    hbs: 'html',\n    jl: 'julia',\n    jruby: 'ruby',\n    js: 'javascript',\n    kt: 'kotlin',\n    less: 'css',\n    macruby: 'ruby',\n    md: 'markdown',\n    ml: 'ocaml',\n    mssql: 'sql',\n    mysql: 'sql',\n    node: 'javascript',\n    'obj-c': 'objectivec',\n    'obj-c++': 'objectivecplusplus',\n    'objc++': 'objectivecplusplus',\n    objc: 'objectivec',\n    objcpp: 'objectivecplusplus',\n    objectivecpp: 'objectivecplusplus',\n    pgsql: 'sql',\n    pl: 'perl',\n    plsql: 'sql',\n    postgres: 'sql',\n    postgresql: 'sql',\n    ps1: 'powershell',\n    py: 'python',\n    rake: 'ruby',\n    rb: 'ruby',\n    rbx: 'ruby',\n    rs: 'rust',\n    sass: 'css',\n    scss: 'css',\n    sh: 'shell',\n    solidity: 'sol',\n    sqlite: 'sql',\n    styl: 'css',\n    stylus: 'css',\n    xhtml: 'html',\n    yml: 'yaml',\n    zsh: 'shell',\n};\nconst canonical = (language) => {\n    if (language in modeAliases)\n        return modeAliases[language];\n    return language;\n};\nexports[\"default\"] = canonical;\n\n\n/***/ }),\n\n/***/ 7900:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst canonical_1 = __importDefault(__webpack_require__(9762));\nconst modes_1 = __webpack_require__(1412);\nconst uppercase_1 = __importDefault(__webpack_require__(8892));\nexports[\"default\"] = { uppercase: uppercase_1.default, canonical: canonical_1.default, modes: modes_1.modes, getMode: modes_1.getMode };\n\n\n/***/ }),\n\n/***/ 1412:\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.modes = void 0;\nexports.getMode = getMode;\n// This is a mapping of languages that we support, but aren't directly loading the mode extension\n// Within `/src/codeMirror/index.jsx` and /src/codeEditor.index.jsx\n//\n// This list also includes a number of language aliases, as because of the way we're using\n// `CodeMirror.runMode` we can't take advantage of its known aliases in the mode extensions that\n// we're loading.\n//\n// There are 2 types of lookup, single and array. e.g. `html` needs to be rendered using\n// `htmlmixed`, but `java`, needs to be rendered using the `clike` mode.\n//\nexports.modes = {\n    asp: 'clike',\n    aspx: 'clike',\n    bash: 'shell',\n    c: 'clike',\n    'c#': ['clike', 'text/x-csharp'],\n    'c++': ['clike', 'text/x-c++src'],\n    clj: 'clojure',\n    cljc: 'clojure',\n    cljx: 'clojure',\n    coffeescript: 'javascript',\n    cplusplus: ['clike', 'text/x-c++src'],\n    cpp: ['clike', 'text/x-c++src'],\n    cql: ['sql', 'text/x-cassandra'],\n    cs: ['clike', 'text/x-csharp'],\n    csharp: ['clike', 'text/x-csharp'],\n    curl: 'shell',\n    d: 'd',\n    diff: 'diff',\n    ecmascript: 'javascript',\n    erl: 'erlang',\n    go: ['go', 'text/x-go'],\n    gradle: 'groovy',\n    gql: 'graphql',\n    handlebars: 'htmlmixed',\n    hbs: 'htmlmixed',\n    html: 'htmlmixed',\n    java: ['clike', 'text/x-java'],\n    jl: 'julia',\n    js: 'javascript',\n    jsx: 'jsx',\n    json: ['javascript', 'application/ld+json'],\n    jruby: 'ruby',\n    kotlin: ['clike', 'text/x-kotlin'],\n    kt: ['clike', 'text/x-kotlin'],\n    less: 'css',\n    liquid: 'htmlmixed',\n    lua: 'lua',\n    node: 'javascript',\n    macruby: 'ruby',\n    markdown: 'gfm',\n    ml: ['mllike', 'text/x-ocaml'],\n    mssql: ['sql', 'text/x-mssql'],\n    mysql: ['sql', 'text/x-mysql'],\n    objc: ['clike', 'text/x-objectivec'],\n    'objc++': ['clike', 'text/x-objectivec++'],\n    objcpp: ['clike', 'text/x-objectivec++'],\n    objectivec: ['clike', 'text/x-objectivec'],\n    objectivecpp: ['clike', 'text/x-objectivec++'],\n    objectivecplusplus: ['clike', 'text/x-objectivec++'],\n    ocaml: ['mllike', 'text/x-ocaml'],\n    php: ['php', 'text/x-php'],\n    pgsql: ['sql', 'text/x-pgsql'],\n    pl: 'perl',\n    plsql: ['sql', 'text/x-plsql'],\n    postgres: ['sql', 'text/x-pgsql'],\n    postgresql: ['sql', 'text/x-pgsql'],\n    ps1: 'powershell',\n    py: 'python',\n    r: 'r',\n    rake: 'ruby',\n    rb: 'ruby',\n    rbx: 'ruby',\n    rs: 'rust',\n    sass: 'css',\n    scala: ['clike', 'text/x-scala'],\n    scss: 'css',\n    sh: 'shell',\n    sol: 'solidity',\n    solidity: 'solidity',\n    sql: ['sql', 'text/x-sql'],\n    sqlite: ['sql', 'text/x-sqlite'],\n    styl: 'css',\n    stylus: 'css',\n    text: ['null', 'text/plain'],\n    ts: ['javascript', 'text/typescript'],\n    typescript: ['javascript', 'text/typescript'],\n    xhtml: 'htmlmixed',\n    yml: 'yaml',\n    zsh: 'shell',\n};\nfunction getMode(lang) {\n    let mode = lang;\n    if (mode in exports.modes) {\n        mode = exports.modes[mode];\n        if (Array.isArray(mode)) {\n            [, mode] = mode;\n        }\n    }\n    return mode;\n}\n\n\n/***/ }),\n\n/***/ 8892:\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports[\"default\"] = uppercase;\nconst codeTypes = {\n    asp: 'ASP.NET',\n    aspx: 'ASP.NET',\n    bash: 'Bash',\n    c: 'C',\n    'c#': 'C#',\n    'c++': 'C++',\n    coffeescript: 'CoffeeScript',\n    clj: 'Clojure',\n    cljc: 'Clojure',\n    cljx: 'Clojure',\n    clojure: 'Clojure',\n    cplusplus: 'C++',\n    cpp: 'C++',\n    cql: 'Cassandra',\n    cs: 'C#',\n    csharp: 'C#',\n    css: 'CSS',\n    curl: 'cURL',\n    d: 'D',\n    dart: 'Dart',\n    diff: 'Diff',\n    dockerfile: 'Dockerfile',\n    ecmascript: 'ECMAScript',\n    erl: 'Erlang',\n    erlang: 'Erlang',\n    go: 'Go',\n    gql: 'GraphQL',\n    gradle: 'Gradle',\n    graphql: 'GraphQL',\n    groovy: 'Groovy',\n    handlebars: 'Handlebars',\n    hbs: 'Handlebars',\n    haml: 'HAML',\n    haxe: 'Haxe',\n    html: 'HTML',\n    http: 'HTTP',\n    java: 'Java',\n    javascript: 'JavaScript',\n    jinja2: 'Jinja2',\n    jl: 'Julia',\n    jruby: 'JRuby',\n    js: 'JavaScript',\n    json: 'JSON',\n    jsx: 'JSX',\n    julia: 'Julia',\n    kotlin: 'Kotlin',\n    kt: 'Kotlin',\n    less: 'LESS',\n    liquid: 'Liquid',\n    lua: 'Lua',\n    macruby: 'MacRuby',\n    markdown: 'Markdown',\n    md: 'Markdown',\n    mermaid: 'Mermaid', // syntax highlighting not supported yet\n    ml: 'OCaml',\n    mssql: 'SQL Server',\n    mysql: 'MySQL',\n    node: 'Node',\n    objc: 'Objective-C',\n    'objc++': 'Objective-C++',\n    objcpp: 'Objective-C++',\n    objectivec: 'Objective-C',\n    objectivecpp: 'Objective-C++',\n    objectivecplusplus: 'Objective-C++',\n    ocaml: 'OCaml',\n    perl: 'Perl',\n    php: 'PHP',\n    pl: 'Perl',\n    pgsql: 'PL/pgSQL',\n    plsql: 'PL/SQL',\n    postgres: 'PostgreSQL',\n    postgresql: 'PostgreSQL',\n    powershell: 'PowerShell',\n    ps1: 'PowerShell',\n    python: 'Python',\n    py: 'Python',\n    r: 'R',\n    rake: 'Rake',\n    rb: 'Ruby',\n    rbx: 'Rubinius',\n    rs: 'Rust',\n    ruby: 'Ruby',\n    rust: 'Rust',\n    sass: 'Sass',\n    scala: 'Scala',\n    scss: 'SCSS',\n    sh: 'Shell',\n    shell: 'Shell',\n    smarty: 'Smarty',\n    solidity: 'Solidity',\n    sql: 'SQL',\n    sqlite: 'SQLite',\n    stylus: 'Stylus',\n    styl: 'Stylus',\n    swift: 'Swift',\n    text: 'Text',\n    toml: 'TOML',\n    twig: 'Twig',\n    typescript: 'TypeScript',\n    xhtml: 'XHTML',\n    xml: 'XML',\n    yaml: 'YAML',\n    yml: 'YAML',\n    zsh: 'Zsh',\n};\nfunction uppercase(language) {\n    if (language in codeTypes)\n        return codeTypes[language];\n    return language;\n}\n\n\n/***/ }),\n\n/***/ 9214:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nconst XHTMLEntities = __webpack_require__(7591);\n\nconst hexNumber = /^[\\da-fA-F]+$/;\nconst decimalNumber = /^\\d+$/;\n\n// The map to `acorn-jsx` tokens from `acorn` namespace objects.\nconst acornJsxMap = new WeakMap();\n\n// Get the original tokens for the given `acorn` namespace object.\nfunction getJsxTokens(acorn) {\n  acorn = acorn.Parser.acorn || acorn;\n  let acornJsx = acornJsxMap.get(acorn);\n  if (!acornJsx) {\n    const tt = acorn.tokTypes;\n    const TokContext = acorn.TokContext;\n    const TokenType = acorn.TokenType;\n    const tc_oTag = new TokContext('<tag', false);\n    const tc_cTag = new TokContext('</tag', false);\n    const tc_expr = new TokContext('<tag>...</tag>', true, true);\n    const tokContexts = {\n      tc_oTag: tc_oTag,\n      tc_cTag: tc_cTag,\n      tc_expr: tc_expr\n    };\n    const tokTypes = {\n      jsxName: new TokenType('jsxName'),\n      jsxText: new TokenType('jsxText', {beforeExpr: true}),\n      jsxTagStart: new TokenType('jsxTagStart', {startsExpr: true}),\n      jsxTagEnd: new TokenType('jsxTagEnd')\n    };\n\n    tokTypes.jsxTagStart.updateContext = function() {\n      this.context.push(tc_expr); // treat as beginning of JSX expression\n      this.context.push(tc_oTag); // start opening tag context\n      this.exprAllowed = false;\n    };\n    tokTypes.jsxTagEnd.updateContext = function(prevType) {\n      let out = this.context.pop();\n      if (out === tc_oTag && prevType === tt.slash || out === tc_cTag) {\n        this.context.pop();\n        this.exprAllowed = this.curContext() === tc_expr;\n      } else {\n        this.exprAllowed = true;\n      }\n    };\n\n    acornJsx = { tokContexts: tokContexts, tokTypes: tokTypes };\n    acornJsxMap.set(acorn, acornJsx);\n  }\n\n  return acornJsx;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(object) {\n  if (!object)\n    return object;\n\n  if (object.type === 'JSXIdentifier')\n    return object.name;\n\n  if (object.type === 'JSXNamespacedName')\n    return object.namespace.name + ':' + object.name.name;\n\n  if (object.type === 'JSXMemberExpression')\n    return getQualifiedJSXName(object.object) + '.' +\n    getQualifiedJSXName(object.property);\n}\n\nmodule.exports = function(options) {\n  options = options || {};\n  return function(Parser) {\n    return plugin({\n      allowNamespaces: options.allowNamespaces !== false,\n      allowNamespacedObjects: !!options.allowNamespacedObjects\n    }, Parser);\n  };\n};\n\n// This is `tokTypes` of the peer dep.\n// This can be different instances from the actual `tokTypes` this plugin uses.\nObject.defineProperty(module.exports, \"tokTypes\", ({\n  get: function get_tokTypes() {\n    return getJsxTokens(__webpack_require__(6473)).tokTypes;\n  },\n  configurable: true,\n  enumerable: true\n}));\n\nfunction plugin(options, Parser) {\n  const acorn = Parser.acorn || __webpack_require__(6473);\n  const acornJsx = getJsxTokens(acorn);\n  const tt = acorn.tokTypes;\n  const tok = acornJsx.tokTypes;\n  const tokContexts = acorn.tokContexts;\n  const tc_oTag = acornJsx.tokContexts.tc_oTag;\n  const tc_cTag = acornJsx.tokContexts.tc_cTag;\n  const tc_expr = acornJsx.tokContexts.tc_expr;\n  const isNewLine = acorn.isNewLine;\n  const isIdentifierStart = acorn.isIdentifierStart;\n  const isIdentifierChar = acorn.isIdentifierChar;\n\n  return class extends Parser {\n    // Expose actual `tokTypes` and `tokContexts` to other plugins.\n    static get acornJsx() {\n      return acornJsx;\n    }\n\n    // Reads inline JSX contents token.\n    jsx_readToken() {\n      let out = '', chunkStart = this.pos;\n      for (;;) {\n        if (this.pos >= this.input.length)\n          this.raise(this.start, 'Unterminated JSX contents');\n        let ch = this.input.charCodeAt(this.pos);\n\n        switch (ch) {\n        case 60: // '<'\n        case 123: // '{'\n          if (this.pos === this.start) {\n            if (ch === 60 && this.exprAllowed) {\n              ++this.pos;\n              return this.finishToken(tok.jsxTagStart);\n            }\n            return this.getTokenFromCode(ch);\n          }\n          out += this.input.slice(chunkStart, this.pos);\n          return this.finishToken(tok.jsxText, out);\n\n        case 38: // '&'\n          out += this.input.slice(chunkStart, this.pos);\n          out += this.jsx_readEntity();\n          chunkStart = this.pos;\n          break;\n\n        case 62: // '>'\n        case 125: // '}'\n          this.raise(\n            this.pos,\n            \"Unexpected token `\" + this.input[this.pos] + \"`. Did you mean `\" +\n              (ch === 62 ? \"&gt;\" : \"&rbrace;\") + \"` or \" + \"`{\\\"\" + this.input[this.pos] + \"\\\"}\" + \"`?\"\n          );\n\n        default:\n          if (isNewLine(ch)) {\n            out += this.input.slice(chunkStart, this.pos);\n            out += this.jsx_readNewLine(true);\n            chunkStart = this.pos;\n          } else {\n            ++this.pos;\n          }\n        }\n      }\n    }\n\n    jsx_readNewLine(normalizeCRLF) {\n      let ch = this.input.charCodeAt(this.pos);\n      let out;\n      ++this.pos;\n      if (ch === 13 && this.input.charCodeAt(this.pos) === 10) {\n        ++this.pos;\n        out = normalizeCRLF ? '\\n' : '\\r\\n';\n      } else {\n        out = String.fromCharCode(ch);\n      }\n      if (this.options.locations) {\n        ++this.curLine;\n        this.lineStart = this.pos;\n      }\n\n      return out;\n    }\n\n    jsx_readString(quote) {\n      let out = '', chunkStart = ++this.pos;\n      for (;;) {\n        if (this.pos >= this.input.length)\n          this.raise(this.start, 'Unterminated string constant');\n        let ch = this.input.charCodeAt(this.pos);\n        if (ch === quote) break;\n        if (ch === 38) { // '&'\n          out += this.input.slice(chunkStart, this.pos);\n          out += this.jsx_readEntity();\n          chunkStart = this.pos;\n        } else if (isNewLine(ch)) {\n          out += this.input.slice(chunkStart, this.pos);\n          out += this.jsx_readNewLine(false);\n          chunkStart = this.pos;\n        } else {\n          ++this.pos;\n        }\n      }\n      out += this.input.slice(chunkStart, this.pos++);\n      return this.finishToken(tt.string, out);\n    }\n\n    jsx_readEntity() {\n      let str = '', count = 0, entity;\n      let ch = this.input[this.pos];\n      if (ch !== '&')\n        this.raise(this.pos, 'Entity must start with an ampersand');\n      let startPos = ++this.pos;\n      while (this.pos < this.input.length && count++ < 10) {\n        ch = this.input[this.pos++];\n        if (ch === ';') {\n          if (str[0] === '#') {\n            if (str[1] === 'x') {\n              str = str.substr(2);\n              if (hexNumber.test(str))\n                entity = String.fromCharCode(parseInt(str, 16));\n            } else {\n              str = str.substr(1);\n              if (decimalNumber.test(str))\n                entity = String.fromCharCode(parseInt(str, 10));\n            }\n          } else {\n            entity = XHTMLEntities[str];\n          }\n          break;\n        }\n        str += ch;\n      }\n      if (!entity) {\n        this.pos = startPos;\n        return '&';\n      }\n      return entity;\n    }\n\n    // Read a JSX identifier (valid tag or attribute name).\n    //\n    // Optimized version since JSX identifiers can't contain\n    // escape characters and so can be read as single slice.\n    // Also assumes that first character was already checked\n    // by isIdentifierStart in readToken.\n\n    jsx_readWord() {\n      let ch, start = this.pos;\n      do {\n        ch = this.input.charCodeAt(++this.pos);\n      } while (isIdentifierChar(ch) || ch === 45); // '-'\n      return this.finishToken(tok.jsxName, this.input.slice(start, this.pos));\n    }\n\n    // Parse next token as JSX identifier\n\n    jsx_parseIdentifier() {\n      let node = this.startNode();\n      if (this.type === tok.jsxName)\n        node.name = this.value;\n      else if (this.type.keyword)\n        node.name = this.type.keyword;\n      else\n        this.unexpected();\n      this.next();\n      return this.finishNode(node, 'JSXIdentifier');\n    }\n\n    // Parse namespaced identifier.\n\n    jsx_parseNamespacedName() {\n      let startPos = this.start, startLoc = this.startLoc;\n      let name = this.jsx_parseIdentifier();\n      if (!options.allowNamespaces || !this.eat(tt.colon)) return name;\n      var node = this.startNodeAt(startPos, startLoc);\n      node.namespace = name;\n      node.name = this.jsx_parseIdentifier();\n      return this.finishNode(node, 'JSXNamespacedName');\n    }\n\n    // Parses element name in any form - namespaced, member\n    // or single identifier.\n\n    jsx_parseElementName() {\n      if (this.type === tok.jsxTagEnd) return '';\n      let startPos = this.start, startLoc = this.startLoc;\n      let node = this.jsx_parseNamespacedName();\n      if (this.type === tt.dot && node.type === 'JSXNamespacedName' && !options.allowNamespacedObjects) {\n        this.unexpected();\n      }\n      while (this.eat(tt.dot)) {\n        let newNode = this.startNodeAt(startPos, startLoc);\n        newNode.object = node;\n        newNode.property = this.jsx_parseIdentifier();\n        node = this.finishNode(newNode, 'JSXMemberExpression');\n      }\n      return node;\n    }\n\n    // Parses any type of JSX attribute value.\n\n    jsx_parseAttributeValue() {\n      switch (this.type) {\n      case tt.braceL:\n        let node = this.jsx_parseExpressionContainer();\n        if (node.expression.type === 'JSXEmptyExpression')\n          this.raise(node.start, 'JSX attributes must only be assigned a non-empty expression');\n        return node;\n\n      case tok.jsxTagStart:\n      case tt.string:\n        return this.parseExprAtom();\n\n      default:\n        this.raise(this.start, 'JSX value should be either an expression or a quoted JSX text');\n      }\n    }\n\n    // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n    // and so it should start at the end of last read token (left brace) and finish\n    // at the beginning of the next one (right brace).\n\n    jsx_parseEmptyExpression() {\n      let node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc);\n      return this.finishNodeAt(node, 'JSXEmptyExpression', this.start, this.startLoc);\n    }\n\n    // Parses JSX expression enclosed into curly brackets.\n\n    jsx_parseExpressionContainer() {\n      let node = this.startNode();\n      this.next();\n      node.expression = this.type === tt.braceR\n        ? this.jsx_parseEmptyExpression()\n        : this.parseExpression();\n      this.expect(tt.braceR);\n      return this.finishNode(node, 'JSXExpressionContainer');\n    }\n\n    // Parses following JSX attribute name-value pair.\n\n    jsx_parseAttribute() {\n      let node = this.startNode();\n      if (this.eat(tt.braceL)) {\n        this.expect(tt.ellipsis);\n        node.argument = this.parseMaybeAssign();\n        this.expect(tt.braceR);\n        return this.finishNode(node, 'JSXSpreadAttribute');\n      }\n      node.name = this.jsx_parseNamespacedName();\n      node.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null;\n      return this.finishNode(node, 'JSXAttribute');\n    }\n\n    // Parses JSX opening tag starting after '<'.\n\n    jsx_parseOpeningElementAt(startPos, startLoc) {\n      let node = this.startNodeAt(startPos, startLoc);\n      node.attributes = [];\n      let nodeName = this.jsx_parseElementName();\n      if (nodeName) node.name = nodeName;\n      while (this.type !== tt.slash && this.type !== tok.jsxTagEnd)\n        node.attributes.push(this.jsx_parseAttribute());\n      node.selfClosing = this.eat(tt.slash);\n      this.expect(tok.jsxTagEnd);\n      return this.finishNode(node, nodeName ? 'JSXOpeningElement' : 'JSXOpeningFragment');\n    }\n\n    // Parses JSX closing tag starting after '</'.\n\n    jsx_parseClosingElementAt(startPos, startLoc) {\n      let node = this.startNodeAt(startPos, startLoc);\n      let nodeName = this.jsx_parseElementName();\n      if (nodeName) node.name = nodeName;\n      this.expect(tok.jsxTagEnd);\n      return this.finishNode(node, nodeName ? 'JSXClosingElement' : 'JSXClosingFragment');\n    }\n\n    // Parses entire JSX element, including it's opening tag\n    // (starting after '<'), attributes, contents and closing tag.\n\n    jsx_parseElementAt(startPos, startLoc) {\n      let node = this.startNodeAt(startPos, startLoc);\n      let children = [];\n      let openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc);\n      let closingElement = null;\n\n      if (!openingElement.selfClosing) {\n        contents: for (;;) {\n          switch (this.type) {\n          case tok.jsxTagStart:\n            startPos = this.start; startLoc = this.startLoc;\n            this.next();\n            if (this.eat(tt.slash)) {\n              closingElement = this.jsx_parseClosingElementAt(startPos, startLoc);\n              break contents;\n            }\n            children.push(this.jsx_parseElementAt(startPos, startLoc));\n            break;\n\n          case tok.jsxText:\n            children.push(this.parseExprAtom());\n            break;\n\n          case tt.braceL:\n            children.push(this.jsx_parseExpressionContainer());\n            break;\n\n          default:\n            this.unexpected();\n          }\n        }\n        if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n          this.raise(\n            closingElement.start,\n            'Expected corresponding JSX closing tag for <' + getQualifiedJSXName(openingElement.name) + '>');\n        }\n      }\n      let fragmentOrElement = openingElement.name ? 'Element' : 'Fragment';\n\n      node['opening' + fragmentOrElement] = openingElement;\n      node['closing' + fragmentOrElement] = closingElement;\n      node.children = children;\n      if (this.type === tt.relational && this.value === \"<\") {\n        this.raise(this.start, \"Adjacent JSX elements must be wrapped in an enclosing tag\");\n      }\n      return this.finishNode(node, 'JSX' + fragmentOrElement);\n    }\n\n    // Parse JSX text\n\n    jsx_parseText() {\n      let node = this.parseLiteral(this.value);\n      node.type = \"JSXText\";\n      return node;\n    }\n\n    // Parses entire JSX element from current position.\n\n    jsx_parseElement() {\n      let startPos = this.start, startLoc = this.startLoc;\n      this.next();\n      return this.jsx_parseElementAt(startPos, startLoc);\n    }\n\n    parseExprAtom(refShortHandDefaultPos) {\n      if (this.type === tok.jsxText)\n        return this.jsx_parseText();\n      else if (this.type === tok.jsxTagStart)\n        return this.jsx_parseElement();\n      else\n        return super.parseExprAtom(refShortHandDefaultPos);\n    }\n\n    readToken(code) {\n      let context = this.curContext();\n\n      if (context === tc_expr) return this.jsx_readToken();\n\n      if (context === tc_oTag || context === tc_cTag) {\n        if (isIdentifierStart(code)) return this.jsx_readWord();\n\n        if (code == 62) {\n          ++this.pos;\n          return this.finishToken(tok.jsxTagEnd);\n        }\n\n        if ((code === 34 || code === 39) && context == tc_oTag)\n          return this.jsx_readString(code);\n      }\n\n      if (code === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33) {\n        ++this.pos;\n        return this.finishToken(tok.jsxTagStart);\n      }\n      return super.readToken(code);\n    }\n\n    updateContext(prevType) {\n      if (this.type == tt.braceL) {\n        var curContext = this.curContext();\n        if (curContext == tc_oTag) this.context.push(tokContexts.b_expr);\n        else if (curContext == tc_expr) this.context.push(tokContexts.b_tmpl);\n        else super.updateContext(prevType);\n        this.exprAllowed = true;\n      } else if (this.type === tt.slash && prevType === tok.jsxTagStart) {\n        this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore\n        this.context.push(tc_cTag); // reconsider as closing tag context\n        this.exprAllowed = false;\n      } else {\n        return super.updateContext(prevType);\n      }\n    }\n  };\n}\n\n\n/***/ }),\n\n/***/ 7591:\n/***/ ((module) => {\n\nmodule.exports = {\n  quot: '\\u0022',\n  amp: '&',\n  apos: '\\u0027',\n  lt: '<',\n  gt: '>',\n  nbsp: '\\u00A0',\n  iexcl: '\\u00A1',\n  cent: '\\u00A2',\n  pound: '\\u00A3',\n  curren: '\\u00A4',\n  yen: '\\u00A5',\n  brvbar: '\\u00A6',\n  sect: '\\u00A7',\n  uml: '\\u00A8',\n  copy: '\\u00A9',\n  ordf: '\\u00AA',\n  laquo: '\\u00AB',\n  not: '\\u00AC',\n  shy: '\\u00AD',\n  reg: '\\u00AE',\n  macr: '\\u00AF',\n  deg: '\\u00B0',\n  plusmn: '\\u00B1',\n  sup2: '\\u00B2',\n  sup3: '\\u00B3',\n  acute: '\\u00B4',\n  micro: '\\u00B5',\n  para: '\\u00B6',\n  middot: '\\u00B7',\n  cedil: '\\u00B8',\n  sup1: '\\u00B9',\n  ordm: '\\u00BA',\n  raquo: '\\u00BB',\n  frac14: '\\u00BC',\n  frac12: '\\u00BD',\n  frac34: '\\u00BE',\n  iquest: '\\u00BF',\n  Agrave: '\\u00C0',\n  Aacute: '\\u00C1',\n  Acirc: '\\u00C2',\n  Atilde: '\\u00C3',\n  Auml: '\\u00C4',\n  Aring: '\\u00C5',\n  AElig: '\\u00C6',\n  Ccedil: '\\u00C7',\n  Egrave: '\\u00C8',\n  Eacute: '\\u00C9',\n  Ecirc: '\\u00CA',\n  Euml: '\\u00CB',\n  Igrave: '\\u00CC',\n  Iacute: '\\u00CD',\n  Icirc: '\\u00CE',\n  Iuml: '\\u00CF',\n  ETH: '\\u00D0',\n  Ntilde: '\\u00D1',\n  Ograve: '\\u00D2',\n  Oacute: '\\u00D3',\n  Ocirc: '\\u00D4',\n  Otilde: '\\u00D5',\n  Ouml: '\\u00D6',\n  times: '\\u00D7',\n  Oslash: '\\u00D8',\n  Ugrave: '\\u00D9',\n  Uacute: '\\u00DA',\n  Ucirc: '\\u00DB',\n  Uuml: '\\u00DC',\n  Yacute: '\\u00DD',\n  THORN: '\\u00DE',\n  szlig: '\\u00DF',\n  agrave: '\\u00E0',\n  aacute: '\\u00E1',\n  acirc: '\\u00E2',\n  atilde: '\\u00E3',\n  auml: '\\u00E4',\n  aring: '\\u00E5',\n  aelig: '\\u00E6',\n  ccedil: '\\u00E7',\n  egrave: '\\u00E8',\n  eacute: '\\u00E9',\n  ecirc: '\\u00EA',\n  euml: '\\u00EB',\n  igrave: '\\u00EC',\n  iacute: '\\u00ED',\n  icirc: '\\u00EE',\n  iuml: '\\u00EF',\n  eth: '\\u00F0',\n  ntilde: '\\u00F1',\n  ograve: '\\u00F2',\n  oacute: '\\u00F3',\n  ocirc: '\\u00F4',\n  otilde: '\\u00F5',\n  ouml: '\\u00F6',\n  divide: '\\u00F7',\n  oslash: '\\u00F8',\n  ugrave: '\\u00F9',\n  uacute: '\\u00FA',\n  ucirc: '\\u00FB',\n  uuml: '\\u00FC',\n  yacute: '\\u00FD',\n  thorn: '\\u00FE',\n  yuml: '\\u00FF',\n  OElig: '\\u0152',\n  oelig: '\\u0153',\n  Scaron: '\\u0160',\n  scaron: '\\u0161',\n  Yuml: '\\u0178',\n  fnof: '\\u0192',\n  circ: '\\u02C6',\n  tilde: '\\u02DC',\n  Alpha: '\\u0391',\n  Beta: '\\u0392',\n  Gamma: '\\u0393',\n  Delta: '\\u0394',\n  Epsilon: '\\u0395',\n  Zeta: '\\u0396',\n  Eta: '\\u0397',\n  Theta: '\\u0398',\n  Iota: '\\u0399',\n  Kappa: '\\u039A',\n  Lambda: '\\u039B',\n  Mu: '\\u039C',\n  Nu: '\\u039D',\n  Xi: '\\u039E',\n  Omicron: '\\u039F',\n  Pi: '\\u03A0',\n  Rho: '\\u03A1',\n  Sigma: '\\u03A3',\n  Tau: '\\u03A4',\n  Upsilon: '\\u03A5',\n  Phi: '\\u03A6',\n  Chi: '\\u03A7',\n  Psi: '\\u03A8',\n  Omega: '\\u03A9',\n  alpha: '\\u03B1',\n  beta: '\\u03B2',\n  gamma: '\\u03B3',\n  delta: '\\u03B4',\n  epsilon: '\\u03B5',\n  zeta: '\\u03B6',\n  eta: '\\u03B7',\n  theta: '\\u03B8',\n  iota: '\\u03B9',\n  kappa: '\\u03BA',\n  lambda: '\\u03BB',\n  mu: '\\u03BC',\n  nu: '\\u03BD',\n  xi: '\\u03BE',\n  omicron: '\\u03BF',\n  pi: '\\u03C0',\n  rho: '\\u03C1',\n  sigmaf: '\\u03C2',\n  sigma: '\\u03C3',\n  tau: '\\u03C4',\n  upsilon: '\\u03C5',\n  phi: '\\u03C6',\n  chi: '\\u03C7',\n  psi: '\\u03C8',\n  omega: '\\u03C9',\n  thetasym: '\\u03D1',\n  upsih: '\\u03D2',\n  piv: '\\u03D6',\n  ensp: '\\u2002',\n  emsp: '\\u2003',\n  thinsp: '\\u2009',\n  zwnj: '\\u200C',\n  zwj: '\\u200D',\n  lrm: '\\u200E',\n  rlm: '\\u200F',\n  ndash: '\\u2013',\n  mdash: '\\u2014',\n  lsquo: '\\u2018',\n  rsquo: '\\u2019',\n  sbquo: '\\u201A',\n  ldquo: '\\u201C',\n  rdquo: '\\u201D',\n  bdquo: '\\u201E',\n  dagger: '\\u2020',\n  Dagger: '\\u2021',\n  bull: '\\u2022',\n  hellip: '\\u2026',\n  permil: '\\u2030',\n  prime: '\\u2032',\n  Prime: '\\u2033',\n  lsaquo: '\\u2039',\n  rsaquo: '\\u203A',\n  oline: '\\u203E',\n  frasl: '\\u2044',\n  euro: '\\u20AC',\n  image: '\\u2111',\n  weierp: '\\u2118',\n  real: '\\u211C',\n  trade: '\\u2122',\n  alefsym: '\\u2135',\n  larr: '\\u2190',\n  uarr: '\\u2191',\n  rarr: '\\u2192',\n  darr: '\\u2193',\n  harr: '\\u2194',\n  crarr: '\\u21B5',\n  lArr: '\\u21D0',\n  uArr: '\\u21D1',\n  rArr: '\\u21D2',\n  dArr: '\\u21D3',\n  hArr: '\\u21D4',\n  forall: '\\u2200',\n  part: '\\u2202',\n  exist: '\\u2203',\n  empty: '\\u2205',\n  nabla: '\\u2207',\n  isin: '\\u2208',\n  notin: '\\u2209',\n  ni: '\\u220B',\n  prod: '\\u220F',\n  sum: '\\u2211',\n  minus: '\\u2212',\n  lowast: '\\u2217',\n  radic: '\\u221A',\n  prop: '\\u221D',\n  infin: '\\u221E',\n  ang: '\\u2220',\n  and: '\\u2227',\n  or: '\\u2228',\n  cap: '\\u2229',\n  cup: '\\u222A',\n  'int': '\\u222B',\n  there4: '\\u2234',\n  sim: '\\u223C',\n  cong: '\\u2245',\n  asymp: '\\u2248',\n  ne: '\\u2260',\n  equiv: '\\u2261',\n  le: '\\u2264',\n  ge: '\\u2265',\n  sub: '\\u2282',\n  sup: '\\u2283',\n  nsub: '\\u2284',\n  sube: '\\u2286',\n  supe: '\\u2287',\n  oplus: '\\u2295',\n  otimes: '\\u2297',\n  perp: '\\u22A5',\n  sdot: '\\u22C5',\n  lceil: '\\u2308',\n  rceil: '\\u2309',\n  lfloor: '\\u230A',\n  rfloor: '\\u230B',\n  lang: '\\u2329',\n  rang: '\\u232A',\n  loz: '\\u25CA',\n  spades: '\\u2660',\n  clubs: '\\u2663',\n  hearts: '\\u2665',\n  diams: '\\u2666'\n};\n\n\n/***/ }),\n\n/***/ 7965:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar deselectCurrent = __webpack_require__(6426);\n\nvar clipboardToIE11Formatting = {\n  \"text/plain\": \"Text\",\n  \"text/html\": \"Url\",\n  \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n  var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n  var debug,\n    message,\n    reselectPrevious,\n    range,\n    selection,\n    mark,\n    success = false;\n  if (!options) {\n    options = {};\n  }\n  debug = options.debug || false;\n  try {\n    reselectPrevious = deselectCurrent();\n\n    range = document.createRange();\n    selection = document.getSelection();\n\n    mark = document.createElement(\"span\");\n    mark.textContent = text;\n    // avoid screen readers from reading out loud the text\n    mark.ariaHidden = \"true\"\n    // reset user styles for span element\n    mark.style.all = \"unset\";\n    // prevents scrolling to the end of the page\n    mark.style.position = \"fixed\";\n    mark.style.top = 0;\n    mark.style.clip = \"rect(0, 0, 0, 0)\";\n    // used to preserve spaces and line breaks\n    mark.style.whiteSpace = \"pre\";\n    // do not inherit user-select (it may be `none`)\n    mark.style.webkitUserSelect = \"text\";\n    mark.style.MozUserSelect = \"text\";\n    mark.style.msUserSelect = \"text\";\n    mark.style.userSelect = \"text\";\n    mark.addEventListener(\"copy\", function(e) {\n      e.stopPropagation();\n      if (options.format) {\n        e.preventDefault();\n        if (typeof e.clipboardData === \"undefined\") { // IE 11\n          debug && console.warn(\"unable to use e.clipboardData\");\n          debug && console.warn(\"trying IE specific stuff\");\n          window.clipboardData.clearData();\n          var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n          window.clipboardData.setData(format, text);\n        } else { // all other browsers\n          e.clipboardData.clearData();\n          e.clipboardData.setData(options.format, text);\n        }\n      }\n      if (options.onCopy) {\n        e.preventDefault();\n        options.onCopy(e.clipboardData);\n      }\n    });\n\n    document.body.appendChild(mark);\n\n    range.selectNodeContents(mark);\n    selection.addRange(range);\n\n    var successful = document.execCommand(\"copy\");\n    if (!successful) {\n      throw new Error(\"copy command was unsuccessful\");\n    }\n    success = true;\n  } catch (err) {\n    debug && console.error(\"unable to copy using execCommand: \", err);\n    debug && console.warn(\"trying IE specific stuff\");\n    try {\n      window.clipboardData.setData(options.format || \"text\", text);\n      options.onCopy && options.onCopy(window.clipboardData);\n      success = true;\n    } catch (err) {\n      debug && console.error(\"unable to copy using clipboardData: \", err);\n      debug && console.error(\"falling back to prompt\");\n      message = format(\"message\" in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == \"function\") {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nmodule.exports = copy;\n\n\n/***/ }),\n\n/***/ 3387:\n/***/ ((module) => {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ 8184:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(7574)('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(3341)(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ 4228:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar isObject = __webpack_require__(3305);\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ 1464:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(7221);\nvar toLength = __webpack_require__(1485);\nvar toAbsoluteIndex = __webpack_require__(157);\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n/***/ }),\n\n/***/ 6179:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(5052);\nvar IObject = __webpack_require__(1249);\nvar toObject = __webpack_require__(8270);\nvar toLength = __webpack_require__(1485);\nvar asc = __webpack_require__(5572);\nmodule.exports = function (TYPE, $create) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  var create = $create || asc;\n  return function ($this, callbackfn, that) {\n    var O = toObject($this);\n    var self = IObject(O);\n    var f = ctx(callbackfn, that, 3);\n    var length = toLength(self.length);\n    var index = 0;\n    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n    var val, res;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      val = self[index];\n      res = f(val, index, O);\n      if (TYPE) {\n        if (IS_MAP) result[index] = res;   // map\n        else if (res) switch (TYPE) {\n          case 3: return true;             // some\n          case 5: return val;              // find\n          case 6: return index;            // findIndex\n          case 2: result.push(val);        // filter\n        } else if (IS_EVERY) return false; // every\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n  };\n};\n\n\n/***/ }),\n\n/***/ 3606:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar isObject = __webpack_require__(3305);\nvar isArray = __webpack_require__(7981);\nvar SPECIES = __webpack_require__(7574)('species');\n\nmodule.exports = function (original) {\n  var C;\n  if (isArray(original)) {\n    C = original.constructor;\n    // cross-realm fallback\n    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n    if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n\n\n/***/ }),\n\n/***/ 5572:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = __webpack_require__(3606);\n\nmodule.exports = function (original, length) {\n  return new (speciesConstructor(original))(length);\n};\n\n\n/***/ }),\n\n/***/ 4848:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(5089);\nvar TAG = __webpack_require__(7574)('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ 5089:\n/***/ ((module) => {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ 6094:\n/***/ ((module) => {\n\nvar core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ 7227:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\nvar $defineProperty = __webpack_require__(7967);\nvar createDesc = __webpack_require__(1996);\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n\n\n/***/ }),\n\n/***/ 5052:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(3387);\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ 3344:\n/***/ ((module) => {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ 1763:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(9448)(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ 6034:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar isObject = __webpack_require__(3305);\nvar document = (__webpack_require__(7526).document);\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 6140:\n/***/ ((module) => {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ 5969:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(1311);\nvar gOPS = __webpack_require__(1060);\nvar pIE = __webpack_require__(8449);\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n\n\n/***/ }),\n\n/***/ 2127:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar global = __webpack_require__(7526);\nvar core = __webpack_require__(6094);\nvar hide = __webpack_require__(3341);\nvar redefine = __webpack_require__(8859);\nvar ctx = __webpack_require__(5052);\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ 5203:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar MATCH = __webpack_require__(7574)('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n\n\n/***/ }),\n\n/***/ 9448:\n/***/ ((module) => {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ 9461:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports = __webpack_require__(4556)('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ 7526:\n/***/ ((module) => {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ 7917:\n/***/ ((module) => {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ 3341:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar dP = __webpack_require__(7967);\nvar createDesc = __webpack_require__(1996);\nmodule.exports = __webpack_require__(1763) ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ 1308:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar document = (__webpack_require__(7526).document);\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ 2956:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nmodule.exports = !__webpack_require__(1763) && !__webpack_require__(9448)(function () {\n  return Object.defineProperty(__webpack_require__(6034)('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ 8880:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar isObject = __webpack_require__(3305);\nvar setPrototypeOf = (__webpack_require__(5170).set);\nmodule.exports = function (that, target, C) {\n  var S = target.constructor;\n  var P;\n  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n    setPrototypeOf(that, P);\n  } return that;\n};\n\n\n/***/ }),\n\n/***/ 1249:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(5089);\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ 7981:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(5089);\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ 3305:\n/***/ ((module) => {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ 5411:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(3305);\nvar cof = __webpack_require__(5089);\nvar MATCH = __webpack_require__(7574)('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ 6032:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\nvar create = __webpack_require__(4719);\nvar descriptor = __webpack_require__(1996);\nvar setToStringTag = __webpack_require__(3844);\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(3341)(IteratorPrototype, __webpack_require__(7574)('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ 8175:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(2750);\nvar $export = __webpack_require__(2127);\nvar redefine = __webpack_require__(8859);\nvar hide = __webpack_require__(3341);\nvar Iterators = __webpack_require__(906);\nvar $iterCreate = __webpack_require__(6032);\nvar setToStringTag = __webpack_require__(3844);\nvar getPrototypeOf = __webpack_require__(627);\nvar ITERATOR = __webpack_require__(7574)('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n/***/ }),\n\n/***/ 4970:\n/***/ ((module) => {\n\nmodule.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ 906:\n/***/ ((module) => {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 2750:\n/***/ ((module) => {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 2988:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar META = __webpack_require__(4415)('meta');\nvar isObject = __webpack_require__(3305);\nvar has = __webpack_require__(7917);\nvar setDesc = (__webpack_require__(7967).f);\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !__webpack_require__(9448)(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n\n\n/***/ }),\n\n/***/ 4719:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(4228);\nvar dPs = __webpack_require__(1626);\nvar enumBugKeys = __webpack_require__(6140);\nvar IE_PROTO = __webpack_require__(766)('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(6034)('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  (__webpack_require__(1308).appendChild)(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 7967:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\nvar anObject = __webpack_require__(4228);\nvar IE8_DOM_DEFINE = __webpack_require__(2956);\nvar toPrimitive = __webpack_require__(3048);\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(1763) ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ 1626:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar dP = __webpack_require__(7967);\nvar anObject = __webpack_require__(4228);\nvar getKeys = __webpack_require__(1311);\n\nmodule.exports = __webpack_require__(1763) ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ 8641:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\nvar pIE = __webpack_require__(8449);\nvar createDesc = __webpack_require__(1996);\nvar toIObject = __webpack_require__(7221);\nvar toPrimitive = __webpack_require__(3048);\nvar has = __webpack_require__(7917);\nvar IE8_DOM_DEFINE = __webpack_require__(2956);\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(1763) ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 4765:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(7221);\nvar gOPN = (__webpack_require__(9415).f);\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n/***/ }),\n\n/***/ 9415:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(4561);\nvar hiddenKeys = (__webpack_require__(6140).concat)('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 1060:\n/***/ ((__unused_webpack_module, exports) => {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 627:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(7917);\nvar toObject = __webpack_require__(8270);\nvar IE_PROTO = __webpack_require__(766)('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ 4561:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar has = __webpack_require__(7917);\nvar toIObject = __webpack_require__(7221);\nvar arrayIndexOf = __webpack_require__(1464)(false);\nvar IE_PROTO = __webpack_require__(766)('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ 1311:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(4561);\nvar enumBugKeys = __webpack_require__(6140);\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 8449:\n/***/ ((__unused_webpack_module, exports) => {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 923:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(2127);\nvar core = __webpack_require__(6094);\nvar fails = __webpack_require__(9448);\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ 6222:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// all object keys, includes non-enumerable and symbols\nvar gOPN = __webpack_require__(9415);\nvar gOPS = __webpack_require__(1060);\nvar anObject = __webpack_require__(4228);\nvar Reflect = (__webpack_require__(7526).Reflect);\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n  var keys = gOPN.f(anObject(it));\n  var getSymbols = gOPS.f;\n  return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 1996:\n/***/ ((module) => {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ 8859:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar global = __webpack_require__(7526);\nvar hide = __webpack_require__(3341);\nvar has = __webpack_require__(7917);\nvar SRC = __webpack_require__(4415)('src');\nvar $toString = __webpack_require__(9461);\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n(__webpack_require__(6094).inspectSource) = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ 5170:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(3305);\nvar anObject = __webpack_require__(4228);\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = __webpack_require__(5052)(Function.call, (__webpack_require__(8641).f)(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n\n\n/***/ }),\n\n/***/ 3844:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar def = (__webpack_require__(7967).f);\nvar has = __webpack_require__(7917);\nvar TAG = __webpack_require__(7574)('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ 766:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar shared = __webpack_require__(4556)('keys');\nvar uid = __webpack_require__(4415);\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 4556:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar core = __webpack_require__(6094);\nvar global = __webpack_require__(7526);\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(2750) ? 'pure' : 'global',\n  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ 6884:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\nvar fails = __webpack_require__(9448);\n\nmodule.exports = function (method, arg) {\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call\n    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n  });\n};\n\n\n/***/ }),\n\n/***/ 1212:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar toInteger = __webpack_require__(7087);\nvar defined = __webpack_require__(3344);\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n/***/ }),\n\n/***/ 8942:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(5411);\nvar defined = __webpack_require__(3344);\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ 629:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar $export = __webpack_require__(2127);\nvar defined = __webpack_require__(3344);\nvar fails = __webpack_require__(9448);\nvar spaces = __webpack_require__(8451);\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n\n\n/***/ }),\n\n/***/ 8451:\n/***/ ((module) => {\n\nmodule.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ 157:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar toInteger = __webpack_require__(7087);\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ 7087:\n/***/ ((module) => {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ 7221:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(1249);\nvar defined = __webpack_require__(3344);\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ 1485:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(7087);\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 8270:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(3344);\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ 3048:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(3305);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 4415:\n/***/ ((module) => {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ 5392:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar global = __webpack_require__(7526);\nvar core = __webpack_require__(6094);\nvar LIBRARY = __webpack_require__(2750);\nvar wksExt = __webpack_require__(7960);\nvar defineProperty = (__webpack_require__(7967).f);\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n/***/ }),\n\n/***/ 7960:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\nexports.f = __webpack_require__(7574);\n\n\n/***/ }),\n\n/***/ 7574:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar store = __webpack_require__(4556)('wks');\nvar uid = __webpack_require__(4415);\nvar Symbol = (__webpack_require__(7526).Symbol);\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ 9813:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\nvar $export = __webpack_require__(2127);\nvar $filter = __webpack_require__(6179)(2);\n\n$export($export.P + $export.F * !__webpack_require__(6884)([].filter, true), 'Array', {\n  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments[1]);\n  }\n});\n\n\n/***/ }),\n\n/***/ 3504:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\nvar $export = __webpack_require__(2127);\nvar $forEach = __webpack_require__(6179)(0);\nvar STRICT = __webpack_require__(6884)([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n  forEach: function forEach(callbackfn /* , thisArg */) {\n    return $forEach(this, callbackfn, arguments[1]);\n  }\n});\n\n\n/***/ }),\n\n/***/ 5165:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(8184);\nvar step = __webpack_require__(4970);\nvar Iterators = __webpack_require__(906);\nvar toIObject = __webpack_require__(7221);\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(8175)(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ 4509:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\nvar global = __webpack_require__(7526);\nvar has = __webpack_require__(7917);\nvar cof = __webpack_require__(5089);\nvar inheritIfRequired = __webpack_require__(8880);\nvar toPrimitive = __webpack_require__(3048);\nvar fails = __webpack_require__(9448);\nvar gOPN = (__webpack_require__(9415).f);\nvar gOPD = (__webpack_require__(8641).f);\nvar dP = (__webpack_require__(7967).f);\nvar $trim = (__webpack_require__(629).trim);\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(__webpack_require__(4719)(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, false);\n  if (typeof it == 'string' && it.length > 2) {\n    it = TRIM ? it.trim() : $trim(it, 3);\n    var first = it.charCodeAt(0);\n    var third, radix, maxCode;\n    if (first === 43 || first === 45) {\n      third = it.charCodeAt(2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (it.charCodeAt(1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n        default: return +it;\n      }\n      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n        code = digits.charCodeAt(i);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n  $Number = function Number(value) {\n    var it = arguments.length < 1 ? 0 : value;\n    var that = this;\n    return that instanceof $Number\n      // check on 1..constructor(foo) case\n      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n  };\n  for (var keys = __webpack_require__(1763) ? gOPN(Base) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES6 (in case, if modules with ES6 Number statics required before):\n    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (has(Base, key = keys[j]) && !has($Number, key)) {\n      dP($Number, key, gOPD(Base, key));\n    }\n  }\n  $Number.prototype = proto;\n  proto.constructor = $Number;\n  __webpack_require__(8859)(global, NUMBER, $Number);\n}\n\n\n/***/ }),\n\n/***/ 7067:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\nvar $export = __webpack_require__(2127);\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !__webpack_require__(1763), 'Object', { defineProperties: __webpack_require__(1626) });\n\n\n/***/ }),\n\n/***/ 6064:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\nvar $export = __webpack_require__(2127);\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(1763), 'Object', { defineProperty: (__webpack_require__(7967).f) });\n\n\n/***/ }),\n\n/***/ 2642:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(7221);\nvar $getOwnPropertyDescriptor = (__webpack_require__(8641).f);\n\n__webpack_require__(923)('getOwnPropertyDescriptor', function () {\n  return function getOwnPropertyDescriptor(it, key) {\n    return $getOwnPropertyDescriptor(toIObject(it), key);\n  };\n});\n\n\n/***/ }),\n\n/***/ 8647:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(8270);\nvar $keys = __webpack_require__(1311);\n\n__webpack_require__(923)('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n\n\n/***/ }),\n\n/***/ 7482:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n// 19.1.3.6 Object.prototype.toString()\nvar classof = __webpack_require__(4848);\nvar test = {};\ntest[__webpack_require__(7574)('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n  __webpack_require__(8859)(Object.prototype, 'toString', function toString() {\n    return '[object ' + classof(this) + ']';\n  }, true);\n}\n\n\n/***/ }),\n\n/***/ 8872:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(2127);\nvar context = __webpack_require__(8942);\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(5203)(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ 2975:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\nvar $at = __webpack_require__(1212)(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(8175)(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ 9650:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(7526);\nvar has = __webpack_require__(7917);\nvar DESCRIPTORS = __webpack_require__(1763);\nvar $export = __webpack_require__(2127);\nvar redefine = __webpack_require__(8859);\nvar META = (__webpack_require__(2988).KEY);\nvar $fails = __webpack_require__(9448);\nvar shared = __webpack_require__(4556);\nvar setToStringTag = __webpack_require__(3844);\nvar uid = __webpack_require__(4415);\nvar wks = __webpack_require__(7574);\nvar wksExt = __webpack_require__(7960);\nvar wksDefine = __webpack_require__(5392);\nvar enumKeys = __webpack_require__(5969);\nvar isArray = __webpack_require__(7981);\nvar anObject = __webpack_require__(4228);\nvar isObject = __webpack_require__(3305);\nvar toObject = __webpack_require__(8270);\nvar toIObject = __webpack_require__(7221);\nvar toPrimitive = __webpack_require__(3048);\nvar createDesc = __webpack_require__(1996);\nvar _create = __webpack_require__(4719);\nvar gOPNExt = __webpack_require__(4765);\nvar $GOPD = __webpack_require__(8641);\nvar $GOPS = __webpack_require__(1060);\nvar $DP = __webpack_require__(7967);\nvar $keys = __webpack_require__(1311);\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  (__webpack_require__(9415).f) = gOPNExt.f = $getOwnPropertyNames;\n  (__webpack_require__(8449).f) = $propertyIsEnumerable;\n  $GOPS.f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !__webpack_require__(2750)) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return $GOPS.f(toObject(it));\n  }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(3341)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n/***/ }),\n\n/***/ 9087:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(2127);\nvar $includes = __webpack_require__(1464)(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n__webpack_require__(8184)('includes');\n\n\n/***/ }),\n\n/***/ 4614:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = __webpack_require__(2127);\nvar ownKeys = __webpack_require__(6222);\nvar toIObject = __webpack_require__(7221);\nvar gOPD = __webpack_require__(8641);\nvar createProperty = __webpack_require__(7227);\n\n$export($export.S, 'Object', {\n  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n    var O = toIObject(object);\n    var getDesc = gOPD.f;\n    var keys = ownKeys(O);\n    var result = {};\n    var i = 0;\n    var key, desc;\n    while (keys.length > i) {\n      desc = getDesc(O, key = keys[i++]);\n      if (desc !== undefined) createProperty(result, key, desc);\n    }\n    return result;\n  }\n});\n\n\n/***/ }),\n\n/***/ 5890:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\nvar $iterators = __webpack_require__(5165);\nvar getKeys = __webpack_require__(1311);\nvar redefine = __webpack_require__(8859);\nvar global = __webpack_require__(7526);\nvar hide = __webpack_require__(3341);\nvar Iterators = __webpack_require__(906);\nvar wks = __webpack_require__(7574);\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n\n\n/***/ }),\n\n/***/ 4744:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n/***/ }),\n\n/***/ 2849:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n\n/***/ 6311:\n/***/ ((module) => {\n\n//\n// format - printf-like string formatting for JavaScript\n// github.com/samsonjs/format\n// @_sjs\n//\n// Copyright 2010 - 2013 Sami Samhuri <sami@samhuri.net>\n//\n// MIT License\n// http://sjs.mit-license.org\n//\n\n;(function() {\n\n  //// Export the API\n  var namespace;\n\n  // CommonJS / Node module\n  if (true) {\n    namespace = module.exports = format;\n  }\n\n  // Browsers and other environments\n  else {}\n\n  namespace.format = format;\n  namespace.vsprintf = vsprintf;\n\n  if (typeof console !== 'undefined' && typeof console.log === 'function') {\n    namespace.printf = printf;\n  }\n\n  function printf(/* ... */) {\n    console.log(format.apply(null, arguments));\n  }\n\n  function vsprintf(fmt, replacements) {\n    return format.apply(null, [fmt].concat(replacements));\n  }\n\n  function format(fmt) {\n    var argIndex = 1 // skip initial format argument\n      , args = [].slice.call(arguments)\n      , i = 0\n      , n = fmt.length\n      , result = ''\n      , c\n      , escaped = false\n      , arg\n      , tmp\n      , leadingZero = false\n      , precision\n      , nextArg = function() { return args[argIndex++]; }\n      , slurpNumber = function() {\n          var digits = '';\n          while (/\\d/.test(fmt[i])) {\n            digits += fmt[i++];\n            c = fmt[i];\n          }\n          return digits.length > 0 ? parseInt(digits) : null;\n        }\n      ;\n    for (; i < n; ++i) {\n      c = fmt[i];\n      if (escaped) {\n        escaped = false;\n        if (c == '.') {\n          leadingZero = false;\n          c = fmt[++i];\n        }\n        else if (c == '0' && fmt[i + 1] == '.') {\n          leadingZero = true;\n          i += 2;\n          c = fmt[i];\n        }\n        else {\n          leadingZero = true;\n        }\n        precision = slurpNumber();\n        switch (c) {\n        case 'b': // number in binary\n          result += parseInt(nextArg(), 10).toString(2);\n          break;\n        case 'c': // character\n          arg = nextArg();\n          if (typeof arg === 'string' || arg instanceof String)\n            result += arg;\n          else\n            result += String.fromCharCode(parseInt(arg, 10));\n          break;\n        case 'd': // number in decimal\n          result += parseInt(nextArg(), 10);\n          break;\n        case 'f': // floating point number\n          tmp = String(parseFloat(nextArg()).toFixed(precision || 6));\n          result += leadingZero ? tmp : tmp.replace(/^0/, '');\n          break;\n        case 'j': // JSON\n          result += JSON.stringify(nextArg());\n          break;\n        case 'o': // number in octal\n          result += '0' + parseInt(nextArg(), 10).toString(8);\n          break;\n        case 's': // string\n          result += nextArg();\n          break;\n        case 'x': // lowercase hexadecimal\n          result += '0x' + parseInt(nextArg(), 10).toString(16);\n          break;\n        case 'X': // uppercase hexadecimal\n          result += '0x' + parseInt(nextArg(), 10).toString(16).toUpperCase();\n          break;\n        default:\n          result += c;\n          break;\n        }\n      } else if (c === '%') {\n        escaped = true;\n      } else {\n        result += c;\n      }\n    }\n    return result;\n  }\n\n}());\n\n\n/***/ }),\n\n/***/ 8893:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar html = __webpack_require__(1242)\nvar svg = __webpack_require__(7805)\nvar find = __webpack_require__(3668)\nvar hastToReact = __webpack_require__(9052)\nvar spaces = __webpack_require__(1500)\nvar commas = __webpack_require__(6343)\nvar style = __webpack_require__(2428)\nvar ns = __webpack_require__(8843)\nvar convert = __webpack_require__(2679)\n\nvar root = convert('root')\nvar element = convert('element')\nvar text = convert('text')\n\nmodule.exports = wrapper\n\nfunction wrapper(h, node, options) {\n  var settings = options || {}\n  var r = react(h)\n  var v = vue(h)\n  var vd = vdom(h)\n  var prefix\n\n  if (typeof h !== 'function') {\n    throw new Error('h is not a function')\n  }\n\n  if (typeof settings === 'string' || typeof settings === 'boolean') {\n    prefix = settings\n    settings = {}\n  } else {\n    prefix = settings.prefix\n  }\n\n  if (root(node)) {\n    node =\n      node.children.length === 1 && element(node.children[0])\n        ? node.children[0]\n        : {\n            type: 'element',\n            tagName: 'div',\n            properties: {},\n            children: node.children\n          }\n  } else if (!element(node)) {\n    throw new Error(\n      'Expected root or element, not `' + ((node && node.type) || node) + '`'\n    )\n  }\n\n  return toH(h, node, {\n    schema: settings.space === 'svg' ? svg : html,\n    prefix: prefix == null ? (r || v || vd ? 'h-' : null) : prefix,\n    key: 0,\n    react: r,\n    vue: v,\n    vdom: vd,\n    hyperscript: hyperscript(h)\n  })\n}\n\n// Transform a hast node through a hyperscript interface to *anything*!\nfunction toH(h, node, ctx) {\n  var parentSchema = ctx.schema\n  var schema = parentSchema\n  var name = node.tagName\n  var attributes = {}\n  var nodes = []\n  var index = -1\n  var key\n  var value\n\n  if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n    schema = svg\n    ctx.schema = schema\n  }\n\n  for (key in node.properties) {\n    addAttribute(attributes, key, node.properties[key], ctx, name)\n  }\n\n  if (ctx.vdom) {\n    if (schema.space === 'html') {\n      name = name.toUpperCase()\n    } else {\n      attributes.namespace = ns[schema.space]\n    }\n  }\n\n  if (ctx.prefix) {\n    ctx.key++\n    attributes.key = ctx.prefix + ctx.key\n  }\n\n  if (node.children) {\n    while (++index < node.children.length) {\n      value = node.children[index]\n\n      if (element(value)) {\n        nodes.push(toH(h, value, ctx))\n      } else if (text(value)) {\n        nodes.push(value.value)\n      }\n    }\n  }\n\n  // Restore parent schema.\n  ctx.schema = parentSchema\n\n  // Ensure no React warnings are triggered for void elements having children\n  // passed in.\n  return nodes.length\n    ? h.call(node, name, attributes, nodes)\n    : h.call(node, name, attributes)\n}\n\nfunction addAttribute(props, prop, value, ctx, name) {\n  var info = find(ctx.schema, prop)\n  var subprop\n\n  // Ignore nullish and `NaN` values.\n  // Ignore `false` and falsey known booleans for hyperlike DSLs.\n  if (\n    value == null ||\n    value !== value ||\n    (value === false && (ctx.vue || ctx.vdom || ctx.hyperscript)) ||\n    (!value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript))\n  ) {\n    return\n  }\n\n  if (value && typeof value === 'object' && 'length' in value) {\n    // Accept `array`.\n    // Most props are space-separated.\n    value = (info.commaSeparated ? commas : spaces).stringify(value)\n  }\n\n  // Treat `true` and truthy known booleans.\n  if (info.boolean && ctx.hyperscript) {\n    value = ''\n  }\n\n  // VDOM, Vue, and React accept `style` as object.\n  if (\n    info.property === 'style' &&\n    typeof value === 'string' &&\n    (ctx.react || ctx.vue || ctx.vdom)\n  ) {\n    value = parseStyle(value, name)\n  }\n\n  if (ctx.vue) {\n    if (info.property !== 'style') subprop = 'attrs'\n  } else if (!info.mustUseProperty) {\n    if (ctx.vdom) {\n      if (info.property !== 'style') subprop = 'attributes'\n    } else if (ctx.hyperscript) {\n      subprop = 'attrs'\n    }\n  }\n\n  if (subprop) {\n    if (!props[subprop]) props[subprop] = {}\n    props[subprop][info.attribute] = value\n  } else if (info.space && ctx.react) {\n    props[hastToReact[info.property] || info.property] = value\n  } else {\n    props[info.attribute] = value\n  }\n}\n\n// Check if `h` is `react.createElement`.\nfunction react(h) {\n  var node = h && h('div')\n  return Boolean(\n    node && ('_owner' in node || '_store' in node) && node.key == null\n  )\n}\n\n// Check if `h` is `hyperscript`.\nfunction hyperscript(h) {\n  return Boolean(h && h.context && h.cleanup)\n}\n\n// Check if `h` is `virtual-dom/h`.\nfunction vdom(h) {\n  return h && h('div').type === 'VirtualNode'\n}\n\nfunction vue(h) {\n  var node = h && h('div')\n  return Boolean(node && node.context && node.context._isVue)\n}\n\nfunction parseStyle(value, tagName) {\n  var result = {}\n\n  try {\n    style(value, iterator)\n  } catch (error) {\n    error.message =\n      tagName + '[style]' + error.message.slice('undefined'.length)\n    throw error\n  }\n\n  return result\n\n  function iterator(name, value) {\n    if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4)\n    result[name.replace(/-([a-z])/g, styleReplacer)] = value\n  }\n}\n\nfunction styleReplacer($0, $1) {\n  return $1.toUpperCase()\n}\n\n\n/***/ }),\n\n/***/ 6343:\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar comma = ','\nvar space = ' '\nvar empty = ''\n\n// Parse comma-separated tokens to an array.\nfunction parse(value) {\n  var values = []\n  var input = String(value || empty)\n  var index = input.indexOf(comma)\n  var lastIndex = 0\n  var end = false\n  var val\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    val = input.slice(lastIndex, index).trim()\n\n    if (val || !end) {\n      values.push(val)\n    }\n\n    lastIndex = index + 1\n    index = input.indexOf(comma, lastIndex)\n  }\n\n  return values\n}\n\n// Compile an array to comma-separated tokens.\n// `options.padLeft` (default: `true`) pads a space left of each token, and\n// `options.padRight` (default: `false`) pads a space to the right of each token.\nfunction stringify(values, options) {\n  var settings = options || {}\n  var left = settings.padLeft === false ? empty : space\n  var right = settings.padRight ? space : empty\n\n  // Ensure the last empty entry is seen.\n  if (values[values.length - 1] === empty) {\n    values = values.concat(empty)\n  }\n\n  return values.join(right + comma + left).trim()\n}\n\n\n/***/ }),\n\n/***/ 3668:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar normalize = __webpack_require__(3828)\nvar DefinedInfo = __webpack_require__(2734)\nvar Info = __webpack_require__(4958)\n\nvar data = 'data'\n\nmodule.exports = find\n\nvar valid = /^data[-\\w.:]+$/i\nvar dash = /-[a-z]/g\nvar cap = /[A-Z]/g\n\nfunction find(schema, value) {\n  var normal = normalize(value)\n  var prop = value\n  var Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === data && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      prop = datasetToProperty(value)\n    } else {\n      value = datasetToAttribute(value)\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(prop, value)\n}\n\nfunction datasetToProperty(attribute) {\n  var value = attribute.slice(5).replace(dash, camelcase)\n  return data + value.charAt(0).toUpperCase() + value.slice(1)\n}\n\nfunction datasetToAttribute(property) {\n  var value = property.slice(4)\n\n  if (dash.test(value)) {\n    return property\n  }\n\n  value = value.replace(cap, kebab)\n\n  if (value.charAt(0) !== '-') {\n    value = '-' + value\n  }\n\n  return data + value\n}\n\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n\n\n/***/ }),\n\n/***/ 1242:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar merge = __webpack_require__(6076)\nvar xlink = __webpack_require__(7691)\nvar xml = __webpack_require__(6438)\nvar xmlns = __webpack_require__(9417)\nvar aria = __webpack_require__(8722)\nvar html = __webpack_require__(2122)\n\nmodule.exports = merge([xml, xlink, xmlns, aria, html])\n\n\n/***/ }),\n\n/***/ 8722:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar types = __webpack_require__(5477)\nvar create = __webpack_require__(4070)\n\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\n\nmodule.exports = create({\n  transform: ariaTransform,\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  }\n})\n\nfunction ariaTransform(_, prop) {\n  return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n}\n\n\n/***/ }),\n\n/***/ 2122:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar types = __webpack_require__(5477)\nvar create = __webpack_require__(4070)\nvar caseInsensitiveTransform = __webpack_require__(2039)\n\nvar boolean = types.boolean\nvar overloadedBoolean = types.overloadedBoolean\nvar booleanish = types.booleanish\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\n\nmodule.exports = create({\n  space: 'html',\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  transform: caseInsensitiveTransform,\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    capture: boolean,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: boolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: commaSeparated,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforePrint: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextMenu: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: commaSeparated,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  }\n})\n\n\n/***/ }),\n\n/***/ 3469:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar types = __webpack_require__(5477)\nvar create = __webpack_require__(4070)\nvar caseSensitiveTransform = __webpack_require__(5870)\n\nvar boolean = types.boolean\nvar number = types.number\nvar spaceSeparated = types.spaceSeparated\nvar commaSeparated = types.commaSeparated\nvar commaOrSpaceSeparated = types.commaOrSpaceSeparated\n\nmodule.exports = create({\n  space: 'svg',\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  transform: caseSensitiveTransform,\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  }\n})\n\n\n/***/ }),\n\n/***/ 2039:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar caseSensitiveTransform = __webpack_require__(5870)\n\nmodule.exports = caseInsensitiveTransform\n\nfunction caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n\n\n/***/ }),\n\n/***/ 5870:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nmodule.exports = caseSensitiveTransform\n\nfunction caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n\n\n/***/ }),\n\n/***/ 4070:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar normalize = __webpack_require__(3828)\nvar Schema = __webpack_require__(2929)\nvar DefinedInfo = __webpack_require__(2734)\n\nmodule.exports = create\n\nfunction create(definition) {\n  var space = definition.space\n  var mustUseProperty = definition.mustUseProperty || []\n  var attributes = definition.attributes || {}\n  var props = definition.properties\n  var transform = definition.transform\n  var property = {}\n  var normal = {}\n  var prop\n  var info\n\n  for (prop in props) {\n    info = new DefinedInfo(\n      prop,\n      transform(attributes, prop),\n      props[prop],\n      space\n    )\n\n    if (mustUseProperty.indexOf(prop) !== -1) {\n      info.mustUseProperty = true\n    }\n\n    property[prop] = info\n\n    normal[normalize(prop)] = prop\n    normal[normalize(info.attribute)] = prop\n  }\n\n  return new Schema(property, normal, space)\n}\n\n\n/***/ }),\n\n/***/ 2734:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar Info = __webpack_require__(4958)\nvar types = __webpack_require__(5477)\n\nmodule.exports = DefinedInfo\n\nDefinedInfo.prototype = new Info()\nDefinedInfo.prototype.defined = true\n\nvar checks = [\n  'boolean',\n  'booleanish',\n  'overloadedBoolean',\n  'number',\n  'commaSeparated',\n  'spaceSeparated',\n  'commaOrSpaceSeparated'\n]\nvar checksLength = checks.length\n\nfunction DefinedInfo(property, attribute, mask, space) {\n  var index = -1\n  var check\n\n  mark(this, 'space', space)\n\n  Info.call(this, property, attribute)\n\n  while (++index < checksLength) {\n    check = checks[index]\n    mark(this, check, (mask & types[check]) === types[check])\n  }\n}\n\nfunction mark(values, key, value) {\n  if (value) {\n    values[key] = value\n  }\n}\n\n\n/***/ }),\n\n/***/ 4958:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nmodule.exports = Info\n\nvar proto = Info.prototype\n\nproto.space = null\nproto.attribute = null\nproto.property = null\nproto.boolean = false\nproto.booleanish = false\nproto.overloadedBoolean = false\nproto.number = false\nproto.commaSeparated = false\nproto.spaceSeparated = false\nproto.commaOrSpaceSeparated = false\nproto.mustUseProperty = false\nproto.defined = false\n\nfunction Info(property, attribute) {\n  this.property = property\n  this.attribute = attribute\n}\n\n\n/***/ }),\n\n/***/ 6076:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar xtend = __webpack_require__(9422)\nvar Schema = __webpack_require__(2929)\n\nmodule.exports = merge\n\nfunction merge(definitions) {\n  var length = definitions.length\n  var property = []\n  var normal = []\n  var index = -1\n  var info\n  var space\n\n  while (++index < length) {\n    info = definitions[index]\n    property.push(info.property)\n    normal.push(info.normal)\n    space = info.space\n  }\n\n  return new Schema(\n    xtend.apply(null, property),\n    xtend.apply(null, normal),\n    space\n  )\n}\n\n\n/***/ }),\n\n/***/ 2929:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nmodule.exports = Schema\n\nvar proto = Schema.prototype\n\nproto.space = null\nproto.normal = {}\nproto.property = {}\n\nfunction Schema(property, normal, space) {\n  this.property = property\n  this.normal = normal\n\n  if (space) {\n    this.space = space\n  }\n}\n\n\n/***/ }),\n\n/***/ 5477:\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\n\nvar powers = 0\n\nexports.boolean = increment()\nexports.booleanish = increment()\nexports.overloadedBoolean = increment()\nexports.number = increment()\nexports.spaceSeparated = increment()\nexports.commaSeparated = increment()\nexports.commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return Math.pow(2, ++powers)\n}\n\n\n/***/ }),\n\n/***/ 7691:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar create = __webpack_require__(4070)\n\nmodule.exports = create({\n  space: 'xlink',\n  transform: xlinkTransform,\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  }\n})\n\nfunction xlinkTransform(_, prop) {\n  return 'xlink:' + prop.slice(5).toLowerCase()\n}\n\n\n/***/ }),\n\n/***/ 6438:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar create = __webpack_require__(4070)\n\nmodule.exports = create({\n  space: 'xml',\n  transform: xmlTransform,\n  properties: {\n    xmlLang: null,\n    xmlBase: null,\n    xmlSpace: null\n  }\n})\n\nfunction xmlTransform(_, prop) {\n  return 'xml:' + prop.slice(3).toLowerCase()\n}\n\n\n/***/ }),\n\n/***/ 9417:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar create = __webpack_require__(4070)\nvar caseInsensitiveTransform = __webpack_require__(2039)\n\nmodule.exports = create({\n  space: 'xmlns',\n  attributes: {\n    xmlnsxlink: 'xmlns:xlink'\n  },\n  transform: caseInsensitiveTransform,\n  properties: {\n    xmlns: null,\n    xmlnsXLink: null\n  }\n})\n\n\n/***/ }),\n\n/***/ 3828:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nmodule.exports = normalize\n\nfunction normalize(value) {\n  return value.toLowerCase()\n}\n\n\n/***/ }),\n\n/***/ 7805:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar merge = __webpack_require__(6076)\nvar xlink = __webpack_require__(7691)\nvar xml = __webpack_require__(6438)\nvar xmlns = __webpack_require__(9417)\nvar aria = __webpack_require__(8722)\nvar svg = __webpack_require__(3469)\n\nmodule.exports = merge([xml, xlink, xmlns, aria, svg])\n\n\n/***/ }),\n\n/***/ 1500:\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\n\nexports.parse = parse\nexports.stringify = stringify\n\nvar empty = ''\nvar space = ' '\nvar whiteSpace = /[ \\t\\n\\r\\f]+/g\n\nfunction parse(value) {\n  var input = String(value || empty).trim()\n  return input === empty ? [] : input.split(whiteSpace)\n}\n\nfunction stringify(values) {\n  return values.join(space).trim()\n}\n\n\n/***/ }),\n\n/***/ 2428:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar parse = __webpack_require__(9788);\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param  {String}      style      - The inline style.\n * @param  {Function}    [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n  var output = null;\n  if (!style || typeof style !== 'string') {\n    return output;\n  }\n\n  var declaration;\n  var declarations = parse(style);\n  var hasIterator = typeof iterator === 'function';\n  var property;\n  var value;\n\n  for (var i = 0, len = declarations.length; i < len; i++) {\n    declaration = declarations[i];\n    property = declaration.property;\n    value = declaration.value;\n\n    if (hasIterator) {\n      iterator(property, value, declaration);\n    } else if (value) {\n      output || (output = {});\n      output[property] = value;\n    }\n  }\n\n  return output;\n}\n\nmodule.exports = StyleToObject;\n\n\n/***/ }),\n\n/***/ 2679:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nmodule.exports = convert\n\nfunction convert(test) {\n  if (test == null) {\n    return ok\n  }\n\n  if (typeof test === 'string') {\n    return typeFactory(test)\n  }\n\n  if (typeof test === 'object') {\n    return 'length' in test ? anyFactory(test) : allFactory(test)\n  }\n\n  if (typeof test === 'function') {\n    return test\n  }\n\n  throw new Error('Expected function, string, or object as test')\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction allFactory(test) {\n  return all\n\n  function all(node) {\n    var key\n\n    for (key in test) {\n      if (node[key] !== test[key]) return false\n    }\n\n    return true\n  }\n}\n\nfunction anyFactory(tests) {\n  var checks = []\n  var index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return any\n\n  function any() {\n    var index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, arguments)) {\n        return true\n      }\n    }\n\n    return false\n  }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n  return type\n\n  function type(node) {\n    return Boolean(node && node.type === test)\n  }\n}\n\n// Utility to return true.\nfunction ok() {\n  return true\n}\n\n\n/***/ }),\n\n/***/ 9422:\n/***/ ((module) => {\n\nmodule.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n\n\n/***/ }),\n\n/***/ 9788:\n/***/ ((module) => {\n\n// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function(node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  var errorsList = [];\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n\n\n/***/ }),\n\n/***/ 8633:\n/***/ ((module) => {\n\nvar x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n\n\n/***/ }),\n\n/***/ 9193:\n/***/ ((module) => {\n\n/**\r\n * @type {import('postcss').PluginCreator<{\r\n *  prefix: string,\r\n *  exclude?: (string|RegExp)[],\r\n *  transform?: (prefix: string, selector: string, prefixedSelector: string, filePath: string, rule: import('postcss').Rule) => void\r\n *  ignoreFiles?: (string|RegExp)[],\r\n *  includeFiles?: (string|RegExp)[],\r\n *  skipGlobalSelectors?: boolean\r\n * }>}\r\n */\r\nconst prefixPlugin = (options = {}) => {\r\n  const prefix = options.prefix;\r\n  const prefixWithSpace = /\\s+$/.test(prefix) ? prefix : `${prefix} `;\r\n  const ignoreFiles = options.ignoreFiles ? [].concat(options.ignoreFiles) : [];\r\n  const includeFiles = options.includeFiles\r\n    ? [].concat(options.includeFiles)\r\n    : [];\r\n\r\n  return {\r\n    postcssPlugin: 'postcss-prefix-selector',\r\n    prepare(result) { \r\n      const root = result.root;\r\n      const file = root.source.input.file;\r\n\r\n      // Skip ignored or non included files\r\n      if (ignoreFiles.length && file && isFileInArray(file, ignoreFiles)) {\r\n        return;\r\n      } else if (includeFiles.length && file && !isFileInArray(file, includeFiles)) {\r\n        return;\r\n      }\r\n\r\n      return {\r\n        Rule(rule, { result }) {\r\n          const keyframeRules = [\r\n            'keyframes',\r\n            '-webkit-keyframes',\r\n            '-moz-keyframes',\r\n            '-o-keyframes',\r\n            '-ms-keyframes',\r\n          ];\r\n\r\n          if (rule.parent && keyframeRules.includes(rule.parent.name)) {\r\n            return;\r\n          }\r\n\r\n          rule.selectors = rule.selectors.map((selector) => {\r\n            if (options.exclude && excludeSelector(selector, options.exclude)) {\r\n              return selector;\r\n            }\r\n\r\n            if (options.transform) {\r\n              return options.transform(\r\n                prefix,\r\n                selector,\r\n                prefixWithSpace + selector,\r\n                root.source.input.file,\r\n                rule\r\n              );\r\n            }\r\n\r\n            // replace :root, body, html with the prefix\r\n            if ([':root', 'body', 'html'].some(globalSel => selector.startsWith(globalSel))) {\r\n              if (options.skipGlobalSelectors) {\r\n                return selector;\r\n              }\r\n\r\n              return selector.replace(/(html\\s+body|:root\\s+body|html|:root|body)/gm, prefix);\r\n            }\r\n\r\n            return prefixWithSpace + selector;\r\n          });\r\n        }\r\n      };\r\n    }\r\n  }\r\n}\r\n\r\nfunction isFileInArray(file, arr) {\r\n  return arr.some((ruleOrString) => {\r\n    if (ruleOrString instanceof RegExp) {\r\n      return ruleOrString.test(file);\r\n    }\r\n\r\n    return file.includes(ruleOrString);\r\n  });\r\n}\r\n\r\nfunction excludeSelector(selector, excludeArr) {\r\n  return excludeArr.some((excludeRule) => {\r\n    if (excludeRule instanceof RegExp) {\r\n      return excludeRule.test(selector);\r\n    }\r\n\r\n    return selector === excludeRule;\r\n  });\r\n};\r\n\r\nprefixPlugin.postcss = true\r\n\r\nmodule.exports = prefixPlugin;\r\n\n\n/***/ }),\n\n/***/ 396:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Container = __webpack_require__(7793)\n\nclass AtRule extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'atrule'\n  }\n\n  append(...children) {\n    if (!this.proxyOf.nodes) this.nodes = []\n    return super.append(...children)\n  }\n\n  prepend(...children) {\n    if (!this.proxyOf.nodes) this.nodes = []\n    return super.prepend(...children)\n  }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n\n\n/***/ }),\n\n/***/ 9371:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Node = __webpack_require__(3152)\n\nclass Comment extends Node {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'comment'\n  }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n\n\n/***/ }),\n\n/***/ 7793:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Comment = __webpack_require__(9371)\nlet Declaration = __webpack_require__(5238)\nlet Node = __webpack_require__(3152)\nlet { isClean, my } = __webpack_require__(4151)\n\nlet AtRule, parse, Root, Rule\n\nfunction cleanSource(nodes) {\n  return nodes.map(i => {\n    if (i.nodes) i.nodes = cleanSource(i.nodes)\n    delete i.source\n    return i\n  })\n}\n\nfunction markTreeDirty(node) {\n  node[isClean] = false\n  if (node.proxyOf.nodes) {\n    for (let i of node.proxyOf.nodes) {\n      markTreeDirty(i)\n    }\n  }\n}\n\nclass Container extends Node {\n  get first() {\n    if (!this.proxyOf.nodes) return undefined\n    return this.proxyOf.nodes[0]\n  }\n\n  get last() {\n    if (!this.proxyOf.nodes) return undefined\n    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n  }\n\n  append(...children) {\n    for (let child of children) {\n      let nodes = this.normalize(child, this.last)\n      for (let node of nodes) this.proxyOf.nodes.push(node)\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  cleanRaws(keepBetween) {\n    super.cleanRaws(keepBetween)\n    if (this.nodes) {\n      for (let node of this.nodes) node.cleanRaws(keepBetween)\n    }\n  }\n\n  each(callback) {\n    if (!this.proxyOf.nodes) return undefined\n    let iterator = this.getIterator()\n\n    let index, result\n    while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n      index = this.indexes[iterator]\n      result = callback(this.proxyOf.nodes[index], index)\n      if (result === false) break\n\n      this.indexes[iterator] += 1\n    }\n\n    delete this.indexes[iterator]\n    return result\n  }\n\n  every(condition) {\n    return this.nodes.every(condition)\n  }\n\n  getIterator() {\n    if (!this.lastEach) this.lastEach = 0\n    if (!this.indexes) this.indexes = {}\n\n    this.lastEach += 1\n    let iterator = this.lastEach\n    this.indexes[iterator] = 0\n\n    return iterator\n  }\n\n  getProxyProcessor() {\n    return {\n      get(node, prop) {\n        if (prop === 'proxyOf') {\n          return node\n        } else if (!node[prop]) {\n          return node[prop]\n        } else if (\n          prop === 'each' ||\n          (typeof prop === 'string' && prop.startsWith('walk'))\n        ) {\n          return (...args) => {\n            return node[prop](\n              ...args.map(i => {\n                if (typeof i === 'function') {\n                  return (child, index) => i(child.toProxy(), index)\n                } else {\n                  return i\n                }\n              })\n            )\n          }\n        } else if (prop === 'every' || prop === 'some') {\n          return cb => {\n            return node[prop]((child, ...other) =>\n              cb(child.toProxy(), ...other)\n            )\n          }\n        } else if (prop === 'root') {\n          return () => node.root().toProxy()\n        } else if (prop === 'nodes') {\n          return node.nodes.map(i => i.toProxy())\n        } else if (prop === 'first' || prop === 'last') {\n          return node[prop].toProxy()\n        } else {\n          return node[prop]\n        }\n      },\n\n      set(node, prop, value) {\n        if (node[prop] === value) return true\n        node[prop] = value\n        if (prop === 'name' || prop === 'params' || prop === 'selector') {\n          node.markDirty()\n        }\n        return true\n      }\n    }\n  }\n\n  index(child) {\n    if (typeof child === 'number') return child\n    if (child.proxyOf) child = child.proxyOf\n    return this.proxyOf.nodes.indexOf(child)\n  }\n\n  insertAfter(exist, add) {\n    let existIndex = this.index(exist)\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n    existIndex = this.index(exist)\n    for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (existIndex < index) {\n        this.indexes[id] = index + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  insertBefore(exist, add) {\n    let existIndex = this.index(exist)\n    let type = existIndex === 0 ? 'prepend' : false\n    let nodes = this.normalize(\n      add,\n      this.proxyOf.nodes[existIndex],\n      type\n    ).reverse()\n    existIndex = this.index(exist)\n    for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (existIndex <= index) {\n        this.indexes[id] = index + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  normalize(nodes, sample) {\n    if (typeof nodes === 'string') {\n      nodes = cleanSource(parse(nodes).nodes)\n    } else if (typeof nodes === 'undefined') {\n      nodes = []\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0)\n      for (let i of nodes) {\n        if (i.parent) i.parent.removeChild(i, 'ignore')\n      }\n    } else if (nodes.type === 'root' && this.type !== 'document') {\n      nodes = nodes.nodes.slice(0)\n      for (let i of nodes) {\n        if (i.parent) i.parent.removeChild(i, 'ignore')\n      }\n    } else if (nodes.type) {\n      nodes = [nodes]\n    } else if (nodes.prop) {\n      if (typeof nodes.value === 'undefined') {\n        throw new Error('Value field is missed in node creation')\n      } else if (typeof nodes.value !== 'string') {\n        nodes.value = String(nodes.value)\n      }\n      nodes = [new Declaration(nodes)]\n    } else if (nodes.selector || nodes.selectors) {\n      nodes = [new Rule(nodes)]\n    } else if (nodes.name) {\n      nodes = [new AtRule(nodes)]\n    } else if (nodes.text) {\n      nodes = [new Comment(nodes)]\n    } else {\n      throw new Error('Unknown node type in node creation')\n    }\n\n    let processed = nodes.map(i => {\n      /* c8 ignore next */\n      if (!i[my]) Container.rebuild(i)\n      i = i.proxyOf\n      if (i.parent) i.parent.removeChild(i)\n      if (i[isClean]) markTreeDirty(i)\n\n      if (!i.raws) i.raws = {}\n      if (typeof i.raws.before === 'undefined') {\n        if (sample && typeof sample.raws.before !== 'undefined') {\n          i.raws.before = sample.raws.before.replace(/\\S/g, '')\n        }\n      }\n      i.parent = this.proxyOf\n      return i\n    })\n\n    return processed\n  }\n\n  prepend(...children) {\n    children = children.reverse()\n    for (let child of children) {\n      let nodes = this.normalize(child, this.first, 'prepend').reverse()\n      for (let node of nodes) this.proxyOf.nodes.unshift(node)\n      for (let id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  push(child) {\n    child.parent = this\n    this.proxyOf.nodes.push(child)\n    return this\n  }\n\n  removeAll() {\n    for (let node of this.proxyOf.nodes) node.parent = undefined\n    this.proxyOf.nodes = []\n\n    this.markDirty()\n\n    return this\n  }\n\n  removeChild(child) {\n    child = this.index(child)\n    this.proxyOf.nodes[child].parent = undefined\n    this.proxyOf.nodes.splice(child, 1)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (index >= child) {\n        this.indexes[id] = index - 1\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts\n      opts = {}\n    }\n\n    this.walkDecls(decl => {\n      if (opts.props && !opts.props.includes(decl.prop)) return\n      if (opts.fast && !decl.value.includes(opts.fast)) return\n\n      decl.value = decl.value.replace(pattern, callback)\n    })\n\n    this.markDirty()\n\n    return this\n  }\n\n  some(condition) {\n    return this.nodes.some(condition)\n  }\n\n  walk(callback) {\n    return this.each((child, i) => {\n      let result\n      try {\n        result = callback(child, i)\n      } catch (e) {\n        throw child.addToError(e)\n      }\n      if (result !== false && child.walk) {\n        result = child.walk(callback)\n      }\n\n      return result\n    })\n  }\n\n  walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name\n      return this.walk((child, i) => {\n        if (child.type === 'atrule') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (name instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'atrule' && name.test(child.name)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'atrule' && child.name === name) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkComments(callback) {\n    return this.walk((child, i) => {\n      if (child.type === 'comment') {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop\n      return this.walk((child, i) => {\n        if (child.type === 'decl') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (prop instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'decl' && prop.test(child.prop)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'decl' && child.prop === prop) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector\n\n      return this.walk((child, i) => {\n        if (child.type === 'rule') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (selector instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'rule' && selector.test(child.selector)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'rule' && child.selector === selector) {\n        return callback(child, i)\n      }\n    })\n  }\n}\n\nContainer.registerParse = dependant => {\n  parse = dependant\n}\n\nContainer.registerRule = dependant => {\n  Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n  AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n  Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n  if (node.type === 'atrule') {\n    Object.setPrototypeOf(node, AtRule.prototype)\n  } else if (node.type === 'rule') {\n    Object.setPrototypeOf(node, Rule.prototype)\n  } else if (node.type === 'decl') {\n    Object.setPrototypeOf(node, Declaration.prototype)\n  } else if (node.type === 'comment') {\n    Object.setPrototypeOf(node, Comment.prototype)\n  } else if (node.type === 'root') {\n    Object.setPrototypeOf(node, Root.prototype)\n  }\n\n  node[my] = true\n\n  if (node.nodes) {\n    node.nodes.forEach(child => {\n      Container.rebuild(child)\n    })\n  }\n}\n/* c8 ignore stop */\n\n\n/***/ }),\n\n/***/ 3614:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet pico = __webpack_require__(8633)\n\nlet terminalHighlight = __webpack_require__(9746)\n\nclass CssSyntaxError extends Error {\n  constructor(message, line, column, source, file, plugin) {\n    super(message)\n    this.name = 'CssSyntaxError'\n    this.reason = message\n\n    if (file) {\n      this.file = file\n    }\n    if (source) {\n      this.source = source\n    }\n    if (plugin) {\n      this.plugin = plugin\n    }\n    if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n      if (typeof line === 'number') {\n        this.line = line\n        this.column = column\n      } else {\n        this.line = line.line\n        this.column = line.column\n        this.endLine = column.line\n        this.endColumn = column.column\n      }\n    }\n\n    this.setMessage()\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, CssSyntaxError)\n    }\n  }\n\n  setMessage() {\n    this.message = this.plugin ? this.plugin + ': ' : ''\n    this.message += this.file ? this.file : '<css input>'\n    if (typeof this.line !== 'undefined') {\n      this.message += ':' + this.line + ':' + this.column\n    }\n    this.message += ': ' + this.reason\n  }\n\n  showSourceCode(color) {\n    if (!this.source) return ''\n\n    let css = this.source\n    if (color == null) color = pico.isColorSupported\n\n    let aside = text => text\n    let mark = text => text\n    let highlight = text => text\n    if (color) {\n      let { bold, gray, red } = pico.createColors(true)\n      mark = text => bold(red(text))\n      aside = text => gray(text)\n      if (terminalHighlight) {\n        highlight = text => terminalHighlight(text)\n      }\n    }\n\n    let lines = css.split(/\\r?\\n/)\n    let start = Math.max(this.line - 3, 0)\n    let end = Math.min(this.line + 2, lines.length)\n    let maxWidth = String(end).length\n\n    return lines\n      .slice(start, end)\n      .map((line, index) => {\n        let number = start + 1 + index\n        let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n        if (number === this.line) {\n          if (line.length > 160) {\n            let padding = 20\n            let subLineStart = Math.max(0, this.column - padding)\n            let subLineEnd = Math.max(\n              this.column + padding,\n              this.endColumn + padding\n            )\n            let subLine = line.slice(subLineStart, subLineEnd)\n\n            let spacing =\n              aside(gutter.replace(/\\d/g, ' ')) +\n              line\n                .slice(0, Math.min(this.column - 1, padding - 1))\n                .replace(/[^\\t]/g, ' ')\n\n            return (\n              mark('>') +\n              aside(gutter) +\n              highlight(subLine) +\n              '\\n ' +\n              spacing +\n              mark('^')\n            )\n          }\n\n          let spacing =\n            aside(gutter.replace(/\\d/g, ' ')) +\n            line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n\n          return (\n            mark('>') +\n            aside(gutter) +\n            highlight(line) +\n            '\\n ' +\n            spacing +\n            mark('^')\n          )\n        }\n\n        return ' ' + aside(gutter) + highlight(line)\n      })\n      .join('\\n')\n  }\n\n  toString() {\n    let code = this.showSourceCode()\n    if (code) {\n      code = '\\n\\n' + code + '\\n'\n    }\n    return this.name + ': ' + this.message + code\n  }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n\n\n/***/ }),\n\n/***/ 5238:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Node = __webpack_require__(3152)\n\nclass Declaration extends Node {\n  get variable() {\n    return this.prop.startsWith('--') || this.prop[0] === '$'\n  }\n\n  constructor(defaults) {\n    if (\n      defaults &&\n      typeof defaults.value !== 'undefined' &&\n      typeof defaults.value !== 'string'\n    ) {\n      defaults = { ...defaults, value: String(defaults.value) }\n    }\n    super(defaults)\n    this.type = 'decl'\n  }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n\n\n/***/ }),\n\n/***/ 145:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Container = __webpack_require__(7793)\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n  constructor(defaults) {\n    // type needs to be passed to super, otherwise child roots won't be normalized correctly\n    super({ type: 'document', ...defaults })\n\n    if (!this.nodes) {\n      this.nodes = []\n    }\n  }\n\n  toResult(opts = {}) {\n    let lazy = new LazyResult(new Processor(), this, opts)\n\n    return lazy.stringify()\n  }\n}\n\nDocument.registerLazyResult = dependant => {\n  LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n  Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n\n\n/***/ }),\n\n/***/ 3438:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet AtRule = __webpack_require__(396)\nlet Comment = __webpack_require__(9371)\nlet Declaration = __webpack_require__(5238)\nlet Input = __webpack_require__(1106)\nlet PreviousMap = __webpack_require__(3878)\nlet Root = __webpack_require__(5644)\nlet Rule = __webpack_require__(1534)\n\nfunction fromJSON(json, inputs) {\n  if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n  let { inputs: ownInputs, ...defaults } = json\n  if (ownInputs) {\n    inputs = []\n    for (let input of ownInputs) {\n      let inputHydrated = { ...input, __proto__: Input.prototype }\n      if (inputHydrated.map) {\n        inputHydrated.map = {\n          ...inputHydrated.map,\n          __proto__: PreviousMap.prototype\n        }\n      }\n      inputs.push(inputHydrated)\n    }\n  }\n  if (defaults.nodes) {\n    defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n  }\n  if (defaults.source) {\n    let { inputId, ...source } = defaults.source\n    defaults.source = source\n    if (inputId != null) {\n      defaults.source.input = inputs[inputId]\n    }\n  }\n  if (defaults.type === 'root') {\n    return new Root(defaults)\n  } else if (defaults.type === 'decl') {\n    return new Declaration(defaults)\n  } else if (defaults.type === 'rule') {\n    return new Rule(defaults)\n  } else if (defaults.type === 'comment') {\n    return new Comment(defaults)\n  } else if (defaults.type === 'atrule') {\n    return new AtRule(defaults)\n  } else {\n    throw new Error('Unknown node type: ' + json.type)\n  }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n\n\n/***/ }),\n\n/***/ 1106:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet { nanoid } = __webpack_require__(5042)\nlet { isAbsolute, resolve } = __webpack_require__(197)\nlet { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(1866)\nlet { fileURLToPath, pathToFileURL } = __webpack_require__(2739)\n\nlet CssSyntaxError = __webpack_require__(3614)\nlet PreviousMap = __webpack_require__(3878)\nlet terminalHighlight = __webpack_require__(9746)\n\nlet lineToIndexCache = Symbol('lineToIndexCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nfunction getLineToIndex(input) {\n  if (input[lineToIndexCache]) return input[lineToIndexCache]\n  let lines = input.css.split('\\n')\n  let lineToIndex = new Array(lines.length)\n  let prevIndex = 0\n\n  for (let i = 0, l = lines.length; i < l; i++) {\n    lineToIndex[i] = prevIndex\n    prevIndex += lines[i].length + 1\n  }\n\n  input[lineToIndexCache] = lineToIndex\n  return lineToIndex\n}\n\nclass Input {\n  get from() {\n    return this.file || this.id\n  }\n\n  constructor(css, opts = {}) {\n    if (\n      css === null ||\n      typeof css === 'undefined' ||\n      (typeof css === 'object' && !css.toString)\n    ) {\n      throw new Error(`PostCSS received ${css} instead of CSS string`)\n    }\n\n    this.css = css.toString()\n\n    if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n      this.hasBOM = true\n      this.css = this.css.slice(1)\n    } else {\n      this.hasBOM = false\n    }\n\n    this.document = this.css\n    if (opts.document) this.document = opts.document.toString()\n\n    if (opts.from) {\n      if (\n        !pathAvailable ||\n        /^\\w+:\\/\\//.test(opts.from) ||\n        isAbsolute(opts.from)\n      ) {\n        this.file = opts.from\n      } else {\n        this.file = resolve(opts.from)\n      }\n    }\n\n    if (pathAvailable && sourceMapAvailable) {\n      let map = new PreviousMap(this.css, opts)\n      if (map.text) {\n        this.map = map\n        let file = map.consumer().file\n        if (!this.file && file) this.file = this.mapResolve(file)\n      }\n    }\n\n    if (!this.file) {\n      this.id = '<input css ' + nanoid(6) + '>'\n    }\n    if (this.map) this.map.file = this.from\n  }\n\n  error(message, line, column, opts = {}) {\n    let endColumn, endLine, endOffset, offset, result\n\n    if (line && typeof line === 'object') {\n      let start = line\n      let end = column\n      if (typeof start.offset === 'number') {\n        offset = start.offset\n        let pos = this.fromOffset(offset)\n        line = pos.line\n        column = pos.col\n      } else {\n        line = start.line\n        column = start.column\n        offset = this.fromLineAndColumn(line, column)\n      }\n      if (typeof end.offset === 'number') {\n        endOffset = end.offset\n        let pos = this.fromOffset(endOffset)\n        endLine = pos.line\n        endColumn = pos.col\n      } else {\n        endLine = end.line\n        endColumn = end.column\n        endOffset = this.fromLineAndColumn(end.line, end.column)\n      }\n    } else if (!column) {\n      offset = line\n      let pos = this.fromOffset(offset)\n      line = pos.line\n      column = pos.col\n    } else {\n      offset = this.fromLineAndColumn(line, column)\n    }\n\n    let origin = this.origin(line, column, endLine, endColumn)\n    if (origin) {\n      result = new CssSyntaxError(\n        message,\n        origin.endLine === undefined\n          ? origin.line\n          : { column: origin.column, line: origin.line },\n        origin.endLine === undefined\n          ? origin.column\n          : { column: origin.endColumn, line: origin.endLine },\n        origin.source,\n        origin.file,\n        opts.plugin\n      )\n    } else {\n      result = new CssSyntaxError(\n        message,\n        endLine === undefined ? line : { column, line },\n        endLine === undefined ? column : { column: endColumn, line: endLine },\n        this.css,\n        this.file,\n        opts.plugin\n      )\n    }\n\n    result.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css }\n    if (this.file) {\n      if (pathToFileURL) {\n        result.input.url = pathToFileURL(this.file).toString()\n      }\n      result.input.file = this.file\n    }\n\n    return result\n  }\n\n  fromLineAndColumn(line, column) {\n    let lineToIndex = getLineToIndex(this)\n    let index = lineToIndex[line - 1]\n    return index + column - 1\n  }\n\n  fromOffset(offset) {\n    let lineToIndex = getLineToIndex(this)\n    let lastLine = lineToIndex[lineToIndex.length - 1]\n\n    let min = 0\n    if (offset >= lastLine) {\n      min = lineToIndex.length - 1\n    } else {\n      let max = lineToIndex.length - 2\n      let mid\n      while (min < max) {\n        mid = min + ((max - min) >> 1)\n        if (offset < lineToIndex[mid]) {\n          max = mid - 1\n        } else if (offset >= lineToIndex[mid + 1]) {\n          min = mid + 1\n        } else {\n          min = mid\n          break\n        }\n      }\n    }\n    return {\n      col: offset - lineToIndex[min] + 1,\n      line: min + 1\n    }\n  }\n\n  mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file\n    }\n    return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n  }\n\n  origin(line, column, endLine, endColumn) {\n    if (!this.map) return false\n    let consumer = this.map.consumer()\n\n    let from = consumer.originalPositionFor({ column, line })\n    if (!from.source) return false\n\n    let to\n    if (typeof endLine === 'number') {\n      to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n    }\n\n    let fromUrl\n\n    if (isAbsolute(from.source)) {\n      fromUrl = pathToFileURL(from.source)\n    } else {\n      fromUrl = new URL(\n        from.source,\n        this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n      )\n    }\n\n    let result = {\n      column: from.column,\n      endColumn: to && to.column,\n      endLine: to && to.line,\n      line: from.line,\n      url: fromUrl.toString()\n    }\n\n    if (fromUrl.protocol === 'file:') {\n      if (fileURLToPath) {\n        result.file = fileURLToPath(fromUrl)\n      } else {\n        /* c8 ignore next 2 */\n        throw new Error(`file: protocol is not available in this PostCSS build`)\n      }\n    }\n\n    let source = consumer.sourceContentFor(from.source)\n    if (source) result.source = source\n\n    return result\n  }\n\n  toJSON() {\n    let json = {}\n    for (let name of ['hasBOM', 'css', 'file', 'id']) {\n      if (this[name] != null) {\n        json[name] = this[name]\n      }\n    }\n    if (this.map) {\n      json.map = { ...this.map }\n      if (json.map.consumerCache) {\n        json.map.consumerCache = undefined\n      }\n    }\n    return json\n  }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n  terminalHighlight.registerInput(Input)\n}\n\n\n/***/ }),\n\n/***/ 6966:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Container = __webpack_require__(7793)\nlet Document = __webpack_require__(145)\nlet MapGenerator = __webpack_require__(3604)\nlet parse = __webpack_require__(9577)\nlet Result = __webpack_require__(3717)\nlet Root = __webpack_require__(5644)\nlet stringify = __webpack_require__(3303)\nlet { isClean, my } = __webpack_require__(4151)\nlet warnOnce = __webpack_require__(6156)\n\nconst TYPE_TO_CLASS_NAME = {\n  atrule: 'AtRule',\n  comment: 'Comment',\n  decl: 'Declaration',\n  document: 'Document',\n  root: 'Root',\n  rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n  AtRule: true,\n  AtRuleExit: true,\n  Comment: true,\n  CommentExit: true,\n  Declaration: true,\n  DeclarationExit: true,\n  Document: true,\n  DocumentExit: true,\n  Once: true,\n  OnceExit: true,\n  postcssPlugin: true,\n  prepare: true,\n  Root: true,\n  RootExit: true,\n  Rule: true,\n  RuleExit: true\n}\n\nconst NOT_VISITORS = {\n  Once: true,\n  postcssPlugin: true,\n  prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n  return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n  let key = false\n  let type = TYPE_TO_CLASS_NAME[node.type]\n  if (node.type === 'decl') {\n    key = node.prop.toLowerCase()\n  } else if (node.type === 'atrule') {\n    key = node.name.toLowerCase()\n  }\n\n  if (key && node.append) {\n    return [\n      type,\n      type + '-' + key,\n      CHILDREN,\n      type + 'Exit',\n      type + 'Exit-' + key\n    ]\n  } else if (key) {\n    return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n  } else if (node.append) {\n    return [type, CHILDREN, type + 'Exit']\n  } else {\n    return [type, type + 'Exit']\n  }\n}\n\nfunction toStack(node) {\n  let events\n  if (node.type === 'document') {\n    events = ['Document', CHILDREN, 'DocumentExit']\n  } else if (node.type === 'root') {\n    events = ['Root', CHILDREN, 'RootExit']\n  } else {\n    events = getEvents(node)\n  }\n\n  return {\n    eventIndex: 0,\n    events,\n    iterator: 0,\n    node,\n    visitorIndex: 0,\n    visitors: []\n  }\n}\n\nfunction cleanMarks(node) {\n  node[isClean] = false\n  if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n  return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n  get content() {\n    return this.stringify().content\n  }\n\n  get css() {\n    return this.stringify().css\n  }\n\n  get map() {\n    return this.stringify().map\n  }\n\n  get messages() {\n    return this.sync().messages\n  }\n\n  get opts() {\n    return this.result.opts\n  }\n\n  get processor() {\n    return this.result.processor\n  }\n\n  get root() {\n    return this.sync().root\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'LazyResult'\n  }\n\n  constructor(processor, css, opts) {\n    this.stringified = false\n    this.processed = false\n\n    let root\n    if (\n      typeof css === 'object' &&\n      css !== null &&\n      (css.type === 'root' || css.type === 'document')\n    ) {\n      root = cleanMarks(css)\n    } else if (css instanceof LazyResult || css instanceof Result) {\n      root = cleanMarks(css.root)\n      if (css.map) {\n        if (typeof opts.map === 'undefined') opts.map = {}\n        if (!opts.map.inline) opts.map.inline = false\n        opts.map.prev = css.map\n      }\n    } else {\n      let parser = parse\n      if (opts.syntax) parser = opts.syntax.parse\n      if (opts.parser) parser = opts.parser\n      if (parser.parse) parser = parser.parse\n\n      try {\n        root = parser(css, opts)\n      } catch (error) {\n        this.processed = true\n        this.error = error\n      }\n\n      if (root && !root[my]) {\n        /* c8 ignore next 2 */\n        Container.rebuild(root)\n      }\n    }\n\n    this.result = new Result(processor, root, opts)\n    this.helpers = { ...postcss, postcss, result: this.result }\n    this.plugins = this.processor.plugins.map(plugin => {\n      if (typeof plugin === 'object' && plugin.prepare) {\n        return { ...plugin, ...plugin.prepare(this.result) }\n      } else {\n        return plugin\n      }\n    })\n  }\n\n  async() {\n    if (this.error) return Promise.reject(this.error)\n    if (this.processed) return Promise.resolve(this.result)\n    if (!this.processing) {\n      this.processing = this.runAsync()\n    }\n    return this.processing\n  }\n\n  catch(onRejected) {\n    return this.async().catch(onRejected)\n  }\n\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally)\n  }\n\n  getAsyncError() {\n    throw new Error('Use process(css).then(cb) to work with async plugins')\n  }\n\n  handleError(error, node) {\n    let plugin = this.result.lastPlugin\n    try {\n      if (node) node.addToError(error)\n      this.error = error\n      if (error.name === 'CssSyntaxError' && !error.plugin) {\n        error.plugin = plugin.postcssPlugin\n        error.setMessage()\n      } else if (plugin.postcssVersion) {\n        if (false) {}\n      }\n    } catch (err) {\n      /* c8 ignore next 3 */\n      // eslint-disable-next-line no-console\n      if (console && console.error) console.error(err)\n    }\n    return error\n  }\n\n  prepareVisitors() {\n    this.listeners = {}\n    let add = (plugin, type, cb) => {\n      if (!this.listeners[type]) this.listeners[type] = []\n      this.listeners[type].push([plugin, cb])\n    }\n    for (let plugin of this.plugins) {\n      if (typeof plugin === 'object') {\n        for (let event in plugin) {\n          if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n            throw new Error(\n              `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n                `Try to update PostCSS (${this.processor.version} now).`\n            )\n          }\n          if (!NOT_VISITORS[event]) {\n            if (typeof plugin[event] === 'object') {\n              for (let filter in plugin[event]) {\n                if (filter === '*') {\n                  add(plugin, event, plugin[event][filter])\n                } else {\n                  add(\n                    plugin,\n                    event + '-' + filter.toLowerCase(),\n                    plugin[event][filter]\n                  )\n                }\n              }\n            } else if (typeof plugin[event] === 'function') {\n              add(plugin, event, plugin[event])\n            }\n          }\n        }\n      }\n    }\n    this.hasListener = Object.keys(this.listeners).length > 0\n  }\n\n  async runAsync() {\n    this.plugin = 0\n    for (let i = 0; i < this.plugins.length; i++) {\n      let plugin = this.plugins[i]\n      let promise = this.runOnRoot(plugin)\n      if (isPromise(promise)) {\n        try {\n          await promise\n        } catch (error) {\n          throw this.handleError(error)\n        }\n      }\n    }\n\n    this.prepareVisitors()\n    if (this.hasListener) {\n      let root = this.result.root\n      while (!root[isClean]) {\n        root[isClean] = true\n        let stack = [toStack(root)]\n        while (stack.length > 0) {\n          let promise = this.visitTick(stack)\n          if (isPromise(promise)) {\n            try {\n              await promise\n            } catch (e) {\n              let node = stack[stack.length - 1].node\n              throw this.handleError(e, node)\n            }\n          }\n        }\n      }\n\n      if (this.listeners.OnceExit) {\n        for (let [plugin, visitor] of this.listeners.OnceExit) {\n          this.result.lastPlugin = plugin\n          try {\n            if (root.type === 'document') {\n              let roots = root.nodes.map(subRoot =>\n                visitor(subRoot, this.helpers)\n              )\n\n              await Promise.all(roots)\n            } else {\n              await visitor(root, this.helpers)\n            }\n          } catch (e) {\n            throw this.handleError(e)\n          }\n        }\n      }\n    }\n\n    this.processed = true\n    return this.stringify()\n  }\n\n  runOnRoot(plugin) {\n    this.result.lastPlugin = plugin\n    try {\n      if (typeof plugin === 'object' && plugin.Once) {\n        if (this.result.root.type === 'document') {\n          let roots = this.result.root.nodes.map(root =>\n            plugin.Once(root, this.helpers)\n          )\n\n          if (isPromise(roots[0])) {\n            return Promise.all(roots)\n          }\n\n          return roots\n        }\n\n        return plugin.Once(this.result.root, this.helpers)\n      } else if (typeof plugin === 'function') {\n        return plugin(this.result.root, this.result)\n      }\n    } catch (error) {\n      throw this.handleError(error)\n    }\n  }\n\n  stringify() {\n    if (this.error) throw this.error\n    if (this.stringified) return this.result\n    this.stringified = true\n\n    this.sync()\n\n    let opts = this.result.opts\n    let str = stringify\n    if (opts.syntax) str = opts.syntax.stringify\n    if (opts.stringifier) str = opts.stringifier\n    if (str.stringify) str = str.stringify\n\n    let map = new MapGenerator(str, this.result.root, this.result.opts)\n    let data = map.generate()\n    this.result.css = data[0]\n    this.result.map = data[1]\n\n    return this.result\n  }\n\n  sync() {\n    if (this.error) throw this.error\n    if (this.processed) return this.result\n    this.processed = true\n\n    if (this.processing) {\n      throw this.getAsyncError()\n    }\n\n    for (let plugin of this.plugins) {\n      let promise = this.runOnRoot(plugin)\n      if (isPromise(promise)) {\n        throw this.getAsyncError()\n      }\n    }\n\n    this.prepareVisitors()\n    if (this.hasListener) {\n      let root = this.result.root\n      while (!root[isClean]) {\n        root[isClean] = true\n        this.walkSync(root)\n      }\n      if (this.listeners.OnceExit) {\n        if (root.type === 'document') {\n          for (let subRoot of root.nodes) {\n            this.visitSync(this.listeners.OnceExit, subRoot)\n          }\n        } else {\n          this.visitSync(this.listeners.OnceExit, root)\n        }\n      }\n    }\n\n    return this.result\n  }\n\n  then(onFulfilled, onRejected) {\n    if (false) {}\n    return this.async().then(onFulfilled, onRejected)\n  }\n\n  toString() {\n    return this.css\n  }\n\n  visitSync(visitors, node) {\n    for (let [plugin, visitor] of visitors) {\n      this.result.lastPlugin = plugin\n      let promise\n      try {\n        promise = visitor(node, this.helpers)\n      } catch (e) {\n        throw this.handleError(e, node.proxyOf)\n      }\n      if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n        return true\n      }\n      if (isPromise(promise)) {\n        throw this.getAsyncError()\n      }\n    }\n  }\n\n  visitTick(stack) {\n    let visit = stack[stack.length - 1]\n    let { node, visitors } = visit\n\n    if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n      stack.pop()\n      return\n    }\n\n    if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n      let [plugin, visitor] = visitors[visit.visitorIndex]\n      visit.visitorIndex += 1\n      if (visit.visitorIndex === visitors.length) {\n        visit.visitors = []\n        visit.visitorIndex = 0\n      }\n      this.result.lastPlugin = plugin\n      try {\n        return visitor(node.toProxy(), this.helpers)\n      } catch (e) {\n        throw this.handleError(e, node)\n      }\n    }\n\n    if (visit.iterator !== 0) {\n      let iterator = visit.iterator\n      let child\n      while ((child = node.nodes[node.indexes[iterator]])) {\n        node.indexes[iterator] += 1\n        if (!child[isClean]) {\n          child[isClean] = true\n          stack.push(toStack(child))\n          return\n        }\n      }\n      visit.iterator = 0\n      delete node.indexes[iterator]\n    }\n\n    let events = visit.events\n    while (visit.eventIndex < events.length) {\n      let event = events[visit.eventIndex]\n      visit.eventIndex += 1\n      if (event === CHILDREN) {\n        if (node.nodes && node.nodes.length) {\n          node[isClean] = true\n          visit.iterator = node.getIterator()\n        }\n        return\n      } else if (this.listeners[event]) {\n        visit.visitors = this.listeners[event]\n        return\n      }\n    }\n    stack.pop()\n  }\n\n  walkSync(node) {\n    node[isClean] = true\n    let events = getEvents(node)\n    for (let event of events) {\n      if (event === CHILDREN) {\n        if (node.nodes) {\n          node.each(child => {\n            if (!child[isClean]) this.walkSync(child)\n          })\n        }\n      } else {\n        let visitors = this.listeners[event]\n        if (visitors) {\n          if (this.visitSync(visitors, node.toProxy())) return\n        }\n      }\n    }\n  }\n\n  warnings() {\n    return this.sync().warnings()\n  }\n}\n\nLazyResult.registerPostcss = dependant => {\n  postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n\n\n/***/ }),\n\n/***/ 1752:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nlet list = {\n  comma(string) {\n    return list.split(string, [','], true)\n  },\n\n  space(string) {\n    let spaces = [' ', '\\n', '\\t']\n    return list.split(string, spaces)\n  },\n\n  split(string, separators, last) {\n    let array = []\n    let current = ''\n    let split = false\n\n    let func = 0\n    let inQuote = false\n    let prevQuote = ''\n    let escape = false\n\n    for (let letter of string) {\n      if (escape) {\n        escape = false\n      } else if (letter === '\\\\') {\n        escape = true\n      } else if (inQuote) {\n        if (letter === prevQuote) {\n          inQuote = false\n        }\n      } else if (letter === '\"' || letter === \"'\") {\n        inQuote = true\n        prevQuote = letter\n      } else if (letter === '(') {\n        func += 1\n      } else if (letter === ')') {\n        if (func > 0) func -= 1\n      } else if (func === 0) {\n        if (separators.includes(letter)) split = true\n      }\n\n      if (split) {\n        if (current !== '') array.push(current.trim())\n        current = ''\n        split = false\n      } else {\n        current += letter\n      }\n    }\n\n    if (last || current !== '') array.push(current.trim())\n    return array\n  }\n}\n\nmodule.exports = list\nlist.default = list\n\n\n/***/ }),\n\n/***/ 3604:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet { dirname, relative, resolve, sep } = __webpack_require__(197)\nlet { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(1866)\nlet { pathToFileURL } = __webpack_require__(2739)\n\nlet Input = __webpack_require__(1106)\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n  constructor(stringify, root, opts, cssString) {\n    this.stringify = stringify\n    this.mapOpts = opts.map || {}\n    this.root = root\n    this.opts = opts\n    this.css = cssString\n    this.originalCSS = cssString\n    this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n    this.memoizedFileURLs = new Map()\n    this.memoizedPaths = new Map()\n    this.memoizedURLs = new Map()\n  }\n\n  addAnnotation() {\n    let content\n\n    if (this.isInline()) {\n      content =\n        'data:application/json;base64,' + this.toBase64(this.map.toString())\n    } else if (typeof this.mapOpts.annotation === 'string') {\n      content = this.mapOpts.annotation\n    } else if (typeof this.mapOpts.annotation === 'function') {\n      content = this.mapOpts.annotation(this.opts.to, this.root)\n    } else {\n      content = this.outputFile() + '.map'\n    }\n    let eol = '\\n'\n    if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n    this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n  }\n\n  applyPrevMaps() {\n    for (let prev of this.previous()) {\n      let from = this.toUrl(this.path(prev.file))\n      let root = prev.root || dirname(prev.file)\n      let map\n\n      if (this.mapOpts.sourcesContent === false) {\n        map = new SourceMapConsumer(prev.text)\n        if (map.sourcesContent) {\n          map.sourcesContent = null\n        }\n      } else {\n        map = prev.consumer()\n      }\n\n      this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n    }\n  }\n\n  clearAnnotation() {\n    if (this.mapOpts.annotation === false) return\n\n    if (this.root) {\n      let node\n      for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n        node = this.root.nodes[i]\n        if (node.type !== 'comment') continue\n        if (node.text.startsWith('# sourceMappingURL=')) {\n          this.root.removeChild(i)\n        }\n      }\n    } else if (this.css) {\n      this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n    }\n  }\n\n  generate() {\n    this.clearAnnotation()\n    if (pathAvailable && sourceMapAvailable && this.isMap()) {\n      return this.generateMap()\n    } else {\n      let result = ''\n      this.stringify(this.root, i => {\n        result += i\n      })\n      return [result]\n    }\n  }\n\n  generateMap() {\n    if (this.root) {\n      this.generateString()\n    } else if (this.previous().length === 1) {\n      let prev = this.previous()[0].consumer()\n      prev.file = this.outputFile()\n      this.map = SourceMapGenerator.fromSourceMap(prev, {\n        ignoreInvalidMapping: true\n      })\n    } else {\n      this.map = new SourceMapGenerator({\n        file: this.outputFile(),\n        ignoreInvalidMapping: true\n      })\n      this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from\n          ? this.toUrl(this.path(this.opts.from))\n          : '<no source>'\n      })\n    }\n\n    if (this.isSourcesContent()) this.setSourcesContent()\n    if (this.root && this.previous().length > 0) this.applyPrevMaps()\n    if (this.isAnnotation()) this.addAnnotation()\n\n    if (this.isInline()) {\n      return [this.css]\n    } else {\n      return [this.css, this.map]\n    }\n  }\n\n  generateString() {\n    this.css = ''\n    this.map = new SourceMapGenerator({\n      file: this.outputFile(),\n      ignoreInvalidMapping: true\n    })\n\n    let line = 1\n    let column = 1\n\n    let noSource = '<no source>'\n    let mapping = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: ''\n    }\n\n    let last, lines\n    this.stringify(this.root, (str, node, type) => {\n      this.css += str\n\n      if (node && type !== 'end') {\n        mapping.generated.line = line\n        mapping.generated.column = column - 1\n        if (node.source && node.source.start) {\n          mapping.source = this.sourcePath(node)\n          mapping.original.line = node.source.start.line\n          mapping.original.column = node.source.start.column - 1\n          this.map.addMapping(mapping)\n        } else {\n          mapping.source = noSource\n          mapping.original.line = 1\n          mapping.original.column = 0\n          this.map.addMapping(mapping)\n        }\n      }\n\n      lines = str.match(/\\n/g)\n      if (lines) {\n        line += lines.length\n        last = str.lastIndexOf('\\n')\n        column = str.length - last\n      } else {\n        column += str.length\n      }\n\n      if (node && type !== 'start') {\n        let p = node.parent || { raws: {} }\n        let childless =\n          node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n        if (!childless || node !== p.last || p.raws.semicolon) {\n          if (node.source && node.source.end) {\n            mapping.source = this.sourcePath(node)\n            mapping.original.line = node.source.end.line\n            mapping.original.column = node.source.end.column - 1\n            mapping.generated.line = line\n            mapping.generated.column = column - 2\n            this.map.addMapping(mapping)\n          } else {\n            mapping.source = noSource\n            mapping.original.line = 1\n            mapping.original.column = 0\n            mapping.generated.line = line\n            mapping.generated.column = column - 1\n            this.map.addMapping(mapping)\n          }\n        }\n      }\n    })\n  }\n\n  isAnnotation() {\n    if (this.isInline()) {\n      return true\n    }\n    if (typeof this.mapOpts.annotation !== 'undefined') {\n      return this.mapOpts.annotation\n    }\n    if (this.previous().length) {\n      return this.previous().some(i => i.annotation)\n    }\n    return true\n  }\n\n  isInline() {\n    if (typeof this.mapOpts.inline !== 'undefined') {\n      return this.mapOpts.inline\n    }\n\n    let annotation = this.mapOpts.annotation\n    if (typeof annotation !== 'undefined' && annotation !== true) {\n      return false\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(i => i.inline)\n    }\n    return true\n  }\n\n  isMap() {\n    if (typeof this.opts.map !== 'undefined') {\n      return !!this.opts.map\n    }\n    return this.previous().length > 0\n  }\n\n  isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n      return this.mapOpts.sourcesContent\n    }\n    if (this.previous().length) {\n      return this.previous().some(i => i.withContent())\n    }\n    return true\n  }\n\n  outputFile() {\n    if (this.opts.to) {\n      return this.path(this.opts.to)\n    } else if (this.opts.from) {\n      return this.path(this.opts.from)\n    } else {\n      return 'to.css'\n    }\n  }\n\n  path(file) {\n    if (this.mapOpts.absolute) return file\n    if (file.charCodeAt(0) === 60 /* `<` */) return file\n    if (/^\\w+:\\/\\//.test(file)) return file\n    let cached = this.memoizedPaths.get(file)\n    if (cached) return cached\n\n    let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n    if (typeof this.mapOpts.annotation === 'string') {\n      from = dirname(resolve(from, this.mapOpts.annotation))\n    }\n\n    let path = relative(from, file)\n    this.memoizedPaths.set(file, path)\n\n    return path\n  }\n\n  previous() {\n    if (!this.previousMaps) {\n      this.previousMaps = []\n      if (this.root) {\n        this.root.walk(node => {\n          if (node.source && node.source.input.map) {\n            let map = node.source.input.map\n            if (!this.previousMaps.includes(map)) {\n              this.previousMaps.push(map)\n            }\n          }\n        })\n      } else {\n        let input = new Input(this.originalCSS, this.opts)\n        if (input.map) this.previousMaps.push(input.map)\n      }\n    }\n\n    return this.previousMaps\n  }\n\n  setSourcesContent() {\n    let already = {}\n    if (this.root) {\n      this.root.walk(node => {\n        if (node.source) {\n          let from = node.source.input.from\n          if (from && !already[from]) {\n            already[from] = true\n            let fromUrl = this.usesFileUrls\n              ? this.toFileUrl(from)\n              : this.toUrl(this.path(from))\n            this.map.setSourceContent(fromUrl, node.source.input.css)\n          }\n        }\n      })\n    } else if (this.css) {\n      let from = this.opts.from\n        ? this.toUrl(this.path(this.opts.from))\n        : '<no source>'\n      this.map.setSourceContent(from, this.css)\n    }\n  }\n\n  sourcePath(node) {\n    if (this.mapOpts.from) {\n      return this.toUrl(this.mapOpts.from)\n    } else if (this.usesFileUrls) {\n      return this.toFileUrl(node.source.input.from)\n    } else {\n      return this.toUrl(this.path(node.source.input.from))\n    }\n  }\n\n  toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString('base64')\n    } else {\n      return window.btoa(unescape(encodeURIComponent(str)))\n    }\n  }\n\n  toFileUrl(path) {\n    let cached = this.memoizedFileURLs.get(path)\n    if (cached) return cached\n\n    if (pathToFileURL) {\n      let fileURL = pathToFileURL(path).toString()\n      this.memoizedFileURLs.set(path, fileURL)\n\n      return fileURL\n    } else {\n      throw new Error(\n        '`map.absolute` option is not available in this PostCSS build'\n      )\n    }\n  }\n\n  toUrl(path) {\n    let cached = this.memoizedURLs.get(path)\n    if (cached) return cached\n\n    if (sep === '\\\\') {\n      path = path.replace(/\\\\/g, '/')\n    }\n\n    let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n    this.memoizedURLs.set(path, url)\n\n    return url\n  }\n}\n\nmodule.exports = MapGenerator\n\n\n/***/ }),\n\n/***/ 4211:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet MapGenerator = __webpack_require__(3604)\nlet parse = __webpack_require__(9577)\nconst Result = __webpack_require__(3717)\nlet stringify = __webpack_require__(3303)\nlet warnOnce = __webpack_require__(6156)\n\nclass NoWorkResult {\n  get content() {\n    return this.result.css\n  }\n\n  get css() {\n    return this.result.css\n  }\n\n  get map() {\n    return this.result.map\n  }\n\n  get messages() {\n    return []\n  }\n\n  get opts() {\n    return this.result.opts\n  }\n\n  get processor() {\n    return this.result.processor\n  }\n\n  get root() {\n    if (this._root) {\n      return this._root\n    }\n\n    let root\n    let parser = parse\n\n    try {\n      root = parser(this._css, this._opts)\n    } catch (error) {\n      this.error = error\n    }\n\n    if (this.error) {\n      throw this.error\n    } else {\n      this._root = root\n      return root\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'NoWorkResult'\n  }\n\n  constructor(processor, css, opts) {\n    css = css.toString()\n    this.stringified = false\n\n    this._processor = processor\n    this._css = css\n    this._opts = opts\n    this._map = undefined\n    let root\n\n    let str = stringify\n    this.result = new Result(this._processor, root, this._opts)\n    this.result.css = css\n\n    let self = this\n    Object.defineProperty(this.result, 'root', {\n      get() {\n        return self.root\n      }\n    })\n\n    let map = new MapGenerator(str, root, this._opts, css)\n    if (map.isMap()) {\n      let [generatedCSS, generatedMap] = map.generate()\n      if (generatedCSS) {\n        this.result.css = generatedCSS\n      }\n      if (generatedMap) {\n        this.result.map = generatedMap\n      }\n    } else {\n      map.clearAnnotation()\n      this.result.css = map.css\n    }\n  }\n\n  async() {\n    if (this.error) return Promise.reject(this.error)\n    return Promise.resolve(this.result)\n  }\n\n  catch(onRejected) {\n    return this.async().catch(onRejected)\n  }\n\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally)\n  }\n\n  sync() {\n    if (this.error) throw this.error\n    return this.result\n  }\n\n  then(onFulfilled, onRejected) {\n    if (false) {}\n\n    return this.async().then(onFulfilled, onRejected)\n  }\n\n  toString() {\n    return this._css\n  }\n\n  warnings() {\n    return []\n  }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n\n\n/***/ }),\n\n/***/ 3152:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet CssSyntaxError = __webpack_require__(3614)\nlet Stringifier = __webpack_require__(7668)\nlet stringify = __webpack_require__(3303)\nlet { isClean, my } = __webpack_require__(4151)\n\nfunction cloneNode(obj, parent) {\n  let cloned = new obj.constructor()\n\n  for (let i in obj) {\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n      /* c8 ignore next 2 */\n      continue\n    }\n    if (i === 'proxyCache') continue\n    let value = obj[i]\n    let type = typeof value\n\n    if (i === 'parent' && type === 'object') {\n      if (parent) cloned[i] = parent\n    } else if (i === 'source') {\n      cloned[i] = value\n    } else if (Array.isArray(value)) {\n      cloned[i] = value.map(j => cloneNode(j, cloned))\n    } else {\n      if (type === 'object' && value !== null) value = cloneNode(value)\n      cloned[i] = value\n    }\n  }\n\n  return cloned\n}\n\nfunction sourceOffset(inputCSS, position) {\n  // Not all custom syntaxes support `offset` in `source.start` and `source.end`\n  if (position && typeof position.offset !== 'undefined') {\n    return position.offset\n  }\n\n  let column = 1\n  let line = 1\n  let offset = 0\n\n  for (let i = 0; i < inputCSS.length; i++) {\n    if (line === position.line && column === position.column) {\n      offset = i\n      break\n    }\n\n    if (inputCSS[i] === '\\n') {\n      column = 1\n      line += 1\n    } else {\n      column += 1\n    }\n  }\n\n  return offset\n}\n\nclass Node {\n  get proxyOf() {\n    return this\n  }\n\n  constructor(defaults = {}) {\n    this.raws = {}\n    this[isClean] = false\n    this[my] = true\n\n    for (let name in defaults) {\n      if (name === 'nodes') {\n        this.nodes = []\n        for (let node of defaults[name]) {\n          if (typeof node.clone === 'function') {\n            this.append(node.clone())\n          } else {\n            this.append(node)\n          }\n        }\n      } else {\n        this[name] = defaults[name]\n      }\n    }\n  }\n\n  addToError(error) {\n    error.postcssNode = this\n    if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n      let s = this.source\n      error.stack = error.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n      )\n    }\n    return error\n  }\n\n  after(add) {\n    this.parent.insertAfter(this, add)\n    return this\n  }\n\n  assign(overrides = {}) {\n    for (let name in overrides) {\n      this[name] = overrides[name]\n    }\n    return this\n  }\n\n  before(add) {\n    this.parent.insertBefore(this, add)\n    return this\n  }\n\n  cleanRaws(keepBetween) {\n    delete this.raws.before\n    delete this.raws.after\n    if (!keepBetween) delete this.raws.between\n  }\n\n  clone(overrides = {}) {\n    let cloned = cloneNode(this)\n    for (let name in overrides) {\n      cloned[name] = overrides[name]\n    }\n    return cloned\n  }\n\n  cloneAfter(overrides = {}) {\n    let cloned = this.clone(overrides)\n    this.parent.insertAfter(this, cloned)\n    return cloned\n  }\n\n  cloneBefore(overrides = {}) {\n    let cloned = this.clone(overrides)\n    this.parent.insertBefore(this, cloned)\n    return cloned\n  }\n\n  error(message, opts = {}) {\n    if (this.source) {\n      let { end, start } = this.rangeBy(opts)\n      return this.source.input.error(\n        message,\n        { column: start.column, line: start.line },\n        { column: end.column, line: end.line },\n        opts\n      )\n    }\n    return new CssSyntaxError(message)\n  }\n\n  getProxyProcessor() {\n    return {\n      get(node, prop) {\n        if (prop === 'proxyOf') {\n          return node\n        } else if (prop === 'root') {\n          return () => node.root().toProxy()\n        } else {\n          return node[prop]\n        }\n      },\n\n      set(node, prop, value) {\n        if (node[prop] === value) return true\n        node[prop] = value\n        if (\n          prop === 'prop' ||\n          prop === 'value' ||\n          prop === 'name' ||\n          prop === 'params' ||\n          prop === 'important' ||\n          /* c8 ignore next */\n          prop === 'text'\n        ) {\n          node.markDirty()\n        }\n        return true\n      }\n    }\n  }\n\n  /* c8 ignore next 3 */\n  markClean() {\n    this[isClean] = true\n  }\n\n  markDirty() {\n    if (this[isClean]) {\n      this[isClean] = false\n      let next = this\n      while ((next = next.parent)) {\n        next[isClean] = false\n      }\n    }\n  }\n\n  next() {\n    if (!this.parent) return undefined\n    let index = this.parent.index(this)\n    return this.parent.nodes[index + 1]\n  }\n\n  positionBy(opts = {}) {\n    let pos = this.source.start\n    if (opts.index) {\n      pos = this.positionInside(opts.index)\n    } else if (opts.word) {\n      let inputString =\n        'document' in this.source.input\n          ? this.source.input.document\n          : this.source.input.css\n      let stringRepresentation = inputString.slice(\n        sourceOffset(inputString, this.source.start),\n        sourceOffset(inputString, this.source.end)\n      )\n      let index = stringRepresentation.indexOf(opts.word)\n      if (index !== -1) pos = this.positionInside(index)\n    }\n    return pos\n  }\n\n  positionInside(index) {\n    let column = this.source.start.column\n    let line = this.source.start.line\n    let inputString =\n      'document' in this.source.input\n        ? this.source.input.document\n        : this.source.input.css\n    let offset = sourceOffset(inputString, this.source.start)\n    let end = offset + index\n\n    for (let i = offset; i < end; i++) {\n      if (inputString[i] === '\\n') {\n        column = 1\n        line += 1\n      } else {\n        column += 1\n      }\n    }\n\n    return { column, line, offset: end }\n  }\n\n  prev() {\n    if (!this.parent) return undefined\n    let index = this.parent.index(this)\n    return this.parent.nodes[index - 1]\n  }\n\n  rangeBy(opts = {}) {\n    let inputString =\n      'document' in this.source.input\n        ? this.source.input.document\n        : this.source.input.css\n    let start = {\n      column: this.source.start.column,\n      line: this.source.start.line,\n      offset: sourceOffset(inputString, this.source.start)\n    }\n    let end = this.source.end\n      ? {\n          column: this.source.end.column + 1,\n          line: this.source.end.line,\n          offset:\n            typeof this.source.end.offset === 'number'\n              ? // `source.end.offset` is exclusive, so we don't need to add 1\n                this.source.end.offset\n              : // Since line/column in this.source.end is inclusive,\n                // the `sourceOffset(... , this.source.end)` returns an inclusive offset.\n                // So, we add 1 to convert it to exclusive.\n                sourceOffset(inputString, this.source.end) + 1\n        }\n      : {\n          column: start.column + 1,\n          line: start.line,\n          offset: start.offset + 1\n        }\n\n    if (opts.word) {\n      let stringRepresentation = inputString.slice(\n        sourceOffset(inputString, this.source.start),\n        sourceOffset(inputString, this.source.end)\n      )\n      let index = stringRepresentation.indexOf(opts.word)\n      if (index !== -1) {\n        start = this.positionInside(index)\n        end = this.positionInside(index + opts.word.length)\n      }\n    } else {\n      if (opts.start) {\n        start = {\n          column: opts.start.column,\n          line: opts.start.line,\n          offset: sourceOffset(inputString, opts.start)\n        }\n      } else if (opts.index) {\n        start = this.positionInside(opts.index)\n      }\n\n      if (opts.end) {\n        end = {\n          column: opts.end.column,\n          line: opts.end.line,\n          offset: sourceOffset(inputString, opts.end)\n        }\n      } else if (typeof opts.endIndex === 'number') {\n        end = this.positionInside(opts.endIndex)\n      } else if (opts.index) {\n        end = this.positionInside(opts.index + 1)\n      }\n    }\n\n    if (\n      end.line < start.line ||\n      (end.line === start.line && end.column <= start.column)\n    ) {\n      end = {\n        column: start.column + 1,\n        line: start.line,\n        offset: start.offset + 1\n      }\n    }\n\n    return { end, start }\n  }\n\n  raw(prop, defaultType) {\n    let str = new Stringifier()\n    return str.raw(this, prop, defaultType)\n  }\n\n  remove() {\n    if (this.parent) {\n      this.parent.removeChild(this)\n    }\n    this.parent = undefined\n    return this\n  }\n\n  replaceWith(...nodes) {\n    if (this.parent) {\n      let bookmark = this\n      let foundSelf = false\n      for (let node of nodes) {\n        if (node === this) {\n          foundSelf = true\n        } else if (foundSelf) {\n          this.parent.insertAfter(bookmark, node)\n          bookmark = node\n        } else {\n          this.parent.insertBefore(bookmark, node)\n        }\n      }\n\n      if (!foundSelf) {\n        this.remove()\n      }\n    }\n\n    return this\n  }\n\n  root() {\n    let result = this\n    while (result.parent && result.parent.type !== 'document') {\n      result = result.parent\n    }\n    return result\n  }\n\n  toJSON(_, inputs) {\n    let fixed = {}\n    let emitInputs = inputs == null\n    inputs = inputs || new Map()\n    let inputsNextIndex = 0\n\n    for (let name in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, name)) {\n        /* c8 ignore next 2 */\n        continue\n      }\n      if (name === 'parent' || name === 'proxyCache') continue\n      let value = this[name]\n\n      if (Array.isArray(value)) {\n        fixed[name] = value.map(i => {\n          if (typeof i === 'object' && i.toJSON) {\n            return i.toJSON(null, inputs)\n          } else {\n            return i\n          }\n        })\n      } else if (typeof value === 'object' && value.toJSON) {\n        fixed[name] = value.toJSON(null, inputs)\n      } else if (name === 'source') {\n        if (value == null) continue\n        let inputId = inputs.get(value.input)\n        if (inputId == null) {\n          inputId = inputsNextIndex\n          inputs.set(value.input, inputsNextIndex)\n          inputsNextIndex++\n        }\n        fixed[name] = {\n          end: value.end,\n          inputId,\n          start: value.start\n        }\n      } else {\n        fixed[name] = value\n      }\n    }\n\n    if (emitInputs) {\n      fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n    }\n\n    return fixed\n  }\n\n  toProxy() {\n    if (!this.proxyCache) {\n      this.proxyCache = new Proxy(this, this.getProxyProcessor())\n    }\n    return this.proxyCache\n  }\n\n  toString(stringifier = stringify) {\n    if (stringifier.stringify) stringifier = stringifier.stringify\n    let result = ''\n    stringifier(this, i => {\n      result += i\n    })\n    return result\n  }\n\n  warn(result, text, opts = {}) {\n    let data = { node: this }\n    for (let i in opts) data[i] = opts[i]\n    return result.warn(text, data)\n  }\n}\n\nmodule.exports = Node\nNode.default = Node\n\n\n/***/ }),\n\n/***/ 9577:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Container = __webpack_require__(7793)\nlet Input = __webpack_require__(1106)\nlet Parser = __webpack_require__(8339)\n\nfunction parse(css, opts) {\n  let input = new Input(css, opts)\n  let parser = new Parser(input)\n  try {\n    parser.parse()\n  } catch (e) {\n    if (false) {}\n    throw e\n  }\n\n  return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n\n\n/***/ }),\n\n/***/ 8339:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet AtRule = __webpack_require__(396)\nlet Comment = __webpack_require__(9371)\nlet Declaration = __webpack_require__(5238)\nlet Root = __webpack_require__(5644)\nlet Rule = __webpack_require__(1534)\nlet tokenizer = __webpack_require__(5781)\n\nconst SAFE_COMMENT_NEIGHBOR = {\n  empty: true,\n  space: true\n}\n\nfunction findLastWithPosition(tokens) {\n  for (let i = tokens.length - 1; i >= 0; i--) {\n    let token = tokens[i]\n    let pos = token[3] || token[2]\n    if (pos) return pos\n  }\n}\n\nclass Parser {\n  constructor(input) {\n    this.input = input\n\n    this.root = new Root()\n    this.current = this.root\n    this.spaces = ''\n    this.semicolon = false\n\n    this.createTokenizer()\n    this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n  }\n\n  atrule(token) {\n    let node = new AtRule()\n    node.name = token[1].slice(1)\n    if (node.name === '') {\n      this.unnamedAtrule(node, token)\n    }\n    this.init(node, token[2])\n\n    let type\n    let prev\n    let shift\n    let last = false\n    let open = false\n    let params = []\n    let brackets = []\n\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken()\n      type = token[0]\n\n      if (type === '(' || type === '[') {\n        brackets.push(type === '(' ? ')' : ']')\n      } else if (type === '{' && brackets.length > 0) {\n        brackets.push('}')\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop()\n      }\n\n      if (brackets.length === 0) {\n        if (type === ';') {\n          node.source.end = this.getPosition(token[2])\n          node.source.end.offset++\n          this.semicolon = true\n          break\n        } else if (type === '{') {\n          open = true\n          break\n        } else if (type === '}') {\n          if (params.length > 0) {\n            shift = params.length - 1\n            prev = params[shift]\n            while (prev && prev[0] === 'space') {\n              prev = params[--shift]\n            }\n            if (prev) {\n              node.source.end = this.getPosition(prev[3] || prev[2])\n              node.source.end.offset++\n            }\n          }\n          this.end(token)\n          break\n        } else {\n          params.push(token)\n        }\n      } else {\n        params.push(token)\n      }\n\n      if (this.tokenizer.endOfFile()) {\n        last = true\n        break\n      }\n    }\n\n    node.raws.between = this.spacesAndCommentsFromEnd(params)\n    if (params.length) {\n      node.raws.afterName = this.spacesAndCommentsFromStart(params)\n      this.raw(node, 'params', params)\n      if (last) {\n        token = params[params.length - 1]\n        node.source.end = this.getPosition(token[3] || token[2])\n        node.source.end.offset++\n        this.spaces = node.raws.between\n        node.raws.between = ''\n      }\n    } else {\n      node.raws.afterName = ''\n      node.params = ''\n    }\n\n    if (open) {\n      node.nodes = []\n      this.current = node\n    }\n  }\n\n  checkMissedSemicolon(tokens) {\n    let colon = this.colon(tokens)\n    if (colon === false) return\n\n    let founded = 0\n    let token\n    for (let j = colon - 1; j >= 0; j--) {\n      token = tokens[j]\n      if (token[0] !== 'space') {\n        founded += 1\n        if (founded === 2) break\n      }\n    }\n    // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n    // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n    // And because we need it after that one we do +1 to get the next one.\n    throw this.input.error(\n      'Missed semicolon',\n      token[0] === 'word' ? token[3] + 1 : token[2]\n    )\n  }\n\n  colon(tokens) {\n    let brackets = 0\n    let prev, token, type\n    for (let [i, element] of tokens.entries()) {\n      token = element\n      type = token[0]\n\n      if (type === '(') {\n        brackets += 1\n      }\n      if (type === ')') {\n        brackets -= 1\n      }\n      if (brackets === 0 && type === ':') {\n        if (!prev) {\n          this.doubleColon(token)\n        } else if (prev[0] === 'word' && prev[1] === 'progid') {\n          continue\n        } else {\n          return i\n        }\n      }\n\n      prev = token\n    }\n    return false\n  }\n\n  comment(token) {\n    let node = new Comment()\n    this.init(node, token[2])\n    node.source.end = this.getPosition(token[3] || token[2])\n    node.source.end.offset++\n\n    let text = token[1].slice(2, -2)\n    if (/^\\s*$/.test(text)) {\n      node.text = ''\n      node.raws.left = text\n      node.raws.right = ''\n    } else {\n      let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n      node.text = match[2]\n      node.raws.left = match[1]\n      node.raws.right = match[3]\n    }\n  }\n\n  createTokenizer() {\n    this.tokenizer = tokenizer(this.input)\n  }\n\n  decl(tokens, customProperty) {\n    let node = new Declaration()\n    this.init(node, tokens[0][2])\n\n    let last = tokens[tokens.length - 1]\n    if (last[0] === ';') {\n      this.semicolon = true\n      tokens.pop()\n    }\n\n    node.source.end = this.getPosition(\n      last[3] || last[2] || findLastWithPosition(tokens)\n    )\n    node.source.end.offset++\n\n    while (tokens[0][0] !== 'word') {\n      if (tokens.length === 1) this.unknownWord(tokens)\n      node.raws.before += tokens.shift()[1]\n    }\n    node.source.start = this.getPosition(tokens[0][2])\n\n    node.prop = ''\n    while (tokens.length) {\n      let type = tokens[0][0]\n      if (type === ':' || type === 'space' || type === 'comment') {\n        break\n      }\n      node.prop += tokens.shift()[1]\n    }\n\n    node.raws.between = ''\n\n    let token\n    while (tokens.length) {\n      token = tokens.shift()\n\n      if (token[0] === ':') {\n        node.raws.between += token[1]\n        break\n      } else {\n        if (token[0] === 'word' && /\\w/.test(token[1])) {\n          this.unknownWord([token])\n        }\n        node.raws.between += token[1]\n      }\n    }\n\n    if (node.prop[0] === '_' || node.prop[0] === '*') {\n      node.raws.before += node.prop[0]\n      node.prop = node.prop.slice(1)\n    }\n\n    let firstSpaces = []\n    let next\n    while (tokens.length) {\n      next = tokens[0][0]\n      if (next !== 'space' && next !== 'comment') break\n      firstSpaces.push(tokens.shift())\n    }\n\n    this.precheckMissedSemicolon(tokens)\n\n    for (let i = tokens.length - 1; i >= 0; i--) {\n      token = tokens[i]\n      if (token[1].toLowerCase() === '!important') {\n        node.important = true\n        let string = this.stringFrom(tokens, i)\n        string = this.spacesFromEnd(tokens) + string\n        if (string !== ' !important') node.raws.important = string\n        break\n      } else if (token[1].toLowerCase() === 'important') {\n        let cache = tokens.slice(0)\n        let str = ''\n        for (let j = i; j > 0; j--) {\n          let type = cache[j][0]\n          if (str.trim().startsWith('!') && type !== 'space') {\n            break\n          }\n          str = cache.pop()[1] + str\n        }\n        if (str.trim().startsWith('!')) {\n          node.important = true\n          node.raws.important = str\n          tokens = cache\n        }\n      }\n\n      if (token[0] !== 'space' && token[0] !== 'comment') {\n        break\n      }\n    }\n\n    let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n    if (hasWord) {\n      node.raws.between += firstSpaces.map(i => i[1]).join('')\n      firstSpaces = []\n    }\n    this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n    if (node.value.includes(':') && !customProperty) {\n      this.checkMissedSemicolon(tokens)\n    }\n  }\n\n  doubleColon(token) {\n    throw this.input.error(\n      'Double colon',\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    )\n  }\n\n  emptyRule(token) {\n    let node = new Rule()\n    this.init(node, token[2])\n    node.selector = ''\n    node.raws.between = ''\n    this.current = node\n  }\n\n  end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon\n    }\n    this.semicolon = false\n\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces\n    this.spaces = ''\n\n    if (this.current.parent) {\n      this.current.source.end = this.getPosition(token[2])\n      this.current.source.end.offset++\n      this.current = this.current.parent\n    } else {\n      this.unexpectedClose(token)\n    }\n  }\n\n  endFile() {\n    if (this.current.parent) this.unclosedBlock()\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon\n    }\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces\n    this.root.source.end = this.getPosition(this.tokenizer.position())\n  }\n\n  freeSemicolon(token) {\n    this.spaces += token[1]\n    if (this.current.nodes) {\n      let prev = this.current.nodes[this.current.nodes.length - 1]\n      if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces\n        this.spaces = ''\n        prev.source.end = this.getPosition(token[2])\n        prev.source.end.offset += prev.raws.ownSemicolon.length\n      }\n    }\n  }\n\n  // Helpers\n\n  getPosition(offset) {\n    let pos = this.input.fromOffset(offset)\n    return {\n      column: pos.col,\n      line: pos.line,\n      offset\n    }\n  }\n\n  init(node, offset) {\n    this.current.push(node)\n    node.source = {\n      input: this.input,\n      start: this.getPosition(offset)\n    }\n    node.raws.before = this.spaces\n    this.spaces = ''\n    if (node.type !== 'comment') this.semicolon = false\n  }\n\n  other(start) {\n    let end = false\n    let type = null\n    let colon = false\n    let bracket = null\n    let brackets = []\n    let customProperty = start[1].startsWith('--')\n\n    let tokens = []\n    let token = start\n    while (token) {\n      type = token[0]\n      tokens.push(token)\n\n      if (type === '(' || type === '[') {\n        if (!bracket) bracket = token\n        brackets.push(type === '(' ? ')' : ']')\n      } else if (customProperty && colon && type === '{') {\n        if (!bracket) bracket = token\n        brackets.push('}')\n      } else if (brackets.length === 0) {\n        if (type === ';') {\n          if (colon) {\n            this.decl(tokens, customProperty)\n            return\n          } else {\n            break\n          }\n        } else if (type === '{') {\n          this.rule(tokens)\n          return\n        } else if (type === '}') {\n          this.tokenizer.back(tokens.pop())\n          end = true\n          break\n        } else if (type === ':') {\n          colon = true\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop()\n        if (brackets.length === 0) bracket = null\n      }\n\n      token = this.tokenizer.nextToken()\n    }\n\n    if (this.tokenizer.endOfFile()) end = true\n    if (brackets.length > 0) this.unclosedBracket(bracket)\n\n    if (end && colon) {\n      if (!customProperty) {\n        while (tokens.length) {\n          token = tokens[tokens.length - 1][0]\n          if (token !== 'space' && token !== 'comment') break\n          this.tokenizer.back(tokens.pop())\n        }\n      }\n      this.decl(tokens, customProperty)\n    } else {\n      this.unknownWord(tokens)\n    }\n  }\n\n  parse() {\n    let token\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken()\n\n      switch (token[0]) {\n        case 'space':\n          this.spaces += token[1]\n          break\n\n        case ';':\n          this.freeSemicolon(token)\n          break\n\n        case '}':\n          this.end(token)\n          break\n\n        case 'comment':\n          this.comment(token)\n          break\n\n        case 'at-word':\n          this.atrule(token)\n          break\n\n        case '{':\n          this.emptyRule(token)\n          break\n\n        default:\n          this.other(token)\n          break\n      }\n    }\n    this.endFile()\n  }\n\n  precheckMissedSemicolon(/* tokens */) {\n    // Hook for Safe Parser\n  }\n\n  raw(node, prop, tokens, customProperty) {\n    let token, type\n    let length = tokens.length\n    let value = ''\n    let clean = true\n    let next, prev\n\n    for (let i = 0; i < length; i += 1) {\n      token = tokens[i]\n      type = token[0]\n      if (type === 'space' && i === length - 1 && !customProperty) {\n        clean = false\n      } else if (type === 'comment') {\n        prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n        next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n        if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n          if (value.slice(-1) === ',') {\n            clean = false\n          } else {\n            value += token[1]\n          }\n        } else {\n          clean = false\n        }\n      } else {\n        value += token[1]\n      }\n    }\n    if (!clean) {\n      let raw = tokens.reduce((all, i) => all + i[1], '')\n      node.raws[prop] = { raw, value }\n    }\n    node[prop] = value\n  }\n\n  rule(tokens) {\n    tokens.pop()\n\n    let node = new Rule()\n    this.init(node, tokens[0][2])\n\n    node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n    this.raw(node, 'selector', tokens)\n    this.current = node\n  }\n\n  spacesAndCommentsFromEnd(tokens) {\n    let lastTokenType\n    let spaces = ''\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0]\n      if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n      spaces = tokens.pop()[1] + spaces\n    }\n    return spaces\n  }\n\n  // Errors\n\n  spacesAndCommentsFromStart(tokens) {\n    let next\n    let spaces = ''\n    while (tokens.length) {\n      next = tokens[0][0]\n      if (next !== 'space' && next !== 'comment') break\n      spaces += tokens.shift()[1]\n    }\n    return spaces\n  }\n\n  spacesFromEnd(tokens) {\n    let lastTokenType\n    let spaces = ''\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0]\n      if (lastTokenType !== 'space') break\n      spaces = tokens.pop()[1] + spaces\n    }\n    return spaces\n  }\n\n  stringFrom(tokens, from) {\n    let result = ''\n    for (let i = from; i < tokens.length; i++) {\n      result += tokens[i][1]\n    }\n    tokens.splice(from, tokens.length - from)\n    return result\n  }\n\n  unclosedBlock() {\n    let pos = this.current.source.start\n    throw this.input.error('Unclosed block', pos.line, pos.column)\n  }\n\n  unclosedBracket(bracket) {\n    throw this.input.error(\n      'Unclosed bracket',\n      { offset: bracket[2] },\n      { offset: bracket[2] + 1 }\n    )\n  }\n\n  unexpectedClose(token) {\n    throw this.input.error(\n      'Unexpected }',\n      { offset: token[2] },\n      { offset: token[2] + 1 }\n    )\n  }\n\n  unknownWord(tokens) {\n    throw this.input.error(\n      'Unknown word ' + tokens[0][1],\n      { offset: tokens[0][2] },\n      { offset: tokens[0][2] + tokens[0][1].length }\n    )\n  }\n\n  unnamedAtrule(node, token) {\n    throw this.input.error(\n      'At-rule without name',\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    )\n  }\n}\n\nmodule.exports = Parser\n\n\n/***/ }),\n\n/***/ 2895:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n/* provided dependency */ var process = __webpack_require__(5606);\n\n\nlet AtRule = __webpack_require__(396)\nlet Comment = __webpack_require__(9371)\nlet Container = __webpack_require__(7793)\nlet CssSyntaxError = __webpack_require__(3614)\nlet Declaration = __webpack_require__(5238)\nlet Document = __webpack_require__(145)\nlet fromJSON = __webpack_require__(3438)\nlet Input = __webpack_require__(1106)\nlet LazyResult = __webpack_require__(6966)\nlet list = __webpack_require__(1752)\nlet Node = __webpack_require__(3152)\nlet parse = __webpack_require__(9577)\nlet Processor = __webpack_require__(6846)\nlet Result = __webpack_require__(3717)\nlet Root = __webpack_require__(5644)\nlet Rule = __webpack_require__(1534)\nlet stringify = __webpack_require__(3303)\nlet Warning = __webpack_require__(38)\n\nfunction postcss(...plugins) {\n  if (plugins.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0]\n  }\n  return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n  let warningPrinted = false\n  function creator(...args) {\n    // eslint-disable-next-line no-console\n    if (console && console.warn && !warningPrinted) {\n      warningPrinted = true\n      // eslint-disable-next-line no-console\n      console.warn(\n        name +\n          ': postcss.plugin was deprecated. Migration guide:\\n' +\n          'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n      )\n      if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n        /* c8 ignore next 7 */\n        // eslint-disable-next-line no-console\n        console.warn(\n          name +\n            ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n            'https://www.w3ctech.com/topic/2226'\n        )\n      }\n    }\n    let transformer = initializer(...args)\n    transformer.postcssPlugin = name\n    transformer.postcssVersion = new Processor().version\n    return transformer\n  }\n\n  let cache\n  Object.defineProperty(creator, 'postcss', {\n    get() {\n      if (!cache) cache = creator()\n      return cache\n    }\n  })\n\n  creator.process = function (css, processOpts, pluginOpts) {\n    return postcss([creator(pluginOpts)]).process(css, processOpts)\n  }\n\n  return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n\n\n/***/ }),\n\n/***/ 3878:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet { existsSync, readFileSync } = __webpack_require__(9977)\nlet { dirname, join } = __webpack_require__(197)\nlet { SourceMapConsumer, SourceMapGenerator } = __webpack_require__(1866)\n\nfunction fromBase64(str) {\n  if (Buffer) {\n    return Buffer.from(str, 'base64').toString()\n  } else {\n    /* c8 ignore next 2 */\n    return window.atob(str)\n  }\n}\n\nclass PreviousMap {\n  constructor(css, opts) {\n    if (opts.map === false) return\n    this.loadAnnotation(css)\n    this.inline = this.startWith(this.annotation, 'data:')\n\n    let prev = opts.map ? opts.map.prev : undefined\n    let text = this.loadMap(opts.from, prev)\n    if (!this.mapFile && opts.from) {\n      this.mapFile = opts.from\n    }\n    if (this.mapFile) this.root = dirname(this.mapFile)\n    if (text) this.text = text\n  }\n\n  consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new SourceMapConsumer(this.text)\n    }\n    return this.consumerCache\n  }\n\n  decodeInline(text) {\n    let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n    let baseUri = /^data:application\\/json;base64,/\n    let charsetUri = /^data:application\\/json;charset=utf-?8,/\n    let uri = /^data:application\\/json,/\n\n    let uriMatch = text.match(charsetUri) || text.match(uri)\n    if (uriMatch) {\n      return decodeURIComponent(text.substr(uriMatch[0].length))\n    }\n\n    let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri)\n    if (baseUriMatch) {\n      return fromBase64(text.substr(baseUriMatch[0].length))\n    }\n\n    let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n    throw new Error('Unsupported source map encoding ' + encoding)\n  }\n\n  getAnnotationURL(sourceMapString) {\n    return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n  }\n\n  isMap(map) {\n    if (typeof map !== 'object') return false\n    return (\n      typeof map.mappings === 'string' ||\n      typeof map._mappings === 'string' ||\n      Array.isArray(map.sections)\n    )\n  }\n\n  loadAnnotation(css) {\n    let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g)\n    if (!comments) return\n\n    // sourceMappingURLs from comments, strings, etc.\n    let start = css.lastIndexOf(comments.pop())\n    let end = css.indexOf('*/', start)\n\n    if (start > -1 && end > -1) {\n      // Locate the last sourceMappingURL to avoid pickin\n      this.annotation = this.getAnnotationURL(css.substring(start, end))\n    }\n  }\n\n  loadFile(path) {\n    this.root = dirname(path)\n    if (existsSync(path)) {\n      this.mapFile = path\n      return readFileSync(path, 'utf-8').toString().trim()\n    }\n  }\n\n  loadMap(file, prev) {\n    if (prev === false) return false\n\n    if (prev) {\n      if (typeof prev === 'string') {\n        return prev\n      } else if (typeof prev === 'function') {\n        let prevPath = prev(file)\n        if (prevPath) {\n          let map = this.loadFile(prevPath)\n          if (!map) {\n            throw new Error(\n              'Unable to load previous source map: ' + prevPath.toString()\n            )\n          }\n          return map\n        }\n      } else if (prev instanceof SourceMapConsumer) {\n        return SourceMapGenerator.fromSourceMap(prev).toString()\n      } else if (prev instanceof SourceMapGenerator) {\n        return prev.toString()\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev)\n      } else {\n        throw new Error(\n          'Unsupported previous source map format: ' + prev.toString()\n        )\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation)\n    } else if (this.annotation) {\n      let map = this.annotation\n      if (file) map = join(dirname(file), map)\n      return this.loadFile(map)\n    }\n  }\n\n  startWith(string, start) {\n    if (!string) return false\n    return string.substr(0, start.length) === start\n  }\n\n  withContent() {\n    return !!(\n      this.consumer().sourcesContent &&\n      this.consumer().sourcesContent.length > 0\n    )\n  }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n\n\n/***/ }),\n\n/***/ 6846:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Document = __webpack_require__(145)\nlet LazyResult = __webpack_require__(6966)\nlet NoWorkResult = __webpack_require__(4211)\nlet Root = __webpack_require__(5644)\n\nclass Processor {\n  constructor(plugins = []) {\n    this.version = '8.5.6'\n    this.plugins = this.normalize(plugins)\n  }\n\n  normalize(plugins) {\n    let normalized = []\n    for (let i of plugins) {\n      if (i.postcss === true) {\n        i = i()\n      } else if (i.postcss) {\n        i = i.postcss\n      }\n\n      if (typeof i === 'object' && Array.isArray(i.plugins)) {\n        normalized = normalized.concat(i.plugins)\n      } else if (typeof i === 'object' && i.postcssPlugin) {\n        normalized.push(i)\n      } else if (typeof i === 'function') {\n        normalized.push(i)\n      } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n        if (false) {}\n      } else {\n        throw new Error(i + ' is not a PostCSS plugin')\n      }\n    }\n    return normalized\n  }\n\n  process(css, opts = {}) {\n    if (\n      !this.plugins.length &&\n      !opts.parser &&\n      !opts.stringifier &&\n      !opts.syntax\n    ) {\n      return new NoWorkResult(this, css, opts)\n    } else {\n      return new LazyResult(this, css, opts)\n    }\n  }\n\n  use(plugin) {\n    this.plugins = this.plugins.concat(this.normalize([plugin]))\n    return this\n  }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n\n\n/***/ }),\n\n/***/ 3717:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Warning = __webpack_require__(38)\n\nclass Result {\n  get content() {\n    return this.css\n  }\n\n  constructor(processor, root, opts) {\n    this.processor = processor\n    this.messages = []\n    this.root = root\n    this.opts = opts\n    this.css = ''\n    this.map = undefined\n  }\n\n  toString() {\n    return this.css\n  }\n\n  warn(text, opts = {}) {\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin\n      }\n    }\n\n    let warning = new Warning(text, opts)\n    this.messages.push(warning)\n\n    return warning\n  }\n\n  warnings() {\n    return this.messages.filter(i => i.type === 'warning')\n  }\n}\n\nmodule.exports = Result\nResult.default = Result\n\n\n/***/ }),\n\n/***/ 5644:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Container = __webpack_require__(7793)\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'root'\n    if (!this.nodes) this.nodes = []\n  }\n\n  normalize(child, sample, type) {\n    let nodes = super.normalize(child)\n\n    if (sample) {\n      if (type === 'prepend') {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before\n        } else {\n          delete sample.raws.before\n        }\n      } else if (this.first !== sample) {\n        for (let node of nodes) {\n          node.raws.before = sample.raws.before\n        }\n      }\n    }\n\n    return nodes\n  }\n\n  removeChild(child, ignore) {\n    let index = this.index(child)\n\n    if (!ignore && index === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index].raws.before\n    }\n\n    return super.removeChild(child)\n  }\n\n  toResult(opts = {}) {\n    let lazy = new LazyResult(new Processor(), this, opts)\n    return lazy.stringify()\n  }\n}\n\nRoot.registerLazyResult = dependant => {\n  LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n  Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n\n\n/***/ }),\n\n/***/ 1534:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Container = __webpack_require__(7793)\nlet list = __webpack_require__(1752)\n\nclass Rule extends Container {\n  get selectors() {\n    return list.comma(this.selector)\n  }\n\n  set selectors(values) {\n    let match = this.selector ? this.selector.match(/,\\s*/) : null\n    let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n    this.selector = values.join(sep)\n  }\n\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'rule'\n    if (!this.nodes) this.nodes = []\n  }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n\n\n/***/ }),\n\n/***/ 7668:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nconst DEFAULT_RAW = {\n  after: '\\n',\n  beforeClose: '\\n',\n  beforeComment: '\\n',\n  beforeDecl: '\\n',\n  beforeOpen: ' ',\n  beforeRule: '\\n',\n  colon: ': ',\n  commentLeft: ' ',\n  commentRight: ' ',\n  emptyBody: '',\n  indent: '    ',\n  semicolon: false\n}\n\nfunction capitalize(str) {\n  return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n  constructor(builder) {\n    this.builder = builder\n  }\n\n  atrule(node, semicolon) {\n    let name = '@' + node.name\n    let params = node.params ? this.rawValue(node, 'params') : ''\n\n    if (typeof node.raws.afterName !== 'undefined') {\n      name += node.raws.afterName\n    } else if (params) {\n      name += ' '\n    }\n\n    if (node.nodes) {\n      this.block(node, name + params)\n    } else {\n      let end = (node.raws.between || '') + (semicolon ? ';' : '')\n      this.builder(name + params + end, node)\n    }\n  }\n\n  beforeAfter(node, detect) {\n    let value\n    if (node.type === 'decl') {\n      value = this.raw(node, null, 'beforeDecl')\n    } else if (node.type === 'comment') {\n      value = this.raw(node, null, 'beforeComment')\n    } else if (detect === 'before') {\n      value = this.raw(node, null, 'beforeRule')\n    } else {\n      value = this.raw(node, null, 'beforeClose')\n    }\n\n    let buf = node.parent\n    let depth = 0\n    while (buf && buf.type !== 'root') {\n      depth += 1\n      buf = buf.parent\n    }\n\n    if (value.includes('\\n')) {\n      let indent = this.raw(node, null, 'indent')\n      if (indent.length) {\n        for (let step = 0; step < depth; step++) value += indent\n      }\n    }\n\n    return value\n  }\n\n  block(node, start) {\n    let between = this.raw(node, 'between', 'beforeOpen')\n    this.builder(start + between + '{', node, 'start')\n\n    let after\n    if (node.nodes && node.nodes.length) {\n      this.body(node)\n      after = this.raw(node, 'after')\n    } else {\n      after = this.raw(node, 'after', 'emptyBody')\n    }\n\n    if (after) this.builder(after)\n    this.builder('}', node, 'end')\n  }\n\n  body(node) {\n    let last = node.nodes.length - 1\n    while (last > 0) {\n      if (node.nodes[last].type !== 'comment') break\n      last -= 1\n    }\n\n    let semicolon = this.raw(node, 'semicolon')\n    for (let i = 0; i < node.nodes.length; i++) {\n      let child = node.nodes[i]\n      let before = this.raw(child, 'before')\n      if (before) this.builder(before)\n      this.stringify(child, last !== i || semicolon)\n    }\n  }\n\n  comment(node) {\n    let left = this.raw(node, 'left', 'commentLeft')\n    let right = this.raw(node, 'right', 'commentRight')\n    this.builder('/*' + left + node.text + right + '*/', node)\n  }\n\n  decl(node, semicolon) {\n    let between = this.raw(node, 'between', 'colon')\n    let string = node.prop + between + this.rawValue(node, 'value')\n\n    if (node.important) {\n      string += node.raws.important || ' !important'\n    }\n\n    if (semicolon) string += ';'\n    this.builder(string, node)\n  }\n\n  document(node) {\n    this.body(node)\n  }\n\n  raw(node, own, detect) {\n    let value\n    if (!detect) detect = own\n\n    // Already had\n    if (own) {\n      value = node.raws[own]\n      if (typeof value !== 'undefined') return value\n    }\n\n    let parent = node.parent\n\n    if (detect === 'before') {\n      // Hack for first rule in CSS\n      if (!parent || (parent.type === 'root' && parent.first === node)) {\n        return ''\n      }\n\n      // `root` nodes in `document` should use only their own raws\n      if (parent && parent.type === 'document') {\n        return ''\n      }\n    }\n\n    // Floating child without parent\n    if (!parent) return DEFAULT_RAW[detect]\n\n    // Detect style by other nodes\n    let root = node.root()\n    if (!root.rawCache) root.rawCache = {}\n    if (typeof root.rawCache[detect] !== 'undefined') {\n      return root.rawCache[detect]\n    }\n\n    if (detect === 'before' || detect === 'after') {\n      return this.beforeAfter(node, detect)\n    } else {\n      let method = 'raw' + capitalize(detect)\n      if (this[method]) {\n        value = this[method](root, node)\n      } else {\n        root.walk(i => {\n          value = i.raws[own]\n          if (typeof value !== 'undefined') return false\n        })\n      }\n    }\n\n    if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n    root.rawCache[detect] = value\n    return value\n  }\n\n  rawBeforeClose(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length > 0) {\n        if (typeof i.raws.after !== 'undefined') {\n          value = i.raws.after\n          if (value.includes('\\n')) {\n            value = value.replace(/[^\\n]+$/, '')\n          }\n          return false\n        }\n      }\n    })\n    if (value) value = value.replace(/\\S/g, '')\n    return value\n  }\n\n  rawBeforeComment(root, node) {\n    let value\n    root.walkComments(i => {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before\n        if (value.includes('\\n')) {\n          value = value.replace(/[^\\n]+$/, '')\n        }\n        return false\n      }\n    })\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeDecl')\n    } else if (value) {\n      value = value.replace(/\\S/g, '')\n    }\n    return value\n  }\n\n  rawBeforeDecl(root, node) {\n    let value\n    root.walkDecls(i => {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before\n        if (value.includes('\\n')) {\n          value = value.replace(/[^\\n]+$/, '')\n        }\n        return false\n      }\n    })\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeRule')\n    } else if (value) {\n      value = value.replace(/\\S/g, '')\n    }\n    return value\n  }\n\n  rawBeforeOpen(root) {\n    let value\n    root.walk(i => {\n      if (i.type !== 'decl') {\n        value = i.raws.between\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawBeforeRule(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && (i.parent !== root || root.first !== i)) {\n        if (typeof i.raws.before !== 'undefined') {\n          value = i.raws.before\n          if (value.includes('\\n')) {\n            value = value.replace(/[^\\n]+$/, '')\n          }\n          return false\n        }\n      }\n    })\n    if (value) value = value.replace(/\\S/g, '')\n    return value\n  }\n\n  rawColon(root) {\n    let value\n    root.walkDecls(i => {\n      if (typeof i.raws.between !== 'undefined') {\n        value = i.raws.between.replace(/[^\\s:]/g, '')\n        return false\n      }\n    })\n    return value\n  }\n\n  rawEmptyBody(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length === 0) {\n        value = i.raws.after\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawIndent(root) {\n    if (root.raws.indent) return root.raws.indent\n    let value\n    root.walk(i => {\n      let p = i.parent\n      if (p && p !== root && p.parent && p.parent === root) {\n        if (typeof i.raws.before !== 'undefined') {\n          let parts = i.raws.before.split('\\n')\n          value = parts[parts.length - 1]\n          value = value.replace(/\\S/g, '')\n          return false\n        }\n      }\n    })\n    return value\n  }\n\n  rawSemicolon(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n        value = i.raws.semicolon\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawValue(node, prop) {\n    let value = node[prop]\n    let raw = node.raws[prop]\n    if (raw && raw.value === value) {\n      return raw.raw\n    }\n\n    return value\n  }\n\n  root(node) {\n    this.body(node)\n    if (node.raws.after) this.builder(node.raws.after)\n  }\n\n  rule(node) {\n    this.block(node, this.rawValue(node, 'selector'))\n    if (node.raws.ownSemicolon) {\n      this.builder(node.raws.ownSemicolon, node, 'end')\n    }\n  }\n\n  stringify(node, semicolon) {\n    /* c8 ignore start */\n    if (!this[node.type]) {\n      throw new Error(\n        'Unknown AST node type ' +\n          node.type +\n          '. ' +\n          'Maybe you need to change PostCSS stringifier.'\n      )\n    }\n    /* c8 ignore stop */\n    this[node.type](node, semicolon)\n  }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n\n\n/***/ }),\n\n/***/ 3303:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nlet Stringifier = __webpack_require__(7668)\n\nfunction stringify(node, builder) {\n  let str = new Stringifier(builder)\n  str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n\n\n/***/ }),\n\n/***/ 4151:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n\n\n/***/ }),\n\n/***/ 5781:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n  let css = input.css.valueOf()\n  let ignore = options.ignoreErrors\n\n  let code, content, escape, next, quote\n  let currentToken, escaped, escapePos, n, prev\n\n  let length = css.length\n  let pos = 0\n  let buffer = []\n  let returned = []\n\n  function position() {\n    return pos\n  }\n\n  function unclosed(what) {\n    throw input.error('Unclosed ' + what, pos)\n  }\n\n  function endOfFile() {\n    return returned.length === 0 && pos >= length\n  }\n\n  function nextToken(opts) {\n    if (returned.length) return returned.pop()\n    if (pos >= length) return\n\n    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n    code = css.charCodeAt(pos)\n\n    switch (code) {\n      case NEWLINE:\n      case SPACE:\n      case TAB:\n      case CR:\n      case FEED: {\n        next = pos\n        do {\n          next += 1\n          code = css.charCodeAt(next)\n        } while (\n          code === SPACE ||\n          code === NEWLINE ||\n          code === TAB ||\n          code === CR ||\n          code === FEED\n        )\n\n        currentToken = ['space', css.slice(pos, next)]\n        pos = next - 1\n        break\n      }\n\n      case OPEN_SQUARE:\n      case CLOSE_SQUARE:\n      case OPEN_CURLY:\n      case CLOSE_CURLY:\n      case COLON:\n      case SEMICOLON:\n      case CLOSE_PARENTHESES: {\n        let controlChar = String.fromCharCode(code)\n        currentToken = [controlChar, controlChar, pos]\n        break\n      }\n\n      case OPEN_PARENTHESES: {\n        prev = buffer.length ? buffer.pop()[1] : ''\n        n = css.charCodeAt(pos + 1)\n        if (\n          prev === 'url' &&\n          n !== SINGLE_QUOTE &&\n          n !== DOUBLE_QUOTE &&\n          n !== SPACE &&\n          n !== NEWLINE &&\n          n !== TAB &&\n          n !== FEED &&\n          n !== CR\n        ) {\n          next = pos\n          do {\n            escaped = false\n            next = css.indexOf(')', next + 1)\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos\n                break\n              } else {\n                unclosed('bracket')\n              }\n            }\n            escapePos = next\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1\n              escaped = !escaped\n            }\n          } while (escaped)\n\n          currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n          pos = next\n        } else {\n          next = css.indexOf(')', pos + 1)\n          content = css.slice(pos, next + 1)\n\n          if (next === -1 || RE_BAD_BRACKET.test(content)) {\n            currentToken = ['(', '(', pos]\n          } else {\n            currentToken = ['brackets', content, pos, next]\n            pos = next\n          }\n        }\n\n        break\n      }\n\n      case SINGLE_QUOTE:\n      case DOUBLE_QUOTE: {\n        quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n        next = pos\n        do {\n          escaped = false\n          next = css.indexOf(quote, next + 1)\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1\n              break\n            } else {\n              unclosed('string')\n            }\n          }\n          escapePos = next\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n            escapePos -= 1\n            escaped = !escaped\n          }\n        } while (escaped)\n\n        currentToken = ['string', css.slice(pos, next + 1), pos, next]\n        pos = next\n        break\n      }\n\n      case AT: {\n        RE_AT_END.lastIndex = pos + 1\n        RE_AT_END.test(css)\n        if (RE_AT_END.lastIndex === 0) {\n          next = css.length - 1\n        } else {\n          next = RE_AT_END.lastIndex - 2\n        }\n\n        currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n        pos = next\n        break\n      }\n\n      case BACKSLASH: {\n        next = pos\n        escape = true\n        while (css.charCodeAt(next + 1) === BACKSLASH) {\n          next += 1\n          escape = !escape\n        }\n        code = css.charCodeAt(next + 1)\n        if (\n          escape &&\n          code !== SLASH &&\n          code !== SPACE &&\n          code !== NEWLINE &&\n          code !== TAB &&\n          code !== CR &&\n          code !== FEED\n        ) {\n          next += 1\n          if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n              next += 1\n            }\n            if (css.charCodeAt(next + 1) === SPACE) {\n              next += 1\n            }\n          }\n        }\n\n        currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n        pos = next\n        break\n      }\n\n      default: {\n        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n          next = css.indexOf('*/', pos + 2) + 1\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length\n            } else {\n              unclosed('comment')\n            }\n          }\n\n          currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n          pos = next\n        } else {\n          RE_WORD_END.lastIndex = pos + 1\n          RE_WORD_END.test(css)\n          if (RE_WORD_END.lastIndex === 0) {\n            next = css.length - 1\n          } else {\n            next = RE_WORD_END.lastIndex - 2\n          }\n\n          currentToken = ['word', css.slice(pos, next + 1), pos, next]\n          buffer.push(currentToken)\n          pos = next\n        }\n\n        break\n      }\n    }\n\n    pos++\n    return currentToken\n  }\n\n  function back(token) {\n    returned.push(token)\n  }\n\n  return {\n    back,\n    endOfFile,\n    nextToken,\n    position\n  }\n}\n\n\n/***/ }),\n\n/***/ 6156:\n/***/ ((module) => {\n\n\"use strict\";\n/* eslint-disable no-console */\n\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n  if (printed[message]) return\n  printed[message] = true\n\n  if (typeof console !== 'undefined' && console.warn) {\n    console.warn(message)\n  }\n}\n\n\n/***/ }),\n\n/***/ 38:\n/***/ ((module) => {\n\n\"use strict\";\n\n\nclass Warning {\n  constructor(text, opts = {}) {\n    this.type = 'warning'\n    this.text = text\n\n    if (opts.node && opts.node.source) {\n      let range = opts.node.rangeBy(opts)\n      this.line = range.start.line\n      this.column = range.start.column\n      this.endLine = range.end.line\n      this.endColumn = range.end.column\n    }\n\n    for (let opt in opts) this[opt] = opts[opt]\n  }\n\n  toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        index: this.index,\n        plugin: this.plugin,\n        word: this.word\n      }).message\n    }\n\n    if (this.plugin) {\n      return this.plugin + ': ' + this.text\n    }\n\n    return this.text\n  }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n\n\n/***/ }),\n\n/***/ 5606:\n/***/ ((module) => {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n\n/***/ 3753:\n/***/ ((module, exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nvar reactHtmlAttributes = __webpack_require__(8541);\n\nexports[\"default\"] = reactHtmlAttributes;\n\nmodule.exports = reactHtmlAttributes; // for CommonJS compatibility\n\n/***/ }),\n\n/***/ 1734:\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\nvar __webpack_unused_export__;\n\n\n__webpack_unused_export__ = ({\n  value: true\n});\nfunction flatten(arr) {\n  return arr.reduce(function (flat, toFlatten) {\n    return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\n  }, []);\n}\n\nvar flexboxProps = __webpack_unused_export__ = [\"alignContent\", \"alignItems\", \"alignSelf\", \"flex\", \"flexBasis\", \"flexDirection\", \"flexGrow\", \"flexWrap\", \"flexShrink\", \"justifyContent\", \"rowGap\", \"columnGap\", \"gap\"];\n\nvar borderProps = __webpack_unused_export__ = [\"borderWidth\", \"borderBottomWidth\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopWidth\", \"borderRadius\", \"borderBottomLeftRadius\", \"borderBottomRightRadius\", \"borderTopLeftRadius\", \"borderTopRightRadius\", \"borderColor\", \"borderLeftColor\", \"borderRightColor\", \"borderTopColor\", \"borderBottomColor\", \"borderBlockColor\", \"borderStyle\"];\n\nvar positioningProps = __webpack_unused_export__ = [\"position\", \"bottom\", \"left\", \"right\", \"top\", \"zIndex\"];\n\nvar boxModelProps = __webpack_unused_export__ = [\"display\", \"height\", \"minHeight\", \"maxHeight\", \"width\", \"minWidth\", \"maxWidth\", \"overflow\"];\n\nvar marginProps = __webpack_unused_export__ = [\"margin\", \"marginBottom\", \"marginLeft\", \"marginRight\", \"marginTop\"];\n\nvar paddingProps = __webpack_unused_export__ = [\"padding\", \"paddingBottom\", \"paddingLeft\", \"paddingRight\", \"paddingTop\"];\n\nvar transformProps = __webpack_unused_export__ = [\"transform\", \"transformOrigin\", \"backfaceVisibility\"];\n\nvar backgroundProps = __webpack_unused_export__ = [\"background\", \"backgroundColor\"];\n\nvar colorProps = __webpack_unused_export__ = [\"color\", \"opacity\"];\n\nvar fontProps = __webpack_unused_export__ = [\"fontFamily\", \"fontSize\", \"fontStyle\", \"fontWeight\", \"fontVariant\", \"lineHeight\", \"textAlign\", \"textDecorationLine\", \"textDecorationColor\", \"textDecorationStyle\", \"textTransform\", \"letterSpacing\", \"userSelect\"];\n\nvar writingModeProps = __webpack_unused_export__ = [\"direction\"];\n\nvar reactNativeProps = __webpack_unused_export__ = [\"end\", \"start\", \"elevation\", \"borderEndWidth\", \"borderStartWidth\", \"borderStartColor\", \"borderEndColor\", \"borderBottomEndRadius\", \"borderBottomStartRadius\", \"borderTopEndRadius\", \"borderTopStartRadius\", \"borderBlockEndColor\", \"borderBlockStartColor\", \"borderEndEndRadius\", \"borderEndStartRadius\", \"borderStartEndRadius\", \"borderStartStartRadius\", \"textAlignVertical\", \"textShadowColor\", \"textShadowOffset\", \"textShadowRadius\", \"shadowColor\", \"shadowOffset\", \"shadowOpacity\", \"shadowRadius\", \"marginHorizontal\", \"marginVertical\", \"marginEnd\", \"marginStart\", \"paddingHorizontal\", \"paddingVertical\", \"paddingEnd\", \"paddingStart\", \"resizeMode\", \"tintColor\", \"overlayColor\", \"writingDirection\", \"includeFontPadding\", \"aspectRatio\"];\n\nvar CSS2RNProps = __webpack_unused_export__ = [\"border\", \"boxShadow\", \"flexFlow\", \"font\", \"textDecoration\", \"textShadow\", \"placeContent\"];\n\nvar allProps = exports.q9 = flatten([flexboxProps, borderProps, positioningProps, boxModelProps, marginProps, paddingProps, transformProps, backgroundProps, colorProps, fontProps, writingModeProps, reactNativeProps]);\n\nvar allCSS2RNProps = __webpack_unused_export__ = flatten([allProps, CSS2RNProps]);\n\n/***/ }),\n\n/***/ 1020:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\n/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar f=__webpack_require__(1307),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n\n\n/***/ }),\n\n/***/ 2467:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nif (true) {\n  module.exports = __webpack_require__(1020);\n} else {}\n\n\n/***/ }),\n\n/***/ 26:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar toH = __webpack_require__(8893)\nvar tableCellStyle = __webpack_require__(2660)\n\nmodule.exports = rehypeReact\n\nvar own = {}.hasOwnProperty\nvar tableElements = new Set([\n  'table',\n  'thead',\n  'tbody',\n  'tfoot',\n  'tr',\n  'th',\n  'td'\n])\n\n// Add a React compiler.\nfunction rehypeReact(options) {\n  var settings = options || {}\n  var createElement = settings.createElement\n\n  this.Compiler = compiler\n\n  function compiler(node) {\n    var result = toH(h, tableCellStyle(node), settings.prefix)\n\n    if (node.type === 'root') {\n      // Invert <https://github.com/syntax-tree/hast-to-hyperscript/blob/d227372/index.js#L46-L56>.\n      result =\n        result.type === 'div' &&\n        (node.children.length !== 1 || node.children[0].type !== 'element')\n          ? result.props.children\n          : [result]\n\n      return createElement(settings.Fragment || 'div', {}, result)\n    }\n\n    return result\n  }\n\n  // Wrap `createElement` to pass components in.\n  function h(name, props, children) {\n    var component = name\n\n    // Currently, a warning is triggered by react for *any* white space in\n    // tables.\n    // So we remove the pretty lines for now.\n    // See: <https://github.com/facebook/react/pull/7081>.\n    // See: <https://github.com/facebook/react/pull/7515>.\n    // See: <https://github.com/remarkjs/remark-react/issues/64>.\n    if (children && tableElements.has(name)) {\n      children = children.filter(function (child) {\n        return child !== '\\n'\n      })\n    }\n\n    if (settings.components && own.call(settings.components, name)) {\n      component = settings.components[name]\n\n      if (settings.passNode) {\n        props.node = this\n      }\n    }\n\n    return createElement(component, props, children)\n  }\n}\n\n\n/***/ }),\n\n/***/ 9108:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\nvar parse = __webpack_require__(9788);\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param  {String}      style      - The inline style.\n * @param  {Function}    [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n  var output = null;\n  if (!style || typeof style !== 'string') {\n    return output;\n  }\n\n  var declaration;\n  var declarations = parse(style);\n  var hasIterator = typeof iterator === 'function';\n  var property;\n  var value;\n\n  for (var i = 0, len = declarations.length; i < len; i++) {\n    declaration = declarations[i];\n    property = declaration.property;\n    value = declaration.value;\n\n    if (hasIterator) {\n      iterator(property, value, declaration);\n    } else if (value) {\n      output || (output = {});\n      output[property] = value;\n    }\n  }\n\n  return output;\n}\n\nmodule.exports = StyleToObject;\nmodule.exports[\"default\"] = StyleToObject; // ESM support\n\n\n/***/ }),\n\n/***/ 6426:\n/***/ ((module) => {\n\n\nmodule.exports = function () {\n  var selection = document.getSelection();\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n  var active = document.activeElement;\n\n  var ranges = [];\n  for (var i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' &&\n    selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function(range) {\n        selection.addRange(range);\n      });\n    }\n\n    active &&\n    active.focus();\n  };\n};\n\n\n/***/ }),\n\n/***/ 3966:\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__3966__;\n\n/***/ }),\n\n/***/ 8167:\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__8167__;\n\n/***/ }),\n\n/***/ 4189:\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__4189__;\n\n/***/ }),\n\n/***/ 6473:\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__6473__;\n\n/***/ }),\n\n/***/ 1387:\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1387__;\n\n/***/ }),\n\n/***/ 1307:\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1307__;\n\n/***/ }),\n\n/***/ 9746:\n/***/ (() => {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 9977:\n/***/ (() => {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 197:\n/***/ (() => {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 1866:\n/***/ (() => {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 2739:\n/***/ (() => {\n\n/* (ignored) */\n\n/***/ }),\n\n/***/ 5042:\n/***/ ((module) => {\n\n// This alphabet uses `A-Za-z0-9_-` symbols.\n// The order of characters is optimized for better gzip and brotli compression.\n// References to the same file (works both for gzip and brotli):\n// `'use`, `andom`, and `rict'`\n// References to the brotli default dictionary:\n// `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf`\nlet urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = ''\n    // A compact alternative for `for (var i = 0; i < step; i++)`.\n    let i = size | 0\n    while (i--) {\n      // `| 0` is more compact and faster than `Math.floor()`.\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\n\nlet nanoid = (size = 21) => {\n  let id = ''\n  // A compact alternative for `for (var i = 0; i < step; i++)`.\n  let i = size | 0\n  while (i--) {\n    // `| 0` is more compact and faster than `Math.floor()`.\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\n\nmodule.exports = { nanoid, customAlphabet }\n\n\n/***/ }),\n\n/***/ 9052:\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('{\"classId\":\"classID\",\"dataType\":\"datatype\",\"itemId\":\"itemID\",\"strokeDashArray\":\"strokeDasharray\",\"strokeDashOffset\":\"strokeDashoffset\",\"strokeLineCap\":\"strokeLinecap\",\"strokeLineJoin\":\"strokeLinejoin\",\"strokeMiterLimit\":\"strokeMiterlimit\",\"typeOf\":\"typeof\",\"xLinkActuate\":\"xlinkActuate\",\"xLinkArcRole\":\"xlinkArcrole\",\"xLinkHref\":\"xlinkHref\",\"xLinkRole\":\"xlinkRole\",\"xLinkShow\":\"xlinkShow\",\"xLinkTitle\":\"xlinkTitle\",\"xLinkType\":\"xlinkType\",\"xmlnsXLink\":\"xmlnsXlink\"}');\n\n/***/ }),\n\n/***/ 8843:\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('{\"html\":\"http://www.w3.org/1999/xhtml\",\"mathml\":\"http://www.w3.org/1998/Math/MathML\",\"svg\":\"http://www.w3.org/2000/svg\",\"xlink\":\"http://www.w3.org/1999/xlink\",\"xml\":\"http://www.w3.org/XML/1998/namespace\",\"xmlns\":\"http://www.w3.org/2000/xmlns/\"}');\n\n/***/ }),\n\n/***/ 8541:\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = /*#__PURE__*/JSON.parse('{\"*\":[\"about\",\"acceptCharset\",\"accessKey\",\"allowFullScreen\",\"allowTransparency\",\"autoComplete\",\"autoFocus\",\"autoPlay\",\"capture\",\"cellPadding\",\"cellSpacing\",\"charSet\",\"classID\",\"className\",\"colSpan\",\"contentEditable\",\"contextMenu\",\"crossOrigin\",\"dangerouslySetInnerHTML\",\"datatype\",\"dateTime\",\"dir\",\"draggable\",\"encType\",\"formAction\",\"formEncType\",\"formMethod\",\"formNoValidate\",\"formTarget\",\"frameBorder\",\"hidden\",\"hrefLang\",\"htmlFor\",\"httpEquiv\",\"icon\",\"id\",\"inlist\",\"inputMode\",\"is\",\"itemID\",\"itemProp\",\"itemRef\",\"itemScope\",\"itemType\",\"keyParams\",\"keyType\",\"lang\",\"marginHeight\",\"marginWidth\",\"maxLength\",\"mediaGroup\",\"minLength\",\"noValidate\",\"onBlur\",\"onFocus\",\"onKeyDown\",\"onKeyPress\",\"onKeyUp\",\"prefix\",\"property\",\"radioGroup\",\"readOnly\",\"resource\",\"role\",\"rowSpan\",\"scoped\",\"seamless\",\"security\",\"spellCheck\",\"srcDoc\",\"srcLang\",\"srcSet\",\"style\",\"suppressContentEditableWarning\",\"tabIndex\",\"title\",\"typeof\",\"unselectable\",\"useMap\",\"vocab\",\"wmode\"],\"a\":[\"coords\",\"download\",\"href\",\"name\",\"rel\",\"shape\",\"target\",\"type\",\"onClick\"],\"abbr\":[\"title\"],\"applet\":[\"alt\",\"height\",\"name\",\"width\"],\"area\":[\"alt\",\"coords\",\"download\",\"href\",\"rel\",\"shape\",\"target\",\"type\"],\"audio\":[\"controls\",\"loop\",\"muted\",\"preload\",\"src\"],\"base\":[\"href\",\"target\"],\"basefont\":[\"size\"],\"bdo\":[\"dir\"],\"blockquote\":[\"cite\"],\"button\":[\"disabled\",\"form\",\"name\",\"type\",\"value\"],\"canvas\":[\"height\",\"width\"],\"col\":[\"span\",\"width\"],\"colgroup\":[\"span\",\"width\"],\"data\":[\"value\"],\"del\":[\"cite\"],\"details\":[\"open\"],\"dfn\":[\"title\"],\"dialog\":[\"open\"],\"embed\":[\"height\",\"src\",\"type\",\"width\"],\"fieldset\":[\"disabled\",\"form\",\"name\"],\"font\":[\"size\"],\"form\":[\"accept\",\"action\",\"method\",\"name\",\"target\",\"onChange\",\"onInput\",\"onInvalid\",\"onSubmit\"],\"frame\":[\"name\",\"scrolling\",\"src\"],\"frameset\":[\"cols\",\"rows\"],\"head\":[\"profile\"],\"hr\":[\"size\",\"width\"],\"html\":[\"manifest\"],\"iframe\":[\"height\",\"name\",\"sandbox\",\"scrolling\",\"src\",\"width\"],\"img\":[\"alt\",\"height\",\"name\",\"sizes\",\"src\",\"width\"],\"input\":[\"accept\",\"alt\",\"autoCapitalize\",\"autoCorrect\",\"autoSave\",\"checked\",\"defaultChecked\",\"defaultValue\",\"disabled\",\"form\",\"height\",\"list\",\"max\",\"min\",\"multiple\",\"name\",\"onChange\",\"pattern\",\"placeholder\",\"required\",\"results\",\"size\",\"src\",\"step\",\"title\",\"type\",\"value\",\"width\"],\"ins\":[\"cite\"],\"keygen\":[\"challenge\",\"disabled\",\"form\",\"name\"],\"label\":[\"form\"],\"li\":[\"type\",\"value\"],\"link\":[\"color\",\"href\",\"integrity\",\"media\",\"nonce\",\"rel\",\"scope\",\"sizes\",\"target\",\"title\",\"type\"],\"map\":[\"name\"],\"meta\":[\"content\",\"name\"],\"meter\":[\"high\",\"low\",\"max\",\"min\",\"optimum\",\"value\"],\"object\":[\"data\",\"form\",\"height\",\"name\",\"type\",\"width\"],\"ol\":[\"reversed\",\"start\",\"type\"],\"optgroup\":[\"disabled\",\"label\"],\"option\":[\"disabled\",\"label\",\"selected\",\"value\"],\"output\":[\"form\",\"name\"],\"param\":[\"name\",\"type\",\"value\"],\"pre\":[\"width\"],\"progress\":[\"max\",\"value\"],\"q\":[\"cite\"],\"script\":[\"async\",\"defer\",\"integrity\",\"nonce\",\"src\",\"type\"],\"select\":[\"defaultValue\",\"disabled\",\"form\",\"multiple\",\"name\",\"onChange\",\"required\",\"size\",\"value\"],\"slot\":[\"name\"],\"source\":[\"media\",\"sizes\",\"src\",\"type\"],\"style\":[\"media\",\"nonce\",\"title\",\"type\"],\"table\":[\"summary\",\"width\"],\"td\":[\"headers\",\"height\",\"scope\",\"width\"],\"textarea\":[\"autoCapitalize\",\"autoCorrect\",\"cols\",\"defaultValue\",\"disabled\",\"form\",\"name\",\"onChange\",\"placeholder\",\"required\",\"rows\",\"value\",\"wrap\"],\"th\":[\"headers\",\"height\",\"scope\",\"width\"],\"track\":[\"default\",\"kind\",\"label\",\"src\"],\"ul\":[\"type\"],\"video\":[\"controls\",\"height\",\"loop\",\"muted\",\"playsInline\",\"poster\",\"preload\",\"src\",\"width\"],\"svg\":[\"accentHeight\",\"accumulate\",\"additive\",\"alignmentBaseline\",\"allowReorder\",\"alphabetic\",\"amplitude\",\"arabicForm\",\"ascent\",\"attributeName\",\"attributeType\",\"autoReverse\",\"azimuth\",\"baseFrequency\",\"baseProfile\",\"baselineShift\",\"bbox\",\"begin\",\"bias\",\"by\",\"calcMode\",\"capHeight\",\"clip\",\"clipPath\",\"clipPathUnits\",\"clipRule\",\"color\",\"colorInterpolation\",\"colorInterpolationFilters\",\"colorProfile\",\"colorRendering\",\"contentScriptType\",\"contentStyleType\",\"cursor\",\"cx\",\"cy\",\"d\",\"decelerate\",\"descent\",\"diffuseConstant\",\"direction\",\"display\",\"divisor\",\"dominantBaseline\",\"dur\",\"dx\",\"dy\",\"edgeMode\",\"elevation\",\"enableBackground\",\"end\",\"exponent\",\"externalResourcesRequired\",\"fill\",\"fillOpacity\",\"fillRule\",\"filter\",\"filterRes\",\"filterUnits\",\"floodColor\",\"floodOpacity\",\"focusable\",\"fontFamily\",\"fontSize\",\"fontSizeAdjust\",\"fontStretch\",\"fontStyle\",\"fontVariant\",\"fontWeight\",\"format\",\"from\",\"fx\",\"fy\",\"g1\",\"g2\",\"glyphName\",\"glyphOrientationHorizontal\",\"glyphOrientationVertical\",\"glyphRef\",\"gradientTransform\",\"gradientUnits\",\"hanging\",\"height\",\"horizAdvX\",\"horizOriginX\",\"ideographic\",\"imageRendering\",\"in\",\"in2\",\"intercept\",\"k\",\"k1\",\"k2\",\"k3\",\"k4\",\"kernelMatrix\",\"kernelUnitLength\",\"kerning\",\"keyPoints\",\"keySplines\",\"keyTimes\",\"lengthAdjust\",\"letterSpacing\",\"lightingColor\",\"limitingConeAngle\",\"local\",\"markerEnd\",\"markerHeight\",\"markerMid\",\"markerStart\",\"markerUnits\",\"markerWidth\",\"mask\",\"maskContentUnits\",\"maskUnits\",\"mathematical\",\"mode\",\"numOctaves\",\"offset\",\"opacity\",\"operator\",\"order\",\"orient\",\"orientation\",\"origin\",\"overflow\",\"overlinePosition\",\"overlineThickness\",\"paintOrder\",\"panose1\",\"pathLength\",\"patternContentUnits\",\"patternTransform\",\"patternUnits\",\"pointerEvents\",\"points\",\"pointsAtX\",\"pointsAtY\",\"pointsAtZ\",\"preserveAlpha\",\"preserveAspectRatio\",\"primitiveUnits\",\"r\",\"radius\",\"refX\",\"refY\",\"renderingIntent\",\"repeatCount\",\"repeatDur\",\"requiredExtensions\",\"requiredFeatures\",\"restart\",\"result\",\"rotate\",\"rx\",\"ry\",\"scale\",\"seed\",\"shapeRendering\",\"slope\",\"spacing\",\"specularConstant\",\"specularExponent\",\"speed\",\"spreadMethod\",\"startOffset\",\"stdDeviation\",\"stemh\",\"stemv\",\"stitchTiles\",\"stopColor\",\"stopOpacity\",\"strikethroughPosition\",\"strikethroughThickness\",\"string\",\"stroke\",\"strokeDasharray\",\"strokeDashoffset\",\"strokeLinecap\",\"strokeLinejoin\",\"strokeMiterlimit\",\"strokeOpacity\",\"strokeWidth\",\"surfaceScale\",\"systemLanguage\",\"tableValues\",\"targetX\",\"targetY\",\"textAnchor\",\"textDecoration\",\"textLength\",\"textRendering\",\"to\",\"transform\",\"u1\",\"u2\",\"underlinePosition\",\"underlineThickness\",\"unicode\",\"unicodeBidi\",\"unicodeRange\",\"unitsPerEm\",\"vAlphabetic\",\"vHanging\",\"vIdeographic\",\"vMathematical\",\"values\",\"vectorEffect\",\"version\",\"vertAdvY\",\"vertOriginX\",\"vertOriginY\",\"viewBox\",\"viewTarget\",\"visibility\",\"width\",\"widths\",\"wordSpacing\",\"writingMode\",\"x\",\"x1\",\"x2\",\"xChannelSelector\",\"xHeight\",\"xlinkActuate\",\"xlinkArcrole\",\"xlinkHref\",\"xlinkRole\",\"xlinkShow\",\"xlinkTitle\",\"xlinkType\",\"xmlBase\",\"xmlLang\",\"xmlSpace\",\"xmlns\",\"xmlnsXlink\",\"y\",\"y1\",\"y2\",\"yChannelSelector\",\"z\",\"zoomAndPan\"],\"elements\":{\"html\":[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"math\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"picture\",\"pre\",\"progress\",\"q\",\"rb\",\"rp\",\"rt\",\"rtc\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"slot\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"svg\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"],\"svg\":[\"a\",\"altGlyph\",\"altGlyphDef\",\"altGlyphItem\",\"animate\",\"animateColor\",\"animateMotion\",\"animateTransform\",\"circle\",\"clipPath\",\"color-profile\",\"cursor\",\"defs\",\"desc\",\"ellipse\",\"feBlend\",\"feColorMatrix\",\"feComponentTransfer\",\"feComposite\",\"feConvolveMatrix\",\"feDiffuseLighting\",\"feDisplacementMap\",\"feDistantLight\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feImage\",\"feMerge\",\"feMergeNode\",\"feMorphology\",\"feOffset\",\"fePointLight\",\"feSpecularLighting\",\"feSpotLight\",\"feTile\",\"feTurbulence\",\"filter\",\"font\",\"font-face\",\"font-face-format\",\"font-face-name\",\"font-face-src\",\"font-face-uri\",\"foreignObject\",\"g\",\"glyph\",\"glyphRef\",\"hkern\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"metadata\",\"missing-glyph\",\"mpath\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"script\",\"set\",\"stop\",\"style\",\"svg\",\"switch\",\"symbol\",\"text\",\"textPath\",\"title\",\"tref\",\"tspan\",\"use\",\"view\",\"vkern\"]}}');\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t(() => {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = (module) => {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\t() => (module['default']) :\n/******/ \t\t\t\t() => (module);\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/create fake namespace object */\n/******/ \t(() => {\n/******/ \t\tvar getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\n/******/ \t\tvar leafPrototypes;\n/******/ \t\t// create a fake namespace object\n/******/ \t\t// mode & 1: value is a module id, require it\n/******/ \t\t// mode & 2: merge all properties of value into the ns\n/******/ \t\t// mode & 4: return value when already ns object\n/******/ \t\t// mode & 16: return value when it's Promise-like\n/******/ \t\t// mode & 8|1: behave like require\n/******/ \t\t__webpack_require__.t = function(value, mode) {\n/******/ \t\t\tif(mode & 1) value = this(value);\n/******/ \t\t\tif(mode & 8) return value;\n/******/ \t\t\tif(typeof value === 'object' && value) {\n/******/ \t\t\t\tif((mode & 4) && value.__esModule) return value;\n/******/ \t\t\t\tif((mode & 16) && typeof value.then === 'function') return value;\n/******/ \t\t\t}\n/******/ \t\t\tvar ns = Object.create(null);\n/******/ \t\t\t__webpack_require__.r(ns);\n/******/ \t\t\tvar def = {};\n/******/ \t\t\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n/******/ \t\t\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n/******/ \t\t\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n/******/ \t\t\t}\n/******/ \t\t\tdef['default'] = () => (value);\n/******/ \t\t\t__webpack_require__.d(ns, def);\n/******/ \t\t\treturn ns;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n(() => {\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  Components: () => (/* reexport */ components_namespaceObject),\n  Owlmoji: () => (/* reexport */ Owlmoji),\n  compile: () => (/* reexport */ lib_compile),\n  exports: () => (/* reexport */ lib_exports),\n  gemojiRegex: () => (/* reexport */ gemoji_regex),\n  hast: () => (/* reexport */ lib_hast),\n  mdast: () => (/* reexport */ lib_mdast),\n  mdastV6: () => (/* reexport */ lib_mdastV6),\n  mdx: () => (/* reexport */ lib_mdx),\n  mdxish: () => (/* reexport */ lib_mdxish),\n  mdxishAstProcessor: () => (/* reexport */ mdxishAstProcessor),\n  mdxishMdastToMd: () => (/* reexport */ mdxishMdastToMd),\n  mdxishTags: () => (/* reexport */ mdxishTags),\n  migrate: () => (/* reexport */ lib_migrate),\n  mix: () => (/* reexport */ lib_mix),\n  plain: () => (/* reexport */ lib_plain),\n  remarkPlugins: () => (/* reexport */ remarkPlugins),\n  renderMdxish: () => (/* reexport */ lib_renderMdxish),\n  run: () => (/* reexport */ lib_run),\n  stripComments: () => (/* reexport */ lib_stripComments),\n  tags: () => (/* reexport */ lib_tags),\n  tailwindCompiler: () => (/* reexport */ tailwindCompiler),\n  utils: () => (/* binding */ utils)\n});\n\n// NAMESPACE OBJECT: ./components/index.ts\nvar components_namespaceObject = {};\n__webpack_require__.r(components_namespaceObject);\n__webpack_require__.d(components_namespaceObject, {\n  Accordion: () => (components_Accordion),\n  Anchor: () => (components_Anchor),\n  Callout: () => (components_Callout),\n  Card: () => (Card),\n  Cards: () => (Cards),\n  Code: () => (components_Code),\n  CodeTabs: () => (components_CodeTabs),\n  Column: () => (Column),\n  Columns: () => (components_Columns),\n  Embed: () => (components_Embed),\n  Glossary: () => (components_Glossary),\n  HTMLBlock: () => (components_HTMLBlock),\n  Heading: () => (components_Heading),\n  Image: () => (components_Image),\n  MCPIntro: () => (components_MCPIntro),\n  PostmanRunButton: () => (components_PostmanRunButton),\n  Recipe: () => (components_Recipe),\n  Tab: () => (Tab),\n  Table: () => (components_Table),\n  TableOfContents: () => (components_TableOfContents),\n  Tabs: () => (components_Tabs),\n  TailwindRoot: () => (components_TailwindRoot),\n  TailwindStyle: () => (components_TailwindStyle)\n});\n\n// NAMESPACE OBJECT: ./node_modules/micromark/lib/constructs.js\nvar constructs_namespaceObject = {};\n__webpack_require__.r(constructs_namespaceObject);\n__webpack_require__.d(constructs_namespaceObject, {\n  attentionMarkers: () => (attentionMarkers),\n  contentInitial: () => (contentInitial),\n  disable: () => (disable),\n  document: () => (constructs_document),\n  flow: () => (constructs_flow),\n  flowInitial: () => (flowInitial),\n  insideSpan: () => (insideSpan),\n  string: () => (constructs_string),\n  text: () => (constructs_text)\n});\n\n// NAMESPACE OBJECT: ./node_modules/property-information/lib/util/types.js\nvar types_namespaceObject = {};\n__webpack_require__.r(types_namespaceObject);\n__webpack_require__.d(types_namespaceObject, {\n  boolean: () => (types_boolean),\n  booleanish: () => (booleanish),\n  commaOrSpaceSeparated: () => (commaOrSpaceSeparated),\n  commaSeparated: () => (commaSeparated),\n  number: () => (number),\n  overloadedBoolean: () => (overloadedBoolean),\n  spaceSeparated: () => (spaceSeparated)\n});\n\n// NAMESPACE OBJECT: ./node_modules/hastscript/node_modules/property-information/lib/util/types.js\nvar util_types_namespaceObject = {};\n__webpack_require__.r(util_types_namespaceObject);\n__webpack_require__.d(util_types_namespaceObject, {\n  boolean: () => (util_types_boolean),\n  booleanish: () => (types_booleanish),\n  commaOrSpaceSeparated: () => (types_commaOrSpaceSeparated),\n  commaSeparated: () => (types_commaSeparated),\n  number: () => (types_number),\n  overloadedBoolean: () => (types_overloadedBoolean),\n  spaceSeparated: () => (types_spaceSeparated)\n});\n\n// EXTERNAL MODULE: external {\"amd\":\"react\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"root\":\"React\",\"umd\":\"react\"}\nvar external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_ = __webpack_require__(1307);\nvar external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default = /*#__PURE__*/__webpack_require__.n(external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_);\n;// ./components/Accordion/index.tsx\n\n\nconst Accordion = ({ children, icon, iconColor, title }) => {\n    const [isOpen, setIsOpen] = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState)(false);\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"details\", { className: \"Accordion\", onToggle: () => setIsOpen(!isOpen) },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"summary\", { className: \"Accordion-title\" },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"i\", { className: `Accordion-toggleIcon${isOpen ? '_opened' : ''} fa fa-regular fa-chevron-right` }),\n            icon && external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"i\", { className: `Accordion-icon fa-duotone fa-solid ${icon}`, style: { color: `${iconColor}` } }),\n            title),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"Accordion-content\" }, children)));\n};\n/* harmony default export */ const components_Accordion = (Accordion);\n\n;// ./contexts/BaseUrl.js\n\nvar BaseUrlContext = /*#__PURE__*/external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createContext('/');\n/* harmony default export */ const BaseUrl = (BaseUrlContext);\n;// ./components/Anchor.tsx\n\n\n// Nabbed from here:\n// https://github.com/readmeio/api-explorer/blob/0dedafcf71102feedaa4145040d3f57d79d95752/packages/api-explorer/src/lib/markdown/renderer.js#L52\nfunction getHref(href, baseUrl) {\n    const [path, hash] = href.split('#');\n    const hashStr = hash ? `#${hash}` : '';\n    const base = baseUrl === '/' ? '' : baseUrl;\n    const doc = path.match(/^doc:([-_a-zA-Z0-9#]*)$/);\n    if (doc) {\n        return `${base}/docs/${doc[1]}${hashStr}`;\n    }\n    const ref = path.match(/^ref:([-_a-zA-Z0-9#]*)$/);\n    if (ref) {\n        return `${base}/reference-link/${ref[1]}${hashStr}`;\n    }\n    // we need to perform two matches for changelogs in case\n    // of legacy links that use 'blog' instead of 'changelog'\n    const blog = path.match(/^blog:([-_a-zA-Z0-9#]*)$/);\n    const changelog = path.match(/^changelog:([-_a-zA-Z0-9#]*)$/);\n    const changelogMatch = blog || changelog;\n    if (changelogMatch) {\n        return `${base}/changelog/${changelogMatch[1]}${hashStr}`;\n    }\n    const custompage = path.match(/^page:([-_a-zA-Z0-9#]*)$/);\n    if (custompage) {\n        return `${base}/page/${custompage[1]}${hashStr}`;\n    }\n    return href;\n}\nfunction docLink(href) {\n    const doc = href.match(/^doc:([-_a-zA-Z0-9#]*)$/);\n    if (!doc)\n        return false;\n    return {\n        className: 'doc-link',\n        'data-sidebar': doc[1],\n    };\n}\nfunction Anchor(props) {\n    const { children, href = '', target = '', title = '', ...attrs } = props;\n    const baseUrl = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useContext)(BaseUrl);\n    // Unwrap any nested anchor elements that GFM's autolinker may have created.\n    // This prevents invalid nested <a> tags when the Anchor's text content looks like a URL.\n    const unwrappedChildren = external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().Children.map(children, child => {\n        if (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().isValidElement(child) && child.type === 'a') {\n            return child.props.children;\n        }\n        return child;\n    });\n    return (\n    // eslint-disable-next-line react/jsx-props-no-spreading\n    external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"a\", { ...attrs, href: getHref(href, baseUrl), target: target, title: title, ...docLink(href) }, unwrappedChildren));\n}\n/* harmony default export */ const components_Anchor = (Anchor);\n\n;// ./node_modules/emoji-regex/index.mjs\n/* harmony default export */ const emoji_regex = (() => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n});\n\n;// ./components/Callout/index.tsx\n\n\nconst themes = {\n    error: 'error',\n    default: 'default',\n    info: 'info',\n    okay: 'okay',\n    warn: 'warn',\n    '\\uD83D\\uDCD8': 'info',\n    '\\uD83D\\uDEA7': 'warn',\n    '\\u26A0\\uFE0F': 'warn',\n    '\\uD83D\\uDC4D': 'okay',\n    '\\u2705': 'okay',\n    '\\u2757\\uFE0F': 'error',\n    '\\u2757': 'error',\n    '\\uD83D\\uDED1': 'error',\n    '\\u2049\\uFE0F': 'error',\n    '\\u203C\\uFE0F': 'error',\n    '\\u2139\\uFE0F': 'info',\n    '\\u26A0': 'warn',\n};\nconst defaultIcons = {\n    info: '\\uD83D\\uDCD8',\n    warn: '\\uD83D\\uDEA7',\n    okay: '\\uD83D\\uDC4D',\n    error: '\\u2757\\uFE0F',\n};\nconst Callout = (props) => {\n    const { attributes, empty } = props;\n    const children = external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.Children.toArray(props.children);\n    const icon = props.icon;\n    const isEmoji = icon && emoji_regex().test(icon);\n    const heading = empty ? external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"p\", { className: 'callout-heading empty' }) : children[0];\n    const theme = props.theme || (icon && themes[icon]) || 'default';\n    return (\n    // @ts-expect-error -- theme is not a valid attribute\n    // eslint-disable-next-line react/jsx-props-no-spreading, react/no-unknown-property\n    external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"blockquote\", { ...attributes, className: `callout callout_${theme}`, theme: icon || theme },\n        icon ? (isEmoji ? (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"span\", { className: \"callout-icon\" }, icon)) : (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"span\", { className: `callout-icon callout-icon_fa ${icon}` }))) : null,\n        heading,\n        children.slice(1)));\n};\n/* harmony default export */ const components_Callout = (Callout);\n\n;// ./components/Cards/index.tsx\n\n\nconst Card = ({ badge, children, href, kind = 'card', icon, iconColor, target, title }) => {\n    const Tag = href ? 'a' : 'div';\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Tag, { className: `Card Card_${kind}`, href: href, target: target },\n        icon && external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"i\", { className: `Card-icon fa-duotone fa-solid ${icon}`, style: { '--Card-icon-color': iconColor } }),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"Card-content\" },\n            title && (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"Card-title\" },\n                title,\n                badge && external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"span\", { className: \"Card-badge\" }, badge),\n                href && external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"i\", { \"aria-hidden\": \"true\", className: \"Card-arrow fa-regular fa-arrow-right\" }))),\n            children)));\n};\nconst CardsGrid = ({ cardWidth = '200px', columns = 'auto-fit', children }) => {\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"CardsGrid\", style: { '--CardsGrid-cardWidth': cardWidth, '--CardsGrid-columns': columns } }, children));\n};\n/* harmony default export */ const Cards = (CardsGrid);\n\n// EXTERNAL MODULE: ./node_modules/copy-to-clipboard/index.js\nvar copy_to_clipboard = __webpack_require__(7965);\nvar copy_to_clipboard_default = /*#__PURE__*/__webpack_require__.n(copy_to_clipboard);\n;// ./contexts/CodeOpts.ts\n\n// used for the copyButtons prop\nconst CodeOptsContext = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createContext)(false);\n/* harmony default export */ const CodeOpts = (CodeOptsContext);\n\n;// ./contexts/Theme.ts\n\nconst ThemeContext = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createContext)('light');\n/* harmony default export */ const Theme = (ThemeContext);\n\n;// ./hooks/useHydrated/index.tsx\n\n/**\n * A hook that returns whether or not the component has been hydrated.\n * Useful for components that should only render in the browser, and not during SSR.\n * Waiting to render until after hydration avoids React hydration mismatches.\n */\nfunction useHydrated() {\n    const [isHydrated, setIsHydrated] = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState)(false);\n    (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => setIsHydrated(true), []);\n    return isHydrated;\n}\n\n;// ./components/Code/index.tsx\n\n\n\n\n\n// Only load CodeMirror in the browser, for SSR\n// apps. Necessary because of people like this:\n// https://github.com/codemirror/CodeMirror/issues/3701#issuecomment-164904534\nlet syntaxHighlighter;\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nlet canonicalLanguage = lang => '';\nif (typeof window !== 'undefined') {\n    // @ts-expect-error this library does not have any types defined\n    Promise.resolve(/* import() */).then(__webpack_require__.t.bind(__webpack_require__, 3966, 23)).then(module => {\n        syntaxHighlighter = module.default;\n        canonicalLanguage = module.canonical;\n    });\n}\nfunction CopyCode({ codeRef, rootClass = 'rdmd-code-copy', className = '', }) {\n    const copyClass = `${rootClass}_copied`;\n    const buttonRef = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createRef)();\n    const copier = () => {\n        const code = codeRef.current.textContent;\n        if (copy_to_clipboard_default()(code)) {\n            const el = buttonRef.current;\n            el.classList.add(copyClass);\n            setTimeout(() => el.classList.remove(copyClass), 1500);\n        }\n    };\n    return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"button\", { ref: buttonRef, \"aria-label\": \"Copy Code\", className: `${rootClass} ${className}`, onClick: copier });\n}\nconst Code = (props) => {\n    const { children, lang, value } = props;\n    const theme = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useContext)(Theme);\n    const copyButtons = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useContext)(CodeOpts) || props.copyButtons;\n    const isHydrated = useHydrated();\n    const language = canonicalLanguage(lang);\n    const isMermaid = language === 'mermaid';\n    const codeRef = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createRef)();\n    const codeOpts = {\n        inline: !lang,\n        tokenizeVariables: true,\n        dark: theme === 'dark',\n    };\n    const code = value ?? (Array.isArray(children) ? children[0] : children) ?? '';\n    const highlightedCode = syntaxHighlighter && typeof syntaxHighlighter === 'function' && code && isHydrated\n        ? syntaxHighlighter(code, language, codeOpts, { mdx: true })\n        : code;\n    if (isHydrated && isMermaid) {\n        return code;\n    }\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement((external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default()).Fragment, null,\n        copyButtons && external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(CopyCode, { className: \"fa\", codeRef: codeRef }),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"code\", { ref: codeRef, className: ['rdmd-code', `lang-${language}`, `theme-${theme}`].join(' '), \"data-lang\": language }, highlightedCode)));\n};\n/* harmony default export */ const components_Code = (Code);\n\n// EXTERNAL MODULE: ./node_modules/@readme/syntax-highlighter/dist-utils/index.js\nvar dist_utils = __webpack_require__(7900);\nvar dist_utils_default = /*#__PURE__*/__webpack_require__.n(dist_utils);\n;// ./components/CodeTabs/index.tsx\n\n\n\n\nlet mermaid;\nconst { uppercase } = (dist_utils_default());\nconst CodeTabs = (props) => {\n    const { children } = props;\n    const theme = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useContext)(Theme);\n    const isHydrated = useHydrated();\n    // Handle both array (from rehype-react in rendering mdxish) and single element (MDX/JSX runtime) cases\n    // The children here is the individual code block objects\n    const childrenArray = Array.isArray(children) ? children : [children];\n    // The structure varies depending on rendering context:\n    // - When rendered via rehype-react: pre.props.children is an array where the first element is the Code component\n    // - When rendered via MDX/JSX runtime: pre.props.children is directly the Code component\n    const getCodeComponent = (pre) => {\n        return Array.isArray(pre?.props?.children) ? pre.props.children[0] : pre?.props?.children;\n    };\n    const containAtLeastOneMermaid = childrenArray.some(pre => getCodeComponent(pre)?.props?.lang === 'mermaid');\n    // Render Mermaid diagram\n    (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {\n        // Ensure we only render mermaids when frontend is hydrated to avoid hydration errors\n        // because mermaid mutates the DOM before react hydrates\n        if (typeof window !== 'undefined' && containAtLeastOneMermaid && isHydrated) {\n            Promise.resolve(/* import() */).then(__webpack_require__.t.bind(__webpack_require__, 1387, 23)).then(module => {\n                mermaid = module.default;\n                mermaid.initialize({\n                    startOnLoad: false,\n                    theme: theme === 'dark' ? 'dark' : 'default',\n                });\n                mermaid.run({\n                    nodes: document.querySelectorAll('.mermaid-render'),\n                });\n            });\n        }\n    }, [containAtLeastOneMermaid, theme, isHydrated]);\n    function handleClick({ target }, index) {\n        const $wrap = target.parentElement.parentElement;\n        const $open = [].slice.call($wrap.querySelectorAll('.CodeTabs_active'));\n        $open.forEach((el) => el.classList.remove('CodeTabs_active'));\n        $wrap.classList.remove('CodeTabs_initial');\n        const codeblocks = $wrap.querySelectorAll('pre');\n        codeblocks[index].classList.add('CodeTabs_active');\n        target.classList.add('CodeTabs_active');\n    }\n    // We want to render single mermaid diagrams without the code tabs UI\n    if (childrenArray.length === 1) {\n        const codeComponent = getCodeComponent(childrenArray[0]);\n        if (codeComponent?.props?.lang === 'mermaid') {\n            const value = codeComponent?.props?.value;\n            return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"pre\", { className: \"mermaid-render mermaid_single\" }, value);\n        }\n    }\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: `CodeTabs CodeTabs_initial theme-${theme}` },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"CodeTabs-toolbar\" }, childrenArray.map((pre, i) => {\n            // the first or only child should be our Code component\n            const tabCodeComponent = Array.isArray(pre.props?.children)\n                ? pre.props.children[0]\n                : pre.props?.children;\n            const lang = tabCodeComponent?.props?.lang;\n            const meta = tabCodeComponent?.props?.meta;\n            /* istanbul ignore next */\n            return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"button\", { key: i, onClick: e => handleClick(e, i), type: \"button\", value: lang }, meta || `${!lang ? 'Text' : uppercase(lang)}`));\n        })),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"CodeTabs-inner\" }, children)));\n};\n/* harmony default export */ const components_CodeTabs = (CodeTabs);\n\n;// ./components/Columns/index.tsx\n\n\nconst Column = ({ children }) => {\n    return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"Column\" }, children);\n};\nconst Columns = ({ children, layout = 'auto' }) => {\n    // eslint-disable-next-line no-param-reassign\n    layout = layout === 'fixed' ? '1fr' : 'auto';\n    const columnsCount = external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().Children.count(children);\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"Columns\", style: { gridTemplateColumns: `repeat(${columnsCount}, ${layout})` } }, children));\n};\n/* harmony default export */ const components_Columns = (Columns);\n\n;// ./components/Embed/index.tsx\n/* eslint-disable no-param-reassign */\n/* eslint-disable react/jsx-props-no-spreading */\n\nconst Favicon = ({ src, alt = 'favicon', ...attr }) => (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"img\", { ...attr, alt: alt, height: \"14\", src: src, width: \"14\" }));\nconst Embed = ({ lazy = true, url, html, providerName, providerUrl, title, iframe, image, favicon, ...attrs }) => {\n    if (typeof iframe !== 'boolean')\n        iframe = iframe === 'true';\n    if (html) {\n        try {\n            if (html !== decodeURIComponent(html)) {\n                html = decodeURIComponent(html);\n            }\n            else if (html === 'false') {\n                html = undefined;\n            }\n        }\n        catch (e) {\n            // html wasn't HTML apparently\n            html = undefined;\n        }\n    }\n    if (iframe) {\n        return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"iframe\", { ...attrs, src: url, style: { border: 'none', display: 'flex', margin: 'auto' }, title: title });\n    }\n    if (!providerUrl && url)\n        providerUrl = new URL(url).hostname\n            .split(/(?:www)?\\./)\n            .filter(i => i)\n            .join('.');\n    if (!providerName)\n        providerName = providerUrl;\n    const classes = ['embed', image ? 'embed_hasImg' : ''];\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: classes.join(' ') }, html ? (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"embed-media\", dangerouslySetInnerHTML: { __html: html } })) : (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"a\", { className: \"embed-link\", href: url, rel: \"noopener noreferrer\", target: \"_blank\" },\n        !image || external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"img\", { alt: title, className: \"embed-img\", loading: lazy ? 'lazy' : undefined, src: image }),\n        title && title !== '@embed' ? (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"embed-body\" },\n            !favicon || external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Favicon, { alt: providerName, src: favicon }),\n            providerUrl && (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"small\", { className: \"embed-provider\" }, providerUrl.search(/^@{1}/) < 0 ? (providerName) : (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"code\", { style: { fontFamily: 'var(--md-code-font, monospace)' } }, url)))),\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"embed-title\" }, title))) : (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"embed-body\" },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"b\", null, \"View\"),\n            \": \",\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"span\", { className: \"embed-body-url\" }, url)))))));\n};\n/* harmony default export */ const components_Embed = (Embed);\n\n// EXTERNAL MODULE: external \"@tippyjs/react\"\nvar react_ = __webpack_require__(4189);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react_);\n;// ./contexts/GlossaryTerms.ts\n\nconst GlossaryContext = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createContext)([]);\n/* harmony default export */ const GlossaryTerms = (GlossaryContext);\n\n;// ./components/Glossary/index.tsx\n\n\n\nconst Glossary = ({ children, term: termProp, terms }) => {\n    const term = (Array.isArray(children) ? children[0] : children) || termProp;\n    const foundTerm = terms.find(i => term.toLowerCase() === i?.term?.toLowerCase());\n    if (!foundTerm)\n        return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"span\", null, term);\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement((react_default()), { content: external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"GlossaryItem-tooltip-content\" },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"strong\", { className: \"GlossaryItem-term\" }, foundTerm.term),\n            \" - \",\n            foundTerm.definition), offset: [-5, 5], placement: \"bottom-start\" },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"span\", { className: \"GlossaryItem-trigger\" }, term)));\n};\nconst GlossaryWithContext = (props) => {\n    const terms = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useContext)(GlossaryTerms);\n    return terms ? external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Glossary, { ...props, terms: terms }) : external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"span\", null, props.term);\n};\n\n/* harmony default export */ const components_Glossary = (GlossaryWithContext);\n\n;// ./components/HTMLBlock/index.tsx\n\nconst MATCH_SCRIPT_TAGS = /<script\\b[^>]*>([\\s\\S]*?)<\\/script *>\\n?/gim;\nconst extractScripts = (html = '') => {\n    const scripts = [];\n    let match;\n    while ((match = MATCH_SCRIPT_TAGS.exec(html)) !== null) {\n        scripts.push(match[1]);\n    }\n    const cleaned = html.replace(MATCH_SCRIPT_TAGS, '');\n    // eslint-disable-next-line no-eval\n    return [cleaned, () => scripts.map(js => window.eval(js))];\n};\nconst HTMLBlock = ({ children = '', html: htmlProp, runScripts, safeMode: safeModeRaw = false }) => {\n    // Determine HTML source: MDXish uses html prop (from HAST), MDX uses children\n    let html = '';\n    if (htmlProp !== undefined) {\n        html = htmlProp;\n    }\n    else {\n        if (typeof children !== 'string') {\n            throw new TypeError('HTMLBlock: children must be a string');\n        }\n        html = children;\n    }\n    // eslint-disable-next-line no-param-reassign\n    runScripts = typeof runScripts !== 'boolean' ? runScripts === 'true' : runScripts;\n    // In MDX mode, safeMode is passed in as a boolean from JSX parsing\n    // In MDXish mode, safeMode comes in as a string from HAST props\n    const safeMode = typeof safeModeRaw !== 'boolean' ? safeModeRaw === 'true' : safeModeRaw;\n    const [cleanedHtml, exec] = extractScripts(html);\n    (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {\n        if (typeof window !== 'undefined' && typeof runScripts === 'boolean' && runScripts)\n            exec();\n    }, [runScripts, exec]);\n    if (safeMode) {\n        return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"pre\", { className: \"html-unsafe\" },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"code\", null, html)));\n    }\n    return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"rdmd-html\", dangerouslySetInnerHTML: { __html: cleanedHtml } });\n};\n/* harmony default export */ const components_HTMLBlock = (HTMLBlock);\n\n;// ./components/Heading/index.tsx\n\nconst Heading = ({ tag: Tag = 'h3', depth = 3, id, children, ...attrs }) => {\n    if (!children)\n        return '';\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Tag, { ...attrs, className: `heading heading-${depth} header-scroll` },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { key: `heading-anchor-${id}`, className: \"heading-anchor anchor waypoint\", id: id }),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { key: `heading-text-${id}`, className: \"heading-text\" }, children),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"a\", { key: `heading-anchor-icon-${id}`, \"aria-label\": `Skip link to ${children}`, className: \"heading-anchor-icon fa fa-regular fa-anchor\", href: `#${id}` })));\n};\nconst CreateHeading = (depth) => {\n    const HeadingWithDepth = (props) => external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Heading, { ...props, depth: depth, tag: `h${depth}` });\n    return HeadingWithDepth;\n};\n/* harmony default export */ const components_Heading = (CreateHeading);\n\n;// ./components/Image/index.tsx\n\nconst Image = (Props) => {\n    const { align = '', alt = '', border: borderProp = false, caption, className = '', height = 'auto', src, title = '', width = 'auto', lazy = true, children, } = Props;\n    // Normalize border: MDXish passes {false} as the string \"false\", not a boolean\n    const border = borderProp === true || borderProp === 'true';\n    const [lightbox, setLightbox] = external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState(false);\n    if (className === 'emoji') {\n        return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"img\", { alt: alt, height: height, loading: lazy ? 'lazy' : 'eager', src: src, title: title, width: width });\n    }\n    const handleKeyDown = ({ key, metaKey: cmd }) => {\n        const cmdKey = cmd ? 'cmd+' : '';\n        // eslint-disable-next-line no-param-reassign\n        key = `${cmdKey}${key.toLowerCase()}`;\n        switch (key) {\n            case 'cmd+.':\n            case 'escape':\n                // CLOSE\n                setLightbox(false);\n                break;\n            case ' ':\n            case 'enter':\n                // OPEN\n                if (!lightbox)\n                    setLightbox(true);\n                break;\n            default:\n        }\n    };\n    const toggle = () => {\n        if (className === 'emoji')\n            return;\n        setLightbox(!lightbox);\n    };\n    if (children || caption) {\n        return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"figure\", null,\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"span\", { \"aria-label\": alt, className: `img lightbox ${lightbox ? 'open' : 'closed'}`, onClick: toggle, onKeyDown: handleKeyDown, role: 'button', tabIndex: 0 },\n                external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"span\", { className: \"lightbox-inner\" },\n                    external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"img\", { alt: alt, className: `img img-align-center ${border ? 'border' : ''}`, height: height, loading: lazy ? 'lazy' : 'eager', src: src, title: title, width: width }),\n                    external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"figcaption\", null, children || caption))),\n            lightbox && (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"button\", { \"aria-label\": \"Minimize image\", className: \"lightbox-close\", type: \"button\" },\n                external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"i\", { \"aria-hidden\": \"true\", className: \"fa-solid fa-xmark\" })))));\n    }\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"span\", { \"aria-label\": `${lightbox ? 'Collapse image' : 'Expand image'}`, className: `img lightbox ${lightbox ? 'open' : 'closed'}`, onClick: toggle, onKeyDown: handleKeyDown, role: 'button', tabIndex: 0 },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"span\", { className: \"lightbox-inner\" },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"img\", { alt: alt, className: `img ${align ? `img-align-${align}` : ''} ${border ? 'border' : ''}`, height: height, loading: lazy ? 'lazy' : 'eager', src: src, title: title, width: width })),\n        lightbox && (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"button\", { \"aria-label\": \"Minimize image\", className: \"lightbox-close\", type: \"button\" },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.createElement(\"i\", { \"aria-hidden\": \"true\", className: \"fa-solid fa-xmark\" })))));\n};\n/* harmony default export */ const components_Image = (Image);\n\n;// ./components/MCPIntro/index.tsx\n\n// We render a placeholder in this library, as the actual implemenation is\n// deeply tied to the main app\nconst MCPIntro = () => {\n    const style = {\n        height: '200px',\n        border: '1px solid var(--color-border-default, rgba(black, 0.1))',\n        borderRadius: 'var(--border-radius-lg, 7.5px)',\n        display: 'flex',\n        flexDirection: 'column',\n        padding: '20px',\n        gap: '15px',\n    };\n    const placeholderStyle = {\n        borderRadius: 'var(--border-radius-md, 5px)',\n        backgroundColor: 'var(--color-skeleton, #384248)',\n    };\n    const headerStyle = {\n        ...placeholderStyle,\n        height: '24px',\n        width: '200px',\n    };\n    const lineStyle = {\n        ...placeholderStyle,\n        height: '12px',\n        width: '100%',\n    };\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"MCPIntro\", style: style },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: headerStyle }),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: { ...lineStyle, width: '90%' } }),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: { ...lineStyle, width: '95%' } }),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: { ...lineStyle, width: '85%' } }),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: { ...lineStyle, width: '92%' } }),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: { ...lineStyle, width: '88%' } })));\n};\n/* harmony default export */ const components_MCPIntro = (MCPIntro);\n\n;// ./components/Table/index.tsx\n\nconst Table = (props) => {\n    const { children } = props;\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"rdmd-table\" },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"rdmd-table-inner\" },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"table\", null, children))));\n};\n/* harmony default export */ const components_Table = (Table);\n\n;// ./components/TableOfContents/index.tsx\n\nfunction TableOfContents({ children, heading = 'Table of Contents' }) {\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"nav\", { \"aria-label\": \"Table of contents\", role: \"navigation\" },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"ul\", { className: \"toc-list\" },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"li\", null,\n                external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"a\", { className: \"tocHeader\", href: \"#\" },\n                    external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"i\", { className: \"icon icon-text-align-left\" }),\n                    heading)),\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"li\", { className: \"toc-children\" }, children))));\n}\n/* harmony default export */ const components_TableOfContents = (TableOfContents);\n\n;// ./components/Tabs/index.tsx\n\n\nconst Tab = ({ children }) => {\n    return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"TabContent\" }, children);\n};\nconst Tabs = ({ children }) => {\n    const [activeTab, setActiveTab] = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState)(0);\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"TabGroup\" },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"header\", null,\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"nav\", { className: \"TabGroup-nav\" }, children?.map((tab, index) => (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"button\", { key: tab.props.title, className: `TabGroup-tab${activeTab === index ? '_active' : ''}`, onClick: () => setActiveTab(index) },\n                tab.props.icon && (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"i\", { className: `TabGroup-icon fa-duotone fa-solid ${tab.props.icon}`, style: { color: `${tab.props.iconColor}` } })),\n                tab.props.title))))),\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"section\", null, children && children[activeTab])));\n};\n/* harmony default export */ const components_Tabs = (Tabs);\n\n;// ./utils/consts.ts\nconst tailwindPrefix = 'readme-tailwind';\n\n;// ./components/TailwindRoot/index.tsx\n\n\nconst TailwindRoot = ({ children, flow }) => {\n    const Tag = flow ? 'div' : 'span';\n    return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Tag, { className: tailwindPrefix }, children);\n};\n/* harmony default export */ const components_TailwindRoot = (TailwindRoot);\n\n// EXTERNAL MODULE: ./node_modules/postcss/lib/postcss.js\nvar postcss = __webpack_require__(2895);\nvar postcss_default = /*#__PURE__*/__webpack_require__.n(postcss);\n;// ./node_modules/postcss/lib/postcss.mjs\n\n\n/* harmony default export */ const lib_postcss = ((postcss_default()));\n\nconst stringify = (postcss_default()).stringify\nconst fromJSON = (postcss_default()).fromJSON\nconst postcss_plugin = (postcss_default()).plugin\nconst parse = (postcss_default()).parse\nconst list = (postcss_default()).list\n\nconst postcss_document = (postcss_default()).document\nconst comment = (postcss_default()).comment\nconst atRule = (postcss_default()).atRule\nconst rule = (postcss_default()).rule\nconst decl = (postcss_default()).decl\nconst root = (postcss_default()).root\n\nconst CssSyntaxError = (postcss_default()).CssSyntaxError\nconst Declaration = (postcss_default()).Declaration\nconst Container = (postcss_default()).Container\nconst Processor = (postcss_default()).Processor\nconst Document = (postcss_default()).Document\nconst Comment = (postcss_default()).Comment\nconst Warning = (postcss_default()).Warning\nconst AtRule = (postcss_default()).AtRule\nconst Result = (postcss_default()).Result\nconst Input = (postcss_default()).Input\nconst Rule = (postcss_default()).Rule\nconst Root = (postcss_default()).Root\nconst Node = (postcss_default()).Node\n\n// EXTERNAL MODULE: ./node_modules/postcss-prefix-selector/index.js\nvar postcss_prefix_selector = __webpack_require__(9193);\nvar postcss_prefix_selector_default = /*#__PURE__*/__webpack_require__.n(postcss_prefix_selector);\n;// ./node_modules/tailwindcss/dist/chunk-HTB5LLOP.mjs\nvar l={inherit:\"inherit\",current:\"currentcolor\",transparent:\"transparent\",black:\"#000\",white:\"#fff\",slate:{50:\"oklch(98.4% 0.003 247.858)\",100:\"oklch(96.8% 0.007 247.896)\",200:\"oklch(92.9% 0.013 255.508)\",300:\"oklch(86.9% 0.022 252.894)\",400:\"oklch(70.4% 0.04 256.788)\",500:\"oklch(55.4% 0.046 257.417)\",600:\"oklch(44.6% 0.043 257.281)\",700:\"oklch(37.2% 0.044 257.287)\",800:\"oklch(27.9% 0.041 260.031)\",900:\"oklch(20.8% 0.042 265.755)\",950:\"oklch(12.9% 0.042 264.695)\"},gray:{50:\"oklch(98.5% 0.002 247.839)\",100:\"oklch(96.7% 0.003 264.542)\",200:\"oklch(92.8% 0.006 264.531)\",300:\"oklch(87.2% 0.01 258.338)\",400:\"oklch(70.7% 0.022 261.325)\",500:\"oklch(55.1% 0.027 264.364)\",600:\"oklch(44.6% 0.03 256.802)\",700:\"oklch(37.3% 0.034 259.733)\",800:\"oklch(27.8% 0.033 256.848)\",900:\"oklch(21% 0.034 264.665)\",950:\"oklch(13% 0.028 261.692)\"},zinc:{50:\"oklch(98.5% 0 0)\",100:\"oklch(96.7% 0.001 286.375)\",200:\"oklch(92% 0.004 286.32)\",300:\"oklch(87.1% 0.006 286.286)\",400:\"oklch(70.5% 0.015 286.067)\",500:\"oklch(55.2% 0.016 285.938)\",600:\"oklch(44.2% 0.017 285.786)\",700:\"oklch(37% 0.013 285.805)\",800:\"oklch(27.4% 0.006 286.033)\",900:\"oklch(21% 0.006 285.885)\",950:\"oklch(14.1% 0.005 285.823)\"},neutral:{50:\"oklch(98.5% 0 0)\",100:\"oklch(97% 0 0)\",200:\"oklch(92.2% 0 0)\",300:\"oklch(87% 0 0)\",400:\"oklch(70.8% 0 0)\",500:\"oklch(55.6% 0 0)\",600:\"oklch(43.9% 0 0)\",700:\"oklch(37.1% 0 0)\",800:\"oklch(26.9% 0 0)\",900:\"oklch(20.5% 0 0)\",950:\"oklch(14.5% 0 0)\"},stone:{50:\"oklch(98.5% 0.001 106.423)\",100:\"oklch(97% 0.001 106.424)\",200:\"oklch(92.3% 0.003 48.717)\",300:\"oklch(86.9% 0.005 56.366)\",400:\"oklch(70.9% 0.01 56.259)\",500:\"oklch(55.3% 0.013 58.071)\",600:\"oklch(44.4% 0.011 73.639)\",700:\"oklch(37.4% 0.01 67.558)\",800:\"oklch(26.8% 0.007 34.298)\",900:\"oklch(21.6% 0.006 56.043)\",950:\"oklch(14.7% 0.004 49.25)\"},red:{50:\"oklch(97.1% 0.013 17.38)\",100:\"oklch(93.6% 0.032 17.717)\",200:\"oklch(88.5% 0.062 18.334)\",300:\"oklch(80.8% 0.114 19.571)\",400:\"oklch(70.4% 0.191 22.216)\",500:\"oklch(63.7% 0.237 25.331)\",600:\"oklch(57.7% 0.245 27.325)\",700:\"oklch(50.5% 0.213 27.518)\",800:\"oklch(44.4% 0.177 26.899)\",900:\"oklch(39.6% 0.141 25.723)\",950:\"oklch(25.8% 0.092 26.042)\"},orange:{50:\"oklch(98% 0.016 73.684)\",100:\"oklch(95.4% 0.038 75.164)\",200:\"oklch(90.1% 0.076 70.697)\",300:\"oklch(83.7% 0.128 66.29)\",400:\"oklch(75% 0.183 55.934)\",500:\"oklch(70.5% 0.213 47.604)\",600:\"oklch(64.6% 0.222 41.116)\",700:\"oklch(55.3% 0.195 38.402)\",800:\"oklch(47% 0.157 37.304)\",900:\"oklch(40.8% 0.123 38.172)\",950:\"oklch(26.6% 0.079 36.259)\"},amber:{50:\"oklch(98.7% 0.022 95.277)\",100:\"oklch(96.2% 0.059 95.617)\",200:\"oklch(92.4% 0.12 95.746)\",300:\"oklch(87.9% 0.169 91.605)\",400:\"oklch(82.8% 0.189 84.429)\",500:\"oklch(76.9% 0.188 70.08)\",600:\"oklch(66.6% 0.179 58.318)\",700:\"oklch(55.5% 0.163 48.998)\",800:\"oklch(47.3% 0.137 46.201)\",900:\"oklch(41.4% 0.112 45.904)\",950:\"oklch(27.9% 0.077 45.635)\"},yellow:{50:\"oklch(98.7% 0.026 102.212)\",100:\"oklch(97.3% 0.071 103.193)\",200:\"oklch(94.5% 0.129 101.54)\",300:\"oklch(90.5% 0.182 98.111)\",400:\"oklch(85.2% 0.199 91.936)\",500:\"oklch(79.5% 0.184 86.047)\",600:\"oklch(68.1% 0.162 75.834)\",700:\"oklch(55.4% 0.135 66.442)\",800:\"oklch(47.6% 0.114 61.907)\",900:\"oklch(42.1% 0.095 57.708)\",950:\"oklch(28.6% 0.066 53.813)\"},lime:{50:\"oklch(98.6% 0.031 120.757)\",100:\"oklch(96.7% 0.067 122.328)\",200:\"oklch(93.8% 0.127 124.321)\",300:\"oklch(89.7% 0.196 126.665)\",400:\"oklch(84.1% 0.238 128.85)\",500:\"oklch(76.8% 0.233 130.85)\",600:\"oklch(64.8% 0.2 131.684)\",700:\"oklch(53.2% 0.157 131.589)\",800:\"oklch(45.3% 0.124 130.933)\",900:\"oklch(40.5% 0.101 131.063)\",950:\"oklch(27.4% 0.072 132.109)\"},green:{50:\"oklch(98.2% 0.018 155.826)\",100:\"oklch(96.2% 0.044 156.743)\",200:\"oklch(92.5% 0.084 155.995)\",300:\"oklch(87.1% 0.15 154.449)\",400:\"oklch(79.2% 0.209 151.711)\",500:\"oklch(72.3% 0.219 149.579)\",600:\"oklch(62.7% 0.194 149.214)\",700:\"oklch(52.7% 0.154 150.069)\",800:\"oklch(44.8% 0.119 151.328)\",900:\"oklch(39.3% 0.095 152.535)\",950:\"oklch(26.6% 0.065 152.934)\"},emerald:{50:\"oklch(97.9% 0.021 166.113)\",100:\"oklch(95% 0.052 163.051)\",200:\"oklch(90.5% 0.093 164.15)\",300:\"oklch(84.5% 0.143 164.978)\",400:\"oklch(76.5% 0.177 163.223)\",500:\"oklch(69.6% 0.17 162.48)\",600:\"oklch(59.6% 0.145 163.225)\",700:\"oklch(50.8% 0.118 165.612)\",800:\"oklch(43.2% 0.095 166.913)\",900:\"oklch(37.8% 0.077 168.94)\",950:\"oklch(26.2% 0.051 172.552)\"},teal:{50:\"oklch(98.4% 0.014 180.72)\",100:\"oklch(95.3% 0.051 180.801)\",200:\"oklch(91% 0.096 180.426)\",300:\"oklch(85.5% 0.138 181.071)\",400:\"oklch(77.7% 0.152 181.912)\",500:\"oklch(70.4% 0.14 182.503)\",600:\"oklch(60% 0.118 184.704)\",700:\"oklch(51.1% 0.096 186.391)\",800:\"oklch(43.7% 0.078 188.216)\",900:\"oklch(38.6% 0.063 188.416)\",950:\"oklch(27.7% 0.046 192.524)\"},cyan:{50:\"oklch(98.4% 0.019 200.873)\",100:\"oklch(95.6% 0.045 203.388)\",200:\"oklch(91.7% 0.08 205.041)\",300:\"oklch(86.5% 0.127 207.078)\",400:\"oklch(78.9% 0.154 211.53)\",500:\"oklch(71.5% 0.143 215.221)\",600:\"oklch(60.9% 0.126 221.723)\",700:\"oklch(52% 0.105 223.128)\",800:\"oklch(45% 0.085 224.283)\",900:\"oklch(39.8% 0.07 227.392)\",950:\"oklch(30.2% 0.056 229.695)\"},sky:{50:\"oklch(97.7% 0.013 236.62)\",100:\"oklch(95.1% 0.026 236.824)\",200:\"oklch(90.1% 0.058 230.902)\",300:\"oklch(82.8% 0.111 230.318)\",400:\"oklch(74.6% 0.16 232.661)\",500:\"oklch(68.5% 0.169 237.323)\",600:\"oklch(58.8% 0.158 241.966)\",700:\"oklch(50% 0.134 242.749)\",800:\"oklch(44.3% 0.11 240.79)\",900:\"oklch(39.1% 0.09 240.876)\",950:\"oklch(29.3% 0.066 243.157)\"},blue:{50:\"oklch(97% 0.014 254.604)\",100:\"oklch(93.2% 0.032 255.585)\",200:\"oklch(88.2% 0.059 254.128)\",300:\"oklch(80.9% 0.105 251.813)\",400:\"oklch(70.7% 0.165 254.624)\",500:\"oklch(62.3% 0.214 259.815)\",600:\"oklch(54.6% 0.245 262.881)\",700:\"oklch(48.8% 0.243 264.376)\",800:\"oklch(42.4% 0.199 265.638)\",900:\"oklch(37.9% 0.146 265.522)\",950:\"oklch(28.2% 0.091 267.935)\"},indigo:{50:\"oklch(96.2% 0.018 272.314)\",100:\"oklch(93% 0.034 272.788)\",200:\"oklch(87% 0.065 274.039)\",300:\"oklch(78.5% 0.115 274.713)\",400:\"oklch(67.3% 0.182 276.935)\",500:\"oklch(58.5% 0.233 277.117)\",600:\"oklch(51.1% 0.262 276.966)\",700:\"oklch(45.7% 0.24 277.023)\",800:\"oklch(39.8% 0.195 277.366)\",900:\"oklch(35.9% 0.144 278.697)\",950:\"oklch(25.7% 0.09 281.288)\"},violet:{50:\"oklch(96.9% 0.016 293.756)\",100:\"oklch(94.3% 0.029 294.588)\",200:\"oklch(89.4% 0.057 293.283)\",300:\"oklch(81.1% 0.111 293.571)\",400:\"oklch(70.2% 0.183 293.541)\",500:\"oklch(60.6% 0.25 292.717)\",600:\"oklch(54.1% 0.281 293.009)\",700:\"oklch(49.1% 0.27 292.581)\",800:\"oklch(43.2% 0.232 292.759)\",900:\"oklch(38% 0.189 293.745)\",950:\"oklch(28.3% 0.141 291.089)\"},purple:{50:\"oklch(97.7% 0.014 308.299)\",100:\"oklch(94.6% 0.033 307.174)\",200:\"oklch(90.2% 0.063 306.703)\",300:\"oklch(82.7% 0.119 306.383)\",400:\"oklch(71.4% 0.203 305.504)\",500:\"oklch(62.7% 0.265 303.9)\",600:\"oklch(55.8% 0.288 302.321)\",700:\"oklch(49.6% 0.265 301.924)\",800:\"oklch(43.8% 0.218 303.724)\",900:\"oklch(38.1% 0.176 304.987)\",950:\"oklch(29.1% 0.149 302.717)\"},fuchsia:{50:\"oklch(97.7% 0.017 320.058)\",100:\"oklch(95.2% 0.037 318.852)\",200:\"oklch(90.3% 0.076 319.62)\",300:\"oklch(83.3% 0.145 321.434)\",400:\"oklch(74% 0.238 322.16)\",500:\"oklch(66.7% 0.295 322.15)\",600:\"oklch(59.1% 0.293 322.896)\",700:\"oklch(51.8% 0.253 323.949)\",800:\"oklch(45.2% 0.211 324.591)\",900:\"oklch(40.1% 0.17 325.612)\",950:\"oklch(29.3% 0.136 325.661)\"},pink:{50:\"oklch(97.1% 0.014 343.198)\",100:\"oklch(94.8% 0.028 342.258)\",200:\"oklch(89.9% 0.061 343.231)\",300:\"oklch(82.3% 0.12 346.018)\",400:\"oklch(71.8% 0.202 349.761)\",500:\"oklch(65.6% 0.241 354.308)\",600:\"oklch(59.2% 0.249 0.584)\",700:\"oklch(52.5% 0.223 3.958)\",800:\"oklch(45.9% 0.187 3.815)\",900:\"oklch(40.8% 0.153 2.432)\",950:\"oklch(28.4% 0.109 3.907)\"},rose:{50:\"oklch(96.9% 0.015 12.422)\",100:\"oklch(94.1% 0.03 12.58)\",200:\"oklch(89.2% 0.058 10.001)\",300:\"oklch(81% 0.117 11.638)\",400:\"oklch(71.2% 0.194 13.428)\",500:\"oklch(64.5% 0.246 16.439)\",600:\"oklch(58.6% 0.253 17.585)\",700:\"oklch(51.4% 0.222 16.935)\",800:\"oklch(45.5% 0.188 13.697)\",900:\"oklch(41% 0.159 10.272)\",950:\"oklch(27.1% 0.105 12.094)\"}};\n\n;// ./node_modules/tailwindcss/dist/chunk-GFBUASX3.mjs\nvar _=new Set([\"black\",\"silver\",\"gray\",\"white\",\"maroon\",\"red\",\"purple\",\"fuchsia\",\"green\",\"lime\",\"olive\",\"yellow\",\"navy\",\"blue\",\"teal\",\"aqua\",\"aliceblue\",\"antiquewhite\",\"aqua\",\"aquamarine\",\"azure\",\"beige\",\"bisque\",\"black\",\"blanchedalmond\",\"blue\",\"blueviolet\",\"brown\",\"burlywood\",\"cadetblue\",\"chartreuse\",\"chocolate\",\"coral\",\"cornflowerblue\",\"cornsilk\",\"crimson\",\"cyan\",\"darkblue\",\"darkcyan\",\"darkgoldenrod\",\"darkgray\",\"darkgreen\",\"darkgrey\",\"darkkhaki\",\"darkmagenta\",\"darkolivegreen\",\"darkorange\",\"darkorchid\",\"darkred\",\"darksalmon\",\"darkseagreen\",\"darkslateblue\",\"darkslategray\",\"darkslategrey\",\"darkturquoise\",\"darkviolet\",\"deeppink\",\"deepskyblue\",\"dimgray\",\"dimgrey\",\"dodgerblue\",\"firebrick\",\"floralwhite\",\"forestgreen\",\"fuchsia\",\"gainsboro\",\"ghostwhite\",\"gold\",\"goldenrod\",\"gray\",\"green\",\"greenyellow\",\"grey\",\"honeydew\",\"hotpink\",\"indianred\",\"indigo\",\"ivory\",\"khaki\",\"lavender\",\"lavenderblush\",\"lawngreen\",\"lemonchiffon\",\"lightblue\",\"lightcoral\",\"lightcyan\",\"lightgoldenrodyellow\",\"lightgray\",\"lightgreen\",\"lightgrey\",\"lightpink\",\"lightsalmon\",\"lightseagreen\",\"lightskyblue\",\"lightslategray\",\"lightslategrey\",\"lightsteelblue\",\"lightyellow\",\"lime\",\"limegreen\",\"linen\",\"magenta\",\"maroon\",\"mediumaquamarine\",\"mediumblue\",\"mediumorchid\",\"mediumpurple\",\"mediumseagreen\",\"mediumslateblue\",\"mediumspringgreen\",\"mediumturquoise\",\"mediumvioletred\",\"midnightblue\",\"mintcream\",\"mistyrose\",\"moccasin\",\"navajowhite\",\"navy\",\"oldlace\",\"olive\",\"olivedrab\",\"orange\",\"orangered\",\"orchid\",\"palegoldenrod\",\"palegreen\",\"paleturquoise\",\"palevioletred\",\"papayawhip\",\"peachpuff\",\"peru\",\"pink\",\"plum\",\"powderblue\",\"purple\",\"rebeccapurple\",\"red\",\"rosybrown\",\"royalblue\",\"saddlebrown\",\"salmon\",\"sandybrown\",\"seagreen\",\"seashell\",\"sienna\",\"silver\",\"skyblue\",\"slateblue\",\"slategray\",\"slategrey\",\"snow\",\"springgreen\",\"steelblue\",\"tan\",\"teal\",\"thistle\",\"tomato\",\"turquoise\",\"violet\",\"wheat\",\"white\",\"whitesmoke\",\"yellow\",\"yellowgreen\",\"transparent\",\"currentcolor\",\"canvas\",\"canvastext\",\"linktext\",\"visitedtext\",\"activetext\",\"buttonface\",\"buttontext\",\"buttonborder\",\"field\",\"fieldtext\",\"highlight\",\"highlighttext\",\"selecteditem\",\"selecteditemtext\",\"mark\",\"marktext\",\"graytext\",\"accentcolor\",\"accentcolortext\"]),U=/^(rgba?|hsla?|hwb|color|(ok)?(lab|lch)|light-dark|color-mix)\\(/i;function S(e){return e.charCodeAt(0)===35||U.test(e)||_.has(e.toLowerCase())}var A=[\"calc\",\"min\",\"max\",\"clamp\",\"mod\",\"rem\",\"sin\",\"cos\",\"tan\",\"asin\",\"acos\",\"atan\",\"atan2\",\"pow\",\"sqrt\",\"hypot\",\"log\",\"exp\",\"round\"];function b(e){return e.indexOf(\"(\")!==-1&&A.some(t=>e.includes(`${t}(`))}function oe(e){if(!A.some(n=>e.includes(n)))return e;let t=\"\",r=[],s=null,m=null;for(let n=0;n<e.length;n++){let a=e.charCodeAt(n);if(a>=48&&a<=57||s!==null&&(a===37||a>=97&&a<=122||a>=65&&a<=90)?s=n:(m=s,s=null),a===40){t+=e[n];let i=n;for(let p=n-1;p>=0;p--){let c=e.charCodeAt(p);if(c>=48&&c<=57)i=p;else if(c>=97&&c<=122)i=p;else break}let o=e.slice(i,n);if(A.includes(o)){r.unshift(!0);continue}else if(r[0]&&o===\"\"){r.unshift(!0);continue}r.unshift(!1);continue}else if(a===41)t+=e[n],r.shift();else if(a===44&&r[0]){t+=\", \";continue}else{if(a===32&&r[0]&&t.charCodeAt(t.length-1)===32)continue;if((a===43||a===42||a===47||a===45)&&r[0]){let i=t.trimEnd(),o=i.charCodeAt(i.length-1),p=i.charCodeAt(i.length-2),c=e.charCodeAt(n+1);if((o===101||o===69)&&p>=48&&p<=57){t+=e[n];continue}else if(o===43||o===42||o===47||o===45){t+=e[n];continue}else if(o===40||o===44){t+=e[n];continue}else e.charCodeAt(n-1)===32?t+=`${e[n]} `:o>=48&&o<=57||c>=48&&c<=57||o===41||c===40||c===43||c===42||c===47||c===45||m!==null&&m===n-1?t+=` ${e[n]} `:t+=e[n]}else t+=e[n]}}return t}var E=new Uint8Array(256);function chunk_GFBUASX3_d(e,t){let r=0,s=[],m=0,n=e.length,a=t.charCodeAt(0);for(let i=0;i<n;i++){let o=e.charCodeAt(i);if(r===0&&o===a){s.push(e.slice(m,i)),m=i+1;continue}switch(o){case 92:i+=1;break;case 39:case 34:for(;++i<n;){let p=e.charCodeAt(i);if(p===92){i+=1;continue}if(p===o)break}break;case 40:E[r]=41,r++;break;case 91:E[r]=93,r++;break;case 123:E[r]=125,r++;break;case 93:case 125:case 41:r>0&&o===E[r-1]&&r--;break}}return s.push(e.slice(m)),s}var P={color:S,length:y,percentage:C,ratio:G,number:v,integer:chunk_GFBUASX3_u,url:R,position:K,\"bg-size\":Y,\"line-width\":T,image:F,\"family-name\":M,\"generic-name\":H,\"absolute-size\":chunk_GFBUASX3_$,\"relative-size\":W,angle:X,vector:te};function me(e,t){if(e.startsWith(\"var(\"))return null;for(let r of t)if(P[r]?.(e))return r;return null}var z=/^url\\(.*\\)$/;function R(e){return z.test(e)}function T(e){return chunk_GFBUASX3_d(e,\" \").every(t=>y(t)||v(t)||t===\"thin\"||t===\"medium\"||t===\"thick\")}var D=/^(?:element|image|cross-fade|image-set)\\(/,I=/^(repeating-)?(conic|linear|radial)-gradient\\(/;function F(e){let t=0;for(let r of chunk_GFBUASX3_d(e,\",\"))if(!r.startsWith(\"var(\")){if(R(r)){t+=1;continue}if(I.test(r)){t+=1;continue}if(D.test(r)){t+=1;continue}return!1}return t>0}function H(e){return e===\"serif\"||e===\"sans-serif\"||e===\"monospace\"||e===\"cursive\"||e===\"fantasy\"||e===\"system-ui\"||e===\"ui-serif\"||e===\"ui-sans-serif\"||e===\"ui-monospace\"||e===\"ui-rounded\"||e===\"math\"||e===\"emoji\"||e===\"fangsong\"}function M(e){let t=0;for(let r of chunk_GFBUASX3_d(e,\",\")){let s=r.charCodeAt(0);if(s>=48&&s<=57)return!1;r.startsWith(\"var(\")||(t+=1)}return t>0}function chunk_GFBUASX3_$(e){return e===\"xx-small\"||e===\"x-small\"||e===\"small\"||e===\"medium\"||e===\"large\"||e===\"x-large\"||e===\"xx-large\"||e===\"xxx-large\"}function W(e){return e===\"larger\"||e===\"smaller\"}var x=/[+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?/,B=new RegExp(`^${x.source}$`);function v(e){return B.test(e)||b(e)}var q=new RegExp(`^${x.source}%$`);function C(e){return q.test(e)||b(e)}var V=new RegExp(`^${x.source}s*/s*${x.source}$`);function G(e){return V.test(e)||b(e)}var Z=[\"cm\",\"mm\",\"Q\",\"in\",\"pc\",\"pt\",\"px\",\"em\",\"ex\",\"ch\",\"rem\",\"lh\",\"rlh\",\"vw\",\"vh\",\"vmin\",\"vmax\",\"vb\",\"vi\",\"svw\",\"svh\",\"lvw\",\"lvh\",\"dvw\",\"dvh\",\"cqw\",\"cqh\",\"cqi\",\"cqb\",\"cqmin\",\"cqmax\"],j=new RegExp(`^${x.source}(${Z.join(\"|\")})$`);function y(e){return j.test(e)||b(e)}function K(e){let t=0;for(let r of chunk_GFBUASX3_d(e,\" \")){if(r===\"center\"||r===\"top\"||r===\"right\"||r===\"bottom\"||r===\"left\"){t+=1;continue}if(!r.startsWith(\"var(\")){if(y(r)||C(r)){t+=1;continue}return!1}}return t>0}function Y(e){let t=0;for(let r of chunk_GFBUASX3_d(e,\",\")){if(r===\"cover\"||r===\"contain\"){t+=1;continue}let s=chunk_GFBUASX3_d(r,\" \");if(s.length!==1&&s.length!==2)return!1;if(s.every(m=>m===\"auto\"||y(m)||C(m))){t+=1;continue}}return t>0}var Q=[\"deg\",\"rad\",\"grad\",\"turn\"],J=new RegExp(`^${x.source}(${Q.join(\"|\")})$`);function X(e){return J.test(e)}var ee=new RegExp(`^${x.source} +${x.source} +${x.source}$`);function te(e){return ee.test(e)}function chunk_GFBUASX3_u(e){let t=Number(e);return Number.isInteger(t)&&t>=0&&String(t)===String(e)}function pe(e){let t=Number(e);return Number.isInteger(t)&&t>0&&String(t)===String(e)}function ge(e){return N(e,.25)}function ue(e){return N(e,.25)}function N(e,t){let r=Number(e);return r>=0&&r%t===0&&String(r)===String(e)}function h(e){return{__BARE_VALUE__:e}}var g=h(e=>{if(chunk_GFBUASX3_u(e.value))return e.value}),chunk_GFBUASX3_l=h(e=>{if(chunk_GFBUASX3_u(e.value))return`${e.value}%`}),f=h(e=>{if(chunk_GFBUASX3_u(e.value))return`${e.value}px`}),O=h(e=>{if(chunk_GFBUASX3_u(e.value))return`${e.value}ms`}),w=h(e=>{if(chunk_GFBUASX3_u(e.value))return`${e.value}deg`}),re=h(e=>{if(e.fraction===null)return;let[t,r]=chunk_GFBUASX3_d(e.fraction,\"/\");if(!(!chunk_GFBUASX3_u(t)||!chunk_GFBUASX3_u(r)))return e.fraction}),L=h(e=>{if(chunk_GFBUASX3_u(Number(e.value)))return`repeat(${e.value}, minmax(0, 1fr))`}),be={accentColor:({theme:e})=>e(\"colors\"),animation:{none:\"none\",spin:\"spin 1s linear infinite\",ping:\"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite\",pulse:\"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\",bounce:\"bounce 1s infinite\"},aria:{busy:'busy=\"true\"',checked:'checked=\"true\"',disabled:'disabled=\"true\"',expanded:'expanded=\"true\"',hidden:'hidden=\"true\"',pressed:'pressed=\"true\"',readonly:'readonly=\"true\"',required:'required=\"true\"',selected:'selected=\"true\"'},aspectRatio:{auto:\"auto\",square:\"1 / 1\",video:\"16 / 9\",...re},backdropBlur:({theme:e})=>e(\"blur\"),backdropBrightness:({theme:e})=>({...e(\"brightness\"),...chunk_GFBUASX3_l}),backdropContrast:({theme:e})=>({...e(\"contrast\"),...chunk_GFBUASX3_l}),backdropGrayscale:({theme:e})=>({...e(\"grayscale\"),...chunk_GFBUASX3_l}),backdropHueRotate:({theme:e})=>({...e(\"hueRotate\"),...w}),backdropInvert:({theme:e})=>({...e(\"invert\"),...chunk_GFBUASX3_l}),backdropOpacity:({theme:e})=>({...e(\"opacity\"),...chunk_GFBUASX3_l}),backdropSaturate:({theme:e})=>({...e(\"saturate\"),...chunk_GFBUASX3_l}),backdropSepia:({theme:e})=>({...e(\"sepia\"),...chunk_GFBUASX3_l}),backgroundColor:({theme:e})=>e(\"colors\"),backgroundImage:{none:\"none\",\"gradient-to-t\":\"linear-gradient(to top, var(--tw-gradient-stops))\",\"gradient-to-tr\":\"linear-gradient(to top right, var(--tw-gradient-stops))\",\"gradient-to-r\":\"linear-gradient(to right, var(--tw-gradient-stops))\",\"gradient-to-br\":\"linear-gradient(to bottom right, var(--tw-gradient-stops))\",\"gradient-to-b\":\"linear-gradient(to bottom, var(--tw-gradient-stops))\",\"gradient-to-bl\":\"linear-gradient(to bottom left, var(--tw-gradient-stops))\",\"gradient-to-l\":\"linear-gradient(to left, var(--tw-gradient-stops))\",\"gradient-to-tl\":\"linear-gradient(to top left, var(--tw-gradient-stops))\"},backgroundOpacity:({theme:e})=>e(\"opacity\"),backgroundPosition:{bottom:\"bottom\",center:\"center\",left:\"left\",\"left-bottom\":\"left bottom\",\"left-top\":\"left top\",right:\"right\",\"right-bottom\":\"right bottom\",\"right-top\":\"right top\",top:\"top\"},backgroundSize:{auto:\"auto\",cover:\"cover\",contain:\"contain\"},blur:{0:\"0\",none:\"\",sm:\"4px\",DEFAULT:\"8px\",md:\"12px\",lg:\"16px\",xl:\"24px\",\"2xl\":\"40px\",\"3xl\":\"64px\"},borderColor:({theme:e})=>({DEFAULT:\"currentcolor\",...e(\"colors\")}),borderOpacity:({theme:e})=>e(\"opacity\"),borderRadius:{none:\"0px\",sm:\"0.125rem\",DEFAULT:\"0.25rem\",md:\"0.375rem\",lg:\"0.5rem\",xl:\"0.75rem\",\"2xl\":\"1rem\",\"3xl\":\"1.5rem\",full:\"9999px\"},borderSpacing:({theme:e})=>e(\"spacing\"),borderWidth:{DEFAULT:\"1px\",0:\"0px\",2:\"2px\",4:\"4px\",8:\"8px\",...f},boxShadow:{sm:\"0 1px 2px 0 rgb(0 0 0 / 0.05)\",DEFAULT:\"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",md:\"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",lg:\"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\",xl:\"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\",\"2xl\":\"0 25px 50px -12px rgb(0 0 0 / 0.25)\",inner:\"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)\",none:\"none\"},boxShadowColor:({theme:e})=>e(\"colors\"),brightness:{0:\"0\",50:\".5\",75:\".75\",90:\".9\",95:\".95\",100:\"1\",105:\"1.05\",110:\"1.1\",125:\"1.25\",150:\"1.5\",200:\"2\",...chunk_GFBUASX3_l},caretColor:({theme:e})=>e(\"colors\"),colors:()=>({...l}),columns:{auto:\"auto\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"10\",11:\"11\",12:\"12\",\"3xs\":\"16rem\",\"2xs\":\"18rem\",xs:\"20rem\",sm:\"24rem\",md:\"28rem\",lg:\"32rem\",xl:\"36rem\",\"2xl\":\"42rem\",\"3xl\":\"48rem\",\"4xl\":\"56rem\",\"5xl\":\"64rem\",\"6xl\":\"72rem\",\"7xl\":\"80rem\",...g},container:{},content:{none:\"none\"},contrast:{0:\"0\",50:\".5\",75:\".75\",100:\"1\",125:\"1.25\",150:\"1.5\",200:\"2\",...chunk_GFBUASX3_l},cursor:{auto:\"auto\",default:\"default\",pointer:\"pointer\",wait:\"wait\",text:\"text\",move:\"move\",help:\"help\",\"not-allowed\":\"not-allowed\",none:\"none\",\"context-menu\":\"context-menu\",progress:\"progress\",cell:\"cell\",crosshair:\"crosshair\",\"vertical-text\":\"vertical-text\",alias:\"alias\",copy:\"copy\",\"no-drop\":\"no-drop\",grab:\"grab\",grabbing:\"grabbing\",\"all-scroll\":\"all-scroll\",\"col-resize\":\"col-resize\",\"row-resize\":\"row-resize\",\"n-resize\":\"n-resize\",\"e-resize\":\"e-resize\",\"s-resize\":\"s-resize\",\"w-resize\":\"w-resize\",\"ne-resize\":\"ne-resize\",\"nw-resize\":\"nw-resize\",\"se-resize\":\"se-resize\",\"sw-resize\":\"sw-resize\",\"ew-resize\":\"ew-resize\",\"ns-resize\":\"ns-resize\",\"nesw-resize\":\"nesw-resize\",\"nwse-resize\":\"nwse-resize\",\"zoom-in\":\"zoom-in\",\"zoom-out\":\"zoom-out\"},divideColor:({theme:e})=>e(\"borderColor\"),divideOpacity:({theme:e})=>e(\"borderOpacity\"),divideWidth:({theme:e})=>({...e(\"borderWidth\"),...f}),dropShadow:{sm:\"0 1px 1px rgb(0 0 0 / 0.05)\",DEFAULT:[\"0 1px 2px rgb(0 0 0 / 0.1)\",\"0 1px 1px rgb(0 0 0 / 0.06)\"],md:[\"0 4px 3px rgb(0 0 0 / 0.07)\",\"0 2px 2px rgb(0 0 0 / 0.06)\"],lg:[\"0 10px 8px rgb(0 0 0 / 0.04)\",\"0 4px 3px rgb(0 0 0 / 0.1)\"],xl:[\"0 20px 13px rgb(0 0 0 / 0.03)\",\"0 8px 5px rgb(0 0 0 / 0.08)\"],\"2xl\":\"0 25px 25px rgb(0 0 0 / 0.15)\",none:\"0 0 #0000\"},fill:({theme:e})=>e(\"colors\"),flex:{1:\"1 1 0%\",auto:\"1 1 auto\",initial:\"0 1 auto\",none:\"none\"},flexBasis:({theme:e})=>({auto:\"auto\",\"1/2\":\"50%\",\"1/3\":\"33.333333%\",\"2/3\":\"66.666667%\",\"1/4\":\"25%\",\"2/4\":\"50%\",\"3/4\":\"75%\",\"1/5\":\"20%\",\"2/5\":\"40%\",\"3/5\":\"60%\",\"4/5\":\"80%\",\"1/6\":\"16.666667%\",\"2/6\":\"33.333333%\",\"3/6\":\"50%\",\"4/6\":\"66.666667%\",\"5/6\":\"83.333333%\",\"1/12\":\"8.333333%\",\"2/12\":\"16.666667%\",\"3/12\":\"25%\",\"4/12\":\"33.333333%\",\"5/12\":\"41.666667%\",\"6/12\":\"50%\",\"7/12\":\"58.333333%\",\"8/12\":\"66.666667%\",\"9/12\":\"75%\",\"10/12\":\"83.333333%\",\"11/12\":\"91.666667%\",full:\"100%\",...e(\"spacing\")}),flexGrow:{0:\"0\",DEFAULT:\"1\",...g},flexShrink:{0:\"0\",DEFAULT:\"1\",...g},fontFamily:{sans:[\"ui-sans-serif\",\"system-ui\",\"sans-serif\",'\"Apple Color Emoji\"','\"Segoe UI Emoji\"','\"Segoe UI Symbol\"','\"Noto Color Emoji\"'],serif:[\"ui-serif\",\"Georgia\",\"Cambria\",'\"Times New Roman\"',\"Times\",\"serif\"],mono:[\"ui-monospace\",\"SFMono-Regular\",\"Menlo\",\"Monaco\",\"Consolas\",'\"Liberation Mono\"','\"Courier New\"',\"monospace\"]},fontSize:{xs:[\"0.75rem\",{lineHeight:\"1rem\"}],sm:[\"0.875rem\",{lineHeight:\"1.25rem\"}],base:[\"1rem\",{lineHeight:\"1.5rem\"}],lg:[\"1.125rem\",{lineHeight:\"1.75rem\"}],xl:[\"1.25rem\",{lineHeight:\"1.75rem\"}],\"2xl\":[\"1.5rem\",{lineHeight:\"2rem\"}],\"3xl\":[\"1.875rem\",{lineHeight:\"2.25rem\"}],\"4xl\":[\"2.25rem\",{lineHeight:\"2.5rem\"}],\"5xl\":[\"3rem\",{lineHeight:\"1\"}],\"6xl\":[\"3.75rem\",{lineHeight:\"1\"}],\"7xl\":[\"4.5rem\",{lineHeight:\"1\"}],\"8xl\":[\"6rem\",{lineHeight:\"1\"}],\"9xl\":[\"8rem\",{lineHeight:\"1\"}]},fontWeight:{thin:\"100\",extralight:\"200\",light:\"300\",normal:\"400\",medium:\"500\",semibold:\"600\",bold:\"700\",extrabold:\"800\",black:\"900\"},gap:({theme:e})=>e(\"spacing\"),gradientColorStops:({theme:e})=>e(\"colors\"),gradientColorStopPositions:{\"0%\":\"0%\",\"5%\":\"5%\",\"10%\":\"10%\",\"15%\":\"15%\",\"20%\":\"20%\",\"25%\":\"25%\",\"30%\":\"30%\",\"35%\":\"35%\",\"40%\":\"40%\",\"45%\":\"45%\",\"50%\":\"50%\",\"55%\":\"55%\",\"60%\":\"60%\",\"65%\":\"65%\",\"70%\":\"70%\",\"75%\":\"75%\",\"80%\":\"80%\",\"85%\":\"85%\",\"90%\":\"90%\",\"95%\":\"95%\",\"100%\":\"100%\",...chunk_GFBUASX3_l},grayscale:{0:\"0\",DEFAULT:\"100%\",...chunk_GFBUASX3_l},gridAutoColumns:{auto:\"auto\",min:\"min-content\",max:\"max-content\",fr:\"minmax(0, 1fr)\"},gridAutoRows:{auto:\"auto\",min:\"min-content\",max:\"max-content\",fr:\"minmax(0, 1fr)\"},gridColumn:{auto:\"auto\",\"span-1\":\"span 1 / span 1\",\"span-2\":\"span 2 / span 2\",\"span-3\":\"span 3 / span 3\",\"span-4\":\"span 4 / span 4\",\"span-5\":\"span 5 / span 5\",\"span-6\":\"span 6 / span 6\",\"span-7\":\"span 7 / span 7\",\"span-8\":\"span 8 / span 8\",\"span-9\":\"span 9 / span 9\",\"span-10\":\"span 10 / span 10\",\"span-11\":\"span 11 / span 11\",\"span-12\":\"span 12 / span 12\",\"span-full\":\"1 / -1\"},gridColumnEnd:{auto:\"auto\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"10\",11:\"11\",12:\"12\",13:\"13\",...g},gridColumnStart:{auto:\"auto\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"10\",11:\"11\",12:\"12\",13:\"13\",...g},gridRow:{auto:\"auto\",\"span-1\":\"span 1 / span 1\",\"span-2\":\"span 2 / span 2\",\"span-3\":\"span 3 / span 3\",\"span-4\":\"span 4 / span 4\",\"span-5\":\"span 5 / span 5\",\"span-6\":\"span 6 / span 6\",\"span-7\":\"span 7 / span 7\",\"span-8\":\"span 8 / span 8\",\"span-9\":\"span 9 / span 9\",\"span-10\":\"span 10 / span 10\",\"span-11\":\"span 11 / span 11\",\"span-12\":\"span 12 / span 12\",\"span-full\":\"1 / -1\"},gridRowEnd:{auto:\"auto\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"10\",11:\"11\",12:\"12\",13:\"13\",...g},gridRowStart:{auto:\"auto\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"10\",11:\"11\",12:\"12\",13:\"13\",...g},gridTemplateColumns:{none:\"none\",subgrid:\"subgrid\",1:\"repeat(1, minmax(0, 1fr))\",2:\"repeat(2, minmax(0, 1fr))\",3:\"repeat(3, minmax(0, 1fr))\",4:\"repeat(4, minmax(0, 1fr))\",5:\"repeat(5, minmax(0, 1fr))\",6:\"repeat(6, minmax(0, 1fr))\",7:\"repeat(7, minmax(0, 1fr))\",8:\"repeat(8, minmax(0, 1fr))\",9:\"repeat(9, minmax(0, 1fr))\",10:\"repeat(10, minmax(0, 1fr))\",11:\"repeat(11, minmax(0, 1fr))\",12:\"repeat(12, minmax(0, 1fr))\",...L},gridTemplateRows:{none:\"none\",subgrid:\"subgrid\",1:\"repeat(1, minmax(0, 1fr))\",2:\"repeat(2, minmax(0, 1fr))\",3:\"repeat(3, minmax(0, 1fr))\",4:\"repeat(4, minmax(0, 1fr))\",5:\"repeat(5, minmax(0, 1fr))\",6:\"repeat(6, minmax(0, 1fr))\",7:\"repeat(7, minmax(0, 1fr))\",8:\"repeat(8, minmax(0, 1fr))\",9:\"repeat(9, minmax(0, 1fr))\",10:\"repeat(10, minmax(0, 1fr))\",11:\"repeat(11, minmax(0, 1fr))\",12:\"repeat(12, minmax(0, 1fr))\",...L},height:({theme:e})=>({auto:\"auto\",\"1/2\":\"50%\",\"1/3\":\"33.333333%\",\"2/3\":\"66.666667%\",\"1/4\":\"25%\",\"2/4\":\"50%\",\"3/4\":\"75%\",\"1/5\":\"20%\",\"2/5\":\"40%\",\"3/5\":\"60%\",\"4/5\":\"80%\",\"1/6\":\"16.666667%\",\"2/6\":\"33.333333%\",\"3/6\":\"50%\",\"4/6\":\"66.666667%\",\"5/6\":\"83.333333%\",full:\"100%\",screen:\"100vh\",svh:\"100svh\",lvh:\"100lvh\",dvh:\"100dvh\",min:\"min-content\",max:\"max-content\",fit:\"fit-content\",...e(\"spacing\")}),hueRotate:{0:\"0deg\",15:\"15deg\",30:\"30deg\",60:\"60deg\",90:\"90deg\",180:\"180deg\",...w},inset:({theme:e})=>({auto:\"auto\",\"1/2\":\"50%\",\"1/3\":\"33.333333%\",\"2/3\":\"66.666667%\",\"1/4\":\"25%\",\"2/4\":\"50%\",\"3/4\":\"75%\",full:\"100%\",...e(\"spacing\")}),invert:{0:\"0\",DEFAULT:\"100%\",...chunk_GFBUASX3_l},keyframes:{spin:{to:{transform:\"rotate(360deg)\"}},ping:{\"75%, 100%\":{transform:\"scale(2)\",opacity:\"0\"}},pulse:{\"50%\":{opacity:\".5\"}},bounce:{\"0%, 100%\":{transform:\"translateY(-25%)\",animationTimingFunction:\"cubic-bezier(0.8,0,1,1)\"},\"50%\":{transform:\"none\",animationTimingFunction:\"cubic-bezier(0,0,0.2,1)\"}}},letterSpacing:{tighter:\"-0.05em\",tight:\"-0.025em\",normal:\"0em\",wide:\"0.025em\",wider:\"0.05em\",widest:\"0.1em\"},lineHeight:{none:\"1\",tight:\"1.25\",snug:\"1.375\",normal:\"1.5\",relaxed:\"1.625\",loose:\"2\",3:\".75rem\",4:\"1rem\",5:\"1.25rem\",6:\"1.5rem\",7:\"1.75rem\",8:\"2rem\",9:\"2.25rem\",10:\"2.5rem\"},listStyleType:{none:\"none\",disc:\"disc\",decimal:\"decimal\"},listStyleImage:{none:\"none\"},margin:({theme:e})=>({auto:\"auto\",...e(\"spacing\")}),lineClamp:{1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",...g},maxHeight:({theme:e})=>({none:\"none\",full:\"100%\",screen:\"100vh\",svh:\"100svh\",lvh:\"100lvh\",dvh:\"100dvh\",min:\"min-content\",max:\"max-content\",fit:\"fit-content\",...e(\"spacing\")}),maxWidth:({theme:e})=>({none:\"none\",xs:\"20rem\",sm:\"24rem\",md:\"28rem\",lg:\"32rem\",xl:\"36rem\",\"2xl\":\"42rem\",\"3xl\":\"48rem\",\"4xl\":\"56rem\",\"5xl\":\"64rem\",\"6xl\":\"72rem\",\"7xl\":\"80rem\",full:\"100%\",min:\"min-content\",max:\"max-content\",fit:\"fit-content\",prose:\"65ch\",...e(\"spacing\")}),minHeight:({theme:e})=>({full:\"100%\",screen:\"100vh\",svh:\"100svh\",lvh:\"100lvh\",dvh:\"100dvh\",min:\"min-content\",max:\"max-content\",fit:\"fit-content\",...e(\"spacing\")}),minWidth:({theme:e})=>({full:\"100%\",min:\"min-content\",max:\"max-content\",fit:\"fit-content\",...e(\"spacing\")}),objectPosition:{bottom:\"bottom\",center:\"center\",left:\"left\",\"left-bottom\":\"left bottom\",\"left-top\":\"left top\",right:\"right\",\"right-bottom\":\"right bottom\",\"right-top\":\"right top\",top:\"top\"},opacity:{0:\"0\",5:\"0.05\",10:\"0.1\",15:\"0.15\",20:\"0.2\",25:\"0.25\",30:\"0.3\",35:\"0.35\",40:\"0.4\",45:\"0.45\",50:\"0.5\",55:\"0.55\",60:\"0.6\",65:\"0.65\",70:\"0.7\",75:\"0.75\",80:\"0.8\",85:\"0.85\",90:\"0.9\",95:\"0.95\",100:\"1\",...chunk_GFBUASX3_l},order:{first:\"-9999\",last:\"9999\",none:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"10\",11:\"11\",12:\"12\",...g},outlineColor:({theme:e})=>e(\"colors\"),outlineOffset:{0:\"0px\",1:\"1px\",2:\"2px\",4:\"4px\",8:\"8px\",...f},outlineWidth:{0:\"0px\",1:\"1px\",2:\"2px\",4:\"4px\",8:\"8px\",...f},padding:({theme:e})=>e(\"spacing\"),placeholderColor:({theme:e})=>e(\"colors\"),placeholderOpacity:({theme:e})=>e(\"opacity\"),ringColor:({theme:e})=>({DEFAULT:\"currentcolor\",...e(\"colors\")}),ringOffsetColor:({theme:e})=>e(\"colors\"),ringOffsetWidth:{0:\"0px\",1:\"1px\",2:\"2px\",4:\"4px\",8:\"8px\",...f},ringOpacity:({theme:e})=>({DEFAULT:\"0.5\",...e(\"opacity\")}),ringWidth:{DEFAULT:\"3px\",0:\"0px\",1:\"1px\",2:\"2px\",4:\"4px\",8:\"8px\",...f},rotate:{0:\"0deg\",1:\"1deg\",2:\"2deg\",3:\"3deg\",6:\"6deg\",12:\"12deg\",45:\"45deg\",90:\"90deg\",180:\"180deg\",...w},saturate:{0:\"0\",50:\".5\",100:\"1\",150:\"1.5\",200:\"2\",...chunk_GFBUASX3_l},scale:{0:\"0\",50:\".5\",75:\".75\",90:\".9\",95:\".95\",100:\"1\",105:\"1.05\",110:\"1.1\",125:\"1.25\",150:\"1.5\",...chunk_GFBUASX3_l},screens:{sm:\"40rem\",md:\"48rem\",lg:\"64rem\",xl:\"80rem\",\"2xl\":\"96rem\"},scrollMargin:({theme:e})=>e(\"spacing\"),scrollPadding:({theme:e})=>e(\"spacing\"),sepia:{0:\"0\",DEFAULT:\"100%\",...chunk_GFBUASX3_l},skew:{0:\"0deg\",1:\"1deg\",2:\"2deg\",3:\"3deg\",6:\"6deg\",12:\"12deg\",...w},space:({theme:e})=>e(\"spacing\"),spacing:{px:\"1px\",0:\"0px\",.5:\"0.125rem\",1:\"0.25rem\",1.5:\"0.375rem\",2:\"0.5rem\",2.5:\"0.625rem\",3:\"0.75rem\",3.5:\"0.875rem\",4:\"1rem\",5:\"1.25rem\",6:\"1.5rem\",7:\"1.75rem\",8:\"2rem\",9:\"2.25rem\",10:\"2.5rem\",11:\"2.75rem\",12:\"3rem\",14:\"3.5rem\",16:\"4rem\",20:\"5rem\",24:\"6rem\",28:\"7rem\",32:\"8rem\",36:\"9rem\",40:\"10rem\",44:\"11rem\",48:\"12rem\",52:\"13rem\",56:\"14rem\",60:\"15rem\",64:\"16rem\",72:\"18rem\",80:\"20rem\",96:\"24rem\"},stroke:({theme:e})=>({none:\"none\",...e(\"colors\")}),strokeWidth:{0:\"0\",1:\"1\",2:\"2\",...g},supports:{},data:{},textColor:({theme:e})=>e(\"colors\"),textDecorationColor:({theme:e})=>e(\"colors\"),textDecorationThickness:{auto:\"auto\",\"from-font\":\"from-font\",0:\"0px\",1:\"1px\",2:\"2px\",4:\"4px\",8:\"8px\",...f},textIndent:({theme:e})=>e(\"spacing\"),textOpacity:({theme:e})=>e(\"opacity\"),textUnderlineOffset:{auto:\"auto\",0:\"0px\",1:\"1px\",2:\"2px\",4:\"4px\",8:\"8px\",...f},transformOrigin:{center:\"center\",top:\"top\",\"top-right\":\"top right\",right:\"right\",\"bottom-right\":\"bottom right\",bottom:\"bottom\",\"bottom-left\":\"bottom left\",left:\"left\",\"top-left\":\"top left\"},transitionDelay:{0:\"0s\",75:\"75ms\",100:\"100ms\",150:\"150ms\",200:\"200ms\",300:\"300ms\",500:\"500ms\",700:\"700ms\",1e3:\"1000ms\",...O},transitionDuration:{DEFAULT:\"150ms\",0:\"0s\",75:\"75ms\",100:\"100ms\",150:\"150ms\",200:\"200ms\",300:\"300ms\",500:\"500ms\",700:\"700ms\",1e3:\"1000ms\",...O},transitionProperty:{none:\"none\",all:\"all\",DEFAULT:\"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter\",colors:\"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke\",opacity:\"opacity\",shadow:\"box-shadow\",transform:\"transform\"},transitionTimingFunction:{DEFAULT:\"cubic-bezier(0.4, 0, 0.2, 1)\",linear:\"linear\",in:\"cubic-bezier(0.4, 0, 1, 1)\",out:\"cubic-bezier(0, 0, 0.2, 1)\",\"in-out\":\"cubic-bezier(0.4, 0, 0.2, 1)\"},translate:({theme:e})=>({\"1/2\":\"50%\",\"1/3\":\"33.333333%\",\"2/3\":\"66.666667%\",\"1/4\":\"25%\",\"2/4\":\"50%\",\"3/4\":\"75%\",full:\"100%\",...e(\"spacing\")}),size:({theme:e})=>({auto:\"auto\",\"1/2\":\"50%\",\"1/3\":\"33.333333%\",\"2/3\":\"66.666667%\",\"1/4\":\"25%\",\"2/4\":\"50%\",\"3/4\":\"75%\",\"1/5\":\"20%\",\"2/5\":\"40%\",\"3/5\":\"60%\",\"4/5\":\"80%\",\"1/6\":\"16.666667%\",\"2/6\":\"33.333333%\",\"3/6\":\"50%\",\"4/6\":\"66.666667%\",\"5/6\":\"83.333333%\",\"1/12\":\"8.333333%\",\"2/12\":\"16.666667%\",\"3/12\":\"25%\",\"4/12\":\"33.333333%\",\"5/12\":\"41.666667%\",\"6/12\":\"50%\",\"7/12\":\"58.333333%\",\"8/12\":\"66.666667%\",\"9/12\":\"75%\",\"10/12\":\"83.333333%\",\"11/12\":\"91.666667%\",full:\"100%\",min:\"min-content\",max:\"max-content\",fit:\"fit-content\",...e(\"spacing\")}),width:({theme:e})=>({auto:\"auto\",\"1/2\":\"50%\",\"1/3\":\"33.333333%\",\"2/3\":\"66.666667%\",\"1/4\":\"25%\",\"2/4\":\"50%\",\"3/4\":\"75%\",\"1/5\":\"20%\",\"2/5\":\"40%\",\"3/5\":\"60%\",\"4/5\":\"80%\",\"1/6\":\"16.666667%\",\"2/6\":\"33.333333%\",\"3/6\":\"50%\",\"4/6\":\"66.666667%\",\"5/6\":\"83.333333%\",\"1/12\":\"8.333333%\",\"2/12\":\"16.666667%\",\"3/12\":\"25%\",\"4/12\":\"33.333333%\",\"5/12\":\"41.666667%\",\"6/12\":\"50%\",\"7/12\":\"58.333333%\",\"8/12\":\"66.666667%\",\"9/12\":\"75%\",\"10/12\":\"83.333333%\",\"11/12\":\"91.666667%\",full:\"100%\",screen:\"100vw\",svw:\"100svw\",lvw:\"100lvw\",dvw:\"100dvw\",min:\"min-content\",max:\"max-content\",fit:\"fit-content\",...e(\"spacing\")}),willChange:{auto:\"auto\",scroll:\"scroll-position\",contents:\"contents\",transform:\"transform\"},zIndex:{auto:\"auto\",0:\"0\",10:\"10\",20:\"20\",30:\"30\",40:\"40\",50:\"50\",...g}};\n\n;// ./node_modules/tailwindcss/dist/chunk-MEY3PWYT.mjs\nvar Qt=\"4.1.17\";var ze=92,et=47,tt=42,Xt=34,er=39,Wi=58,rt=59,le=10,it=13,Fe=32,We=9,tr=123,bt=125,Ct=40,rr=41,Bi=91,Yi=93,ir=45,xt=64,Gi=33;function Ce(e,r){let i=r?.from?{file:r.from,code:e}:null;e[0]===\"\\uFEFF\"&&(e=\" \"+e.slice(1));let t=[],n=[],s=[],a=null,p=null,u=\"\",f=\"\",m=0,d;for(let c=0;c<e.length;c++){let w=e.charCodeAt(c);if(!(w===it&&(d=e.charCodeAt(c+1),d===le)))if(w===ze)u===\"\"&&(m=c),u+=e.slice(c,c+2),c+=1;else if(w===et&&e.charCodeAt(c+1)===tt){let h=c;for(let x=c+2;x<e.length;x++)if(d=e.charCodeAt(x),d===ze)x+=1;else if(d===tt&&e.charCodeAt(x+1)===et){c=x+1;break}let y=e.slice(h,c+1);if(y.charCodeAt(2)===Gi){let x=nt(y.slice(2,-2));n.push(x),i&&(x.src=[i,h,c+1],x.dst=[i,h,c+1])}}else if(w===er||w===Xt){let h=nr(e,c,w);u+=e.slice(c,h+1),c=h}else{if((w===Fe||w===le||w===We)&&(d=e.charCodeAt(c+1))&&(d===Fe||d===le||d===We||d===it&&(d=e.charCodeAt(c+2))&&d==le))continue;if(w===le){if(u.length===0)continue;d=u.charCodeAt(u.length-1),d!==Fe&&d!==le&&d!==We&&(u+=\" \")}else if(w===ir&&e.charCodeAt(c+1)===ir&&u.length===0){let h=\"\",y=c,x=-1;for(let A=c+2;A<e.length;A++)if(d=e.charCodeAt(A),d===ze)A+=1;else if(d===er||d===Xt)A=nr(e,A,d);else if(d===et&&e.charCodeAt(A+1)===tt){for(let k=A+2;k<e.length;k++)if(d=e.charCodeAt(k),d===ze)k+=1;else if(d===tt&&e.charCodeAt(k+1)===et){A=k+1;break}}else if(x===-1&&d===Wi)x=u.length+A-y;else if(d===rt&&h.length===0){u+=e.slice(y,A),c=A;break}else if(d===Ct)h+=\")\";else if(d===Bi)h+=\"]\";else if(d===tr)h+=\"}\";else if((d===bt||e.length-1===A)&&h.length===0){c=A-1,u+=e.slice(y,A);break}else(d===rr||d===Yi||d===bt)&&h.length>0&&e[A]===h[h.length-1]&&(h=h.slice(0,-1));let V=At(u,x);if(!V)throw new Error(\"Invalid custom property, expected a value\");i&&(V.src=[i,y,c],V.dst=[i,y,c]),a?a.nodes.push(V):t.push(V),u=\"\"}else if(w===rt&&u.charCodeAt(0)===xt)p=Be(u),i&&(p.src=[i,m,c],p.dst=[i,m,c]),a?a.nodes.push(p):t.push(p),u=\"\",p=null;else if(w===rt&&f[f.length-1]!==\")\"){let h=At(u);if(!h){if(u.length===0)continue;throw new Error(`Invalid declaration: \\`${u.trim()}\\``)}i&&(h.src=[i,m,c],h.dst=[i,m,c]),a?a.nodes.push(h):t.push(h),u=\"\"}else if(w===tr&&f[f.length-1]!==\")\")f+=\"}\",p=chunk_MEY3PWYT_J(u.trim()),i&&(p.src=[i,m,c],p.dst=[i,m,c]),a&&a.nodes.push(p),s.push(a),a=p,u=\"\",p=null;else if(w===bt&&f[f.length-1]!==\")\"){if(f===\"\")throw new Error(\"Missing opening {\");if(f=f.slice(0,-1),u.length>0)if(u.charCodeAt(0)===xt)p=Be(u),i&&(p.src=[i,m,c],p.dst=[i,m,c]),a?a.nodes.push(p):t.push(p),u=\"\",p=null;else{let y=u.indexOf(\":\");if(a){let x=At(u,y);if(!x)throw new Error(`Invalid declaration: \\`${u.trim()}\\``);i&&(x.src=[i,m,c],x.dst=[i,m,c]),a.nodes.push(x)}}let h=s.pop()??null;h===null&&a&&t.push(a),a=h,u=\"\",p=null}else if(w===Ct)f+=\")\",u+=\"(\";else if(w===rr){if(f[f.length-1]!==\")\")throw new Error(\"Missing opening (\");f=f.slice(0,-1),u+=\")\"}else{if(u.length===0&&(w===Fe||w===le||w===We))continue;u===\"\"&&(m=c),u+=String.fromCharCode(w)}}}if(u.charCodeAt(0)===xt){let c=Be(u);i&&(c.src=[i,m,e.length],c.dst=[i,m,e.length]),t.push(c)}if(f.length>0&&a){if(a.kind===\"rule\")throw new Error(`Missing closing } at ${a.selector}`);if(a.kind===\"at-rule\")throw new Error(`Missing closing } at ${a.name} ${a.params}`)}return n.length>0?n.concat(t):t}function Be(e,r=[]){let i=e,t=\"\";for(let n=5;n<e.length;n++){let s=e.charCodeAt(n);if(s===Fe||s===We||s===Ct){i=e.slice(0,n),t=e.slice(n);break}}return chunk_MEY3PWYT_F(i.trim(),t.trim(),r)}function At(e,r=e.indexOf(\":\")){if(r===-1)return null;let i=e.indexOf(\"!important\",r+1);return o(e.slice(0,r).trim(),e.slice(r+1,i===-1?e.length:i).trim(),i!==-1)}function nr(e,r,i){let t;for(let n=r+1;n<e.length;n++)if(t=e.charCodeAt(n),t===ze)n+=1;else{if(t===i)return n;if(t===rt&&(e.charCodeAt(n+1)===le||e.charCodeAt(n+1)===it&&e.charCodeAt(n+2)===le))throw new Error(`Unterminated string: ${e.slice(r,n+1)+String.fromCharCode(i)}`);if(t===le||t===it&&e.charCodeAt(n+1)===le)throw new Error(`Unterminated string: ${e.slice(r,n)+String.fromCharCode(i)}`)}return r}function we(e){if(arguments.length===0)throw new TypeError(\"`CSS.escape` requires an argument.\");let r=String(e),i=r.length,t=-1,n,s=\"\",a=r.charCodeAt(0);if(i===1&&a===45)return\"\\\\\"+r;for(;++t<i;){if(n=r.charCodeAt(t),n===0){s+=\"\\uFFFD\";continue}if(n>=1&&n<=31||n===127||t===0&&n>=48&&n<=57||t===1&&n>=48&&n<=57&&a===45){s+=\"\\\\\"+n.toString(16)+\" \";continue}if(n>=128||n===45||n===95||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122){s+=r.charAt(t);continue}s+=\"\\\\\"+r.charAt(t)}return s}function $e(e){return e.replace(/\\\\([\\dA-Fa-f]{1,6}[\\t\\n\\f\\r ]?|[\\S\\s])/g,r=>r.length>2?String.fromCodePoint(Number.parseInt(r.slice(1).trim(),16)):r[1])}var or=new Map([[\"--font\",[\"--font-weight\",\"--font-size\"]],[\"--inset\",[\"--inset-shadow\",\"--inset-ring\"]],[\"--text\",[\"--text-color\",\"--text-decoration-color\",\"--text-decoration-thickness\",\"--text-indent\",\"--text-shadow\",\"--text-underline-offset\"]],[\"--grid-column\",[\"--grid-column-start\",\"--grid-column-end\"]],[\"--grid-row\",[\"--grid-row-start\",\"--grid-row-end\"]]]);function ar(e,r){return(or.get(r)??[]).some(i=>e===i||e.startsWith(`${i}-`))}var at=class{constructor(r=new Map,i=new Set([])){this.values=r;this.keyframes=i}prefix=null;get size(){return this.values.size}add(r,i,t=0,n){if(r.endsWith(\"-*\")){if(i!==\"initial\")throw new Error(`Invalid theme value \\`${i}\\` for namespace \\`${r}\\``);r===\"--*\"?this.values.clear():this.clearNamespace(r.slice(0,-2),0)}if(t&4){let s=this.values.get(r);if(s&&!(s.options&4))return}i===\"initial\"?this.values.delete(r):this.values.set(r,{value:i,options:t,src:n})}keysInNamespaces(r){let i=[];for(let t of r){let n=`${t}-`;for(let s of this.values.keys())s.startsWith(n)&&s.indexOf(\"--\",2)===-1&&(ar(s,t)||i.push(s.slice(n.length)))}return i}get(r){for(let i of r){let t=this.values.get(i);if(t)return t.value}return null}hasDefault(r){return(this.getOptions(r)&4)===4}getOptions(r){return r=$e(this.#r(r)),this.values.get(r)?.options??0}entries(){return this.prefix?Array.from(this.values,r=>(r[0]=this.prefixKey(r[0]),r)):this.values.entries()}prefixKey(r){return this.prefix?`--${this.prefix}-${r.slice(2)}`:r}#r(r){return this.prefix?`--${r.slice(3+this.prefix.length)}`:r}clearNamespace(r,i){let t=or.get(r)??[];e:for(let n of this.values.keys())if(n.startsWith(r)){if(i!==0&&(this.getOptions(n)&i)!==i)continue;for(let s of t)if(n.startsWith(s))continue e;this.values.delete(n)}}#e(r,i){for(let t of i){let n=r!==null?`${t}-${r}`:t;if(!this.values.has(n))if(r!==null&&r.includes(\".\")){if(n=`${t}-${r.replaceAll(\".\",\"_\")}`,!this.values.has(n))continue}else continue;if(!ar(n,t))return n}return null}#t(r){let i=this.values.get(r);if(!i)return null;let t=null;return i.options&2&&(t=i.value),`var(${we(this.prefixKey(r))}${t?`, ${t}`:\"\"})`}markUsedVariable(r){let i=$e(this.#r(r)),t=this.values.get(i);if(!t)return!1;let n=t.options&16;return t.options|=16,!n}resolve(r,i,t=0){let n=this.#e(r,i);if(!n)return null;let s=this.values.get(n);return(t|s.options)&1?s.value:this.#t(n)}resolveValue(r,i){let t=this.#e(r,i);return t?this.values.get(t).value:null}resolveWith(r,i,t=[]){let n=this.#e(r,i);if(!n)return null;let s={};for(let p of t){let u=`${n}${p}`,f=this.values.get(u);f&&(f.options&1?s[p]=f.value:s[p]=this.#t(u))}let a=this.values.get(n);return a.options&1?[a.value,s]:[this.#t(n),s]}namespace(r){let i=new Map,t=`${r}-`;for(let[n,s]of this.values)n===r?i.set(null,s.value):n.startsWith(`${t}-`)?i.set(n.slice(r.length),s.value):n.startsWith(t)&&i.set(n.slice(t.length),s.value);return i}addKeyframes(r){this.keyframes.add(r)}getKeyframes(){return Array.from(this.keyframes)}};var chunk_MEY3PWYT_K=class extends Map{constructor(i){super();this.factory=i}get(i){let t=super.get(i);return t===void 0&&(t=this.factory(i,this),this.set(i,t)),t}};function ie(e){return{kind:\"word\",value:e}}function qi(e,r){return{kind:\"function\",value:e,nodes:r}}function Zi(e){return{kind:\"separator\",value:e}}function chunk_MEY3PWYT_Z(e){let r=\"\";for(let i of e)switch(i.kind){case\"word\":case\"separator\":{r+=i.value;break}case\"function\":r+=i.value+\"(\"+chunk_MEY3PWYT_Z(i.nodes)+\")\"}return r}var lr=92,Hi=41,sr=58,ur=44,Ji=34,fr=61,cr=62,pr=60,dr=10,Qi=40,Xi=39,en=47,mr=32,gr=9;function chunk_MEY3PWYT_B(e){e=e.replaceAll(`\\r\n`,`\n`);let r=[],i=[],t=null,n=\"\",s;for(let a=0;a<e.length;a++){let p=e.charCodeAt(a);switch(p){case lr:{n+=e[a]+e[a+1],a++;break}case en:{if(n.length>0){let f=ie(n);t?t.nodes.push(f):r.push(f),n=\"\"}let u=ie(e[a]);t?t.nodes.push(u):r.push(u);break}case sr:case ur:case fr:case cr:case pr:case dr:case mr:case gr:{if(n.length>0){let d=ie(n);t?t.nodes.push(d):r.push(d),n=\"\"}let u=a,f=a+1;for(;f<e.length&&(s=e.charCodeAt(f),!(s!==sr&&s!==ur&&s!==fr&&s!==cr&&s!==pr&&s!==dr&&s!==mr&&s!==gr));f++);a=f-1;let m=Zi(e.slice(u,f));t?t.nodes.push(m):r.push(m);break}case Xi:case Ji:{let u=a;for(let f=a+1;f<e.length;f++)if(s=e.charCodeAt(f),s===lr)f+=1;else if(s===p){a=f;break}n+=e.slice(u,a+1);break}case Qi:{let u=qi(n,[]);n=\"\",t?t.nodes.push(u):r.push(u),i.push(u),t=u;break}case Hi:{let u=i.pop();if(n.length>0){let f=ie(n);u?.nodes.push(f),n=\"\"}i.length>0?t=i[i.length-1]:t=null;break}default:n+=String.fromCharCode(p)}}return n.length>0&&r.push(ie(n)),r}var St=(a=>(a[a.Continue=0]=\"Continue\",a[a.Skip=1]=\"Skip\",a[a.Stop=2]=\"Stop\",a[a.Replace=3]=\"Replace\",a[a.ReplaceSkip=4]=\"ReplaceSkip\",a[a.ReplaceStop=5]=\"ReplaceStop\",a))(St||{}),chunk_MEY3PWYT_R={Continue:{kind:0},Skip:{kind:1},Stop:{kind:2},Replace:e=>({kind:3,nodes:Array.isArray(e)?e:[e]}),ReplaceSkip:e=>({kind:4,nodes:Array.isArray(e)?e:[e]}),ReplaceStop:e=>({kind:5,nodes:Array.isArray(e)?e:[e]})};function chunk_MEY3PWYT_I(e,r){typeof r==\"function\"?hr(e,r):hr(e,r.enter,r.exit)}function hr(e,r=()=>chunk_MEY3PWYT_R.Continue,i=()=>chunk_MEY3PWYT_R.Continue){let t=[[e,0,null]],n={parent:null,depth:0,path(){let s=[];for(let a=1;a<t.length;a++){let p=t[a][2];p&&s.push(p)}return s}};for(;t.length>0;){let s=t.length-1,a=t[s],p=a[0],u=a[1],f=a[2];if(u>=p.length){t.pop();continue}if(n.parent=f,n.depth=s,u>=0){let w=p[u],h=r(w,n)??chunk_MEY3PWYT_R.Continue;switch(h.kind){case 0:{w.nodes&&w.nodes.length>0&&t.push([w.nodes,0,w]),a[1]=~u;continue}case 2:return;case 1:{a[1]=~u;continue}case 3:{p.splice(u,1,...h.nodes);continue}case 5:{p.splice(u,1,...h.nodes);return}case 4:{p.splice(u,1,...h.nodes),a[1]+=h.nodes.length;continue}default:throw new Error(`Invalid \\`WalkAction.${St[h.kind]??`Unknown(${h.kind})`}\\` in enter.`)}}let m=~u,d=p[m],c=i(d,n)??chunk_MEY3PWYT_R.Continue;switch(c.kind){case 0:a[1]=m+1;continue;case 2:return;case 3:{p.splice(m,1,...c.nodes),a[1]=m+c.nodes.length;continue}case 5:{p.splice(m,1,...c.nodes);return}case 4:{p.splice(m,1,...c.nodes),a[1]=m+c.nodes.length;continue}default:throw new Error(`Invalid \\`WalkAction.${St[c.kind]??`Unknown(${c.kind})`}\\` in exit.`)}}}function ot(e){let r=[];return chunk_MEY3PWYT_I(chunk_MEY3PWYT_B(e),i=>{if(!(i.kind!==\"function\"||i.value!==\"var\"))return chunk_MEY3PWYT_I(i.nodes,t=>{t.kind!==\"word\"||t.value[0]!==\"-\"||t.value[1]!==\"-\"||r.push(t.value)}),chunk_MEY3PWYT_R.Skip}),r}var tn=64;function chunk_MEY3PWYT_G(e,r=[]){return{kind:\"rule\",selector:e,nodes:r}}function chunk_MEY3PWYT_F(e,r=\"\",i=[]){return{kind:\"at-rule\",name:e,params:r,nodes:i}}function chunk_MEY3PWYT_J(e,r=[]){return e.charCodeAt(0)===tn?Be(e,r):chunk_MEY3PWYT_G(e,r)}function o(e,r,i=!1){return{kind:\"declaration\",property:e,value:r,important:i}}function nt(e){return{kind:\"comment\",value:e}}function fe(e,r){return{kind:\"context\",context:e,nodes:r}}function chunk_MEY3PWYT_W(e){return{kind:\"at-root\",nodes:e}}function chunk_MEY3PWYT_ee(e){switch(e.kind){case\"rule\":return{kind:e.kind,selector:e.selector,nodes:e.nodes.map(chunk_MEY3PWYT_ee),src:e.src,dst:e.dst};case\"at-rule\":return{kind:e.kind,name:e.name,params:e.params,nodes:e.nodes.map(chunk_MEY3PWYT_ee),src:e.src,dst:e.dst};case\"at-root\":return{kind:e.kind,nodes:e.nodes.map(chunk_MEY3PWYT_ee),src:e.src,dst:e.dst};case\"context\":return{kind:e.kind,context:{...e.context},nodes:e.nodes.map(chunk_MEY3PWYT_ee),src:e.src,dst:e.dst};case\"declaration\":return{kind:e.kind,property:e.property,value:e.value,important:e.important,src:e.src,dst:e.dst};case\"comment\":return{kind:e.kind,value:e.value,src:e.src,dst:e.dst};default:throw new Error(`Unknown node kind: ${e.kind}`)}}function Ge(e){return{depth:e.depth,get context(){let r={};for(let i of e.path())i.kind===\"context\"&&Object.assign(r,i.context);return Object.defineProperty(this,\"context\",{value:r}),r},get parent(){let r=this.path().pop()??null;return Object.defineProperty(this,\"parent\",{value:r}),r},path(){return e.path().filter(r=>r.kind!==\"context\")}}}function Se(e,r,i=3){let t=[],n=new Set,s=new chunk_MEY3PWYT_K(()=>new Set),a=new chunk_MEY3PWYT_K(()=>new Set),p=new Set,u=new Set,f=[],m=[],d=new chunk_MEY3PWYT_K(()=>new Set);function c(h,y,x={},V=0){if(h.kind===\"declaration\"){if(h.property===\"--tw-sort\"||h.value===void 0||h.value===null)return;if(x.theme&&h.property[0]===\"-\"&&h.property[1]===\"-\"){if(h.value===\"initial\"){h.value=void 0;return}x.keyframes||s.get(y).add(h)}if(h.value.includes(\"var(\"))if(x.theme&&h.property[0]===\"-\"&&h.property[1]===\"-\")for(let A of ot(h.value))d.get(A).add(h.property);else r.trackUsedVariables(h.value);if(h.property===\"animation\")for(let A of vr(h.value))u.add(A);i&2&&h.value.includes(\"color-mix(\")&&a.get(y).add(h),y.push(h)}else if(h.kind===\"rule\"){let A=[];for(let E of h.nodes)c(E,A,x,V+1);let k={},U=new Set;for(let E of A){if(E.kind!==\"declaration\")continue;let O=`${E.property}:${E.value}:${E.important}`;k[O]??=[],k[O].push(E)}for(let E in k)for(let O=0;O<k[E].length-1;++O)U.add(k[E][O]);if(U.size>0&&(A=A.filter(E=>!U.has(E))),A.length===0)return;h.selector===\"&\"?y.push(...A):y.push({...h,nodes:A})}else if(h.kind===\"at-rule\"&&h.name===\"@property\"&&V===0){if(n.has(h.params))return;if(i&1){let k=h.params,U=null,E=!1;for(let j of h.nodes)j.kind===\"declaration\"&&(j.property===\"initial-value\"?U=j.value:j.property===\"inherits\"&&(E=j.value===\"true\"));let O=o(k,U??\"initial\");O.src=h.src,E?f.push(O):m.push(O)}n.add(h.params);let A={...h,nodes:[]};for(let k of h.nodes)c(k,A.nodes,x,V+1);y.push(A)}else if(h.kind===\"at-rule\"){h.name===\"@keyframes\"&&(x={...x,keyframes:!0});let A={...h,nodes:[]};for(let k of h.nodes)c(k,A.nodes,x,V+1);h.name===\"@keyframes\"&&x.theme&&p.add(A),(A.nodes.length>0||A.name===\"@layer\"||A.name===\"@charset\"||A.name===\"@custom-media\"||A.name===\"@namespace\"||A.name===\"@import\")&&y.push(A)}else if(h.kind===\"at-root\")for(let A of h.nodes){let k=[];c(A,k,x,0);for(let U of k)t.push(U)}else if(h.kind===\"context\"){if(h.context.reference)return;for(let A of h.nodes)c(A,y,{...x,...h.context},V)}else h.kind===\"comment\"&&y.push(h)}let w=[];for(let h of e)c(h,w,{},0);e:for(let[h,y]of s)for(let x of y){if(wr(x.property,r.theme,d)){if(x.property.startsWith(r.theme.prefixKey(\"--animate-\")))for(let k of vr(x.value))u.add(k);continue}let A=h.indexOf(x);if(h.splice(A,1),h.length===0){let k=rn(w,U=>U.kind===\"rule\"&&U.nodes===h);if(!k||k.length===0)continue e;k.unshift({kind:\"at-root\",nodes:w});do{let U=k.pop();if(!U)break;let E=k[k.length-1];if(!E||E.kind!==\"at-root\"&&E.kind!==\"at-rule\")break;let O=E.nodes.indexOf(U);if(O===-1)break;E.nodes.splice(O,1)}while(!0);continue e}}for(let h of p)if(!u.has(h.params)){let y=t.indexOf(h);t.splice(y,1)}if(w=w.concat(t),i&2)for(let[h,y]of a)for(let x of y){let V=h.indexOf(x);if(V===-1||x.value==null)continue;let A=chunk_MEY3PWYT_B(x.value),k=!1;if(chunk_MEY3PWYT_I(A,O=>{if(O.kind!==\"function\"||O.value!==\"color-mix\")return;let j=!1,_=!1;if(chunk_MEY3PWYT_I(O.nodes,M=>{if(M.kind==\"word\"&&M.value.toLowerCase()===\"currentcolor\"){_=!0,k=!0;return}let Y=M,q=null,ne=new Set;do{if(Y.kind!==\"function\"||Y.value!==\"var\")return;let ae=Y.nodes[0];if(!ae||ae.kind!==\"word\")return;let l=ae.value;if(ne.has(l)){j=!0;return}if(ne.add(l),k=!0,q=r.theme.resolveValue(null,[ae.value]),!q){j=!0;return}if(q.toLowerCase()===\"currentcolor\"){_=!0;return}q.startsWith(\"var(\")?Y=chunk_MEY3PWYT_B(q)[0]:Y=null}while(Y);return chunk_MEY3PWYT_R.Replace({kind:\"word\",value:q})}),j||_){let M=O.nodes.findIndex(q=>q.kind===\"separator\"&&q.value.trim().includes(\",\"));if(M===-1)return;let Y=O.nodes.length>M?O.nodes[M+1]:null;return Y?chunk_MEY3PWYT_R.Replace(Y):void 0}else if(k){let M=O.nodes[2];M.kind===\"word\"&&(M.value===\"oklab\"||M.value===\"oklch\"||M.value===\"lab\"||M.value===\"lch\")&&(M.value=\"srgb\")}}),!k)continue;let U={...x,value:chunk_MEY3PWYT_Z(A)},E=chunk_MEY3PWYT_J(\"@supports (color: color-mix(in lab, red, red))\",[x]);E.src=x.src,h.splice(V,1,U,E)}if(i&1){let h=[];if(f.length>0){let y=chunk_MEY3PWYT_J(\":root, :host\",f);y.src=f[0].src,h.push(y)}if(m.length>0){let y=chunk_MEY3PWYT_J(\"*, ::before, ::after, ::backdrop\",m);y.src=m[0].src,h.push(y)}if(h.length>0){let y=w.findIndex(A=>!(A.kind===\"comment\"||A.kind===\"at-rule\"&&(A.name===\"@charset\"||A.name===\"@import\"))),x=chunk_MEY3PWYT_F(\"@layer\",\"properties\",[]);x.src=h[0].src,w.splice(y<0?w.length:y,0,x);let V=chunk_MEY3PWYT_J(\"@layer properties\",[chunk_MEY3PWYT_F(\"@supports\",\"((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b))))\",h)]);V.src=h[0].src,V.nodes[0].src=h[0].src,w.push(V)}}return w}function chunk_MEY3PWYT_re(e,r){let i=0,t={file:null,code:\"\"};function n(a,p=0){let u=\"\",f=\"  \".repeat(p);if(a.kind===\"declaration\"){if(u+=`${f}${a.property}: ${a.value}${a.important?\" !important\":\"\"};\n`,r){i+=f.length;let m=i;i+=a.property.length,i+=2,i+=a.value?.length??0,a.important&&(i+=11);let d=i;i+=2,a.dst=[t,m,d]}}else if(a.kind===\"rule\"){if(u+=`${f}${a.selector} {\n`,r){i+=f.length;let m=i;i+=a.selector.length,i+=1;let d=i;a.dst=[t,m,d],i+=2}for(let m of a.nodes)u+=n(m,p+1);u+=`${f}}\n`,r&&(i+=f.length,i+=2)}else if(a.kind===\"at-rule\"){if(a.nodes.length===0){let m=`${f}${a.name} ${a.params};\n`;if(r){i+=f.length;let d=i;i+=a.name.length,i+=1,i+=a.params.length;let c=i;i+=2,a.dst=[t,d,c]}return m}if(u+=`${f}${a.name}${a.params?` ${a.params} `:\" \"}{\n`,r){i+=f.length;let m=i;i+=a.name.length,a.params&&(i+=1,i+=a.params.length),i+=1;let d=i;a.dst=[t,m,d],i+=2}for(let m of a.nodes)u+=n(m,p+1);u+=`${f}}\n`,r&&(i+=f.length,i+=2)}else if(a.kind===\"comment\"){if(u+=`${f}/*${a.value}*/\n`,r){i+=f.length;let m=i;i+=2+a.value.length+2;let d=i;a.dst=[t,m,d],i+=1}}else if(a.kind===\"context\"||a.kind===\"at-root\")return\"\";return u}let s=\"\";for(let a of e)s+=n(a,0);return t.code=s,s}function rn(e,r){let i=[];return chunk_MEY3PWYT_I(e,(t,n)=>{if(r(t))return i=n.path(),i.push(t),chunk_MEY3PWYT_R.Stop}),i}function wr(e,r,i,t=new Set){if(t.has(e)||(t.add(e),r.getOptions(e)&24))return!0;{let s=i.get(e)??[];for(let a of s)if(wr(a,r,i,t))return!0}return!1}function vr(e){return e.split(/[\\s,]+/)}function ye(e){if(e.indexOf(\"(\")===-1)return Pe(e);let r=chunk_MEY3PWYT_B(e);return Vt(r),e=chunk_MEY3PWYT_Z(r),e=oe(e),e}function Pe(e,r=!1){let i=\"\";for(let t=0;t<e.length;t++){let n=e[t];n===\"\\\\\"&&e[t+1]===\"_\"?(i+=\"_\",t+=1):n===\"_\"&&!r?i+=\" \":i+=n}return i}function Vt(e){for(let r of e)switch(r.kind){case\"function\":{if(r.value===\"url\"||r.value.endsWith(\"_url\")){r.value=Pe(r.value);break}if(r.value===\"var\"||r.value.endsWith(\"_var\")||r.value===\"theme\"||r.value.endsWith(\"_theme\")){r.value=Pe(r.value);for(let i=0;i<r.nodes.length;i++){if(i==0&&r.nodes[i].kind===\"word\"){r.nodes[i].value=Pe(r.nodes[i].value,!0);continue}Vt([r.nodes[i]])}break}r.value=Pe(r.value),Vt(r.nodes);break}case\"separator\":case\"word\":{r.value=Pe(r.value);break}default:nn(r)}}function nn(e){throw new Error(`Unexpected value: ${e}`)}var Nt=new Uint8Array(256);function chunk_MEY3PWYT_ge(e){let r=0,i=e.length;for(let t=0;t<i;t++){let n=e.charCodeAt(t);switch(n){case 92:t+=1;break;case 39:case 34:for(;++t<i;){let s=e.charCodeAt(t);if(s===92){t+=1;continue}if(s===n)break}break;case 40:Nt[r]=41,r++;break;case 91:Nt[r]=93,r++;break;case 123:break;case 93:case 125:case 41:if(r===0)return!1;r>0&&n===Nt[r-1]&&r--;break;case 59:if(r===0)return!1;break}}return!0}var an=58,yr=45,kr=97,br=122;function xr(e){switch(e.kind){case\"arbitrary\":return{kind:e.kind,property:e.property,value:e.value,modifier:e.modifier?{kind:e.modifier.kind,value:e.modifier.value}:null,variants:e.variants.map(Ie),important:e.important,raw:e.raw};case\"static\":return{kind:e.kind,root:e.root,variants:e.variants.map(Ie),important:e.important,raw:e.raw};case\"functional\":return{kind:e.kind,root:e.root,value:e.value?e.value.kind===\"arbitrary\"?{kind:e.value.kind,dataType:e.value.dataType,value:e.value.value}:{kind:e.value.kind,value:e.value.value,fraction:e.value.fraction}:null,modifier:e.modifier?{kind:e.modifier.kind,value:e.modifier.value}:null,variants:e.variants.map(Ie),important:e.important,raw:e.raw};default:throw new Error(\"Unknown candidate kind\")}}function Ie(e){switch(e.kind){case\"arbitrary\":return{kind:e.kind,selector:e.selector,relative:e.relative};case\"static\":return{kind:e.kind,root:e.root};case\"functional\":return{kind:e.kind,root:e.root,value:e.value?{kind:e.value.kind,value:e.value.value}:null,modifier:e.modifier?{kind:e.modifier.kind,value:e.modifier.value}:null};case\"compound\":return{kind:e.kind,root:e.root,variant:Ie(e.variant),modifier:e.modifier?{kind:e.modifier.kind,value:e.modifier.value}:null};default:throw new Error(\"Unknown variant kind\")}}function*Ar(e,r){let i=chunk_GFBUASX3_d(e,\":\");if(r.theme.prefix){if(i.length===1||i[0]!==r.theme.prefix)return null;i.shift()}let t=i.pop(),n=[];for(let d=i.length-1;d>=0;--d){let c=r.parseVariant(i[d]);if(c===null)return;n.push(c)}let s=!1;t[t.length-1]===\"!\"?(s=!0,t=t.slice(0,-1)):t[0]===\"!\"&&(s=!0,t=t.slice(1)),r.utilities.has(t,\"static\")&&!t.includes(\"[\")&&(yield{kind:\"static\",root:t,variants:n,important:s,raw:e});let[a,p=null,u]=chunk_GFBUASX3_d(t,\"/\");if(u)return;let f=p===null?null:Et(p);if(p!==null&&f===null)return;if(a[0]===\"[\"){if(a[a.length-1]!==\"]\")return;let d=a.charCodeAt(1);if(d!==yr&&!(d>=kr&&d<=br))return;a=a.slice(1,-1);let c=a.indexOf(\":\");if(c===-1||c===0||c===a.length-1)return;let w=a.slice(0,c),h=ye(a.slice(c+1));if(!chunk_MEY3PWYT_ge(h))return;yield{kind:\"arbitrary\",property:w,value:h,modifier:f,variants:n,important:s,raw:e};return}let m;if(a[a.length-1]===\"]\"){let d=a.indexOf(\"-[\");if(d===-1)return;let c=a.slice(0,d);if(!r.utilities.has(c,\"functional\"))return;let w=a.slice(d+1);m=[[c,w]]}else if(a[a.length-1]===\")\"){let d=a.indexOf(\"-(\");if(d===-1)return;let c=a.slice(0,d);if(!r.utilities.has(c,\"functional\"))return;let w=a.slice(d+2,-1),h=chunk_GFBUASX3_d(w,\":\"),y=null;if(h.length===2&&(y=h[0],w=h[1]),w[0]!==\"-\"||w[1]!==\"-\"||!chunk_MEY3PWYT_ge(w))return;m=[[c,y===null?`[var(${w})]`:`[${y}:var(${w})]`]]}else m=$r(a,d=>r.utilities.has(d,\"functional\"));for(let[d,c]of m){let w={kind:\"functional\",root:d,modifier:f,value:null,variants:n,important:s,raw:e};if(c===null){yield w;continue}{let h=c.indexOf(\"[\");if(h!==-1){if(c[c.length-1]!==\"]\")return;let x=ye(c.slice(h+1,-1));if(!chunk_MEY3PWYT_ge(x))continue;let V=null;for(let A=0;A<x.length;A++){let k=x.charCodeAt(A);if(k===an){V=x.slice(0,A),x=x.slice(A+1);break}if(!(k===yr||k>=kr&&k<=br))break}if(x.length===0||x.trim().length===0||V===\"\")continue;w.value={kind:\"arbitrary\",dataType:V||null,value:x}}else{let x=p===null||w.modifier?.kind===\"arbitrary\"?null:`${c}/${p}`;w.value={kind:\"named\",value:c,fraction:x}}}yield w}}function Et(e){if(e[0]===\"[\"&&e[e.length-1]===\"]\"){let r=ye(e.slice(1,-1));return!chunk_MEY3PWYT_ge(r)||r.length===0||r.trim().length===0?null:{kind:\"arbitrary\",value:r}}return e[0]===\"(\"&&e[e.length-1]===\")\"?(e=e.slice(1,-1),e[0]!==\"-\"||e[1]!==\"-\"||!chunk_MEY3PWYT_ge(e)?null:(e=`var(${e})`,{kind:\"arbitrary\",value:ye(e)})):{kind:\"named\",value:e}}function Cr(e,r){if(e[0]===\"[\"&&e[e.length-1]===\"]\"){if(e[1]===\"@\"&&e.includes(\"&\"))return null;let i=ye(e.slice(1,-1));if(!chunk_MEY3PWYT_ge(i)||i.length===0||i.trim().length===0)return null;let t=i[0]===\">\"||i[0]===\"+\"||i[0]===\"~\";return!t&&i[0]!==\"@\"&&!i.includes(\"&\")&&(i=`&:is(${i})`),{kind:\"arbitrary\",selector:i,relative:t}}{let[i,t=null,n]=chunk_GFBUASX3_d(e,\"/\");if(n)return null;let s=$r(i,a=>r.variants.has(a));for(let[a,p]of s)switch(r.variants.kind(a)){case\"static\":return p!==null||t!==null?null:{kind:\"static\",root:a};case\"functional\":{let u=t===null?null:Et(t);if(t!==null&&u===null)return null;if(p===null)return{kind:\"functional\",root:a,modifier:u,value:null};if(p[p.length-1]===\"]\"){if(p[0]!==\"[\")continue;let f=ye(p.slice(1,-1));return!chunk_MEY3PWYT_ge(f)||f.length===0||f.trim().length===0?null:{kind:\"functional\",root:a,modifier:u,value:{kind:\"arbitrary\",value:f}}}if(p[p.length-1]===\")\"){if(p[0]!==\"(\")continue;let f=ye(p.slice(1,-1));return!chunk_MEY3PWYT_ge(f)||f.length===0||f.trim().length===0||f[0]!==\"-\"||f[1]!==\"-\"?null:{kind:\"functional\",root:a,modifier:u,value:{kind:\"arbitrary\",value:`var(${f})`}}}return{kind:\"functional\",root:a,modifier:u,value:{kind:\"named\",value:p}}}case\"compound\":{if(p===null)return null;t&&(a===\"not\"||a===\"has\"||a===\"in\")&&(p=`${p}/${t}`,t=null);let u=r.parseVariant(p);if(u===null||!r.variants.compoundsWith(a,u))return null;let f=t===null?null:Et(t);return t!==null&&f===null?null:{kind:\"compound\",root:a,modifier:f,variant:u}}}}return null}function*$r(e,r){r(e)&&(yield[e,null]);let i=e.lastIndexOf(\"-\");for(;i>0;){let t=e.slice(0,i);if(r(t)){let n=[t,e.slice(i+1)];if(n[1]===\"\"||n[0]===\"@\"&&r(\"@\")&&e[i]===\"-\")break;yield n}i=e.lastIndexOf(\"-\",i-1)}e[0]===\"@\"&&r(\"@\")&&(yield[\"@\",e.slice(1)])}function Sr(e,r){let i=[];for(let n of r.variants)i.unshift(lt(n));e.theme.prefix&&i.unshift(e.theme.prefix);let t=\"\";if(r.kind===\"static\"&&(t+=r.root),r.kind===\"functional\"&&(t+=r.root,r.value))if(r.value.kind===\"arbitrary\"){if(r.value!==null){let n=Ot(r.value.value),s=n?r.value.value.slice(4,-1):r.value.value,[a,p]=n?[\"(\",\")\"]:[\"[\",\"]\"];r.value.dataType?t+=`-${a}${r.value.dataType}:${ke(s)}${p}`:t+=`-${a}${ke(s)}${p}`}}else r.value.kind===\"named\"&&(t+=`-${r.value.value}`);return r.kind===\"arbitrary\"&&(t+=`[${r.property}:${ke(r.value)}]`),(r.kind===\"arbitrary\"||r.kind===\"functional\")&&(t+=Ze(r.modifier)),r.important&&(t+=\"!\"),i.push(t),i.join(\":\")}function Ze(e){if(e===null)return\"\";let r=Ot(e.value),i=r?e.value.slice(4,-1):e.value,[t,n]=r?[\"(\",\")\"]:[\"[\",\"]\"];return e.kind===\"arbitrary\"?`/${t}${ke(i)}${n}`:e.kind===\"named\"?`/${e.value}`:\"\"}function lt(e){if(e.kind===\"static\")return e.root;if(e.kind===\"arbitrary\")return`[${ke(sn(e.selector))}]`;let r=\"\";if(e.kind===\"functional\"){r+=e.root;let i=e.root!==\"@\";if(e.value)if(e.value.kind===\"arbitrary\"){let t=Ot(e.value.value),n=t?e.value.value.slice(4,-1):e.value.value,[s,a]=t?[\"(\",\")\"]:[\"[\",\"]\"];r+=`${i?\"-\":\"\"}${s}${ke(n)}${a}`}else e.value.kind===\"named\"&&(r+=`${i?\"-\":\"\"}${e.value.value}`)}return e.kind===\"compound\"&&(r+=e.root,r+=\"-\",r+=lt(e.variant)),(e.kind===\"functional\"||e.kind===\"compound\")&&(r+=Ze(e.modifier)),r}var on=new chunk_MEY3PWYT_K(e=>{let r=chunk_MEY3PWYT_B(e),i=new Set;return chunk_MEY3PWYT_I(r,(t,n)=>{let s=n.parent===null?r:n.parent.nodes??[];if(t.kind===\"word\"&&(t.value===\"+\"||t.value===\"-\"||t.value===\"*\"||t.value===\"/\")){let a=s.indexOf(t)??-1;if(a===-1)return;let p=s[a-1];if(p?.kind!==\"separator\"||p.value!==\" \")return;let u=s[a+1];if(u?.kind!==\"separator\"||u.value!==\" \")return;i.add(p),i.add(u)}else t.kind===\"separator\"&&t.value.length>0&&t.value.trim()===\"\"?(s[0]===t||s[s.length-1]===t)&&i.add(t):t.kind===\"separator\"&&t.value.trim()===\",\"&&(t.value=\",\")}),i.size>0&&chunk_MEY3PWYT_I(r,t=>{if(i.has(t))return i.delete(t),chunk_MEY3PWYT_R.ReplaceSkip([])}),Rt(r),chunk_MEY3PWYT_Z(r)});function ke(e){return on.get(e)}var ln=new chunk_MEY3PWYT_K(e=>{let r=chunk_MEY3PWYT_B(e);return r.length===3&&r[0].kind===\"word\"&&r[0].value===\"&\"&&r[1].kind===\"separator\"&&r[1].value===\":\"&&r[2].kind===\"function\"&&r[2].value===\"is\"?chunk_MEY3PWYT_Z(r[2].nodes):e});function sn(e){return ln.get(e)}function Rt(e){for(let r of e)switch(r.kind){case\"function\":{if(r.value===\"url\"||r.value.endsWith(\"_url\")){r.value=qe(r.value);break}if(r.value===\"var\"||r.value.endsWith(\"_var\")||r.value===\"theme\"||r.value.endsWith(\"_theme\")){r.value=qe(r.value);for(let i=0;i<r.nodes.length;i++)Rt([r.nodes[i]]);break}r.value=qe(r.value),Rt(r.nodes);break}case\"separator\":r.value=qe(r.value);break;case\"word\":{(r.value[0]!==\"-\"||r.value[1]!==\"-\")&&(r.value=qe(r.value));break}default:fn(r)}}var un=new chunk_MEY3PWYT_K(e=>{let r=chunk_MEY3PWYT_B(e);return r.length===1&&r[0].kind===\"function\"&&r[0].value===\"var\"});function Ot(e){return un.get(e)}function fn(e){throw new Error(`Unexpected value: ${e}`)}function qe(e){return e.replaceAll(\"_\",String.raw`\\_`).replaceAll(\" \",\"_\")}function Te(e,r,i){if(e===r)return 0;let t=e.indexOf(\"(\"),n=r.indexOf(\"(\"),s=t===-1?e.replace(/[\\d.]+/g,\"\"):e.slice(0,t),a=n===-1?r.replace(/[\\d.]+/g,\"\"):r.slice(0,n),p=(s===a?0:s<a?-1:1)||(i===\"asc\"?parseInt(e)-parseInt(r):parseInt(r)-parseInt(e));return Number.isNaN(p)?e<r?-1:1:p}var cn=new Set([\"inset\",\"inherit\",\"initial\",\"revert\",\"unset\"]),Tr=/^-?(\\d+|\\.\\d+)(.*?)$/g;function He(e,r){return chunk_GFBUASX3_d(e,\",\").map(t=>{t=t.trim();let n=chunk_GFBUASX3_d(t,\" \").filter(f=>f.trim()!==\"\"),s=null,a=null,p=null;for(let f of n)cn.has(f)||(Tr.test(f)?(a===null?a=f:p===null&&(p=f),Tr.lastIndex=0):s===null&&(s=f));if(a===null||p===null)return t;let u=r(s??\"currentcolor\");return s!==null?t.replace(s,u):`${t} ${u}`}).join(\", \")}var dn=/^-?[a-z][a-zA-Z0-9/%._-]*$/,mn=/^-?[a-z][a-zA-Z0-9/%._-]*-\\*$/,ut=[\"0\",\"0.5\",\"1\",\"1.5\",\"2\",\"2.5\",\"3\",\"3.5\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"14\",\"16\",\"20\",\"24\",\"28\",\"32\",\"36\",\"40\",\"44\",\"48\",\"52\",\"56\",\"60\",\"64\",\"72\",\"80\",\"96\"],Pt=class{utilities=new chunk_MEY3PWYT_K(()=>[]);completions=new Map;static(r,i){this.utilities.get(r).push({kind:\"static\",compileFn:i})}functional(r,i,t){this.utilities.get(r).push({kind:\"functional\",compileFn:i,options:t})}has(r,i){return this.utilities.has(r)&&this.utilities.get(r).some(t=>t.kind===i)}get(r){return this.utilities.has(r)?this.utilities.get(r):[]}getCompletions(r){return this.has(r,\"static\")?this.completions.get(r)?.()??[{supportsNegative:!1,values:[],modifiers:[]}]:this.completions.get(r)?.()??[]}suggest(r,i){let t=this.completions.get(r);t?this.completions.set(r,()=>[...t?.(),...i?.()]):this.completions.set(r,i)}keys(r){let i=[];for(let[t,n]of this.utilities.entries())for(let s of n)if(s.kind===r){i.push(t);break}return i}};function chunk_MEY3PWYT_$(e,r,i){return chunk_MEY3PWYT_F(\"@property\",e,[o(\"syntax\",i?`\"${i}\"`:'\"*\"'),o(\"inherits\",\"false\"),...r?[o(\"initial-value\",r)]:[]])}function chunk_MEY3PWYT_Q(e,r){if(r===null)return e;let i=Number(r);return Number.isNaN(i)||(r=`${i*100}%`),r===\"100%\"?e:`color-mix(in oklab, ${e} ${r}, transparent)`}function Nr(e,r){let i=Number(r);return Number.isNaN(i)||(r=`${i*100}%`),`oklab(from ${e} l a b / ${r})`}function chunk_MEY3PWYT_X(e,r,i){if(!r)return e;if(r.kind===\"arbitrary\")return chunk_MEY3PWYT_Q(e,r.value);let t=i.resolve(r.value,[\"--opacity\"]);return t?chunk_MEY3PWYT_Q(e,t):ue(r.value)?chunk_MEY3PWYT_Q(e,`${r.value}%`):null}function chunk_MEY3PWYT_te(e,r,i){let t=null;switch(e.value.value){case\"inherit\":{t=\"inherit\";break}case\"transparent\":{t=\"transparent\";break}case\"current\":{t=\"currentcolor\";break}default:{t=r.resolve(e.value.value,i);break}}return t?chunk_MEY3PWYT_X(t,e.modifier,r):null}var Er=/(\\d+)_(\\d+)/g;function Rr(e){let r=new Pt;function i(l,g){function*v(b){for(let S of e.keysInNamespaces(b))yield S.replace(Er,(D,T,N)=>`${T}.${N}`)}let C=[\"1/2\",\"1/3\",\"2/3\",\"1/4\",\"2/4\",\"3/4\",\"1/5\",\"2/5\",\"3/5\",\"4/5\",\"1/6\",\"2/6\",\"3/6\",\"4/6\",\"5/6\",\"1/12\",\"2/12\",\"3/12\",\"4/12\",\"5/12\",\"6/12\",\"7/12\",\"8/12\",\"9/12\",\"10/12\",\"11/12\"];r.suggest(l,()=>{let b=[];for(let S of g()){if(typeof S==\"string\"){b.push({values:[S],modifiers:[]});continue}let D=[...S.values??[],...v(S.valueThemeKeys??[])],T=[...S.modifiers??[],...v(S.modifierThemeKeys??[])];S.supportsFractions&&D.push(...C),S.hasDefaultValue&&D.unshift(null),b.push({supportsNegative:S.supportsNegative,values:D,modifiers:T})}return b})}function t(l,g){r.static(l,()=>g.map(v=>typeof v==\"function\"?v():o(v[0],v[1])))}function n(l,g){function v({negative:C}){return b=>{let S=null,D=null;if(b.value)if(b.value.kind===\"arbitrary\"){if(b.modifier)return;S=b.value.value,D=b.value.dataType}else{if(S=e.resolve(b.value.fraction??b.value.value,g.themeKeys??[]),S===null&&g.supportsFractions&&b.value.fraction){let[T,N]=chunk_GFBUASX3_d(b.value.fraction,\"/\");if(!chunk_GFBUASX3_u(T)||!chunk_GFBUASX3_u(N))return;S=`calc(${b.value.fraction} * 100%)`}if(S===null&&C&&g.handleNegativeBareValue){if(S=g.handleNegativeBareValue(b.value),!S?.includes(\"/\")&&b.modifier)return;if(S!==null)return g.handle(S,null)}if(S===null&&g.handleBareValue&&(S=g.handleBareValue(b.value),!S?.includes(\"/\")&&b.modifier))return;if(S===null&&!C&&g.staticValues&&!b.modifier){let T=g.staticValues[b.value.value];if(T)return T.map(chunk_MEY3PWYT_ee)}}else{if(b.modifier)return;S=g.defaultValue!==void 0?g.defaultValue:e.resolve(null,g.themeKeys??[])}if(S!==null)return g.handle(C?`calc(${S} * -1)`:S,D)}}if(g.supportsNegative&&r.functional(`-${l}`,v({negative:!0})),r.functional(l,v({negative:!1})),i(l,()=>[{supportsNegative:g.supportsNegative,valueThemeKeys:g.themeKeys??[],hasDefaultValue:g.defaultValue!==void 0&&g.defaultValue!==null,supportsFractions:g.supportsFractions}]),g.staticValues&&Object.keys(g.staticValues).length>0){let C=Object.keys(g.staticValues);i(l,()=>[{values:C}])}}function s(l,g){r.functional(l,v=>{if(!v.value)return;let C=null;if(v.value.kind===\"arbitrary\"?(C=v.value.value,C=chunk_MEY3PWYT_X(C,v.modifier,e)):C=chunk_MEY3PWYT_te(v,e,g.themeKeys),C!==null)return g.handle(C)}),i(l,()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:g.themeKeys,modifiers:Array.from({length:21},(v,C)=>`${C*5}`)}])}function a(l,g,v,{supportsNegative:C=!1,supportsFractions:b=!1,staticValues:S}={}){C&&r.static(`-${l}-px`,()=>v(\"-1px\")),r.static(`${l}-px`,()=>v(\"1px\")),n(l,{themeKeys:g,supportsFractions:b,supportsNegative:C,defaultValue:null,handleBareValue:({value:D})=>{let T=e.resolve(null,[\"--spacing\"]);return!T||!ge(D)?null:`calc(${T} * ${D})`},handleNegativeBareValue:({value:D})=>{let T=e.resolve(null,[\"--spacing\"]);return!T||!ge(D)?null:`calc(${T} * -${D})`},handle:v,staticValues:S}),i(l,()=>[{values:e.get([\"--spacing\"])?ut:[],supportsNegative:C,supportsFractions:b,valueThemeKeys:g}])}t(\"sr-only\",[[\"position\",\"absolute\"],[\"width\",\"1px\"],[\"height\",\"1px\"],[\"padding\",\"0\"],[\"margin\",\"-1px\"],[\"overflow\",\"hidden\"],[\"clip-path\",\"inset(50%)\"],[\"white-space\",\"nowrap\"],[\"border-width\",\"0\"]]),t(\"not-sr-only\",[[\"position\",\"static\"],[\"width\",\"auto\"],[\"height\",\"auto\"],[\"padding\",\"0\"],[\"margin\",\"0\"],[\"overflow\",\"visible\"],[\"clip-path\",\"none\"],[\"white-space\",\"normal\"]]),t(\"pointer-events-none\",[[\"pointer-events\",\"none\"]]),t(\"pointer-events-auto\",[[\"pointer-events\",\"auto\"]]),t(\"visible\",[[\"visibility\",\"visible\"]]),t(\"invisible\",[[\"visibility\",\"hidden\"]]),t(\"collapse\",[[\"visibility\",\"collapse\"]]),t(\"static\",[[\"position\",\"static\"]]),t(\"fixed\",[[\"position\",\"fixed\"]]),t(\"absolute\",[[\"position\",\"absolute\"]]),t(\"relative\",[[\"position\",\"relative\"]]),t(\"sticky\",[[\"position\",\"sticky\"]]);for(let[l,g]of[[\"inset\",\"inset\"],[\"inset-x\",\"inset-inline\"],[\"inset-y\",\"inset-block\"],[\"start\",\"inset-inline-start\"],[\"end\",\"inset-inline-end\"],[\"top\",\"top\"],[\"right\",\"right\"],[\"bottom\",\"bottom\"],[\"left\",\"left\"]])t(`${l}-auto`,[[g,\"auto\"]]),t(`${l}-full`,[[g,\"100%\"]]),t(`-${l}-full`,[[g,\"-100%\"]]),a(l,[\"--inset\",\"--spacing\"],v=>[o(g,v)],{supportsNegative:!0,supportsFractions:!0});t(\"isolate\",[[\"isolation\",\"isolate\"]]),t(\"isolation-auto\",[[\"isolation\",\"auto\"]]),n(\"z\",{supportsNegative:!0,handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,themeKeys:[\"--z-index\"],handle:l=>[o(\"z-index\",l)],staticValues:{auto:[o(\"z-index\",\"auto\")]}}),i(\"z\",()=>[{supportsNegative:!0,values:[\"0\",\"10\",\"20\",\"30\",\"40\",\"50\"],valueThemeKeys:[\"--z-index\"]}]),n(\"order\",{supportsNegative:!0,handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,themeKeys:[\"--order\"],handle:l=>[o(\"order\",l)],staticValues:{first:[o(\"order\",\"-9999\")],last:[o(\"order\",\"9999\")]}}),i(\"order\",()=>[{supportsNegative:!0,values:Array.from({length:12},(l,g)=>`${g+1}`),valueThemeKeys:[\"--order\"]}]),n(\"col\",{supportsNegative:!0,handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,themeKeys:[\"--grid-column\"],handle:l=>[o(\"grid-column\",l)],staticValues:{auto:[o(\"grid-column\",\"auto\")]}}),n(\"col-span\",{handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,handle:l=>[o(\"grid-column\",`span ${l} / span ${l}`)],staticValues:{full:[o(\"grid-column\",\"1 / -1\")]}}),n(\"col-start\",{supportsNegative:!0,handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,themeKeys:[\"--grid-column-start\"],handle:l=>[o(\"grid-column-start\",l)],staticValues:{auto:[o(\"grid-column-start\",\"auto\")]}}),n(\"col-end\",{supportsNegative:!0,handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,themeKeys:[\"--grid-column-end\"],handle:l=>[o(\"grid-column-end\",l)],staticValues:{auto:[o(\"grid-column-end\",\"auto\")]}}),i(\"col-span\",()=>[{values:Array.from({length:12},(l,g)=>`${g+1}`),valueThemeKeys:[]}]),i(\"col-start\",()=>[{supportsNegative:!0,values:Array.from({length:13},(l,g)=>`${g+1}`),valueThemeKeys:[\"--grid-column-start\"]}]),i(\"col-end\",()=>[{supportsNegative:!0,values:Array.from({length:13},(l,g)=>`${g+1}`),valueThemeKeys:[\"--grid-column-end\"]}]),n(\"row\",{supportsNegative:!0,handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,themeKeys:[\"--grid-row\"],handle:l=>[o(\"grid-row\",l)],staticValues:{auto:[o(\"grid-row\",\"auto\")]}}),n(\"row-span\",{themeKeys:[],handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,handle:l=>[o(\"grid-row\",`span ${l} / span ${l}`)],staticValues:{full:[o(\"grid-row\",\"1 / -1\")]}}),n(\"row-start\",{supportsNegative:!0,handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,themeKeys:[\"--grid-row-start\"],handle:l=>[o(\"grid-row-start\",l)],staticValues:{auto:[o(\"grid-row-start\",\"auto\")]}}),n(\"row-end\",{supportsNegative:!0,handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,themeKeys:[\"--grid-row-end\"],handle:l=>[o(\"grid-row-end\",l)],staticValues:{auto:[o(\"grid-row-end\",\"auto\")]}}),i(\"row-span\",()=>[{values:Array.from({length:12},(l,g)=>`${g+1}`),valueThemeKeys:[]}]),i(\"row-start\",()=>[{supportsNegative:!0,values:Array.from({length:13},(l,g)=>`${g+1}`),valueThemeKeys:[\"--grid-row-start\"]}]),i(\"row-end\",()=>[{supportsNegative:!0,values:Array.from({length:13},(l,g)=>`${g+1}`),valueThemeKeys:[\"--grid-row-end\"]}]),t(\"float-start\",[[\"float\",\"inline-start\"]]),t(\"float-end\",[[\"float\",\"inline-end\"]]),t(\"float-right\",[[\"float\",\"right\"]]),t(\"float-left\",[[\"float\",\"left\"]]),t(\"float-none\",[[\"float\",\"none\"]]),t(\"clear-start\",[[\"clear\",\"inline-start\"]]),t(\"clear-end\",[[\"clear\",\"inline-end\"]]),t(\"clear-right\",[[\"clear\",\"right\"]]),t(\"clear-left\",[[\"clear\",\"left\"]]),t(\"clear-both\",[[\"clear\",\"both\"]]),t(\"clear-none\",[[\"clear\",\"none\"]]);for(let[l,g]of[[\"m\",\"margin\"],[\"mx\",\"margin-inline\"],[\"my\",\"margin-block\"],[\"ms\",\"margin-inline-start\"],[\"me\",\"margin-inline-end\"],[\"mt\",\"margin-top\"],[\"mr\",\"margin-right\"],[\"mb\",\"margin-bottom\"],[\"ml\",\"margin-left\"]])t(`${l}-auto`,[[g,\"auto\"]]),a(l,[\"--margin\",\"--spacing\"],v=>[o(g,v)],{supportsNegative:!0});t(\"box-border\",[[\"box-sizing\",\"border-box\"]]),t(\"box-content\",[[\"box-sizing\",\"content-box\"]]),n(\"line-clamp\",{themeKeys:[\"--line-clamp\"],handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,handle:l=>[o(\"overflow\",\"hidden\"),o(\"display\",\"-webkit-box\"),o(\"-webkit-box-orient\",\"vertical\"),o(\"-webkit-line-clamp\",l)],staticValues:{none:[o(\"overflow\",\"visible\"),o(\"display\",\"block\"),o(\"-webkit-box-orient\",\"horizontal\"),o(\"-webkit-line-clamp\",\"unset\")]}}),i(\"line-clamp\",()=>[{values:[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\"],valueThemeKeys:[\"--line-clamp\"]}]),t(\"block\",[[\"display\",\"block\"]]),t(\"inline-block\",[[\"display\",\"inline-block\"]]),t(\"inline\",[[\"display\",\"inline\"]]),t(\"hidden\",[[\"display\",\"none\"]]),t(\"inline-flex\",[[\"display\",\"inline-flex\"]]),t(\"table\",[[\"display\",\"table\"]]),t(\"inline-table\",[[\"display\",\"inline-table\"]]),t(\"table-caption\",[[\"display\",\"table-caption\"]]),t(\"table-cell\",[[\"display\",\"table-cell\"]]),t(\"table-column\",[[\"display\",\"table-column\"]]),t(\"table-column-group\",[[\"display\",\"table-column-group\"]]),t(\"table-footer-group\",[[\"display\",\"table-footer-group\"]]),t(\"table-header-group\",[[\"display\",\"table-header-group\"]]),t(\"table-row-group\",[[\"display\",\"table-row-group\"]]),t(\"table-row\",[[\"display\",\"table-row\"]]),t(\"flow-root\",[[\"display\",\"flow-root\"]]),t(\"flex\",[[\"display\",\"flex\"]]),t(\"grid\",[[\"display\",\"grid\"]]),t(\"inline-grid\",[[\"display\",\"inline-grid\"]]),t(\"contents\",[[\"display\",\"contents\"]]),t(\"list-item\",[[\"display\",\"list-item\"]]),t(\"field-sizing-content\",[[\"field-sizing\",\"content\"]]),t(\"field-sizing-fixed\",[[\"field-sizing\",\"fixed\"]]),n(\"aspect\",{themeKeys:[\"--aspect\"],handleBareValue:({fraction:l})=>{if(l===null)return null;let[g,v]=chunk_GFBUASX3_d(l,\"/\");return!chunk_GFBUASX3_u(g)||!chunk_GFBUASX3_u(v)?null:l},handle:l=>[o(\"aspect-ratio\",l)],staticValues:{auto:[o(\"aspect-ratio\",\"auto\")],square:[o(\"aspect-ratio\",\"1 / 1\")]}});for(let[l,g]of[[\"full\",\"100%\"],[\"svw\",\"100svw\"],[\"lvw\",\"100lvw\"],[\"dvw\",\"100dvw\"],[\"svh\",\"100svh\"],[\"lvh\",\"100lvh\"],[\"dvh\",\"100dvh\"],[\"min\",\"min-content\"],[\"max\",\"max-content\"],[\"fit\",\"fit-content\"]])t(`size-${l}`,[[\"--tw-sort\",\"size\"],[\"width\",g],[\"height\",g]]),t(`w-${l}`,[[\"width\",g]]),t(`h-${l}`,[[\"height\",g]]),t(`min-w-${l}`,[[\"min-width\",g]]),t(`min-h-${l}`,[[\"min-height\",g]]),t(`max-w-${l}`,[[\"max-width\",g]]),t(`max-h-${l}`,[[\"max-height\",g]]);t(\"size-auto\",[[\"--tw-sort\",\"size\"],[\"width\",\"auto\"],[\"height\",\"auto\"]]),t(\"w-auto\",[[\"width\",\"auto\"]]),t(\"h-auto\",[[\"height\",\"auto\"]]),t(\"min-w-auto\",[[\"min-width\",\"auto\"]]),t(\"min-h-auto\",[[\"min-height\",\"auto\"]]),t(\"h-lh\",[[\"height\",\"1lh\"]]),t(\"min-h-lh\",[[\"min-height\",\"1lh\"]]),t(\"max-h-lh\",[[\"max-height\",\"1lh\"]]),t(\"w-screen\",[[\"width\",\"100vw\"]]),t(\"min-w-screen\",[[\"min-width\",\"100vw\"]]),t(\"max-w-screen\",[[\"max-width\",\"100vw\"]]),t(\"h-screen\",[[\"height\",\"100vh\"]]),t(\"min-h-screen\",[[\"min-height\",\"100vh\"]]),t(\"max-h-screen\",[[\"max-height\",\"100vh\"]]),t(\"max-w-none\",[[\"max-width\",\"none\"]]),t(\"max-h-none\",[[\"max-height\",\"none\"]]),a(\"size\",[\"--size\",\"--spacing\"],l=>[o(\"--tw-sort\",\"size\"),o(\"width\",l),o(\"height\",l)],{supportsFractions:!0});for(let[l,g,v]of[[\"w\",[\"--width\",\"--spacing\",\"--container\"],\"width\"],[\"min-w\",[\"--min-width\",\"--spacing\",\"--container\"],\"min-width\"],[\"max-w\",[\"--max-width\",\"--spacing\",\"--container\"],\"max-width\"],[\"h\",[\"--height\",\"--spacing\"],\"height\"],[\"min-h\",[\"--min-height\",\"--height\",\"--spacing\"],\"min-height\"],[\"max-h\",[\"--max-height\",\"--height\",\"--spacing\"],\"max-height\"]])a(l,g,C=>[o(v,C)],{supportsFractions:!0});r.static(\"container\",()=>{let l=[...e.namespace(\"--breakpoint\").values()];l.sort((v,C)=>Te(v,C,\"asc\"));let g=[o(\"--tw-sort\",\"--tw-container-component\"),o(\"width\",\"100%\")];for(let v of l)g.push(chunk_MEY3PWYT_F(\"@media\",`(width >= ${v})`,[o(\"max-width\",v)]));return g}),t(\"flex-auto\",[[\"flex\",\"auto\"]]),t(\"flex-initial\",[[\"flex\",\"0 auto\"]]),t(\"flex-none\",[[\"flex\",\"none\"]]),r.functional(\"flex\",l=>{if(l.value){if(l.value.kind===\"arbitrary\")return l.modifier?void 0:[o(\"flex\",l.value.value)];if(l.value.fraction){let[g,v]=chunk_GFBUASX3_d(l.value.fraction,\"/\");return!chunk_GFBUASX3_u(g)||!chunk_GFBUASX3_u(v)?void 0:[o(\"flex\",`calc(${l.value.fraction} * 100%)`)]}if(chunk_GFBUASX3_u(l.value.value))return l.modifier?void 0:[o(\"flex\",l.value.value)]}}),i(\"flex\",()=>[{supportsFractions:!0},{values:Array.from({length:12},(l,g)=>`${g+1}`)}]),n(\"shrink\",{defaultValue:\"1\",handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,handle:l=>[o(\"flex-shrink\",l)]}),n(\"grow\",{defaultValue:\"1\",handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,handle:l=>[o(\"flex-grow\",l)]}),i(\"shrink\",()=>[{values:[\"0\"],valueThemeKeys:[],hasDefaultValue:!0}]),i(\"grow\",()=>[{values:[\"0\"],valueThemeKeys:[],hasDefaultValue:!0}]),t(\"basis-auto\",[[\"flex-basis\",\"auto\"]]),t(\"basis-full\",[[\"flex-basis\",\"100%\"]]),a(\"basis\",[\"--flex-basis\",\"--spacing\",\"--container\"],l=>[o(\"flex-basis\",l)],{supportsFractions:!0}),t(\"table-auto\",[[\"table-layout\",\"auto\"]]),t(\"table-fixed\",[[\"table-layout\",\"fixed\"]]),t(\"caption-top\",[[\"caption-side\",\"top\"]]),t(\"caption-bottom\",[[\"caption-side\",\"bottom\"]]),t(\"border-collapse\",[[\"border-collapse\",\"collapse\"]]),t(\"border-separate\",[[\"border-collapse\",\"separate\"]]);let p=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-border-spacing-x\",\"0\",\"<length>\"),chunk_MEY3PWYT_$(\"--tw-border-spacing-y\",\"0\",\"<length>\")]);a(\"border-spacing\",[\"--border-spacing\",\"--spacing\"],l=>[p(),o(\"--tw-border-spacing-x\",l),o(\"--tw-border-spacing-y\",l),o(\"border-spacing\",\"var(--tw-border-spacing-x) var(--tw-border-spacing-y)\")]),a(\"border-spacing-x\",[\"--border-spacing\",\"--spacing\"],l=>[p(),o(\"--tw-border-spacing-x\",l),o(\"border-spacing\",\"var(--tw-border-spacing-x) var(--tw-border-spacing-y)\")]),a(\"border-spacing-y\",[\"--border-spacing\",\"--spacing\"],l=>[p(),o(\"--tw-border-spacing-y\",l),o(\"border-spacing\",\"var(--tw-border-spacing-x) var(--tw-border-spacing-y)\")]),n(\"origin\",{themeKeys:[\"--transform-origin\"],handle:l=>[o(\"transform-origin\",l)],staticValues:{center:[o(\"transform-origin\",\"center\")],top:[o(\"transform-origin\",\"top\")],\"top-right\":[o(\"transform-origin\",\"100% 0\")],right:[o(\"transform-origin\",\"100%\")],\"bottom-right\":[o(\"transform-origin\",\"100% 100%\")],bottom:[o(\"transform-origin\",\"bottom\")],\"bottom-left\":[o(\"transform-origin\",\"0 100%\")],left:[o(\"transform-origin\",\"0\")],\"top-left\":[o(\"transform-origin\",\"0 0\")]}}),n(\"perspective-origin\",{themeKeys:[\"--perspective-origin\"],handle:l=>[o(\"perspective-origin\",l)],staticValues:{center:[o(\"perspective-origin\",\"center\")],top:[o(\"perspective-origin\",\"top\")],\"top-right\":[o(\"perspective-origin\",\"100% 0\")],right:[o(\"perspective-origin\",\"100%\")],\"bottom-right\":[o(\"perspective-origin\",\"100% 100%\")],bottom:[o(\"perspective-origin\",\"bottom\")],\"bottom-left\":[o(\"perspective-origin\",\"0 100%\")],left:[o(\"perspective-origin\",\"0\")],\"top-left\":[o(\"perspective-origin\",\"0 0\")]}}),n(\"perspective\",{themeKeys:[\"--perspective\"],handle:l=>[o(\"perspective\",l)],staticValues:{none:[o(\"perspective\",\"none\")]}});let u=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-translate-x\",\"0\"),chunk_MEY3PWYT_$(\"--tw-translate-y\",\"0\"),chunk_MEY3PWYT_$(\"--tw-translate-z\",\"0\")]);t(\"translate-none\",[[\"translate\",\"none\"]]),t(\"-translate-full\",[u,[\"--tw-translate-x\",\"-100%\"],[\"--tw-translate-y\",\"-100%\"],[\"translate\",\"var(--tw-translate-x) var(--tw-translate-y)\"]]),t(\"translate-full\",[u,[\"--tw-translate-x\",\"100%\"],[\"--tw-translate-y\",\"100%\"],[\"translate\",\"var(--tw-translate-x) var(--tw-translate-y)\"]]),a(\"translate\",[\"--translate\",\"--spacing\"],l=>[u(),o(\"--tw-translate-x\",l),o(\"--tw-translate-y\",l),o(\"translate\",\"var(--tw-translate-x) var(--tw-translate-y)\")],{supportsNegative:!0,supportsFractions:!0});for(let l of[\"x\",\"y\"])t(`-translate-${l}-full`,[u,[`--tw-translate-${l}`,\"-100%\"],[\"translate\",\"var(--tw-translate-x) var(--tw-translate-y)\"]]),t(`translate-${l}-full`,[u,[`--tw-translate-${l}`,\"100%\"],[\"translate\",\"var(--tw-translate-x) var(--tw-translate-y)\"]]),a(`translate-${l}`,[\"--translate\",\"--spacing\"],g=>[u(),o(`--tw-translate-${l}`,g),o(\"translate\",\"var(--tw-translate-x) var(--tw-translate-y)\")],{supportsNegative:!0,supportsFractions:!0});a(\"translate-z\",[\"--translate\",\"--spacing\"],l=>[u(),o(\"--tw-translate-z\",l),o(\"translate\",\"var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)\")],{supportsNegative:!0}),t(\"translate-3d\",[u,[\"translate\",\"var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)\"]]);let f=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-scale-x\",\"1\"),chunk_MEY3PWYT_$(\"--tw-scale-y\",\"1\"),chunk_MEY3PWYT_$(\"--tw-scale-z\",\"1\")]);t(\"scale-none\",[[\"scale\",\"none\"]]);function m({negative:l}){return g=>{if(!g.value||g.modifier)return;let v;return g.value.kind===\"arbitrary\"?(v=g.value.value,v=l?`calc(${v} * -1)`:v,[o(\"scale\",v)]):(v=e.resolve(g.value.value,[\"--scale\"]),!v&&chunk_GFBUASX3_u(g.value.value)&&(v=`${g.value.value}%`),v?(v=l?`calc(${v} * -1)`:v,[f(),o(\"--tw-scale-x\",v),o(\"--tw-scale-y\",v),o(\"--tw-scale-z\",v),o(\"scale\",\"var(--tw-scale-x) var(--tw-scale-y)\")]):void 0)}}r.functional(\"-scale\",m({negative:!0})),r.functional(\"scale\",m({negative:!1})),i(\"scale\",()=>[{supportsNegative:!0,values:[\"0\",\"50\",\"75\",\"90\",\"95\",\"100\",\"105\",\"110\",\"125\",\"150\",\"200\"],valueThemeKeys:[\"--scale\"]}]);for(let l of[\"x\",\"y\",\"z\"])n(`scale-${l}`,{supportsNegative:!0,themeKeys:[\"--scale\"],handleBareValue:({value:g})=>chunk_GFBUASX3_u(g)?`${g}%`:null,handle:g=>[f(),o(`--tw-scale-${l}`,g),o(\"scale\",`var(--tw-scale-x) var(--tw-scale-y)${l===\"z\"?\" var(--tw-scale-z)\":\"\"}`)]}),i(`scale-${l}`,()=>[{supportsNegative:!0,values:[\"0\",\"50\",\"75\",\"90\",\"95\",\"100\",\"105\",\"110\",\"125\",\"150\",\"200\"],valueThemeKeys:[\"--scale\"]}]);t(\"scale-3d\",[f,[\"scale\",\"var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)\"]]),t(\"rotate-none\",[[\"rotate\",\"none\"]]);function d({negative:l}){return g=>{if(!g.value||g.modifier)return;let v;if(g.value.kind===\"arbitrary\"){v=g.value.value;let C=g.value.dataType??me(v,[\"angle\",\"vector\"]);if(C===\"vector\")return[o(\"rotate\",`${v} var(--tw-rotate)`)];if(C!==\"angle\")return[o(\"rotate\",l?`calc(${v} * -1)`:v)]}else if(v=e.resolve(g.value.value,[\"--rotate\"]),!v&&chunk_GFBUASX3_u(g.value.value)&&(v=`${g.value.value}deg`),!v)return;return[o(\"rotate\",l?`calc(${v} * -1)`:v)]}}r.functional(\"-rotate\",d({negative:!0})),r.functional(\"rotate\",d({negative:!1})),i(\"rotate\",()=>[{supportsNegative:!0,values:[\"0\",\"1\",\"2\",\"3\",\"6\",\"12\",\"45\",\"90\",\"180\"],valueThemeKeys:[\"--rotate\"]}]);{let l=[\"var(--tw-rotate-x,)\",\"var(--tw-rotate-y,)\",\"var(--tw-rotate-z,)\",\"var(--tw-skew-x,)\",\"var(--tw-skew-y,)\"].join(\" \"),g=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-rotate-x\"),chunk_MEY3PWYT_$(\"--tw-rotate-y\"),chunk_MEY3PWYT_$(\"--tw-rotate-z\"),chunk_MEY3PWYT_$(\"--tw-skew-x\"),chunk_MEY3PWYT_$(\"--tw-skew-y\")]);for(let v of[\"x\",\"y\",\"z\"])n(`rotate-${v}`,{supportsNegative:!0,themeKeys:[\"--rotate\"],handleBareValue:({value:C})=>chunk_GFBUASX3_u(C)?`${C}deg`:null,handle:C=>[g(),o(`--tw-rotate-${v}`,`rotate${v.toUpperCase()}(${C})`),o(\"transform\",l)]}),i(`rotate-${v}`,()=>[{supportsNegative:!0,values:[\"0\",\"1\",\"2\",\"3\",\"6\",\"12\",\"45\",\"90\",\"180\"],valueThemeKeys:[\"--rotate\"]}]);n(\"skew\",{supportsNegative:!0,themeKeys:[\"--skew\"],handleBareValue:({value:v})=>chunk_GFBUASX3_u(v)?`${v}deg`:null,handle:v=>[g(),o(\"--tw-skew-x\",`skewX(${v})`),o(\"--tw-skew-y\",`skewY(${v})`),o(\"transform\",l)]}),n(\"skew-x\",{supportsNegative:!0,themeKeys:[\"--skew\"],handleBareValue:({value:v})=>chunk_GFBUASX3_u(v)?`${v}deg`:null,handle:v=>[g(),o(\"--tw-skew-x\",`skewX(${v})`),o(\"transform\",l)]}),n(\"skew-y\",{supportsNegative:!0,themeKeys:[\"--skew\"],handleBareValue:({value:v})=>chunk_GFBUASX3_u(v)?`${v}deg`:null,handle:v=>[g(),o(\"--tw-skew-y\",`skewY(${v})`),o(\"transform\",l)]}),i(\"skew\",()=>[{supportsNegative:!0,values:[\"0\",\"1\",\"2\",\"3\",\"6\",\"12\"],valueThemeKeys:[\"--skew\"]}]),i(\"skew-x\",()=>[{supportsNegative:!0,values:[\"0\",\"1\",\"2\",\"3\",\"6\",\"12\"],valueThemeKeys:[\"--skew\"]}]),i(\"skew-y\",()=>[{supportsNegative:!0,values:[\"0\",\"1\",\"2\",\"3\",\"6\",\"12\"],valueThemeKeys:[\"--skew\"]}]),r.functional(\"transform\",v=>{if(v.modifier)return;let C=null;if(v.value?v.value.kind===\"arbitrary\"&&(C=v.value.value):C=l,C!==null)return[g(),o(\"transform\",C)]}),i(\"transform\",()=>[{hasDefaultValue:!0}]),t(\"transform-cpu\",[[\"transform\",l]]),t(\"transform-gpu\",[[\"transform\",`translateZ(0) ${l}`]]),t(\"transform-none\",[[\"transform\",\"none\"]])}t(\"transform-flat\",[[\"transform-style\",\"flat\"]]),t(\"transform-3d\",[[\"transform-style\",\"preserve-3d\"]]),t(\"transform-content\",[[\"transform-box\",\"content-box\"]]),t(\"transform-border\",[[\"transform-box\",\"border-box\"]]),t(\"transform-fill\",[[\"transform-box\",\"fill-box\"]]),t(\"transform-stroke\",[[\"transform-box\",\"stroke-box\"]]),t(\"transform-view\",[[\"transform-box\",\"view-box\"]]),t(\"backface-visible\",[[\"backface-visibility\",\"visible\"]]),t(\"backface-hidden\",[[\"backface-visibility\",\"hidden\"]]);for(let l of[\"auto\",\"default\",\"pointer\",\"wait\",\"text\",\"move\",\"help\",\"not-allowed\",\"none\",\"context-menu\",\"progress\",\"cell\",\"crosshair\",\"vertical-text\",\"alias\",\"copy\",\"no-drop\",\"grab\",\"grabbing\",\"all-scroll\",\"col-resize\",\"row-resize\",\"n-resize\",\"e-resize\",\"s-resize\",\"w-resize\",\"ne-resize\",\"nw-resize\",\"se-resize\",\"sw-resize\",\"ew-resize\",\"ns-resize\",\"nesw-resize\",\"nwse-resize\",\"zoom-in\",\"zoom-out\"])t(`cursor-${l}`,[[\"cursor\",l]]);n(\"cursor\",{themeKeys:[\"--cursor\"],handle:l=>[o(\"cursor\",l)]});for(let l of[\"auto\",\"none\",\"manipulation\"])t(`touch-${l}`,[[\"touch-action\",l]]);let c=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-pan-x\"),chunk_MEY3PWYT_$(\"--tw-pan-y\"),chunk_MEY3PWYT_$(\"--tw-pinch-zoom\")]);for(let l of[\"x\",\"left\",\"right\"])t(`touch-pan-${l}`,[c,[\"--tw-pan-x\",`pan-${l}`],[\"touch-action\",\"var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)\"]]);for(let l of[\"y\",\"up\",\"down\"])t(`touch-pan-${l}`,[c,[\"--tw-pan-y\",`pan-${l}`],[\"touch-action\",\"var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)\"]]);t(\"touch-pinch-zoom\",[c,[\"--tw-pinch-zoom\",\"pinch-zoom\"],[\"touch-action\",\"var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)\"]]);for(let l of[\"none\",\"text\",\"all\",\"auto\"])t(`select-${l}`,[[\"-webkit-user-select\",l],[\"user-select\",l]]);t(\"resize-none\",[[\"resize\",\"none\"]]),t(\"resize-x\",[[\"resize\",\"horizontal\"]]),t(\"resize-y\",[[\"resize\",\"vertical\"]]),t(\"resize\",[[\"resize\",\"both\"]]),t(\"snap-none\",[[\"scroll-snap-type\",\"none\"]]);let w=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-scroll-snap-strictness\",\"proximity\",\"*\")]);for(let l of[\"x\",\"y\",\"both\"])t(`snap-${l}`,[w,[\"scroll-snap-type\",`${l} var(--tw-scroll-snap-strictness)`]]);t(\"snap-mandatory\",[w,[\"--tw-scroll-snap-strictness\",\"mandatory\"]]),t(\"snap-proximity\",[w,[\"--tw-scroll-snap-strictness\",\"proximity\"]]),t(\"snap-align-none\",[[\"scroll-snap-align\",\"none\"]]),t(\"snap-start\",[[\"scroll-snap-align\",\"start\"]]),t(\"snap-end\",[[\"scroll-snap-align\",\"end\"]]),t(\"snap-center\",[[\"scroll-snap-align\",\"center\"]]),t(\"snap-normal\",[[\"scroll-snap-stop\",\"normal\"]]),t(\"snap-always\",[[\"scroll-snap-stop\",\"always\"]]);for(let[l,g]of[[\"scroll-m\",\"scroll-margin\"],[\"scroll-mx\",\"scroll-margin-inline\"],[\"scroll-my\",\"scroll-margin-block\"],[\"scroll-ms\",\"scroll-margin-inline-start\"],[\"scroll-me\",\"scroll-margin-inline-end\"],[\"scroll-mt\",\"scroll-margin-top\"],[\"scroll-mr\",\"scroll-margin-right\"],[\"scroll-mb\",\"scroll-margin-bottom\"],[\"scroll-ml\",\"scroll-margin-left\"]])a(l,[\"--scroll-margin\",\"--spacing\"],v=>[o(g,v)],{supportsNegative:!0});for(let[l,g]of[[\"scroll-p\",\"scroll-padding\"],[\"scroll-px\",\"scroll-padding-inline\"],[\"scroll-py\",\"scroll-padding-block\"],[\"scroll-ps\",\"scroll-padding-inline-start\"],[\"scroll-pe\",\"scroll-padding-inline-end\"],[\"scroll-pt\",\"scroll-padding-top\"],[\"scroll-pr\",\"scroll-padding-right\"],[\"scroll-pb\",\"scroll-padding-bottom\"],[\"scroll-pl\",\"scroll-padding-left\"]])a(l,[\"--scroll-padding\",\"--spacing\"],v=>[o(g,v)]);t(\"list-inside\",[[\"list-style-position\",\"inside\"]]),t(\"list-outside\",[[\"list-style-position\",\"outside\"]]),n(\"list\",{themeKeys:[\"--list-style-type\"],handle:l=>[o(\"list-style-type\",l)],staticValues:{none:[o(\"list-style-type\",\"none\")],disc:[o(\"list-style-type\",\"disc\")],decimal:[o(\"list-style-type\",\"decimal\")]}}),n(\"list-image\",{themeKeys:[\"--list-style-image\"],handle:l=>[o(\"list-style-image\",l)],staticValues:{none:[o(\"list-style-image\",\"none\")]}}),t(\"appearance-none\",[[\"appearance\",\"none\"]]),t(\"appearance-auto\",[[\"appearance\",\"auto\"]]),t(\"scheme-normal\",[[\"color-scheme\",\"normal\"]]),t(\"scheme-dark\",[[\"color-scheme\",\"dark\"]]),t(\"scheme-light\",[[\"color-scheme\",\"light\"]]),t(\"scheme-light-dark\",[[\"color-scheme\",\"light dark\"]]),t(\"scheme-only-dark\",[[\"color-scheme\",\"only dark\"]]),t(\"scheme-only-light\",[[\"color-scheme\",\"only light\"]]),n(\"columns\",{themeKeys:[\"--columns\",\"--container\"],handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?l:null,handle:l=>[o(\"columns\",l)],staticValues:{auto:[o(\"columns\",\"auto\")]}}),i(\"columns\",()=>[{values:Array.from({length:12},(l,g)=>`${g+1}`),valueThemeKeys:[\"--columns\",\"--container\"]}]);for(let l of[\"auto\",\"avoid\",\"all\",\"avoid-page\",\"page\",\"left\",\"right\",\"column\"])t(`break-before-${l}`,[[\"break-before\",l]]);for(let l of[\"auto\",\"avoid\",\"avoid-page\",\"avoid-column\"])t(`break-inside-${l}`,[[\"break-inside\",l]]);for(let l of[\"auto\",\"avoid\",\"all\",\"avoid-page\",\"page\",\"left\",\"right\",\"column\"])t(`break-after-${l}`,[[\"break-after\",l]]);t(\"grid-flow-row\",[[\"grid-auto-flow\",\"row\"]]),t(\"grid-flow-col\",[[\"grid-auto-flow\",\"column\"]]),t(\"grid-flow-dense\",[[\"grid-auto-flow\",\"dense\"]]),t(\"grid-flow-row-dense\",[[\"grid-auto-flow\",\"row dense\"]]),t(\"grid-flow-col-dense\",[[\"grid-auto-flow\",\"column dense\"]]),n(\"auto-cols\",{themeKeys:[\"--grid-auto-columns\"],handle:l=>[o(\"grid-auto-columns\",l)],staticValues:{auto:[o(\"grid-auto-columns\",\"auto\")],min:[o(\"grid-auto-columns\",\"min-content\")],max:[o(\"grid-auto-columns\",\"max-content\")],fr:[o(\"grid-auto-columns\",\"minmax(0, 1fr)\")]}}),n(\"auto-rows\",{themeKeys:[\"--grid-auto-rows\"],handle:l=>[o(\"grid-auto-rows\",l)],staticValues:{auto:[o(\"grid-auto-rows\",\"auto\")],min:[o(\"grid-auto-rows\",\"min-content\")],max:[o(\"grid-auto-rows\",\"max-content\")],fr:[o(\"grid-auto-rows\",\"minmax(0, 1fr)\")]}}),n(\"grid-cols\",{themeKeys:[\"--grid-template-columns\"],handleBareValue:({value:l})=>pe(l)?`repeat(${l}, minmax(0, 1fr))`:null,handle:l=>[o(\"grid-template-columns\",l)],staticValues:{none:[o(\"grid-template-columns\",\"none\")],subgrid:[o(\"grid-template-columns\",\"subgrid\")]}}),n(\"grid-rows\",{themeKeys:[\"--grid-template-rows\"],handleBareValue:({value:l})=>pe(l)?`repeat(${l}, minmax(0, 1fr))`:null,handle:l=>[o(\"grid-template-rows\",l)],staticValues:{none:[o(\"grid-template-rows\",\"none\")],subgrid:[o(\"grid-template-rows\",\"subgrid\")]}}),i(\"grid-cols\",()=>[{values:Array.from({length:12},(l,g)=>`${g+1}`),valueThemeKeys:[\"--grid-template-columns\"]}]),i(\"grid-rows\",()=>[{values:Array.from({length:12},(l,g)=>`${g+1}`),valueThemeKeys:[\"--grid-template-rows\"]}]),t(\"flex-row\",[[\"flex-direction\",\"row\"]]),t(\"flex-row-reverse\",[[\"flex-direction\",\"row-reverse\"]]),t(\"flex-col\",[[\"flex-direction\",\"column\"]]),t(\"flex-col-reverse\",[[\"flex-direction\",\"column-reverse\"]]),t(\"flex-wrap\",[[\"flex-wrap\",\"wrap\"]]),t(\"flex-nowrap\",[[\"flex-wrap\",\"nowrap\"]]),t(\"flex-wrap-reverse\",[[\"flex-wrap\",\"wrap-reverse\"]]),t(\"place-content-center\",[[\"place-content\",\"center\"]]),t(\"place-content-start\",[[\"place-content\",\"start\"]]),t(\"place-content-end\",[[\"place-content\",\"end\"]]),t(\"place-content-center-safe\",[[\"place-content\",\"safe center\"]]),t(\"place-content-end-safe\",[[\"place-content\",\"safe end\"]]),t(\"place-content-between\",[[\"place-content\",\"space-between\"]]),t(\"place-content-around\",[[\"place-content\",\"space-around\"]]),t(\"place-content-evenly\",[[\"place-content\",\"space-evenly\"]]),t(\"place-content-baseline\",[[\"place-content\",\"baseline\"]]),t(\"place-content-stretch\",[[\"place-content\",\"stretch\"]]),t(\"place-items-center\",[[\"place-items\",\"center\"]]),t(\"place-items-start\",[[\"place-items\",\"start\"]]),t(\"place-items-end\",[[\"place-items\",\"end\"]]),t(\"place-items-center-safe\",[[\"place-items\",\"safe center\"]]),t(\"place-items-end-safe\",[[\"place-items\",\"safe end\"]]),t(\"place-items-baseline\",[[\"place-items\",\"baseline\"]]),t(\"place-items-stretch\",[[\"place-items\",\"stretch\"]]),t(\"content-normal\",[[\"align-content\",\"normal\"]]),t(\"content-center\",[[\"align-content\",\"center\"]]),t(\"content-start\",[[\"align-content\",\"flex-start\"]]),t(\"content-end\",[[\"align-content\",\"flex-end\"]]),t(\"content-center-safe\",[[\"align-content\",\"safe center\"]]),t(\"content-end-safe\",[[\"align-content\",\"safe flex-end\"]]),t(\"content-between\",[[\"align-content\",\"space-between\"]]),t(\"content-around\",[[\"align-content\",\"space-around\"]]),t(\"content-evenly\",[[\"align-content\",\"space-evenly\"]]),t(\"content-baseline\",[[\"align-content\",\"baseline\"]]),t(\"content-stretch\",[[\"align-content\",\"stretch\"]]),t(\"items-center\",[[\"align-items\",\"center\"]]),t(\"items-start\",[[\"align-items\",\"flex-start\"]]),t(\"items-end\",[[\"align-items\",\"flex-end\"]]),t(\"items-center-safe\",[[\"align-items\",\"safe center\"]]),t(\"items-end-safe\",[[\"align-items\",\"safe flex-end\"]]),t(\"items-baseline\",[[\"align-items\",\"baseline\"]]),t(\"items-baseline-last\",[[\"align-items\",\"last baseline\"]]),t(\"items-stretch\",[[\"align-items\",\"stretch\"]]),t(\"justify-normal\",[[\"justify-content\",\"normal\"]]),t(\"justify-center\",[[\"justify-content\",\"center\"]]),t(\"justify-start\",[[\"justify-content\",\"flex-start\"]]),t(\"justify-end\",[[\"justify-content\",\"flex-end\"]]),t(\"justify-center-safe\",[[\"justify-content\",\"safe center\"]]),t(\"justify-end-safe\",[[\"justify-content\",\"safe flex-end\"]]),t(\"justify-between\",[[\"justify-content\",\"space-between\"]]),t(\"justify-around\",[[\"justify-content\",\"space-around\"]]),t(\"justify-evenly\",[[\"justify-content\",\"space-evenly\"]]),t(\"justify-baseline\",[[\"justify-content\",\"baseline\"]]),t(\"justify-stretch\",[[\"justify-content\",\"stretch\"]]),t(\"justify-items-normal\",[[\"justify-items\",\"normal\"]]),t(\"justify-items-center\",[[\"justify-items\",\"center\"]]),t(\"justify-items-start\",[[\"justify-items\",\"start\"]]),t(\"justify-items-end\",[[\"justify-items\",\"end\"]]),t(\"justify-items-center-safe\",[[\"justify-items\",\"safe center\"]]),t(\"justify-items-end-safe\",[[\"justify-items\",\"safe end\"]]),t(\"justify-items-stretch\",[[\"justify-items\",\"stretch\"]]),a(\"gap\",[\"--gap\",\"--spacing\"],l=>[o(\"gap\",l)]),a(\"gap-x\",[\"--gap\",\"--spacing\"],l=>[o(\"column-gap\",l)]),a(\"gap-y\",[\"--gap\",\"--spacing\"],l=>[o(\"row-gap\",l)]),a(\"space-x\",[\"--space\",\"--spacing\"],l=>[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-space-x-reverse\",\"0\")]),chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-sort\",\"row-gap\"),o(\"--tw-space-x-reverse\",\"0\"),o(\"margin-inline-start\",`calc(${l} * var(--tw-space-x-reverse))`),o(\"margin-inline-end\",`calc(${l} * calc(1 - var(--tw-space-x-reverse)))`)])],{supportsNegative:!0}),a(\"space-y\",[\"--space\",\"--spacing\"],l=>[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-space-y-reverse\",\"0\")]),chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-sort\",\"column-gap\"),o(\"--tw-space-y-reverse\",\"0\"),o(\"margin-block-start\",`calc(${l} * var(--tw-space-y-reverse))`),o(\"margin-block-end\",`calc(${l} * calc(1 - var(--tw-space-y-reverse)))`)])],{supportsNegative:!0}),t(\"space-x-reverse\",[()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-space-x-reverse\",\"0\")]),()=>chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-sort\",\"row-gap\"),o(\"--tw-space-x-reverse\",\"1\")])]),t(\"space-y-reverse\",[()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-space-y-reverse\",\"0\")]),()=>chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-sort\",\"column-gap\"),o(\"--tw-space-y-reverse\",\"1\")])]),t(\"accent-auto\",[[\"accent-color\",\"auto\"]]),s(\"accent\",{themeKeys:[\"--accent-color\",\"--color\"],handle:l=>[o(\"accent-color\",l)]}),s(\"caret\",{themeKeys:[\"--caret-color\",\"--color\"],handle:l=>[o(\"caret-color\",l)]}),s(\"divide\",{themeKeys:[\"--divide-color\",\"--border-color\",\"--color\"],handle:l=>[chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-sort\",\"divide-color\"),o(\"border-color\",l)])]}),t(\"place-self-auto\",[[\"place-self\",\"auto\"]]),t(\"place-self-start\",[[\"place-self\",\"start\"]]),t(\"place-self-end\",[[\"place-self\",\"end\"]]),t(\"place-self-center\",[[\"place-self\",\"center\"]]),t(\"place-self-end-safe\",[[\"place-self\",\"safe end\"]]),t(\"place-self-center-safe\",[[\"place-self\",\"safe center\"]]),t(\"place-self-stretch\",[[\"place-self\",\"stretch\"]]),t(\"self-auto\",[[\"align-self\",\"auto\"]]),t(\"self-start\",[[\"align-self\",\"flex-start\"]]),t(\"self-end\",[[\"align-self\",\"flex-end\"]]),t(\"self-center\",[[\"align-self\",\"center\"]]),t(\"self-end-safe\",[[\"align-self\",\"safe flex-end\"]]),t(\"self-center-safe\",[[\"align-self\",\"safe center\"]]),t(\"self-stretch\",[[\"align-self\",\"stretch\"]]),t(\"self-baseline\",[[\"align-self\",\"baseline\"]]),t(\"self-baseline-last\",[[\"align-self\",\"last baseline\"]]),t(\"justify-self-auto\",[[\"justify-self\",\"auto\"]]),t(\"justify-self-start\",[[\"justify-self\",\"flex-start\"]]),t(\"justify-self-end\",[[\"justify-self\",\"flex-end\"]]),t(\"justify-self-center\",[[\"justify-self\",\"center\"]]),t(\"justify-self-end-safe\",[[\"justify-self\",\"safe flex-end\"]]),t(\"justify-self-center-safe\",[[\"justify-self\",\"safe center\"]]),t(\"justify-self-stretch\",[[\"justify-self\",\"stretch\"]]);for(let l of[\"auto\",\"hidden\",\"clip\",\"visible\",\"scroll\"])t(`overflow-${l}`,[[\"overflow\",l]]),t(`overflow-x-${l}`,[[\"overflow-x\",l]]),t(`overflow-y-${l}`,[[\"overflow-y\",l]]);for(let l of[\"auto\",\"contain\",\"none\"])t(`overscroll-${l}`,[[\"overscroll-behavior\",l]]),t(`overscroll-x-${l}`,[[\"overscroll-behavior-x\",l]]),t(`overscroll-y-${l}`,[[\"overscroll-behavior-y\",l]]);t(\"scroll-auto\",[[\"scroll-behavior\",\"auto\"]]),t(\"scroll-smooth\",[[\"scroll-behavior\",\"smooth\"]]),t(\"truncate\",[[\"overflow\",\"hidden\"],[\"text-overflow\",\"ellipsis\"],[\"white-space\",\"nowrap\"]]),t(\"text-ellipsis\",[[\"text-overflow\",\"ellipsis\"]]),t(\"text-clip\",[[\"text-overflow\",\"clip\"]]),t(\"hyphens-none\",[[\"-webkit-hyphens\",\"none\"],[\"hyphens\",\"none\"]]),t(\"hyphens-manual\",[[\"-webkit-hyphens\",\"manual\"],[\"hyphens\",\"manual\"]]),t(\"hyphens-auto\",[[\"-webkit-hyphens\",\"auto\"],[\"hyphens\",\"auto\"]]),t(\"whitespace-normal\",[[\"white-space\",\"normal\"]]),t(\"whitespace-nowrap\",[[\"white-space\",\"nowrap\"]]),t(\"whitespace-pre\",[[\"white-space\",\"pre\"]]),t(\"whitespace-pre-line\",[[\"white-space\",\"pre-line\"]]),t(\"whitespace-pre-wrap\",[[\"white-space\",\"pre-wrap\"]]),t(\"whitespace-break-spaces\",[[\"white-space\",\"break-spaces\"]]),t(\"text-wrap\",[[\"text-wrap\",\"wrap\"]]),t(\"text-nowrap\",[[\"text-wrap\",\"nowrap\"]]),t(\"text-balance\",[[\"text-wrap\",\"balance\"]]),t(\"text-pretty\",[[\"text-wrap\",\"pretty\"]]),t(\"break-normal\",[[\"overflow-wrap\",\"normal\"],[\"word-break\",\"normal\"]]),t(\"break-all\",[[\"word-break\",\"break-all\"]]),t(\"break-keep\",[[\"word-break\",\"keep-all\"]]),t(\"wrap-anywhere\",[[\"overflow-wrap\",\"anywhere\"]]),t(\"wrap-break-word\",[[\"overflow-wrap\",\"break-word\"]]),t(\"wrap-normal\",[[\"overflow-wrap\",\"normal\"]]);for(let[l,g]of[[\"rounded\",[\"border-radius\"]],[\"rounded-s\",[\"border-start-start-radius\",\"border-end-start-radius\"]],[\"rounded-e\",[\"border-start-end-radius\",\"border-end-end-radius\"]],[\"rounded-t\",[\"border-top-left-radius\",\"border-top-right-radius\"]],[\"rounded-r\",[\"border-top-right-radius\",\"border-bottom-right-radius\"]],[\"rounded-b\",[\"border-bottom-right-radius\",\"border-bottom-left-radius\"]],[\"rounded-l\",[\"border-top-left-radius\",\"border-bottom-left-radius\"]],[\"rounded-ss\",[\"border-start-start-radius\"]],[\"rounded-se\",[\"border-start-end-radius\"]],[\"rounded-ee\",[\"border-end-end-radius\"]],[\"rounded-es\",[\"border-end-start-radius\"]],[\"rounded-tl\",[\"border-top-left-radius\"]],[\"rounded-tr\",[\"border-top-right-radius\"]],[\"rounded-br\",[\"border-bottom-right-radius\"]],[\"rounded-bl\",[\"border-bottom-left-radius\"]]])n(l,{themeKeys:[\"--radius\"],handle:v=>g.map(C=>o(C,v)),staticValues:{none:g.map(v=>o(v,\"0\")),full:g.map(v=>o(v,\"calc(infinity * 1px)\"))}});t(\"border-solid\",[[\"--tw-border-style\",\"solid\"],[\"border-style\",\"solid\"]]),t(\"border-dashed\",[[\"--tw-border-style\",\"dashed\"],[\"border-style\",\"dashed\"]]),t(\"border-dotted\",[[\"--tw-border-style\",\"dotted\"],[\"border-style\",\"dotted\"]]),t(\"border-double\",[[\"--tw-border-style\",\"double\"],[\"border-style\",\"double\"]]),t(\"border-hidden\",[[\"--tw-border-style\",\"hidden\"],[\"border-style\",\"hidden\"]]),t(\"border-none\",[[\"--tw-border-style\",\"none\"],[\"border-style\",\"none\"]]);{let g=function(v,C){r.functional(v,b=>{if(!b.value){if(b.modifier)return;let S=e.get([\"--default-border-width\"])??\"1px\",D=C.width(S);return D?[l(),...D]:void 0}if(b.value.kind===\"arbitrary\"){let S=b.value.value;switch(b.value.dataType??me(S,[\"color\",\"line-width\",\"length\"])){case\"line-width\":case\"length\":{if(b.modifier)return;let T=C.width(S);return T?[l(),...T]:void 0}default:return S=chunk_MEY3PWYT_X(S,b.modifier,e),S===null?void 0:C.color(S)}}{let S=chunk_MEY3PWYT_te(b,e,[\"--border-color\",\"--color\"]);if(S)return C.color(S)}{if(b.modifier)return;let S=e.resolve(b.value.value,[\"--border-width\"]);if(S){let D=C.width(S);return D?[l(),...D]:void 0}if(chunk_GFBUASX3_u(b.value.value)){let D=C.width(`${b.value.value}px`);return D?[l(),...D]:void 0}}}),i(v,()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--border-color\",\"--color\"],modifiers:Array.from({length:21},(b,S)=>`${S*5}`),hasDefaultValue:!0},{values:[\"0\",\"2\",\"4\",\"8\"],valueThemeKeys:[\"--border-width\"]}])};var _=g;let l=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-border-style\",\"solid\")]);g(\"border\",{width:v=>[o(\"border-style\",\"var(--tw-border-style)\"),o(\"border-width\",v)],color:v=>[o(\"border-color\",v)]}),g(\"border-x\",{width:v=>[o(\"border-inline-style\",\"var(--tw-border-style)\"),o(\"border-inline-width\",v)],color:v=>[o(\"border-inline-color\",v)]}),g(\"border-y\",{width:v=>[o(\"border-block-style\",\"var(--tw-border-style)\"),o(\"border-block-width\",v)],color:v=>[o(\"border-block-color\",v)]}),g(\"border-s\",{width:v=>[o(\"border-inline-start-style\",\"var(--tw-border-style)\"),o(\"border-inline-start-width\",v)],color:v=>[o(\"border-inline-start-color\",v)]}),g(\"border-e\",{width:v=>[o(\"border-inline-end-style\",\"var(--tw-border-style)\"),o(\"border-inline-end-width\",v)],color:v=>[o(\"border-inline-end-color\",v)]}),g(\"border-t\",{width:v=>[o(\"border-top-style\",\"var(--tw-border-style)\"),o(\"border-top-width\",v)],color:v=>[o(\"border-top-color\",v)]}),g(\"border-r\",{width:v=>[o(\"border-right-style\",\"var(--tw-border-style)\"),o(\"border-right-width\",v)],color:v=>[o(\"border-right-color\",v)]}),g(\"border-b\",{width:v=>[o(\"border-bottom-style\",\"var(--tw-border-style)\"),o(\"border-bottom-width\",v)],color:v=>[o(\"border-bottom-color\",v)]}),g(\"border-l\",{width:v=>[o(\"border-left-style\",\"var(--tw-border-style)\"),o(\"border-left-width\",v)],color:v=>[o(\"border-left-color\",v)]}),n(\"divide-x\",{defaultValue:e.get([\"--default-border-width\"])??\"1px\",themeKeys:[\"--divide-width\",\"--border-width\"],handleBareValue:({value:v})=>chunk_GFBUASX3_u(v)?`${v}px`:null,handle:v=>[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-divide-x-reverse\",\"0\")]),chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-sort\",\"divide-x-width\"),l(),o(\"--tw-divide-x-reverse\",\"0\"),o(\"border-inline-style\",\"var(--tw-border-style)\"),o(\"border-inline-start-width\",`calc(${v} * var(--tw-divide-x-reverse))`),o(\"border-inline-end-width\",`calc(${v} * calc(1 - var(--tw-divide-x-reverse)))`)])]}),n(\"divide-y\",{defaultValue:e.get([\"--default-border-width\"])??\"1px\",themeKeys:[\"--divide-width\",\"--border-width\"],handleBareValue:({value:v})=>chunk_GFBUASX3_u(v)?`${v}px`:null,handle:v=>[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-divide-y-reverse\",\"0\")]),chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-sort\",\"divide-y-width\"),l(),o(\"--tw-divide-y-reverse\",\"0\"),o(\"border-bottom-style\",\"var(--tw-border-style)\"),o(\"border-top-style\",\"var(--tw-border-style)\"),o(\"border-top-width\",`calc(${v} * var(--tw-divide-y-reverse))`),o(\"border-bottom-width\",`calc(${v} * calc(1 - var(--tw-divide-y-reverse)))`)])]}),i(\"divide-x\",()=>[{values:[\"0\",\"2\",\"4\",\"8\"],valueThemeKeys:[\"--divide-width\",\"--border-width\"],hasDefaultValue:!0}]),i(\"divide-y\",()=>[{values:[\"0\",\"2\",\"4\",\"8\"],valueThemeKeys:[\"--divide-width\",\"--border-width\"],hasDefaultValue:!0}]),t(\"divide-x-reverse\",[()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-divide-x-reverse\",\"0\")]),()=>chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-divide-x-reverse\",\"1\")])]),t(\"divide-y-reverse\",[()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-divide-y-reverse\",\"0\")]),()=>chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-divide-y-reverse\",\"1\")])]);for(let v of[\"solid\",\"dashed\",\"dotted\",\"double\",\"none\"])t(`divide-${v}`,[()=>chunk_MEY3PWYT_G(\":where(& > :not(:last-child))\",[o(\"--tw-sort\",\"divide-style\"),o(\"--tw-border-style\",v),o(\"border-style\",v)])])}t(\"bg-auto\",[[\"background-size\",\"auto\"]]),t(\"bg-cover\",[[\"background-size\",\"cover\"]]),t(\"bg-contain\",[[\"background-size\",\"contain\"]]),n(\"bg-size\",{handle(l){if(l)return[o(\"background-size\",l)]}}),t(\"bg-fixed\",[[\"background-attachment\",\"fixed\"]]),t(\"bg-local\",[[\"background-attachment\",\"local\"]]),t(\"bg-scroll\",[[\"background-attachment\",\"scroll\"]]),t(\"bg-top\",[[\"background-position\",\"top\"]]),t(\"bg-top-left\",[[\"background-position\",\"left top\"]]),t(\"bg-top-right\",[[\"background-position\",\"right top\"]]),t(\"bg-bottom\",[[\"background-position\",\"bottom\"]]),t(\"bg-bottom-left\",[[\"background-position\",\"left bottom\"]]),t(\"bg-bottom-right\",[[\"background-position\",\"right bottom\"]]),t(\"bg-left\",[[\"background-position\",\"left\"]]),t(\"bg-right\",[[\"background-position\",\"right\"]]),t(\"bg-center\",[[\"background-position\",\"center\"]]),n(\"bg-position\",{handle(l){if(l)return[o(\"background-position\",l)]}}),t(\"bg-repeat\",[[\"background-repeat\",\"repeat\"]]),t(\"bg-no-repeat\",[[\"background-repeat\",\"no-repeat\"]]),t(\"bg-repeat-x\",[[\"background-repeat\",\"repeat-x\"]]),t(\"bg-repeat-y\",[[\"background-repeat\",\"repeat-y\"]]),t(\"bg-repeat-round\",[[\"background-repeat\",\"round\"]]),t(\"bg-repeat-space\",[[\"background-repeat\",\"space\"]]),t(\"bg-none\",[[\"background-image\",\"none\"]]);{let v=function(S){let D=\"in oklab\";if(S?.kind===\"named\")switch(S.value){case\"longer\":case\"shorter\":case\"increasing\":case\"decreasing\":D=`in oklch ${S.value} hue`;break;default:D=`in ${S.value}`}else S?.kind===\"arbitrary\"&&(D=S.value);return D},C=function({negative:S}){return D=>{if(!D.value)return;if(D.value.kind===\"arbitrary\"){if(D.modifier)return;let z=D.value.value;switch(D.value.dataType??me(z,[\"angle\"])){case\"angle\":return z=S?`calc(${z} * -1)`:`${z}`,[o(\"--tw-gradient-position\",z),o(\"background-image\",`linear-gradient(var(--tw-gradient-stops,${z}))`)];default:return S?void 0:[o(\"--tw-gradient-position\",z),o(\"background-image\",`linear-gradient(var(--tw-gradient-stops,${z}))`)]}}let T=D.value.value;if(!S&&g.has(T))T=g.get(T);else if(chunk_GFBUASX3_u(T))T=S?`calc(${T}deg * -1)`:`${T}deg`;else return;let N=v(D.modifier);return[o(\"--tw-gradient-position\",`${T}`),chunk_MEY3PWYT_J(\"@supports (background-image: linear-gradient(in lab, red, red))\",[o(\"--tw-gradient-position\",`${T} ${N}`)]),o(\"background-image\",\"linear-gradient(var(--tw-gradient-stops))\")]}},b=function({negative:S}){return D=>{if(D.value?.kind===\"arbitrary\"){if(D.modifier)return;let z=D.value.value;return[o(\"--tw-gradient-position\",z),o(\"background-image\",`conic-gradient(var(--tw-gradient-stops,${z}))`)]}let T=v(D.modifier);if(!D.value)return[o(\"--tw-gradient-position\",T),o(\"background-image\",\"conic-gradient(var(--tw-gradient-stops))\")];let N=D.value.value;if(chunk_GFBUASX3_u(N))return N=S?`calc(${N}deg * -1)`:`${N}deg`,[o(\"--tw-gradient-position\",`from ${N} ${T}`),o(\"background-image\",\"conic-gradient(var(--tw-gradient-stops))\")]}};var M=v,Y=C,q=b;let l=[\"oklab\",\"oklch\",\"srgb\",\"hsl\",\"longer\",\"shorter\",\"increasing\",\"decreasing\"],g=new Map([[\"to-t\",\"to top\"],[\"to-tr\",\"to top right\"],[\"to-r\",\"to right\"],[\"to-br\",\"to bottom right\"],[\"to-b\",\"to bottom\"],[\"to-bl\",\"to bottom left\"],[\"to-l\",\"to left\"],[\"to-tl\",\"to top left\"]]);r.functional(\"-bg-linear\",C({negative:!0})),r.functional(\"bg-linear\",C({negative:!1})),i(\"bg-linear\",()=>[{values:[...g.keys()],modifiers:l},{values:[\"0\",\"30\",\"60\",\"90\",\"120\",\"150\",\"180\",\"210\",\"240\",\"270\",\"300\",\"330\"],supportsNegative:!0,modifiers:l}]),r.functional(\"-bg-conic\",b({negative:!0})),r.functional(\"bg-conic\",b({negative:!1})),i(\"bg-conic\",()=>[{hasDefaultValue:!0,modifiers:l},{values:[\"0\",\"30\",\"60\",\"90\",\"120\",\"150\",\"180\",\"210\",\"240\",\"270\",\"300\",\"330\"],supportsNegative:!0,modifiers:l}]),r.functional(\"bg-radial\",S=>{if(!S.value){let D=v(S.modifier);return[o(\"--tw-gradient-position\",D),o(\"background-image\",\"radial-gradient(var(--tw-gradient-stops))\")]}if(S.value.kind===\"arbitrary\"){if(S.modifier)return;let D=S.value.value;return[o(\"--tw-gradient-position\",D),o(\"background-image\",`radial-gradient(var(--tw-gradient-stops,${D}))`)]}}),i(\"bg-radial\",()=>[{hasDefaultValue:!0,modifiers:l}])}r.functional(\"bg\",l=>{if(l.value){if(l.value.kind===\"arbitrary\"){let g=l.value.value;switch(l.value.dataType??me(g,[\"image\",\"color\",\"percentage\",\"position\",\"bg-size\",\"length\",\"url\"])){case\"percentage\":case\"position\":return l.modifier?void 0:[o(\"background-position\",g)];case\"bg-size\":case\"length\":case\"size\":return l.modifier?void 0:[o(\"background-size\",g)];case\"image\":case\"url\":return l.modifier?void 0:[o(\"background-image\",g)];default:return g=chunk_MEY3PWYT_X(g,l.modifier,e),g===null?void 0:[o(\"background-color\",g)]}}{let g=chunk_MEY3PWYT_te(l,e,[\"--background-color\",\"--color\"]);if(g)return[o(\"background-color\",g)]}{if(l.modifier)return;let g=e.resolve(l.value.value,[\"--background-image\"]);if(g)return[o(\"background-image\",g)]}}}),i(\"bg\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--background-color\",\"--color\"],modifiers:Array.from({length:21},(l,g)=>`${g*5}`)},{values:[],valueThemeKeys:[\"--background-image\"]}]);let h=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-gradient-position\"),chunk_MEY3PWYT_$(\"--tw-gradient-from\",\"#0000\",\"<color>\"),chunk_MEY3PWYT_$(\"--tw-gradient-via\",\"#0000\",\"<color>\"),chunk_MEY3PWYT_$(\"--tw-gradient-to\",\"#0000\",\"<color>\"),chunk_MEY3PWYT_$(\"--tw-gradient-stops\"),chunk_MEY3PWYT_$(\"--tw-gradient-via-stops\"),chunk_MEY3PWYT_$(\"--tw-gradient-from-position\",\"0%\",\"<length-percentage>\"),chunk_MEY3PWYT_$(\"--tw-gradient-via-position\",\"50%\",\"<length-percentage>\"),chunk_MEY3PWYT_$(\"--tw-gradient-to-position\",\"100%\",\"<length-percentage>\")]);function y(l,g){r.functional(l,v=>{if(v.value){if(v.value.kind===\"arbitrary\"){let C=v.value.value;switch(v.value.dataType??me(C,[\"color\",\"length\",\"percentage\"])){case\"length\":case\"percentage\":return v.modifier?void 0:g.position(C);default:return C=chunk_MEY3PWYT_X(C,v.modifier,e),C===null?void 0:g.color(C)}}{let C=chunk_MEY3PWYT_te(v,e,[\"--background-color\",\"--color\"]);if(C)return g.color(C)}{if(v.modifier)return;let C=e.resolve(v.value.value,[\"--gradient-color-stop-positions\"]);if(C)return g.position(C);if(v.value.value[v.value.value.length-1]===\"%\"&&chunk_GFBUASX3_u(v.value.value.slice(0,-1)))return g.position(v.value.value)}}}),i(l,()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--background-color\",\"--color\"],modifiers:Array.from({length:21},(v,C)=>`${C*5}`)},{values:Array.from({length:21},(v,C)=>`${C*5}%`),valueThemeKeys:[\"--gradient-color-stop-positions\"]}])}y(\"from\",{color:l=>[h(),o(\"--tw-sort\",\"--tw-gradient-from\"),o(\"--tw-gradient-from\",l),o(\"--tw-gradient-stops\",\"var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))\")],position:l=>[h(),o(\"--tw-gradient-from-position\",l)]}),t(\"via-none\",[[\"--tw-gradient-via-stops\",\"initial\"]]),y(\"via\",{color:l=>[h(),o(\"--tw-sort\",\"--tw-gradient-via\"),o(\"--tw-gradient-via\",l),o(\"--tw-gradient-via-stops\",\"var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position)\"),o(\"--tw-gradient-stops\",\"var(--tw-gradient-via-stops)\")],position:l=>[h(),o(\"--tw-gradient-via-position\",l)]}),y(\"to\",{color:l=>[h(),o(\"--tw-sort\",\"--tw-gradient-to\"),o(\"--tw-gradient-to\",l),o(\"--tw-gradient-stops\",\"var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))\")],position:l=>[h(),o(\"--tw-gradient-to-position\",l)]}),t(\"mask-none\",[[\"mask-image\",\"none\"]]),r.functional(\"mask\",l=>{if(!l.value||l.modifier||l.value.kind!==\"arbitrary\")return;let g=l.value.value;switch(l.value.dataType??me(g,[\"image\",\"percentage\",\"position\",\"bg-size\",\"length\",\"url\"])){case\"percentage\":case\"position\":return l.modifier?void 0:[o(\"mask-position\",g)];case\"bg-size\":case\"length\":case\"size\":return[o(\"mask-size\",g)];case\"image\":case\"url\":default:return[o(\"mask-image\",g)]}}),t(\"mask-add\",[[\"mask-composite\",\"add\"]]),t(\"mask-subtract\",[[\"mask-composite\",\"subtract\"]]),t(\"mask-intersect\",[[\"mask-composite\",\"intersect\"]]),t(\"mask-exclude\",[[\"mask-composite\",\"exclude\"]]),t(\"mask-alpha\",[[\"mask-mode\",\"alpha\"]]),t(\"mask-luminance\",[[\"mask-mode\",\"luminance\"]]),t(\"mask-match\",[[\"mask-mode\",\"match-source\"]]),t(\"mask-type-alpha\",[[\"mask-type\",\"alpha\"]]),t(\"mask-type-luminance\",[[\"mask-type\",\"luminance\"]]),t(\"mask-auto\",[[\"mask-size\",\"auto\"]]),t(\"mask-cover\",[[\"mask-size\",\"cover\"]]),t(\"mask-contain\",[[\"mask-size\",\"contain\"]]),n(\"mask-size\",{handle(l){if(l)return[o(\"mask-size\",l)]}}),t(\"mask-top\",[[\"mask-position\",\"top\"]]),t(\"mask-top-left\",[[\"mask-position\",\"left top\"]]),t(\"mask-top-right\",[[\"mask-position\",\"right top\"]]),t(\"mask-bottom\",[[\"mask-position\",\"bottom\"]]),t(\"mask-bottom-left\",[[\"mask-position\",\"left bottom\"]]),t(\"mask-bottom-right\",[[\"mask-position\",\"right bottom\"]]),t(\"mask-left\",[[\"mask-position\",\"left\"]]),t(\"mask-right\",[[\"mask-position\",\"right\"]]),t(\"mask-center\",[[\"mask-position\",\"center\"]]),n(\"mask-position\",{handle(l){if(l)return[o(\"mask-position\",l)]}}),t(\"mask-repeat\",[[\"mask-repeat\",\"repeat\"]]),t(\"mask-no-repeat\",[[\"mask-repeat\",\"no-repeat\"]]),t(\"mask-repeat-x\",[[\"mask-repeat\",\"repeat-x\"]]),t(\"mask-repeat-y\",[[\"mask-repeat\",\"repeat-y\"]]),t(\"mask-repeat-round\",[[\"mask-repeat\",\"round\"]]),t(\"mask-repeat-space\",[[\"mask-repeat\",\"space\"]]),t(\"mask-clip-border\",[[\"mask-clip\",\"border-box\"]]),t(\"mask-clip-padding\",[[\"mask-clip\",\"padding-box\"]]),t(\"mask-clip-content\",[[\"mask-clip\",\"content-box\"]]),t(\"mask-clip-fill\",[[\"mask-clip\",\"fill-box\"]]),t(\"mask-clip-stroke\",[[\"mask-clip\",\"stroke-box\"]]),t(\"mask-clip-view\",[[\"mask-clip\",\"view-box\"]]),t(\"mask-no-clip\",[[\"mask-clip\",\"no-clip\"]]),t(\"mask-origin-border\",[[\"mask-origin\",\"border-box\"]]),t(\"mask-origin-padding\",[[\"mask-origin\",\"padding-box\"]]),t(\"mask-origin-content\",[[\"mask-origin\",\"content-box\"]]),t(\"mask-origin-fill\",[[\"mask-origin\",\"fill-box\"]]),t(\"mask-origin-stroke\",[[\"mask-origin\",\"stroke-box\"]]),t(\"mask-origin-view\",[[\"mask-origin\",\"view-box\"]]);let x=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-mask-linear\",\"linear-gradient(#fff, #fff)\"),chunk_MEY3PWYT_$(\"--tw-mask-radial\",\"linear-gradient(#fff, #fff)\"),chunk_MEY3PWYT_$(\"--tw-mask-conic\",\"linear-gradient(#fff, #fff)\")]);function V(l,g){r.functional(l,v=>{if(v.value){if(v.value.kind===\"arbitrary\"){let C=v.value.value;switch(v.value.dataType??me(C,[\"length\",\"percentage\",\"color\"])){case\"color\":return C=chunk_MEY3PWYT_X(C,v.modifier,e),C===null?void 0:g.color(C);case\"percentage\":return v.modifier||!chunk_GFBUASX3_u(C.slice(0,-1))?void 0:g.position(C);default:return v.modifier?void 0:g.position(C)}}{let C=chunk_MEY3PWYT_te(v,e,[\"--background-color\",\"--color\"]);if(C)return g.color(C)}{if(v.modifier)return;let C=me(v.value.value,[\"number\",\"percentage\"]);if(!C)return;switch(C){case\"number\":{let b=e.resolve(null,[\"--spacing\"]);return!b||!ge(v.value.value)?void 0:g.position(`calc(${b} * ${v.value.value})`)}case\"percentage\":return chunk_GFBUASX3_u(v.value.value.slice(0,-1))?g.position(v.value.value):void 0;default:return}}}}),i(l,()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--background-color\",\"--color\"],modifiers:Array.from({length:21},(v,C)=>`${C*5}`)},{values:Array.from({length:21},(v,C)=>`${C*5}%`),valueThemeKeys:[\"--gradient-color-stop-positions\"]}]),i(l,()=>[{values:Array.from({length:21},(v,C)=>`${C*5}%`)},{values:e.get([\"--spacing\"])?ut:[]},{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--background-color\",\"--color\"],modifiers:Array.from({length:21},(v,C)=>`${C*5}`)}])}let A=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-mask-left\",\"linear-gradient(#fff, #fff)\"),chunk_MEY3PWYT_$(\"--tw-mask-right\",\"linear-gradient(#fff, #fff)\"),chunk_MEY3PWYT_$(\"--tw-mask-bottom\",\"linear-gradient(#fff, #fff)\"),chunk_MEY3PWYT_$(\"--tw-mask-top\",\"linear-gradient(#fff, #fff)\")]);function k(l,g,v){V(l,{color(C){let b=[x(),A(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-linear\",\"var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top)\")];for(let S of[\"top\",\"right\",\"bottom\",\"left\"])v[S]&&(b.push(o(`--tw-mask-${S}`,`linear-gradient(to ${S}, var(--tw-mask-${S}-from-color) var(--tw-mask-${S}-from-position), var(--tw-mask-${S}-to-color) var(--tw-mask-${S}-to-position))`)),b.push(chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(`--tw-mask-${S}-from-position`,\"0%\"),chunk_MEY3PWYT_$(`--tw-mask-${S}-to-position`,\"100%\"),chunk_MEY3PWYT_$(`--tw-mask-${S}-from-color`,\"black\"),chunk_MEY3PWYT_$(`--tw-mask-${S}-to-color`,\"transparent\")])),b.push(o(`--tw-mask-${S}-${g}-color`,C)));return b},position(C){let b=[x(),A(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-linear\",\"var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top)\")];for(let S of[\"top\",\"right\",\"bottom\",\"left\"])v[S]&&(b.push(o(`--tw-mask-${S}`,`linear-gradient(to ${S}, var(--tw-mask-${S}-from-color) var(--tw-mask-${S}-from-position), var(--tw-mask-${S}-to-color) var(--tw-mask-${S}-to-position))`)),b.push(chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(`--tw-mask-${S}-from-position`,\"0%\"),chunk_MEY3PWYT_$(`--tw-mask-${S}-to-position`,\"100%\"),chunk_MEY3PWYT_$(`--tw-mask-${S}-from-color`,\"black\"),chunk_MEY3PWYT_$(`--tw-mask-${S}-to-color`,\"transparent\")])),b.push(o(`--tw-mask-${S}-${g}-position`,C)));return b}})}k(\"mask-x-from\",\"from\",{top:!1,right:!0,bottom:!1,left:!0}),k(\"mask-x-to\",\"to\",{top:!1,right:!0,bottom:!1,left:!0}),k(\"mask-y-from\",\"from\",{top:!0,right:!1,bottom:!0,left:!1}),k(\"mask-y-to\",\"to\",{top:!0,right:!1,bottom:!0,left:!1}),k(\"mask-t-from\",\"from\",{top:!0,right:!1,bottom:!1,left:!1}),k(\"mask-t-to\",\"to\",{top:!0,right:!1,bottom:!1,left:!1}),k(\"mask-r-from\",\"from\",{top:!1,right:!0,bottom:!1,left:!1}),k(\"mask-r-to\",\"to\",{top:!1,right:!0,bottom:!1,left:!1}),k(\"mask-b-from\",\"from\",{top:!1,right:!1,bottom:!0,left:!1}),k(\"mask-b-to\",\"to\",{top:!1,right:!1,bottom:!0,left:!1}),k(\"mask-l-from\",\"from\",{top:!1,right:!1,bottom:!1,left:!0}),k(\"mask-l-to\",\"to\",{top:!1,right:!1,bottom:!1,left:!0});let U=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-mask-linear-position\",\"0deg\"),chunk_MEY3PWYT_$(\"--tw-mask-linear-from-position\",\"0%\"),chunk_MEY3PWYT_$(\"--tw-mask-linear-to-position\",\"100%\"),chunk_MEY3PWYT_$(\"--tw-mask-linear-from-color\",\"black\"),chunk_MEY3PWYT_$(\"--tw-mask-linear-to-color\",\"transparent\")]);n(\"mask-linear\",{defaultValue:null,supportsNegative:!0,supportsFractions:!1,handleBareValue(l){return chunk_GFBUASX3_u(l.value)?`calc(1deg * ${l.value})`:null},handleNegativeBareValue(l){return chunk_GFBUASX3_u(l.value)?`calc(1deg * -${l.value})`:null},handle:l=>[x(),U(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-linear\",\"linear-gradient(var(--tw-mask-linear-stops, var(--tw-mask-linear-position)))\"),o(\"--tw-mask-linear-position\",l)]}),i(\"mask-linear\",()=>[{supportsNegative:!0,values:[\"0\",\"1\",\"2\",\"3\",\"6\",\"12\",\"45\",\"90\",\"180\"]}]),V(\"mask-linear-from\",{color:l=>[x(),U(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-linear-stops\",\"var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)\"),o(\"--tw-mask-linear\",\"linear-gradient(var(--tw-mask-linear-stops))\"),o(\"--tw-mask-linear-from-color\",l)],position:l=>[x(),U(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-linear-stops\",\"var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)\"),o(\"--tw-mask-linear\",\"linear-gradient(var(--tw-mask-linear-stops))\"),o(\"--tw-mask-linear-from-position\",l)]}),V(\"mask-linear-to\",{color:l=>[x(),U(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-linear-stops\",\"var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)\"),o(\"--tw-mask-linear\",\"linear-gradient(var(--tw-mask-linear-stops))\"),o(\"--tw-mask-linear-to-color\",l)],position:l=>[x(),U(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-linear-stops\",\"var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)\"),o(\"--tw-mask-linear\",\"linear-gradient(var(--tw-mask-linear-stops))\"),o(\"--tw-mask-linear-to-position\",l)]});let E=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-mask-radial-from-position\",\"0%\"),chunk_MEY3PWYT_$(\"--tw-mask-radial-to-position\",\"100%\"),chunk_MEY3PWYT_$(\"--tw-mask-radial-from-color\",\"black\"),chunk_MEY3PWYT_$(\"--tw-mask-radial-to-color\",\"transparent\"),chunk_MEY3PWYT_$(\"--tw-mask-radial-shape\",\"ellipse\"),chunk_MEY3PWYT_$(\"--tw-mask-radial-size\",\"farthest-corner\"),chunk_MEY3PWYT_$(\"--tw-mask-radial-position\",\"center\")]);t(\"mask-circle\",[[\"--tw-mask-radial-shape\",\"circle\"]]),t(\"mask-ellipse\",[[\"--tw-mask-radial-shape\",\"ellipse\"]]),t(\"mask-radial-closest-side\",[[\"--tw-mask-radial-size\",\"closest-side\"]]),t(\"mask-radial-farthest-side\",[[\"--tw-mask-radial-size\",\"farthest-side\"]]),t(\"mask-radial-closest-corner\",[[\"--tw-mask-radial-size\",\"closest-corner\"]]),t(\"mask-radial-farthest-corner\",[[\"--tw-mask-radial-size\",\"farthest-corner\"]]),t(\"mask-radial-at-top\",[[\"--tw-mask-radial-position\",\"top\"]]),t(\"mask-radial-at-top-left\",[[\"--tw-mask-radial-position\",\"top left\"]]),t(\"mask-radial-at-top-right\",[[\"--tw-mask-radial-position\",\"top right\"]]),t(\"mask-radial-at-bottom\",[[\"--tw-mask-radial-position\",\"bottom\"]]),t(\"mask-radial-at-bottom-left\",[[\"--tw-mask-radial-position\",\"bottom left\"]]),t(\"mask-radial-at-bottom-right\",[[\"--tw-mask-radial-position\",\"bottom right\"]]),t(\"mask-radial-at-left\",[[\"--tw-mask-radial-position\",\"left\"]]),t(\"mask-radial-at-right\",[[\"--tw-mask-radial-position\",\"right\"]]),t(\"mask-radial-at-center\",[[\"--tw-mask-radial-position\",\"center\"]]),n(\"mask-radial-at\",{defaultValue:null,supportsNegative:!1,supportsFractions:!1,handle:l=>[o(\"--tw-mask-radial-position\",l)]}),n(\"mask-radial\",{defaultValue:null,supportsNegative:!1,supportsFractions:!1,handle:l=>[x(),E(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-radial\",\"radial-gradient(var(--tw-mask-radial-stops, var(--tw-mask-radial-size)))\"),o(\"--tw-mask-radial-size\",l)]}),V(\"mask-radial-from\",{color:l=>[x(),E(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-radial-stops\",\"var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)\"),o(\"--tw-mask-radial\",\"radial-gradient(var(--tw-mask-radial-stops))\"),o(\"--tw-mask-radial-from-color\",l)],position:l=>[x(),E(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-radial-stops\",\"var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)\"),o(\"--tw-mask-radial\",\"radial-gradient(var(--tw-mask-radial-stops))\"),o(\"--tw-mask-radial-from-position\",l)]}),V(\"mask-radial-to\",{color:l=>[x(),E(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-radial-stops\",\"var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)\"),o(\"--tw-mask-radial\",\"radial-gradient(var(--tw-mask-radial-stops))\"),o(\"--tw-mask-radial-to-color\",l)],position:l=>[x(),E(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-radial-stops\",\"var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)\"),o(\"--tw-mask-radial\",\"radial-gradient(var(--tw-mask-radial-stops))\"),o(\"--tw-mask-radial-to-position\",l)]});let O=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-mask-conic-position\",\"0deg\"),chunk_MEY3PWYT_$(\"--tw-mask-conic-from-position\",\"0%\"),chunk_MEY3PWYT_$(\"--tw-mask-conic-to-position\",\"100%\"),chunk_MEY3PWYT_$(\"--tw-mask-conic-from-color\",\"black\"),chunk_MEY3PWYT_$(\"--tw-mask-conic-to-color\",\"transparent\")]);n(\"mask-conic\",{defaultValue:null,supportsNegative:!0,supportsFractions:!1,handleBareValue(l){return chunk_GFBUASX3_u(l.value)?`calc(1deg * ${l.value})`:null},handleNegativeBareValue(l){return chunk_GFBUASX3_u(l.value)?`calc(1deg * -${l.value})`:null},handle:l=>[x(),O(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-conic\",\"conic-gradient(var(--tw-mask-conic-stops, var(--tw-mask-conic-position)))\"),o(\"--tw-mask-conic-position\",l)]}),i(\"mask-conic\",()=>[{supportsNegative:!0,values:[\"0\",\"1\",\"2\",\"3\",\"6\",\"12\",\"45\",\"90\",\"180\"]}]),V(\"mask-conic-from\",{color:l=>[x(),O(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-conic-stops\",\"from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)\"),o(\"--tw-mask-conic\",\"conic-gradient(var(--tw-mask-conic-stops))\"),o(\"--tw-mask-conic-from-color\",l)],position:l=>[x(),O(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-conic-stops\",\"from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)\"),o(\"--tw-mask-conic\",\"conic-gradient(var(--tw-mask-conic-stops))\"),o(\"--tw-mask-conic-from-position\",l)]}),V(\"mask-conic-to\",{color:l=>[x(),O(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-conic-stops\",\"from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)\"),o(\"--tw-mask-conic\",\"conic-gradient(var(--tw-mask-conic-stops))\"),o(\"--tw-mask-conic-to-color\",l)],position:l=>[x(),O(),o(\"mask-image\",\"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"),o(\"mask-composite\",\"intersect\"),o(\"--tw-mask-conic-stops\",\"from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)\"),o(\"--tw-mask-conic\",\"conic-gradient(var(--tw-mask-conic-stops))\"),o(\"--tw-mask-conic-to-position\",l)]}),t(\"box-decoration-slice\",[[\"-webkit-box-decoration-break\",\"slice\"],[\"box-decoration-break\",\"slice\"]]),t(\"box-decoration-clone\",[[\"-webkit-box-decoration-break\",\"clone\"],[\"box-decoration-break\",\"clone\"]]),t(\"bg-clip-text\",[[\"background-clip\",\"text\"]]),t(\"bg-clip-border\",[[\"background-clip\",\"border-box\"]]),t(\"bg-clip-padding\",[[\"background-clip\",\"padding-box\"]]),t(\"bg-clip-content\",[[\"background-clip\",\"content-box\"]]),t(\"bg-origin-border\",[[\"background-origin\",\"border-box\"]]),t(\"bg-origin-padding\",[[\"background-origin\",\"padding-box\"]]),t(\"bg-origin-content\",[[\"background-origin\",\"content-box\"]]);for(let l of[\"normal\",\"multiply\",\"screen\",\"overlay\",\"darken\",\"lighten\",\"color-dodge\",\"color-burn\",\"hard-light\",\"soft-light\",\"difference\",\"exclusion\",\"hue\",\"saturation\",\"color\",\"luminosity\"])t(`bg-blend-${l}`,[[\"background-blend-mode\",l]]),t(`mix-blend-${l}`,[[\"mix-blend-mode\",l]]);t(\"mix-blend-plus-darker\",[[\"mix-blend-mode\",\"plus-darker\"]]),t(\"mix-blend-plus-lighter\",[[\"mix-blend-mode\",\"plus-lighter\"]]),t(\"fill-none\",[[\"fill\",\"none\"]]),r.functional(\"fill\",l=>{if(!l.value)return;if(l.value.kind===\"arbitrary\"){let v=chunk_MEY3PWYT_X(l.value.value,l.modifier,e);return v===null?void 0:[o(\"fill\",v)]}let g=chunk_MEY3PWYT_te(l,e,[\"--fill\",\"--color\"]);if(g)return[o(\"fill\",g)]}),i(\"fill\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--fill\",\"--color\"],modifiers:Array.from({length:21},(l,g)=>`${g*5}`)}]),t(\"stroke-none\",[[\"stroke\",\"none\"]]),r.functional(\"stroke\",l=>{if(l.value){if(l.value.kind===\"arbitrary\"){let g=l.value.value;switch(l.value.dataType??me(g,[\"color\",\"number\",\"length\",\"percentage\"])){case\"number\":case\"length\":case\"percentage\":return l.modifier?void 0:[o(\"stroke-width\",g)];default:return g=chunk_MEY3PWYT_X(l.value.value,l.modifier,e),g===null?void 0:[o(\"stroke\",g)]}}{let g=chunk_MEY3PWYT_te(l,e,[\"--stroke\",\"--color\"]);if(g)return[o(\"stroke\",g)]}{let g=e.resolve(l.value.value,[\"--stroke-width\"]);if(g)return[o(\"stroke-width\",g)];if(chunk_GFBUASX3_u(l.value.value))return[o(\"stroke-width\",l.value.value)]}}}),i(\"stroke\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--stroke\",\"--color\"],modifiers:Array.from({length:21},(l,g)=>`${g*5}`)},{values:[\"0\",\"1\",\"2\",\"3\"],valueThemeKeys:[\"--stroke-width\"]}]),t(\"object-contain\",[[\"object-fit\",\"contain\"]]),t(\"object-cover\",[[\"object-fit\",\"cover\"]]),t(\"object-fill\",[[\"object-fit\",\"fill\"]]),t(\"object-none\",[[\"object-fit\",\"none\"]]),t(\"object-scale-down\",[[\"object-fit\",\"scale-down\"]]),n(\"object\",{themeKeys:[\"--object-position\"],handle:l=>[o(\"object-position\",l)],staticValues:{top:[o(\"object-position\",\"top\")],\"top-left\":[o(\"object-position\",\"left top\")],\"top-right\":[o(\"object-position\",\"right top\")],bottom:[o(\"object-position\",\"bottom\")],\"bottom-left\":[o(\"object-position\",\"left bottom\")],\"bottom-right\":[o(\"object-position\",\"right bottom\")],left:[o(\"object-position\",\"left\")],right:[o(\"object-position\",\"right\")],center:[o(\"object-position\",\"center\")]}});for(let[l,g]of[[\"p\",\"padding\"],[\"px\",\"padding-inline\"],[\"py\",\"padding-block\"],[\"ps\",\"padding-inline-start\"],[\"pe\",\"padding-inline-end\"],[\"pt\",\"padding-top\"],[\"pr\",\"padding-right\"],[\"pb\",\"padding-bottom\"],[\"pl\",\"padding-left\"]])a(l,[\"--padding\",\"--spacing\"],v=>[o(g,v)]);t(\"text-left\",[[\"text-align\",\"left\"]]),t(\"text-center\",[[\"text-align\",\"center\"]]),t(\"text-right\",[[\"text-align\",\"right\"]]),t(\"text-justify\",[[\"text-align\",\"justify\"]]),t(\"text-start\",[[\"text-align\",\"start\"]]),t(\"text-end\",[[\"text-align\",\"end\"]]),a(\"indent\",[\"--text-indent\",\"--spacing\"],l=>[o(\"text-indent\",l)],{supportsNegative:!0}),t(\"align-baseline\",[[\"vertical-align\",\"baseline\"]]),t(\"align-top\",[[\"vertical-align\",\"top\"]]),t(\"align-middle\",[[\"vertical-align\",\"middle\"]]),t(\"align-bottom\",[[\"vertical-align\",\"bottom\"]]),t(\"align-text-top\",[[\"vertical-align\",\"text-top\"]]),t(\"align-text-bottom\",[[\"vertical-align\",\"text-bottom\"]]),t(\"align-sub\",[[\"vertical-align\",\"sub\"]]),t(\"align-super\",[[\"vertical-align\",\"super\"]]),n(\"align\",{themeKeys:[],handle:l=>[o(\"vertical-align\",l)]}),r.functional(\"font\",l=>{if(!(!l.value||l.modifier)){if(l.value.kind===\"arbitrary\"){let g=l.value.value;switch(l.value.dataType??me(g,[\"number\",\"generic-name\",\"family-name\"])){case\"generic-name\":case\"family-name\":return[o(\"font-family\",g)];default:return[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-font-weight\")]),o(\"--tw-font-weight\",g),o(\"font-weight\",g)]}}{let g=e.resolveWith(l.value.value,[\"--font\"],[\"--font-feature-settings\",\"--font-variation-settings\"]);if(g){let[v,C={}]=g;return[o(\"font-family\",v),o(\"font-feature-settings\",C[\"--font-feature-settings\"]),o(\"font-variation-settings\",C[\"--font-variation-settings\"])]}}{let g=e.resolve(l.value.value,[\"--font-weight\"]);if(g)return[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-font-weight\")]),o(\"--tw-font-weight\",g),o(\"font-weight\",g)]}}}),i(\"font\",()=>[{values:[],valueThemeKeys:[\"--font\"]},{values:[],valueThemeKeys:[\"--font-weight\"]}]),t(\"uppercase\",[[\"text-transform\",\"uppercase\"]]),t(\"lowercase\",[[\"text-transform\",\"lowercase\"]]),t(\"capitalize\",[[\"text-transform\",\"capitalize\"]]),t(\"normal-case\",[[\"text-transform\",\"none\"]]),t(\"italic\",[[\"font-style\",\"italic\"]]),t(\"not-italic\",[[\"font-style\",\"normal\"]]),t(\"underline\",[[\"text-decoration-line\",\"underline\"]]),t(\"overline\",[[\"text-decoration-line\",\"overline\"]]),t(\"line-through\",[[\"text-decoration-line\",\"line-through\"]]),t(\"no-underline\",[[\"text-decoration-line\",\"none\"]]),t(\"font-stretch-normal\",[[\"font-stretch\",\"normal\"]]),t(\"font-stretch-ultra-condensed\",[[\"font-stretch\",\"ultra-condensed\"]]),t(\"font-stretch-extra-condensed\",[[\"font-stretch\",\"extra-condensed\"]]),t(\"font-stretch-condensed\",[[\"font-stretch\",\"condensed\"]]),t(\"font-stretch-semi-condensed\",[[\"font-stretch\",\"semi-condensed\"]]),t(\"font-stretch-semi-expanded\",[[\"font-stretch\",\"semi-expanded\"]]),t(\"font-stretch-expanded\",[[\"font-stretch\",\"expanded\"]]),t(\"font-stretch-extra-expanded\",[[\"font-stretch\",\"extra-expanded\"]]),t(\"font-stretch-ultra-expanded\",[[\"font-stretch\",\"ultra-expanded\"]]),n(\"font-stretch\",{handleBareValue:({value:l})=>{if(!l.endsWith(\"%\"))return null;let g=Number(l.slice(0,-1));return!chunk_GFBUASX3_u(g)||Number.isNaN(g)||g<50||g>200?null:l},handle:l=>[o(\"font-stretch\",l)]}),i(\"font-stretch\",()=>[{values:[\"50%\",\"75%\",\"90%\",\"95%\",\"100%\",\"105%\",\"110%\",\"125%\",\"150%\",\"200%\"]}]),s(\"placeholder\",{themeKeys:[\"--background-color\",\"--color\"],handle:l=>[chunk_MEY3PWYT_G(\"&::placeholder\",[o(\"--tw-sort\",\"placeholder-color\"),o(\"color\",l)])]}),t(\"decoration-solid\",[[\"text-decoration-style\",\"solid\"]]),t(\"decoration-double\",[[\"text-decoration-style\",\"double\"]]),t(\"decoration-dotted\",[[\"text-decoration-style\",\"dotted\"]]),t(\"decoration-dashed\",[[\"text-decoration-style\",\"dashed\"]]),t(\"decoration-wavy\",[[\"text-decoration-style\",\"wavy\"]]),t(\"decoration-auto\",[[\"text-decoration-thickness\",\"auto\"]]),t(\"decoration-from-font\",[[\"text-decoration-thickness\",\"from-font\"]]),r.functional(\"decoration\",l=>{if(l.value){if(l.value.kind===\"arbitrary\"){let g=l.value.value;switch(l.value.dataType??me(g,[\"color\",\"length\",\"percentage\"])){case\"length\":case\"percentage\":return l.modifier?void 0:[o(\"text-decoration-thickness\",g)];default:return g=chunk_MEY3PWYT_X(g,l.modifier,e),g===null?void 0:[o(\"text-decoration-color\",g)]}}{let g=e.resolve(l.value.value,[\"--text-decoration-thickness\"]);if(g)return l.modifier?void 0:[o(\"text-decoration-thickness\",g)];if(chunk_GFBUASX3_u(l.value.value))return l.modifier?void 0:[o(\"text-decoration-thickness\",`${l.value.value}px`)]}{let g=chunk_MEY3PWYT_te(l,e,[\"--text-decoration-color\",\"--color\"]);if(g)return[o(\"text-decoration-color\",g)]}}}),i(\"decoration\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--text-decoration-color\",\"--color\"],modifiers:Array.from({length:21},(l,g)=>`${g*5}`)},{values:[\"0\",\"1\",\"2\"],valueThemeKeys:[\"--text-decoration-thickness\"]}]),n(\"animate\",{themeKeys:[\"--animate\"],handle:l=>[o(\"animation\",l)],staticValues:{none:[o(\"animation\",\"none\")]}});{let l=[\"var(--tw-blur,)\",\"var(--tw-brightness,)\",\"var(--tw-contrast,)\",\"var(--tw-grayscale,)\",\"var(--tw-hue-rotate,)\",\"var(--tw-invert,)\",\"var(--tw-saturate,)\",\"var(--tw-sepia,)\",\"var(--tw-drop-shadow,)\"].join(\" \"),g=[\"var(--tw-backdrop-blur,)\",\"var(--tw-backdrop-brightness,)\",\"var(--tw-backdrop-contrast,)\",\"var(--tw-backdrop-grayscale,)\",\"var(--tw-backdrop-hue-rotate,)\",\"var(--tw-backdrop-invert,)\",\"var(--tw-backdrop-opacity,)\",\"var(--tw-backdrop-saturate,)\",\"var(--tw-backdrop-sepia,)\"].join(\" \"),v=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-blur\"),chunk_MEY3PWYT_$(\"--tw-brightness\"),chunk_MEY3PWYT_$(\"--tw-contrast\"),chunk_MEY3PWYT_$(\"--tw-grayscale\"),chunk_MEY3PWYT_$(\"--tw-hue-rotate\"),chunk_MEY3PWYT_$(\"--tw-invert\"),chunk_MEY3PWYT_$(\"--tw-opacity\"),chunk_MEY3PWYT_$(\"--tw-saturate\"),chunk_MEY3PWYT_$(\"--tw-sepia\"),chunk_MEY3PWYT_$(\"--tw-drop-shadow\"),chunk_MEY3PWYT_$(\"--tw-drop-shadow-color\"),chunk_MEY3PWYT_$(\"--tw-drop-shadow-alpha\",\"100%\",\"<percentage>\"),chunk_MEY3PWYT_$(\"--tw-drop-shadow-size\")]),C=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-backdrop-blur\"),chunk_MEY3PWYT_$(\"--tw-backdrop-brightness\"),chunk_MEY3PWYT_$(\"--tw-backdrop-contrast\"),chunk_MEY3PWYT_$(\"--tw-backdrop-grayscale\"),chunk_MEY3PWYT_$(\"--tw-backdrop-hue-rotate\"),chunk_MEY3PWYT_$(\"--tw-backdrop-invert\"),chunk_MEY3PWYT_$(\"--tw-backdrop-opacity\"),chunk_MEY3PWYT_$(\"--tw-backdrop-saturate\"),chunk_MEY3PWYT_$(\"--tw-backdrop-sepia\")]);r.functional(\"filter\",b=>{if(!b.modifier){if(b.value===null)return[v(),o(\"filter\",l)];if(b.value.kind===\"arbitrary\")return[o(\"filter\",b.value.value)];switch(b.value.value){case\"none\":return[o(\"filter\",\"none\")]}}}),r.functional(\"backdrop-filter\",b=>{if(!b.modifier){if(b.value===null)return[C(),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)];if(b.value.kind===\"arbitrary\")return[o(\"-webkit-backdrop-filter\",b.value.value),o(\"backdrop-filter\",b.value.value)];switch(b.value.value){case\"none\":return[o(\"-webkit-backdrop-filter\",\"none\"),o(\"backdrop-filter\",\"none\")]}}}),n(\"blur\",{themeKeys:[\"--blur\"],handle:b=>[v(),o(\"--tw-blur\",`blur(${b})`),o(\"filter\",l)],staticValues:{none:[v(),o(\"--tw-blur\",\" \"),o(\"filter\",l)]}}),n(\"backdrop-blur\",{themeKeys:[\"--backdrop-blur\",\"--blur\"],handle:b=>[C(),o(\"--tw-backdrop-blur\",`blur(${b})`),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)],staticValues:{none:[C(),o(\"--tw-backdrop-blur\",\" \"),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)]}}),n(\"brightness\",{themeKeys:[\"--brightness\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,handle:b=>[v(),o(\"--tw-brightness\",`brightness(${b})`),o(\"filter\",l)]}),n(\"backdrop-brightness\",{themeKeys:[\"--backdrop-brightness\",\"--brightness\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,handle:b=>[C(),o(\"--tw-backdrop-brightness\",`brightness(${b})`),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)]}),i(\"brightness\",()=>[{values:[\"0\",\"50\",\"75\",\"90\",\"95\",\"100\",\"105\",\"110\",\"125\",\"150\",\"200\"],valueThemeKeys:[\"--brightness\"]}]),i(\"backdrop-brightness\",()=>[{values:[\"0\",\"50\",\"75\",\"90\",\"95\",\"100\",\"105\",\"110\",\"125\",\"150\",\"200\"],valueThemeKeys:[\"--backdrop-brightness\",\"--brightness\"]}]),n(\"contrast\",{themeKeys:[\"--contrast\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,handle:b=>[v(),o(\"--tw-contrast\",`contrast(${b})`),o(\"filter\",l)]}),n(\"backdrop-contrast\",{themeKeys:[\"--backdrop-contrast\",\"--contrast\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,handle:b=>[C(),o(\"--tw-backdrop-contrast\",`contrast(${b})`),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)]}),i(\"contrast\",()=>[{values:[\"0\",\"50\",\"75\",\"100\",\"125\",\"150\",\"200\"],valueThemeKeys:[\"--contrast\"]}]),i(\"backdrop-contrast\",()=>[{values:[\"0\",\"50\",\"75\",\"100\",\"125\",\"150\",\"200\"],valueThemeKeys:[\"--backdrop-contrast\",\"--contrast\"]}]),n(\"grayscale\",{themeKeys:[\"--grayscale\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,defaultValue:\"100%\",handle:b=>[v(),o(\"--tw-grayscale\",`grayscale(${b})`),o(\"filter\",l)]}),n(\"backdrop-grayscale\",{themeKeys:[\"--backdrop-grayscale\",\"--grayscale\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,defaultValue:\"100%\",handle:b=>[C(),o(\"--tw-backdrop-grayscale\",`grayscale(${b})`),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)]}),i(\"grayscale\",()=>[{values:[\"0\",\"25\",\"50\",\"75\",\"100\"],valueThemeKeys:[\"--grayscale\"],hasDefaultValue:!0}]),i(\"backdrop-grayscale\",()=>[{values:[\"0\",\"25\",\"50\",\"75\",\"100\"],valueThemeKeys:[\"--backdrop-grayscale\",\"--grayscale\"],hasDefaultValue:!0}]),n(\"hue-rotate\",{supportsNegative:!0,themeKeys:[\"--hue-rotate\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}deg`:null,handle:b=>[v(),o(\"--tw-hue-rotate\",`hue-rotate(${b})`),o(\"filter\",l)]}),n(\"backdrop-hue-rotate\",{supportsNegative:!0,themeKeys:[\"--backdrop-hue-rotate\",\"--hue-rotate\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}deg`:null,handle:b=>[C(),o(\"--tw-backdrop-hue-rotate\",`hue-rotate(${b})`),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)]}),i(\"hue-rotate\",()=>[{values:[\"0\",\"15\",\"30\",\"60\",\"90\",\"180\"],valueThemeKeys:[\"--hue-rotate\"]}]),i(\"backdrop-hue-rotate\",()=>[{values:[\"0\",\"15\",\"30\",\"60\",\"90\",\"180\"],valueThemeKeys:[\"--backdrop-hue-rotate\",\"--hue-rotate\"]}]),n(\"invert\",{themeKeys:[\"--invert\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,defaultValue:\"100%\",handle:b=>[v(),o(\"--tw-invert\",`invert(${b})`),o(\"filter\",l)]}),n(\"backdrop-invert\",{themeKeys:[\"--backdrop-invert\",\"--invert\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,defaultValue:\"100%\",handle:b=>[C(),o(\"--tw-backdrop-invert\",`invert(${b})`),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)]}),i(\"invert\",()=>[{values:[\"0\",\"25\",\"50\",\"75\",\"100\"],valueThemeKeys:[\"--invert\"],hasDefaultValue:!0}]),i(\"backdrop-invert\",()=>[{values:[\"0\",\"25\",\"50\",\"75\",\"100\"],valueThemeKeys:[\"--backdrop-invert\",\"--invert\"],hasDefaultValue:!0}]),n(\"saturate\",{themeKeys:[\"--saturate\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,handle:b=>[v(),o(\"--tw-saturate\",`saturate(${b})`),o(\"filter\",l)]}),n(\"backdrop-saturate\",{themeKeys:[\"--backdrop-saturate\",\"--saturate\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,handle:b=>[C(),o(\"--tw-backdrop-saturate\",`saturate(${b})`),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)]}),i(\"saturate\",()=>[{values:[\"0\",\"50\",\"100\",\"150\",\"200\"],valueThemeKeys:[\"--saturate\"]}]),i(\"backdrop-saturate\",()=>[{values:[\"0\",\"50\",\"100\",\"150\",\"200\"],valueThemeKeys:[\"--backdrop-saturate\",\"--saturate\"]}]),n(\"sepia\",{themeKeys:[\"--sepia\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,defaultValue:\"100%\",handle:b=>[v(),o(\"--tw-sepia\",`sepia(${b})`),o(\"filter\",l)]}),n(\"backdrop-sepia\",{themeKeys:[\"--backdrop-sepia\",\"--sepia\"],handleBareValue:({value:b})=>chunk_GFBUASX3_u(b)?`${b}%`:null,defaultValue:\"100%\",handle:b=>[C(),o(\"--tw-backdrop-sepia\",`sepia(${b})`),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)]}),i(\"sepia\",()=>[{values:[\"0\",\"50\",\"100\"],valueThemeKeys:[\"--sepia\"],hasDefaultValue:!0}]),i(\"backdrop-sepia\",()=>[{values:[\"0\",\"50\",\"100\"],valueThemeKeys:[\"--backdrop-sepia\",\"--sepia\"],hasDefaultValue:!0}]),t(\"drop-shadow-none\",[v,[\"--tw-drop-shadow\",\" \"],[\"filter\",l]]),r.functional(\"drop-shadow\",b=>{let S;if(b.modifier&&(b.modifier.kind===\"arbitrary\"?S=b.modifier.value:chunk_GFBUASX3_u(b.modifier.value)&&(S=`${b.modifier.value}%`)),!b.value){let D=e.get([\"--drop-shadow\"]),T=e.resolve(null,[\"--drop-shadow\"]);return D===null||T===null?void 0:[v(),o(\"--tw-drop-shadow-alpha\",S),...st(\"--tw-drop-shadow-size\",D,S,N=>`var(--tw-drop-shadow-color, ${N})`),o(\"--tw-drop-shadow\",chunk_GFBUASX3_d(T,\",\").map(N=>`drop-shadow(${N})`).join(\" \")),o(\"filter\",l)]}if(b.value.kind===\"arbitrary\"){let D=b.value.value;switch(b.value.dataType??me(D,[\"color\"])){case\"color\":return D=chunk_MEY3PWYT_X(D,b.modifier,e),D===null?void 0:[v(),o(\"--tw-drop-shadow-color\",chunk_MEY3PWYT_Q(D,\"var(--tw-drop-shadow-alpha)\")),o(\"--tw-drop-shadow\",\"var(--tw-drop-shadow-size)\")];default:return b.modifier&&!S?void 0:[v(),o(\"--tw-drop-shadow-alpha\",S),...st(\"--tw-drop-shadow-size\",D,S,N=>`var(--tw-drop-shadow-color, ${N})`),o(\"--tw-drop-shadow\",\"var(--tw-drop-shadow-size)\"),o(\"filter\",l)]}}{let D=e.get([`--drop-shadow-${b.value.value}`]),T=e.resolve(b.value.value,[\"--drop-shadow\"]);if(D&&T)return b.modifier&&!S?void 0:S?[v(),o(\"--tw-drop-shadow-alpha\",S),...st(\"--tw-drop-shadow-size\",D,S,N=>`var(--tw-drop-shadow-color, ${N})`),o(\"--tw-drop-shadow\",\"var(--tw-drop-shadow-size)\"),o(\"filter\",l)]:[v(),o(\"--tw-drop-shadow-alpha\",S),...st(\"--tw-drop-shadow-size\",D,S,N=>`var(--tw-drop-shadow-color, ${N})`),o(\"--tw-drop-shadow\",chunk_GFBUASX3_d(T,\",\").map(N=>`drop-shadow(${N})`).join(\" \")),o(\"filter\",l)]}{let D=chunk_MEY3PWYT_te(b,e,[\"--drop-shadow-color\",\"--color\"]);if(D)return D===\"inherit\"?[v(),o(\"--tw-drop-shadow-color\",\"inherit\"),o(\"--tw-drop-shadow\",\"var(--tw-drop-shadow-size)\")]:[v(),o(\"--tw-drop-shadow-color\",chunk_MEY3PWYT_Q(D,\"var(--tw-drop-shadow-alpha)\")),o(\"--tw-drop-shadow\",\"var(--tw-drop-shadow-size)\")]}}),i(\"drop-shadow\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--drop-shadow-color\",\"--color\"],modifiers:Array.from({length:21},(b,S)=>`${S*5}`)},{valueThemeKeys:[\"--drop-shadow\"]}]),n(\"backdrop-opacity\",{themeKeys:[\"--backdrop-opacity\",\"--opacity\"],handleBareValue:({value:b})=>ue(b)?`${b}%`:null,handle:b=>[C(),o(\"--tw-backdrop-opacity\",`opacity(${b})`),o(\"-webkit-backdrop-filter\",g),o(\"backdrop-filter\",g)]}),i(\"backdrop-opacity\",()=>[{values:Array.from({length:21},(b,S)=>`${S*5}`),valueThemeKeys:[\"--backdrop-opacity\",\"--opacity\"]}])}{let l=`var(--tw-ease, ${e.resolve(null,[\"--default-transition-timing-function\"])??\"ease\"})`,g=`var(--tw-duration, ${e.resolve(null,[\"--default-transition-duration\"])??\"0s\"})`;n(\"transition\",{defaultValue:\"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events\",themeKeys:[\"--transition-property\"],handle:v=>[o(\"transition-property\",v),o(\"transition-timing-function\",l),o(\"transition-duration\",g)],staticValues:{none:[o(\"transition-property\",\"none\")],all:[o(\"transition-property\",\"all\"),o(\"transition-timing-function\",l),o(\"transition-duration\",g)],colors:[o(\"transition-property\",\"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to\"),o(\"transition-timing-function\",l),o(\"transition-duration\",g)],opacity:[o(\"transition-property\",\"opacity\"),o(\"transition-timing-function\",l),o(\"transition-duration\",g)],shadow:[o(\"transition-property\",\"box-shadow\"),o(\"transition-timing-function\",l),o(\"transition-duration\",g)],transform:[o(\"transition-property\",\"transform, translate, scale, rotate\"),o(\"transition-timing-function\",l),o(\"transition-duration\",g)]}}),t(\"transition-discrete\",[[\"transition-behavior\",\"allow-discrete\"]]),t(\"transition-normal\",[[\"transition-behavior\",\"normal\"]]),n(\"delay\",{handleBareValue:({value:v})=>chunk_GFBUASX3_u(v)?`${v}ms`:null,themeKeys:[\"--transition-delay\"],handle:v=>[o(\"transition-delay\",v)]});{let v=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-duration\")]);t(\"duration-initial\",[v,[\"--tw-duration\",\"initial\"]]),r.functional(\"duration\",C=>{if(C.modifier||!C.value)return;let b=null;if(C.value.kind===\"arbitrary\"?b=C.value.value:(b=e.resolve(C.value.fraction??C.value.value,[\"--transition-duration\"]),b===null&&chunk_GFBUASX3_u(C.value.value)&&(b=`${C.value.value}ms`)),b!==null)return[v(),o(\"--tw-duration\",b),o(\"transition-duration\",b)]})}i(\"delay\",()=>[{values:[\"75\",\"100\",\"150\",\"200\",\"300\",\"500\",\"700\",\"1000\"],valueThemeKeys:[\"--transition-delay\"]}]),i(\"duration\",()=>[{values:[\"75\",\"100\",\"150\",\"200\",\"300\",\"500\",\"700\",\"1000\"],valueThemeKeys:[\"--transition-duration\"]}])}{let l=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-ease\")]);n(\"ease\",{themeKeys:[\"--ease\"],handle:g=>[l(),o(\"--tw-ease\",g),o(\"transition-timing-function\",g)],staticValues:{initial:[l(),o(\"--tw-ease\",\"initial\")],linear:[l(),o(\"--tw-ease\",\"linear\"),o(\"transition-timing-function\",\"linear\")]}})}t(\"will-change-auto\",[[\"will-change\",\"auto\"]]),t(\"will-change-scroll\",[[\"will-change\",\"scroll-position\"]]),t(\"will-change-contents\",[[\"will-change\",\"contents\"]]),t(\"will-change-transform\",[[\"will-change\",\"transform\"]]),n(\"will-change\",{themeKeys:[],handle:l=>[o(\"will-change\",l)]}),t(\"content-none\",[[\"--tw-content\",\"none\"],[\"content\",\"none\"]]),n(\"content\",{themeKeys:[],handle:l=>[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-content\",'\"\"')]),o(\"--tw-content\",l),o(\"content\",\"var(--tw-content)\")]});{let l=\"var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)\",g=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-contain-size\"),chunk_MEY3PWYT_$(\"--tw-contain-layout\"),chunk_MEY3PWYT_$(\"--tw-contain-paint\"),chunk_MEY3PWYT_$(\"--tw-contain-style\")]);t(\"contain-none\",[[\"contain\",\"none\"]]),t(\"contain-content\",[[\"contain\",\"content\"]]),t(\"contain-strict\",[[\"contain\",\"strict\"]]),t(\"contain-size\",[g,[\"--tw-contain-size\",\"size\"],[\"contain\",l]]),t(\"contain-inline-size\",[g,[\"--tw-contain-size\",\"inline-size\"],[\"contain\",l]]),t(\"contain-layout\",[g,[\"--tw-contain-layout\",\"layout\"],[\"contain\",l]]),t(\"contain-paint\",[g,[\"--tw-contain-paint\",\"paint\"],[\"contain\",l]]),t(\"contain-style\",[g,[\"--tw-contain-style\",\"style\"],[\"contain\",l]]),n(\"contain\",{themeKeys:[],handle:v=>[o(\"contain\",v)]})}t(\"forced-color-adjust-none\",[[\"forced-color-adjust\",\"none\"]]),t(\"forced-color-adjust-auto\",[[\"forced-color-adjust\",\"auto\"]]),a(\"leading\",[\"--leading\",\"--spacing\"],l=>[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-leading\")]),o(\"--tw-leading\",l),o(\"line-height\",l)],{staticValues:{none:[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-leading\")]),o(\"--tw-leading\",\"1\"),o(\"line-height\",\"1\")]}}),n(\"tracking\",{supportsNegative:!0,themeKeys:[\"--tracking\"],handle:l=>[chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-tracking\")]),o(\"--tw-tracking\",l),o(\"letter-spacing\",l)]}),t(\"antialiased\",[[\"-webkit-font-smoothing\",\"antialiased\"],[\"-moz-osx-font-smoothing\",\"grayscale\"]]),t(\"subpixel-antialiased\",[[\"-webkit-font-smoothing\",\"auto\"],[\"-moz-osx-font-smoothing\",\"auto\"]]);{let l=\"var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)\",g=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-ordinal\"),chunk_MEY3PWYT_$(\"--tw-slashed-zero\"),chunk_MEY3PWYT_$(\"--tw-numeric-figure\"),chunk_MEY3PWYT_$(\"--tw-numeric-spacing\"),chunk_MEY3PWYT_$(\"--tw-numeric-fraction\")]);t(\"normal-nums\",[[\"font-variant-numeric\",\"normal\"]]),t(\"ordinal\",[g,[\"--tw-ordinal\",\"ordinal\"],[\"font-variant-numeric\",l]]),t(\"slashed-zero\",[g,[\"--tw-slashed-zero\",\"slashed-zero\"],[\"font-variant-numeric\",l]]),t(\"lining-nums\",[g,[\"--tw-numeric-figure\",\"lining-nums\"],[\"font-variant-numeric\",l]]),t(\"oldstyle-nums\",[g,[\"--tw-numeric-figure\",\"oldstyle-nums\"],[\"font-variant-numeric\",l]]),t(\"proportional-nums\",[g,[\"--tw-numeric-spacing\",\"proportional-nums\"],[\"font-variant-numeric\",l]]),t(\"tabular-nums\",[g,[\"--tw-numeric-spacing\",\"tabular-nums\"],[\"font-variant-numeric\",l]]),t(\"diagonal-fractions\",[g,[\"--tw-numeric-fraction\",\"diagonal-fractions\"],[\"font-variant-numeric\",l]]),t(\"stacked-fractions\",[g,[\"--tw-numeric-fraction\",\"stacked-fractions\"],[\"font-variant-numeric\",l]])}{let l=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-outline-style\",\"solid\")]);r.static(\"outline-hidden\",()=>[o(\"--tw-outline-style\",\"none\"),o(\"outline-style\",\"none\"),chunk_MEY3PWYT_F(\"@media\",\"(forced-colors: active)\",[o(\"outline\",\"2px solid transparent\"),o(\"outline-offset\",\"2px\")])]),t(\"outline-none\",[[\"--tw-outline-style\",\"none\"],[\"outline-style\",\"none\"]]),t(\"outline-solid\",[[\"--tw-outline-style\",\"solid\"],[\"outline-style\",\"solid\"]]),t(\"outline-dashed\",[[\"--tw-outline-style\",\"dashed\"],[\"outline-style\",\"dashed\"]]),t(\"outline-dotted\",[[\"--tw-outline-style\",\"dotted\"],[\"outline-style\",\"dotted\"]]),t(\"outline-double\",[[\"--tw-outline-style\",\"double\"],[\"outline-style\",\"double\"]]),r.functional(\"outline\",g=>{if(g.value===null){if(g.modifier)return;let v=e.get([\"--default-outline-width\"])??\"1px\";return[l(),o(\"outline-style\",\"var(--tw-outline-style)\"),o(\"outline-width\",v)]}if(g.value.kind===\"arbitrary\"){let v=g.value.value;switch(g.value.dataType??me(v,[\"color\",\"length\",\"number\",\"percentage\"])){case\"length\":case\"number\":case\"percentage\":return g.modifier?void 0:[l(),o(\"outline-style\",\"var(--tw-outline-style)\"),o(\"outline-width\",v)];default:return v=chunk_MEY3PWYT_X(v,g.modifier,e),v===null?void 0:[o(\"outline-color\",v)]}}{let v=chunk_MEY3PWYT_te(g,e,[\"--outline-color\",\"--color\"]);if(v)return[o(\"outline-color\",v)]}{if(g.modifier)return;let v=e.resolve(g.value.value,[\"--outline-width\"]);if(v)return[l(),o(\"outline-style\",\"var(--tw-outline-style)\"),o(\"outline-width\",v)];if(chunk_GFBUASX3_u(g.value.value))return[l(),o(\"outline-style\",\"var(--tw-outline-style)\"),o(\"outline-width\",`${g.value.value}px`)]}}),i(\"outline\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--outline-color\",\"--color\"],modifiers:Array.from({length:21},(g,v)=>`${v*5}`),hasDefaultValue:!0},{values:[\"0\",\"1\",\"2\",\"4\",\"8\"],valueThemeKeys:[\"--outline-width\"]}]),n(\"outline-offset\",{supportsNegative:!0,themeKeys:[\"--outline-offset\"],handleBareValue:({value:g})=>chunk_GFBUASX3_u(g)?`${g}px`:null,handle:g=>[o(\"outline-offset\",g)]}),i(\"outline-offset\",()=>[{supportsNegative:!0,values:[\"0\",\"1\",\"2\",\"4\",\"8\"],valueThemeKeys:[\"--outline-offset\"]}])}n(\"opacity\",{themeKeys:[\"--opacity\"],handleBareValue:({value:l})=>ue(l)?`${l}%`:null,handle:l=>[o(\"opacity\",l)]}),i(\"opacity\",()=>[{values:Array.from({length:21},(l,g)=>`${g*5}`),valueThemeKeys:[\"--opacity\"]}]),n(\"underline-offset\",{supportsNegative:!0,themeKeys:[\"--text-underline-offset\"],handleBareValue:({value:l})=>chunk_GFBUASX3_u(l)?`${l}px`:null,handle:l=>[o(\"text-underline-offset\",l)],staticValues:{auto:[o(\"text-underline-offset\",\"auto\")]}}),i(\"underline-offset\",()=>[{supportsNegative:!0,values:[\"0\",\"1\",\"2\",\"4\",\"8\"],valueThemeKeys:[\"--text-underline-offset\"]}]),r.functional(\"text\",l=>{if(l.value){if(l.value.kind===\"arbitrary\"){let g=l.value.value;switch(l.value.dataType??me(g,[\"color\",\"length\",\"percentage\",\"absolute-size\",\"relative-size\"])){case\"size\":case\"length\":case\"percentage\":case\"absolute-size\":case\"relative-size\":{if(l.modifier){let C=l.modifier.kind===\"arbitrary\"?l.modifier.value:e.resolve(l.modifier.value,[\"--leading\"]);if(!C&&ge(l.modifier.value)){let b=e.resolve(null,[\"--spacing\"]);if(!b)return null;C=`calc(${b} * ${l.modifier.value})`}return!C&&l.modifier.value===\"none\"&&(C=\"1\"),C?[o(\"font-size\",g),o(\"line-height\",C)]:null}return[o(\"font-size\",g)]}default:return g=chunk_MEY3PWYT_X(g,l.modifier,e),g===null?void 0:[o(\"color\",g)]}}{let g=chunk_MEY3PWYT_te(l,e,[\"--text-color\",\"--color\"]);if(g)return[o(\"color\",g)]}{let g=e.resolveWith(l.value.value,[\"--text\"],[\"--line-height\",\"--letter-spacing\",\"--font-weight\"]);if(g){let[v,C={}]=Array.isArray(g)?g:[g];if(l.modifier){let b=l.modifier.kind===\"arbitrary\"?l.modifier.value:e.resolve(l.modifier.value,[\"--leading\"]);if(!b&&ge(l.modifier.value)){let D=e.resolve(null,[\"--spacing\"]);if(!D)return null;b=`calc(${D} * ${l.modifier.value})`}if(!b&&l.modifier.value===\"none\"&&(b=\"1\"),!b)return null;let S=[o(\"font-size\",v)];return b&&S.push(o(\"line-height\",b)),S}return typeof C==\"string\"?[o(\"font-size\",v),o(\"line-height\",C)]:[o(\"font-size\",v),o(\"line-height\",C[\"--line-height\"]?`var(--tw-leading, ${C[\"--line-height\"]})`:void 0),o(\"letter-spacing\",C[\"--letter-spacing\"]?`var(--tw-tracking, ${C[\"--letter-spacing\"]})`:void 0),o(\"font-weight\",C[\"--font-weight\"]?`var(--tw-font-weight, ${C[\"--font-weight\"]})`:void 0)]}}}}),i(\"text\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--text-color\",\"--color\"],modifiers:Array.from({length:21},(l,g)=>`${g*5}`)},{values:[],valueThemeKeys:[\"--text\"],modifiers:[],modifierThemeKeys:[\"--leading\"]}]);let j=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-text-shadow-color\"),chunk_MEY3PWYT_$(\"--tw-text-shadow-alpha\",\"100%\",\"<percentage>\")]);t(\"text-shadow-initial\",[j,[\"--tw-text-shadow-color\",\"initial\"]]),r.functional(\"text-shadow\",l=>{let g;if(l.modifier&&(l.modifier.kind===\"arbitrary\"?g=l.modifier.value:chunk_GFBUASX3_u(l.modifier.value)&&(g=`${l.modifier.value}%`)),!l.value){let v=e.get([\"--text-shadow\"]);return v===null?void 0:[j(),o(\"--tw-text-shadow-alpha\",g),...he(\"text-shadow\",v,g,C=>`var(--tw-text-shadow-color, ${C})`)]}if(l.value.kind===\"arbitrary\"){let v=l.value.value;switch(l.value.dataType??me(v,[\"color\"])){case\"color\":return v=chunk_MEY3PWYT_X(v,l.modifier,e),v===null?void 0:[j(),o(\"--tw-text-shadow-color\",chunk_MEY3PWYT_Q(v,\"var(--tw-text-shadow-alpha)\"))];default:return[j(),o(\"--tw-text-shadow-alpha\",g),...he(\"text-shadow\",v,g,b=>`var(--tw-text-shadow-color, ${b})`)]}}switch(l.value.value){case\"none\":return l.modifier?void 0:[j(),o(\"text-shadow\",\"none\")];case\"inherit\":return l.modifier?void 0:[j(),o(\"--tw-text-shadow-color\",\"inherit\")]}{let v=e.get([`--text-shadow-${l.value.value}`]);if(v)return[j(),o(\"--tw-text-shadow-alpha\",g),...he(\"text-shadow\",v,g,C=>`var(--tw-text-shadow-color, ${C})`)]}{let v=chunk_MEY3PWYT_te(l,e,[\"--text-shadow-color\",\"--color\"]);if(v)return[j(),o(\"--tw-text-shadow-color\",chunk_MEY3PWYT_Q(v,\"var(--tw-text-shadow-alpha)\"))]}}),i(\"text-shadow\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--text-shadow-color\",\"--color\"],modifiers:Array.from({length:21},(l,g)=>`${g*5}`)},{values:[\"none\"]},{valueThemeKeys:[\"--text-shadow\"],modifiers:Array.from({length:21},(l,g)=>`${g*5}`),hasDefaultValue:e.get([\"--text-shadow\"])!==null}]);{let b=function(T){return`var(--tw-ring-inset,) 0 0 0 calc(${T} + var(--tw-ring-offset-width)) var(--tw-ring-color, ${C})`},S=function(T){return`inset 0 0 0 ${T} var(--tw-inset-ring-color, currentcolor)`};var ne=b,ae=S;let l=[\"var(--tw-inset-shadow)\",\"var(--tw-inset-ring-shadow)\",\"var(--tw-ring-offset-shadow)\",\"var(--tw-ring-shadow)\",\"var(--tw-shadow)\"].join(\", \"),g=\"0 0 #0000\",v=()=>chunk_MEY3PWYT_W([chunk_MEY3PWYT_$(\"--tw-shadow\",g),chunk_MEY3PWYT_$(\"--tw-shadow-color\"),chunk_MEY3PWYT_$(\"--tw-shadow-alpha\",\"100%\",\"<percentage>\"),chunk_MEY3PWYT_$(\"--tw-inset-shadow\",g),chunk_MEY3PWYT_$(\"--tw-inset-shadow-color\"),chunk_MEY3PWYT_$(\"--tw-inset-shadow-alpha\",\"100%\",\"<percentage>\"),chunk_MEY3PWYT_$(\"--tw-ring-color\"),chunk_MEY3PWYT_$(\"--tw-ring-shadow\",g),chunk_MEY3PWYT_$(\"--tw-inset-ring-color\"),chunk_MEY3PWYT_$(\"--tw-inset-ring-shadow\",g),chunk_MEY3PWYT_$(\"--tw-ring-inset\"),chunk_MEY3PWYT_$(\"--tw-ring-offset-width\",\"0px\",\"<length>\"),chunk_MEY3PWYT_$(\"--tw-ring-offset-color\",\"#fff\"),chunk_MEY3PWYT_$(\"--tw-ring-offset-shadow\",g)]);t(\"shadow-initial\",[v,[\"--tw-shadow-color\",\"initial\"]]),r.functional(\"shadow\",T=>{let N;if(T.modifier&&(T.modifier.kind===\"arbitrary\"?N=T.modifier.value:chunk_GFBUASX3_u(T.modifier.value)&&(N=`${T.modifier.value}%`)),!T.value){let z=e.get([\"--shadow\"]);return z===null?void 0:[v(),o(\"--tw-shadow-alpha\",N),...he(\"--tw-shadow\",z,N,ue=>`var(--tw-shadow-color, ${ue})`),o(\"box-shadow\",l)]}if(T.value.kind===\"arbitrary\"){let z=T.value.value;switch(T.value.dataType??me(z,[\"color\"])){case\"color\":return z=chunk_MEY3PWYT_X(z,T.modifier,e),z===null?void 0:[v(),o(\"--tw-shadow-color\",chunk_MEY3PWYT_Q(z,\"var(--tw-shadow-alpha)\"))];default:return[v(),o(\"--tw-shadow-alpha\",N),...he(\"--tw-shadow\",z,N,yt=>`var(--tw-shadow-color, ${yt})`),o(\"box-shadow\",l)]}}switch(T.value.value){case\"none\":return T.modifier?void 0:[v(),o(\"--tw-shadow\",g),o(\"box-shadow\",l)];case\"inherit\":return T.modifier?void 0:[v(),o(\"--tw-shadow-color\",\"inherit\")]}{let z=e.get([`--shadow-${T.value.value}`]);if(z)return[v(),o(\"--tw-shadow-alpha\",N),...he(\"--tw-shadow\",z,N,ue=>`var(--tw-shadow-color, ${ue})`),o(\"box-shadow\",l)]}{let z=chunk_MEY3PWYT_te(T,e,[\"--box-shadow-color\",\"--color\"]);if(z)return[v(),o(\"--tw-shadow-color\",chunk_MEY3PWYT_Q(z,\"var(--tw-shadow-alpha)\"))]}}),i(\"shadow\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--box-shadow-color\",\"--color\"],modifiers:Array.from({length:21},(T,N)=>`${N*5}`)},{values:[\"none\"]},{valueThemeKeys:[\"--shadow\"],modifiers:Array.from({length:21},(T,N)=>`${N*5}`),hasDefaultValue:e.get([\"--shadow\"])!==null}]),t(\"inset-shadow-initial\",[v,[\"--tw-inset-shadow-color\",\"initial\"]]),r.functional(\"inset-shadow\",T=>{let N;if(T.modifier&&(T.modifier.kind===\"arbitrary\"?N=T.modifier.value:chunk_GFBUASX3_u(T.modifier.value)&&(N=`${T.modifier.value}%`)),!T.value){let z=e.get([\"--inset-shadow\"]);return z===null?void 0:[v(),o(\"--tw-inset-shadow-alpha\",N),...he(\"--tw-inset-shadow\",z,N,ue=>`var(--tw-inset-shadow-color, ${ue})`),o(\"box-shadow\",l)]}if(T.value.kind===\"arbitrary\"){let z=T.value.value;switch(T.value.dataType??me(z,[\"color\"])){case\"color\":return z=chunk_MEY3PWYT_X(z,T.modifier,e),z===null?void 0:[v(),o(\"--tw-inset-shadow-color\",chunk_MEY3PWYT_Q(z,\"var(--tw-inset-shadow-alpha)\"))];default:return[v(),o(\"--tw-inset-shadow-alpha\",N),...he(\"--tw-inset-shadow\",z,N,yt=>`var(--tw-inset-shadow-color, ${yt})`,\"inset \"),o(\"box-shadow\",l)]}}switch(T.value.value){case\"none\":return T.modifier?void 0:[v(),o(\"--tw-inset-shadow\",g),o(\"box-shadow\",l)];case\"inherit\":return T.modifier?void 0:[v(),o(\"--tw-inset-shadow-color\",\"inherit\")]}{let z=e.get([`--inset-shadow-${T.value.value}`]);if(z)return[v(),o(\"--tw-inset-shadow-alpha\",N),...he(\"--tw-inset-shadow\",z,N,ue=>`var(--tw-inset-shadow-color, ${ue})`),o(\"box-shadow\",l)]}{let z=chunk_MEY3PWYT_te(T,e,[\"--box-shadow-color\",\"--color\"]);if(z)return[v(),o(\"--tw-inset-shadow-color\",chunk_MEY3PWYT_Q(z,\"var(--tw-inset-shadow-alpha)\"))]}}),i(\"inset-shadow\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--box-shadow-color\",\"--color\"],modifiers:Array.from({length:21},(T,N)=>`${N*5}`)},{values:[\"none\"]},{valueThemeKeys:[\"--inset-shadow\"],modifiers:Array.from({length:21},(T,N)=>`${N*5}`),hasDefaultValue:e.get([\"--inset-shadow\"])!==null}]),t(\"ring-inset\",[v,[\"--tw-ring-inset\",\"inset\"]]);let C=e.get([\"--default-ring-color\"])??\"currentcolor\";r.functional(\"ring\",T=>{if(!T.value){if(T.modifier)return;let N=e.get([\"--default-ring-width\"])??\"1px\";return[v(),o(\"--tw-ring-shadow\",b(N)),o(\"box-shadow\",l)]}if(T.value.kind===\"arbitrary\"){let N=T.value.value;switch(T.value.dataType??me(N,[\"color\",\"length\"])){case\"length\":return T.modifier?void 0:[v(),o(\"--tw-ring-shadow\",b(N)),o(\"box-shadow\",l)];default:return N=chunk_MEY3PWYT_X(N,T.modifier,e),N===null?void 0:[o(\"--tw-ring-color\",N)]}}{let N=chunk_MEY3PWYT_te(T,e,[\"--ring-color\",\"--color\"]);if(N)return[o(\"--tw-ring-color\",N)]}{if(T.modifier)return;let N=e.resolve(T.value.value,[\"--ring-width\"]);if(N===null&&chunk_GFBUASX3_u(T.value.value)&&(N=`${T.value.value}px`),N)return[v(),o(\"--tw-ring-shadow\",b(N)),o(\"box-shadow\",l)]}}),i(\"ring\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--ring-color\",\"--color\"],modifiers:Array.from({length:21},(T,N)=>`${N*5}`)},{values:[\"0\",\"1\",\"2\",\"4\",\"8\"],valueThemeKeys:[\"--ring-width\"],hasDefaultValue:!0}]),r.functional(\"inset-ring\",T=>{if(!T.value)return T.modifier?void 0:[v(),o(\"--tw-inset-ring-shadow\",S(\"1px\")),o(\"box-shadow\",l)];if(T.value.kind===\"arbitrary\"){let N=T.value.value;switch(T.value.dataType??me(N,[\"color\",\"length\"])){case\"length\":return T.modifier?void 0:[v(),o(\"--tw-inset-ring-shadow\",S(N)),o(\"box-shadow\",l)];default:return N=chunk_MEY3PWYT_X(N,T.modifier,e),N===null?void 0:[o(\"--tw-inset-ring-color\",N)]}}{let N=chunk_MEY3PWYT_te(T,e,[\"--ring-color\",\"--color\"]);if(N)return[o(\"--tw-inset-ring-color\",N)]}{if(T.modifier)return;let N=e.resolve(T.value.value,[\"--ring-width\"]);if(N===null&&chunk_GFBUASX3_u(T.value.value)&&(N=`${T.value.value}px`),N)return[v(),o(\"--tw-inset-ring-shadow\",S(N)),o(\"box-shadow\",l)]}}),i(\"inset-ring\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--ring-color\",\"--color\"],modifiers:Array.from({length:21},(T,N)=>`${N*5}`)},{values:[\"0\",\"1\",\"2\",\"4\",\"8\"],valueThemeKeys:[\"--ring-width\"],hasDefaultValue:!0}]);let D=\"var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)\";r.functional(\"ring-offset\",T=>{if(T.value){if(T.value.kind===\"arbitrary\"){let N=T.value.value;switch(T.value.dataType??me(N,[\"color\",\"length\"])){case\"length\":return T.modifier?void 0:[o(\"--tw-ring-offset-width\",N),o(\"--tw-ring-offset-shadow\",D)];default:return N=chunk_MEY3PWYT_X(N,T.modifier,e),N===null?void 0:[o(\"--tw-ring-offset-color\",N)]}}{let N=e.resolve(T.value.value,[\"--ring-offset-width\"]);if(N)return T.modifier?void 0:[o(\"--tw-ring-offset-width\",N),o(\"--tw-ring-offset-shadow\",D)];if(chunk_GFBUASX3_u(T.value.value))return T.modifier?void 0:[o(\"--tw-ring-offset-width\",`${T.value.value}px`),o(\"--tw-ring-offset-shadow\",D)]}{let N=chunk_MEY3PWYT_te(T,e,[\"--ring-offset-color\",\"--color\"]);if(N)return[o(\"--tw-ring-offset-color\",N)]}}})}return i(\"ring-offset\",()=>[{values:[\"current\",\"inherit\",\"transparent\"],valueThemeKeys:[\"--ring-offset-color\",\"--color\"],modifiers:Array.from({length:21},(l,g)=>`${g*5}`)},{values:[\"0\",\"1\",\"2\",\"4\",\"8\"],valueThemeKeys:[\"--ring-offset-width\"]}]),r.functional(\"@container\",l=>{let g=null;if(l.value===null?g=\"inline-size\":l.value.kind===\"arbitrary\"?g=l.value.value:l.value.kind===\"named\"&&l.value.value===\"normal\"?g=\"normal\":!1,g!==null)return l.modifier?[o(\"container-type\",g),o(\"container-name\",l.modifier.value)]:[o(\"container-type\",g)]}),i(\"@container\",()=>[{values:[\"normal\"],valueThemeKeys:[],hasDefaultValue:!0}]),r}var It=[\"number\",\"integer\",\"ratio\",\"percentage\"];function Or(e){let r=e.params;return mn.test(r)?i=>{let t={\"--value\":{usedSpacingInteger:!1,usedSpacingNumber:!1,themeKeys:new Set,literals:new Set},\"--modifier\":{usedSpacingInteger:!1,usedSpacingNumber:!1,themeKeys:new Set,literals:new Set}};chunk_MEY3PWYT_I(e.nodes,n=>{if(n.kind!==\"declaration\"||!n.value||!n.value.includes(\"--value(\")&&!n.value.includes(\"--modifier(\"))return;let s=chunk_MEY3PWYT_B(n.value);chunk_MEY3PWYT_I(s,a=>{if(a.kind!==\"function\")return;if(a.value===\"--spacing\"&&!(t[\"--modifier\"].usedSpacingNumber&&t[\"--value\"].usedSpacingNumber))return chunk_MEY3PWYT_I(a.nodes,u=>{if(u.kind!==\"function\"||u.value!==\"--value\"&&u.value!==\"--modifier\")return;let f=u.value;for(let m of u.nodes)if(m.kind===\"word\"){if(m.value===\"integer\")t[f].usedSpacingInteger||=!0;else if(m.value===\"number\"&&(t[f].usedSpacingNumber||=!0,t[\"--modifier\"].usedSpacingNumber&&t[\"--value\"].usedSpacingNumber))return chunk_MEY3PWYT_R.Stop}}),chunk_MEY3PWYT_R.Continue;if(a.value!==\"--value\"&&a.value!==\"--modifier\")return;let p=chunk_GFBUASX3_d(chunk_MEY3PWYT_Z(a.nodes),\",\");for(let[u,f]of p.entries())f=f.replace(/\\\\\\*/g,\"*\"),f=f.replace(/--(.*?)\\s--(.*?)/g,\"--$1-*--$2\"),f=f.replace(/\\s+/g,\"\"),f=f.replace(/(-\\*){2,}/g,\"-*\"),f[0]===\"-\"&&f[1]===\"-\"&&!f.includes(\"-*\")&&(f+=\"-*\"),p[u]=f;a.nodes=chunk_MEY3PWYT_B(p.join(\",\"));for(let u of a.nodes)if(u.kind===\"word\"&&(u.value[0]==='\"'||u.value[0]===\"'\")&&u.value[0]===u.value[u.value.length-1]){let f=u.value.slice(1,-1);t[a.value].literals.add(f)}else if(u.kind===\"word\"&&u.value[0]===\"-\"&&u.value[1]===\"-\"){let f=u.value.replace(/-\\*.*$/g,\"\");t[a.value].themeKeys.add(f)}else if(u.kind===\"word\"&&!(u.value[0]===\"[\"&&u.value[u.value.length-1]===\"]\")&&!It.includes(u.value)){console.warn(`Unsupported bare value data type: \"${u.value}\".\nOnly valid data types are: ${It.map(y=>`\"${y}\"`).join(\", \")}.\n`);let f=u.value,m=structuredClone(a),d=\"\\xB6\";chunk_MEY3PWYT_I(m.nodes,y=>{if(y.kind===\"word\"&&y.value===f)return chunk_MEY3PWYT_R.ReplaceSkip({kind:\"word\",value:d})});let c=\"^\".repeat(chunk_MEY3PWYT_Z([u]).length),w=chunk_MEY3PWYT_Z([m]).indexOf(d),h=[\"```css\",chunk_MEY3PWYT_Z([a]),\" \".repeat(w)+c,\"```\"].join(`\n`);console.warn(h)}}),n.value=chunk_MEY3PWYT_Z(s)}),i.utilities.functional(r.slice(0,-2),n=>{let s=chunk_MEY3PWYT_ee(e),a=n.value,p=n.modifier;if(a===null)return;let u=!1,f=!1,m=!1,d=!1,c=new Map,w=!1;if(chunk_MEY3PWYT_I([s],(h,y)=>{let x=y.parent;if(x?.kind!==\"rule\"&&x?.kind!==\"at-rule\"||h.kind!==\"declaration\"||!h.value)return;let V=!1,A=chunk_MEY3PWYT_B(h.value);if(chunk_MEY3PWYT_I(A,k=>{if(k.kind===\"function\"){if(k.value===\"--value\"){u=!0;let U=Vr(a,k,i);return U?(f=!0,U.ratio?w=!0:c.set(h,x),chunk_MEY3PWYT_R.ReplaceSkip(U.nodes)):(u||=!1,V=!0,chunk_MEY3PWYT_R.Stop)}else if(k.value===\"--modifier\"){if(p===null)return V=!0,chunk_MEY3PWYT_R.Stop;m=!0;let U=Vr(p,k,i);return U?(d=!0,chunk_MEY3PWYT_R.ReplaceSkip(U.nodes)):(m||=!1,V=!0,chunk_MEY3PWYT_R.Stop)}}}),V)return chunk_MEY3PWYT_R.ReplaceSkip([]);h.value=chunk_MEY3PWYT_Z(A)}),u&&!f||m&&!d||w&&d||p&&!w&&!d)return null;if(w)for(let[h,y]of c){let x=y.nodes.indexOf(h);x!==-1&&y.nodes.splice(x,1)}return s.nodes}),i.utilities.suggest(r.slice(0,-2),()=>{let n=[],s=[];for(let[a,{literals:p,usedSpacingNumber:u,usedSpacingInteger:f,themeKeys:m}]of[[n,t[\"--value\"]],[s,t[\"--modifier\"]]]){for(let d of p)a.push(d);if(u)a.push(...ut);else if(f)for(let d of ut)chunk_GFBUASX3_u(d)&&a.push(d);for(let d of i.theme.keysInNamespaces(m))a.push(d.replace(Er,(c,w,h)=>`${w}.${h}`))}return[{values:n,modifiers:s}]})}:dn.test(r)?i=>{i.utilities.static(r,()=>e.nodes.map(chunk_MEY3PWYT_ee))}:null}function Vr(e,r,i){for(let t of r.nodes){if(e.kind===\"named\"&&t.kind===\"word\"&&(t.value[0]===\"'\"||t.value[0]==='\"')&&t.value[t.value.length-1]===t.value[0]&&t.value.slice(1,-1)===e.value)return{nodes:chunk_MEY3PWYT_B(e.value)};if(e.kind===\"named\"&&t.kind===\"word\"&&t.value[0]===\"-\"&&t.value[1]===\"-\"){let n=t.value;if(n.endsWith(\"-*\")){n=n.slice(0,-2);let s=i.theme.resolve(e.value,[n]);if(s)return{nodes:chunk_MEY3PWYT_B(s)}}else{let s=n.split(\"-*\");if(s.length<=1)continue;let a=[s.shift()],p=i.theme.resolveWith(e.value,a,s);if(p){let[,u={}]=p;{let f=u[s.pop()];if(f)return{nodes:chunk_MEY3PWYT_B(f)}}}}}else if(e.kind===\"named\"&&t.kind===\"word\"){if(!It.includes(t.value))continue;let n=t.value===\"ratio\"&&\"fraction\"in e?e.fraction:e.value;if(!n)continue;let s=me(n,[t.value]);if(s===null)continue;if(s===\"ratio\"){let[a,p]=chunk_GFBUASX3_d(n,\"/\");if(!chunk_GFBUASX3_u(a)||!chunk_GFBUASX3_u(p))continue}else{if(s===\"number\"&&!ge(n))continue;if(s===\"percentage\"&&!chunk_GFBUASX3_u(n.slice(0,-1)))continue}return{nodes:chunk_MEY3PWYT_B(n),ratio:s===\"ratio\"}}else if(e.kind===\"arbitrary\"&&t.kind===\"word\"&&t.value[0]===\"[\"&&t.value[t.value.length-1]===\"]\"){let n=t.value.slice(1,-1);if(n===\"*\")return{nodes:chunk_MEY3PWYT_B(e.value)};if(\"dataType\"in e&&e.dataType&&e.dataType!==n)continue;if(\"dataType\"in e&&e.dataType)return{nodes:chunk_MEY3PWYT_B(e.value)};if(me(e.value,[n])!==null)return{nodes:chunk_MEY3PWYT_B(e.value)}}}}function he(e,r,i,t,n=\"\"){let s=!1,a=He(r,u=>i==null?t(u):u.startsWith(\"current\")?t(chunk_MEY3PWYT_Q(u,i)):((u.startsWith(\"var(\")||i.startsWith(\"var(\"))&&(s=!0),t(Nr(u,i))));function p(u){return n?chunk_GFBUASX3_d(u,\",\").map(f=>n+f).join(\",\"):u}return s?[o(e,p(He(r,t))),chunk_MEY3PWYT_J(\"@supports (color: lab(from red l a b))\",[o(e,p(a))])]:[o(e,p(a))]}function st(e,r,i,t,n=\"\"){let s=!1,a=chunk_GFBUASX3_d(r,\",\").map(p=>He(p,u=>i==null?t(u):u.startsWith(\"current\")?t(chunk_MEY3PWYT_Q(u,i)):((u.startsWith(\"var(\")||i.startsWith(\"var(\"))&&(s=!0),t(Nr(u,i))))).map(p=>`drop-shadow(${p})`).join(\" \");return s?[o(e,n+chunk_GFBUASX3_d(r,\",\").map(p=>`drop-shadow(${He(p,t)})`).join(\" \")),chunk_MEY3PWYT_J(\"@supports (color: lab(from red l a b))\",[o(e,n+a)])]:[o(e,n+a)]}var _t={\"--alpha\":gn,\"--spacing\":hn,\"--theme\":vn,theme:wn};function gn(e,r,i,...t){let[n,s]=chunk_GFBUASX3_d(i,\"/\").map(a=>a.trim());if(!n||!s)throw new Error(`The --alpha(\\u2026) function requires a color and an alpha value, e.g.: \\`--alpha(${n||\"var(--my-color)\"} / ${s||\"50%\"})\\``);if(t.length>0)throw new Error(`The --alpha(\\u2026) function only accepts one argument, e.g.: \\`--alpha(${n||\"var(--my-color)\"} / ${s||\"50%\"})\\``);return chunk_MEY3PWYT_Q(n,s)}function hn(e,r,i,...t){if(!i)throw new Error(\"The --spacing(\\u2026) function requires an argument, but received none.\");if(t.length>0)throw new Error(`The --spacing(\\u2026) function only accepts a single argument, but received ${t.length+1}.`);let n=e.theme.resolve(null,[\"--spacing\"]);if(!n)throw new Error(\"The --spacing(\\u2026) function requires that the `--spacing` theme variable exists, but it was not found.\");return`calc(${n} * ${i})`}function vn(e,r,i,...t){if(!i.startsWith(\"--\"))throw new Error(\"The --theme(\\u2026) function can only be used with CSS variables from your theme.\");let n=!1;i.endsWith(\" inline\")&&(n=!0,i=i.slice(0,-7)),r.kind===\"at-rule\"&&(n=!0);let s=e.resolveThemeValue(i,n);if(!s){if(t.length>0)return t.join(\", \");throw new Error(`Could not resolve value for theme function: \\`theme(${i})\\`. Consider checking if the variable name is correct or provide a fallback value to silence this error.`)}if(t.length===0)return s;let a=t.join(\", \");if(a===\"initial\")return s;if(s===\"initial\")return a;if(s.startsWith(\"var(\")||s.startsWith(\"theme(\")||s.startsWith(\"--theme(\")){let p=chunk_MEY3PWYT_B(s);return kn(p,a),chunk_MEY3PWYT_Z(p)}return s}function wn(e,r,i,...t){i=yn(i);let n=e.resolveThemeValue(i);if(!n&&t.length>0)return t.join(\", \");if(!n)throw new Error(`Could not resolve value for theme function: \\`theme(${i})\\`. Consider checking if the path is correct or provide a fallback value to silence this error.`);return n}var Pr=new RegExp(Object.keys(_t).map(e=>`${e}\\\\(`).join(\"|\"));function _e(e,r){let i=0;return chunk_MEY3PWYT_I(e,t=>{if(t.kind===\"declaration\"&&t.value&&Pr.test(t.value)){i|=8,t.value=Ir(t.value,t,r);return}t.kind===\"at-rule\"&&(t.name===\"@media\"||t.name===\"@custom-media\"||t.name===\"@container\"||t.name===\"@supports\")&&Pr.test(t.params)&&(i|=8,t.params=Ir(t.params,t,r))}),i}function Ir(e,r,i){let t=chunk_MEY3PWYT_B(e);return chunk_MEY3PWYT_I(t,n=>{if(n.kind===\"function\"&&n.value in _t){let s=chunk_GFBUASX3_d(chunk_MEY3PWYT_Z(n.nodes).trim(),\",\").map(p=>p.trim()),a=_t[n.value](i,r,...s);return chunk_MEY3PWYT_R.Replace(chunk_MEY3PWYT_B(a))}}),chunk_MEY3PWYT_Z(t)}function yn(e){if(e[0]!==\"'\"&&e[0]!=='\"')return e;let r=\"\",i=e[0];for(let t=1;t<e.length-1;t++){let n=e[t],s=e[t+1];n===\"\\\\\"&&(s===i||s===\"\\\\\")?(r+=s,t++):r+=n}return r}function kn(e,r){chunk_MEY3PWYT_I(e,i=>{if(i.kind===\"function\"&&!(i.value!==\"var\"&&i.value!==\"theme\"&&i.value!==\"--theme\"))if(i.nodes.length===1)i.nodes.push({kind:\"word\",value:`, ${r}`});else{let t=i.nodes[i.nodes.length-1];t.kind===\"word\"&&t.value===\"initial\"&&(t.value=r)}})}function ft(e,r){let i=e.length,t=r.length,n=i<t?i:t;for(let s=0;s<n;s++){let a=e.charCodeAt(s),p=r.charCodeAt(s);if(a>=48&&a<=57&&p>=48&&p<=57){let u=s,f=s+1,m=s,d=s+1;for(a=e.charCodeAt(f);a>=48&&a<=57;)a=e.charCodeAt(++f);for(p=r.charCodeAt(d);p>=48&&p<=57;)p=r.charCodeAt(++d);let c=e.slice(u,f),w=r.slice(m,d),h=Number(c)-Number(w);if(h)return h;if(c<w)return-1;if(c>w)return 1;continue}if(a!==p)return a-p}return e.length-r.length}function _r(e){if(e[0]!==\"[\"||e[e.length-1]!==\"]\")return null;let r=1,i=r,t=e.length-1;for(;Ke(e.charCodeAt(r));)r++;{for(i=r;r<t;r++){let m=e.charCodeAt(r);if(m===92){r++;continue}if(!(m>=65&&m<=90)&&!(m>=97&&m<=122)&&!(m>=48&&m<=57)&&!(m===45||m===95))break}if(i===r)return null}let n=e.slice(i,r);for(;Ke(e.charCodeAt(r));)r++;if(r===t)return{attribute:n,operator:null,quote:null,value:null,sensitivity:null};let s=null,a=e.charCodeAt(r);if(a===61)s=\"=\",r++;else if((a===126||a===124||a===94||a===36||a===42)&&e.charCodeAt(r+1)===61)s=e[r]+\"=\",r+=2;else return null;for(;Ke(e.charCodeAt(r));)r++;if(r===t)return null;let p=\"\",u=null;if(a=e.charCodeAt(r),a===39||a===34){u=e[r],r++,i=r;for(let m=r;m<t;m++){let d=e.charCodeAt(m);d===a?r=m+1:d===92&&m++}p=e.slice(i,r-1)}else{for(i=r;r<t&&!Ke(e.charCodeAt(r));)r++;p=e.slice(i,r)}for(;Ke(e.charCodeAt(r));)r++;if(r===t)return{attribute:n,operator:s,quote:u,value:p,sensitivity:null};let f=null;switch(e.charCodeAt(r)){case 105:case 73:{f=\"i\",r++;break}case 115:case 83:{f=\"s\",r++;break}default:return null}for(;Ke(e.charCodeAt(r));)r++;return r!==t?null:{attribute:n,operator:s,quote:u,value:p,sensitivity:f}}function Ke(e){switch(e){case 32:case 9:case 10:case 13:return!0;default:return!1}}function Ue(e,r=null){return Array.isArray(e)&&e.length===2&&typeof e[1]==\"object\"&&typeof e[1]!==null?r?e[1][r]??null:e[0]:Array.isArray(e)&&r===null?e.join(\", \"):typeof e==\"string\"&&r===null?e:null}function Dr(e,{theme:r},i){for(let t of i){let n=Le([t]);n&&e.theme.clearNamespace(`--${n}`,4)}for(let[t,n]of xn(r)){if(typeof n!=\"string\"&&typeof n!=\"number\")continue;if(typeof n==\"string\"&&(n=n.replace(/<alpha-value>/g,\"1\")),t[0]===\"opacity\"&&(typeof n==\"number\"||typeof n==\"string\")){let a=typeof n==\"string\"?parseFloat(n):n;a>=0&&a<=1&&(n=a*100+\"%\")}let s=Le(t);s&&e.theme.add(`--${s}`,\"\"+n,7)}if(Object.hasOwn(r,\"fontFamily\")){let t=5;{let n=Ue(r.fontFamily.sans);n&&e.theme.hasDefault(\"--font-sans\")&&(e.theme.add(\"--default-font-family\",n,t),e.theme.add(\"--default-font-feature-settings\",Ue(r.fontFamily.sans,\"fontFeatureSettings\")??\"normal\",t),e.theme.add(\"--default-font-variation-settings\",Ue(r.fontFamily.sans,\"fontVariationSettings\")??\"normal\",t))}{let n=Ue(r.fontFamily.mono);n&&e.theme.hasDefault(\"--font-mono\")&&(e.theme.add(\"--default-mono-font-family\",n,t),e.theme.add(\"--default-mono-font-feature-settings\",Ue(r.fontFamily.mono,\"fontFeatureSettings\")??\"normal\",t),e.theme.add(\"--default-mono-font-variation-settings\",Ue(r.fontFamily.mono,\"fontVariationSettings\")??\"normal\",t))}}return r}function xn(e){let r=[];return Kr(e,[],(i,t)=>{if(Cn(i))return r.push([t,i]),1;if($n(i)){r.push([t,i[0]]);for(let n of Reflect.ownKeys(i[1]))r.push([[...t,`-${n}`],i[1][n]]);return 1}if(Array.isArray(i)&&i.every(n=>typeof n==\"string\"))return t[0]===\"fontSize\"?(r.push([t,i[0]]),i.length>=2&&r.push([[...t,\"-line-height\"],i[1]])):r.push([t,i.join(\", \")]),1}),r}var An=/^[a-zA-Z0-9-_%/\\.]+$/;function Le(e){if(e[0]===\"container\")return null;e=e.slice(),e[0]===\"animation\"&&(e[0]=\"animate\"),e[0]===\"aspectRatio\"&&(e[0]=\"aspect\"),e[0]===\"borderRadius\"&&(e[0]=\"radius\"),e[0]===\"boxShadow\"&&(e[0]=\"shadow\"),e[0]===\"colors\"&&(e[0]=\"color\"),e[0]===\"containers\"&&(e[0]=\"container\"),e[0]===\"fontFamily\"&&(e[0]=\"font\"),e[0]===\"fontSize\"&&(e[0]=\"text\"),e[0]===\"letterSpacing\"&&(e[0]=\"tracking\"),e[0]===\"lineHeight\"&&(e[0]=\"leading\"),e[0]===\"maxWidth\"&&(e[0]=\"container\"),e[0]===\"screens\"&&(e[0]=\"breakpoint\"),e[0]===\"transitionTimingFunction\"&&(e[0]=\"ease\");for(let r of e)if(!An.test(r))return null;return e.map((r,i,t)=>r===\"1\"&&i!==t.length-1?\"\":r).map(r=>r.replaceAll(\".\",\"_\").replace(/([a-z])([A-Z])/g,(i,t,n)=>`${t}-${n.toLowerCase()}`)).filter((r,i)=>r!==\"DEFAULT\"||i!==e.length-1).join(\"-\")}function Cn(e){return typeof e==\"number\"||typeof e==\"string\"}function $n(e){if(!Array.isArray(e)||e.length!==2||typeof e[0]!=\"string\"&&typeof e[0]!=\"number\"||e[1]===void 0||e[1]===null||typeof e[1]!=\"object\")return!1;for(let r of Reflect.ownKeys(e[1]))if(typeof r!=\"string\"||typeof e[1][r]!=\"string\"&&typeof e[1][r]!=\"number\")return!1;return!0}function Kr(e,r=[],i){for(let t of Reflect.ownKeys(e)){let n=e[t];if(n==null)continue;let s=[...r,t],a=i(n,s)??0;if(a!==1){if(a===2)return 2;if(!(!Array.isArray(n)&&typeof n!=\"object\")&&Kr(n,s,i)===2)return 2}}}var Sn=/^(?<value>[-+]?(?:\\d*\\.)?\\d+)(?<unit>[a-z]+|%)?$/i,Ve=new chunk_MEY3PWYT_K(e=>{let r=Sn.exec(e);if(!r)return null;let i=r.groups?.value;if(i===void 0)return null;let t=Number(i);if(Number.isNaN(t))return null;let n=r.groups?.unit;return n===void 0?[t,null]:[t,n]});function Ur(e,r=null){let i=!1,t=chunk_MEY3PWYT_B(e);return chunk_MEY3PWYT_I(t,{exit(n){if(n.kind===\"word\"&&n.value!==\"0\"){let s=Tn(n.value,r);return s===null||s===n.value?void 0:(i=!0,chunk_MEY3PWYT_R.ReplaceSkip(ie(s)))}else if(n.kind===\"function\"&&(n.value===\"calc\"||n.value===\"\")){if(n.nodes.length!==5)return;let s=Ve.get(n.nodes[0].value),a=n.nodes[2].value,p=Ve.get(n.nodes[4].value);if(a===\"*\"&&(s?.[0]===0&&s?.[1]===null||p?.[0]===0&&p?.[1]===null))return i=!0,chunk_MEY3PWYT_R.ReplaceSkip(ie(\"0\"));if(s===null||p===null)return;switch(a){case\"*\":{if(s[1]===p[1]||s[1]===null&&p[1]!==null||s[1]!==null&&p[1]===null)return i=!0,chunk_MEY3PWYT_R.ReplaceSkip(ie(`${s[0]*p[0]}${s[1]??\"\"}`));break}case\"+\":{if(s[1]===p[1])return i=!0,chunk_MEY3PWYT_R.ReplaceSkip(ie(`${s[0]+p[0]}${s[1]??\"\"}`));break}case\"-\":{if(s[1]===p[1])return i=!0,chunk_MEY3PWYT_R.ReplaceSkip(ie(`${s[0]-p[0]}${s[1]??\"\"}`));break}case\"/\":{if(p[0]!==0&&(s[1]===null&&p[1]===null||s[1]!==null&&p[1]===null))return i=!0,chunk_MEY3PWYT_R.ReplaceSkip(ie(`${s[0]/p[0]}${s[1]??\"\"}`));break}}}}}),i?chunk_MEY3PWYT_Z(t):e}function Tn(e,r=null){let i=Ve.get(e);if(i===null)return null;let[t,n]=i;if(n===null)return`${t}`;if(t===0&&y(e))return\"0\";switch(n.toLowerCase()){case\"in\":return`${t*96}px`;case\"cm\":return`${t*96/2.54}px`;case\"mm\":return`${t*96/2.54/10}px`;case\"q\":return`${t*96/2.54/10/4}px`;case\"pc\":return`${t*96/6}px`;case\"pt\":return`${t*96/72}px`;case\"rem\":return r!==null?`${t*r}px`:null;case\"grad\":return`${t*.9}deg`;case\"rad\":return`${t*180/Math.PI}deg`;case\"turn\":return`${t*360}deg`;case\"ms\":return`${t/1e3}s`;case\"khz\":return`${t*1e3}hz`;default:return`${t}${n}`}}function Lr(e,r=\"top\",i=\"right\",t=\"bottom\",n=\"left\"){return Fr(`${e}-${r}`,`${e}-${i}`,`${e}-${t}`,`${e}-${n}`)}function Fr(e=\"top\",r=\"right\",i=\"bottom\",t=\"left\"){return{1:[[e,0],[r,0],[i,0],[t,0]],2:[[e,0],[r,1],[i,0],[t,1]],3:[[e,0],[r,1],[i,2],[t,1]],4:[[e,0],[r,1],[i,2],[t,3]]}}function Ne(e,r){return{1:[[e,0],[r,0]],2:[[e,0],[r,1]]}}var jr={inset:Fr(),margin:Lr(\"margin\"),padding:Lr(\"padding\"),gap:Ne(\"row-gap\",\"column-gap\")},Mr={\"inset-block\":Ne(\"top\",\"bottom\"),\"inset-inline\":Ne(\"left\",\"right\"),\"margin-block\":Ne(\"margin-top\",\"margin-bottom\"),\"margin-inline\":Ne(\"margin-left\",\"margin-right\"),\"padding-block\":Ne(\"padding-top\",\"padding-bottom\"),\"padding-inline\":Ne(\"padding-left\",\"padding-right\")},zr={\"border-block\":[\"border-bottom\",\"border-top\"],\"border-block-color\":[\"border-bottom-color\",\"border-top-color\"],\"border-block-style\":[\"border-bottom-style\",\"border-top-style\"],\"border-block-width\":[\"border-bottom-width\",\"border-top-width\"],\"border-inline\":[\"border-left\",\"border-right\"],\"border-inline-color\":[\"border-left-color\",\"border-right-color\"],\"border-inline-style\":[\"border-left-style\",\"border-right-style\"],\"border-inline-width\":[\"border-left-width\",\"border-right-width\"]};function Wr(e,r){if(r&2){if(e.property in Mr){let i=chunk_GFBUASX3_d(e.value,\" \");return Mr[e.property][i.length]?.map(([t,n])=>o(t,i[n],e.important))}if(e.property in zr)return zr[e.property]?.map(i=>o(i,e.value,e.important))}if(e.property in jr){let i=chunk_GFBUASX3_d(e.value,\" \");return jr[e.property][i.length]?.map(([t,n])=>o(t,i[n],e.important))}return null}function Vn(e){return{kind:\"combinator\",value:e}}function Nn(e,r){return{kind:\"function\",value:e,nodes:r}}function chunk_MEY3PWYT_be(e){return{kind:\"selector\",value:e}}function En(e){return{kind:\"separator\",value:e}}function Rn(e){return{kind:\"value\",value:e}}function ce(e){let r=\"\";for(let i of e)switch(i.kind){case\"combinator\":case\"selector\":case\"separator\":case\"value\":{r+=i.value;break}case\"function\":r+=i.value+\"(\"+ce(i.nodes)+\")\"}return r}var Br=92,On=93,Yr=41,Pn=58,Gr=44,In=34,_n=46,qr=62,Zr=10,Dn=35,Hr=91,Jr=40,Qr=43,Kn=39,Xr=32,ei=9,ti=126,Un=38,Ln=42;function Ee(e){e=e.replaceAll(`\\r\n`,`\n`);let r=[],i=[],t=null,n=\"\",s;for(let a=0;a<e.length;a++){let p=e.charCodeAt(a);switch(p){case Gr:case qr:case Zr:case Xr:case Qr:case ei:case ti:{if(n.length>0){let c=chunk_MEY3PWYT_be(n);t?t.nodes.push(c):r.push(c),n=\"\"}let u=a,f=a+1;for(;f<e.length&&(s=e.charCodeAt(f),!(s!==Gr&&s!==qr&&s!==Zr&&s!==Xr&&s!==Qr&&s!==ei&&s!==ti));f++);a=f-1;let m=e.slice(u,f),d=m.trim()===\",\"?En(m):Vn(m);t?t.nodes.push(d):r.push(d);break}case Jr:{let u=Nn(n,[]);if(n=\"\",u.value!==\":not\"&&u.value!==\":where\"&&u.value!==\":has\"&&u.value!==\":is\"){let f=a+1,m=0;for(let c=a+1;c<e.length;c++){if(s=e.charCodeAt(c),s===Jr){m++;continue}if(s===Yr){if(m===0){a=c;break}m--}}let d=a;u.nodes.push(Rn(e.slice(f,d))),n=\"\",a=d,t?t.nodes.push(u):r.push(u);break}t?t.nodes.push(u):r.push(u),i.push(u),t=u;break}case Yr:{let u=i.pop();if(n.length>0){let f=chunk_MEY3PWYT_be(n);u.nodes.push(f),n=\"\"}i.length>0?t=i[i.length-1]:t=null;break}case _n:case Pn:case Dn:{if(n.length>0){let u=chunk_MEY3PWYT_be(n);t?t.nodes.push(u):r.push(u)}n=e[a];break}case Hr:{if(n.length>0){let m=chunk_MEY3PWYT_be(n);t?t.nodes.push(m):r.push(m)}n=\"\";let u=a,f=0;for(let m=a+1;m<e.length;m++){if(s=e.charCodeAt(m),s===Hr){f++;continue}if(s===On){if(f===0){a=m;break}f--}}n+=e.slice(u,a+1);break}case Kn:case In:{let u=a;for(let f=a+1;f<e.length;f++)if(s=e.charCodeAt(f),s===Br)f+=1;else if(s===p){a=f;break}n+=e.slice(u,a+1);break}case Un:case Ln:{if(n.length>0){let u=chunk_MEY3PWYT_be(n);t?t.nodes.push(u):r.push(u),n=\"\"}t?t.nodes.push(chunk_MEY3PWYT_be(e[a])):r.push(chunk_MEY3PWYT_be(e[a]));break}case Br:{n+=e[a]+e[a+1],a+=1;break}default:n+=e[a]}}return n.length>0&&r.push(chunk_MEY3PWYT_be(n)),r}function se(e,r){for(let i in e)delete e[i];return Object.assign(e,r)}function Re(e){let r=[];for(let i of chunk_GFBUASX3_d(e,\".\")){if(!i.includes(\"[\")){r.push(i);continue}let t=0;for(;;){let n=i.indexOf(\"[\",t),s=i.indexOf(\"]\",n);if(n===-1||s===-1)break;n>t&&r.push(i.slice(t,n)),r.push(i.slice(n+1,s)),t=s+1}t<=i.length-1&&r.push(i.slice(t))}return r}function Dt(e){let r=e;return r.storage[ai]??=jn(),r.storage[oi]??=zn(r),r.storage[li]??=Bn(),r.storage[si]??=Gn(),r.storage[ui]??=Zn(),r.storage[Ut]??=ea(r),r.storage[fi]??=ia(r),r.storage[chunk_MEY3PWYT_pe]??=ga(r),r.storage[Lt]??=va(),r.storage[dt]??=wa(r),r.storage[jt]??=ya(r),r.storage[gt]??=ka(r),r.storage[di]??=ba(r),r}var ai=Symbol();function jn(){return new chunk_MEY3PWYT_K(e=>new chunk_MEY3PWYT_K(r=>({rem:e,features:r})))}function Mn(e,r){let i=0;return r?.collapse&&(i|=1),r?.logicalToPhysical&&(i|=2),Dt(e).storage[ai].get(r?.rem??null).get(i)}var oi=Symbol();function zn(e){return new chunk_MEY3PWYT_K(r=>new chunk_MEY3PWYT_K(i=>({features:i,designSystem:e,signatureOptions:r})))}function Fn(e,r,i){let t=0;return i?.collapse&&(t|=1),Dt(e).storage[oi].get(r).get(t)}function Kt(e,r,i){let t=Mn(e,i),n=Fn(e,t,i),s=Dt(e),a=new Set,p=s.storage[li].get(n);for(let u of r)a.add(p.get(u));return a.size<=1||!(n.features&1)?Array.from(a):Wn(n,Array.from(a))}function Wn(e,r){if(r.length<=1)return r;let i=e.designSystem,t=new chunk_MEY3PWYT_K(p=>new chunk_MEY3PWYT_K(u=>new Set)),n=e.designSystem.theme.prefix?`${e.designSystem.theme.prefix}:`:\"\";for(let p of r){let u=chunk_GFBUASX3_d(p,\":\"),f=u.pop(),m=f.endsWith(\"!\");m&&(f=f.slice(0,-1));let d=u.length>0?`${u.join(\":\")}:`:\"\",c=m?\"!\":\"\";t.get(d).get(c).add(`${n}${f}`)}let s=new Set;for(let[p,u]of t.entries())for(let[f,m]of u.entries())for(let d of a(Array.from(m)))n&&d.startsWith(n)&&(d=d.slice(n.length)),s.add(`${p}${d}${f}`);return Array.from(s);function a(p){let u=e.signatureOptions,f=i.storage[dt].get(u),m=i.storage[Lt].get(u),c=p.map(A=>f.get(A)).map(A=>{let k=null;for(let[U,E]of A)for(let O of E){let j=m.get(U).get(O);if(k===null?k=new Set(j):k=ni(k,j),k.size===0)return k}return k}),w=new chunk_MEY3PWYT_K(A=>new Set([A])),h=Array.from(c);for(let A=0;A<h.length;A++){let k=h[A];for(let U=A+1;U<h.length;U++){let E=h[U];for(let O of k)if(E.has(O)){w.get(A).add(U),w.get(U).add(A);break}}}if(w.size===0)return p;let y=new chunk_MEY3PWYT_K(A=>A.split(\",\").map(Number));for(let A of w.values()){let k=Array.from(A).sort((U,E)=>U-E);y.get(k.join(\",\"))}let x=new Set(p),V=new Set;for(let A of y.values())for(let k of Aa(A)){if(k.some(O=>V.has(p[O])))continue;let U=k.flatMap(O=>c[O]).reduce(ni),E=i.storage[chunk_MEY3PWYT_pe].get(u).get(k.map(O=>p[O]).sort((O,j)=>O.localeCompare(j)).join(\" \"));for(let O of U)if(i.storage[chunk_MEY3PWYT_pe].get(u).get(O)===E){for(let _ of k)V.add(p[_]);x.add(O);break}}for(let A of V)x.delete(A);return Array.from(x)}}var li=Symbol();function Bn(){return new chunk_MEY3PWYT_K(e=>{let r=e.designSystem,i=r.theme.prefix?`${r.theme.prefix}:`:\"\",t=r.storage[si].get(e),n=r.storage[ui].get(e);return new chunk_MEY3PWYT_K((s,a)=>{for(let p of r.parseCandidate(s)){let u=p.variants.slice().reverse().flatMap(d=>t.get(d)),f=p.important;if(f||u.length>0){let c=a.get(r.printCandidate({...p,variants:[],important:!1}));return r.theme.prefix!==null&&u.length>0&&(c=c.slice(i.length)),u.length>0&&(c=`${u.map(w=>r.printVariant(w)).join(\":\")}:${c}`),f&&(c+=\"!\"),r.theme.prefix!==null&&u.length>0&&(c=`${i}${c}`),c}let m=n.get(s);if(m!==s)return m}return s})})}var Yn=[Xn,pa,da,ua],si=Symbol();function Gn(){return new chunk_MEY3PWYT_K(e=>new chunk_MEY3PWYT_K(r=>{let i=[r];for(let t of Yn)for(let n of i.splice(0)){let s=t(Ie(n),e);if(Array.isArray(s)){i.push(...s);continue}else i.push(s)}return i}))}var qn=[Jn,Qn,na,oa,sa,fa,ca,ma],ui=Symbol();function Zn(){return new chunk_MEY3PWYT_K(e=>{let r=e.designSystem;return new chunk_MEY3PWYT_K(i=>{for(let t of r.parseCandidate(i)){let n=xr(t);for(let a of qn)n=a(n,e);let s=r.printCandidate(n);if(i!==s)return s}return i})})}var Hn=[\"t\",\"tr\",\"r\",\"br\",\"b\",\"bl\",\"l\",\"tl\"];function Jn(e){if(e.kind===\"static\"&&e.root.startsWith(\"bg-gradient-to-\")){let r=e.root.slice(15);return Hn.includes(r)&&(e.root=`bg-linear-to-${r}`),e}return e}function Qn(e,r){let i=r.designSystem.storage[Ut];if(e.kind===\"arbitrary\"){let[t,n]=i(e.value,e.modifier===null?1:0);t!==e.value&&(e.value=t,n!==null&&(e.modifier=n))}else if(e.kind===\"functional\"&&e.value?.kind===\"arbitrary\"){let[t,n]=i(e.value.value,e.modifier===null?1:0);t!==e.value.value&&(e.value.value=t,n!==null&&(e.modifier=n))}return e}function Xn(e,r){let i=r.designSystem.storage[Ut],t=mt(e);for(let[n]of t)if(n.kind===\"arbitrary\"){let[s]=i(n.selector,2);s!==n.selector&&(n.selector=s)}else if(n.kind===\"functional\"&&n.value?.kind===\"arbitrary\"){let[s]=i(n.value.value,2);s!==n.value.value&&(n.value.value=s)}return e}var Ut=Symbol();function ea(e){return r(e);function r(i){function t(p,u=0){let f=chunk_MEY3PWYT_B(p);if(u&2)return[ct(f,a),null];let m=0,d=0;if(chunk_MEY3PWYT_I(f,h=>{h.kind===\"function\"&&h.value===\"theme\"&&(m+=1,chunk_MEY3PWYT_I(h.nodes,y=>y.kind===\"separator\"&&y.value.includes(\",\")?chunk_MEY3PWYT_R.Stop:y.kind===\"word\"&&y.value===\"/\"?(d+=1,chunk_MEY3PWYT_R.Stop):chunk_MEY3PWYT_R.Skip))}),m===0)return[p,null];if(d===0)return[ct(f,s),null];if(d>1)return[ct(f,a),null];let c=null;return[ct(f,(h,y)=>{let x=chunk_GFBUASX3_d(h,\"/\").map(V=>V.trim());if(x.length>2)return null;if(f.length===1&&x.length===2&&u&1){let[V,A]=x;if(/^\\d+%$/.test(A))c={kind:\"named\",value:A.slice(0,-1)};else if(/^0?\\.\\d+$/.test(A)){let k=Number(A)*100;c={kind:Number.isInteger(k)?\"named\":\"arbitrary\",value:k.toString()}}else c={kind:\"arbitrary\",value:A};h=V}return s(h,y)||a(h,y)}),c]}function n(p,u=!0){let f=`--${Le(Re(p))}`;return i.theme.get([f])?u&&i.theme.prefix?`--${i.theme.prefix}-${f.slice(2)}`:f:null}function s(p,u){let f=n(p);if(f)return u?`var(${f}, ${u})`:`var(${f})`;let m=Re(p);if(m[0]===\"spacing\"&&i.theme.get([\"--spacing\"])){let d=m[1];return ge(d)?`--spacing(${d})`:null}return null}function a(p,u){let f=chunk_GFBUASX3_d(p,\"/\").map(c=>c.trim());p=f.shift();let m=n(p,!1);if(!m)return null;let d=f.length>0?`/${f.join(\"/\")}`:\"\";return u?`--theme(${m}${d}, ${u})`:`--theme(${m}${d})`}return t}}function ct(e,r){return chunk_MEY3PWYT_I(e,(i,t)=>{if(i.kind===\"function\"&&i.value===\"theme\"){if(i.nodes.length<1)return;i.nodes[0].kind===\"separator\"&&i.nodes[0].value.trim()===\"\"&&i.nodes.shift();let n=i.nodes[0];if(n.kind!==\"word\")return;let s=n.value,a=1;for(let f=a;f<i.nodes.length&&!i.nodes[f].value.includes(\",\");f++)s+=chunk_MEY3PWYT_Z([i.nodes[f]]),a=f+1;s=ta(s);let p=i.nodes.slice(a+1),u=p.length>0?r(s,chunk_MEY3PWYT_Z(p)):r(s);if(u===null)return;if(t.parent){let f=t.parent.nodes.indexOf(i)-1;for(;f!==-1;){let m=t.parent.nodes[f];if(m.kind===\"separator\"&&m.value.trim()===\"\"){f-=1;continue}/^[-+*/]$/.test(m.value.trim())&&(u=`(${u})`);break}}return chunk_MEY3PWYT_R.Replace(chunk_MEY3PWYT_B(u))}}),chunk_MEY3PWYT_Z(e)}function ta(e){if(e[0]!==\"'\"&&e[0]!=='\"')return e;let r=\"\",i=e[0];for(let t=1;t<e.length-1;t++){let n=e[t],s=e[t+1];n===\"\\\\\"&&(s===i||s===\"\\\\\")?(r+=s,t++):r+=n}return r}function*mt(e){function*r(i,t=null){yield[i,t],i.kind===\"compound\"&&(yield*r(i.variant,i))}yield*r(e,null)}function ve(e,r){return e.parseCandidate(e.theme.prefix&&!r.startsWith(`${e.theme.prefix}:`)?`${e.theme.prefix}:${r}`:r)}function ra(e,r){let i=e.printCandidate(r);return e.theme.prefix&&i.startsWith(`${e.theme.prefix}:`)?i.slice(e.theme.prefix.length+1):i}var fi=Symbol();function ia(e){let r=e.resolveThemeValue(\"--spacing\");if(r===void 0)return null;let i=Ve.get(r);if(!i)return null;let[t,n]=i;return new chunk_MEY3PWYT_K(s=>{let a=Ve.get(s);if(!a)return null;let[p,u]=a;return u!==n?null:p/t})}function na(e,r){if(e.kind!==\"arbitrary\"&&!(e.kind===\"functional\"&&e.value?.kind===\"arbitrary\"))return e;let i=r.designSystem,t=i.storage[jt].get(r.signatureOptions),n=i.storage[chunk_MEY3PWYT_pe].get(r.signatureOptions),s=i.printCandidate(e),a=n.get(s);if(typeof a!=\"string\")return e;for(let u of p(a,e)){let f=i.printCandidate(u);if(n.get(f)===a&&aa(i,e,u))return u}return e;function*p(u,f){let m=t.get(u);if(!(m.length>1)){if(m.length===0&&f.modifier){let d={...f,modifier:null},c=n.get(i.printCandidate(d));if(typeof c==\"string\")for(let w of p(c,d))yield Object.assign({},w,{modifier:f.modifier})}if(m.length===1)for(let d of ve(i,m[0]))yield d;else if(m.length===0){let d=f.kind===\"arbitrary\"?f.value:f.value?.value??null;if(d===null)return;let c=i.storage[fi]?.get(d)??null,w=\"\";c!==null&&c<0&&(w=\"-\",c=Math.abs(c));for(let h of Array.from(i.utilities.keys(\"functional\")).sort((y,x)=>+(y[0]===\"-\")-+(x[0]===\"-\"))){w&&(h=`${w}${h}`);for(let y of ve(i,`${h}-${d}`))yield y;if(f.modifier)for(let y of ve(i,`${h}-${d}${f.modifier}`))yield y;if(c!==null){for(let y of ve(i,`${h}-${c}`))yield y;if(f.modifier)for(let y of ve(i,`${h}-${c}${Ze(f.modifier)}`))yield y}for(let y of ve(i,`${h}-[${d}]`))yield y;if(f.modifier)for(let y of ve(i,`${h}-[${d}]${Ze(f.modifier)}`))yield y}}}}}function aa(e,r,i){let t=null;if(r.kind===\"functional\"&&r.value?.kind===\"arbitrary\"&&r.value.value.includes(\"var(--\")?t=r.value.value:r.kind===\"arbitrary\"&&r.value.includes(\"var(--\")&&(t=r.value),t===null)return!0;let n=e.candidatesToCss([e.printCandidate(i)]).join(`\n`),s=!0;return chunk_MEY3PWYT_I(chunk_MEY3PWYT_B(t),a=>{if(a.kind===\"function\"&&a.value===\"var\"){let p=a.nodes[0].value;if(!new RegExp(`var\\\\(${p}[,)]\\\\s*`,\"g\").test(n)||n.includes(`${p}:`))return s=!1,chunk_MEY3PWYT_R.Stop}}),s}function oa(e,r){if(e.kind!==\"functional\"||e.value?.kind!==\"named\")return e;let i=r.designSystem,t=i.storage[jt].get(r.signatureOptions),n=i.storage[chunk_MEY3PWYT_pe].get(r.signatureOptions),s=i.printCandidate(e),a=n.get(s);if(typeof a!=\"string\")return e;for(let u of p(a,e)){let f=i.printCandidate(u);if(n.get(f)===a)return u}return e;function*p(u,f){let m=t.get(u);if(!(m.length>1)){if(m.length===0&&f.modifier){let d={...f,modifier:null},c=n.get(i.printCandidate(d));if(typeof c==\"string\")for(let w of p(c,d))yield Object.assign({},w,{modifier:f.modifier})}if(m.length===1)for(let d of ve(i,m[0]))yield d}}}var la=new Map([[\"order-none\",\"order-0\"],[\"break-words\",\"wrap-break-word\"]]);function sa(e,r){let i=r.designSystem,t=i.storage[chunk_MEY3PWYT_pe].get(r.signatureOptions),n=ra(i,e),s=la.get(n)??null;if(s===null)return e;let a=t.get(n);if(typeof a!=\"string\")return e;let p=t.get(s);if(typeof p!=\"string\"||a!==p)return e;let[u]=ve(i,s);return u}function ua(e,r){let i=r.designSystem,t=i.storage[gt],n=i.storage[di],s=mt(e);for(let[a]of s){if(a.kind===\"compound\")continue;let p=i.printVariant(a),u=t.get(p);if(typeof u!=\"string\")continue;let f=n.get(u);if(f.length!==1)continue;let m=f[0],d=i.parseVariant(m);d!==null&&se(a,d)}return e}function fa(e,r){let i=r.designSystem,t=i.storage[chunk_MEY3PWYT_pe].get(r.signatureOptions);if(e.kind===\"functional\"&&e.value?.kind===\"arbitrary\"&&e.value.dataType!==null){let n=i.printCandidate({...e,value:{...e.value,dataType:null}});t.get(i.printCandidate(e))===t.get(n)&&(e.value.dataType=null)}return e}function ca(e,r){if(e.kind!==\"functional\"||e.value?.kind!==\"arbitrary\")return e;let i=r.designSystem,t=i.storage[chunk_MEY3PWYT_pe].get(r.signatureOptions),n=t.get(i.printCandidate(e));if(n===null)return e;for(let s of ci(e))if(t.get(i.printCandidate({...e,value:s}))===n)return e.value=s,e;return e}function pa(e){let r=mt(e);for(let[i]of r)if(i.kind===\"functional\"&&i.root===\"data\"&&i.value?.kind===\"arbitrary\"&&!i.value.value.includes(\"=\"))i.value={kind:\"named\",value:i.value.value};else if(i.kind===\"functional\"&&i.root===\"aria\"&&i.value?.kind===\"arbitrary\"&&(i.value.value.endsWith(\"=true\")||i.value.value.endsWith('=\"true\"')||i.value.value.endsWith(\"='true'\"))){let[t,n]=chunk_GFBUASX3_d(i.value.value,\"=\");if(t[t.length-1]===\"~\"||t[t.length-1]===\"|\"||t[t.length-1]===\"^\"||t[t.length-1]===\"$\"||t[t.length-1]===\"*\")continue;i.value={kind:\"named\",value:i.value.value.slice(0,i.value.value.indexOf(\"=\"))}}else i.kind===\"functional\"&&i.root===\"supports\"&&i.value?.kind===\"arbitrary\"&&/^[a-z-][a-z0-9-]*$/i.test(i.value.value)&&(i.value={kind:\"named\",value:i.value.value});return e}function*ci(e,r=e.value?.value??\"\",i=new Set){if(i.has(r))return;if(i.add(r),yield{kind:\"named\",value:r,fraction:null},r.endsWith(\"%\")&&ge(r.slice(0,-1))&&(yield{kind:\"named\",value:r.slice(0,-1),fraction:null}),r.includes(\"/\")){let[s,a]=r.split(\"/\");chunk_GFBUASX3_u(s)&&chunk_GFBUASX3_u(a)&&(yield{kind:\"named\",value:s,fraction:`${s}/${a}`})}let t=new Set;for(let s of r.matchAll(/(\\d+\\/\\d+)|(\\d+\\.?\\d+)/g))t.add(s[0].trim());let n=Array.from(t).sort((s,a)=>s.length-a.length);for(let s of n)yield*ci(e,s,i)}function ii(e){return!e.some(r=>r.kind===\"separator\"&&r.value.trim()===\",\")}function pt(e){let r=e.value.trim();return e.kind===\"selector\"&&r[0]===\"[\"&&r[r.length-1]===\"]\"}function da(e,r){let i=[e],t=r.designSystem,n=t.storage[gt],s=mt(e);for(let[a,p]of s)if(a.kind===\"compound\"&&(a.root===\"has\"||a.root===\"not\"||a.root===\"in\")&&a.modifier!==null&&\"modifier\"in a.variant&&(a.variant.modifier=a.modifier,a.modifier=null),a.kind===\"arbitrary\"){if(a.relative)continue;let u=Ee(a.selector.trim());if(!ii(u))continue;if(p===null&&u.length===3&&u[0].kind===\"selector\"&&u[0].value===\"&\"&&u[1].kind===\"combinator\"&&u[1].value.trim()===\">\"&&u[2].kind===\"selector\"&&u[2].value===\"*\"){se(a,t.parseVariant(\"*\"));continue}if(p===null&&u.length===3&&u[0].kind===\"selector\"&&u[0].value===\"&\"&&u[1].kind===\"combinator\"&&u[1].value.trim()===\"\"&&u[2].kind===\"selector\"&&u[2].value===\"*\"){se(a,t.parseVariant(\"**\"));continue}if(p===null&&u.length===3&&u[1].kind===\"combinator\"&&u[1].value.trim()===\"\"&&u[2].kind===\"selector\"&&u[2].value===\"&\"){u.pop(),u.pop(),se(a,t.parseVariant(`in-[${ce(u)}]`));continue}if(p===null&&u[0].kind===\"selector\"&&(u[0].value===\"@media\"||u[0].value===\"@supports\")){let c=n.get(t.printVariant(a)),w=chunk_MEY3PWYT_B(ce(u)),h=!1;if(chunk_MEY3PWYT_I(w,y=>{if(y.kind===\"word\"&&y.value===\"not\")return h=!0,chunk_MEY3PWYT_R.Replace([])}),w=chunk_MEY3PWYT_B(chunk_MEY3PWYT_Z(w)),chunk_MEY3PWYT_I(w,y=>{y.kind===\"separator\"&&y.value!==\" \"&&y.value.trim()===\"\"&&(y.value=\" \")}),h){let y=t.parseVariant(`not-[${chunk_MEY3PWYT_Z(w)}]`);if(y===null)continue;let x=n.get(t.printVariant(y));if(c===x){se(a,y);continue}}}let f=null;p===null&&u.length===3&&u[0].kind===\"selector\"&&u[0].value.trim()===\"&\"&&u[1].kind===\"combinator\"&&u[1].value.trim()===\">\"&&u[2].kind===\"selector\"&&(pt(u[2])||u[2].value[0]===\":\")&&(u=[u[2]],f=t.parseVariant(\"*\")),p===null&&u.length===3&&u[0].kind===\"selector\"&&u[0].value.trim()===\"&\"&&u[1].kind===\"combinator\"&&u[1].value.trim()===\"\"&&u[2].kind===\"selector\"&&(pt(u[2])||u[2].value[0]===\":\")&&(u=[u[2]],f=t.parseVariant(\"**\"));let m=u.filter(c=>!(c.kind===\"selector\"&&c.value.trim()===\"&\"));if(m.length!==1)continue;let d=m[0];if(d.kind===\"function\"&&d.value===\":is\"){if(!ii(d.nodes)||d.nodes.length!==1||!pt(d.nodes[0]))continue;d=d.nodes[0]}if(d.kind===\"function\"&&d.value[0]===\":\"||d.kind===\"selector\"&&d.value[0]===\":\"){let c=d,w=!1;if(c.kind===\"function\"&&c.value===\":not\"){if(w=!0,c.nodes.length!==1||c.nodes[0].kind!==\"selector\"&&c.nodes[0].kind!==\"function\"||c.nodes[0].value[0]!==\":\")continue;c=c.nodes[0]}let h=(x=>{if(x===\":nth-child\"&&c.kind===\"function\"&&c.nodes.length===1&&c.nodes[0].kind===\"value\"&&c.nodes[0].value===\"odd\")return w?(w=!1,\"even\"):\"odd\";if(x===\":nth-child\"&&c.kind===\"function\"&&c.nodes.length===1&&c.nodes[0].kind===\"value\"&&c.nodes[0].value===\"even\")return w?(w=!1,\"odd\"):\"even\";for(let[V,A]of[[\":nth-child\",\"nth\"],[\":nth-last-child\",\"nth-last\"],[\":nth-of-type\",\"nth-of-type\"],[\":nth-last-of-type\",\"nth-of-last-type\"]])if(x===V&&c.kind===\"function\"&&c.nodes.length===1)return c.nodes.length===1&&c.nodes[0].kind===\"value\"&&chunk_GFBUASX3_u(c.nodes[0].value)?`${A}-${c.nodes[0].value}`:`${A}-[${ce(c.nodes)}]`;if(w){let V=n.get(t.printVariant(a)),A=n.get(`not-[${x}]`);if(V===A)return`[&${x}]`}return null})(c.value);if(h===null){if(f)return se(a,{kind:\"arbitrary\",selector:d.value,relative:!1}),[f,a];continue}w&&(h=`not-${h}`);let y=t.parseVariant(h);if(y===null)continue;se(a,y)}else if(pt(d)){let c=_r(d.value);if(c===null)continue;if(c.attribute.startsWith(\"data-\")){let w=c.attribute.slice(5);se(a,{kind:\"functional\",root:\"data\",modifier:null,value:c.value===null?{kind:\"named\",value:w}:{kind:\"arbitrary\",value:`${w}${c.operator}${c.quote??\"\"}${c.value}${c.quote??\"\"}${c.sensitivity?` ${c.sensitivity}`:\"\"}`}})}else if(c.attribute.startsWith(\"aria-\")){let w=c.attribute.slice(5);se(a,{kind:\"functional\",root:\"aria\",modifier:null,value:c.value===null?{kind:\"arbitrary\",value:w}:c.operator===\"=\"&&c.value===\"true\"&&c.sensitivity===null?{kind:\"named\",value:w}:{kind:\"arbitrary\",value:`${c.attribute}${c.operator}${c.quote??\"\"}${c.value}${c.quote??\"\"}${c.sensitivity?` ${c.sensitivity}`:\"\"}`}})}else se(a,{kind:\"arbitrary\",selector:d.value,relative:!1})}if(f)return[f,a]}return i}function ma(e,r){if(e.kind!==\"functional\"&&e.kind!==\"arbitrary\"||e.modifier===null)return e;let i=r.designSystem,t=i.storage[chunk_MEY3PWYT_pe].get(r.signatureOptions),n=t.get(i.printCandidate(e)),s=e.modifier;if(n===t.get(i.printCandidate({...e,modifier:null})))return e.modifier=null,e;{let a={kind:\"named\",value:s.value.endsWith(\"%\")?s.value.includes(\".\")?`${Number(s.value.slice(0,-1))}`:s.value.slice(0,-1):s.value,fraction:null};if(n===t.get(i.printCandidate({...e,modifier:a})))return e.modifier=a,e}{let a={kind:\"named\",value:`${parseFloat(s.value)*100}`,fraction:null};if(n===t.get(i.printCandidate({...e,modifier:a})))return e.modifier=a,e}return e}var chunk_MEY3PWYT_pe=Symbol();function ga(e){return new chunk_MEY3PWYT_K(r=>new chunk_MEY3PWYT_K(i=>{try{i=e.theme.prefix&&!i.startsWith(e.theme.prefix)?`${e.theme.prefix}:${i}`:i;let t=[chunk_MEY3PWYT_G(\".x\",[chunk_MEY3PWYT_F(\"@apply\",i)])];return xa(e,()=>{for(let s of e.parseCandidate(i))e.compileAstNodes(s,1);xe(t,e)}),pi(e,t,r),chunk_MEY3PWYT_re(t)}catch{return Symbol()}}))}function pi(e,r,i){let{rem:t}=i;return chunk_MEY3PWYT_I(r,{enter(n,s){if(n.kind===\"declaration\"){if(n.value===void 0||n.property===\"--tw-sort\")return chunk_MEY3PWYT_R.Replace([]);if(n.property.startsWith(\"--tw-\")&&(s.parent?.nodes??[]).some(a=>a.kind===\"declaration\"&&n.value===a.value&&n.important===a.important&&!a.property.startsWith(\"--tw-\")))return chunk_MEY3PWYT_R.Replace([]);if(i.features&1){let a=Wr(n,i.features);if(a)return chunk_MEY3PWYT_R.Replace(a)}n.value.includes(\"var(\")&&(n.value=ha(n.value,e)),n.value=Ur(n.value,t),n.value=ke(n.value)}else{if(n.kind===\"context\"||n.kind===\"at-root\")return chunk_MEY3PWYT_R.Replace(n.nodes);if(n.kind===\"comment\")return chunk_MEY3PWYT_R.Replace([]);if(n.kind===\"at-rule\"&&n.name===\"@property\")return chunk_MEY3PWYT_R.Replace([])}},exit(n){(n.kind===\"rule\"||n.kind===\"at-rule\")&&n.nodes.sort((s,a)=>s.kind!==\"declaration\"||a.kind!==\"declaration\"?0:s.property.localeCompare(a.property))}}),r}function ha(e,r){let i=!1,t=chunk_MEY3PWYT_B(e),n=new Set;return chunk_MEY3PWYT_I(t,s=>{if(s.kind!==\"function\"||s.value!==\"var\"||s.nodes.length!==1&&s.nodes.length<3)return;let a=s.nodes[0].value;r.theme.prefix&&a.startsWith(`--${r.theme.prefix}-`)&&(a=a.slice(`--${r.theme.prefix}-`.length));let p=r.resolveThemeValue(a);if(!n.has(a)&&(n.add(a),p!==void 0&&(s.nodes.length===1&&(i=!0,s.nodes.push(...chunk_MEY3PWYT_B(`,${p}`))),s.nodes.length>=3))){let u=chunk_MEY3PWYT_Z(s.nodes),f=`${s.nodes[0].value},${p}`;if(u===f)return i=!0,chunk_MEY3PWYT_R.Replace(chunk_MEY3PWYT_B(p))}}),i?chunk_MEY3PWYT_Z(t):e}var Lt=Symbol();function va(){return new chunk_MEY3PWYT_K(e=>new chunk_MEY3PWYT_K(r=>new chunk_MEY3PWYT_K(i=>new Set)))}var dt=Symbol();function wa(e){return new chunk_MEY3PWYT_K(r=>new chunk_MEY3PWYT_K(i=>{let t=new chunk_MEY3PWYT_K(s=>new Set);e.theme.prefix&&!i.startsWith(e.theme.prefix)&&(i=`${e.theme.prefix}:${i}`);let n=e.parseCandidate(i);return n.length===0||chunk_MEY3PWYT_I(pi(e,e.compileAstNodes(n[0]).map(s=>chunk_MEY3PWYT_ee(s.node)),r),s=>{s.kind===\"declaration\"&&(t.get(s.property).add(s.value),e.storage[Lt].get(r).get(s.property).get(s.value).add(i))}),t}))}var jt=Symbol();function ya(e){return new chunk_MEY3PWYT_K(r=>{let i=e.storage[chunk_MEY3PWYT_pe].get(r),t=new chunk_MEY3PWYT_K(()=>[]);for(let[n,s]of e.getClassList()){let a=i.get(n);if(typeof a==\"string\"){if(n[0]===\"-\"&&n.endsWith(\"-0\")){let p=i.get(n.slice(1));if(typeof p==\"string\"&&a===p)continue}t.get(a).push(n),e.storage[dt].get(r).get(n);for(let p of s.modifiers){if(ge(p))continue;let u=`${n}/${p}`,f=i.get(u);typeof f==\"string\"&&(t.get(f).push(u),e.storage[dt].get(r).get(u))}}}return t})}var gt=Symbol();function ka(e){return new chunk_MEY3PWYT_K(r=>{try{r=e.theme.prefix&&!r.startsWith(e.theme.prefix)?`${e.theme.prefix}:${r}`:r;let i=[chunk_MEY3PWYT_G(\".x\",[chunk_MEY3PWYT_F(\"@apply\",`${r}:flex`)])];return xe(i,e),chunk_MEY3PWYT_I(i,n=>{if(n.kind===\"at-rule\"&&n.params.includes(\" \"))n.params=n.params.replaceAll(\" \",\"\");else if(n.kind===\"rule\"){let s=Ee(n.selector),a=!1;chunk_MEY3PWYT_I(s,p=>{if(p.kind===\"separator\"&&p.value!==\" \")p.value=p.value.trim(),a=!0;else if(p.kind===\"function\"&&p.value===\":is\"){if(p.nodes.length===1)return a=!0,chunk_MEY3PWYT_R.Replace(p.nodes);if(p.nodes.length===2&&p.nodes[0].kind===\"selector\"&&p.nodes[0].value===\"*\"&&p.nodes[1].kind===\"selector\"&&p.nodes[1].value[0]===\":\")return a=!0,chunk_MEY3PWYT_R.Replace(p.nodes[1])}else p.kind===\"function\"&&p.value[0]===\":\"&&p.nodes[0]?.kind===\"selector\"&&p.nodes[0]?.value[0]===\":\"&&(a=!0,p.nodes.unshift({kind:\"selector\",value:\"*\"}))}),a&&(n.selector=ce(s))}}),chunk_MEY3PWYT_re(i)}catch{return Symbol()}})}var di=Symbol();function ba(e){let r=e.storage[gt],i=new chunk_MEY3PWYT_K(()=>[]);for(let[t,n]of e.variants.entries())if(n.kind===\"static\"){let s=r.get(t);if(typeof s!=\"string\")continue;i.get(s).push(t)}return i}function xa(e,r){let i=e.theme.values.get,t=new Set;e.theme.values.get=n=>{let s=i.call(e.theme.values,n);return s===void 0||s.options&1&&(t.add(s),s.options&=-2),s};try{return r()}finally{e.theme.values.get=i;for(let n of t)n.options|=1}}function*Aa(e){let r=e.length,i=1n<<BigInt(r);for(let t=r;t>=2;t--){let n=(1n<<BigInt(t))-1n;for(;n<i;){let s=[];for(let u=0;u<r;u++)n>>BigInt(u)&1n&&s.push(e[u]);yield s;let a=n&-n,p=n+a;n=((p^n)>>2n)/a|p}}}function ni(e,r){if(typeof e.intersection==\"function\")return e.intersection(r);if(e.size===0||r.size===0)return new Set;let i=new Set(e);for(let t of r)i.has(t)||i.delete(t);return i}var $a=/^\\d+\\/\\d+$/;function mi(e){let r=new chunk_MEY3PWYT_K(n=>({name:n,utility:n,fraction:!1,modifiers:[]}));for(let n of e.utilities.keys(\"static\")){if(e.utilities.getCompletions(n).length===0)continue;let a=r.get(n);a.fraction=!1,a.modifiers=[]}for(let n of e.utilities.keys(\"functional\")){let s=e.utilities.getCompletions(n);for(let a of s)for(let p of a.values){let u=p!==null&&$a.test(p),f=p===null?n:`${n}-${p}`,m=r.get(f);if(m.utility=n,m.fraction||=u,m.modifiers.push(...a.modifiers),a.supportsNegative){let d=r.get(`-${f}`);d.utility=`-${n}`,d.fraction||=u,d.modifiers.push(...a.modifiers)}m.modifiers=Array.from(new Set(m.modifiers))}}if(r.size===0)return[];let i=Array.from(r.values());return i.sort((n,s)=>ft(n.name,s.name)),Sa(i)}function Sa(e){let r=[],i=null,t=new Map,n=new chunk_MEY3PWYT_K(()=>[]);for(let a of e){let{utility:p,fraction:u}=a;i||(i={utility:p,items:[]},t.set(p,i)),p!==i.utility&&(r.push(i),i={utility:p,items:[]},t.set(p,i)),u?n.get(p).push(a):i.items.push(a)}i&&r[r.length-1]!==i&&r.push(i);for(let[a,p]of n){let u=t.get(a);u&&u.items.push(...p)}let s=[];for(let a of r)for(let p of a.items)s.push([p.name,{modifiers:p.modifiers}]);return s}function gi(e){let r=[];for(let[t,n]of e.variants.entries()){let p=function({value:u,modifier:f}={}){let m=t;u&&(m+=s?`-${u}`:u),f&&(m+=`/${f}`);let d=e.parseVariant(m);if(!d)return[];let c=chunk_MEY3PWYT_G(\".__placeholder__\",[]);if(je(c,d,e.variants)===null)return[];let w=[];return chunk_MEY3PWYT_I(c.nodes,{exit(h,y){if(h.kind!==\"rule\"&&h.kind!==\"at-rule\"||h.nodes.length>0)return;let x=y.path();x.push(h),x.sort((k,U)=>{let E=k.kind===\"at-rule\",O=U.kind===\"at-rule\";return E&&!O?-1:!E&&O?1:0});let V=x.flatMap(k=>k.kind===\"rule\"?k.selector===\"&\"?[]:[k.selector]:k.kind===\"at-rule\"?[`${k.name} ${k.params}`]:[]),A=\"\";for(let k=V.length-1;k>=0;k--)A=A===\"\"?V[k]:`${V[k]} { ${A} }`;w.push(A)}}),w};var i=p;if(n.kind===\"arbitrary\")continue;let s=t!==\"@\",a=e.variants.getCompletions(t);switch(n.kind){case\"static\":{r.push({name:t,values:a,isArbitrary:!1,hasDash:s,selectors:p});break}case\"functional\":{r.push({name:t,values:a,isArbitrary:!0,hasDash:s,selectors:p});break}case\"compound\":{r.push({name:t,values:a,isArbitrary:!0,hasDash:s,selectors:p});break}}}return r}function hi(e,r){let{astNodes:i,nodeSorting:t}=Ae(Array.from(r),e),n=new Map(r.map(a=>[a,null])),s=0n;for(let a of i){let p=t.get(a)?.candidate;p&&n.set(p,n.get(p)??s++)}return r.map(a=>[a,n.get(a)??null])}var ht=/^@?[a-z0-9][a-zA-Z0-9_-]*(?<![_-])$/;var Mt=class{compareFns=new Map;variants=new Map;completions=new Map;groupOrder=null;lastOrder=0;static(r,i,{compounds:t,order:n}={}){this.set(r,{kind:\"static\",applyFn:i,compoundsWith:0,compounds:t??2,order:n})}fromAst(r,i,t){let n=[],s=!1;chunk_MEY3PWYT_I(i,a=>{a.kind===\"rule\"?n.push(a.selector):a.kind===\"at-rule\"&&a.name===\"@variant\"?s=!0:a.kind===\"at-rule\"&&a.name!==\"@slot\"&&n.push(`${a.name} ${a.params}`)}),this.static(r,a=>{let p=i.map(chunk_MEY3PWYT_ee);s&&Je(p,t),zt(p,a.nodes),a.nodes=p},{compounds:Oe(n)})}functional(r,i,{compounds:t,order:n}={}){this.set(r,{kind:\"functional\",applyFn:i,compoundsWith:0,compounds:t??2,order:n})}compound(r,i,t,{compounds:n,order:s}={}){this.set(r,{kind:\"compound\",applyFn:t,compoundsWith:i,compounds:n??2,order:s})}group(r,i){this.groupOrder=this.nextOrder(),i&&this.compareFns.set(this.groupOrder,i),r(),this.groupOrder=null}has(r){return this.variants.has(r)}get(r){return this.variants.get(r)}kind(r){return this.variants.get(r)?.kind}compoundsWith(r,i){let t=this.variants.get(r),n=typeof i==\"string\"?this.variants.get(i):i.kind===\"arbitrary\"?{compounds:Oe([i.selector])}:this.variants.get(i.root);return!(!t||!n||t.kind!==\"compound\"||n.compounds===0||t.compoundsWith===0||(t.compoundsWith&n.compounds)===0)}suggest(r,i){this.completions.set(r,i)}getCompletions(r){return this.completions.get(r)?.()??[]}compare(r,i){if(r===i)return 0;if(r===null)return-1;if(i===null)return 1;if(r.kind===\"arbitrary\"&&i.kind===\"arbitrary\")return r.selector<i.selector?-1:1;if(r.kind===\"arbitrary\")return 1;if(i.kind===\"arbitrary\")return-1;let t=this.variants.get(r.root).order,n=this.variants.get(i.root).order,s=t-n;if(s!==0)return s;if(r.kind===\"compound\"&&i.kind===\"compound\"){let f=this.compare(r.variant,i.variant);return f!==0?f:r.modifier&&i.modifier?r.modifier.value<i.modifier.value?-1:1:r.modifier?1:i.modifier?-1:0}let a=this.compareFns.get(t);if(a!==void 0)return a(r,i);if(r.root!==i.root)return r.root<i.root?-1:1;let p=r.value,u=i.value;return p===null?-1:u===null||p.kind===\"arbitrary\"&&u.kind!==\"arbitrary\"?1:p.kind!==\"arbitrary\"&&u.kind===\"arbitrary\"||p.value<u.value?-1:1}keys(){return this.variants.keys()}entries(){return this.variants.entries()}set(r,{kind:i,applyFn:t,compounds:n,compoundsWith:s,order:a}){let p=this.variants.get(r);p?Object.assign(p,{kind:i,applyFn:t,compounds:n}):(a===void 0&&(this.lastOrder=this.nextOrder(),a=this.lastOrder),this.variants.set(r,{kind:i,applyFn:t,order:a,compoundsWith:s,compounds:n}))}nextOrder(){return this.groupOrder??this.lastOrder+1}};function Oe(e){let r=0;for(let i of e){if(i[0]===\"@\"){if(!i.startsWith(\"@media\")&&!i.startsWith(\"@supports\")&&!i.startsWith(\"@container\"))return 0;r|=1;continue}if(i.includes(\"::\"))return 0;r|=2}return r}function wi(e){let r=new Mt;function i(f,m,{compounds:d}={}){d=d??Oe(m),r.static(f,c=>{c.nodes=m.map(w=>chunk_MEY3PWYT_J(w,c.nodes))},{compounds:d})}i(\"*\",[\":is(& > *)\"],{compounds:0}),i(\"**\",[\":is(& *)\"],{compounds:0});function t(f,m){return m.map(d=>{d=d.trim();let c=chunk_GFBUASX3_d(d,\" \");return c[0]===\"not\"?c.slice(1).join(\" \"):f===\"@container\"?c[0][0]===\"(\"?`not ${d}`:c[1]===\"not\"?`${c[0]} ${c.slice(2).join(\" \")}`:`${c[0]} not ${c.slice(1).join(\" \")}`:`not ${d}`})}let n=[\"@media\",\"@supports\",\"@container\"];function s(f){for(let m of n){if(m!==f.name)continue;let d=chunk_GFBUASX3_d(f.params,\",\");return d.length>1?null:(d=t(f.name,d),chunk_MEY3PWYT_F(f.name,d.join(\", \")))}return null}function a(f){return f.includes(\"::\")?null:`&:not(${chunk_GFBUASX3_d(f,\",\").map(d=>(d=d.replaceAll(\"&\",\"*\"),d)).join(\", \")})`}r.compound(\"not\",3,(f,m)=>{if(m.variant.kind===\"arbitrary\"&&m.variant.relative||m.modifier)return null;let d=!1;if(chunk_MEY3PWYT_I([f],(c,w)=>{if(c.kind!==\"rule\"&&c.kind!==\"at-rule\")return chunk_MEY3PWYT_R.Continue;if(c.nodes.length>0)return chunk_MEY3PWYT_R.Continue;let h=[],y=[],x=w.path();x.push(c);for(let A of x)A.kind===\"at-rule\"?h.push(A):A.kind===\"rule\"&&y.push(A);if(h.length>1)return chunk_MEY3PWYT_R.Stop;if(y.length>1)return chunk_MEY3PWYT_R.Stop;let V=[];for(let A of y){let k=a(A.selector);if(!k)return d=!1,chunk_MEY3PWYT_R.Stop;V.push(chunk_MEY3PWYT_G(k,[]))}for(let A of h){let k=s(A);if(!k)return d=!1,chunk_MEY3PWYT_R.Stop;V.push(k)}return Object.assign(f,chunk_MEY3PWYT_G(\"&\",V)),d=!0,chunk_MEY3PWYT_R.Skip}),f.kind===\"rule\"&&f.selector===\"&\"&&f.nodes.length===1&&Object.assign(f,f.nodes[0]),!d)return null}),r.suggest(\"not\",()=>Array.from(r.keys()).filter(f=>r.compoundsWith(\"not\",f))),r.compound(\"group\",2,(f,m)=>{if(m.variant.kind===\"arbitrary\"&&m.variant.relative)return null;let d=m.modifier?`:where(.${e.prefix?`${e.prefix}\\\\:`:\"\"}group\\\\/${m.modifier.value})`:`:where(.${e.prefix?`${e.prefix}\\\\:`:\"\"}group)`,c=!1;if(chunk_MEY3PWYT_I([f],(w,h)=>{if(w.kind!==\"rule\")return chunk_MEY3PWYT_R.Continue;for(let x of h.path())if(x.kind===\"rule\")return c=!1,chunk_MEY3PWYT_R.Stop;let y=w.selector.replaceAll(\"&\",d);chunk_GFBUASX3_d(y,\",\").length>1&&(y=`:is(${y})`),w.selector=`&:is(${y} *)`,c=!0}),!c)return null}),r.suggest(\"group\",()=>Array.from(r.keys()).filter(f=>r.compoundsWith(\"group\",f))),r.compound(\"peer\",2,(f,m)=>{if(m.variant.kind===\"arbitrary\"&&m.variant.relative)return null;let d=m.modifier?`:where(.${e.prefix?`${e.prefix}\\\\:`:\"\"}peer\\\\/${m.modifier.value})`:`:where(.${e.prefix?`${e.prefix}\\\\:`:\"\"}peer)`,c=!1;if(chunk_MEY3PWYT_I([f],(w,h)=>{if(w.kind!==\"rule\")return chunk_MEY3PWYT_R.Continue;for(let x of h.path())if(x.kind===\"rule\")return c=!1,chunk_MEY3PWYT_R.Stop;let y=w.selector.replaceAll(\"&\",d);chunk_GFBUASX3_d(y,\",\").length>1&&(y=`:is(${y})`),w.selector=`&:is(${y} ~ *)`,c=!0}),!c)return null}),r.suggest(\"peer\",()=>Array.from(r.keys()).filter(f=>r.compoundsWith(\"peer\",f))),i(\"first-letter\",[\"&::first-letter\"]),i(\"first-line\",[\"&::first-line\"]),i(\"marker\",[\"& *::marker\",\"&::marker\",\"& *::-webkit-details-marker\",\"&::-webkit-details-marker\"]),i(\"selection\",[\"& *::selection\",\"&::selection\"]),i(\"file\",[\"&::file-selector-button\"]),i(\"placeholder\",[\"&::placeholder\"]),i(\"backdrop\",[\"&::backdrop\"]),i(\"details-content\",[\"&::details-content\"]);{let f=function(){return chunk_MEY3PWYT_W([chunk_MEY3PWYT_F(\"@property\",\"--tw-content\",[o(\"syntax\",'\"*\"'),o(\"initial-value\",'\"\"'),o(\"inherits\",\"false\")])])};var p=f;r.static(\"before\",m=>{m.nodes=[chunk_MEY3PWYT_G(\"&::before\",[f(),o(\"content\",\"var(--tw-content)\"),...m.nodes])]},{compounds:0}),r.static(\"after\",m=>{m.nodes=[chunk_MEY3PWYT_G(\"&::after\",[f(),o(\"content\",\"var(--tw-content)\"),...m.nodes])]},{compounds:0})}i(\"first\",[\"&:first-child\"]),i(\"last\",[\"&:last-child\"]),i(\"only\",[\"&:only-child\"]),i(\"odd\",[\"&:nth-child(odd)\"]),i(\"even\",[\"&:nth-child(even)\"]),i(\"first-of-type\",[\"&:first-of-type\"]),i(\"last-of-type\",[\"&:last-of-type\"]),i(\"only-of-type\",[\"&:only-of-type\"]),i(\"visited\",[\"&:visited\"]),i(\"target\",[\"&:target\"]),i(\"open\",[\"&:is([open], :popover-open, :open)\"]),i(\"default\",[\"&:default\"]),i(\"checked\",[\"&:checked\"]),i(\"indeterminate\",[\"&:indeterminate\"]),i(\"placeholder-shown\",[\"&:placeholder-shown\"]),i(\"autofill\",[\"&:autofill\"]),i(\"optional\",[\"&:optional\"]),i(\"required\",[\"&:required\"]),i(\"valid\",[\"&:valid\"]),i(\"invalid\",[\"&:invalid\"]),i(\"user-valid\",[\"&:user-valid\"]),i(\"user-invalid\",[\"&:user-invalid\"]),i(\"in-range\",[\"&:in-range\"]),i(\"out-of-range\",[\"&:out-of-range\"]),i(\"read-only\",[\"&:read-only\"]),i(\"empty\",[\"&:empty\"]),i(\"focus-within\",[\"&:focus-within\"]),r.static(\"hover\",f=>{f.nodes=[chunk_MEY3PWYT_G(\"&:hover\",[chunk_MEY3PWYT_F(\"@media\",\"(hover: hover)\",f.nodes)])]}),i(\"focus\",[\"&:focus\"]),i(\"focus-visible\",[\"&:focus-visible\"]),i(\"active\",[\"&:active\"]),i(\"enabled\",[\"&:enabled\"]),i(\"disabled\",[\"&:disabled\"]),i(\"inert\",[\"&:is([inert], [inert] *)\"]),r.compound(\"in\",2,(f,m)=>{if(m.modifier)return null;let d=!1;if(chunk_MEY3PWYT_I([f],(c,w)=>{if(c.kind!==\"rule\")return chunk_MEY3PWYT_R.Continue;for(let h of w.path())if(h.kind===\"rule\")return d=!1,chunk_MEY3PWYT_R.Stop;c.selector=`:where(${c.selector.replaceAll(\"&\",\"*\")}) &`,d=!0}),!d)return null}),r.suggest(\"in\",()=>Array.from(r.keys()).filter(f=>r.compoundsWith(\"in\",f))),r.compound(\"has\",2,(f,m)=>{if(m.modifier)return null;let d=!1;if(chunk_MEY3PWYT_I([f],(c,w)=>{if(c.kind!==\"rule\")return chunk_MEY3PWYT_R.Continue;for(let h of w.path())if(h.kind===\"rule\")return d=!1,chunk_MEY3PWYT_R.Stop;c.selector=`&:has(${c.selector.replaceAll(\"&\",\"*\")})`,d=!0}),!d)return null}),r.suggest(\"has\",()=>Array.from(r.keys()).filter(f=>r.compoundsWith(\"has\",f))),r.functional(\"aria\",(f,m)=>{if(!m.value||m.modifier)return null;m.value.kind===\"arbitrary\"?f.nodes=[chunk_MEY3PWYT_G(`&[aria-${vi(m.value.value)}]`,f.nodes)]:f.nodes=[chunk_MEY3PWYT_G(`&[aria-${m.value.value}=\"true\"]`,f.nodes)]}),r.suggest(\"aria\",()=>[\"busy\",\"checked\",\"disabled\",\"expanded\",\"hidden\",\"pressed\",\"readonly\",\"required\",\"selected\"]),r.functional(\"data\",(f,m)=>{if(!m.value||m.modifier)return null;f.nodes=[chunk_MEY3PWYT_G(`&[data-${vi(m.value.value)}]`,f.nodes)]}),r.functional(\"nth\",(f,m)=>{if(!m.value||m.modifier||m.value.kind===\"named\"&&!chunk_GFBUASX3_u(m.value.value))return null;f.nodes=[chunk_MEY3PWYT_G(`&:nth-child(${m.value.value})`,f.nodes)]}),r.functional(\"nth-last\",(f,m)=>{if(!m.value||m.modifier||m.value.kind===\"named\"&&!chunk_GFBUASX3_u(m.value.value))return null;f.nodes=[chunk_MEY3PWYT_G(`&:nth-last-child(${m.value.value})`,f.nodes)]}),r.functional(\"nth-of-type\",(f,m)=>{if(!m.value||m.modifier||m.value.kind===\"named\"&&!chunk_GFBUASX3_u(m.value.value))return null;f.nodes=[chunk_MEY3PWYT_G(`&:nth-of-type(${m.value.value})`,f.nodes)]}),r.functional(\"nth-last-of-type\",(f,m)=>{if(!m.value||m.modifier||m.value.kind===\"named\"&&!chunk_GFBUASX3_u(m.value.value))return null;f.nodes=[chunk_MEY3PWYT_G(`&:nth-last-of-type(${m.value.value})`,f.nodes)]}),r.functional(\"supports\",(f,m)=>{if(!m.value||m.modifier)return null;let d=m.value.value;if(d===null)return null;if(/^[\\w-]*\\s*\\(/.test(d)){let c=d.replace(/\\b(and|or|not)\\b/g,\" $1 \");f.nodes=[chunk_MEY3PWYT_F(\"@supports\",c,f.nodes)];return}d.includes(\":\")||(d=`${d}: var(--tw)`),(d[0]!==\"(\"||d[d.length-1]!==\")\")&&(d=`(${d})`),f.nodes=[chunk_MEY3PWYT_F(\"@supports\",d,f.nodes)]},{compounds:1}),i(\"motion-safe\",[\"@media (prefers-reduced-motion: no-preference)\"]),i(\"motion-reduce\",[\"@media (prefers-reduced-motion: reduce)\"]),i(\"contrast-more\",[\"@media (prefers-contrast: more)\"]),i(\"contrast-less\",[\"@media (prefers-contrast: less)\"]);{let f=function(m,d,c,w){if(m===d)return 0;let h=w.get(m);if(h===null)return c===\"asc\"?-1:1;let y=w.get(d);return y===null?c===\"asc\"?1:-1:Te(h,y,c)};var u=f;{let m=e.namespace(\"--breakpoint\"),d=new chunk_MEY3PWYT_K(c=>{switch(c.kind){case\"static\":return e.resolveValue(c.root,[\"--breakpoint\"])??null;case\"functional\":{if(!c.value||c.modifier)return null;let w=null;return c.value.kind===\"arbitrary\"?w=c.value.value:c.value.kind===\"named\"&&(w=e.resolveValue(c.value.value,[\"--breakpoint\"])),!w||w.includes(\"var(\")?null:w}case\"arbitrary\":case\"compound\":return null}});r.group(()=>{r.functional(\"max\",(c,w)=>{if(w.modifier)return null;let h=d.get(w);if(h===null)return null;c.nodes=[chunk_MEY3PWYT_F(\"@media\",`(width < ${h})`,c.nodes)]},{compounds:1})},(c,w)=>f(c,w,\"desc\",d)),r.suggest(\"max\",()=>Array.from(m.keys()).filter(c=>c!==null)),r.group(()=>{for(let[c,w]of e.namespace(\"--breakpoint\"))c!==null&&r.static(c,h=>{h.nodes=[chunk_MEY3PWYT_F(\"@media\",`(width >= ${w})`,h.nodes)]},{compounds:1});r.functional(\"min\",(c,w)=>{if(w.modifier)return null;let h=d.get(w);if(h===null)return null;c.nodes=[chunk_MEY3PWYT_F(\"@media\",`(width >= ${h})`,c.nodes)]},{compounds:1})},(c,w)=>f(c,w,\"asc\",d)),r.suggest(\"min\",()=>Array.from(m.keys()).filter(c=>c!==null))}{let m=e.namespace(\"--container\"),d=new chunk_MEY3PWYT_K(c=>{switch(c.kind){case\"functional\":{if(c.value===null)return null;let w=null;return c.value.kind===\"arbitrary\"?w=c.value.value:c.value.kind===\"named\"&&(w=e.resolveValue(c.value.value,[\"--container\"])),!w||w.includes(\"var(\")?null:w}case\"static\":case\"arbitrary\":case\"compound\":return null}});r.group(()=>{r.functional(\"@max\",(c,w)=>{let h=d.get(w);if(h===null)return null;c.nodes=[chunk_MEY3PWYT_F(\"@container\",w.modifier?`${w.modifier.value} (width < ${h})`:`(width < ${h})`,c.nodes)]},{compounds:1})},(c,w)=>f(c,w,\"desc\",d)),r.suggest(\"@max\",()=>Array.from(m.keys()).filter(c=>c!==null)),r.group(()=>{r.functional(\"@\",(c,w)=>{let h=d.get(w);if(h===null)return null;c.nodes=[chunk_MEY3PWYT_F(\"@container\",w.modifier?`${w.modifier.value} (width >= ${h})`:`(width >= ${h})`,c.nodes)]},{compounds:1}),r.functional(\"@min\",(c,w)=>{let h=d.get(w);if(h===null)return null;c.nodes=[chunk_MEY3PWYT_F(\"@container\",w.modifier?`${w.modifier.value} (width >= ${h})`:`(width >= ${h})`,c.nodes)]},{compounds:1})},(c,w)=>f(c,w,\"asc\",d)),r.suggest(\"@min\",()=>Array.from(m.keys()).filter(c=>c!==null)),r.suggest(\"@\",()=>Array.from(m.keys()).filter(c=>c!==null))}}return i(\"portrait\",[\"@media (orientation: portrait)\"]),i(\"landscape\",[\"@media (orientation: landscape)\"]),i(\"ltr\",['&:where(:dir(ltr), [dir=\"ltr\"], [dir=\"ltr\"] *)']),i(\"rtl\",['&:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *)']),i(\"dark\",[\"@media (prefers-color-scheme: dark)\"]),i(\"starting\",[\"@starting-style\"]),i(\"print\",[\"@media print\"]),i(\"forced-colors\",[\"@media (forced-colors: active)\"]),i(\"inverted-colors\",[\"@media (inverted-colors: inverted)\"]),i(\"pointer-none\",[\"@media (pointer: none)\"]),i(\"pointer-coarse\",[\"@media (pointer: coarse)\"]),i(\"pointer-fine\",[\"@media (pointer: fine)\"]),i(\"any-pointer-none\",[\"@media (any-pointer: none)\"]),i(\"any-pointer-coarse\",[\"@media (any-pointer: coarse)\"]),i(\"any-pointer-fine\",[\"@media (any-pointer: fine)\"]),i(\"noscript\",[\"@media (scripting: none)\"]),r}function vi(e){if(e.includes(\"=\")){let[r,...i]=chunk_GFBUASX3_d(e,\"=\"),t=i.join(\"=\").trim();if(t[0]===\"'\"||t[0]==='\"')return e;if(t.length>1){let n=t[t.length-1];if(t[t.length-2]===\" \"&&(n===\"i\"||n===\"I\"||n===\"s\"||n===\"S\"))return`${r}=\"${t.slice(0,-2)}\" ${n}`}return`${r}=\"${t}\"`}return e}function zt(e,r){chunk_MEY3PWYT_I(e,i=>{if(i.kind===\"at-rule\"&&i.name===\"@slot\")return chunk_MEY3PWYT_R.Replace(r);if(i.kind===\"at-rule\"&&(i.name===\"@keyframes\"||i.name===\"@property\"))return Object.assign(i,chunk_MEY3PWYT_W([chunk_MEY3PWYT_F(i.name,i.params,i.nodes)])),chunk_MEY3PWYT_R.Skip})}function Je(e,r){let i=0;return chunk_MEY3PWYT_I(e,t=>{if(t.kind!==\"at-rule\"||t.name!==\"@variant\")return;let n=chunk_MEY3PWYT_G(\"&\",t.nodes),s=t.params,a=r.parseVariant(s);if(a===null)throw new Error(`Cannot use \\`@variant\\` with unknown variant: ${s}`);if(je(n,a,r.variants)===null)throw new Error(`Cannot use \\`@variant\\` with variant: ${s}`);return i|=32,chunk_MEY3PWYT_R.Replace(n)}),i}function yi(e){let r=Rr(e),i=wi(e),t=new chunk_MEY3PWYT_K(u=>Cr(u,p)),n=new chunk_MEY3PWYT_K(u=>Array.from(Ar(u,p))),s=new chunk_MEY3PWYT_K(u=>new chunk_MEY3PWYT_K(f=>{let m=ki(f,p,u);try{_e(m.map(({node:d})=>d),p),Je(m.map(({node:d})=>d),p)}catch{return[]}return m})),a=new chunk_MEY3PWYT_K(u=>{for(let f of ot(u))e.markUsedVariable(f)}),p={theme:e,utilities:r,variants:i,invalidCandidates:new Set,important:!1,candidatesToCss(u){let f=[];for(let m of u){let d=!1,{astNodes:c}=Ae([m],this,{onInvalidCandidate(){d=!0}});c=Se(c,p,0),c.length===0||d?f.push(null):f.push(chunk_MEY3PWYT_re(c))}return f},getClassOrder(u){return hi(this,u)},getClassList(){return mi(this)},getVariants(){return gi(this)},parseCandidate(u){return n.get(u)},parseVariant(u){return t.get(u)},compileAstNodes(u,f=1){return s.get(f).get(u)},printCandidate(u){return Sr(p,u)},printVariant(u){return lt(u)},getVariantOrder(){let u=Array.from(t.values());u.sort((c,w)=>this.variants.compare(c,w));let f=new Map,m,d=0;for(let c of u)c!==null&&(m!==void 0&&this.variants.compare(m,c)!==0&&d++,f.set(c,d),m=c);return f},resolveThemeValue(u,f=!0){let m=u.lastIndexOf(\"/\"),d=null;m!==-1&&(d=u.slice(m+1).trim(),u=u.slice(0,m).trim());let c=e.resolve(null,[u],f?1:0)??void 0;return d&&c?chunk_MEY3PWYT_Q(c,d):c},trackUsedVariables(u){a.get(u)},canonicalizeCandidates(u,f){return Kt(this,u,f)},storage:{}};return p}var Ft=[\"container-type\",\"pointer-events\",\"visibility\",\"position\",\"inset\",\"inset-inline\",\"inset-block\",\"inset-inline-start\",\"inset-inline-end\",\"top\",\"right\",\"bottom\",\"left\",\"isolation\",\"z-index\",\"order\",\"grid-column\",\"grid-column-start\",\"grid-column-end\",\"grid-row\",\"grid-row-start\",\"grid-row-end\",\"float\",\"clear\",\"--tw-container-component\",\"margin\",\"margin-inline\",\"margin-block\",\"margin-inline-start\",\"margin-inline-end\",\"margin-top\",\"margin-right\",\"margin-bottom\",\"margin-left\",\"box-sizing\",\"display\",\"field-sizing\",\"aspect-ratio\",\"height\",\"max-height\",\"min-height\",\"width\",\"max-width\",\"min-width\",\"flex\",\"flex-shrink\",\"flex-grow\",\"flex-basis\",\"table-layout\",\"caption-side\",\"border-collapse\",\"border-spacing\",\"transform-origin\",\"translate\",\"--tw-translate-x\",\"--tw-translate-y\",\"--tw-translate-z\",\"scale\",\"--tw-scale-x\",\"--tw-scale-y\",\"--tw-scale-z\",\"rotate\",\"--tw-rotate-x\",\"--tw-rotate-y\",\"--tw-rotate-z\",\"--tw-skew-x\",\"--tw-skew-y\",\"transform\",\"animation\",\"cursor\",\"touch-action\",\"--tw-pan-x\",\"--tw-pan-y\",\"--tw-pinch-zoom\",\"resize\",\"scroll-snap-type\",\"--tw-scroll-snap-strictness\",\"scroll-snap-align\",\"scroll-snap-stop\",\"scroll-margin\",\"scroll-margin-inline\",\"scroll-margin-block\",\"scroll-margin-inline-start\",\"scroll-margin-inline-end\",\"scroll-margin-top\",\"scroll-margin-right\",\"scroll-margin-bottom\",\"scroll-margin-left\",\"scroll-padding\",\"scroll-padding-inline\",\"scroll-padding-block\",\"scroll-padding-inline-start\",\"scroll-padding-inline-end\",\"scroll-padding-top\",\"scroll-padding-right\",\"scroll-padding-bottom\",\"scroll-padding-left\",\"list-style-position\",\"list-style-type\",\"list-style-image\",\"appearance\",\"columns\",\"break-before\",\"break-inside\",\"break-after\",\"grid-auto-columns\",\"grid-auto-flow\",\"grid-auto-rows\",\"grid-template-columns\",\"grid-template-rows\",\"flex-direction\",\"flex-wrap\",\"place-content\",\"place-items\",\"align-content\",\"align-items\",\"justify-content\",\"justify-items\",\"gap\",\"column-gap\",\"row-gap\",\"--tw-space-x-reverse\",\"--tw-space-y-reverse\",\"divide-x-width\",\"divide-y-width\",\"--tw-divide-y-reverse\",\"divide-style\",\"divide-color\",\"place-self\",\"align-self\",\"justify-self\",\"overflow\",\"overflow-x\",\"overflow-y\",\"overscroll-behavior\",\"overscroll-behavior-x\",\"overscroll-behavior-y\",\"scroll-behavior\",\"border-radius\",\"border-start-radius\",\"border-end-radius\",\"border-top-radius\",\"border-right-radius\",\"border-bottom-radius\",\"border-left-radius\",\"border-start-start-radius\",\"border-start-end-radius\",\"border-end-end-radius\",\"border-end-start-radius\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-bottom-right-radius\",\"border-bottom-left-radius\",\"border-width\",\"border-inline-width\",\"border-block-width\",\"border-inline-start-width\",\"border-inline-end-width\",\"border-top-width\",\"border-right-width\",\"border-bottom-width\",\"border-left-width\",\"border-style\",\"border-inline-style\",\"border-block-style\",\"border-inline-start-style\",\"border-inline-end-style\",\"border-top-style\",\"border-right-style\",\"border-bottom-style\",\"border-left-style\",\"border-color\",\"border-inline-color\",\"border-block-color\",\"border-inline-start-color\",\"border-inline-end-color\",\"border-top-color\",\"border-right-color\",\"border-bottom-color\",\"border-left-color\",\"background-color\",\"background-image\",\"--tw-gradient-position\",\"--tw-gradient-stops\",\"--tw-gradient-via-stops\",\"--tw-gradient-from\",\"--tw-gradient-from-position\",\"--tw-gradient-via\",\"--tw-gradient-via-position\",\"--tw-gradient-to\",\"--tw-gradient-to-position\",\"mask-image\",\"--tw-mask-top\",\"--tw-mask-top-from-color\",\"--tw-mask-top-from-position\",\"--tw-mask-top-to-color\",\"--tw-mask-top-to-position\",\"--tw-mask-right\",\"--tw-mask-right-from-color\",\"--tw-mask-right-from-position\",\"--tw-mask-right-to-color\",\"--tw-mask-right-to-position\",\"--tw-mask-bottom\",\"--tw-mask-bottom-from-color\",\"--tw-mask-bottom-from-position\",\"--tw-mask-bottom-to-color\",\"--tw-mask-bottom-to-position\",\"--tw-mask-left\",\"--tw-mask-left-from-color\",\"--tw-mask-left-from-position\",\"--tw-mask-left-to-color\",\"--tw-mask-left-to-position\",\"--tw-mask-linear\",\"--tw-mask-linear-position\",\"--tw-mask-linear-from-color\",\"--tw-mask-linear-from-position\",\"--tw-mask-linear-to-color\",\"--tw-mask-linear-to-position\",\"--tw-mask-radial\",\"--tw-mask-radial-shape\",\"--tw-mask-radial-size\",\"--tw-mask-radial-position\",\"--tw-mask-radial-from-color\",\"--tw-mask-radial-from-position\",\"--tw-mask-radial-to-color\",\"--tw-mask-radial-to-position\",\"--tw-mask-conic\",\"--tw-mask-conic-position\",\"--tw-mask-conic-from-color\",\"--tw-mask-conic-from-position\",\"--tw-mask-conic-to-color\",\"--tw-mask-conic-to-position\",\"box-decoration-break\",\"background-size\",\"background-attachment\",\"background-clip\",\"background-position\",\"background-repeat\",\"background-origin\",\"mask-composite\",\"mask-mode\",\"mask-type\",\"mask-size\",\"mask-clip\",\"mask-position\",\"mask-repeat\",\"mask-origin\",\"fill\",\"stroke\",\"stroke-width\",\"object-fit\",\"object-position\",\"padding\",\"padding-inline\",\"padding-block\",\"padding-inline-start\",\"padding-inline-end\",\"padding-top\",\"padding-right\",\"padding-bottom\",\"padding-left\",\"text-align\",\"text-indent\",\"vertical-align\",\"font-family\",\"font-size\",\"line-height\",\"font-weight\",\"letter-spacing\",\"text-wrap\",\"overflow-wrap\",\"word-break\",\"text-overflow\",\"hyphens\",\"white-space\",\"color\",\"text-transform\",\"font-style\",\"font-stretch\",\"font-variant-numeric\",\"text-decoration-line\",\"text-decoration-color\",\"text-decoration-style\",\"text-decoration-thickness\",\"text-underline-offset\",\"-webkit-font-smoothing\",\"placeholder-color\",\"caret-color\",\"accent-color\",\"color-scheme\",\"opacity\",\"background-blend-mode\",\"mix-blend-mode\",\"box-shadow\",\"--tw-shadow\",\"--tw-shadow-color\",\"--tw-ring-shadow\",\"--tw-ring-color\",\"--tw-inset-shadow\",\"--tw-inset-shadow-color\",\"--tw-inset-ring-shadow\",\"--tw-inset-ring-color\",\"--tw-ring-offset-width\",\"--tw-ring-offset-color\",\"outline\",\"outline-width\",\"outline-offset\",\"outline-color\",\"--tw-blur\",\"--tw-brightness\",\"--tw-contrast\",\"--tw-drop-shadow\",\"--tw-grayscale\",\"--tw-hue-rotate\",\"--tw-invert\",\"--tw-saturate\",\"--tw-sepia\",\"filter\",\"--tw-backdrop-blur\",\"--tw-backdrop-brightness\",\"--tw-backdrop-contrast\",\"--tw-backdrop-grayscale\",\"--tw-backdrop-hue-rotate\",\"--tw-backdrop-invert\",\"--tw-backdrop-opacity\",\"--tw-backdrop-saturate\",\"--tw-backdrop-sepia\",\"backdrop-filter\",\"transition-property\",\"transition-behavior\",\"transition-delay\",\"transition-duration\",\"transition-timing-function\",\"will-change\",\"contain\",\"content\",\"forced-color-adjust\"];function Ae(e,r,{onInvalidCandidate:i,respectImportant:t}={}){let n=new Map,s=[],a=new Map;for(let f of e){if(r.invalidCandidates.has(f)){i?.(f);continue}let m=r.parseCandidate(f);if(m.length===0){i?.(f);continue}a.set(f,m)}let p=0;(t??!0)&&(p|=1);let u=r.getVariantOrder();for(let[f,m]of a){let d=!1;for(let c of m){let w=r.compileAstNodes(c,p);if(w.length!==0){d=!0;for(let{node:h,propertySort:y}of w){let x=0n;for(let V of c.variants)x|=1n<<BigInt(u.get(V));n.set(h,{properties:y,variants:x,candidate:f}),s.push(h)}}}d||i?.(f)}return s.sort((f,m)=>{let d=n.get(f),c=n.get(m);if(d.variants-c.variants!==0n)return Number(d.variants-c.variants);let w=0;for(;w<d.properties.order.length&&w<c.properties.order.length&&d.properties.order[w]===c.properties.order[w];)w+=1;return(d.properties.order[w]??1/0)-(c.properties.order[w]??1/0)||c.properties.count-d.properties.count||ft(d.candidate,c.candidate)}),{astNodes:s,nodeSorting:n}}function ki(e,r,i){let t=Ta(e,r);if(t.length===0)return[];let n=r.important&&!!(i&1),s=[],a=`.${we(e.raw)}`;for(let p of t){let u=Va(p);(e.important||n)&&xi(p);let f={kind:\"rule\",selector:a,nodes:p};for(let m of e.variants)if(je(f,m,r.variants)===null)return[];s.push({node:f,propertySort:u})}return s}function je(e,r,i,t=0){if(r.kind===\"arbitrary\"){if(r.relative&&t===0)return null;e.nodes=[chunk_MEY3PWYT_J(r.selector,e.nodes)];return}let{applyFn:n}=i.get(r.root);if(r.kind===\"compound\"){let a=chunk_MEY3PWYT_F(\"@slot\");if(je(a,r.variant,i,t+1)===null||r.root===\"not\"&&a.nodes.length>1)return null;for(let u of a.nodes)if(u.kind!==\"rule\"&&u.kind!==\"at-rule\"||n(u,r)===null)return null;chunk_MEY3PWYT_I(a.nodes,u=>{if((u.kind===\"rule\"||u.kind===\"at-rule\")&&u.nodes.length<=0)return u.nodes=e.nodes,chunk_MEY3PWYT_R.Skip}),e.nodes=a.nodes;return}if(n(e,r)===null)return null}function bi(e){let r=e.options?.types??[];return r.length>1&&r.includes(\"any\")}function Ta(e,r){if(e.kind===\"arbitrary\"){let a=e.value;return e.modifier&&(a=chunk_MEY3PWYT_X(a,e.modifier,r.theme)),a===null?[]:[[o(e.property,a)]]}let i=r.utilities.get(e.root)??[],t=[],n=i.filter(a=>!bi(a));for(let a of n){if(a.kind!==e.kind)continue;let p=a.compileFn(e);if(p!==void 0){if(p===null)return t;t.push(p)}}if(t.length>0)return t;let s=i.filter(a=>bi(a));for(let a of s){if(a.kind!==e.kind)continue;let p=a.compileFn(e);if(p!==void 0){if(p===null)return t;t.push(p)}}return t}function xi(e){for(let r of e)r.kind!==\"at-root\"&&(r.kind===\"declaration\"?r.important=!0:(r.kind===\"rule\"||r.kind===\"at-rule\")&&xi(r.nodes))}function Va(e){let r=new Set,i=0,t=e.slice(),n=!1;for(;t.length>0;){let s=t.shift();if(s.kind===\"declaration\"){if(s.value===void 0||(i++,n))continue;if(s.property===\"--tw-sort\"){let p=Ft.indexOf(s.value??\"\");if(p!==-1){r.add(p),n=!0;continue}}let a=Ft.indexOf(s.property);a!==-1&&r.add(a)}else if(s.kind===\"rule\"||s.kind===\"at-rule\")for(let a of s.nodes)t.push(a)}return{order:Array.from(r).sort((s,a)=>s-a),count:i}}function xe(e,r){let i=0,t=chunk_MEY3PWYT_J(\"&\",e),n=new Set,s=new chunk_MEY3PWYT_K(()=>new Set),a=new chunk_MEY3PWYT_K(()=>new Set);chunk_MEY3PWYT_I([t],(d,c)=>{if(d.kind===\"at-rule\"){if(d.name===\"@keyframes\")return chunk_MEY3PWYT_I(d.nodes,w=>{if(w.kind===\"at-rule\"&&w.name===\"@apply\")throw new Error(\"You cannot use `@apply` inside `@keyframes`.\")}),chunk_MEY3PWYT_R.Skip;if(d.name===\"@utility\"){let w=d.params.replace(/-\\*$/,\"\");a.get(w).add(d),chunk_MEY3PWYT_I(d.nodes,h=>{if(!(h.kind!==\"at-rule\"||h.name!==\"@apply\")){n.add(d);for(let y of Ai(h,r))s.get(d).add(y)}});return}if(d.name===\"@apply\"){if(c.parent===null)return;i|=1,n.add(c.parent);for(let w of Ai(d,r))for(let h of c.path())n.has(h)&&s.get(h).add(w)}}});let p=new Set,u=[],f=new Set;function m(d,c=[]){if(!p.has(d)){if(f.has(d)){let w=c[(c.indexOf(d)+1)%c.length];throw d.kind===\"at-rule\"&&d.name===\"@utility\"&&w.kind===\"at-rule\"&&w.name===\"@utility\"&&chunk_MEY3PWYT_I(d.nodes,h=>{if(h.kind!==\"at-rule\"||h.name!==\"@apply\")return;let y=h.params.split(/\\s+/g);for(let x of y)for(let V of r.parseCandidate(x))switch(V.kind){case\"arbitrary\":break;case\"static\":case\"functional\":if(w.params.replace(/-\\*$/,\"\")===V.root)throw new Error(`You cannot \\`@apply\\` the \\`${x}\\` utility here because it creates a circular dependency.`);break;default:}}),new Error(`Circular dependency detected:\n\n${chunk_MEY3PWYT_re([d])}\nRelies on:\n\n${chunk_MEY3PWYT_re([w])}`)}f.add(d);for(let w of s.get(d))for(let h of a.get(w))c.push(d),m(h,c),c.pop();p.add(d),f.delete(d),u.push(d)}}for(let d of n)m(d);for(let d of u)\"nodes\"in d&&chunk_MEY3PWYT_I(d.nodes,c=>{if(c.kind!==\"at-rule\"||c.name!==\"@apply\")return;let w=c.params.split(/(\\s+)/g),h={},y=0;for(let[x,V]of w.entries())x%2===0&&(h[V]=y),y+=V.length;{let x=Object.keys(h),V=Ae(x,r,{respectImportant:!1,onInvalidCandidate:E=>{if(r.theme.prefix&&!E.startsWith(r.theme.prefix))throw new Error(`Cannot apply unprefixed utility class \\`${E}\\`. Did you mean \\`${r.theme.prefix}:${E}\\`?`);if(r.invalidCandidates.has(E))throw new Error(`Cannot apply utility class \\`${E}\\` because it has been explicitly disabled: https://tailwindcss.com/docs/detecting-classes-in-source-files#explicitly-excluding-classes`);let O=chunk_GFBUASX3_d(E,\":\");if(O.length>1){let j=O.pop();if(r.candidatesToCss([j])[0]){let _=r.candidatesToCss(O.map(Y=>`${Y}:[--tw-variant-check:1]`)),M=O.filter((Y,q)=>_[q]===null);if(M.length>0){if(M.length===1)throw new Error(`Cannot apply utility class \\`${E}\\` because the ${M.map(Y=>`\\`${Y}\\``)} variant does not exist.`);{let Y=new Intl.ListFormat(\"en\",{style:\"long\",type:\"conjunction\"});throw new Error(`Cannot apply utility class \\`${E}\\` because the ${Y.format(M.map(q=>`\\`${q}\\``))} variants do not exist.`)}}}}throw r.theme.size===0?new Error(`Cannot apply unknown utility class \\`${E}\\`. Are you using CSS modules or similar and missing \\`@reference\\`? https://tailwindcss.com/docs/functions-and-directives#reference-directive`):new Error(`Cannot apply unknown utility class \\`${E}\\``)}}),A=c.src,k=V.astNodes.map(E=>{let O=V.nodeSorting.get(E)?.candidate,j=O?h[O]:void 0;if(E=chunk_MEY3PWYT_ee(E),!A||!O||j===void 0)return chunk_MEY3PWYT_I([E],M=>{M.src=A}),E;let _=[A[0],A[1],A[2]];return _[1]+=7+j,_[2]=_[1]+O.length,chunk_MEY3PWYT_I([E],M=>{M.src=_}),E}),U=[];for(let E of k)if(E.kind===\"rule\")for(let O of E.nodes)U.push(O);else U.push(E);return chunk_MEY3PWYT_R.Replace(U)}});return i}function*Ai(e,r){for(let i of e.params.split(/\\s+/g))for(let t of r.parseCandidate(i))switch(t.kind){case\"arbitrary\":break;case\"static\":case\"functional\":yield t.root;break;default:}}async function Wt(e,r,i,t=0,n=!1){let s=0,a=[];return chunk_MEY3PWYT_I(e,p=>{if(p.kind===\"at-rule\"&&(p.name===\"@import\"||p.name===\"@reference\")){let u=Na(chunk_MEY3PWYT_B(p.params));if(u===null)return;p.name===\"@reference\"&&(u.media=\"reference\"),s|=2;let{uri:f,layer:m,media:d,supports:c}=u;if(f.startsWith(\"data:\")||f.startsWith(\"http://\")||f.startsWith(\"https://\"))return;let w=fe({},[]);return a.push((async()=>{if(t>100)throw new Error(`Exceeded maximum recursion depth while resolving \\`${f}\\` in \\`${r}\\`)`);let h=await i(f,r),y=Ce(h.content,{from:n?h.path:void 0});await Wt(y,h.base,i,t+1,n),w.nodes=Ea(p,[fe({base:h.base},y)],m,d,c)})()),chunk_MEY3PWYT_R.ReplaceSkip(w)}}),a.length>0&&await Promise.all(a),s}function Na(e){let r,i=null,t=null,n=null;for(let s=0;s<e.length;s++){let a=e[s];if(a.kind!==\"separator\"){if(a.kind===\"word\"&&!r){if(!a.value||a.value[0]!=='\"'&&a.value[0]!==\"'\")return null;r=a.value.slice(1,-1);continue}if(a.kind===\"function\"&&a.value.toLowerCase()===\"url\"||!r)return null;if((a.kind===\"word\"||a.kind===\"function\")&&a.value.toLowerCase()===\"layer\"){if(i)return null;if(n)throw new Error(\"`layer(\\u2026)` in an `@import` should come before any other functions or conditions\");\"nodes\"in a?i=chunk_MEY3PWYT_Z(a.nodes):i=\"\";continue}if(a.kind===\"function\"&&a.value.toLowerCase()===\"supports\"){if(n)return null;n=chunk_MEY3PWYT_Z(a.nodes);continue}t=chunk_MEY3PWYT_Z(e.slice(s));break}}return r?{uri:r,layer:i,media:t,supports:n}:null}function Ea(e,r,i,t,n){let s=r;if(i!==null){let a=chunk_MEY3PWYT_F(\"@layer\",i,s);a.src=e.src,s=[a]}if(t!==null){let a=chunk_MEY3PWYT_F(\"@media\",t,s);a.src=e.src,s=[a]}if(n!==null){let a=chunk_MEY3PWYT_F(\"@supports\",n[0]===\"(\"?n:`(${n})`,s);a.src=e.src,s=[a]}return s}function Me(e){if(Object.prototype.toString.call(e)!==\"[object Object]\")return!1;let r=Object.getPrototypeOf(e);return r===null||Object.getPrototypeOf(r)===null}function Qe(e,r,i,t=[]){for(let n of r)if(n!=null)for(let s of Reflect.ownKeys(n)){t.push(s);let a=i(e[s],n[s],t);a!==void 0?e[s]=a:!Me(e[s])||!Me(n[s])?e[s]=n[s]:e[s]=Qe({},[e[s],n[s]],i,t),t.pop()}return e}function vt(e,r,i){return function(n,s){let a=n.lastIndexOf(\"/\"),p=null;a!==-1&&(p=n.slice(a+1).trim(),n=n.slice(0,a).trim());let u=(()=>{let f=Re(n),[m,d]=Ra(e.theme,f),c=i(Ci(r()??{},f)??null);if(typeof c==\"string\"&&(c=c.replace(\"<alpha-value>\",\"1\")),typeof m!=\"object\")return typeof d!=\"object\"&&d&4?c??m:m;if(c!==null&&typeof c==\"object\"&&!Array.isArray(c)){let w=Qe({},[c],(h,y)=>y);if(m===null&&Object.hasOwn(c,\"__CSS_VALUES__\")){let h={};for(let y in c.__CSS_VALUES__)h[y]=c[y],delete w[y];m=h}for(let h in m)h!==\"__CSS_VALUES__\"&&(c?.__CSS_VALUES__?.[h]&4&&Ci(w,h.split(\"-\"))!==void 0||(w[$e(h)]=m[h]));return w}if(Array.isArray(m)&&Array.isArray(d)&&Array.isArray(c)){let w=m[0],h=m[1];d[0]&4&&(w=c[0]??w);for(let y of Object.keys(h))d[1][y]&4&&(h[y]=c[1][y]??h[y]);return[w,h]}return m??c})();return p&&typeof u==\"string\"&&(u=chunk_MEY3PWYT_Q(u,p)),u??s}}function Ra(e,r){if(r.length===1&&r[0].startsWith(\"--\"))return[e.get([r[0]]),e.getOptions(r[0])];let i=Le(r),t=new Map,n=new chunk_MEY3PWYT_K(()=>new Map),s=e.namespace(`--${i}`);if(s.size===0)return[null,0];let a=new Map;for(let[m,d]of s){if(!m||!m.includes(\"--\")){t.set(m,d),a.set(m,e.getOptions(m?`--${i}-${m}`:`--${i}`));continue}let c=m.indexOf(\"--\"),w=m.slice(0,c),h=m.slice(c+2);h=h.replace(/-([a-z])/g,(y,x)=>x.toUpperCase()),n.get(w===\"\"?null:w).set(h,[d,e.getOptions(`--${i}${m}`)])}let p=e.getOptions(`--${i}`);for(let[m,d]of n){let c=t.get(m);if(typeof c!=\"string\")continue;let w={},h={};for(let[y,[x,V]]of d)w[y]=x,h[y]=V;t.set(m,[c,w]),a.set(m,[p,h])}let u={},f={};for(let[m,d]of t)$i(u,[m??\"DEFAULT\"],d);for(let[m,d]of a)$i(f,[m??\"DEFAULT\"],d);return r[r.length-1]===\"DEFAULT\"?[u?.DEFAULT??null,f.DEFAULT??0]:\"DEFAULT\"in u&&Object.keys(u).length===1?[u.DEFAULT,f.DEFAULT??0]:(u.__CSS_VALUES__=f,[u,f])}function Ci(e,r){for(let i=0;i<r.length;++i){let t=r[i];if(e?.[t]===void 0){if(r[i+1]===void 0)return;r[i+1]=`${t}-${r[i+1]}`;continue}if(typeof e==\"string\")return;e=e[t]}return e}function $i(e,r,i){for(let t of r.slice(0,-1))e[t]===void 0&&(e[t]={}),e=e[t];e[r[r.length-1]]=i}var Si=/^[a-z@][a-zA-Z0-9/%._-]*$/;function Bt({designSystem:e,ast:r,resolvedConfig:i,featuresRef:t,referenceMode:n,src:s}){let a={addBase(p){if(n)return;let u=de(p);t.current|=_e(u,e);let f=chunk_MEY3PWYT_F(\"@layer\",\"base\",u);chunk_MEY3PWYT_I([f],m=>{m.src=s}),r.push(f)},addVariant(p,u){if(!ht.test(p))throw new Error(`\\`addVariant('${p}')\\` defines an invalid variant name. Variants should only contain alphanumeric, dashes, or underscore characters and start with a lowercase letter or number.`);if(typeof u==\"string\"){if(u.includes(\":merge(\"))return}else if(Array.isArray(u)){if(u.some(m=>m.includes(\":merge(\")))return}else if(typeof u==\"object\"){let m=function(d,c){return Object.entries(d).some(([w,h])=>w.includes(c)||typeof h==\"object\"&&m(h,c))};var f=m;if(m(u,\":merge(\"))return}typeof u==\"string\"||Array.isArray(u)?e.variants.static(p,m=>{m.nodes=Ti(u,m.nodes)},{compounds:Oe(typeof u==\"string\"?[u]:u)}):typeof u==\"object\"&&e.variants.fromAst(p,de(u),e)},matchVariant(p,u,f){function m(c,w,h){let y=u(c,{modifier:w?.value??null});return Ti(y,h)}try{let c=u(\"a\",{modifier:null});if(typeof c==\"string\"&&c.includes(\":merge(\"))return;if(Array.isArray(c)&&c.some(w=>w.includes(\":merge(\")))return}catch{}let d=Object.keys(f?.values??{});e.variants.group(()=>{e.variants.functional(p,(c,w)=>{if(!w.value){if(f?.values&&\"DEFAULT\"in f.values){c.nodes=m(f.values.DEFAULT,w.modifier,c.nodes);return}return null}if(w.value.kind===\"arbitrary\")c.nodes=m(w.value.value,w.modifier,c.nodes);else if(w.value.kind===\"named\"&&f?.values){let h=f.values[w.value.value];if(typeof h!=\"string\")return null;c.nodes=m(h,w.modifier,c.nodes)}else return null})},(c,w)=>{if(c.kind!==\"functional\"||w.kind!==\"functional\")return 0;let h=c.value?c.value.value:\"DEFAULT\",y=w.value?w.value.value:\"DEFAULT\",x=f?.values?.[h]??h,V=f?.values?.[y]??y;if(f&&typeof f.sort==\"function\")return f.sort({value:x,modifier:c.modifier?.value??null},{value:V,modifier:w.modifier?.value??null});let A=d.indexOf(h),k=d.indexOf(y);return A=A===-1?d.length:A,k=k===-1?d.length:k,A!==k?A-k:x<V?-1:1}),e.variants.suggest(p,()=>Object.keys(f?.values??{}).filter(c=>c!==\"DEFAULT\"))},addUtilities(p){p=Array.isArray(p)?p:[p];let u=p.flatMap(m=>Object.entries(m));u=u.flatMap(([m,d])=>chunk_GFBUASX3_d(m,\",\").map(c=>[c.trim(),d]));let f=new chunk_MEY3PWYT_K(()=>[]);for(let[m,d]of u){if(m.startsWith(\"@keyframes \")){if(!n){let h=chunk_MEY3PWYT_J(m,de(d));chunk_MEY3PWYT_I([h],y=>{y.src=s}),r.push(h)}continue}let c=Ee(m),w=!1;if(chunk_MEY3PWYT_I(c,h=>{if(h.kind===\"selector\"&&h.value[0]===\".\"&&Si.test(h.value.slice(1))){let y=h.value;h.value=\"&\";let x=ce(c),V=y.slice(1),A=x===\"&\"?de(d):[chunk_MEY3PWYT_J(x,de(d))];f.get(V).push(...A),w=!0,h.value=y;return}if(h.kind===\"function\"&&h.value===\":not\")return chunk_MEY3PWYT_R.Skip}),!w)throw new Error(`\\`addUtilities({ '${m}' : \\u2026 })\\` defines an invalid utility selector. Utilities must be a single class name and start with a lowercase letter, eg. \\`.scrollbar-none\\`.`)}for(let[m,d]of f)e.theme.prefix&&chunk_MEY3PWYT_I(d,c=>{if(c.kind===\"rule\"){let w=Ee(c.selector);chunk_MEY3PWYT_I(w,h=>{h.kind===\"selector\"&&h.value[0]===\".\"&&(h.value=`.${e.theme.prefix}\\\\:${h.value.slice(1)}`)}),c.selector=ce(w)}}),e.utilities.static(m,c=>{let w=d.map(chunk_MEY3PWYT_ee);return Vi(w,m,c.raw),t.current|=xe(w,e),w})},matchUtilities(p,u){let f=u?.type?Array.isArray(u?.type)?u.type:[u.type]:[\"any\"];for(let[d,c]of Object.entries(p)){let w=function({negative:h}){return y=>{if(y.value?.kind===\"arbitrary\"&&f.length>0&&!f.includes(\"any\")&&(y.value.dataType&&!f.includes(y.value.dataType)||!y.value.dataType&&!me(y.value.value,f)))return;let x=f.includes(\"color\"),V=null,A=!1;{let E=u?.values??{};x&&(E=Object.assign({inherit:\"inherit\",transparent:\"transparent\",current:\"currentcolor\"},E)),y.value?y.value.kind===\"arbitrary\"?V=y.value.value:y.value.fraction&&E[y.value.fraction]?(V=E[y.value.fraction],A=!0):E[y.value.value]?V=E[y.value.value]:E.__BARE_VALUE__&&(V=E.__BARE_VALUE__(y.value)??null,A=(y.value.fraction!==null&&V?.includes(\"/\"))??!1):V=E.DEFAULT??null}if(V===null)return;let k;{let E=u?.modifiers??null;y.modifier?E===\"any\"||y.modifier.kind===\"arbitrary\"?k=y.modifier.value:E?.[y.modifier.value]?k=E[y.modifier.value]:x&&!Number.isNaN(Number(y.modifier.value))?k=`${y.modifier.value}%`:k=null:k=null}if(y.modifier&&k===null&&!A)return y.value?.kind===\"arbitrary\"?null:void 0;x&&k!==null&&(V=chunk_MEY3PWYT_Q(V,k)),h&&(V=`calc(${V} * -1)`);let U=de(c(V,{modifier:k}));return Vi(U,d,y.raw),t.current|=xe(U,e),U}};var m=w;if(!Si.test(d))throw new Error(`\\`matchUtilities({ '${d}' : \\u2026 })\\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter, eg. \\`scrollbar\\`.`);u?.supportsNegativeValues&&e.utilities.functional(`-${d}`,w({negative:!0}),{types:f}),e.utilities.functional(d,w({negative:!1}),{types:f}),e.utilities.suggest(d,()=>{let h=u?.values??{},y=new Set(Object.keys(h));y.delete(\"__BARE_VALUE__\"),y.delete(\"__CSS_VALUES__\"),y.has(\"DEFAULT\")&&(y.delete(\"DEFAULT\"),y.add(null));let x=u?.modifiers??{},V=x===\"any\"?[]:Object.keys(x);return[{supportsNegative:u?.supportsNegativeValues??!1,values:Array.from(y),modifiers:V}]})}},addComponents(p,u){this.addUtilities(p,u)},matchComponents(p,u){this.matchUtilities(p,u)},theme:vt(e,()=>i.theme??{},p=>p),prefix(p){return p},config(p,u){let f=i;if(!p)return f;let m=Re(p);for(let d=0;d<m.length;++d){let c=m[d];if(f[c]===void 0)return u;f=f[c]}return f??u}};return a.addComponents=a.addComponents.bind(a),a.matchComponents=a.matchComponents.bind(a),a}function de(e){let r=[];e=Array.isArray(e)?e:[e];let i=e.flatMap(t=>Object.entries(t));for(let[t,n]of i)if(n!=null&&n!==!1)if(typeof n!=\"object\"){if(!t.startsWith(\"--\")){if(n===\"@slot\"){r.push(chunk_MEY3PWYT_J(t,[chunk_MEY3PWYT_F(\"@slot\")]));continue}t=t.replace(/([A-Z])/g,\"-$1\").toLowerCase()}r.push(o(t,String(n)))}else if(Array.isArray(n))for(let s of n)typeof s==\"string\"?r.push(o(t,s)):r.push(chunk_MEY3PWYT_J(t,de(s)));else r.push(chunk_MEY3PWYT_J(t,de(n)));return r}function Ti(e,r){return(typeof e==\"string\"?[e]:e).flatMap(t=>{if(t.trim().endsWith(\"}\")){let n=t.replace(\"}\",\"{@slot}}\"),s=Ce(n);return zt(s,r),s}else return chunk_MEY3PWYT_J(t,r)})}function Vi(e,r,i){chunk_MEY3PWYT_I(e,t=>{if(t.kind===\"rule\"){let n=Ee(t.selector);chunk_MEY3PWYT_I(n,s=>{s.kind===\"selector\"&&s.value===`.${r}`&&(s.value=`.${we(i)}`)}),t.selector=ce(n)}})}function Ni(e,r){for(let i of Oa(r))e.theme.addKeyframes(i)}function Oa(e){let r=[];if(\"keyframes\"in e.theme)for(let[i,t]of Object.entries(e.theme.keyframes))r.push(chunk_MEY3PWYT_F(\"@keyframes\",i,de(t)));return r}function Ei(e){return{theme:{...be,colors:({theme:r})=>r(\"color\",{}),extend:{fontSize:({theme:r})=>({...r(\"text\",{})}),boxShadow:({theme:r})=>({...r(\"shadow\",{})}),animation:({theme:r})=>({...r(\"animate\",{})}),aspectRatio:({theme:r})=>({...r(\"aspect\",{})}),borderRadius:({theme:r})=>({...r(\"radius\",{})}),screens:({theme:r})=>({...r(\"breakpoint\",{})}),letterSpacing:({theme:r})=>({...r(\"tracking\",{})}),lineHeight:({theme:r})=>({...r(\"leading\",{})}),transitionDuration:{DEFAULT:e.get([\"--default-transition-duration\"])??null},transitionTimingFunction:{DEFAULT:e.get([\"--default-transition-timing-function\"])??null},maxWidth:({theme:r})=>({...r(\"container\",{})})}}}}var Pa={blocklist:[],future:{},prefix:\"\",important:!1,darkMode:null,theme:{},plugins:[],content:{files:[]}};function Gt(e,r){let i={design:e,configs:[],plugins:[],content:{files:[]},theme:{},extend:{},result:structuredClone(Pa)};for(let n of r)Yt(i,n);for(let n of i.configs)\"darkMode\"in n&&n.darkMode!==void 0&&(i.result.darkMode=n.darkMode??null),\"prefix\"in n&&n.prefix!==void 0&&(i.result.prefix=n.prefix??\"\"),\"blocklist\"in n&&n.blocklist!==void 0&&(i.result.blocklist=n.blocklist??[]),\"important\"in n&&n.important!==void 0&&(i.result.important=n.important??!1);let t=_a(i);return{resolvedConfig:{...i.result,content:i.content,theme:i.theme,plugins:i.plugins},replacedThemeKeys:t}}function Ia(e,r){if(Array.isArray(e)&&Me(e[0]))return e.concat(r);if(Array.isArray(r)&&Me(r[0])&&Me(e))return[e,...r];if(Array.isArray(r))return r}function Yt(e,{config:r,base:i,path:t,reference:n,src:s}){let a=[];for(let f of r.plugins??[])\"__isOptionsFunction\"in f?a.push({...f(),reference:n,src:s}):\"handler\"in f?a.push({...f,reference:n,src:s}):a.push({handler:f,reference:n,src:s});if(Array.isArray(r.presets)&&r.presets.length===0)throw new Error(\"Error in the config file/plugin/preset. An empty preset (`preset: []`) is not currently supported.\");for(let f of r.presets??[])Yt(e,{path:t,base:i,config:f,reference:n,src:s});for(let f of a)e.plugins.push(f),f.config&&Yt(e,{path:t,base:i,config:f.config,reference:!!f.reference,src:f.src??s});let p=r.content??[],u=Array.isArray(p)?p:p.files;for(let f of u)e.content.files.push(typeof f==\"object\"?f:{base:i,pattern:f});e.configs.push(r)}function _a(e){let r=new Set,i=vt(e.design,()=>e.theme,n),t=Object.assign(i,{theme:i,colors:l});function n(s){return typeof s==\"function\"?s(t)??null:s??null}for(let s of e.configs){let a=s.theme??{},p=a.extend??{};for(let u in a)u!==\"extend\"&&r.add(u);Object.assign(e.theme,a);for(let u in p)e.extend[u]??=[],e.extend[u].push(p[u])}delete e.theme.extend;for(let s in e.extend){let a=[e.theme[s],...e.extend[s]];e.theme[s]=()=>{let p=a.map(n);return Qe({},p,Ia)}}for(let s in e.theme)e.theme[s]=n(e.theme[s]);if(e.theme.screens&&typeof e.theme.screens==\"object\")for(let s of Object.keys(e.theme.screens)){let a=e.theme.screens[s];a&&typeof a==\"object\"&&(\"raw\"in a||\"max\"in a||\"min\"in a&&(e.theme.screens[s]=a.min))}return r}function Ri(e,r){let i=e.theme.container||{};if(typeof i!=\"object\"||i===null)return;let t=Da(i,r);t.length!==0&&r.utilities.static(\"container\",()=>t.map(chunk_MEY3PWYT_ee))}function Da({center:e,padding:r,screens:i},t){let n=[],s=null;if(e&&n.push(o(\"margin-inline\",\"auto\")),(typeof r==\"string\"||typeof r==\"object\"&&r!==null&&\"DEFAULT\"in r)&&n.push(o(\"padding-inline\",typeof r==\"string\"?r:r.DEFAULT)),typeof i==\"object\"&&i!==null){s=new Map;let a=Array.from(t.theme.namespace(\"--breakpoint\").entries());if(a.sort((p,u)=>Te(p[1],u[1],\"asc\")),a.length>0){let[p]=a[0];n.push(chunk_MEY3PWYT_F(\"@media\",`(width >= --theme(--breakpoint-${p}))`,[o(\"max-width\",\"none\")]))}for(let[p,u]of Object.entries(i)){if(typeof u==\"object\")if(\"min\"in u)u=u.min;else continue;s.set(p,chunk_MEY3PWYT_F(\"@media\",`(width >= ${u})`,[o(\"max-width\",u)]))}}if(typeof r==\"object\"&&r!==null){let a=Object.entries(r).filter(([p])=>p!==\"DEFAULT\").map(([p,u])=>[p,t.theme.resolveValue(p,[\"--breakpoint\"]),u]).filter(Boolean);a.sort((p,u)=>Te(p[1],u[1],\"asc\"));for(let[p,,u]of a)if(s&&s.has(p))s.get(p).nodes.push(o(\"padding-inline\",u));else{if(s)continue;n.push(chunk_MEY3PWYT_F(\"@media\",`(width >= theme(--breakpoint-${p}))`,[o(\"padding-inline\",u)]))}}if(s)for(let[,a]of s)n.push(a);return n}function Oi({addVariant:e,config:r}){let i=r(\"darkMode\",null),[t,n=\".dark\"]=Array.isArray(i)?i:[i];if(t===\"variant\"){let s;if(Array.isArray(n)||typeof n==\"function\"?s=n:typeof n==\"string\"&&(s=[n]),Array.isArray(s))for(let a of s)a===\".dark\"?(t=!1,console.warn('When using `variant` for `darkMode`, you must provide a selector.\\nExample: `darkMode: [\"variant\", \".your-selector &\"]`')):a.includes(\"&\")||(t=!1,console.warn('When using `variant` for `darkMode`, your selector must contain `&`.\\nExample `darkMode: [\"variant\", \".your-selector &\"]`'));n=s}t===null||(t===\"selector\"?e(\"dark\",`&:where(${n}, ${n} *)`):t===\"media\"?e(\"dark\",\"@media (prefers-color-scheme: dark)\"):t===\"variant\"?e(\"dark\",n):t===\"class\"&&e(\"dark\",`&:is(${n} *)`))}function Pi(e){for(let[r,i]of[[\"t\",\"top\"],[\"tr\",\"top right\"],[\"r\",\"right\"],[\"br\",\"bottom right\"],[\"b\",\"bottom\"],[\"bl\",\"bottom left\"],[\"l\",\"left\"],[\"tl\",\"top left\"]])e.utilities.suggest(`bg-gradient-to-${r}`,()=>[]),e.utilities.static(`bg-gradient-to-${r}`,()=>[o(\"--tw-gradient-position\",`to ${i} in oklab`),o(\"background-image\",\"linear-gradient(var(--tw-gradient-stops))\")]);e.utilities.suggest(\"bg-left-top\",()=>[]),e.utilities.static(\"bg-left-top\",()=>[o(\"background-position\",\"left top\")]),e.utilities.suggest(\"bg-right-top\",()=>[]),e.utilities.static(\"bg-right-top\",()=>[o(\"background-position\",\"right top\")]),e.utilities.suggest(\"bg-left-bottom\",()=>[]),e.utilities.static(\"bg-left-bottom\",()=>[o(\"background-position\",\"left bottom\")]),e.utilities.suggest(\"bg-right-bottom\",()=>[]),e.utilities.static(\"bg-right-bottom\",()=>[o(\"background-position\",\"right bottom\")]),e.utilities.suggest(\"object-left-top\",()=>[]),e.utilities.static(\"object-left-top\",()=>[o(\"object-position\",\"left top\")]),e.utilities.suggest(\"object-right-top\",()=>[]),e.utilities.static(\"object-right-top\",()=>[o(\"object-position\",\"right top\")]),e.utilities.suggest(\"object-left-bottom\",()=>[]),e.utilities.static(\"object-left-bottom\",()=>[o(\"object-position\",\"left bottom\")]),e.utilities.suggest(\"object-right-bottom\",()=>[]),e.utilities.static(\"object-right-bottom\",()=>[o(\"object-position\",\"right bottom\")]),e.utilities.suggest(\"max-w-screen\",()=>[]),e.utilities.functional(\"max-w-screen\",r=>{if(!r.value||r.value.kind===\"arbitrary\")return;let i=e.theme.resolve(r.value.value,[\"--breakpoint\"]);if(i)return[o(\"max-width\",i)]}),e.utilities.suggest(\"overflow-ellipsis\",()=>[]),e.utilities.static(\"overflow-ellipsis\",()=>[o(\"text-overflow\",\"ellipsis\")]),e.utilities.suggest(\"decoration-slice\",()=>[]),e.utilities.static(\"decoration-slice\",()=>[o(\"-webkit-box-decoration-break\",\"slice\"),o(\"box-decoration-break\",\"slice\")]),e.utilities.suggest(\"decoration-clone\",()=>[]),e.utilities.static(\"decoration-clone\",()=>[o(\"-webkit-box-decoration-break\",\"clone\"),o(\"box-decoration-break\",\"clone\")]),e.utilities.suggest(\"flex-shrink\",()=>[]),e.utilities.functional(\"flex-shrink\",r=>{if(!r.modifier){if(!r.value)return[o(\"flex-shrink\",\"1\")];if(r.value.kind===\"arbitrary\")return[o(\"flex-shrink\",r.value.value)];if(chunk_GFBUASX3_u(r.value.value))return[o(\"flex-shrink\",r.value.value)]}}),e.utilities.suggest(\"flex-grow\",()=>[]),e.utilities.functional(\"flex-grow\",r=>{if(!r.modifier){if(!r.value)return[o(\"flex-grow\",\"1\")];if(r.value.kind===\"arbitrary\")return[o(\"flex-grow\",r.value.value)];if(chunk_GFBUASX3_u(r.value.value))return[o(\"flex-grow\",r.value.value)]}}),e.utilities.suggest(\"order-none\",()=>[]),e.utilities.static(\"order-none\",()=>[o(\"order\",\"0\")]),e.utilities.suggest(\"break-words\",()=>[]),e.utilities.static(\"break-words\",()=>[o(\"overflow-wrap\",\"break-word\")])}function Ii(e,r){let i=e.theme.screens||{},t=r.variants.get(\"min\")?.order??0,n=[];for(let[a,p]of Object.entries(i)){let c=function(w){r.variants.static(a,h=>{h.nodes=[chunk_MEY3PWYT_F(\"@media\",d,h.nodes)]},{order:w})};var s=c;let u=r.variants.get(a),f=r.theme.resolveValue(a,[\"--breakpoint\"]);if(u&&f&&!r.theme.hasDefault(`--breakpoint-${a}`))continue;let m=!0;typeof p==\"string\"&&(m=!1);let d=Ka(p);m?n.push(c):c(t)}if(n.length!==0){for(let[,a]of r.variants.variants)a.order>t&&(a.order+=n.length);r.variants.compareFns=new Map(Array.from(r.variants.compareFns).map(([a,p])=>(a>t&&(a+=n.length),[a,p])));for(let[a,p]of n.entries())p(t+a+1)}}function Ka(e){return(Array.isArray(e)?e:[e]).map(i=>typeof i==\"string\"?{min:i}:i&&typeof i==\"object\"?i:null).map(i=>{if(i===null)return null;if(\"raw\"in i)return i.raw;let t=\"\";return i.max!==void 0&&(t+=`${i.max} >= `),t+=\"width\",i.min!==void 0&&(t+=` >= ${i.min}`),`(${t})`}).filter(Boolean).join(\", \")}function _i(e,r){let i=e.theme.aria||{},t=e.theme.supports||{},n=e.theme.data||{};if(Object.keys(i).length>0){let s=r.variants.get(\"aria\"),a=s?.applyFn,p=s?.compounds;r.variants.functional(\"aria\",(u,f)=>{let m=f.value;return m&&m.kind===\"named\"&&m.value in i?a?.(u,{...f,value:{kind:\"arbitrary\",value:i[m.value]}}):a?.(u,f)},{compounds:p})}if(Object.keys(t).length>0){let s=r.variants.get(\"supports\"),a=s?.applyFn,p=s?.compounds;r.variants.functional(\"supports\",(u,f)=>{let m=f.value;return m&&m.kind===\"named\"&&m.value in t?a?.(u,{...f,value:{kind:\"arbitrary\",value:t[m.value]}}):a?.(u,f)},{compounds:p})}if(Object.keys(n).length>0){let s=r.variants.get(\"data\"),a=s?.applyFn,p=s?.compounds;r.variants.functional(\"data\",(u,f)=>{let m=f.value;return m&&m.kind===\"named\"&&m.value in n?a?.(u,{...f,value:{kind:\"arbitrary\",value:n[m.value]}}):a?.(u,f)},{compounds:p})}}var Ua=/^[a-z]+$/;async function Ki({designSystem:e,base:r,ast:i,loadModule:t,sources:n}){let s=0,a=[],p=[];chunk_MEY3PWYT_I(i,(d,c)=>{if(d.kind!==\"at-rule\")return;let w=Ge(c);if(d.name===\"@plugin\"){if(w.parent!==null)throw new Error(\"`@plugin` cannot be nested.\");let h=d.params.slice(1,-1);if(h.length===0)throw new Error(\"`@plugin` must have a path.\");let y={};for(let x of d.nodes??[]){if(x.kind!==\"declaration\")throw new Error(`Unexpected \\`@plugin\\` option:\n\n${chunk_MEY3PWYT_re([x])}\n\n\\`@plugin\\` options must be a flat list of declarations.`);if(x.value===void 0)continue;let V=x.value,A=chunk_GFBUASX3_d(V,\",\").map(k=>{if(k=k.trim(),k===\"null\")return null;if(k===\"true\")return!0;if(k===\"false\")return!1;if(Number.isNaN(Number(k))){if(k[0]==='\"'&&k[k.length-1]==='\"'||k[0]===\"'\"&&k[k.length-1]===\"'\")return k.slice(1,-1);if(k[0]===\"{\"&&k[k.length-1]===\"}\")throw new Error(`Unexpected \\`@plugin\\` option: Value of declaration \\`${chunk_MEY3PWYT_re([x]).trim()}\\` is not supported.\n\nUsing an object as a plugin option is currently only supported in JavaScript configuration files.`)}else return Number(k);return k});y[x.property]=A.length===1?A[0]:A}return a.push([{id:h,base:w.context.base,reference:!!w.context.reference,src:d.src},Object.keys(y).length>0?y:null]),s|=4,chunk_MEY3PWYT_R.Replace([])}if(d.name===\"@config\"){if(d.nodes.length>0)throw new Error(\"`@config` cannot have a body.\");if(w.parent!==null)throw new Error(\"`@config` cannot be nested.\");return p.push({id:d.params.slice(1,-1),base:w.context.base,reference:!!w.context.reference,src:d.src}),s|=4,chunk_MEY3PWYT_R.Replace([])}}),Pi(e);let u=e.resolveThemeValue;if(e.resolveThemeValue=function(c,w){return c.startsWith(\"--\")?u(c,w):(s|=Di({designSystem:e,base:r,ast:i,sources:n,configs:[],pluginDetails:[]}),e.resolveThemeValue(c,w))},!a.length&&!p.length)return 0;let[f,m]=await Promise.all([Promise.all(p.map(async({id:d,base:c,reference:w,src:h})=>{let y=await t(d,c,\"config\");return{path:d,base:y.base,config:y.module,reference:w,src:h}})),Promise.all(a.map(async([{id:d,base:c,reference:w,src:h},y])=>{let x=await t(d,c,\"plugin\");return{path:d,base:x.base,plugin:x.module,options:y,reference:w,src:h}}))]);return s|=Di({designSystem:e,base:r,ast:i,sources:n,configs:f,pluginDetails:m}),s}function Di({designSystem:e,base:r,ast:i,sources:t,configs:n,pluginDetails:s}){let a=0,u=[...s.map(y=>{if(!y.options)return{config:{plugins:[y.plugin]},base:y.base,reference:y.reference,src:y.src};if(\"__isOptionsFunction\"in y.plugin)return{config:{plugins:[y.plugin(y.options)]},base:y.base,reference:y.reference,src:y.src};throw new Error(`The plugin \"${y.path}\" does not accept options`)}),...n],{resolvedConfig:f}=Gt(e,[{config:Ei(e.theme),base:r,reference:!0,src:void 0},...u,{config:{plugins:[Oi]},base:r,reference:!0,src:void 0}]),{resolvedConfig:m,replacedThemeKeys:d}=Gt(e,u),c={designSystem:e,ast:i,resolvedConfig:f,featuresRef:{set current(y){a|=y}}},w=Bt({...c,referenceMode:!1,src:void 0}),h=e.resolveThemeValue;e.resolveThemeValue=function(x,V){if(x[0]===\"-\"&&x[1]===\"-\")return h(x,V);let A=w.theme(x,void 0);if(Array.isArray(A)&&A.length===2)return A[0];if(Array.isArray(A))return A.join(\", \");if(typeof A==\"object\"&&A!==null&&\"DEFAULT\"in A)return A.DEFAULT;if(typeof A==\"string\")return A};for(let{handler:y,reference:x,src:V}of f.plugins){let A=Bt({...c,referenceMode:x??!1,src:V});y(A)}if(Dr(e,m,d),Ni(e,m),_i(m,e),Ii(m,e),Ri(m,e),!e.theme.prefix&&f.prefix){if(f.prefix.endsWith(\"-\")&&(f.prefix=f.prefix.slice(0,-1),console.warn(`The prefix \"${f.prefix}\" is invalid. Prefixes must be lowercase ASCII letters (a-z) only and is written as a variant before all utilities. We have fixed up the prefix for you. Remove the trailing \\`-\\` to silence this warning.`)),!Ua.test(f.prefix))throw new Error(`The prefix \"${f.prefix}\" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);e.theme.prefix=f.prefix}if(!e.important&&f.important===!0&&(e.important=!0),typeof f.important==\"string\"){let y=f.important;chunk_MEY3PWYT_I(i,(x,V)=>{if(x.kind!==\"at-rule\"||x.name!==\"@tailwind\"||x.params!==\"utilities\")return;let A=Ge(V);return A.parent?.kind===\"rule\"&&A.parent.selector===y?chunk_MEY3PWYT_R.Stop:chunk_MEY3PWYT_R.ReplaceStop(chunk_MEY3PWYT_G(y,[x]))})}for(let y of f.blocklist)e.invalidCandidates.add(y);for(let y of f.content.files){if(\"raw\"in y)throw new Error(`Error in the config file/plugin/preset. The \\`content\\` key contains a \\`raw\\` entry:\n\n${JSON.stringify(y,null,2)}\n\nThis feature is not currently supported.`);let x=!1;y.pattern[0]==\"!\"&&(x=!0,y.pattern=y.pattern.slice(1)),t.push({...y,negated:x})}return a}function Ui(e){let r=[0];for(let n=0;n<e.length;n++)e.charCodeAt(n)===10&&r.push(n+1);function i(n){let s=0,a=r.length;for(;a>0;){let u=(a|0)>>1,f=s+u;r[f]<=n?(s=f+1,a=a-u-1):a=u}s-=1;let p=n-r[s];return{line:s+1,column:p}}function t({line:n,column:s}){n-=1,n=Math.min(Math.max(n,0),r.length-1);let a=r[n],p=r[n+1]??a;return Math.min(Math.max(a+s,0),p)}return{find:i,findOffset:t}}function Li({ast:e}){let r=new chunk_MEY3PWYT_K(n=>Ui(n.code)),i=new chunk_MEY3PWYT_K(n=>({url:n.file,content:n.code,ignore:!1})),t={file:null,sources:[],mappings:[]};chunk_MEY3PWYT_I(e,n=>{if(!n.src||!n.dst)return;let s=i.get(n.src[0]);if(!s.content)return;let a=r.get(n.src[0]),p=r.get(n.dst[0]),u=s.content.slice(n.src[1],n.src[2]),f=0;for(let c of u.split(`\n`)){if(c.trim()!==\"\"){let w=a.find(n.src[1]+f),h=p.find(n.dst[1]);t.mappings.push({name:null,originalPosition:{source:s,...w},generatedPosition:h})}f+=c.length,f+=1}let m=a.find(n.src[2]),d=p.find(n.dst[2]);t.mappings.push({name:null,originalPosition:{source:s,...m},generatedPosition:d})});for(let n of r.keys())t.sources.push(i.get(n));return t.mappings.sort((n,s)=>n.generatedPosition.line-s.generatedPosition.line||n.generatedPosition.column-s.generatedPosition.column||(n.originalPosition?.line??0)-(s.originalPosition?.line??0)||(n.originalPosition?.column??0)-(s.originalPosition?.column??0)),t}var ji=/^(-?\\d+)\\.\\.(-?\\d+)(?:\\.\\.(-?\\d+))?$/;function wt(e){let r=e.indexOf(\"{\");if(r===-1)return[e];let i=[],t=e.slice(0,r),n=e.slice(r),s=0,a=n.lastIndexOf(\"}\");for(let d=0;d<n.length;d++){let c=n[d];if(c===\"{\")s++;else if(c===\"}\"&&(s--,s===0)){a=d;break}}if(a===-1)throw new Error(`The pattern \\`${e}\\` is not balanced.`);let p=n.slice(1,a),u=n.slice(a+1),f;La(p)?f=ja(p):f=chunk_GFBUASX3_d(p,\",\"),f=f.flatMap(d=>wt(d));let m=wt(u);for(let d of m)for(let c of f)i.push(t+c+d);return i}function La(e){return ji.test(e)}function ja(e){let r=e.match(ji);if(!r)return[e];let[,i,t,n]=r,s=n?parseInt(n,10):void 0,a=[];if(/^-?\\d+$/.test(i)&&/^-?\\d+$/.test(t)){let p=parseInt(i,10),u=parseInt(t,10);if(s===void 0&&(s=p<=u?1:-1),s===0)throw new Error(\"Step cannot be zero in sequence expansion.\");let f=p<u;f&&s<0&&(s=-s),!f&&s>0&&(s=-s);for(let m=p;f?m<=u:m>=u;m+=s)a.push(m.toString())}return a}function Mi(e,r){let i=new Set,t=new Set,n=[];function s(a,p=[]){if(e.has(a)&&!i.has(a)){t.has(a)&&r.onCircularDependency?.(p,a),t.add(a);for(let u of e.get(a)??[])p.push(a),s(u,p),p.pop();i.add(a),t.delete(a),n.push(a)}}for(let a of e.keys())s(a);return n}var Ma=/^[a-z]+$/,Tt=(n=>(n[n.None=0]=\"None\",n[n.AtProperty=1]=\"AtProperty\",n[n.ColorMix=2]=\"ColorMix\",n[n.All=3]=\"All\",n))(Tt||{});function za(){throw new Error(\"No `loadModule` function provided to `compile`\")}function Fa(){throw new Error(\"No `loadStylesheet` function provided to `compile`\")}function Wa(e){let r=0,i=null;for(let t of chunk_GFBUASX3_d(e,\" \"))t===\"reference\"?r|=2:t===\"inline\"?r|=1:t===\"default\"?r|=4:t===\"static\"?r|=8:t.startsWith(\"prefix(\")&&t.endsWith(\")\")&&(i=t.slice(7,-1));return[r,i]}var De=(u=>(u[u.None=0]=\"None\",u[u.AtApply=1]=\"AtApply\",u[u.AtImport=2]=\"AtImport\",u[u.JsPluginCompat=4]=\"JsPluginCompat\",u[u.ThemeFunction=8]=\"ThemeFunction\",u[u.Utilities=16]=\"Utilities\",u[u.Variants=32]=\"Variants\",u[u.AtTheme=64]=\"AtTheme\",u))(De||{});async function zi(e,{base:r=\"\",from:i,loadModule:t=za,loadStylesheet:n=Fa}={}){let s=0;e=[fe({base:r},e)],s|=await Wt(e,r,n,0,i!==void 0);let a=null,p=new at,u=new Map,f=new Map,m=[],d=null,c=null,w=[],h=[],y=[],x=[],V=null;chunk_MEY3PWYT_I(e,(k,U)=>{if(k.kind!==\"at-rule\")return;let E=Ge(U);if(k.name===\"@tailwind\"&&(k.params===\"utilities\"||k.params.startsWith(\"utilities\"))){if(c!==null)return chunk_MEY3PWYT_R.Replace([]);if(E.context.reference)return chunk_MEY3PWYT_R.Replace([]);let O=chunk_GFBUASX3_d(k.params,\" \");for(let j of O)if(j.startsWith(\"source(\")){let _=j.slice(7,-1);if(_===\"none\"){V=_;continue}if(_[0]==='\"'&&_[_.length-1]!=='\"'||_[0]===\"'\"&&_[_.length-1]!==\"'\"||_[0]!==\"'\"&&_[0]!=='\"')throw new Error(\"`source(\\u2026)` paths must be quoted.\");V={base:E.context.sourceBase??E.context.base,pattern:_.slice(1,-1)}}c=k,s|=16}if(k.name===\"@utility\"){if(E.parent!==null)throw new Error(\"`@utility` cannot be nested.\");if(k.nodes.length===0)throw new Error(`\\`@utility ${k.params}\\` is empty. Utilities should include at least one property.`);let O=Or(k);if(O===null){if(!k.params.endsWith(\"-*\")){if(k.params.endsWith(\"*\"))throw new Error(`\\`@utility ${k.params}\\` defines an invalid utility name. A functional utility must end in \\`-*\\`.`);if(k.params.includes(\"*\"))throw new Error(`\\`@utility ${k.params}\\` defines an invalid utility name. The dynamic portion marked by \\`-*\\` must appear once at the end.`)}throw new Error(`\\`@utility ${k.params}\\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter.`)}m.push(O)}if(k.name===\"@source\"){if(k.nodes.length>0)throw new Error(\"`@source` cannot have a body.\");if(E.parent!==null)throw new Error(\"`@source` cannot be nested.\");let O=!1,j=!1,_=k.params;if(_[0]===\"n\"&&_.startsWith(\"not \")&&(O=!0,_=_.slice(4)),_[0]===\"i\"&&_.startsWith(\"inline(\")&&(j=!0,_=_.slice(7,-1)),_[0]==='\"'&&_[_.length-1]!=='\"'||_[0]===\"'\"&&_[_.length-1]!==\"'\"||_[0]!==\"'\"&&_[0]!=='\"')throw new Error(\"`@source` paths must be quoted.\");let M=_.slice(1,-1);if(j){let Y=O?x:y,q=chunk_GFBUASX3_d(M,\" \");for(let ne of q)for(let ae of wt(ne))Y.push(ae)}else h.push({base:E.context.base,pattern:M,negated:O});return chunk_MEY3PWYT_R.ReplaceSkip([])}if(k.name===\"@variant\"&&(E.parent===null?k.nodes.length===0?k.name=\"@custom-variant\":(chunk_MEY3PWYT_I(k.nodes,O=>{if(O.kind===\"at-rule\"&&O.name===\"@slot\")return k.name=\"@custom-variant\",chunk_MEY3PWYT_R.Stop}),k.name===\"@variant\"&&w.push(k)):w.push(k)),k.name===\"@custom-variant\"){if(E.parent!==null)throw new Error(\"`@custom-variant` cannot be nested.\");let[O,j]=chunk_GFBUASX3_d(k.params,\" \");if(!ht.test(O))throw new Error(`\\`@custom-variant ${O}\\` defines an invalid variant name. Variants should only contain alphanumeric, dashes, or underscore characters and start with a lowercase letter or number.`);if(k.nodes.length>0&&j)throw new Error(`\\`@custom-variant ${O}\\` cannot have both a selector and a body.`);if(k.nodes.length===0){if(!j)throw new Error(`\\`@custom-variant ${O}\\` has no selector or body.`);let _=chunk_GFBUASX3_d(j.slice(1,-1),\",\");if(_.length===0||_.some(q=>q.trim()===\"\"))throw new Error(`\\`@custom-variant ${O} (${_.join(\",\")})\\` selector is invalid.`);let M=[],Y=[];for(let q of _)q=q.trim(),q[0]===\"@\"?M.push(q):Y.push(q);u.set(O,q=>{q.variants.static(O,ne=>{let ae=[];Y.length>0&&ae.push(chunk_MEY3PWYT_G(Y.join(\", \"),ne.nodes));for(let l of M)ae.push(chunk_MEY3PWYT_J(l,ne.nodes));ne.nodes=ae},{compounds:Oe([...Y,...M])})}),f.set(O,new Set)}else{let _=new Set;chunk_MEY3PWYT_I(k.nodes,M=>{M.kind===\"at-rule\"&&M.name===\"@variant\"&&_.add(M.params)}),u.set(O,M=>{M.variants.fromAst(O,k.nodes,M)}),f.set(O,_)}return chunk_MEY3PWYT_R.ReplaceSkip([])}if(k.name===\"@media\"){let O=chunk_GFBUASX3_d(k.params,\" \"),j=[];for(let _ of O)if(_.startsWith(\"source(\")){let M=_.slice(7,-1);chunk_MEY3PWYT_I(k.nodes,Y=>{if(Y.kind===\"at-rule\"&&Y.name===\"@tailwind\"&&Y.params===\"utilities\")return Y.params+=` source(${M})`,chunk_MEY3PWYT_R.ReplaceStop([fe({sourceBase:E.context.base},[Y])])})}else if(_.startsWith(\"theme(\")){let M=_.slice(6,-1),Y=M.includes(\"reference\");chunk_MEY3PWYT_I(k.nodes,q=>{if(q.kind!==\"context\"){if(q.kind!==\"at-rule\"){if(Y)throw new Error('Files imported with `@import \"\\u2026\" theme(reference)` must only contain `@theme` blocks.\\nUse `@reference \"\\u2026\";` instead.');return chunk_MEY3PWYT_R.Continue}if(q.name===\"@theme\")return q.params+=\" \"+M,chunk_MEY3PWYT_R.Skip}})}else if(_.startsWith(\"prefix(\")){let M=_.slice(7,-1);chunk_MEY3PWYT_I(k.nodes,Y=>{if(Y.kind===\"at-rule\"&&Y.name===\"@theme\")return Y.params+=` prefix(${M})`,chunk_MEY3PWYT_R.Skip})}else _===\"important\"?a=!0:_===\"reference\"?k.nodes=[fe({reference:!0},k.nodes)]:j.push(_);if(j.length>0)k.params=j.join(\" \");else if(O.length>0)return chunk_MEY3PWYT_R.Replace(k.nodes);return chunk_MEY3PWYT_R.Continue}if(k.name===\"@theme\"){let[O,j]=Wa(k.params);if(s|=64,E.context.reference&&(O|=2),j){if(!Ma.test(j))throw new Error(`The prefix \"${j}\" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);p.prefix=j}return chunk_MEY3PWYT_I(k.nodes,_=>{if(_.kind===\"at-rule\"&&_.name===\"@keyframes\")return p.addKeyframes(_),chunk_MEY3PWYT_R.Skip;if(_.kind===\"comment\")return;if(_.kind===\"declaration\"&&_.property.startsWith(\"--\")){p.add($e(_.property),_.value??\"\",O,_.src);return}let M=chunk_MEY3PWYT_re([chunk_MEY3PWYT_F(k.name,k.params,[_])]).split(`\n`).map((Y,q,ne)=>`${q===0||q>=ne.length-2?\" \":\">\"} ${Y}`).join(`\n`);throw new Error(`\\`@theme\\` blocks must only contain custom properties or \\`@keyframes\\`.\n\n${M}`)}),d?chunk_MEY3PWYT_R.ReplaceSkip([]):(d=chunk_MEY3PWYT_G(\":root, :host\",[]),d.src=k.src,chunk_MEY3PWYT_R.ReplaceSkip(d))}});let A=yi(p);if(a&&(A.important=a),x.length>0)for(let k of x)A.invalidCandidates.add(k);s|=await Ki({designSystem:A,base:r,ast:e,loadModule:t,sources:h});for(let k of u.keys())A.variants.static(k,()=>{});for(let k of Mi(f,{onCircularDependency(U,E){let O=chunk_MEY3PWYT_re(U.map((j,_)=>chunk_MEY3PWYT_F(\"@custom-variant\",j,[chunk_MEY3PWYT_F(\"@variant\",U[_+1]??E,[])]))).replaceAll(\";\",\" { \\u2026 }\").replace(`@custom-variant ${E} {`,`@custom-variant ${E} { /* \\u2190 */`);throw new Error(`Circular dependency detected in custom variants:\n\n${O}`)}}))u.get(k)?.(A);for(let k of m)k(A);if(d){let k=[];for(let[E,O]of A.theme.entries()){if(O.options&2)continue;let j=o(we(E),O.value);j.src=O.src,k.push(j)}let U=A.theme.getKeyframes();for(let E of U)e.push(fe({theme:!0},[chunk_MEY3PWYT_W([E])]));d.nodes=[fe({theme:!0},k)]}if(s|=Je(e,A),s|=_e(e,A),s|=xe(e,A),c){let k=c;k.kind=\"context\",k.context={}}return chunk_MEY3PWYT_I(e,k=>{if(k.kind===\"at-rule\")return k.name===\"@utility\"?chunk_MEY3PWYT_R.Replace([]):chunk_MEY3PWYT_R.Skip}),{designSystem:A,ast:e,sources:h,root:V,utilitiesNode:c,features:s,inlineCandidates:y}}async function Ba(e,r={}){let{designSystem:i,ast:t,sources:n,root:s,utilitiesNode:a,features:p,inlineCandidates:u}=await zi(e,r);t.unshift(nt(`! tailwindcss v${Qt} | MIT License | https://tailwindcss.com `));function f(h){i.invalidCandidates.add(h)}let m=new Set,d=null,c=0,w=!1;for(let h of u)i.invalidCandidates.has(h)||(m.add(h),w=!0);return{sources:n,root:s,features:p,build(h){if(p===0)return e;if(!a)return d??=Se(t,i,r.polyfills),d;let y=w,x=!1;w=!1;let V=m.size;for(let k of h)if(!i.invalidCandidates.has(k))if(k[0]===\"-\"&&k[1]===\"-\"){let U=i.theme.markUsedVariable(k);y||=U,x||=U}else m.add(k),y||=m.size!==V;if(!y)return d??=Se(t,i,r.polyfills),d;let A=Ae(m,i,{onInvalidCandidate:f}).astNodes;return r.from&&chunk_MEY3PWYT_I(A,k=>{k.src??=a.src}),!x&&c===A.length?(d??=Se(t,i,r.polyfills),d):(c=A.length,a.nodes=A,d=Se(t,i,r.polyfills),d)}}}async function Hu(e,r={}){let i=Ce(e,{from:r.from}),t=await Ba(i,r),n=i,s=e;return{...t,build(a){let p=t.build(a);return p===n||(s=chunk_MEY3PWYT_re(p,!!r.from),n=p),s},buildSourceMap(){return Li({ast:n})}}}async function Ju(e,r={}){return(await zi(Ce(e),r)).designSystem}function Ya(){throw new Error(\"It looks like you're trying to use `tailwindcss` directly as a PostCSS plugin. The PostCSS plugin has moved to a separate package, so to continue using Tailwind CSS with PostCSS you'll need to install `@tailwindcss/postcss` and update your PostCSS configuration.\")}\n\n;// ./node_modules/tailwindcss/dist/lib.mjs\n\n\n;// ./node_modules/tailwindcss/index.css\nconst tailwindcss_namespaceObject = \"@layer theme, base, components, utilities;\\n\\n@layer theme {\\n  @theme default {\\n    --font-sans:\\n      ui-sans-serif, system-ui, sans-serif, \\\"Apple Color Emoji\\\",\\n      \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\";\\n    --font-serif: ui-serif, Georgia, Cambria, \\\"Times New Roman\\\", Times, serif;\\n    --font-mono:\\n      ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\",\\n      \\\"Courier New\\\", monospace;\\n\\n    --color-red-50: oklch(97.1% 0.013 17.38);\\n    --color-red-100: oklch(93.6% 0.032 17.717);\\n    --color-red-200: oklch(88.5% 0.062 18.334);\\n    --color-red-300: oklch(80.8% 0.114 19.571);\\n    --color-red-400: oklch(70.4% 0.191 22.216);\\n    --color-red-500: oklch(63.7% 0.237 25.331);\\n    --color-red-600: oklch(57.7% 0.245 27.325);\\n    --color-red-700: oklch(50.5% 0.213 27.518);\\n    --color-red-800: oklch(44.4% 0.177 26.899);\\n    --color-red-900: oklch(39.6% 0.141 25.723);\\n    --color-red-950: oklch(25.8% 0.092 26.042);\\n\\n    --color-orange-50: oklch(98% 0.016 73.684);\\n    --color-orange-100: oklch(95.4% 0.038 75.164);\\n    --color-orange-200: oklch(90.1% 0.076 70.697);\\n    --color-orange-300: oklch(83.7% 0.128 66.29);\\n    --color-orange-400: oklch(75% 0.183 55.934);\\n    --color-orange-500: oklch(70.5% 0.213 47.604);\\n    --color-orange-600: oklch(64.6% 0.222 41.116);\\n    --color-orange-700: oklch(55.3% 0.195 38.402);\\n    --color-orange-800: oklch(47% 0.157 37.304);\\n    --color-orange-900: oklch(40.8% 0.123 38.172);\\n    --color-orange-950: oklch(26.6% 0.079 36.259);\\n\\n    --color-amber-50: oklch(98.7% 0.022 95.277);\\n    --color-amber-100: oklch(96.2% 0.059 95.617);\\n    --color-amber-200: oklch(92.4% 0.12 95.746);\\n    --color-amber-300: oklch(87.9% 0.169 91.605);\\n    --color-amber-400: oklch(82.8% 0.189 84.429);\\n    --color-amber-500: oklch(76.9% 0.188 70.08);\\n    --color-amber-600: oklch(66.6% 0.179 58.318);\\n    --color-amber-700: oklch(55.5% 0.163 48.998);\\n    --color-amber-800: oklch(47.3% 0.137 46.201);\\n    --color-amber-900: oklch(41.4% 0.112 45.904);\\n    --color-amber-950: oklch(27.9% 0.077 45.635);\\n\\n    --color-yellow-50: oklch(98.7% 0.026 102.212);\\n    --color-yellow-100: oklch(97.3% 0.071 103.193);\\n    --color-yellow-200: oklch(94.5% 0.129 101.54);\\n    --color-yellow-300: oklch(90.5% 0.182 98.111);\\n    --color-yellow-400: oklch(85.2% 0.199 91.936);\\n    --color-yellow-500: oklch(79.5% 0.184 86.047);\\n    --color-yellow-600: oklch(68.1% 0.162 75.834);\\n    --color-yellow-700: oklch(55.4% 0.135 66.442);\\n    --color-yellow-800: oklch(47.6% 0.114 61.907);\\n    --color-yellow-900: oklch(42.1% 0.095 57.708);\\n    --color-yellow-950: oklch(28.6% 0.066 53.813);\\n\\n    --color-lime-50: oklch(98.6% 0.031 120.757);\\n    --color-lime-100: oklch(96.7% 0.067 122.328);\\n    --color-lime-200: oklch(93.8% 0.127 124.321);\\n    --color-lime-300: oklch(89.7% 0.196 126.665);\\n    --color-lime-400: oklch(84.1% 0.238 128.85);\\n    --color-lime-500: oklch(76.8% 0.233 130.85);\\n    --color-lime-600: oklch(64.8% 0.2 131.684);\\n    --color-lime-700: oklch(53.2% 0.157 131.589);\\n    --color-lime-800: oklch(45.3% 0.124 130.933);\\n    --color-lime-900: oklch(40.5% 0.101 131.063);\\n    --color-lime-950: oklch(27.4% 0.072 132.109);\\n\\n    --color-green-50: oklch(98.2% 0.018 155.826);\\n    --color-green-100: oklch(96.2% 0.044 156.743);\\n    --color-green-200: oklch(92.5% 0.084 155.995);\\n    --color-green-300: oklch(87.1% 0.15 154.449);\\n    --color-green-400: oklch(79.2% 0.209 151.711);\\n    --color-green-500: oklch(72.3% 0.219 149.579);\\n    --color-green-600: oklch(62.7% 0.194 149.214);\\n    --color-green-700: oklch(52.7% 0.154 150.069);\\n    --color-green-800: oklch(44.8% 0.119 151.328);\\n    --color-green-900: oklch(39.3% 0.095 152.535);\\n    --color-green-950: oklch(26.6% 0.065 152.934);\\n\\n    --color-emerald-50: oklch(97.9% 0.021 166.113);\\n    --color-emerald-100: oklch(95% 0.052 163.051);\\n    --color-emerald-200: oklch(90.5% 0.093 164.15);\\n    --color-emerald-300: oklch(84.5% 0.143 164.978);\\n    --color-emerald-400: oklch(76.5% 0.177 163.223);\\n    --color-emerald-500: oklch(69.6% 0.17 162.48);\\n    --color-emerald-600: oklch(59.6% 0.145 163.225);\\n    --color-emerald-700: oklch(50.8% 0.118 165.612);\\n    --color-emerald-800: oklch(43.2% 0.095 166.913);\\n    --color-emerald-900: oklch(37.8% 0.077 168.94);\\n    --color-emerald-950: oklch(26.2% 0.051 172.552);\\n\\n    --color-teal-50: oklch(98.4% 0.014 180.72);\\n    --color-teal-100: oklch(95.3% 0.051 180.801);\\n    --color-teal-200: oklch(91% 0.096 180.426);\\n    --color-teal-300: oklch(85.5% 0.138 181.071);\\n    --color-teal-400: oklch(77.7% 0.152 181.912);\\n    --color-teal-500: oklch(70.4% 0.14 182.503);\\n    --color-teal-600: oklch(60% 0.118 184.704);\\n    --color-teal-700: oklch(51.1% 0.096 186.391);\\n    --color-teal-800: oklch(43.7% 0.078 188.216);\\n    --color-teal-900: oklch(38.6% 0.063 188.416);\\n    --color-teal-950: oklch(27.7% 0.046 192.524);\\n\\n    --color-cyan-50: oklch(98.4% 0.019 200.873);\\n    --color-cyan-100: oklch(95.6% 0.045 203.388);\\n    --color-cyan-200: oklch(91.7% 0.08 205.041);\\n    --color-cyan-300: oklch(86.5% 0.127 207.078);\\n    --color-cyan-400: oklch(78.9% 0.154 211.53);\\n    --color-cyan-500: oklch(71.5% 0.143 215.221);\\n    --color-cyan-600: oklch(60.9% 0.126 221.723);\\n    --color-cyan-700: oklch(52% 0.105 223.128);\\n    --color-cyan-800: oklch(45% 0.085 224.283);\\n    --color-cyan-900: oklch(39.8% 0.07 227.392);\\n    --color-cyan-950: oklch(30.2% 0.056 229.695);\\n\\n    --color-sky-50: oklch(97.7% 0.013 236.62);\\n    --color-sky-100: oklch(95.1% 0.026 236.824);\\n    --color-sky-200: oklch(90.1% 0.058 230.902);\\n    --color-sky-300: oklch(82.8% 0.111 230.318);\\n    --color-sky-400: oklch(74.6% 0.16 232.661);\\n    --color-sky-500: oklch(68.5% 0.169 237.323);\\n    --color-sky-600: oklch(58.8% 0.158 241.966);\\n    --color-sky-700: oklch(50% 0.134 242.749);\\n    --color-sky-800: oklch(44.3% 0.11 240.79);\\n    --color-sky-900: oklch(39.1% 0.09 240.876);\\n    --color-sky-950: oklch(29.3% 0.066 243.157);\\n\\n    --color-blue-50: oklch(97% 0.014 254.604);\\n    --color-blue-100: oklch(93.2% 0.032 255.585);\\n    --color-blue-200: oklch(88.2% 0.059 254.128);\\n    --color-blue-300: oklch(80.9% 0.105 251.813);\\n    --color-blue-400: oklch(70.7% 0.165 254.624);\\n    --color-blue-500: oklch(62.3% 0.214 259.815);\\n    --color-blue-600: oklch(54.6% 0.245 262.881);\\n    --color-blue-700: oklch(48.8% 0.243 264.376);\\n    --color-blue-800: oklch(42.4% 0.199 265.638);\\n    --color-blue-900: oklch(37.9% 0.146 265.522);\\n    --color-blue-950: oklch(28.2% 0.091 267.935);\\n\\n    --color-indigo-50: oklch(96.2% 0.018 272.314);\\n    --color-indigo-100: oklch(93% 0.034 272.788);\\n    --color-indigo-200: oklch(87% 0.065 274.039);\\n    --color-indigo-300: oklch(78.5% 0.115 274.713);\\n    --color-indigo-400: oklch(67.3% 0.182 276.935);\\n    --color-indigo-500: oklch(58.5% 0.233 277.117);\\n    --color-indigo-600: oklch(51.1% 0.262 276.966);\\n    --color-indigo-700: oklch(45.7% 0.24 277.023);\\n    --color-indigo-800: oklch(39.8% 0.195 277.366);\\n    --color-indigo-900: oklch(35.9% 0.144 278.697);\\n    --color-indigo-950: oklch(25.7% 0.09 281.288);\\n\\n    --color-violet-50: oklch(96.9% 0.016 293.756);\\n    --color-violet-100: oklch(94.3% 0.029 294.588);\\n    --color-violet-200: oklch(89.4% 0.057 293.283);\\n    --color-violet-300: oklch(81.1% 0.111 293.571);\\n    --color-violet-400: oklch(70.2% 0.183 293.541);\\n    --color-violet-500: oklch(60.6% 0.25 292.717);\\n    --color-violet-600: oklch(54.1% 0.281 293.009);\\n    --color-violet-700: oklch(49.1% 0.27 292.581);\\n    --color-violet-800: oklch(43.2% 0.232 292.759);\\n    --color-violet-900: oklch(38% 0.189 293.745);\\n    --color-violet-950: oklch(28.3% 0.141 291.089);\\n\\n    --color-purple-50: oklch(97.7% 0.014 308.299);\\n    --color-purple-100: oklch(94.6% 0.033 307.174);\\n    --color-purple-200: oklch(90.2% 0.063 306.703);\\n    --color-purple-300: oklch(82.7% 0.119 306.383);\\n    --color-purple-400: oklch(71.4% 0.203 305.504);\\n    --color-purple-500: oklch(62.7% 0.265 303.9);\\n    --color-purple-600: oklch(55.8% 0.288 302.321);\\n    --color-purple-700: oklch(49.6% 0.265 301.924);\\n    --color-purple-800: oklch(43.8% 0.218 303.724);\\n    --color-purple-900: oklch(38.1% 0.176 304.987);\\n    --color-purple-950: oklch(29.1% 0.149 302.717);\\n\\n    --color-fuchsia-50: oklch(97.7% 0.017 320.058);\\n    --color-fuchsia-100: oklch(95.2% 0.037 318.852);\\n    --color-fuchsia-200: oklch(90.3% 0.076 319.62);\\n    --color-fuchsia-300: oklch(83.3% 0.145 321.434);\\n    --color-fuchsia-400: oklch(74% 0.238 322.16);\\n    --color-fuchsia-500: oklch(66.7% 0.295 322.15);\\n    --color-fuchsia-600: oklch(59.1% 0.293 322.896);\\n    --color-fuchsia-700: oklch(51.8% 0.253 323.949);\\n    --color-fuchsia-800: oklch(45.2% 0.211 324.591);\\n    --color-fuchsia-900: oklch(40.1% 0.17 325.612);\\n    --color-fuchsia-950: oklch(29.3% 0.136 325.661);\\n\\n    --color-pink-50: oklch(97.1% 0.014 343.198);\\n    --color-pink-100: oklch(94.8% 0.028 342.258);\\n    --color-pink-200: oklch(89.9% 0.061 343.231);\\n    --color-pink-300: oklch(82.3% 0.12 346.018);\\n    --color-pink-400: oklch(71.8% 0.202 349.761);\\n    --color-pink-500: oklch(65.6% 0.241 354.308);\\n    --color-pink-600: oklch(59.2% 0.249 0.584);\\n    --color-pink-700: oklch(52.5% 0.223 3.958);\\n    --color-pink-800: oklch(45.9% 0.187 3.815);\\n    --color-pink-900: oklch(40.8% 0.153 2.432);\\n    --color-pink-950: oklch(28.4% 0.109 3.907);\\n\\n    --color-rose-50: oklch(96.9% 0.015 12.422);\\n    --color-rose-100: oklch(94.1% 0.03 12.58);\\n    --color-rose-200: oklch(89.2% 0.058 10.001);\\n    --color-rose-300: oklch(81% 0.117 11.638);\\n    --color-rose-400: oklch(71.2% 0.194 13.428);\\n    --color-rose-500: oklch(64.5% 0.246 16.439);\\n    --color-rose-600: oklch(58.6% 0.253 17.585);\\n    --color-rose-700: oklch(51.4% 0.222 16.935);\\n    --color-rose-800: oklch(45.5% 0.188 13.697);\\n    --color-rose-900: oklch(41% 0.159 10.272);\\n    --color-rose-950: oklch(27.1% 0.105 12.094);\\n\\n    --color-slate-50: oklch(98.4% 0.003 247.858);\\n    --color-slate-100: oklch(96.8% 0.007 247.896);\\n    --color-slate-200: oklch(92.9% 0.013 255.508);\\n    --color-slate-300: oklch(86.9% 0.022 252.894);\\n    --color-slate-400: oklch(70.4% 0.04 256.788);\\n    --color-slate-500: oklch(55.4% 0.046 257.417);\\n    --color-slate-600: oklch(44.6% 0.043 257.281);\\n    --color-slate-700: oklch(37.2% 0.044 257.287);\\n    --color-slate-800: oklch(27.9% 0.041 260.031);\\n    --color-slate-900: oklch(20.8% 0.042 265.755);\\n    --color-slate-950: oklch(12.9% 0.042 264.695);\\n\\n    --color-gray-50: oklch(98.5% 0.002 247.839);\\n    --color-gray-100: oklch(96.7% 0.003 264.542);\\n    --color-gray-200: oklch(92.8% 0.006 264.531);\\n    --color-gray-300: oklch(87.2% 0.01 258.338);\\n    --color-gray-400: oklch(70.7% 0.022 261.325);\\n    --color-gray-500: oklch(55.1% 0.027 264.364);\\n    --color-gray-600: oklch(44.6% 0.03 256.802);\\n    --color-gray-700: oklch(37.3% 0.034 259.733);\\n    --color-gray-800: oklch(27.8% 0.033 256.848);\\n    --color-gray-900: oklch(21% 0.034 264.665);\\n    --color-gray-950: oklch(13% 0.028 261.692);\\n\\n    --color-zinc-50: oklch(98.5% 0 0);\\n    --color-zinc-100: oklch(96.7% 0.001 286.375);\\n    --color-zinc-200: oklch(92% 0.004 286.32);\\n    --color-zinc-300: oklch(87.1% 0.006 286.286);\\n    --color-zinc-400: oklch(70.5% 0.015 286.067);\\n    --color-zinc-500: oklch(55.2% 0.016 285.938);\\n    --color-zinc-600: oklch(44.2% 0.017 285.786);\\n    --color-zinc-700: oklch(37% 0.013 285.805);\\n    --color-zinc-800: oklch(27.4% 0.006 286.033);\\n    --color-zinc-900: oklch(21% 0.006 285.885);\\n    --color-zinc-950: oklch(14.1% 0.005 285.823);\\n\\n    --color-neutral-50: oklch(98.5% 0 0);\\n    --color-neutral-100: oklch(97% 0 0);\\n    --color-neutral-200: oklch(92.2% 0 0);\\n    --color-neutral-300: oklch(87% 0 0);\\n    --color-neutral-400: oklch(70.8% 0 0);\\n    --color-neutral-500: oklch(55.6% 0 0);\\n    --color-neutral-600: oklch(43.9% 0 0);\\n    --color-neutral-700: oklch(37.1% 0 0);\\n    --color-neutral-800: oklch(26.9% 0 0);\\n    --color-neutral-900: oklch(20.5% 0 0);\\n    --color-neutral-950: oklch(14.5% 0 0);\\n\\n    --color-stone-50: oklch(98.5% 0.001 106.423);\\n    --color-stone-100: oklch(97% 0.001 106.424);\\n    --color-stone-200: oklch(92.3% 0.003 48.717);\\n    --color-stone-300: oklch(86.9% 0.005 56.366);\\n    --color-stone-400: oklch(70.9% 0.01 56.259);\\n    --color-stone-500: oklch(55.3% 0.013 58.071);\\n    --color-stone-600: oklch(44.4% 0.011 73.639);\\n    --color-stone-700: oklch(37.4% 0.01 67.558);\\n    --color-stone-800: oklch(26.8% 0.007 34.298);\\n    --color-stone-900: oklch(21.6% 0.006 56.043);\\n    --color-stone-950: oklch(14.7% 0.004 49.25);\\n\\n    --color-black: #000;\\n    --color-white: #fff;\\n\\n    --spacing: 0.25rem;\\n\\n    --breakpoint-sm: 40rem;\\n    --breakpoint-md: 48rem;\\n    --breakpoint-lg: 64rem;\\n    --breakpoint-xl: 80rem;\\n    --breakpoint-2xl: 96rem;\\n\\n    --container-3xs: 16rem;\\n    --container-2xs: 18rem;\\n    --container-xs: 20rem;\\n    --container-sm: 24rem;\\n    --container-md: 28rem;\\n    --container-lg: 32rem;\\n    --container-xl: 36rem;\\n    --container-2xl: 42rem;\\n    --container-3xl: 48rem;\\n    --container-4xl: 56rem;\\n    --container-5xl: 64rem;\\n    --container-6xl: 72rem;\\n    --container-7xl: 80rem;\\n\\n    --text-xs: 0.75rem;\\n    --text-xs--line-height: calc(1 / 0.75);\\n    --text-sm: 0.875rem;\\n    --text-sm--line-height: calc(1.25 / 0.875);\\n    --text-base: 1rem;\\n    --text-base--line-height: calc(1.5 / 1);\\n    --text-lg: 1.125rem;\\n    --text-lg--line-height: calc(1.75 / 1.125);\\n    --text-xl: 1.25rem;\\n    --text-xl--line-height: calc(1.75 / 1.25);\\n    --text-2xl: 1.5rem;\\n    --text-2xl--line-height: calc(2 / 1.5);\\n    --text-3xl: 1.875rem;\\n    --text-3xl--line-height: calc(2.25 / 1.875);\\n    --text-4xl: 2.25rem;\\n    --text-4xl--line-height: calc(2.5 / 2.25);\\n    --text-5xl: 3rem;\\n    --text-5xl--line-height: 1;\\n    --text-6xl: 3.75rem;\\n    --text-6xl--line-height: 1;\\n    --text-7xl: 4.5rem;\\n    --text-7xl--line-height: 1;\\n    --text-8xl: 6rem;\\n    --text-8xl--line-height: 1;\\n    --text-9xl: 8rem;\\n    --text-9xl--line-height: 1;\\n\\n    --font-weight-thin: 100;\\n    --font-weight-extralight: 200;\\n    --font-weight-light: 300;\\n    --font-weight-normal: 400;\\n    --font-weight-medium: 500;\\n    --font-weight-semibold: 600;\\n    --font-weight-bold: 700;\\n    --font-weight-extrabold: 800;\\n    --font-weight-black: 900;\\n\\n    --tracking-tighter: -0.05em;\\n    --tracking-tight: -0.025em;\\n    --tracking-normal: 0em;\\n    --tracking-wide: 0.025em;\\n    --tracking-wider: 0.05em;\\n    --tracking-widest: 0.1em;\\n\\n    --leading-tight: 1.25;\\n    --leading-snug: 1.375;\\n    --leading-normal: 1.5;\\n    --leading-relaxed: 1.625;\\n    --leading-loose: 2;\\n\\n    --radius-xs: 0.125rem;\\n    --radius-sm: 0.25rem;\\n    --radius-md: 0.375rem;\\n    --radius-lg: 0.5rem;\\n    --radius-xl: 0.75rem;\\n    --radius-2xl: 1rem;\\n    --radius-3xl: 1.5rem;\\n    --radius-4xl: 2rem;\\n\\n    --shadow-2xs: 0 1px rgb(0 0 0 / 0.05);\\n    --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n    --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n    --shadow-md:\\n      0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n    --shadow-lg:\\n      0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n    --shadow-xl:\\n      0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\\n    --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\\n\\n    --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05);\\n    --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05);\\n    --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05);\\n\\n    --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05);\\n    --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15);\\n    --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);\\n    --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15);\\n    --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1);\\n    --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15);\\n\\n    --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / 0.15);\\n    --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / 0.2);\\n    --text-shadow-sm:\\n      0px 1px 0px rgb(0 0 0 / 0.075), 0px 1px 1px rgb(0 0 0 / 0.075),\\n      0px 2px 2px rgb(0 0 0 / 0.075);\\n    --text-shadow-md:\\n      0px 1px 1px rgb(0 0 0 / 0.1), 0px 1px 2px rgb(0 0 0 / 0.1),\\n      0px 2px 4px rgb(0 0 0 / 0.1);\\n    --text-shadow-lg:\\n      0px 1px 2px rgb(0 0 0 / 0.1), 0px 3px 2px rgb(0 0 0 / 0.1),\\n      0px 4px 8px rgb(0 0 0 / 0.1);\\n\\n    --ease-in: cubic-bezier(0.4, 0, 1, 1);\\n    --ease-out: cubic-bezier(0, 0, 0.2, 1);\\n    --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\\n\\n    --animate-spin: spin 1s linear infinite;\\n    --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\\n    --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\\n    --animate-bounce: bounce 1s infinite;\\n\\n    @keyframes spin {\\n      to {\\n        transform: rotate(360deg);\\n      }\\n    }\\n\\n    @keyframes ping {\\n      75%,\\n      100% {\\n        transform: scale(2);\\n        opacity: 0;\\n      }\\n    }\\n\\n    @keyframes pulse {\\n      50% {\\n        opacity: 0.5;\\n      }\\n    }\\n\\n    @keyframes bounce {\\n      0%,\\n      100% {\\n        transform: translateY(-25%);\\n        animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\\n      }\\n\\n      50% {\\n        transform: none;\\n        animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\\n      }\\n    }\\n\\n    --blur-xs: 4px;\\n    --blur-sm: 8px;\\n    --blur-md: 12px;\\n    --blur-lg: 16px;\\n    --blur-xl: 24px;\\n    --blur-2xl: 40px;\\n    --blur-3xl: 64px;\\n\\n    --perspective-dramatic: 100px;\\n    --perspective-near: 300px;\\n    --perspective-normal: 500px;\\n    --perspective-midrange: 800px;\\n    --perspective-distant: 1200px;\\n\\n    --aspect-video: 16 / 9;\\n\\n    --default-transition-duration: 150ms;\\n    --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n    --default-font-family: --theme(--font-sans, initial);\\n    --default-font-feature-settings: --theme(\\n      --font-sans--font-feature-settings,\\n      initial\\n    );\\n    --default-font-variation-settings: --theme(\\n      --font-sans--font-variation-settings,\\n      initial\\n    );\\n    --default-mono-font-family: --theme(--font-mono, initial);\\n    --default-mono-font-feature-settings: --theme(\\n      --font-mono--font-feature-settings,\\n      initial\\n    );\\n    --default-mono-font-variation-settings: --theme(\\n      --font-mono--font-variation-settings,\\n      initial\\n    );\\n  }\\n\\n  /* Deprecated */\\n  @theme default inline reference {\\n    --blur: 8px;\\n    --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n    --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\\n    --drop-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 1px 1px rgb(0 0 0 / 0.06);\\n    --radius: 0.25rem;\\n    --max-width-prose: 65ch;\\n  }\\n}\\n\\n@layer base {\\n  /*\\n  1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\\n  2. Remove default margins and padding\\n  3. Reset all borders.\\n*/\\n\\n  *,\\n  ::after,\\n  ::before,\\n  ::backdrop,\\n  ::file-selector-button {\\n    box-sizing: border-box; /* 1 */\\n    margin: 0; /* 2 */\\n    padding: 0; /* 2 */\\n    border: 0 solid; /* 3 */\\n  }\\n\\n  /*\\n  1. Use a consistent sensible line-height in all browsers.\\n  2. Prevent adjustments of font size after orientation changes in iOS.\\n  3. Use a more readable tab size.\\n  4. Use the user's configured `sans` font-family by default.\\n  5. Use the user's configured `sans` font-feature-settings by default.\\n  6. Use the user's configured `sans` font-variation-settings by default.\\n  7. Disable tap highlights on iOS.\\n*/\\n\\n  html,\\n  :host {\\n    line-height: 1.5; /* 1 */\\n    -webkit-text-size-adjust: 100%; /* 2 */\\n    tab-size: 4; /* 3 */\\n    font-family: --theme(\\n      --default-font-family,\\n      ui-sans-serif,\\n      system-ui,\\n      sans-serif,\\n      \\\"Apple Color Emoji\\\",\\n      \\\"Segoe UI Emoji\\\",\\n      \\\"Segoe UI Symbol\\\",\\n      \\\"Noto Color Emoji\\\"\\n    ); /* 4 */\\n    font-feature-settings: --theme(\\n      --default-font-feature-settings,\\n      normal\\n    ); /* 5 */\\n    font-variation-settings: --theme(\\n      --default-font-variation-settings,\\n      normal\\n    ); /* 6 */\\n    -webkit-tap-highlight-color: transparent; /* 7 */\\n  }\\n\\n  /*\\n  1. Add the correct height in Firefox.\\n  2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\\n  3. Reset the default border style to a 1px solid border.\\n*/\\n\\n  hr {\\n    height: 0; /* 1 */\\n    color: inherit; /* 2 */\\n    border-top-width: 1px; /* 3 */\\n  }\\n\\n  /*\\n  Add the correct text decoration in Chrome, Edge, and Safari.\\n*/\\n\\n  abbr:where([title]) {\\n    -webkit-text-decoration: underline dotted;\\n    text-decoration: underline dotted;\\n  }\\n\\n  /*\\n  Remove the default font size and weight for headings.\\n*/\\n\\n  h1,\\n  h2,\\n  h3,\\n  h4,\\n  h5,\\n  h6 {\\n    font-size: inherit;\\n    font-weight: inherit;\\n  }\\n\\n  /*\\n  Reset links to optimize for opt-in styling instead of opt-out.\\n*/\\n\\n  a {\\n    color: inherit;\\n    -webkit-text-decoration: inherit;\\n    text-decoration: inherit;\\n  }\\n\\n  /*\\n  Add the correct font weight in Edge and Safari.\\n*/\\n\\n  b,\\n  strong {\\n    font-weight: bolder;\\n  }\\n\\n  /*\\n  1. Use the user's configured `mono` font-family by default.\\n  2. Use the user's configured `mono` font-feature-settings by default.\\n  3. Use the user's configured `mono` font-variation-settings by default.\\n  4. Correct the odd `em` font sizing in all browsers.\\n*/\\n\\n  code,\\n  kbd,\\n  samp,\\n  pre {\\n    font-family: --theme(\\n      --default-mono-font-family,\\n      ui-monospace,\\n      SFMono-Regular,\\n      Menlo,\\n      Monaco,\\n      Consolas,\\n      \\\"Liberation Mono\\\",\\n      \\\"Courier New\\\",\\n      monospace\\n    ); /* 1 */\\n    font-feature-settings: --theme(\\n      --default-mono-font-feature-settings,\\n      normal\\n    ); /* 2 */\\n    font-variation-settings: --theme(\\n      --default-mono-font-variation-settings,\\n      normal\\n    ); /* 3 */\\n    font-size: 1em; /* 4 */\\n  }\\n\\n  /*\\n  Add the correct font size in all browsers.\\n*/\\n\\n  small {\\n    font-size: 80%;\\n  }\\n\\n  /*\\n  Prevent `sub` and `sup` elements from affecting the line height in all browsers.\\n*/\\n\\n  sub,\\n  sup {\\n    font-size: 75%;\\n    line-height: 0;\\n    position: relative;\\n    vertical-align: baseline;\\n  }\\n\\n  sub {\\n    bottom: -0.25em;\\n  }\\n\\n  sup {\\n    top: -0.5em;\\n  }\\n\\n  /*\\n  1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\\n  2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\\n  3. Remove gaps between table borders by default.\\n*/\\n\\n  table {\\n    text-indent: 0; /* 1 */\\n    border-color: inherit; /* 2 */\\n    border-collapse: collapse; /* 3 */\\n  }\\n\\n  /*\\n  Use the modern Firefox focus style for all focusable elements.\\n*/\\n\\n  :-moz-focusring {\\n    outline: auto;\\n  }\\n\\n  /*\\n  Add the correct vertical alignment in Chrome and Firefox.\\n*/\\n\\n  progress {\\n    vertical-align: baseline;\\n  }\\n\\n  /*\\n  Add the correct display in Chrome and Safari.\\n*/\\n\\n  summary {\\n    display: list-item;\\n  }\\n\\n  /*\\n  Make lists unstyled by default.\\n*/\\n\\n  ol,\\n  ul,\\n  menu {\\n    list-style: none;\\n  }\\n\\n  /*\\n  1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\\n  2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\\n      This can trigger a poorly considered lint error in some tools but is included by design.\\n*/\\n\\n  img,\\n  svg,\\n  video,\\n  canvas,\\n  audio,\\n  iframe,\\n  embed,\\n  object {\\n    display: block; /* 1 */\\n    vertical-align: middle; /* 2 */\\n  }\\n\\n  /*\\n  Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\\n*/\\n\\n  img,\\n  video {\\n    max-width: 100%;\\n    height: auto;\\n  }\\n\\n  /*\\n  1. Inherit font styles in all browsers.\\n  2. Remove border radius in all browsers.\\n  3. Remove background color in all browsers.\\n  4. Ensure consistent opacity for disabled states in all browsers.\\n*/\\n\\n  button,\\n  input,\\n  select,\\n  optgroup,\\n  textarea,\\n  ::file-selector-button {\\n    font: inherit; /* 1 */\\n    font-feature-settings: inherit; /* 1 */\\n    font-variation-settings: inherit; /* 1 */\\n    letter-spacing: inherit; /* 1 */\\n    color: inherit; /* 1 */\\n    border-radius: 0; /* 2 */\\n    background-color: transparent; /* 3 */\\n    opacity: 1; /* 4 */\\n  }\\n\\n  /*\\n  Restore default font weight.\\n*/\\n\\n  :where(select:is([multiple], [size])) optgroup {\\n    font-weight: bolder;\\n  }\\n\\n  /*\\n  Restore indentation.\\n*/\\n\\n  :where(select:is([multiple], [size])) optgroup option {\\n    padding-inline-start: 20px;\\n  }\\n\\n  /*\\n  Restore space after button.\\n*/\\n\\n  ::file-selector-button {\\n    margin-inline-end: 4px;\\n  }\\n\\n  /*\\n  Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\\n*/\\n\\n  ::placeholder {\\n    opacity: 1;\\n  }\\n\\n  /*\\n  Set the default placeholder color to a semi-transparent version of the current text color in browsers that do not\\n  crash when using `color-mix(…)` with `currentcolor`. (https://github.com/tailwindlabs/tailwindcss/issues/17194)\\n*/\\n\\n  @supports (not (-webkit-appearance: -apple-pay-button)) /* Not Safari */ or\\n    (contain-intrinsic-size: 1px) /* Safari 17+ */ {\\n    ::placeholder {\\n      color: color-mix(in oklab, currentcolor 50%, transparent);\\n    }\\n  }\\n\\n  /*\\n  Prevent resizing textareas horizontally by default.\\n*/\\n\\n  textarea {\\n    resize: vertical;\\n  }\\n\\n  /*\\n  Remove the inner padding in Chrome and Safari on macOS.\\n*/\\n\\n  ::-webkit-search-decoration {\\n    -webkit-appearance: none;\\n  }\\n\\n  /*\\n  1. Ensure date/time inputs have the same height when empty in iOS Safari.\\n  2. Ensure text alignment can be changed on date/time inputs in iOS Safari.\\n*/\\n\\n  ::-webkit-date-and-time-value {\\n    min-height: 1lh; /* 1 */\\n    text-align: inherit; /* 2 */\\n  }\\n\\n  /*\\n  Prevent height from changing on date/time inputs in macOS Safari when the input is set to `display: block`.\\n*/\\n\\n  ::-webkit-datetime-edit {\\n    display: inline-flex;\\n  }\\n\\n  /*\\n  Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers.\\n*/\\n\\n  ::-webkit-datetime-edit-fields-wrapper {\\n    padding: 0;\\n  }\\n\\n  ::-webkit-datetime-edit,\\n  ::-webkit-datetime-edit-year-field,\\n  ::-webkit-datetime-edit-month-field,\\n  ::-webkit-datetime-edit-day-field,\\n  ::-webkit-datetime-edit-hour-field,\\n  ::-webkit-datetime-edit-minute-field,\\n  ::-webkit-datetime-edit-second-field,\\n  ::-webkit-datetime-edit-millisecond-field,\\n  ::-webkit-datetime-edit-meridiem-field {\\n    padding-block: 0;\\n  }\\n\\n  /*\\n  Center dropdown marker shown on inputs with paired `<datalist>`s in Chrome. (https://github.com/tailwindlabs/tailwindcss/issues/18499)\\n*/\\n\\n  ::-webkit-calendar-picker-indicator {\\n    line-height: 1;\\n  }\\n\\n  /*\\n  Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\\n*/\\n\\n  :-moz-ui-invalid {\\n    box-shadow: none;\\n  }\\n\\n  /*\\n  Correct the inability to style the border radius in iOS Safari.\\n*/\\n\\n  button,\\n  input:where([type=\\\"button\\\"], [type=\\\"reset\\\"], [type=\\\"submit\\\"]),\\n  ::file-selector-button {\\n    appearance: button;\\n  }\\n\\n  /*\\n  Correct the cursor style of increment and decrement buttons in Safari.\\n*/\\n\\n  ::-webkit-inner-spin-button,\\n  ::-webkit-outer-spin-button {\\n    height: auto;\\n  }\\n\\n  /*\\n  Make elements with the HTML hidden attribute stay hidden by default.\\n*/\\n\\n  [hidden]:where(:not([hidden=\\\"until-found\\\"])) {\\n    display: none !important;\\n  }\\n}\\n\\n@layer utilities {\\n  @tailwind utilities;\\n}\\n\";\n;// ./node_modules/tailwindcss/preflight.css\nconst preflight_namespaceObject = \"/*\\n  1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\\n  2. Remove default margins and padding\\n  3. Reset all borders.\\n*/\\n\\n*,\\n::after,\\n::before,\\n::backdrop,\\n::file-selector-button {\\n  box-sizing: border-box; /* 1 */\\n  margin: 0; /* 2 */\\n  padding: 0; /* 2 */\\n  border: 0 solid; /* 3 */\\n}\\n\\n/*\\n  1. Use a consistent sensible line-height in all browsers.\\n  2. Prevent adjustments of font size after orientation changes in iOS.\\n  3. Use a more readable tab size.\\n  4. Use the user's configured `sans` font-family by default.\\n  5. Use the user's configured `sans` font-feature-settings by default.\\n  6. Use the user's configured `sans` font-variation-settings by default.\\n  7. Disable tap highlights on iOS.\\n*/\\n\\nhtml,\\n:host {\\n  line-height: 1.5; /* 1 */\\n  -webkit-text-size-adjust: 100%; /* 2 */\\n  tab-size: 4; /* 3 */\\n  font-family: --theme(\\n    --default-font-family,\\n    ui-sans-serif,\\n    system-ui,\\n    sans-serif,\\n    'Apple Color Emoji',\\n    'Segoe UI Emoji',\\n    'Segoe UI Symbol',\\n    'Noto Color Emoji'\\n  ); /* 4 */\\n  font-feature-settings: --theme(--default-font-feature-settings, normal); /* 5 */\\n  font-variation-settings: --theme(--default-font-variation-settings, normal); /* 6 */\\n  -webkit-tap-highlight-color: transparent; /* 7 */\\n}\\n\\n/*\\n  1. Add the correct height in Firefox.\\n  2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\\n  3. Reset the default border style to a 1px solid border.\\n*/\\n\\nhr {\\n  height: 0; /* 1 */\\n  color: inherit; /* 2 */\\n  border-top-width: 1px; /* 3 */\\n}\\n\\n/*\\n  Add the correct text decoration in Chrome, Edge, and Safari.\\n*/\\n\\nabbr:where([title]) {\\n  -webkit-text-decoration: underline dotted;\\n  text-decoration: underline dotted;\\n}\\n\\n/*\\n  Remove the default font size and weight for headings.\\n*/\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n  font-size: inherit;\\n  font-weight: inherit;\\n}\\n\\n/*\\n  Reset links to optimize for opt-in styling instead of opt-out.\\n*/\\n\\na {\\n  color: inherit;\\n  -webkit-text-decoration: inherit;\\n  text-decoration: inherit;\\n}\\n\\n/*\\n  Add the correct font weight in Edge and Safari.\\n*/\\n\\nb,\\nstrong {\\n  font-weight: bolder;\\n}\\n\\n/*\\n  1. Use the user's configured `mono` font-family by default.\\n  2. Use the user's configured `mono` font-feature-settings by default.\\n  3. Use the user's configured `mono` font-variation-settings by default.\\n  4. Correct the odd `em` font sizing in all browsers.\\n*/\\n\\ncode,\\nkbd,\\nsamp,\\npre {\\n  font-family: --theme(\\n    --default-mono-font-family,\\n    ui-monospace,\\n    SFMono-Regular,\\n    Menlo,\\n    Monaco,\\n    Consolas,\\n    'Liberation Mono',\\n    'Courier New',\\n    monospace\\n  ); /* 1 */\\n  font-feature-settings: --theme(--default-mono-font-feature-settings, normal); /* 2 */\\n  font-variation-settings: --theme(--default-mono-font-variation-settings, normal); /* 3 */\\n  font-size: 1em; /* 4 */\\n}\\n\\n/*\\n  Add the correct font size in all browsers.\\n*/\\n\\nsmall {\\n  font-size: 80%;\\n}\\n\\n/*\\n  Prevent `sub` and `sup` elements from affecting the line height in all browsers.\\n*/\\n\\nsub,\\nsup {\\n  font-size: 75%;\\n  line-height: 0;\\n  position: relative;\\n  vertical-align: baseline;\\n}\\n\\nsub {\\n  bottom: -0.25em;\\n}\\n\\nsup {\\n  top: -0.5em;\\n}\\n\\n/*\\n  1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\\n  2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\\n  3. Remove gaps between table borders by default.\\n*/\\n\\ntable {\\n  text-indent: 0; /* 1 */\\n  border-color: inherit; /* 2 */\\n  border-collapse: collapse; /* 3 */\\n}\\n\\n/*\\n  Use the modern Firefox focus style for all focusable elements.\\n*/\\n\\n:-moz-focusring {\\n  outline: auto;\\n}\\n\\n/*\\n  Add the correct vertical alignment in Chrome and Firefox.\\n*/\\n\\nprogress {\\n  vertical-align: baseline;\\n}\\n\\n/*\\n  Add the correct display in Chrome and Safari.\\n*/\\n\\nsummary {\\n  display: list-item;\\n}\\n\\n/*\\n  Make lists unstyled by default.\\n*/\\n\\nol,\\nul,\\nmenu {\\n  list-style: none;\\n}\\n\\n/*\\n  1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\\n  2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\\n      This can trigger a poorly considered lint error in some tools but is included by design.\\n*/\\n\\nimg,\\nsvg,\\nvideo,\\ncanvas,\\naudio,\\niframe,\\nembed,\\nobject {\\n  display: block; /* 1 */\\n  vertical-align: middle; /* 2 */\\n}\\n\\n/*\\n  Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\\n*/\\n\\nimg,\\nvideo {\\n  max-width: 100%;\\n  height: auto;\\n}\\n\\n/*\\n  1. Inherit font styles in all browsers.\\n  2. Remove border radius in all browsers.\\n  3. Remove background color in all browsers.\\n  4. Ensure consistent opacity for disabled states in all browsers.\\n*/\\n\\nbutton,\\ninput,\\nselect,\\noptgroup,\\ntextarea,\\n::file-selector-button {\\n  font: inherit; /* 1 */\\n  font-feature-settings: inherit; /* 1 */\\n  font-variation-settings: inherit; /* 1 */\\n  letter-spacing: inherit; /* 1 */\\n  color: inherit; /* 1 */\\n  border-radius: 0; /* 2 */\\n  background-color: transparent; /* 3 */\\n  opacity: 1; /* 4 */\\n}\\n\\n/*\\n  Restore default font weight.\\n*/\\n\\n:where(select:is([multiple], [size])) optgroup {\\n  font-weight: bolder;\\n}\\n\\n/*\\n  Restore indentation.\\n*/\\n\\n:where(select:is([multiple], [size])) optgroup option {\\n  padding-inline-start: 20px;\\n}\\n\\n/*\\n  Restore space after button.\\n*/\\n\\n::file-selector-button {\\n  margin-inline-end: 4px;\\n}\\n\\n/*\\n  Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\\n*/\\n\\n::placeholder {\\n  opacity: 1;\\n}\\n\\n/*\\n  Set the default placeholder color to a semi-transparent version of the current text color in browsers that do not\\n  crash when using `color-mix(…)` with `currentcolor`. (https://github.com/tailwindlabs/tailwindcss/issues/17194)\\n*/\\n\\n@supports (not (-webkit-appearance: -apple-pay-button)) /* Not Safari */ or\\n  (contain-intrinsic-size: 1px) /* Safari 17+ */ {\\n  ::placeholder {\\n    color: color-mix(in oklab, currentcolor 50%, transparent);\\n  }\\n}\\n\\n/*\\n  Prevent resizing textareas horizontally by default.\\n*/\\n\\ntextarea {\\n  resize: vertical;\\n}\\n\\n/*\\n  Remove the inner padding in Chrome and Safari on macOS.\\n*/\\n\\n::-webkit-search-decoration {\\n  -webkit-appearance: none;\\n}\\n\\n/*\\n  1. Ensure date/time inputs have the same height when empty in iOS Safari.\\n  2. Ensure text alignment can be changed on date/time inputs in iOS Safari.\\n*/\\n\\n::-webkit-date-and-time-value {\\n  min-height: 1lh; /* 1 */\\n  text-align: inherit; /* 2 */\\n}\\n\\n/*\\n  Prevent height from changing on date/time inputs in macOS Safari when the input is set to `display: block`.\\n*/\\n\\n::-webkit-datetime-edit {\\n  display: inline-flex;\\n}\\n\\n/*\\n  Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers.\\n*/\\n\\n::-webkit-datetime-edit-fields-wrapper {\\n  padding: 0;\\n}\\n\\n::-webkit-datetime-edit,\\n::-webkit-datetime-edit-year-field,\\n::-webkit-datetime-edit-month-field,\\n::-webkit-datetime-edit-day-field,\\n::-webkit-datetime-edit-hour-field,\\n::-webkit-datetime-edit-minute-field,\\n::-webkit-datetime-edit-second-field,\\n::-webkit-datetime-edit-millisecond-field,\\n::-webkit-datetime-edit-meridiem-field {\\n  padding-block: 0;\\n}\\n\\n/*\\n  Center dropdown marker shown on inputs with paired `<datalist>`s in Chrome. (https://github.com/tailwindlabs/tailwindcss/issues/18499)\\n*/\\n\\n::-webkit-calendar-picker-indicator {\\n  line-height: 1;\\n}\\n\\n/*\\n  Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\\n*/\\n\\n:-moz-ui-invalid {\\n  box-shadow: none;\\n}\\n\\n/*\\n  Correct the inability to style the border radius in iOS Safari.\\n*/\\n\\nbutton,\\ninput:where([type='button'], [type='reset'], [type='submit']),\\n::file-selector-button {\\n  appearance: button;\\n}\\n\\n/*\\n  Correct the cursor style of increment and decrement buttons in Safari.\\n*/\\n\\n::-webkit-inner-spin-button,\\n::-webkit-outer-spin-button {\\n  height: auto;\\n}\\n\\n/*\\n  Make elements with the HTML hidden attribute stay hidden by default.\\n*/\\n\\n[hidden]:where(:not([hidden='until-found'])) {\\n  display: none !important;\\n}\\n\";\n;// ./node_modules/tailwindcss/theme.css\nconst theme_namespaceObject = \"@theme default {\\n  --font-sans:\\n    ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\\n    'Noto Color Emoji';\\n  --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;\\n  --font-mono:\\n    ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',\\n    monospace;\\n\\n  --color-red-50: oklch(97.1% 0.013 17.38);\\n  --color-red-100: oklch(93.6% 0.032 17.717);\\n  --color-red-200: oklch(88.5% 0.062 18.334);\\n  --color-red-300: oklch(80.8% 0.114 19.571);\\n  --color-red-400: oklch(70.4% 0.191 22.216);\\n  --color-red-500: oklch(63.7% 0.237 25.331);\\n  --color-red-600: oklch(57.7% 0.245 27.325);\\n  --color-red-700: oklch(50.5% 0.213 27.518);\\n  --color-red-800: oklch(44.4% 0.177 26.899);\\n  --color-red-900: oklch(39.6% 0.141 25.723);\\n  --color-red-950: oklch(25.8% 0.092 26.042);\\n\\n  --color-orange-50: oklch(98% 0.016 73.684);\\n  --color-orange-100: oklch(95.4% 0.038 75.164);\\n  --color-orange-200: oklch(90.1% 0.076 70.697);\\n  --color-orange-300: oklch(83.7% 0.128 66.29);\\n  --color-orange-400: oklch(75% 0.183 55.934);\\n  --color-orange-500: oklch(70.5% 0.213 47.604);\\n  --color-orange-600: oklch(64.6% 0.222 41.116);\\n  --color-orange-700: oklch(55.3% 0.195 38.402);\\n  --color-orange-800: oklch(47% 0.157 37.304);\\n  --color-orange-900: oklch(40.8% 0.123 38.172);\\n  --color-orange-950: oklch(26.6% 0.079 36.259);\\n\\n  --color-amber-50: oklch(98.7% 0.022 95.277);\\n  --color-amber-100: oklch(96.2% 0.059 95.617);\\n  --color-amber-200: oklch(92.4% 0.12 95.746);\\n  --color-amber-300: oklch(87.9% 0.169 91.605);\\n  --color-amber-400: oklch(82.8% 0.189 84.429);\\n  --color-amber-500: oklch(76.9% 0.188 70.08);\\n  --color-amber-600: oklch(66.6% 0.179 58.318);\\n  --color-amber-700: oklch(55.5% 0.163 48.998);\\n  --color-amber-800: oklch(47.3% 0.137 46.201);\\n  --color-amber-900: oklch(41.4% 0.112 45.904);\\n  --color-amber-950: oklch(27.9% 0.077 45.635);\\n\\n  --color-yellow-50: oklch(98.7% 0.026 102.212);\\n  --color-yellow-100: oklch(97.3% 0.071 103.193);\\n  --color-yellow-200: oklch(94.5% 0.129 101.54);\\n  --color-yellow-300: oklch(90.5% 0.182 98.111);\\n  --color-yellow-400: oklch(85.2% 0.199 91.936);\\n  --color-yellow-500: oklch(79.5% 0.184 86.047);\\n  --color-yellow-600: oklch(68.1% 0.162 75.834);\\n  --color-yellow-700: oklch(55.4% 0.135 66.442);\\n  --color-yellow-800: oklch(47.6% 0.114 61.907);\\n  --color-yellow-900: oklch(42.1% 0.095 57.708);\\n  --color-yellow-950: oklch(28.6% 0.066 53.813);\\n\\n  --color-lime-50: oklch(98.6% 0.031 120.757);\\n  --color-lime-100: oklch(96.7% 0.067 122.328);\\n  --color-lime-200: oklch(93.8% 0.127 124.321);\\n  --color-lime-300: oklch(89.7% 0.196 126.665);\\n  --color-lime-400: oklch(84.1% 0.238 128.85);\\n  --color-lime-500: oklch(76.8% 0.233 130.85);\\n  --color-lime-600: oklch(64.8% 0.2 131.684);\\n  --color-lime-700: oklch(53.2% 0.157 131.589);\\n  --color-lime-800: oklch(45.3% 0.124 130.933);\\n  --color-lime-900: oklch(40.5% 0.101 131.063);\\n  --color-lime-950: oklch(27.4% 0.072 132.109);\\n\\n  --color-green-50: oklch(98.2% 0.018 155.826);\\n  --color-green-100: oklch(96.2% 0.044 156.743);\\n  --color-green-200: oklch(92.5% 0.084 155.995);\\n  --color-green-300: oklch(87.1% 0.15 154.449);\\n  --color-green-400: oklch(79.2% 0.209 151.711);\\n  --color-green-500: oklch(72.3% 0.219 149.579);\\n  --color-green-600: oklch(62.7% 0.194 149.214);\\n  --color-green-700: oklch(52.7% 0.154 150.069);\\n  --color-green-800: oklch(44.8% 0.119 151.328);\\n  --color-green-900: oklch(39.3% 0.095 152.535);\\n  --color-green-950: oklch(26.6% 0.065 152.934);\\n\\n  --color-emerald-50: oklch(97.9% 0.021 166.113);\\n  --color-emerald-100: oklch(95% 0.052 163.051);\\n  --color-emerald-200: oklch(90.5% 0.093 164.15);\\n  --color-emerald-300: oklch(84.5% 0.143 164.978);\\n  --color-emerald-400: oklch(76.5% 0.177 163.223);\\n  --color-emerald-500: oklch(69.6% 0.17 162.48);\\n  --color-emerald-600: oklch(59.6% 0.145 163.225);\\n  --color-emerald-700: oklch(50.8% 0.118 165.612);\\n  --color-emerald-800: oklch(43.2% 0.095 166.913);\\n  --color-emerald-900: oklch(37.8% 0.077 168.94);\\n  --color-emerald-950: oklch(26.2% 0.051 172.552);\\n\\n  --color-teal-50: oklch(98.4% 0.014 180.72);\\n  --color-teal-100: oklch(95.3% 0.051 180.801);\\n  --color-teal-200: oklch(91% 0.096 180.426);\\n  --color-teal-300: oklch(85.5% 0.138 181.071);\\n  --color-teal-400: oklch(77.7% 0.152 181.912);\\n  --color-teal-500: oklch(70.4% 0.14 182.503);\\n  --color-teal-600: oklch(60% 0.118 184.704);\\n  --color-teal-700: oklch(51.1% 0.096 186.391);\\n  --color-teal-800: oklch(43.7% 0.078 188.216);\\n  --color-teal-900: oklch(38.6% 0.063 188.416);\\n  --color-teal-950: oklch(27.7% 0.046 192.524);\\n\\n  --color-cyan-50: oklch(98.4% 0.019 200.873);\\n  --color-cyan-100: oklch(95.6% 0.045 203.388);\\n  --color-cyan-200: oklch(91.7% 0.08 205.041);\\n  --color-cyan-300: oklch(86.5% 0.127 207.078);\\n  --color-cyan-400: oklch(78.9% 0.154 211.53);\\n  --color-cyan-500: oklch(71.5% 0.143 215.221);\\n  --color-cyan-600: oklch(60.9% 0.126 221.723);\\n  --color-cyan-700: oklch(52% 0.105 223.128);\\n  --color-cyan-800: oklch(45% 0.085 224.283);\\n  --color-cyan-900: oklch(39.8% 0.07 227.392);\\n  --color-cyan-950: oklch(30.2% 0.056 229.695);\\n\\n  --color-sky-50: oklch(97.7% 0.013 236.62);\\n  --color-sky-100: oklch(95.1% 0.026 236.824);\\n  --color-sky-200: oklch(90.1% 0.058 230.902);\\n  --color-sky-300: oklch(82.8% 0.111 230.318);\\n  --color-sky-400: oklch(74.6% 0.16 232.661);\\n  --color-sky-500: oklch(68.5% 0.169 237.323);\\n  --color-sky-600: oklch(58.8% 0.158 241.966);\\n  --color-sky-700: oklch(50% 0.134 242.749);\\n  --color-sky-800: oklch(44.3% 0.11 240.79);\\n  --color-sky-900: oklch(39.1% 0.09 240.876);\\n  --color-sky-950: oklch(29.3% 0.066 243.157);\\n\\n  --color-blue-50: oklch(97% 0.014 254.604);\\n  --color-blue-100: oklch(93.2% 0.032 255.585);\\n  --color-blue-200: oklch(88.2% 0.059 254.128);\\n  --color-blue-300: oklch(80.9% 0.105 251.813);\\n  --color-blue-400: oklch(70.7% 0.165 254.624);\\n  --color-blue-500: oklch(62.3% 0.214 259.815);\\n  --color-blue-600: oklch(54.6% 0.245 262.881);\\n  --color-blue-700: oklch(48.8% 0.243 264.376);\\n  --color-blue-800: oklch(42.4% 0.199 265.638);\\n  --color-blue-900: oklch(37.9% 0.146 265.522);\\n  --color-blue-950: oklch(28.2% 0.091 267.935);\\n\\n  --color-indigo-50: oklch(96.2% 0.018 272.314);\\n  --color-indigo-100: oklch(93% 0.034 272.788);\\n  --color-indigo-200: oklch(87% 0.065 274.039);\\n  --color-indigo-300: oklch(78.5% 0.115 274.713);\\n  --color-indigo-400: oklch(67.3% 0.182 276.935);\\n  --color-indigo-500: oklch(58.5% 0.233 277.117);\\n  --color-indigo-600: oklch(51.1% 0.262 276.966);\\n  --color-indigo-700: oklch(45.7% 0.24 277.023);\\n  --color-indigo-800: oklch(39.8% 0.195 277.366);\\n  --color-indigo-900: oklch(35.9% 0.144 278.697);\\n  --color-indigo-950: oklch(25.7% 0.09 281.288);\\n\\n  --color-violet-50: oklch(96.9% 0.016 293.756);\\n  --color-violet-100: oklch(94.3% 0.029 294.588);\\n  --color-violet-200: oklch(89.4% 0.057 293.283);\\n  --color-violet-300: oklch(81.1% 0.111 293.571);\\n  --color-violet-400: oklch(70.2% 0.183 293.541);\\n  --color-violet-500: oklch(60.6% 0.25 292.717);\\n  --color-violet-600: oklch(54.1% 0.281 293.009);\\n  --color-violet-700: oklch(49.1% 0.27 292.581);\\n  --color-violet-800: oklch(43.2% 0.232 292.759);\\n  --color-violet-900: oklch(38% 0.189 293.745);\\n  --color-violet-950: oklch(28.3% 0.141 291.089);\\n\\n  --color-purple-50: oklch(97.7% 0.014 308.299);\\n  --color-purple-100: oklch(94.6% 0.033 307.174);\\n  --color-purple-200: oklch(90.2% 0.063 306.703);\\n  --color-purple-300: oklch(82.7% 0.119 306.383);\\n  --color-purple-400: oklch(71.4% 0.203 305.504);\\n  --color-purple-500: oklch(62.7% 0.265 303.9);\\n  --color-purple-600: oklch(55.8% 0.288 302.321);\\n  --color-purple-700: oklch(49.6% 0.265 301.924);\\n  --color-purple-800: oklch(43.8% 0.218 303.724);\\n  --color-purple-900: oklch(38.1% 0.176 304.987);\\n  --color-purple-950: oklch(29.1% 0.149 302.717);\\n\\n  --color-fuchsia-50: oklch(97.7% 0.017 320.058);\\n  --color-fuchsia-100: oklch(95.2% 0.037 318.852);\\n  --color-fuchsia-200: oklch(90.3% 0.076 319.62);\\n  --color-fuchsia-300: oklch(83.3% 0.145 321.434);\\n  --color-fuchsia-400: oklch(74% 0.238 322.16);\\n  --color-fuchsia-500: oklch(66.7% 0.295 322.15);\\n  --color-fuchsia-600: oklch(59.1% 0.293 322.896);\\n  --color-fuchsia-700: oklch(51.8% 0.253 323.949);\\n  --color-fuchsia-800: oklch(45.2% 0.211 324.591);\\n  --color-fuchsia-900: oklch(40.1% 0.17 325.612);\\n  --color-fuchsia-950: oklch(29.3% 0.136 325.661);\\n\\n  --color-pink-50: oklch(97.1% 0.014 343.198);\\n  --color-pink-100: oklch(94.8% 0.028 342.258);\\n  --color-pink-200: oklch(89.9% 0.061 343.231);\\n  --color-pink-300: oklch(82.3% 0.12 346.018);\\n  --color-pink-400: oklch(71.8% 0.202 349.761);\\n  --color-pink-500: oklch(65.6% 0.241 354.308);\\n  --color-pink-600: oklch(59.2% 0.249 0.584);\\n  --color-pink-700: oklch(52.5% 0.223 3.958);\\n  --color-pink-800: oklch(45.9% 0.187 3.815);\\n  --color-pink-900: oklch(40.8% 0.153 2.432);\\n  --color-pink-950: oklch(28.4% 0.109 3.907);\\n\\n  --color-rose-50: oklch(96.9% 0.015 12.422);\\n  --color-rose-100: oklch(94.1% 0.03 12.58);\\n  --color-rose-200: oklch(89.2% 0.058 10.001);\\n  --color-rose-300: oklch(81% 0.117 11.638);\\n  --color-rose-400: oklch(71.2% 0.194 13.428);\\n  --color-rose-500: oklch(64.5% 0.246 16.439);\\n  --color-rose-600: oklch(58.6% 0.253 17.585);\\n  --color-rose-700: oklch(51.4% 0.222 16.935);\\n  --color-rose-800: oklch(45.5% 0.188 13.697);\\n  --color-rose-900: oklch(41% 0.159 10.272);\\n  --color-rose-950: oklch(27.1% 0.105 12.094);\\n\\n  --color-slate-50: oklch(98.4% 0.003 247.858);\\n  --color-slate-100: oklch(96.8% 0.007 247.896);\\n  --color-slate-200: oklch(92.9% 0.013 255.508);\\n  --color-slate-300: oklch(86.9% 0.022 252.894);\\n  --color-slate-400: oklch(70.4% 0.04 256.788);\\n  --color-slate-500: oklch(55.4% 0.046 257.417);\\n  --color-slate-600: oklch(44.6% 0.043 257.281);\\n  --color-slate-700: oklch(37.2% 0.044 257.287);\\n  --color-slate-800: oklch(27.9% 0.041 260.031);\\n  --color-slate-900: oklch(20.8% 0.042 265.755);\\n  --color-slate-950: oklch(12.9% 0.042 264.695);\\n\\n  --color-gray-50: oklch(98.5% 0.002 247.839);\\n  --color-gray-100: oklch(96.7% 0.003 264.542);\\n  --color-gray-200: oklch(92.8% 0.006 264.531);\\n  --color-gray-300: oklch(87.2% 0.01 258.338);\\n  --color-gray-400: oklch(70.7% 0.022 261.325);\\n  --color-gray-500: oklch(55.1% 0.027 264.364);\\n  --color-gray-600: oklch(44.6% 0.03 256.802);\\n  --color-gray-700: oklch(37.3% 0.034 259.733);\\n  --color-gray-800: oklch(27.8% 0.033 256.848);\\n  --color-gray-900: oklch(21% 0.034 264.665);\\n  --color-gray-950: oklch(13% 0.028 261.692);\\n\\n  --color-zinc-50: oklch(98.5% 0 0);\\n  --color-zinc-100: oklch(96.7% 0.001 286.375);\\n  --color-zinc-200: oklch(92% 0.004 286.32);\\n  --color-zinc-300: oklch(87.1% 0.006 286.286);\\n  --color-zinc-400: oklch(70.5% 0.015 286.067);\\n  --color-zinc-500: oklch(55.2% 0.016 285.938);\\n  --color-zinc-600: oklch(44.2% 0.017 285.786);\\n  --color-zinc-700: oklch(37% 0.013 285.805);\\n  --color-zinc-800: oklch(27.4% 0.006 286.033);\\n  --color-zinc-900: oklch(21% 0.006 285.885);\\n  --color-zinc-950: oklch(14.1% 0.005 285.823);\\n\\n  --color-neutral-50: oklch(98.5% 0 0);\\n  --color-neutral-100: oklch(97% 0 0);\\n  --color-neutral-200: oklch(92.2% 0 0);\\n  --color-neutral-300: oklch(87% 0 0);\\n  --color-neutral-400: oklch(70.8% 0 0);\\n  --color-neutral-500: oklch(55.6% 0 0);\\n  --color-neutral-600: oklch(43.9% 0 0);\\n  --color-neutral-700: oklch(37.1% 0 0);\\n  --color-neutral-800: oklch(26.9% 0 0);\\n  --color-neutral-900: oklch(20.5% 0 0);\\n  --color-neutral-950: oklch(14.5% 0 0);\\n\\n  --color-stone-50: oklch(98.5% 0.001 106.423);\\n  --color-stone-100: oklch(97% 0.001 106.424);\\n  --color-stone-200: oklch(92.3% 0.003 48.717);\\n  --color-stone-300: oklch(86.9% 0.005 56.366);\\n  --color-stone-400: oklch(70.9% 0.01 56.259);\\n  --color-stone-500: oklch(55.3% 0.013 58.071);\\n  --color-stone-600: oklch(44.4% 0.011 73.639);\\n  --color-stone-700: oklch(37.4% 0.01 67.558);\\n  --color-stone-800: oklch(26.8% 0.007 34.298);\\n  --color-stone-900: oklch(21.6% 0.006 56.043);\\n  --color-stone-950: oklch(14.7% 0.004 49.25);\\n\\n  --color-black: #000;\\n  --color-white: #fff;\\n\\n  --spacing: 0.25rem;\\n\\n  --breakpoint-sm: 40rem;\\n  --breakpoint-md: 48rem;\\n  --breakpoint-lg: 64rem;\\n  --breakpoint-xl: 80rem;\\n  --breakpoint-2xl: 96rem;\\n\\n  --container-3xs: 16rem;\\n  --container-2xs: 18rem;\\n  --container-xs: 20rem;\\n  --container-sm: 24rem;\\n  --container-md: 28rem;\\n  --container-lg: 32rem;\\n  --container-xl: 36rem;\\n  --container-2xl: 42rem;\\n  --container-3xl: 48rem;\\n  --container-4xl: 56rem;\\n  --container-5xl: 64rem;\\n  --container-6xl: 72rem;\\n  --container-7xl: 80rem;\\n\\n  --text-xs: 0.75rem;\\n  --text-xs--line-height: calc(1 / 0.75);\\n  --text-sm: 0.875rem;\\n  --text-sm--line-height: calc(1.25 / 0.875);\\n  --text-base: 1rem;\\n  --text-base--line-height: calc(1.5 / 1);\\n  --text-lg: 1.125rem;\\n  --text-lg--line-height: calc(1.75 / 1.125);\\n  --text-xl: 1.25rem;\\n  --text-xl--line-height: calc(1.75 / 1.25);\\n  --text-2xl: 1.5rem;\\n  --text-2xl--line-height: calc(2 / 1.5);\\n  --text-3xl: 1.875rem;\\n  --text-3xl--line-height: calc(2.25 / 1.875);\\n  --text-4xl: 2.25rem;\\n  --text-4xl--line-height: calc(2.5 / 2.25);\\n  --text-5xl: 3rem;\\n  --text-5xl--line-height: 1;\\n  --text-6xl: 3.75rem;\\n  --text-6xl--line-height: 1;\\n  --text-7xl: 4.5rem;\\n  --text-7xl--line-height: 1;\\n  --text-8xl: 6rem;\\n  --text-8xl--line-height: 1;\\n  --text-9xl: 8rem;\\n  --text-9xl--line-height: 1;\\n\\n  --font-weight-thin: 100;\\n  --font-weight-extralight: 200;\\n  --font-weight-light: 300;\\n  --font-weight-normal: 400;\\n  --font-weight-medium: 500;\\n  --font-weight-semibold: 600;\\n  --font-weight-bold: 700;\\n  --font-weight-extrabold: 800;\\n  --font-weight-black: 900;\\n\\n  --tracking-tighter: -0.05em;\\n  --tracking-tight: -0.025em;\\n  --tracking-normal: 0em;\\n  --tracking-wide: 0.025em;\\n  --tracking-wider: 0.05em;\\n  --tracking-widest: 0.1em;\\n\\n  --leading-tight: 1.25;\\n  --leading-snug: 1.375;\\n  --leading-normal: 1.5;\\n  --leading-relaxed: 1.625;\\n  --leading-loose: 2;\\n\\n  --radius-xs: 0.125rem;\\n  --radius-sm: 0.25rem;\\n  --radius-md: 0.375rem;\\n  --radius-lg: 0.5rem;\\n  --radius-xl: 0.75rem;\\n  --radius-2xl: 1rem;\\n  --radius-3xl: 1.5rem;\\n  --radius-4xl: 2rem;\\n\\n  --shadow-2xs: 0 1px rgb(0 0 0 / 0.05);\\n  --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n  --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\\n  --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\\n\\n  --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05);\\n  --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05);\\n  --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05);\\n\\n  --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05);\\n  --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15);\\n  --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);\\n  --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15);\\n  --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1);\\n  --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15);\\n\\n  --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / 0.15);\\n  --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / 0.2);\\n  --text-shadow-sm:\\n    0px 1px 0px rgb(0 0 0 / 0.075), 0px 1px 1px rgb(0 0 0 / 0.075), 0px 2px 2px rgb(0 0 0 / 0.075);\\n  --text-shadow-md:\\n    0px 1px 1px rgb(0 0 0 / 0.1), 0px 1px 2px rgb(0 0 0 / 0.1), 0px 2px 4px rgb(0 0 0 / 0.1);\\n  --text-shadow-lg:\\n    0px 1px 2px rgb(0 0 0 / 0.1), 0px 3px 2px rgb(0 0 0 / 0.1), 0px 4px 8px rgb(0 0 0 / 0.1);\\n\\n  --ease-in: cubic-bezier(0.4, 0, 1, 1);\\n  --ease-out: cubic-bezier(0, 0, 0.2, 1);\\n  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\\n\\n  --animate-spin: spin 1s linear infinite;\\n  --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\\n  --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\\n  --animate-bounce: bounce 1s infinite;\\n\\n  @keyframes spin {\\n    to {\\n      transform: rotate(360deg);\\n    }\\n  }\\n\\n  @keyframes ping {\\n    75%,\\n    100% {\\n      transform: scale(2);\\n      opacity: 0;\\n    }\\n  }\\n\\n  @keyframes pulse {\\n    50% {\\n      opacity: 0.5;\\n    }\\n  }\\n\\n  @keyframes bounce {\\n    0%,\\n    100% {\\n      transform: translateY(-25%);\\n      animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\\n    }\\n\\n    50% {\\n      transform: none;\\n      animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\\n    }\\n  }\\n\\n  --blur-xs: 4px;\\n  --blur-sm: 8px;\\n  --blur-md: 12px;\\n  --blur-lg: 16px;\\n  --blur-xl: 24px;\\n  --blur-2xl: 40px;\\n  --blur-3xl: 64px;\\n\\n  --perspective-dramatic: 100px;\\n  --perspective-near: 300px;\\n  --perspective-normal: 500px;\\n  --perspective-midrange: 800px;\\n  --perspective-distant: 1200px;\\n\\n  --aspect-video: 16 / 9;\\n\\n  --default-transition-duration: 150ms;\\n  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n  --default-font-family: --theme(--font-sans, initial);\\n  --default-font-feature-settings: --theme(--font-sans--font-feature-settings, initial);\\n  --default-font-variation-settings: --theme(--font-sans--font-variation-settings, initial);\\n  --default-mono-font-family: --theme(--font-mono, initial);\\n  --default-mono-font-feature-settings: --theme(--font-mono--font-feature-settings, initial);\\n  --default-mono-font-variation-settings: --theme(--font-mono--font-variation-settings, initial);\\n}\\n\\n/* Deprecated */\\n@theme default inline reference {\\n  --blur: 8px;\\n  --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n  --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\\n  --drop-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 1px 1px rgb(0 0 0 / 0.06);\\n  --radius: 0.25rem;\\n  --max-width-prose: 65ch;\\n}\\n\";\n;// ./node_modules/tailwindcss/utilities.css\nconst utilities_namespaceObject = \"@tailwind utilities;\\n\";\n;// ./utils/tailwind-compiler.ts\n\n\n\n// @ts-expect-error - these are being imported as strings\n\n// @ts-expect-error - these are being imported as strings\n\n// @ts-expect-error - these are being imported as strings\n\n// @ts-expect-error - these are being imported as strings\n\n/*\n * @note: This is mostly copied from @tailwindcss/browser\n */\nasync function loadStylesheet(id, base) {\n    function load() {\n        if (id === 'tailwindcss') {\n            return {\n                base,\n                content: tailwindcss_namespaceObject,\n                path: '',\n            };\n        }\n        else if (id === 'tailwindcss/preflight' || id === 'tailwindcss/preflight.css' || id === './preflight.css') {\n            return {\n                base,\n                content: preflight_namespaceObject,\n                path: '',\n            };\n        }\n        else if (id === 'tailwindcss/theme' || id === 'tailwindcss/theme.css' || id === './theme.css') {\n            return {\n                base,\n                content: theme_namespaceObject,\n                path: '',\n            };\n        }\n        else if (id === 'tailwindcss/utilities' || id === 'tailwindcss/utilities.css' || id === './utilities.css') {\n            return {\n                base,\n                content: utilities_namespaceObject,\n                path: '',\n            };\n        }\n        throw new Error(`The browser build does not support @import for \"${id}\"`);\n    }\n    const sheet = load();\n    return sheet;\n}\nasync function loadModule() {\n    throw new Error('The browser build does not support plugins or config files.');\n}\nasync function createCompiler({ darkModeDataAttribute }) {\n    let css = `\n@layer theme, base, components, utilities;\n\n@import \"tailwindcss/theme.css\" layer(theme);\n@import \"tailwindcss/utilities.css\" layer(utilities);\n`;\n    if (darkModeDataAttribute) {\n        css += `\n\n@custom-variant dark (&:where([${darkModeDataAttribute}=dark], [${darkModeDataAttribute}=dark] *));`;\n    }\n    return Hu(css, {\n        base: '/',\n        loadStylesheet,\n        loadModule,\n    });\n}\nasync function tailwindCompiler(classes, { prefix, darkModeDataAttribute }) {\n    const compiler = await createCompiler({ darkModeDataAttribute });\n    const css = compiler.build(Array.from(classes));\n    return lib_postcss([postcss_prefix_selector_default()({ prefix })]).process(css, { from: undefined });\n}\n\n;// ./components/TailwindStyle/index.tsx\n\n\n\nconst traverse = (node, callback) => {\n    callback(node);\n    node.childNodes.forEach(child => {\n        traverse(child, callback);\n    });\n};\nconst TailwindStyle = ({ children, darkModeDataAttribute }) => {\n    const [stylesheet, setStylesheet] = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState)('');\n    const classesSet = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useRef)(new Set());\n    const ref = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useRef)(null);\n    const [classes, setClasses] = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState)([]);\n    const addClasses = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useCallback)((element) => {\n        if (!(element instanceof HTMLElement))\n            return;\n        element.classList.forEach(className => {\n            classesSet.current.add(className);\n        });\n    }, []);\n    /*\n     * @note: regenerate stylesheet\n     */\n    (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {\n        const run = async () => {\n            if (classes.length === 0) {\n                setStylesheet('');\n                return;\n            }\n            const sheet = await tailwindCompiler(classes, {\n                prefix: `.${tailwindPrefix}`,\n                darkModeDataAttribute,\n            });\n            /* @note: don't insert an empty stylesheet */\n            if (sheet.css.match(/^@layer utilities;/m))\n                return;\n            setStylesheet(sheet.css);\n        };\n        run();\n    }, [classes, darkModeDataAttribute]);\n    /*\n     * @note: execute once on load\n     */\n    (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {\n        if (!ref.current)\n            return;\n        ref.current.parentElement.querySelectorAll(`.${tailwindPrefix}`).forEach(child => traverse(child, addClasses));\n        setClasses(Array.from(classesSet.current));\n    }, [addClasses]);\n    /*\n     * @note: observe for changes\n     */\n    (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {\n        if (!ref.current)\n            return;\n        const observer = new MutationObserver((records) => {\n            let shouldUpdate = false;\n            records.forEach(record => {\n                if (record.type === 'childList') {\n                    record.addedNodes.forEach(node => {\n                        if (!(node instanceof HTMLElement) || !node.classList.contains(tailwindPrefix))\n                            return;\n                        traverse(node, addClasses);\n                        shouldUpdate = true;\n                    });\n                }\n                else if (record.type === 'attributes') {\n                    if (record.attributeName !== 'class' || !(record.target instanceof HTMLElement))\n                        return;\n                    addClasses(record.target);\n                    shouldUpdate = true;\n                }\n                if (shouldUpdate) {\n                    setClasses(Array.from(classesSet.current));\n                }\n            });\n        });\n        observer.observe(ref.current.parentElement, {\n            subtree: true,\n            childList: true,\n            attributes: true,\n            attributeFilter: ['class'],\n        });\n        // eslint-disable-next-line consistent-return\n        return () => observer.disconnect();\n    }, [addClasses]);\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement((external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default()).Fragment, null,\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"style\", { ref: ref, \"data-tailwind-stylesheet\": true }, stylesheet),\n        children));\n};\n/* harmony default export */ const components_TailwindStyle = (TailwindStyle);\n\n;// ./components/Recipe.tsx\n\n// We render a placeholder in this library, as the actual implemenation is\n// deeply tied to the main app\nconst Recipe = () => {\n    const style = {\n        height: '50px',\n        border: '1px solid var(--color-border-default, rgba(black, 0.1))',\n        borderRadius: 'var(--border-radius-lg, 7.5px)',\n        minWidth: '230px',\n        display: 'inline-flex',\n        padding: '10px',\n    };\n    const placeholderStyle = {\n        borderRadius: 'var(--border-radius-lg, 7.5px)',\n        backgroundColor: 'var(--color-skeleton, #384248)',\n    };\n    const avatarStyle = {\n        ...placeholderStyle,\n        height: '30px',\n        width: '30px',\n    };\n    const lineStyle = {\n        ...placeholderStyle,\n        height: '12px',\n        width: '150px',\n        margin: '0 15px',\n    };\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", null,\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: style },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: avatarStyle }),\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", null,\n                external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: { ...lineStyle, marginBottom: '6px' } }),\n                external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { style: { ...lineStyle, width: '75px' } })))));\n};\n/* harmony default export */ const components_Recipe = (Recipe);\n\n;// ./components/PostmanRunButton/index.tsx\n\nconst PostmanRunButton = ({ collectionId = '', // Add your collection ID here\ncollectionUrl = '', // Add your collection URL here\nvisibility = 'public', action = 'collection/fork', }) => {\n    (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {\n        // Only run on client-side\n        if (typeof window !== 'undefined') {\n            const scriptFunction = function noIdeaWhatThisShouldBeCalledOrDoesOne(p, o, s, t, m) {\n                if (!p[s]) {\n                    p[s] = function noIdeaWhatThisShouldBeCalledOrDoesTwo(...args) {\n                        const postmanRunObject = p[t] || (p[t] = []);\n                        postmanRunObject.push(args);\n                    };\n                }\n                if (!o.getElementById(s + t)) {\n                    const scriptElement = o.createElement('script');\n                    scriptElement.id = s + t;\n                    scriptElement.async = 1;\n                    scriptElement.src = m;\n                    o.getElementsByTagName('head')[0].appendChild(scriptElement);\n                }\n            };\n            // Execute the script function directly\n            scriptFunction(window, document, '_pm', 'PostmanRunObject', 'https://run.pstmn.io/button.js');\n            return () => {\n                // Cleanup if needed\n                const scriptElement = document.getElementById('_pmPostmanRunObject');\n                if (scriptElement)\n                    document.head.removeChild(scriptElement);\n            };\n        }\n        return undefined;\n    }, []);\n    return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"my-4\" },\n        external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(\"div\", { className: \"postman-run-button\", \"data-postman-action\": action, \"data-postman-collection-url\": collectionUrl, \"data-postman-var-1\": collectionId, \"data-postman-visibility\": visibility })));\n};\n/* harmony default export */ const components_PostmanRunButton = (PostmanRunButton);\n\n;// ./components/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.filter.js\nvar es6_array_filter = __webpack_require__(9813);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(9087);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(8872);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.symbol.js\nvar es6_symbol = __webpack_require__(9650);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js\nvar es6_number_constructor = __webpack_require__(4509);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.define-property.js\nvar es6_object_define_property = __webpack_require__(6064);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(8647);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js\nvar es6_object_get_own_property_descriptor = __webpack_require__(2642);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.for-each.js\nvar es6_array_for_each = __webpack_require__(3504);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\nvar es7_object_get_own_property_descriptors = __webpack_require__(4614);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.define-properties.js\nvar es6_object_define_properties = __webpack_require__(7067);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.iterator.js\nvar es6_string_iterator = __webpack_require__(2975);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.to-string.js\nvar es6_object_to_string = __webpack_require__(7482);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(5165);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(5890);\n;// ./options.js\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar options = {\n  alwaysThrow: false,\n  compatibilityMode: false,\n  copyButtons: true,\n  correctnewlines: false,\n  markdownOptions: {\n    fences: true,\n    commonmark: true,\n    gfm: true,\n    ruleSpaces: false,\n    listItemIndent: '1',\n    spacedTable: true,\n    paddedTable: true\n  },\n  lazyImages: true,\n  normalize: true,\n  safeMode: false,\n  settings: {\n    position: false\n  },\n  theme: 'light'\n};\n\n/**\n * @note disabling `newline`, `paragraph`, or `text` tokenizers trips Remark into an infinite loop!\n */\nvar blocks = [\n// 'newline',\n'indentedCode', 'fencedCode', 'blockquote', 'atxHeading', 'thematicBreak', 'list', 'setextHeading', 'html', 'footnote', 'definition', 'table'\n// 'paragraph',\n];\nvar inlines = ['escape', 'autoLink', 'url', 'html', 'link', 'reference', 'strong', 'emphasis', 'deletion', 'code', 'break'\n// 'text',\n];\nvar toBeDecorated = {\n  inlines: inlines.filter(function (i) {\n    return !['link', 'reference'].includes(i);\n  }),\n  blocks: []\n};\nvar disableTokenizers = {\n  inlines: {\n    disableTokenizers: {\n      inline: toBeDecorated.inlines,\n      block: toBeDecorated.blocks\n    }\n  },\n  blocks: {\n    disableTokenizers: {\n      inline: inlines.filter(function (i) {\n        return !toBeDecorated.inlines.includes(i);\n      }),\n      block: blocks.filter(function (b) {\n        return !toBeDecorated.blocks.includes(b);\n      })\n    }\n  }\n};\nvar parseOptions = function parseOptions() {\n  var userOpts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var opts = _objectSpread(_objectSpread({}, options), userOpts);\n  if (opts.disableTokenizers in disableTokenizers) {\n    opts = _objectSpread(_objectSpread({}, opts), disableTokenizers[opts.disableTokenizers]);\n  }\n  // @note: commenting out for now. While doing dev for @readme/editor, I would\n  // like fine-grained control of which tokenizers we are using. We might to\n  // remove that at some point?\n  // } else if (opts.disableTokenizers) {\n  // throw new Error(\n  // `opts.disableTokenizers \"${opts.disableTokenizers}\" not one of \"${Object.keys(disableTokenizers)}\"`\n  // );\n  // }\n\n  return opts;\n};\n\n;// ./node_modules/github-slugger/regex.js\n// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nconst regex = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n\n;// ./node_modules/github-slugger/index.js\n\n\nconst own = Object.hasOwnProperty\n\n/**\n * Slugger.\n */\nclass BananaSlug {\n  /**\n   * Create a new slug class.\n   */\n  constructor () {\n    /** @type {Record<string, number>} */\n    // eslint-disable-next-line no-unused-expressions\n    this.occurrences\n\n    this.reset()\n  }\n\n  /**\n   * Generate a unique slug.\n  *\n  * Tracks previously generated slugs: repeated calls with the same value\n  * will result in different slugs.\n  * Use the `slug` function to get same slugs.\n   *\n   * @param  {string} value\n   *   String of text to slugify\n   * @param  {boolean} [maintainCase=false]\n   *   Keep the current case, otherwise make all lowercase\n   * @return {string}\n   *   A unique slug string\n   */\n  slug (value, maintainCase) {\n    const self = this\n    let result = slug(value, maintainCase === true)\n    const originalSlug = result\n\n    while (own.call(self.occurrences, result)) {\n      self.occurrences[originalSlug]++\n      result = originalSlug + '-' + self.occurrences[originalSlug]\n    }\n\n    self.occurrences[result] = 0\n\n    return result\n  }\n\n  /**\n   * Reset - Forget all previous slugs\n   *\n   * @return void\n   */\n  reset () {\n    this.occurrences = Object.create(null)\n  }\n}\n\n/**\n * Generate a slug.\n *\n * Does not track previously generated slugs: repeated calls with the same value\n * will result in the exact same slug.\n * Use the `GithubSlugger` class to get unique slugs.\n *\n * @param  {string} value\n *   String of text to slugify\n * @param  {boolean} [maintainCase=false]\n *   Keep the current case, otherwise make all lowercase\n * @return {string}\n *   A unique slug string\n */\nfunction slug (value, maintainCase) {\n  if (typeof value !== 'string') return ''\n  if (!maintainCase) value = value.toLowerCase()\n  return value.replace(regex, '').replace(/ /g, '-')\n}\n\n;// ./node_modules/rehype-slug/node_modules/hast-util-heading-rank/lib/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n/**\n * Get the rank (`1` to `6`) of headings (`h1` to `h6`).\n *\n * @param {Nodes} node\n *   Node to check.\n * @returns {number | undefined}\n *   Rank of the heading or `undefined` if not a heading.\n */\nfunction headingRank(node) {\n  const name = node.type === 'element' ? node.tagName.toLowerCase() : ''\n  const code =\n    name.length === 2 && name.charCodeAt(0) === 104 /* `h` */\n      ? name.charCodeAt(1)\n      : 0\n  return code > 48 /* `0` */ && code < 55 /* `7` */\n    ? code - 48 /* `0` */\n    : undefined\n}\n\n;// ./node_modules/rehype-slug/node_modules/hast-util-to-string/lib/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n */\n\n/**\n * Get the plain-text value of a hast node.\n *\n * @param {Nodes} node\n *   Node to serialize.\n * @returns {string}\n *   Serialized node.\n */\nfunction lib_toString(node) {\n  // “The concatenation of data of all the Text node descendants of the context\n  // object, in tree order.”\n  if ('children' in node) {\n    return lib_all(node)\n  }\n\n  // “Context object’s data.”\n  return 'value' in node ? node.value : ''\n}\n\n/**\n * @param {Nodes} node\n *   Node.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(node) {\n  if (node.type === 'text') {\n    return node.value\n  }\n\n  return 'children' in node ? lib_all(node) : ''\n}\n\n/**\n * @param {Parents} node\n *   Node.\n * @returns {string}\n *   Serialized node.\n */\nfunction lib_all(node) {\n  let index = -1\n  /** @type {Array<string>} */\n  const result = []\n\n  while (++index < node.children.length) {\n    result[index] = one(node.children[index])\n  }\n\n  return result.join('')\n}\n\n;// ./node_modules/unist-util-is/lib/index.js\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is a node.\n * @param {unknown} this\n *   The given context.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n *   Object to check for equivalence.\n *\n *   Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary node.\n *\n * @callback TestFunction\n *   Check if a node passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | undefined} [index]\n *   The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n *   The node’s parent.\n * @returns {boolean | undefined | void}\n *   Whether this node passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n *   Thing to check, typically `Node`.\n * @param {Test} test\n *   A check for a specific node.\n * @param {number | null | undefined} index\n *   The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n *   The node’s parent.\n * @param {unknown} context\n *   Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n *   Whether `node` is a node and passes a test.\n */\nconst is =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((node?: null | undefined) => false) &\n   *   ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      return looksLikeANode(node)\n        ? check.call(context, node, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n *   An assertion.\n */\nconst convert =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return ok\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propsFactory(check) {\n  const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n      /** @type {unknown} */ (node)\n    )\n\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeANode(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n  return value !== null && typeof value === 'object' && 'type' in value\n}\n\n;// ./node_modules/unist-util-visit-parents/lib/color.js\n/**\n * @param {string} d\n * @returns {string}\n */\nfunction color(d) {\n  return d\n}\n\n;// ./node_modules/unist-util-visit-parents/lib/index.js\n/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends ReadonlyArray<infer T>\n *   ? MatchesOne<Value, T>\n *   : Check extends Array<infer T>\n *   ? MatchesOne<Value, T>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<VisitedParents>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Tree type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\n\n\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nconst CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nconst EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nconst SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} test\n *   `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n *   Handle each node.\n * @param {boolean | null | undefined} [reverse]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nfunction visitParents(tree, test, visitor, reverse) {\n  /** @type {Test} */\n  let check\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    // @ts-expect-error no visitor given, so `visitor` is test.\n    visitor = test\n  } else {\n    // @ts-expect-error visitor given, so `test` isn’t a visitor.\n    check = test\n  }\n\n  const is = convert(check)\n  const step = reverse ? -1 : 1\n\n  factory(tree, undefined, [])()\n\n  /**\n   * @param {UnistNode} node\n   * @param {number | undefined} index\n   * @param {Array<UnistParent>} parents\n   */\n  function factory(node, index, parents) {\n    const value = /** @type {Record<string, unknown>} */ (\n      node && typeof node === 'object' ? node : {}\n    )\n\n    if (typeof value.type === 'string') {\n      const name =\n        // `hast`\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : // `xast`\n            typeof value.name === 'string'\n            ? value.name\n            : undefined\n\n      Object.defineProperty(visit, 'name', {\n        value:\n          'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n      })\n    }\n\n    return visit\n\n    function visit() {\n      /** @type {Readonly<ActionTuple>} */\n      let result = empty\n      /** @type {Readonly<ActionTuple>} */\n      let subresult\n      /** @type {number} */\n      let offset\n      /** @type {Array<UnistParent>} */\n      let grandparents\n\n      if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n        // @ts-expect-error: `visitor` is now a visitor.\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if ('children' in node && node.children) {\n        const nodeAsParent = /** @type {UnistParent} */ (node)\n\n        if (nodeAsParent.children && result[0] !== SKIP) {\n          offset = (reverse ? nodeAsParent.children.length : -1) + step\n          grandparents = parents.concat(nodeAsParent)\n\n          while (offset > -1 && offset < nodeAsParent.children.length) {\n            const child = nodeAsParent.children[offset]\n\n            subresult = factory(child, offset, grandparents)()\n\n            if (subresult[0] === EXIT) {\n              return subresult\n            }\n\n            offset =\n              typeof subresult[1] === 'number' ? subresult[1] : offset + step\n          }\n        }\n      }\n\n      return result\n    }\n  }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return value === null || value === undefined ? empty : [value]\n}\n\n;// ./node_modules/unist-util-visit/lib/index.js\n/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn’t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n *   Build a typed `Visitor` function from a node and all possible parents.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n *   Node type.\n * @template {UnistParent} Ancestor\n *   Parent type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     Matches<Descendant, Check>,\n *     Extract<Descendant, UnistParent>\n *   >\n * )} BuildVisitorFromDescendants\n *   Build a typed `Visitor` function from a list of descendants and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Node type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\n\n\n\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n *   `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n *   Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nfunction visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n  /** @type {boolean | null | undefined} */\n  let reverse\n  /** @type {Test} */\n  let test\n  /** @type {Visitor} */\n  let visitor\n\n  if (\n    typeof testOrVisitor === 'function' &&\n    typeof visitorOrReverse !== 'function'\n  ) {\n    test = undefined\n    visitor = testOrVisitor\n    reverse = visitorOrReverse\n  } else {\n    // @ts-expect-error: assume the overload with test was given.\n    test = testOrVisitor\n    // @ts-expect-error: assume the overload with test was given.\n    visitor = visitorOrReverse\n    reverse = maybeReverse\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  /**\n   * @param {UnistNode} node\n   * @param {Array<UnistParent>} parents\n   */\n  function overload(node, parents) {\n    const parent = parents[parents.length - 1]\n    const index = parent ? parent.children.indexOf(node) : undefined\n    return visitor(node, index, parent)\n  }\n}\n\n;// ./node_modules/rehype-slug/lib/index.js\n/**\n * @typedef {import('hast').Root} Root\n */\n\n/**\n * @typedef Options\n *   Configuration (optional).\n * @property {string} [prefix='']\n *   Prefix to add in front of `id`s (default: `''`).\n */\n\n\n\n\n\n\n/** @type {Options} */\nconst emptyOptions = {}\nconst slugs = new BananaSlug()\n\n/**\n * Add `id`s to headings.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nfunction rehypeSlug(options) {\n  const settings = options || emptyOptions\n  const prefix = settings.prefix || ''\n\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree) {\n    slugs.reset()\n\n    visit(tree, 'element', function (node) {\n      if (headingRank(node) && !node.properties.id) {\n        node.properties.id = prefix + slugs.slug(lib_toString(node))\n      }\n    })\n  }\n}\n\n;// ./node_modules/mdast-util-to-string/lib/index.js\n/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n *   Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n *   Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst lib_emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n *   Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `value`.\n */\nfunction mdast_util_to_string_lib_toString(value, options) {\n  const settings = options || lib_emptyOptions\n  const includeImageAlt =\n    typeof settings.includeImageAlt === 'boolean'\n      ? settings.includeImageAlt\n      : true\n  const includeHtml =\n    typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n  return lib_one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized node.\n */\nfunction lib_one(value, includeImageAlt, includeHtml) {\n  if (node(value)) {\n    if ('value' in value) {\n      return value.type === 'html' && !includeHtml ? '' : value.value\n    }\n\n    if (includeImageAlt && 'alt' in value && value.alt) {\n      return value.alt\n    }\n\n    if ('children' in value) {\n      return mdast_util_to_string_lib_all(value.children, includeImageAlt, includeHtml)\n    }\n  }\n\n  if (Array.isArray(value)) {\n    return mdast_util_to_string_lib_all(value, includeImageAlt, includeHtml)\n  }\n\n  return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized nodes.\n */\nfunction mdast_util_to_string_lib_all(values, includeImageAlt, includeHtml) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n\n  while (++index < values.length) {\n    result[index] = lib_one(values[index], includeImageAlt, includeHtml)\n  }\n\n  return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n *   Thing.\n * @returns {value is Nodes}\n *   Whether `value` is a node.\n */\nfunction node(value) {\n  return Boolean(value && typeof value === 'object')\n}\n\n;// ./node_modules/micromark-util-chunked/index.js\n/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {number} start\n *   Index to remove/insert at (can be negative).\n * @param {number} remove\n *   Number of items to remove.\n * @param {Array<T>} items\n *   Items to inject into `list`.\n * @returns {undefined}\n *   Nothing.\n */\nfunction splice(list, start, remove, items) {\n  const end = list.length\n  let chunkStart = 0\n  /** @type {Array<unknown>} */\n  let parameters\n\n  // Make start between zero and `end` (included).\n  if (start < 0) {\n    start = -start > end ? 0 : end + start\n  } else {\n    start = start > end ? end : start\n  }\n  remove = remove > 0 ? remove : 0\n\n  // No need to chunk the items if there’s only a couple (10k) items.\n  if (items.length < 10000) {\n    parameters = Array.from(items)\n    parameters.unshift(start, remove)\n    // @ts-expect-error Hush, it’s fine.\n    list.splice(...parameters)\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) list.splice(start, remove)\n\n    // Insert the items in chunks to not cause stack overflows.\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000)\n      parameters.unshift(start, 0)\n      // @ts-expect-error Hush, it’s fine.\n      list.splice(...parameters)\n      chunkStart += 10000\n      start += 10000\n    }\n  }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {Array<T>} items\n *   Items to add to `list`.\n * @returns {Array<T>}\n *   Either `list` or `items`.\n */\nfunction push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items)\n    return list\n  }\n  return items\n}\n\n;// ./node_modules/micromark-util-subtokenize/index.js\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} events\n *   List of events.\n * @returns {boolean}\n *   Whether subtokens were found.\n */ // eslint-disable-next-line complexity\nfunction subtokenize(events) {\n  /** @type {Record<string, number>} */\n  const jumps = {}\n  let index = -1\n  /** @type {Event} */\n  let event\n  /** @type {number | undefined} */\n  let lineIndex\n  /** @type {number} */\n  let otherIndex\n  /** @type {Event} */\n  let otherEvent\n  /** @type {Array<Event>} */\n  let parameters\n  /** @type {Array<Event>} */\n  let subevents\n  /** @type {boolean | undefined} */\n  let more\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index]\n    }\n    event = events[index]\n\n    // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n    if (\n      index &&\n      event[1].type === 'chunkFlow' &&\n      events[index - 1][1].type === 'listItemPrefix'\n    ) {\n      subevents = event[1]._tokenizer.events\n      otherIndex = 0\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'lineEndingBlank'\n      ) {\n        otherIndex += 2\n      }\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'content'\n      ) {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === 'content') {\n            break\n          }\n          if (subevents[otherIndex][1].type === 'chunkText') {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true\n            otherIndex++\n          }\n        }\n      }\n    }\n\n    // Enter.\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index))\n        index = jumps[index]\n        more = true\n      }\n    }\n    // Exit.\n    else if (event[1]._container) {\n      otherIndex = index\n      lineIndex = undefined\n      while (otherIndex--) {\n        otherEvent = events[otherIndex]\n        if (\n          otherEvent[1].type === 'lineEnding' ||\n          otherEvent[1].type === 'lineEndingBlank'\n        ) {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events[lineIndex][1].type = 'lineEndingBlank'\n            }\n            otherEvent[1].type = 'lineEnding'\n            lineIndex = otherIndex\n          }\n        } else {\n          break\n        }\n      }\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n        // Switch container exit w/ line endings.\n        parameters = events.slice(lineIndex, index)\n        parameters.unshift(event)\n        splice(events, lineIndex, index - lineIndex + 1, parameters)\n      }\n    }\n  }\n  return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array<Event>} events\n * @param {number} eventIndex\n * @returns {Record<string, number>}\n */\nfunction subcontent(events, eventIndex) {\n  const token = events[eventIndex][1]\n  const context = events[eventIndex][2]\n  let startPosition = eventIndex - 1\n  /** @type {Array<number>} */\n  const startPositions = []\n  const tokenizer =\n    token._tokenizer || context.parser[token.contentType](token.start)\n  const childEvents = tokenizer.events\n  /** @type {Array<[number, number]>} */\n  const jumps = []\n  /** @type {Record<string, number>} */\n  const gaps = {}\n  /** @type {Array<Chunk>} */\n  let stream\n  /** @type {Token | undefined} */\n  let previous\n  let index = -1\n  /** @type {Token | undefined} */\n  let current = token\n  let adjust = 0\n  let start = 0\n  const breaks = [start]\n\n  // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n  while (current) {\n    // Find the position of the event for this token.\n    while (events[++startPosition][1] !== current) {\n      // Empty.\n    }\n    startPositions.push(startPosition)\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current)\n      if (!current.next) {\n        stream.push(null)\n      }\n      if (previous) {\n        tokenizer.defineSkip(current.start)\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true\n      }\n      tokenizer.write(stream)\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined\n      }\n    }\n\n    // Unravel the next token.\n    previous = current\n    current = current.next\n  }\n\n  // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n  current = token\n  while (++index < childEvents.length) {\n    if (\n      // Find a void token that includes a break.\n      childEvents[index][0] === 'exit' &&\n      childEvents[index - 1][0] === 'enter' &&\n      childEvents[index][1].type === childEvents[index - 1][1].type &&\n      childEvents[index][1].start.line !== childEvents[index][1].end.line\n    ) {\n      start = index + 1\n      breaks.push(start)\n      // Help GC.\n      current._tokenizer = undefined\n      current.previous = undefined\n      current = current.next\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = []\n\n  // If there’s one more token (which is the cases for lines that end in an\n  // EOF), that’s perfect: the last point we found starts it.\n  // If there isn’t then make sure any remaining content is added to it.\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined\n    current.previous = undefined\n  } else {\n    breaks.pop()\n  }\n\n  // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren’t affected.\n  index = breaks.length\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1])\n    const start = startPositions.pop()\n    jumps.unshift([start, start + slice.length - 1])\n    splice(events, start, 2, slice)\n  }\n  index = -1\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n    adjust += jumps[index][1] - jumps[index][0] - 1\n  }\n  return gaps\n}\n\n;// ./node_modules/micromark/lib/postprocess.js\n/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n\n\n/**\n * @param {Array<Event>} events\n * @returns {Array<Event>}\n */\nfunction postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n  return events\n}\n\n;// ./node_modules/micromark-util-combine-extensions/index.js\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\n\n\nconst micromark_util_combine_extensions_hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array<Extension>} extensions\n *   List of syntax extensions.\n * @returns {NormalizedExtension}\n *   A single combined extension.\n */\nfunction combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n *   Extension to merge into.\n * @param {Extension} extension\n *   Extension to merge.\n * @returns {undefined}\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {keyof Extension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = micromark_util_combine_extensions_hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    /** @type {Record<string, unknown>} */\n    const left = maybe || (all[hook] = {})\n    /** @type {Record<string, unknown> | undefined} */\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    if (right) {\n      for (code in right) {\n        if (!micromark_util_combine_extensions_hasOwnProperty.call(left, code)) left[code] = []\n        const value = right[code]\n        constructs(\n          // @ts-expect-error Looks like a list.\n          left[code],\n          Array.isArray(value) ? value : value ? [value] : []\n        )\n      }\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n * @param {Array<unknown>} list\n * @returns {undefined}\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {Array<unknown>} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array<HtmlExtension>} htmlExtensions\n *   List of HTML extensions.\n * @returns {HtmlExtension}\n *   A single combined HTML extension.\n */\nfunction micromark_util_combine_extensions_combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n *   Extension to merge into.\n * @param {HtmlExtension} extension\n *   Extension to merge.\n * @returns {undefined}\n */\nfunction htmlExtension(all, extension) {\n  /** @type {keyof HtmlExtension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = micromark_util_combine_extensions_hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {keyof Handles} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        // @ts-expect-error assume document vs regular handler are managed correctly.\n        left[type] = right[type]\n      }\n    }\n  }\n}\n\n;// ./node_modules/micromark-util-character/index.js\n/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nconst asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nconst asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nconst asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nfunction asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < 32 || code === 127)\n  );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nconst asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nconst asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nconst asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nfunction markdownLineEnding(code) {\n  return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nfunction markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nfunction markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nconst unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nconst unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n *   Expression.\n * @returns {(code: Code) => boolean}\n *   Check.\n */\nfunction regexCheck(regex) {\n  return check;\n\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code\n   *   Character code.\n   * @returns {boolean}\n   *   Whether the character code matches the bound regex.\n   */\n  function check(code) {\n    return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n  }\n}\n;// ./node_modules/micromark-factory-space/index.js\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   spaces in markdown are often optional, in which case this factory can be\n *     used and `ok` will be switched to whether spaces were found or not\n * *   one line ending or space can be detected with `markdownSpace(code)` right\n *     before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {TokenType} type\n *   Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n *   Max (exclusive).\n * @returns {State}\n *   Start state.\n */\nfunction factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n  let size = 0\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type)\n      return prefix(code)\n    }\n    return ok(code)\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code)\n      return prefix\n    }\n    effects.exit(type)\n    return ok(code)\n  }\n}\n\n;// ./node_modules/micromark/lib/initialize/content.js\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n\n\n/** @type {InitialConstruct} */\nconst content = {\n  tokenize: initializeContent\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(\n    this.parser.constructs.contentInitial,\n    afterContentStartConstruct,\n    paragraphInitial\n  )\n  /** @type {Token} */\n  let previous\n  return contentStart\n\n  /** @type {State} */\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, contentStart, 'linePrefix')\n  }\n\n  /** @type {State} */\n  function paragraphInitial(code) {\n    effects.enter('paragraph')\n    return lineStart(code)\n  }\n\n  /** @type {State} */\n  function lineStart(code) {\n    const token = effects.enter('chunkText', {\n      contentType: 'text',\n      previous\n    })\n    if (previous) {\n      previous.next = token\n    }\n    previous = token\n    return data(code)\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === null) {\n      effects.exit('chunkText')\n      effects.exit('paragraph')\n      effects.consume(code)\n      return\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      effects.exit('chunkText')\n      return lineStart\n    }\n\n    // Data.\n    effects.consume(code)\n    return data\n  }\n}\n\n;// ./node_modules/micromark/lib/initialize/document.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\n\n\n\n/** @type {InitialConstruct} */\nconst document_document = {\n  tokenize: initializeDocument\n}\n\n/** @type {Construct} */\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n  const self = this\n  /** @type {Array<StackItem>} */\n  const stack = []\n  let continued = 0\n  /** @type {TokenizeContext | undefined} */\n  let childFlow\n  /** @type {Token | undefined} */\n  let childToken\n  /** @type {number} */\n  let lineStartOffset\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued]\n      self.containerState = item[1]\n      return effects.attempt(\n        item[0].continuation,\n        documentContinue,\n        checkNewContainers\n      )(code)\n    }\n\n    // Done.\n    return checkNewContainers(code)\n  }\n\n  /** @type {State} */\n  function documentContinue(code) {\n    continued++\n\n    // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it’s already used in the wild by\n    // extensions.\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined\n      if (childFlow) {\n        closeFlow()\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {Point | undefined} */\n      let point\n\n      // Find the flow chunk.\n      while (indexBeforeFlow--) {\n        if (\n          self.events[indexBeforeFlow][0] === 'exit' &&\n          self.events[indexBeforeFlow][1].type === 'chunkFlow'\n        ) {\n          point = self.events[indexBeforeFlow][1].end\n          break\n        }\n      }\n      exitContainers(continued)\n\n      // Fix positions.\n      let index = indexBeforeExits\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      )\n\n      // Discard the duplicate exits.\n      self.events.length = index\n      return checkNewContainers(code)\n    }\n    return start(code)\n  }\n\n  /** @type {State} */\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there’s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code)\n      }\n\n      // If we have concrete content, such as block HTML or fenced code,\n      // we can’t have containers “pierce” into them, so we can immediately\n      // start.\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code)\n      }\n\n      // If we do have flow, it could still be a blank line,\n      // but we’d be interrupting it w/ a new container if there’s a current\n      // construct.\n      // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n      // needed in micromark-extension-gfm-table@1.0.6).\n      self.interrupt = Boolean(\n        childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n      )\n    }\n\n    // Check if there is a new container.\n    self.containerState = {}\n    return effects.check(\n      containerConstruct,\n      thereIsANewContainer,\n      thereIsNoNewContainer\n    )(code)\n  }\n\n  /** @type {State} */\n  function thereIsANewContainer(code) {\n    if (childFlow) closeFlow()\n    exitContainers(continued)\n    return documentContinued(code)\n  }\n\n  /** @type {State} */\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length\n    lineStartOffset = self.now().offset\n    return flowStart(code)\n  }\n\n  /** @type {State} */\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {}\n    return effects.attempt(\n      containerConstruct,\n      containerContinue,\n      flowStart\n    )(code)\n  }\n\n  /** @type {State} */\n  function containerContinue(code) {\n    continued++\n    stack.push([self.currentConstruct, self.containerState])\n    // Try another.\n    return documentContinued(code)\n  }\n\n  /** @type {State} */\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) closeFlow()\n      exitContainers(0)\n      effects.consume(code)\n      return\n    }\n    childFlow = childFlow || self.parser.flow(self.now())\n    effects.enter('chunkFlow', {\n      contentType: 'flow',\n      previous: childToken,\n      _tokenizer: childFlow\n    })\n    return flowContinue(code)\n  }\n\n  /** @type {State} */\n  function flowContinue(code) {\n    if (code === null) {\n      writeToChild(effects.exit('chunkFlow'), true)\n      exitContainers(0)\n      effects.consume(code)\n      return\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      writeToChild(effects.exit('chunkFlow'))\n      // Get ready for the next line.\n      continued = 0\n      self.interrupt = undefined\n      return start\n    }\n    effects.consume(code)\n    return flowContinue\n  }\n\n  /**\n   * @param {Token} token\n   * @param {boolean | undefined} [eof]\n   * @returns {undefined}\n   */\n  function writeToChild(token, eof) {\n    const stream = self.sliceStream(token)\n    if (eof) stream.push(null)\n    token.previous = childToken\n    if (childToken) childToken.next = token\n    childToken = token\n    childFlow.defineSkip(token.start)\n    childFlow.write(stream)\n\n    // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can’t “unmake” it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which “unmakes” the first line\n    // and turns the whole into one content block.\n    //\n    // We’ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length\n      while (index--) {\n        if (\n          // The token starts before the line ending…\n          childFlow.events[index][1].start.offset < lineStartOffset &&\n          // …and either is not ended yet…\n          (!childFlow.events[index][1].end ||\n            // …or ends after it.\n            childFlow.events[index][1].end.offset > lineStartOffset)\n        ) {\n          // Exit: there’s still something open, which means it’s a lazy line\n          // part of something.\n          return\n        }\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n      const indexBeforeExits = self.events.length\n      let indexBeforeFlow = indexBeforeExits\n      /** @type {boolean | undefined} */\n      let seen\n      /** @type {Point | undefined} */\n      let point\n\n      // Find the previous chunk (the one before the lazy line).\n      while (indexBeforeFlow--) {\n        if (\n          self.events[indexBeforeFlow][0] === 'exit' &&\n          self.events[indexBeforeFlow][1].type === 'chunkFlow'\n        ) {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end\n            break\n          }\n          seen = true\n        }\n      }\n      exitContainers(continued)\n\n      // Fix positions.\n      index = indexBeforeExits\n      while (index < self.events.length) {\n        self.events[index][1].end = Object.assign({}, point)\n        index++\n      }\n\n      // Inject the exits earlier (they’re still also at the end).\n      splice(\n        self.events,\n        indexBeforeFlow + 1,\n        0,\n        self.events.slice(indexBeforeExits)\n      )\n\n      // Discard the duplicate exits.\n      self.events.length = index\n    }\n  }\n\n  /**\n   * @param {number} size\n   * @returns {undefined}\n   */\n  function exitContainers(size) {\n    let index = stack.length\n\n    // Exit open containers.\n    while (index-- > size) {\n      const entry = stack[index]\n      self.containerState = entry[1]\n      entry[0].exit.call(self, effects)\n    }\n    stack.length = size\n  }\n  function closeFlow() {\n    childFlow.write([null])\n    childToken = undefined\n    childFlow = undefined\n    self.containerState._closeFlow = undefined\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n  // Always populated by defaults.\n\n  return factorySpace(\n    effects,\n    effects.attempt(this.parser.constructs.document, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n  )\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/blank-line.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst blankLine = {\n  tokenize: tokenizeBlankLine,\n  partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start\n\n  /**\n   * Start of blank line.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *     ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    return markdownSpace(code)\n      ? factorySpace(effects, after, 'linePrefix')(code)\n      : after(code)\n  }\n\n  /**\n   * At eof/eol, after optional whitespace.\n   *\n   * > 👉 **Note**: `␠` represents a space character.\n   *\n   * ```markdown\n   * > | ␠␠␊\n   *       ^\n   * > | ␊\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/content.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nconst content_content = {\n  tokenize: tokenizeContent,\n  resolve: resolveContent\n}\n\n/** @type {Construct} */\nconst continuationConstruct = {\n  tokenize: tokenizeContinuation,\n  partial: true\n}\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n  subtokenize(events)\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token | undefined} */\n  let previous\n  return chunkStart\n\n  /**\n   * Before a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkStart(code) {\n    effects.enter('content')\n    previous = effects.enter('chunkContent', {\n      contentType: 'content'\n    })\n    return chunkInside(code)\n  }\n\n  /**\n   * In a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkInside(code) {\n    if (code === null) {\n      return contentEnd(code)\n    }\n\n    // To do: in `markdown-rs`, each line is parsed on its own, and everything\n    // is stitched together resolving.\n    if (markdownLineEnding(code)) {\n      return effects.check(\n        continuationConstruct,\n        contentContinue,\n        contentEnd\n      )(code)\n    }\n\n    // Data.\n    effects.consume(code)\n    return chunkInside\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentEnd(code) {\n    effects.exit('chunkContent')\n    effects.exit('content')\n    return ok(code)\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentContinue(code) {\n    effects.consume(code)\n    effects.exit('chunkContent')\n    previous.next = effects.enter('chunkContent', {\n      contentType: 'content',\n      previous\n    })\n    previous = previous.next\n    return chunkInside\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this\n  return startLookahead\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function startLookahead(code) {\n    effects.exit('chunkContent')\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, prefixed, 'linePrefix')\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    // Always populated by defaults.\n\n    const tail = self.events[self.events.length - 1]\n    if (\n      !self.parser.constructs.disable.null.includes('codeIndented') &&\n      tail &&\n      tail[1].type === 'linePrefix' &&\n      tail[2].sliceSerialize(tail[1], true).length >= 4\n    ) {\n      return ok(code)\n    }\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n  }\n}\n\n;// ./node_modules/micromark/lib/initialize/flow.js\n/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n\n\n\n/** @type {InitialConstruct} */\nconst flow = {\n  tokenize: initializeFlow\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeFlow(effects) {\n  const self = this\n  const initial = effects.attempt(\n    // Try to parse a blank line.\n    blankLine,\n    atBlankEnding,\n    // Try to parse initial flow (essentially, only code).\n    effects.attempt(\n      this.parser.constructs.flowInitial,\n      afterConstruct,\n      factorySpace(\n        effects,\n        effects.attempt(\n          this.parser.constructs.flow,\n          afterConstruct,\n          effects.attempt(content_content, afterConstruct)\n        ),\n        'linePrefix'\n      )\n    )\n  )\n  return initial\n\n  /** @type {State} */\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    self.currentConstruct = undefined\n    return initial\n  }\n\n  /** @type {State} */\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    self.currentConstruct = undefined\n    return initial\n  }\n}\n\n;// ./node_modules/micromark/lib/initialize/text.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nconst resolver = {\n  resolveAll: createResolver()\n}\nconst string = initializeFactory('string')\nconst text_text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n  return {\n    tokenize: initializeText,\n    resolveAll: createResolver(\n      field === 'text' ? resolveAllLineSuffixes : undefined\n    )\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Initializer}\n   */\n  function initializeText(effects) {\n    const self = this\n    const constructs = this.parser.constructs[field]\n    const text = effects.attempt(constructs, start, notText)\n    return start\n\n    /** @type {State} */\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code)\n    }\n\n    /** @type {State} */\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code)\n        return\n      }\n      effects.enter('data')\n      effects.consume(code)\n      return data\n    }\n\n    /** @type {State} */\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit('data')\n        return text(code)\n      }\n\n      // Data.\n      effects.consume(code)\n      return data\n    }\n\n    /**\n     * @param {Code} code\n     * @returns {boolean}\n     */\n    function atBreak(code) {\n      if (code === null) {\n        return true\n      }\n      const list = constructs[code]\n      let index = -1\n      if (list) {\n        // Always populated by defaults.\n\n        while (++index < list.length) {\n          const item = list[index]\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true\n          }\n        }\n      }\n      return false\n    }\n  }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n  return resolveAllText\n\n  /** @type {Resolver} */\n  function resolveAllText(events, context) {\n    let index = -1\n    /** @type {number | undefined} */\n    let enter\n\n    // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === 'data') {\n          enter = index\n          index++\n        }\n      } else if (!events[index] || events[index][1].type !== 'data') {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end\n          events.splice(enter + 2, index - enter - 2)\n          index = enter + 2\n        }\n        enter = undefined\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events\n  }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n  let eventIndex = 0 // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if (\n      (eventIndex === events.length ||\n        events[eventIndex][1].type === 'lineEnding') &&\n      events[eventIndex - 1][1].type === 'data'\n    ) {\n      const data = events[eventIndex - 1][1]\n      const chunks = context.sliceStream(data)\n      let index = chunks.length\n      let bufferIndex = -1\n      let size = 0\n      /** @type {boolean | undefined} */\n      let tabs\n      while (index--) {\n        const chunk = chunks[index]\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++\n            bufferIndex--\n          }\n          if (bufferIndex) break\n          bufferIndex = -1\n        }\n        // Number\n        else if (chunk === -2) {\n          tabs = true\n          size++\n        } else if (chunk === -1) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++\n          break\n        }\n      }\n      if (size) {\n        const token = {\n          type:\n            eventIndex === events.length || tabs || size < 2\n              ? 'lineSuffix'\n              : 'hardBreakTrailing',\n          start: {\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size,\n            _index: data.start._index + index,\n            _bufferIndex: index\n              ? bufferIndex\n              : data.start._bufferIndex + bufferIndex\n          },\n          end: Object.assign({}, data.end)\n        }\n        data.end = Object.assign({}, token.start)\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token)\n        } else {\n          events.splice(\n            eventIndex,\n            0,\n            ['enter', token, context],\n            ['exit', token, context]\n          )\n          eventIndex += 2\n        }\n      }\n      eventIndex++\n    }\n  }\n  return events\n}\n\n;// ./node_modules/micromark-util-resolve-all/index.js\n/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n *   List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n *   List of events.\n * @param {TokenizeContext} context\n *   Context used by `tokenize`.\n * @returns {Array<Event>}\n *   Changed events.\n */\nfunction resolveAll(constructs, events, context) {\n  /** @type {Array<Resolver>} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n\n;// ./node_modules/micromark/lib/create-tokenizer.js\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {undefined}\n *\n * @typedef Info\n * @property {Restore} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {undefined}\n */\n\n\n\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n * @returns {TokenizeContext}\n */\nfunction createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = Object.assign(\n    from\n      ? Object.assign({}, from)\n      : {\n          line: 1,\n          column: 1,\n          offset: 0\n        },\n    {\n      _index: 0,\n      _bufferIndex: -1\n    }\n  )\n  /** @type {Record<string, number>} */\n  const columnStart = {}\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = []\n  /** @type {Array<Chunk>} */\n  let chunks = []\n  /** @type {Array<Token>} */\n  let stack = []\n  /** @type {boolean | undefined} */\n  let consumed = true\n\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n  const effects = {\n    consume,\n    enter,\n    exit,\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  }\n\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n  const context = {\n    previous: null,\n    code: null,\n    containerState: {},\n    events: [],\n    parser,\n    sliceStream,\n    sliceSerialize,\n    now,\n    defineSkip,\n    write\n  }\n\n  /**\n   * The state function.\n   *\n   * @type {State | undefined}\n   */\n  let state = initialize.tokenize.call(context, effects)\n\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n  let expectedCode\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize)\n  }\n  return context\n\n  /** @type {TokenizeContext['write']} */\n  function write(slice) {\n    chunks = push(chunks, slice)\n    main()\n\n    // Exit if we’re not done, resolve might change stuff.\n    if (chunks[chunks.length - 1] !== null) {\n      return []\n    }\n    addResult(initialize, 0)\n\n    // Otherwise, resolve, and exit.\n    context.events = resolveAll(resolveAllConstructs, context.events, context)\n    return context.events\n  }\n\n  //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs)\n  }\n\n  /** @type {TokenizeContext['sliceStream']} */\n  function sliceStream(token) {\n    return sliceChunks(chunks, token)\n  }\n\n  /** @type {TokenizeContext['now']} */\n  function now() {\n    // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n    const {line, column, offset, _index, _bufferIndex} = point\n    return {\n      line,\n      column,\n      offset,\n      _index,\n      _bufferIndex\n    }\n  }\n\n  /** @type {TokenizeContext['defineSkip']} */\n  function defineSkip(value) {\n    columnStart[value.line] = value.column\n    accountForPotentialSkip()\n  }\n\n  //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {undefined}\n   */\n  function main() {\n    /** @type {number} */\n    let chunkIndex\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index]\n\n      // If we’re in a buffer chunk, loop through it.\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0\n        }\n        while (\n          point._index === chunkIndex &&\n          point._bufferIndex < chunk.length\n        ) {\n          go(chunk.charCodeAt(point._bufferIndex))\n        }\n      } else {\n        go(chunk)\n      }\n    }\n  }\n\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   * @returns {undefined}\n   */\n  function go(code) {\n    consumed = undefined\n    expectedCode = code\n    state = state(code)\n  }\n\n  /** @type {Effects['consume']} */\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++\n      point.column = 1\n      point.offset += code === -3 ? 2 : 1\n      accountForPotentialSkip()\n    } else if (code !== -1) {\n      point.column++\n      point.offset++\n    }\n\n    // Not in a string chunk.\n    if (point._bufferIndex < 0) {\n      point._index++\n    } else {\n      point._bufferIndex++\n\n      // At end of string chunk.\n      // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n      // strings.\n      if (point._bufferIndex === chunks[point._index].length) {\n        point._bufferIndex = -1\n        point._index++\n      }\n    }\n\n    // Expose the previous character.\n    context.previous = code\n\n    // Mark as consumed.\n    consumed = true\n  }\n\n  /** @type {Effects['enter']} */\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {}\n    token.type = type\n    token.start = now()\n    context.events.push(['enter', token, context])\n    stack.push(token)\n    return token\n  }\n\n  /** @type {Effects['exit']} */\n  function exit(type) {\n    const token = stack.pop()\n    token.end = now()\n    context.events.push(['exit', token, context])\n    return token\n  }\n\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from)\n  }\n\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulcheck(_, info) {\n    info.restore()\n  }\n\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n   */\n  function constructFactory(onreturn, fields) {\n    return hook\n\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Array<Construct> | Construct | ConstructRecord} constructs\n     * @param {State} returnState\n     * @param {State | undefined} [bogusState]\n     * @returns {State}\n     */\n    function hook(constructs, returnState, bogusState) {\n      /** @type {Array<Construct>} */\n      let listOfConstructs\n      /** @type {number} */\n      let constructIndex\n      /** @type {Construct} */\n      let currentConstruct\n      /** @type {Info} */\n      let info\n      return Array.isArray(constructs) /* c8 ignore next 1 */\n        ? handleListOfConstructs(constructs)\n        : 'tokenize' in constructs\n        ? // @ts-expect-error Looks like a construct.\n          handleListOfConstructs([constructs])\n        : handleMapOfConstructs(constructs)\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       * @returns {State}\n       */\n      function handleMapOfConstructs(map) {\n        return start\n\n        /** @type {State} */\n        function start(code) {\n          const def = code !== null && map[code]\n          const all = code !== null && map.null\n          const list = [\n            // To do: add more extension tests.\n            /* c8 ignore next 2 */\n            ...(Array.isArray(def) ? def : def ? [def] : []),\n            ...(Array.isArray(all) ? all : all ? [all] : [])\n          ]\n          return handleListOfConstructs(list)(code)\n        }\n      }\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {Array<Construct>} list\n       * @returns {State}\n       */\n      function handleListOfConstructs(list) {\n        listOfConstructs = list\n        constructIndex = 0\n        if (list.length === 0) {\n          return bogusState\n        }\n        return handleConstruct(list[constructIndex])\n      }\n\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       * @returns {State}\n       */\n      function handleConstruct(construct) {\n        return start\n\n        /** @type {State} */\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store()\n          currentConstruct = construct\n          if (!construct.partial) {\n            context.currentConstruct = construct\n          }\n\n          // Always populated by defaults.\n\n          if (\n            construct.name &&\n            context.parser.constructs.disable.null.includes(construct.name)\n          ) {\n            return nok(code)\n          }\n          return construct.tokenize.call(\n            // If we do have fields, create an object w/ `context` as its\n            // prototype.\n            // This allows a “live binding”, which is needed for `interrupt`.\n            fields ? Object.assign(Object.create(context), fields) : context,\n            effects,\n            ok,\n            nok\n          )(code)\n        }\n      }\n\n      /** @type {State} */\n      function ok(code) {\n        consumed = true\n        onreturn(currentConstruct, info)\n        return returnState\n      }\n\n      /** @type {State} */\n      function nok(code) {\n        consumed = true\n        info.restore()\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex])\n        }\n        return bogusState\n      }\n    }\n  }\n\n  /**\n   * @param {Construct} construct\n   * @param {number} from\n   * @returns {undefined}\n   */\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct)\n    }\n    if (construct.resolve) {\n      splice(\n        context.events,\n        from,\n        context.events.length - from,\n        construct.resolve(context.events.slice(from), context)\n      )\n    }\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context)\n    }\n  }\n\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   */\n  function store() {\n    const startPoint = now()\n    const startPrevious = context.previous\n    const startCurrentConstruct = context.currentConstruct\n    const startEventsIndex = context.events.length\n    const startStack = Array.from(stack)\n    return {\n      restore,\n      from: startEventsIndex\n    }\n\n    /**\n     * Restore state.\n     *\n     * @returns {undefined}\n     */\n    function restore() {\n      point = startPoint\n      context.previous = startPrevious\n      context.currentConstruct = startCurrentConstruct\n      context.events.length = startEventsIndex\n      stack = startStack\n      accountForPotentialSkip()\n    }\n  }\n\n  /**\n   * Move the current point a bit forward in the line when it’s on a column\n   * skip.\n   *\n   * @returns {undefined}\n   */\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line]\n      point.offset += columnStart[point.line] - 1\n    }\n  }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array<Chunk>} chunks\n * @param {Pick<Token, 'end' | 'start'>} token\n * @returns {Array<Chunk>}\n */\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index\n  const startBufferIndex = token.start._bufferIndex\n  const endIndex = token.end._index\n  const endBufferIndex = token.end._bufferIndex\n  /** @type {Array<Chunk>} */\n  let view\n  if (startIndex === endIndex) {\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n  } else {\n    view = chunks.slice(startIndex, endIndex)\n    if (startBufferIndex > -1) {\n      const head = view[0]\n      if (typeof head === 'string') {\n        view[0] = head.slice(startBufferIndex)\n      } else {\n        view.shift()\n      }\n    }\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex))\n    }\n  }\n  return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array<Chunk>} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {boolean | undefined} */\n  let atTab\n  while (++index < chunks.length) {\n    const chunk = chunks[index]\n    /** @type {string} */\n    let value\n    if (typeof chunk === 'string') {\n      value = chunk\n    } else\n      switch (chunk) {\n        case -5: {\n          value = '\\r'\n          break\n        }\n        case -4: {\n          value = '\\n'\n          break\n        }\n        case -3: {\n          value = '\\r' + '\\n'\n          break\n        }\n        case -2: {\n          value = expandTabs ? ' ' : '\\t'\n          break\n        }\n        case -1: {\n          if (!expandTabs && atTab) continue\n          value = ' '\n          break\n        }\n        default: {\n          // Currently only replacement character.\n          value = String.fromCharCode(chunk)\n        }\n      }\n    atTab = chunk === -2\n    result.push(value)\n  }\n  return result.join('')\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/thematic-break.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n\n  /**\n   * Start of thematic break.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('thematicBreak')\n    // To do: parse indent like `markdown-rs`.\n    return before(code)\n  }\n\n  /**\n   * After optional whitespace, at marker.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    marker = code\n    return atBreak(code)\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter('thematicBreakSequence')\n      return sequence(code)\n    }\n    if (size >= 3 && (code === null || markdownLineEnding(code))) {\n      effects.exit('thematicBreak')\n      return ok(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      size++\n      return sequence\n    }\n    effects.exit('thematicBreakSequence')\n    return markdownSpace(code)\n      ? factorySpace(effects, atBreak, 'whitespace')(code)\n      : atBreak(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/list.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n/** @type {Construct} */\nconst list_list = {\n  name: 'list',\n  tokenize: tokenizeListStart,\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n  tokenize: tokenizeListItemPrefixWhitespace,\n  partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {\n  tokenize: tokenizeIndent,\n  partial: true\n}\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this\n  const tail = self.events[self.events.length - 1]\n  let initialSize =\n    tail && tail[1].type === 'linePrefix'\n      ? tail[2].sliceSerialize(tail[1], true).length\n      : 0\n  let size = 0\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    const kind =\n      self.containerState.type ||\n      (code === 42 || code === 43 || code === 45\n        ? 'listUnordered'\n        : 'listOrdered')\n    if (\n      kind === 'listUnordered'\n        ? !self.containerState.marker || code === self.containerState.marker\n        : asciiDigit(code)\n    ) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind\n        effects.enter(kind, {\n          _container: true\n        })\n      }\n      if (kind === 'listUnordered') {\n        effects.enter('listItemPrefix')\n        return code === 42 || code === 45\n          ? effects.check(thematicBreak, nok, atMarker)(code)\n          : atMarker(code)\n      }\n      if (!self.interrupt || code === 49) {\n        effects.enter('listItemPrefix')\n        effects.enter('listItemValue')\n        return inside(code)\n      }\n    }\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code)\n      return inside\n    }\n    if (\n      (!self.interrupt || size < 2) &&\n      (self.containerState.marker\n        ? code === self.containerState.marker\n        : code === 41 || code === 46)\n    ) {\n      effects.exit('listItemValue')\n      return atMarker(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * @type {State}\n   **/\n  function atMarker(code) {\n    effects.enter('listItemMarker')\n    effects.consume(code)\n    effects.exit('listItemMarker')\n    self.containerState.marker = self.containerState.marker || code\n    return effects.check(\n      blankLine,\n      // Can’t be empty when interrupting.\n      self.interrupt ? nok : onBlank,\n      effects.attempt(\n        listItemPrefixWhitespaceConstruct,\n        endOfPrefix,\n        otherPrefix\n      )\n    )\n  }\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true\n    initialSize++\n    return endOfPrefix(code)\n  }\n\n  /** @type {State} */\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter('listItemPrefixWhitespace')\n      effects.consume(code)\n      effects.exit('listItemPrefixWhitespace')\n      return endOfPrefix\n    }\n    return nok(code)\n  }\n\n  /** @type {State} */\n  function endOfPrefix(code) {\n    self.containerState.size =\n      initialSize +\n      self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n    return ok(code)\n  }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this\n  self.containerState._closeFlow = undefined\n  return effects.check(blankLine, onBlank, notBlank)\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.furtherBlankLines =\n      self.containerState.furtherBlankLines ||\n      self.containerState.initialBlankLine\n\n    // We have a blank line.\n    // Still, try to consume at most the items size.\n    return factorySpace(\n      effects,\n      ok,\n      'listItemIndent',\n      self.containerState.size + 1\n    )(code)\n  }\n\n  /** @type {State} */\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = undefined\n      self.containerState.initialBlankLine = undefined\n      return notInCurrentItem(code)\n    }\n    self.containerState.furtherBlankLines = undefined\n    self.containerState.initialBlankLine = undefined\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n  }\n\n  /** @type {State} */\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true\n    // As we’re closing flow, we’re no longer interrupting.\n    self.interrupt = undefined\n    // Always populated by defaults.\n\n    return factorySpace(\n      effects,\n      effects.attempt(list_list, ok, nok),\n      'linePrefix',\n      self.parser.constructs.disable.null.includes('codeIndented')\n        ? undefined\n        : 4\n    )(code)\n  }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemIndent',\n    self.containerState.size + 1\n  )\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'listItemIndent' &&\n      tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n      ? ok(code)\n      : nok(code)\n  }\n}\n\n/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this\n\n  // Always populated by defaults.\n\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemPrefixWhitespace',\n    self.parser.constructs.disable.null.includes('codeIndented')\n      ? undefined\n      : 4 + 1\n  )\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return !markdownSpace(code) &&\n      tail &&\n      tail[1].type === 'listItemPrefixWhitespace'\n      ? ok(code)\n      : nok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/block-quote.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst blockQuote = {\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart,\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * Start of block quote.\n   *\n   * ```markdown\n   * > | > a\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState\n      if (!state.open) {\n        effects.enter('blockQuote', {\n          _container: true\n        })\n        state.open = true\n      }\n      effects.enter('blockQuotePrefix')\n      effects.enter('blockQuoteMarker')\n      effects.consume(code)\n      effects.exit('blockQuoteMarker')\n      return after\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `>`, before optional whitespace.\n   *\n   * ```markdown\n   * > | > a\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter('blockQuotePrefixWhitespace')\n      effects.consume(code)\n      effects.exit('blockQuotePrefixWhitespace')\n      effects.exit('blockQuotePrefix')\n      return ok\n    }\n    effects.exit('blockQuotePrefix')\n    return ok(code)\n  }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n *   | > a\n * > | > b\n *     ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self = this\n  return contStart\n\n  /**\n   * Start of block quote continuation.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contStart(code) {\n    if (markdownSpace(code)) {\n      // Always populated by defaults.\n\n      return factorySpace(\n        effects,\n        contBefore,\n        'linePrefix',\n        self.parser.constructs.disable.null.includes('codeIndented')\n          ? undefined\n          : 4\n      )(code)\n    }\n    return contBefore(code)\n  }\n\n  /**\n   * At `>`, after optional whitespace.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contBefore(code) {\n    return effects.attempt(blockQuote, ok, nok)(code)\n  }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n  effects.exit('blockQuote')\n}\n\n;// ./node_modules/micromark-factory-destination/index.js\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n *   Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n *   Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n *   Type when not enclosed (`b`).\n * @param {TokenType} stringType\n *   Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n *   Depth of nested parens (inclusive).\n * @returns {State}\n *   Start state.\n */ // eslint-disable-next-line max-params\nfunction factoryDestination(\n  effects,\n  ok,\n  nok,\n  type,\n  literalType,\n  literalMarkerType,\n  rawType,\n  stringType,\n  max\n) {\n  const limit = max || Number.POSITIVE_INFINITY\n  let balance = 0\n  return start\n\n  /**\n   * Start of destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *     ^\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type)\n      effects.enter(literalType)\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      return enclosedBefore\n    }\n\n    // ASCII control, space, closing paren.\n    if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n      return nok(code)\n    }\n    effects.enter(type)\n    effects.enter(rawType)\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return raw(code)\n  }\n\n  /**\n   * After `<`, at an enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      effects.exit(literalType)\n      effects.exit(type)\n      return ok\n    }\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return enclosed(code)\n  }\n\n  /**\n   * In enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosed(code) {\n    if (code === 62) {\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      return enclosedBefore(code)\n    }\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return code === 92 ? enclosedEscape : enclosed\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | <a\\*a>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code)\n      return enclosed\n    }\n    return enclosed(code)\n  }\n\n  /**\n   * In raw destination.\n   *\n   * ```markdown\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function raw(code) {\n    if (\n      !balance &&\n      (code === null || code === 41 || markdownLineEndingOrSpace(code))\n    ) {\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      effects.exit(rawType)\n      effects.exit(type)\n      return ok(code)\n    }\n    if (balance < limit && code === 40) {\n      effects.consume(code)\n      balance++\n      return raw\n    }\n    if (code === 41) {\n      effects.consume(code)\n      balance--\n      return raw\n    }\n\n    // ASCII control (but *not* `\\0`) and space and `(`.\n    // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n    // doesn’t.\n    if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return code === 92 ? rawEscape : raw\n  }\n\n  /**\n   * After `\\`, at special character.\n   *\n   * ```markdown\n   * > | a\\*a\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function rawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code)\n      return raw\n    }\n    return raw(code)\n  }\n}\n\n;// ./node_modules/micromark-factory-label/index.js\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n *   Tokenize context.\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n *   Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n *   Type for the identifier (`a`).\n * @returns {State}\n *   Start state.\n */ // eslint-disable-next-line max-params\nfunction factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this\n  let size = 0\n  /** @type {boolean} */\n  let seen\n  return start\n\n  /**\n   * Start of label.\n   *\n   * ```markdown\n   * > | [a]\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    effects.enter(stringType)\n    return atBreak\n  }\n\n  /**\n   * In label, at something, before something else.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (\n      size > 999 ||\n      code === null ||\n      code === 91 ||\n      (code === 93 && !seen) ||\n      // To do: remove in the future once we’ve switched from\n      // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n      // which doesn’t need this.\n      // Hidden footnotes hook.\n      /* c8 ignore next 3 */\n      (code === 94 &&\n        !size &&\n        '_hiddenFootnoteSupport' in self.parser.constructs)\n    ) {\n      return nok(code)\n    }\n    if (code === 93) {\n      effects.exit(stringType)\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    // To do: indent? Link chunks and EOLs together?\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return atBreak\n    }\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return labelInside(code)\n  }\n\n  /**\n   * In label, in text.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (\n      code === null ||\n      code === 91 ||\n      code === 93 ||\n      markdownLineEnding(code) ||\n      size++ > 999\n    ) {\n      effects.exit('chunkString')\n      return atBreak(code)\n    }\n    effects.consume(code)\n    if (!seen) seen = !markdownSpace(code)\n    return code === 92 ? labelEscape : labelInside\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | [a\\*a]\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return labelInside\n    }\n    return labelInside(code)\n  }\n}\n\n;// ./node_modules/micromark-factory-title/index.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n *     b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n *   Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n *   Type for the value (`a`).\n * @returns {State}\n *   Start state.\n */ // eslint-disable-next-line max-params\nfunction factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n\n  /**\n   * Start of title.\n   *\n   * ```markdown\n   * > | \"a\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      effects.enter(type)\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      marker = code === 40 ? 41 : code\n      return begin\n    }\n    return nok(code)\n  }\n\n  /**\n   * After opening marker.\n   *\n   * This is also used at the closing marker.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function begin(code) {\n    if (code === marker) {\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n    effects.enter(stringType)\n    return atBreak(code)\n  }\n\n  /**\n   * At something, before something else.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType)\n      return begin(marker)\n    }\n    if (code === null) {\n      return nok(code)\n    }\n\n    // Note: blank lines can’t exist in content.\n    if (markdownLineEnding(code)) {\n      // To do: use `space_or_tab_eol_with_options`, connect.\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return factorySpace(effects, atBreak, 'linePrefix')\n    }\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return inside(code)\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      return atBreak(code)\n    }\n    effects.consume(code)\n    return code === 92 ? escape : inside\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | \"a\\*b\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function escape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code)\n      return inside\n    }\n    return inside(code)\n  }\n}\n\n;// ./node_modules/micromark-factory-whitespace/index.js\n/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\n\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   line endings or spaces in markdown are often optional, in which case this\n *     factory can be used and `ok` will be switched to whether spaces were found\n *     or not\n * *   one line ending or space can be detected with\n *     `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @returns {State}\n *   Start state.\n */\nfunction factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      seen = true\n      return start\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(\n        effects,\n        start,\n        seen ? 'linePrefix' : 'lineSuffix'\n      )(code)\n    }\n    return ok(code)\n  }\n}\n\n;// ./node_modules/micromark-util-normalize-identifier/index.js\n/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n *   Identifier to normalize.\n * @returns {string}\n *   Normalized identifier.\n */\nfunction normalizeIdentifier(value) {\n  return (\n    value\n      // Collapse markdown whitespace.\n      .replace(/[\\t\\n\\r ]+/g, ' ')\n      // Trim.\n      .replace(/^ | $/g, '')\n      // Some characters are considered “uppercase”, but if their lowercase\n      // counterpart is uppercased will result in a different uppercase\n      // character.\n      // Hence, to get that form, we perform both lower- and uppercase.\n      // Upper case makes sure keys will not interact with default prototypal\n      // methods: no method is uppercase.\n      .toLowerCase()\n      .toUpperCase()\n  )\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/definition.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n}\n\n/** @type {Construct} */\nconst titleBefore = {\n  tokenize: tokenizeTitleBefore,\n  partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this\n  /** @type {string} */\n  let identifier\n  return start\n\n  /**\n   * At start of a definition.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Do not interrupt paragraphs (but do follow definitions).\n    // To do: do `interrupt` the way `markdown-rs` does.\n    // To do: parse whitespace the way `markdown-rs` does.\n    effects.enter('definition')\n    return before(code)\n  }\n\n  /**\n   * After optional whitespace, at `[`.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    // To do: parse whitespace the way `markdown-rs` does.\n\n    return factoryLabel.call(\n      self,\n      effects,\n      labelAfter,\n      // Note: we don’t need to reset the way `markdown-rs` does.\n      nok,\n      'definitionLabel',\n      'definitionLabelMarker',\n      'definitionLabelString'\n    )(code)\n  }\n\n  /**\n   * After label.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(\n      self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n    )\n    if (code === 58) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker')\n      return markerAfter\n    }\n    return nok(code)\n  }\n\n  /**\n   * After marker.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function markerAfter(code) {\n    // Note: whitespace is optional.\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, destinationBefore)(code)\n      : destinationBefore(code)\n  }\n\n  /**\n   * Before destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationBefore(code) {\n    return factoryDestination(\n      effects,\n      destinationAfter,\n      // Note: we don’t need to reset the way `markdown-rs` does.\n      nok,\n      'definitionDestination',\n      'definitionDestinationLiteral',\n      'definitionDestinationLiteralMarker',\n      'definitionDestinationRaw',\n      'definitionDestinationString'\n    )(code)\n  }\n\n  /**\n   * After destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationAfter(code) {\n    return effects.attempt(titleBefore, after, after)(code)\n  }\n\n  /**\n   * After definition.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return markdownSpace(code)\n      ? factorySpace(effects, afterWhitespace, 'whitespace')(code)\n      : afterWhitespace(code)\n  }\n\n  /**\n   * After definition, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterWhitespace(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('definition')\n\n      // Note: we don’t care about uniqueness.\n      // It’s likely that that doesn’t happen very frequently.\n      // It is more likely that it wastes precious time.\n      self.parser.defined.push(identifier)\n\n      // To do: `markdown-rs` interrupt.\n      // // You’d be interrupting.\n      // tokenizer.interrupt = true\n      return ok(code)\n    }\n    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore\n\n  /**\n   * After destination, at whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleBefore(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, beforeMarker)(code)\n      : nok(code)\n  }\n\n  /**\n   * At title.\n   *\n   * ```markdown\n   *   | [a]: b\n   * > | \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeMarker(code) {\n    return factoryTitle(\n      effects,\n      titleAfter,\n      nok,\n      'definitionTitle',\n      'definitionTitleMarker',\n      'definitionTitleString'\n    )(code)\n  }\n\n  /**\n   * After title.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfter(code) {\n    return markdownSpace(code)\n      ? factorySpace(effects, titleAfterOptionalWhitespace, 'whitespace')(code)\n      : titleAfterOptionalWhitespace(code)\n  }\n\n  /**\n   * After title, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfterOptionalWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/code-indented.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n}\n\n/** @type {Construct} */\nconst furtherStart = {\n  tokenize: tokenizeFurtherStart,\n  partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * Start of code (indented).\n   *\n   * > **Parsing note**: it is not needed to check if this first line is a\n   * > filled line (that it has a non-whitespace character), because blank lines\n   * > are parsed already, so we never run into that.\n   *\n   * ```markdown\n   * > |     aaa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: manually check if interrupting like `markdown-rs`.\n\n    effects.enter('codeIndented')\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'linePrefix' &&\n      tail[2].sliceSerialize(tail[1], true).length >= 4\n      ? atBreak(code)\n      : nok(code)\n  }\n\n  /**\n   * At a break.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === null) {\n      return after(code)\n    }\n    if (markdownLineEnding(code)) {\n      return effects.attempt(furtherStart, atBreak, after)(code)\n    }\n    effects.enter('codeFlowValue')\n    return inside(code)\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return atBreak(code)\n    }\n    effects.consume(code)\n    return inside\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit('codeIndented')\n    // To do: allow interrupting like `markdown-rs`.\n    // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    return ok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self = this\n  return furtherStart\n\n  /**\n   * At eol, trying to parse another indent.\n   *\n   * ```markdown\n   * > |     aaa\n   *            ^\n   *   |     bbb\n   * ```\n   *\n   * @type {State}\n   */\n  function furtherStart(code) {\n    // To do: improve `lazy` / `pierce` handling.\n    // If this is a lazy line, it can’t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code)\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return furtherStart\n    }\n\n    // To do: the code here in `micromark-js` is a bit different from\n    // `markdown-rs` because there it can attempt spaces.\n    // We can’t yet.\n    //\n    // To do: use an improved `space_or_tab` function like `markdown-rs`,\n    // so that we can drop the next state.\n    return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n  }\n\n  /**\n   * At start, after 1 or 4 spaces.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'linePrefix' &&\n      tail[2].sliceSerialize(tail[1], true).length >= 4\n      ? ok(code)\n      : markdownLineEnding(code)\n      ? furtherStart(code)\n      : nok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/heading-atx.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n/** @type {Construct} */\nconst headingAtx = {\n  name: 'headingAtx',\n  tokenize: tokenizeHeadingAtx,\n  resolve: resolveHeadingAtx\n}\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2\n  let contentStart = 3\n  /** @type {Token} */\n  let content\n  /** @type {Token} */\n  let text\n\n  // Prefix whitespace, part of the opening.\n  if (events[contentStart][1].type === 'whitespace') {\n    contentStart += 2\n  }\n\n  // Suffix whitespace, part of the closing.\n  if (\n    contentEnd - 2 > contentStart &&\n    events[contentEnd][1].type === 'whitespace'\n  ) {\n    contentEnd -= 2\n  }\n  if (\n    events[contentEnd][1].type === 'atxHeadingSequence' &&\n    (contentStart === contentEnd - 1 ||\n      (contentEnd - 4 > contentStart &&\n        events[contentEnd - 2][1].type === 'whitespace'))\n  ) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n  }\n  if (contentEnd > contentStart) {\n    content = {\n      type: 'atxHeadingText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    }\n    text = {\n      type: 'chunkText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: 'text'\n    }\n    splice(events, contentStart, contentEnd - contentStart + 1, [\n      ['enter', content, context],\n      ['enter', text, context],\n      ['exit', text, context],\n      ['exit', content, context]\n    ])\n  }\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size = 0\n  return start\n\n  /**\n   * Start of a heading (atx).\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    effects.enter('atxHeading')\n    return before(code)\n  }\n\n  /**\n   * After optional whitespace, at `#`.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter('atxHeadingSequence')\n    return sequenceOpen(code)\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code)\n      return sequenceOpen\n    }\n\n    // Always at least one `#`.\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingSequence')\n      return atBreak(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ## aa\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === 35) {\n      effects.enter('atxHeadingSequence')\n      return sequenceFurther(code)\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('atxHeading')\n      // To do: interrupt like `markdown-rs`.\n      // // Feel free to interrupt.\n      // tokenizer.interrupt = false\n      return ok(code)\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, 'whitespace')(code)\n    }\n\n    // To do: generate `data` tokens, add the `text` token later.\n    // Needs edit map, see: `markdown.rs`.\n    effects.enter('atxHeadingText')\n    return data(code)\n  }\n\n  /**\n   * In further sequence (after whitespace).\n   *\n   * Could be normal “visible” hashes in the heading or a final sequence.\n   *\n   * ```markdown\n   * > | ## aa ##\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceFurther(code) {\n    if (code === 35) {\n      effects.consume(code)\n      return sequenceFurther\n    }\n    effects.exit('atxHeadingSequence')\n    return atBreak(code)\n  }\n\n  /**\n   * In text.\n   *\n   * ```markdown\n   * > | ## aa\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingText')\n      return atBreak(code)\n    }\n    effects.consume(code)\n    return data\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/setext-underline.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst setextUnderline = {\n  name: 'setextUnderline',\n  tokenize: tokenizeSetextUnderline,\n  resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n  // To do: resolve like `markdown-rs`.\n  let index = events.length\n  /** @type {number | undefined} */\n  let content\n  /** @type {number | undefined} */\n  let text\n  /** @type {number | undefined} */\n  let definition\n\n  // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === 'content') {\n        content = index\n        break\n      }\n      if (events[index][1].type === 'paragraph') {\n        text = index\n      }\n    }\n    // Exit\n    else {\n      if (events[index][1].type === 'content') {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1)\n      }\n      if (!definition && events[index][1].type === 'definition') {\n        definition = index\n      }\n    }\n  }\n  const heading = {\n    type: 'setextHeading',\n    start: Object.assign({}, events[text][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  }\n\n  // Change the paragraph to setext heading text.\n  events[text][1].type = 'setextHeadingText'\n\n  // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context])\n    events.splice(definition + 1, 0, ['exit', events[content][1], context])\n    events[content][1].end = Object.assign({}, events[definition][1].end)\n  } else {\n    events[content][1] = heading\n  }\n\n  // Add the heading exit at the end.\n  events.push(['exit', heading, context])\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n\n  /**\n   * At start of heading (setext) underline.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length\n    /** @type {boolean | undefined} */\n    let paragraph\n    // Find an opening.\n    while (index--) {\n      // Skip enter/exit of line ending, line prefix, and content.\n      // We can now either have a definition or a paragraph.\n      if (\n        self.events[index][1].type !== 'lineEnding' &&\n        self.events[index][1].type !== 'linePrefix' &&\n        self.events[index][1].type !== 'content'\n      ) {\n        paragraph = self.events[index][1].type === 'paragraph'\n        break\n      }\n    }\n\n    // To do: handle lazy/pierce like `markdown-rs`.\n    // To do: parse indent like `markdown-rs`.\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter('setextHeadingLine')\n      marker = code\n      return before(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * After optional whitespace, at `-` or `=`.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter('setextHeadingLineSequence')\n    return inside(code)\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return inside\n    }\n    effects.exit('setextHeadingLineSequence')\n    return markdownSpace(code)\n      ? factorySpace(effects, after, 'lineSuffix')(code)\n      : after(code)\n  }\n\n  /**\n   * After sequence, after optional whitespace.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('setextHeadingLine')\n      return ok(code)\n    }\n    return nok(code)\n  }\n}\n\n;// ./node_modules/micromark-util-html-tag-name/index.js\n/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nconst htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'search',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nconst htmlRawNames = ['pre', 'script', 'style', 'textarea']\n\n;// ./node_modules/micromark-core-commonmark/lib/html-flow.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n/** @type {Construct} */\nconst htmlFlow = {\n  name: 'htmlFlow',\n  tokenize: tokenizeHtmlFlow,\n  resolveTo: resolveToHtmlFlow,\n  concrete: true\n}\n\n/** @type {Construct} */\nconst blankLineBefore = {\n  tokenize: tokenizeBlankLineBefore,\n  partial: true\n}\nconst nonLazyContinuationStart = {\n  tokenize: tokenizeNonLazyContinuationStart,\n  partial: true\n}\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n  let index = events.length\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n      break\n    }\n  }\n  if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start\n    // Add the prefix start to the HTML line token.\n    events[index + 1][1].start = events[index - 2][1].start\n    // Remove the line prefix.\n    events.splice(index - 2, 2)\n  }\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this\n  /** @type {number} */\n  let marker\n  /** @type {boolean} */\n  let closingTag\n  /** @type {string} */\n  let buffer\n  /** @type {number} */\n  let index\n  /** @type {Code} */\n  let markerB\n  return start\n\n  /**\n   * Start of HTML (flow).\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    return before(code)\n  }\n\n  /**\n   * At `<`, after optional whitespace.\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter('htmlFlow')\n    effects.enter('htmlFlowData')\n    effects.consume(code)\n    return open\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | <x />\n   *      ^\n   * > | <!doctype>\n   *      ^\n   * > | <!--xxx-->\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationOpen\n    }\n    if (code === 47) {\n      effects.consume(code)\n      closingTag = true\n      return tagCloseStart\n    }\n    if (code === 63) {\n      effects.consume(code)\n      marker = 3\n      // To do:\n      // tokenizer.concrete = true\n      // To do: use `markdown-rs` style interrupt.\n      // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      // @ts-expect-error: not null.\n      buffer = String.fromCharCode(code)\n      return tagName\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *       ^\n   * > | <!--xxx-->\n   *       ^\n   * > | <![CDATA[>&<]]>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      marker = 2\n      return commentOpenInside\n    }\n    if (code === 91) {\n      effects.consume(code)\n      marker = 5\n      index = 0\n      return cdataOpenInside\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      marker = 4\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `<!-`, inside a comment, at another `-`.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `<![`, inside CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *        ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = 'CDATA['\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code)\n      if (index === value.length) {\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok : continuation\n      }\n      return cdataOpenInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | </x>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      // @ts-expect-error: not null.\n      buffer = String.fromCharCode(code)\n      return tagName\n    }\n    return nok(code)\n  }\n\n  /**\n   * In tag name.\n   *\n   * ```markdown\n   * > | <ab>\n   *      ^^\n   * > | </ab>\n   *       ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagName(code) {\n    if (\n      code === null ||\n      code === 47 ||\n      code === 62 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      const slash = code === 47\n      const name = buffer.toLowerCase()\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6\n        if (slash) {\n          effects.consume(code)\n          return basicSelfClosing\n        }\n\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n      marker = 7\n      // Do not support complete HTML when interrupting.\n      return self.interrupt && !self.parser.lazy[self.now().line]\n        ? nok(code)\n        : closingTag\n        ? completeClosingTagAfter(code)\n        : completeAttributeNameBefore(code)\n    }\n\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      buffer += String.fromCharCode(code)\n      return tagName\n    }\n    return nok(code)\n  }\n\n  /**\n   * After closing slash of a basic tag name.\n   *\n   * ```markdown\n   * > | <div/>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code)\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuation\n    }\n    return nok(code)\n  }\n\n  /**\n   * After closing slash of a complete tag name.\n   *\n   * ```markdown\n   * > | <x/>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeClosingTagAfter\n    }\n    return completeEnd(code)\n  }\n\n  /**\n   * At an attribute name.\n   *\n   * At first, this state is used after a complete tag name, after whitespace,\n   * where it expects optional attributes or the end of the tag.\n   * It is also reused after attributes, when expecting more optional\n   * attributes.\n   *\n   * ```markdown\n   * > | <a />\n   *        ^\n   * > | <a :b>\n   *        ^\n   * > | <a _b>\n   *        ^\n   * > | <a b>\n   *        ^\n   * > | <a >\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return completeEnd\n    }\n\n    // ASCII alphanumerical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameBefore\n    }\n    return completeEnd(code)\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | <a :b>\n   *         ^\n   * > | <a _b>\n   *         ^\n   * > | <a b>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeName(code) {\n    // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n    return completeAttributeNameAfter(code)\n  }\n\n  /**\n   * After attribute name, at an optional initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b>\n   *         ^\n   * > | <a b=c>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameAfter\n    }\n    return completeAttributeNameBefore(code)\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * > | <a b=\"c\">\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      markerB = code\n      return completeAttributeValueQuoted\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n    return completeAttributeValueUnquoted(code)\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *           ^\n   * > | <a b='c'>\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuoted(code) {\n    if (code === markerB) {\n      effects.consume(code)\n      markerB = null\n      return completeAttributeValueQuotedAfter\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return completeAttributeValueQuoted\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 47 ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return completeAttributeNameAfter(code)\n    }\n    effects.consume(code)\n    return completeAttributeValueUnquoted\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the\n   * end of the tag.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In certain circumstances of a complete tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return completeAfter\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `>` in a complete tag.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return continuation(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAfter\n    }\n    return nok(code)\n  }\n\n  /**\n   * In continuation of any HTML kind.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuation(code) {\n    if (code === 45 && marker === 2) {\n      effects.consume(code)\n      return continuationCommentInside\n    }\n    if (code === 60 && marker === 1) {\n      effects.consume(code)\n      return continuationRawTagOpen\n    }\n    if (code === 62 && marker === 4) {\n      effects.consume(code)\n      return continuationClose\n    }\n    if (code === 63 && marker === 3) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n    if (code === 93 && marker === 5) {\n      effects.consume(code)\n      return continuationCdataInside\n    }\n    if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n      effects.exit('htmlFlowData')\n      return effects.check(\n        blankLineBefore,\n        continuationAfter,\n        continuationStart\n      )(code)\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('htmlFlowData')\n      return continuationStart(code)\n    }\n    effects.consume(code)\n    return continuation\n  }\n\n  /**\n   * In continuation, at eol.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStart(code) {\n    return effects.check(\n      nonLazyContinuationStart,\n      continuationStartNonLazy,\n      continuationAfter\n    )(code)\n  }\n\n  /**\n   * In continuation, at eol, before non-lazy content.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStartNonLazy(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return continuationBefore\n  }\n\n  /**\n   * In continuation, before non-lazy content.\n   *\n   * ```markdown\n   *   | <x>\n   * > | asd\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return continuationStart(code)\n    }\n    effects.enter('htmlFlowData')\n    return continuation(code)\n  }\n\n  /**\n   * In comment continuation, after one `-`, expecting another.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In raw continuation, after `<`, at `/`.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code)\n      buffer = ''\n      return continuationRawEndTag\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In raw continuation, after `</`, in a raw tag name.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                             ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawEndTag(code) {\n    if (code === 62) {\n      const name = buffer.toLowerCase()\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code)\n        return continuationClose\n      }\n      return continuation(code)\n    }\n    if (asciiAlpha(code) && buffer.length < 8) {\n      effects.consume(code)\n      // @ts-expect-error: not null.\n      buffer += String.fromCharCode(code)\n      return continuationRawEndTag\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In cdata continuation, after `]`, expecting `]>`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *                  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCdataInside(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In declaration or instruction continuation, at `>`.\n   *\n   * ```markdown\n   * > | <!-->\n   *         ^\n   * > | <?>\n   *       ^\n   * > | <!q>\n   *        ^\n   * > | <!--ab-->\n   *             ^\n   * > | <![CDATA[>&<]]>\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    // More dashes.\n    if (code === 45 && marker === 2) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n    return continuation(code)\n  }\n\n  /**\n   * In closed continuation: everything we get until the eol/eof is part of it.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('htmlFlowData')\n      return continuationAfter(code)\n    }\n    effects.consume(code)\n    return continuationClose\n  }\n\n  /**\n   * Done.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationAfter(code) {\n    effects.exit('htmlFlow')\n    // // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    // // No longer concrete.\n    // tokenizer.concrete = false\n    return ok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * At eol, before continuation.\n   *\n   * ```markdown\n   * > | * ```js\n   *            ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return after\n    }\n    return nok(code)\n  }\n\n  /**\n   * A continuation.\n   *\n   * ```markdown\n   *   | * ```js\n   * > | b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start\n\n  /**\n   * Before eol, expecting blank line.\n   *\n   * ```markdown\n   * > | <div>\n   *          ^\n   *   |\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return effects.attempt(blankLine, ok, nok)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/code-fenced.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst nonLazyContinuation = {\n  tokenize: tokenizeNonLazyContinuation,\n  partial: true\n}\n\n/** @type {Construct} */\nconst codeFenced = {\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced,\n  concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this\n  /** @type {Construct} */\n  const closeStart = {\n    tokenize: tokenizeCloseStart,\n    partial: true\n  }\n  let initialPrefix = 0\n  let sizeOpen = 0\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n\n  /**\n   * Start of code.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse whitespace like `markdown-rs`.\n    return beforeSequenceOpen(code)\n  }\n\n  /**\n   * In opening fence, after prefix, at sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeSequenceOpen(code) {\n    const tail = self.events[self.events.length - 1]\n    initialPrefix =\n      tail && tail[1].type === 'linePrefix'\n        ? tail[2].sliceSerialize(tail[1], true).length\n        : 0\n    marker = code\n    effects.enter('codeFenced')\n    effects.enter('codeFencedFence')\n    effects.enter('codeFencedFenceSequence')\n    return sequenceOpen(code)\n  }\n\n  /**\n   * In opening fence sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *      ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === marker) {\n      sizeOpen++\n      effects.consume(code)\n      return sequenceOpen\n    }\n    if (sizeOpen < 3) {\n      return nok(code)\n    }\n    effects.exit('codeFencedFenceSequence')\n    return markdownSpace(code)\n      ? factorySpace(effects, infoBefore, 'whitespace')(code)\n      : infoBefore(code)\n  }\n\n  /**\n   * In opening fence, after the sequence (and optional whitespace), before info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function infoBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFencedFence')\n      return self.interrupt\n        ? ok(code)\n        : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n    }\n    effects.enter('codeFencedFenceInfo')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return info(code)\n  }\n\n  /**\n   * In info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function info(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceInfo')\n      return infoBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceInfo')\n      return factorySpace(effects, metaBefore, 'whitespace')(code)\n    }\n    if (code === 96 && code === marker) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return info\n  }\n\n  /**\n   * In opening fence, after info and whitespace, before meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function metaBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return infoBefore(code)\n    }\n    effects.enter('codeFencedFenceMeta')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return meta(code)\n  }\n\n  /**\n   * In meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceMeta')\n      return infoBefore(code)\n    }\n    if (code === 96 && code === marker) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return meta\n  }\n\n  /**\n   * At eol/eof in code, before a non-lazy closing fence or content.\n   *\n   * ```markdown\n   * > | ~~~js\n   *          ^\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function atNonLazyBreak(code) {\n    return effects.attempt(closeStart, after, contentBefore)(code)\n  }\n\n  /**\n   * Before code content, not a closing fence, at eol.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentBefore(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return contentStart\n  }\n\n  /**\n   * Before code content, not a closing fence.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentStart(code) {\n    return initialPrefix > 0 && markdownSpace(code)\n      ? factorySpace(\n          effects,\n          beforeContentChunk,\n          'linePrefix',\n          initialPrefix + 1\n        )(code)\n      : beforeContentChunk(code)\n  }\n\n  /**\n   * Before code content, after optional prefix.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeContentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n    }\n    effects.enter('codeFlowValue')\n    return contentChunk(code)\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^^^^^^^^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return beforeContentChunk(code)\n    }\n    effects.consume(code)\n    return contentChunk\n  }\n\n  /**\n   * After code.\n   *\n   * ```markdown\n   *   | ~~~js\n   *   | alert(1)\n   * > | ~~~\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    effects.exit('codeFenced')\n    return ok(code)\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeCloseStart(effects, ok, nok) {\n    let size = 0\n    return startBefore\n\n    /**\n     *\n     *\n     * @type {State}\n     */\n    function startBefore(code) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return start\n    }\n\n    /**\n     * Before closing fence, at optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // Always populated by defaults.\n\n      // To do: `enter` here or in next state?\n      effects.enter('codeFencedFence')\n      return markdownSpace(code)\n        ? factorySpace(\n            effects,\n            beforeSequenceClose,\n            'linePrefix',\n            self.parser.constructs.disable.null.includes('codeIndented')\n              ? undefined\n              : 4\n          )(code)\n        : beforeSequenceClose(code)\n    }\n\n    /**\n     * In closing fence, after optional whitespace, at sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function beforeSequenceClose(code) {\n      if (code === marker) {\n        effects.enter('codeFencedFenceSequence')\n        return sequenceClose(code)\n      }\n      return nok(code)\n    }\n\n    /**\n     * In closing fence sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceClose(code) {\n      if (code === marker) {\n        size++\n        effects.consume(code)\n        return sequenceClose\n      }\n      if (size >= sizeOpen) {\n        effects.exit('codeFencedFenceSequence')\n        return markdownSpace(code)\n          ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n          : sequenceCloseAfter(code)\n      }\n      return nok(code)\n    }\n\n    /**\n     * After closing fence sequence, after optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceCloseAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit('codeFencedFence')\n        return ok(code)\n      }\n      return nok(code)\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === null) {\n      return nok(code)\n    }\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return lineStart\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function lineStart(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n  }\n}\n\n;// ./node_modules/decode-named-character-reference/index.dom.js\n/// <reference lib=\"dom\" />\n\n/* eslint-env browser */\n\nconst index_dom_element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nfunction decodeNamedCharacterReference(value) {\n  const characterReference = '&' + value + ';'\n  index_dom_element.innerHTML = characterReference\n  const char = index_dom_element.textContent\n\n  // Some named character references do not require the closing semicolon\n  // (`&not`, for instance), which leads to situations where parsing the assumed\n  // named reference of `&notit;` will result in the string `¬it;`.\n  // When we encounter a trailing semicolon after parsing, and the character\n  // reference to decode was not a semicolon (`&semi;`), we can assume that the\n  // matching was not complete.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the character reference was\n  // not valid.\n  // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n  // yield `null`.\n  return char === characterReference ? false : char\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/character-reference.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this\n  let size = 0\n  /** @type {number} */\n  let max\n  /** @type {(code: Code) => boolean} */\n  let test\n  return start\n\n  /**\n   * Start of character reference.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *      ^\n   * > | a&#123;b\n   *      ^\n   * > | a&#x9;b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('characterReference')\n    effects.enter('characterReferenceMarker')\n    effects.consume(code)\n    effects.exit('characterReferenceMarker')\n    return open\n  }\n\n  /**\n   * After `&`, at `#` for numeric references or alphanumeric for named\n   * references.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^\n   * > | a&#123;b\n   *       ^\n   * > | a&#x9;b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 35) {\n      effects.enter('characterReferenceMarkerNumeric')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerNumeric')\n      return numeric\n    }\n    effects.enter('characterReferenceValue')\n    max = 31\n    test = asciiAlphanumeric\n    return value(code)\n  }\n\n  /**\n   * After `#`, at `x` for hexadecimals or digit for decimals.\n   *\n   * ```markdown\n   * > | a&#123;b\n   *        ^\n   * > | a&#x9;b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter('characterReferenceMarkerHexadecimal')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerHexadecimal')\n      effects.enter('characterReferenceValue')\n      max = 6\n      test = asciiHexDigit\n      return value\n    }\n    effects.enter('characterReferenceValue')\n    max = 7\n    test = asciiDigit\n    return value(code)\n  }\n\n  /**\n   * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n   *\n   * The character reference kind defines what and how many characters are\n   * allowed.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^^^\n   * > | a&#123;b\n   *        ^^^\n   * > | a&#x9;b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function value(code) {\n    if (code === 59 && size) {\n      const token = effects.exit('characterReferenceValue')\n      if (\n        test === asciiAlphanumeric &&\n        !decodeNamedCharacterReference(self.sliceSerialize(token))\n      ) {\n        return nok(code)\n      }\n\n      // To do: `markdown-rs` uses a different name:\n      // `CharacterReferenceMarkerSemi`.\n      effects.enter('characterReferenceMarker')\n      effects.consume(code)\n      effects.exit('characterReferenceMarker')\n      effects.exit('characterReference')\n      return ok\n    }\n    if (test(code) && size++ < max) {\n      effects.consume(code)\n      return value\n    }\n    return nok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/character-escape.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n/** @type {Construct} */\nconst characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start\n\n  /**\n   * Start of character escape.\n   *\n   * ```markdown\n   * > | a\\*b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('characterEscape')\n    effects.enter('escapeMarker')\n    effects.consume(code)\n    effects.exit('escapeMarker')\n    return inside\n  }\n\n  /**\n   * After `\\`, at punctuation.\n   *\n   * ```markdown\n   * > | a\\*b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // ASCII punctuation.\n    if (asciiPunctuation(code)) {\n      effects.enter('characterEscapeValue')\n      effects.consume(code)\n      effects.exit('characterEscapeValue')\n      effects.exit('characterEscape')\n      return ok\n    }\n    return nok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/line-ending.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n  return start\n\n  /** @type {State} */\n  function start(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, ok, 'linePrefix')\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/label-end.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\n\n\n\n\n/** @type {Construct} */\nconst labelEnd = {\n  name: 'labelEnd',\n  tokenize: tokenizeLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n  let index = -1\n  while (++index < events.length) {\n    const token = events[index][1]\n    if (\n      token.type === 'labelImage' ||\n      token.type === 'labelLink' ||\n      token.type === 'labelEnd'\n    ) {\n      // Remove the marker.\n      events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n      token.type = 'data'\n      index++\n    }\n  }\n  return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length\n  let offset = 0\n  /** @type {Token} */\n  let token\n  /** @type {number | undefined} */\n  let open\n  /** @type {number | undefined} */\n  let close\n  /** @type {Array<Event>} */\n  let media\n\n  // Find an opening.\n  while (index--) {\n    token = events[index][1]\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (\n        token.type === 'link' ||\n        (token.type === 'labelLink' && token._inactive)\n      ) {\n        break\n      }\n\n      // Mark other link openings as inactive, as we can’t have links in\n      // links.\n      if (events[index][0] === 'enter' && token.type === 'labelLink') {\n        token._inactive = true\n      }\n    } else if (close) {\n      if (\n        events[index][0] === 'enter' &&\n        (token.type === 'labelImage' || token.type === 'labelLink') &&\n        !token._balanced\n      ) {\n        open = index\n        if (token.type !== 'labelLink') {\n          offset = 2\n          break\n        }\n      }\n    } else if (token.type === 'labelEnd') {\n      close = index\n    }\n  }\n  const group = {\n    type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  }\n  const label = {\n    type: 'label',\n    start: Object.assign({}, events[open][1].start),\n    end: Object.assign({}, events[close][1].end)\n  }\n  const text = {\n    type: 'labelText',\n    start: Object.assign({}, events[open + offset + 2][1].end),\n    end: Object.assign({}, events[close - 2][1].start)\n  }\n  media = [\n    ['enter', group, context],\n    ['enter', label, context]\n  ]\n\n  // Opening marker.\n  media = push(media, events.slice(open + 1, open + offset + 3))\n\n  // Text open.\n  media = push(media, [['enter', text, context]])\n\n  // Always populated by defaults.\n\n  // Between.\n  media = push(\n    media,\n    resolveAll(\n      context.parser.constructs.insideSpan.null,\n      events.slice(open + offset + 4, close - 3),\n      context\n    )\n  )\n\n  // Text close, marker close, label close.\n  media = push(media, [\n    ['exit', text, context],\n    events[close - 2],\n    events[close - 1],\n    ['exit', label, context]\n  ])\n\n  // Reference, resource, or so.\n  media = push(media, events.slice(close + 1))\n\n  // Media close.\n  media = push(media, [['exit', group, context]])\n  splice(events, open, events.length, media)\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  /** @type {Token} */\n  let labelStart\n  /** @type {boolean} */\n  let defined\n\n  // Find an opening.\n  while (index--) {\n    if (\n      (self.events[index][1].type === 'labelImage' ||\n        self.events[index][1].type === 'labelLink') &&\n      !self.events[index][1]._balanced\n    ) {\n      labelStart = self.events[index][1]\n      break\n    }\n  }\n  return start\n\n  /**\n   * Start of label end.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // If there is not an okay opening.\n    if (!labelStart) {\n      return nok(code)\n    }\n\n    // If the corresponding label (link) start is marked as inactive,\n    // it means we’d be wrapping a link, like this:\n    //\n    // ```markdown\n    // > | a [b [c](d) e](f) g.\n    //                  ^\n    // ```\n    //\n    // We can’t have that, so it’s just balanced brackets.\n    if (labelStart._inactive) {\n      return labelEndNok(code)\n    }\n    defined = self.parser.defined.includes(\n      normalizeIdentifier(\n        self.sliceSerialize({\n          start: labelStart.end,\n          end: self.now()\n        })\n      )\n    )\n    effects.enter('labelEnd')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelEnd')\n    return after\n  }\n\n  /**\n   * After `]`.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n    // an extension.\n\n    // Resource (`[asd](fgh)`)?\n    if (code === 40) {\n      return effects.attempt(\n        resourceConstruct,\n        labelEndOk,\n        defined ? labelEndOk : labelEndNok\n      )(code)\n    }\n\n    // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n    if (code === 91) {\n      return effects.attempt(\n        referenceFullConstruct,\n        labelEndOk,\n        defined ? referenceNotFull : labelEndNok\n      )(code)\n    }\n\n    // Shortcut (`[asd]`) reference?\n    return defined ? labelEndOk(code) : labelEndNok(code)\n  }\n\n  /**\n   * After `]`, at `[`, but not at a full reference.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] b\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceNotFull(code) {\n    return effects.attempt(\n      referenceCollapsedConstruct,\n      labelEndOk,\n      labelEndNok\n    )(code)\n  }\n\n  /**\n   * Done, we found something.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *           ^\n   * > | [a][b] c\n   *           ^\n   * > | [a][] b\n   *          ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndOk(code) {\n    // Note: `markdown-rs` does a bunch of stuff here.\n    return ok(code)\n  }\n\n  /**\n   * Done, it’s nothing.\n   *\n   * There was an okay opening, but we didn’t match anything.\n   *\n   * ```markdown\n   * > | [a](b c\n   *        ^\n   * > | [a][b c\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndNok(code) {\n    labelStart._balanced = true\n    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart\n\n  /**\n   * At a resource.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceStart(code) {\n    effects.enter('resource')\n    effects.enter('resourceMarker')\n    effects.consume(code)\n    effects.exit('resourceMarker')\n    return resourceBefore\n  }\n\n  /**\n   * In resource, after `(`, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBefore(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, resourceOpen)(code)\n      : resourceOpen(code)\n  }\n\n  /**\n   * In resource, after optional whitespace, at `)` or a destination.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceOpen(code) {\n    if (code === 41) {\n      return resourceEnd(code)\n    }\n    return factoryDestination(\n      effects,\n      resourceDestinationAfter,\n      resourceDestinationMissing,\n      'resourceDestination',\n      'resourceDestinationLiteral',\n      'resourceDestinationLiteralMarker',\n      'resourceDestinationRaw',\n      'resourceDestinationString',\n      32\n    )(code)\n  }\n\n  /**\n   * In resource, after destination, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationAfter(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, resourceBetween)(code)\n      : resourceEnd(code)\n  }\n\n  /**\n   * At invalid destination.\n   *\n   * ```markdown\n   * > | [a](<<) b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationMissing(code) {\n    return nok(code)\n  }\n\n  /**\n   * In resource, after destination and whitespace, at `(` or title.\n   *\n   * ```markdown\n   * > | [a](b ) c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBetween(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        resourceTitleAfter,\n        nok,\n        'resourceTitle',\n        'resourceTitleMarker',\n        'resourceTitleString'\n      )(code)\n    }\n    return resourceEnd(code)\n  }\n\n  /**\n   * In resource, after title, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b \"c\") d\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceTitleAfter(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, resourceEnd)(code)\n      : resourceEnd(code)\n  }\n\n  /**\n   * In resource, at `)`.\n   *\n   * ```markdown\n   * > | [a](b) d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceEnd(code) {\n    if (code === 41) {\n      effects.enter('resourceMarker')\n      effects.consume(code)\n      effects.exit('resourceMarker')\n      effects.exit('resource')\n      return ok\n    }\n    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self = this\n  return referenceFull\n\n  /**\n   * In a reference (full), at the `[`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFull(code) {\n    return factoryLabel.call(\n      self,\n      effects,\n      referenceFullAfter,\n      referenceFullMissing,\n      'reference',\n      'referenceMarker',\n      'referenceString'\n    )(code)\n  }\n\n  /**\n   * In a reference (full), after `]`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullAfter(code) {\n    return self.parser.defined.includes(\n      normalizeIdentifier(\n        self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n      )\n    )\n      ? ok(code)\n      : nok(code)\n  }\n\n  /**\n   * In reference (full) that was missing.\n   *\n   * ```markdown\n   * > | [a][b d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullMissing(code) {\n    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart\n\n  /**\n   * In reference (collapsed), at `[`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceCollapsedStart(code) {\n    // We only attempt a collapsed label if there’s a `[`.\n\n    effects.enter('reference')\n    effects.enter('referenceMarker')\n    effects.consume(code)\n    effects.exit('referenceMarker')\n    return referenceCollapsedOpen\n  }\n\n  /**\n   * In reference (collapsed), at `]`.\n   *\n   * > 👉 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *         ^\n   * ```\n   *\n   *  @type {State}\n   */\n  function referenceCollapsedOpen(code) {\n    if (code === 93) {\n      effects.enter('referenceMarker')\n      effects.consume(code)\n      effects.exit('referenceMarker')\n      effects.exit('reference')\n      return ok\n    }\n    return nok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/label-start-image.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst labelStartImage = {\n  name: 'labelStartImage',\n  tokenize: tokenizeLabelStartImage,\n  resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * Start of label (image) start.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('labelImage')\n    effects.enter('labelImageMarker')\n    effects.consume(code)\n    effects.exit('labelImageMarker')\n    return open\n  }\n\n  /**\n   * After `!`, at `[`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 91) {\n      effects.enter('labelMarker')\n      effects.consume(code)\n      effects.exit('labelMarker')\n      effects.exit('labelImage')\n      return after\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `![`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *         ^\n   * ```\n   *\n   * This is needed in because, when GFM footnotes are enabled, images never\n   * form when started with a `^`.\n   * Instead, links form:\n   *\n   * ```markdown\n   * ![^a](b)\n   *\n   * ![^a][b]\n   *\n   * [b]: c\n   * ```\n   *\n   * ```html\n   * <p>!<a href=\\\"b\\\">^a</a></p>\n   * <p>!<a href=\\\"c\\\">^a</a></p>\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // To do: use a new field to do this, this is still needed for\n    // `micromark-extension-gfm-footnote`, but the `label-start-link`\n    // behavior isn’t.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n      ? nok(code)\n      : ok(code)\n  }\n}\n\n;// ./node_modules/micromark-util-classify-character/index.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n *   Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n *   Group.\n */\nfunction classifyCharacter(code) {\n  if (\n    code === null ||\n    markdownLineEndingOrSpace(code) ||\n    unicodeWhitespace(code)\n  ) {\n    return 1\n  }\n  if (unicodePunctuation(code)) {\n    return 2\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/attention.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n/** @type {Construct} */\nconst attention = {\n  name: 'attention',\n  tokenize: tokenizeAttention,\n  resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n  let index = -1\n  /** @type {number} */\n  let open\n  /** @type {Token} */\n  let group\n  /** @type {Token} */\n  let text\n  /** @type {Token} */\n  let openingSequence\n  /** @type {Token} */\n  let closingSequence\n  /** @type {number} */\n  let use\n  /** @type {Array<Event>} */\n  let nextEvents\n  /** @type {number} */\n  let offset\n\n  // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (\n      events[index][0] === 'enter' &&\n      events[index][1].type === 'attentionSequence' &&\n      events[index][1]._close\n    ) {\n      open = index\n\n      // Now walk back to find an opener.\n      while (open--) {\n        // Find a token that can open the closer.\n        if (\n          events[open][0] === 'exit' &&\n          events[open][1].type === 'attentionSequence' &&\n          events[open][1]._open &&\n          // If the markers are the same:\n          context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n            context.sliceSerialize(events[index][1]).charCodeAt(0)\n        ) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if (\n            (events[open][1]._close || events[index][1]._open) &&\n            (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n            !(\n              (events[open][1].end.offset -\n                events[open][1].start.offset +\n                events[index][1].end.offset -\n                events[index][1].start.offset) %\n              3\n            )\n          ) {\n            continue\n          }\n\n          // Number of markers to use from the sequence.\n          use =\n            events[open][1].end.offset - events[open][1].start.offset > 1 &&\n            events[index][1].end.offset - events[index][1].start.offset > 1\n              ? 2\n              : 1\n          const start = Object.assign({}, events[open][1].end)\n          const end = Object.assign({}, events[index][1].start)\n          movePoint(start, -use)\n          movePoint(end, use)\n          openingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start,\n            end: Object.assign({}, events[open][1].end)\n          }\n          closingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start: Object.assign({}, events[index][1].start),\n            end\n          }\n          text = {\n            type: use > 1 ? 'strongText' : 'emphasisText',\n            start: Object.assign({}, events[open][1].end),\n            end: Object.assign({}, events[index][1].start)\n          }\n          group = {\n            type: use > 1 ? 'strong' : 'emphasis',\n            start: Object.assign({}, openingSequence.start),\n            end: Object.assign({}, closingSequence.end)\n          }\n          events[open][1].end = Object.assign({}, openingSequence.start)\n          events[index][1].start = Object.assign({}, closingSequence.end)\n          nextEvents = []\n\n          // If there are more markers in the opening, add them before.\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context]\n            ])\n          }\n\n          // Opening.\n          nextEvents = push(nextEvents, [\n            ['enter', group, context],\n            ['enter', openingSequence, context],\n            ['exit', openingSequence, context],\n            ['enter', text, context]\n          ])\n\n          // Always populated by defaults.\n\n          // Between.\n          nextEvents = push(\n            nextEvents,\n            resolveAll(\n              context.parser.constructs.insideSpan.null,\n              events.slice(open + 1, index),\n              context\n            )\n          )\n\n          // Closing.\n          nextEvents = push(nextEvents, [\n            ['exit', text, context],\n            ['enter', closingSequence, context],\n            ['exit', closingSequence, context],\n            ['exit', group, context]\n          ])\n\n          // If there are more markers in the closing, add them after.\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2\n            nextEvents = push(nextEvents, [\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context]\n            ])\n          } else {\n            offset = 0\n          }\n          splice(events, open - 1, index - open + 3, nextEvents)\n          index = open + nextEvents.length - offset - 2\n          break\n        }\n      }\n    }\n  }\n\n  // Remove remaining sequences.\n  index = -1\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data'\n    }\n  }\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null\n  const previous = this.previous\n  const before = classifyCharacter(previous)\n\n  /** @type {NonNullable<Code>} */\n  let marker\n  return start\n\n  /**\n   * Before a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    marker = code\n    effects.enter('attentionSequence')\n    return inside(code)\n  }\n\n  /**\n   * In a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return inside\n    }\n    const token = effects.exit('attentionSequence')\n\n    // To do: next major: move this to resolver, just like `markdown-rs`.\n    const after = classifyCharacter(code)\n\n    // Always populated by defaults.\n\n    const open =\n      !after || (after === 2 && before) || attentionMarkers.includes(code)\n    const close =\n      !before || (before === 2 && after) || attentionMarkers.includes(previous)\n    token._open = Boolean(marker === 42 ? open : open && (before || !close))\n    token._close = Boolean(marker === 42 ? close : close && (after || !open))\n    return ok(code)\n  }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {undefined}\n */\nfunction movePoint(point, offset) {\n  point.column += offset\n  point.offset += offset\n  point._bufferIndex += offset\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/autolink.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n/** @type {Construct} */\nconst autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 0\n  return start\n\n  /**\n   * Start of an autolink.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *      ^\n   * > | a<user@example.com>b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('autolink')\n    effects.enter('autolinkMarker')\n    effects.consume(code)\n    effects.exit('autolinkMarker')\n    effects.enter('autolinkProtocol')\n    return open\n  }\n\n  /**\n   * After `<`, at protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *       ^\n   * > | a<user@example.com>b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return schemeOrEmailAtext\n    }\n    return emailAtext(code)\n  }\n\n  /**\n   * At second byte of protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeOrEmailAtext(code) {\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n      // Count the previous alphabetical from `open` too.\n      size = 1\n      return schemeInsideOrEmailAtext(code)\n    }\n    return emailAtext(code)\n  }\n\n  /**\n   * In ambiguous protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code)\n      size = 0\n      return urlInside\n    }\n\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (\n      (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n      size++ < 32\n    ) {\n      effects.consume(code)\n      return schemeInsideOrEmailAtext\n    }\n    size = 0\n    return emailAtext(code)\n  }\n\n  /**\n   * After protocol, in URL.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit('autolinkProtocol')\n      effects.enter('autolinkMarker')\n      effects.consume(code)\n      effects.exit('autolinkMarker')\n      effects.exit('autolink')\n      return ok\n    }\n\n    // ASCII control, space, or `<`.\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code)\n    }\n    effects.consume(code)\n    return urlInside\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code)\n      return emailAtSignOrDot\n    }\n    if (asciiAtext(code)) {\n      effects.consume(code)\n      return emailAtext\n    }\n    return nok(code)\n  }\n\n  /**\n   * In label, after at-sign or dot.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                 ^       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n  }\n\n  /**\n   * In label, where `.` and `>` are allowed.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n    if (code === 62) {\n      // Exit, then change the token type.\n      effects.exit('autolinkProtocol').type = 'autolinkEmail'\n      effects.enter('autolinkMarker')\n      effects.consume(code)\n      effects.exit('autolinkMarker')\n      effects.exit('autolink')\n      return ok\n    }\n    return emailValue(code)\n  }\n\n  /**\n   * In label, where `.` and `>` are *not* allowed.\n   *\n   * Though, this is also used in `emailLabel` to parse other values.\n   *\n   * ```markdown\n   * > | a<user.name@ex-ample.com>b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailValue(code) {\n    // ASCII alphanumeric or `-`.\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      const next = code === 45 ? emailValue : emailLabel\n      effects.consume(code)\n      return next\n    }\n    return nok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/html-text.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this\n  /** @type {NonNullable<Code> | undefined} */\n  let marker\n  /** @type {number} */\n  let index\n  /** @type {State} */\n  let returnState\n  return start\n\n  /**\n   * Start of HTML (text).\n   *\n   * ```markdown\n   * > | a <b> c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('htmlText')\n    effects.enter('htmlTextData')\n    effects.consume(code)\n    return open\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | a <b> c\n   *        ^\n   * > | a <!doctype> c\n   *        ^\n   * > | a <!--b--> c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationOpen\n    }\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n    if (code === 63) {\n      effects.consume(code)\n      return instruction\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | a <!doctype> c\n   *         ^\n   * > | a <!--b--> c\n   *         ^\n   * > | a <![CDATA[>&<]]> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentOpenInside\n    }\n    if (code === 91) {\n      effects.consume(code)\n      index = 0\n      return cdataOpenInside\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return declaration\n    }\n    return nok(code)\n  }\n\n  /**\n   * In a comment, after `<!-`, at another `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentEnd\n    }\n    return nok(code)\n  }\n\n  /**\n   * In comment.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function comment(code) {\n    if (code === null) {\n      return nok(code)\n    }\n    if (code === 45) {\n      effects.consume(code)\n      return commentClose\n    }\n    if (markdownLineEnding(code)) {\n      returnState = comment\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return comment\n  }\n\n  /**\n   * In comment, after `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentEnd\n    }\n    return comment(code)\n  }\n\n  /**\n   * In comment, after `--`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentEnd(code) {\n    return code === 62\n      ? end(code)\n      : code === 45\n      ? commentClose(code)\n      : comment(code)\n  }\n\n  /**\n   * After `<![`, in CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *          ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = 'CDATA['\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === value.length ? cdata : cdataOpenInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * In CDATA.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdata(code) {\n    if (code === null) {\n      return nok(code)\n    }\n    if (code === 93) {\n      effects.consume(code)\n      return cdataClose\n    }\n    if (markdownLineEnding(code)) {\n      returnState = cdata\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return cdata\n  }\n\n  /**\n   * In CDATA, after `]`, at another `]`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n    return cdata(code)\n  }\n\n  /**\n   * In CDATA, after `]]`, at `>`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code)\n    }\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n    return cdata(code)\n  }\n\n  /**\n   * In declaration.\n   *\n   * ```markdown\n   * > | a <!b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code)\n    }\n    if (markdownLineEnding(code)) {\n      returnState = declaration\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return declaration\n  }\n\n  /**\n   * In instruction.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instruction(code) {\n    if (code === null) {\n      return nok(code)\n    }\n    if (code === 63) {\n      effects.consume(code)\n      return instructionClose\n    }\n    if (markdownLineEnding(code)) {\n      returnState = instruction\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return instruction\n  }\n\n  /**\n   * In instruction, after `?`, at `>`.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code)\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n    return nok(code)\n  }\n\n  /**\n   * After `</x`, in a tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagClose(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n    return tagCloseBetween(code)\n  }\n\n  /**\n   * In closing tag, after tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween\n      return lineEndingBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagCloseBetween\n    }\n    return end(code)\n  }\n\n  /**\n   * After `<x`, in opening tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpen(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In opening tag, after tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return end\n    }\n\n    // ASCII alphabetical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween\n      return lineEndingBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenBetween\n    }\n    return end(code)\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeName(code) {\n    // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n    return tagOpenAttributeNameAfter(code)\n  }\n\n  /**\n   * After attribute name, before initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter\n      return lineEndingBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeNameAfter\n    }\n    return tagOpenBetween(code)\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return tagOpenAttributeValueQuoted\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore\n      return lineEndingBefore(code)\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n    effects.consume(code)\n    return tagOpenAttributeValueUnquoted\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code)\n      marker = undefined\n      return tagOpenAttributeValueQuotedAfter\n    }\n    if (code === null) {\n      return nok(code)\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted\n      return lineEndingBefore(code)\n    }\n    effects.consume(code)\n    return tagOpenAttributeValueQuoted\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 60 ||\n      code === 61 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n    effects.consume(code)\n    return tagOpenAttributeValueUnquoted\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the end\n   * of the tag.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In certain circumstances of a tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code)\n      effects.exit('htmlTextData')\n      effects.exit('htmlText')\n      return ok\n    }\n    return nok(code)\n  }\n\n  /**\n   * At eol.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   * > | a <!--a\n   *            ^\n   *   | b-->\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingBefore(code) {\n    effects.exit('htmlTextData')\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return lineEndingAfter\n  }\n\n  /**\n   * After eol, at optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfter(code) {\n    // Always populated by defaults.\n\n    return markdownSpace(code)\n      ? factorySpace(\n          effects,\n          lineEndingAfterPrefix,\n          'linePrefix',\n          self.parser.constructs.disable.null.includes('codeIndented')\n            ? undefined\n            : 4\n        )(code)\n      : lineEndingAfterPrefix(code)\n  }\n\n  /**\n   * After eol, after optional whitespace.\n   *\n   * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfterPrefix(code) {\n    effects.enter('htmlTextData')\n    return returnState(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/label-start-link.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n/** @type {Construct} */\nconst labelStartLink = {\n  name: 'labelStartLink',\n  tokenize: tokenizeLabelStartLink,\n  resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this\n  return start\n\n  /**\n   * Start of label (link) start.\n   *\n   * ```markdown\n   * > | a [b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('labelLink')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelLink')\n    return after\n  }\n\n  /** @type {State} */\n  function after(code) {\n    // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n    // remove.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n      ? nok(code)\n      : ok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/hard-break-escape.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n/** @type {Construct} */\nconst hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start\n\n  /**\n   * Start of a hard break (escape).\n   *\n   * ```markdown\n   * > | a\\\n   *      ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('hardBreakEscape')\n    effects.consume(code)\n    return after\n  }\n\n  /**\n   * After `\\`, at eol.\n   *\n   * ```markdown\n   * > | a\\\n   *       ^\n   *   | b\n   * ```\n   *\n   *  @type {State}\n   */\n  function after(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit('hardBreakEscape')\n      return ok(code)\n    }\n    return nok(code)\n  }\n}\n\n;// ./node_modules/micromark-core-commonmark/lib/code-text.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n/** @type {Construct} */\nconst codeText = {\n  name: 'codeText',\n  tokenize: tokenizeCodeText,\n  resolve: resolveCodeText,\n  previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4\n  let headEnterIndex = 3\n  /** @type {number} */\n  let index\n  /** @type {number | undefined} */\n  let enter\n\n  // If we start and end with an EOL or a space.\n  if (\n    (events[headEnterIndex][1].type === 'lineEnding' ||\n      events[headEnterIndex][1].type === 'space') &&\n    (events[tailExitIndex][1].type === 'lineEnding' ||\n      events[tailExitIndex][1].type === 'space')\n  ) {\n    index = headEnterIndex\n\n    // And we have data.\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === 'codeTextData') {\n        // Then we have padding.\n        events[headEnterIndex][1].type = 'codeTextPadding'\n        events[tailExitIndex][1].type = 'codeTextPadding'\n        headEnterIndex += 2\n        tailExitIndex -= 2\n        break\n      }\n    }\n  }\n\n  // Merge adjacent spaces and data.\n  index = headEnterIndex - 1\n  tailExitIndex++\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n        enter = index\n      }\n    } else if (\n      index === tailExitIndex ||\n      events[index][1].type === 'lineEnding'\n    ) {\n      events[enter][1].type = 'codeTextData'\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end\n        events.splice(enter + 2, index - enter - 2)\n        tailExitIndex -= index - enter - 2\n        index = enter + 2\n      }\n      enter = undefined\n    }\n  }\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return (\n    code !== 96 ||\n    this.events[this.events.length - 1][1].type === 'characterEscape'\n  )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this\n  let sizeOpen = 0\n  /** @type {number} */\n  let size\n  /** @type {Token} */\n  let token\n  return start\n\n  /**\n   * Start of code (text).\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * > | \\`a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('codeText')\n    effects.enter('codeTextSequence')\n    return sequenceOpen(code)\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 96) {\n      effects.consume(code)\n      sizeOpen++\n      return sequenceOpen\n    }\n    effects.exit('codeTextSequence')\n    return between(code)\n  }\n\n  /**\n   * Between something and something else.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function between(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code)\n    }\n\n    // To do: next major: don’t do spaces in resolve, but when compiling,\n    // like `markdown-rs`.\n    // Tabs don’t work, and virtual spaces don’t make sense.\n    if (code === 32) {\n      effects.enter('space')\n      effects.consume(code)\n      effects.exit('space')\n      return between\n    }\n\n    // Closing fence? Could also be data.\n    if (code === 96) {\n      token = effects.enter('codeTextSequence')\n      size = 0\n      return sequenceClose(code)\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return between\n    }\n\n    // Data.\n    effects.enter('codeTextData')\n    return data(code)\n  }\n\n  /**\n   * In data.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (\n      code === null ||\n      code === 32 ||\n      code === 96 ||\n      markdownLineEnding(code)\n    ) {\n      effects.exit('codeTextData')\n      return between(code)\n    }\n    effects.consume(code)\n    return data\n  }\n\n  /**\n   * In closing sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceClose(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code)\n      size++\n      return sequenceClose\n    }\n\n    // Done!\n    if (size === sizeOpen) {\n      effects.exit('codeTextSequence')\n      effects.exit('codeText')\n      return ok(code)\n    }\n\n    // More or less accents: mark as data.\n    token.type = 'codeTextData'\n    return data(code)\n  }\n}\n\n;// ./node_modules/micromark/lib/constructs.js\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\n\n\n\n/** @satisfies {Extension['document']} */\nconst constructs_document = {\n  [42]: list_list,\n  [43]: list_list,\n  [45]: list_list,\n  [48]: list_list,\n  [49]: list_list,\n  [50]: list_list,\n  [51]: list_list,\n  [52]: list_list,\n  [53]: list_list,\n  [54]: list_list,\n  [55]: list_list,\n  [56]: list_list,\n  [57]: list_list,\n  [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nconst contentInitial = {\n  [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nconst flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nconst constructs_flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nconst constructs_string = {\n  [38]: characterReference,\n  [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nconst constructs_text = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nconst insideSpan = {\n  null: [attention, resolver]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nconst attentionMarkers = {\n  null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nconst disable = {\n  null: []\n}\n\n;// ./node_modules/micromark/lib/parse.js\n/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\n\n\n\n\n\n\n\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nfunction parse_parse(options) {\n  const settings = options || {}\n  const constructs =\n    /** @type {FullNormalizedExtension} */\n    combineExtensions([constructs_namespaceObject, ...(settings.extensions || [])])\n\n  /** @type {ParseContext} */\n  const parser = {\n    defined: [],\n    lazy: {},\n    constructs,\n    content: create(content),\n    document: create(document_document),\n    flow: create(flow),\n    string: create(string),\n    text: create(text_text)\n  }\n  return parser\n\n  /**\n   * @param {InitialConstruct} initial\n   */\n  function create(initial) {\n    return creator\n    /** @type {Create} */\n    function creator(from) {\n      return createTokenizer(parser, initial, from)\n    }\n  }\n}\n\n;// ./node_modules/micromark/lib/preprocess.js\n/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array<Chunk>}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nfunction preprocess() {\n  let column = 1\n  let buffer = ''\n  /** @type {boolean | undefined} */\n  let start = true\n  /** @type {boolean | undefined} */\n  let atCarriageReturn\n  return preprocessor\n\n  /** @type {Preprocessor} */\n  // eslint-disable-next-line complexity\n  function preprocessor(value, encoding, end) {\n    /** @type {Array<Chunk>} */\n    const chunks = []\n    /** @type {RegExpMatchArray | null} */\n    let match\n    /** @type {number} */\n    let next\n    /** @type {number} */\n    let startPosition\n    /** @type {number} */\n    let endPosition\n    /** @type {Code} */\n    let code\n    value =\n      buffer +\n      (typeof value === 'string'\n        ? value.toString()\n        : new TextDecoder(encoding || undefined).decode(value))\n    startPosition = 0\n    buffer = ''\n    if (start) {\n      // To do: `markdown-rs` actually parses BOMs (byte order mark).\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++\n      }\n      start = undefined\n    }\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition\n      match = search.exec(value)\n      endPosition =\n        match && match.index !== undefined ? match.index : value.length\n      code = value.charCodeAt(endPosition)\n      if (!match) {\n        buffer = value.slice(startPosition)\n        break\n      }\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3)\n        atCarriageReturn = undefined\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5)\n          atCarriageReturn = undefined\n        }\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition))\n          column += endPosition - startPosition\n        }\n        switch (code) {\n          case 0: {\n            chunks.push(65533)\n            column++\n            break\n          }\n          case 9: {\n            next = Math.ceil(column / 4) * 4\n            chunks.push(-2)\n            while (column++ < next) chunks.push(-1)\n            break\n          }\n          case 10: {\n            chunks.push(-4)\n            column = 1\n            break\n          }\n          default: {\n            atCarriageReturn = true\n            column = 1\n          }\n        }\n      }\n      startPosition = endPosition + 1\n    }\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5)\n      if (buffer) chunks.push(buffer)\n      chunks.push(null)\n    }\n    return chunks\n  }\n}\n\n;// ./node_modules/micromark-util-decode-numeric-character-reference/index.js\n/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n *   Character.\n */\nfunction decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base);\n  if (\n  // C0 except for HT, LF, FF, CR, space.\n  code < 9 || code === 11 || code > 13 && code < 32 ||\n  // Control character (DEL) of C0, and C1 controls.\n  code > 126 && code < 160 ||\n  // Lone high surrogates and low surrogates.\n  code > 55_295 && code < 57_344 ||\n  // Noncharacters.\n  code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n  (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n  // Out of range\n  code > 1_114_111) {\n    return \"\\uFFFD\";\n  }\n  return String.fromCodePoint(code);\n}\n;// ./node_modules/micromark-util-decode-string/index.js\n\n\nconst characterEscapeOrReference =\n  /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n *   Value to decode.\n * @returns {string}\n *   Decoded value.\n */\nfunction decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1\n  }\n\n  // Reference.\n  const head = $2.charCodeAt(0)\n  if (head === 35) {\n    const head = $2.charCodeAt(1)\n    const hex = head === 120 || head === 88\n    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n  }\n  return decodeNamedCharacterReference($2) || $0\n}\n\n;// ./node_modules/unist-util-stringify-position/lib/index.js\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n *   Node, position, or point.\n * @returns {string}\n *   Pretty printed positional info of a node (`string`).\n *\n *   In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n *   or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n *   column, `s` for `start`, and `e` for end.\n *   An empty string (`''`) is returned if the given value is neither `node`,\n *   `position`, nor `point`.\n */\nfunction stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n\n;// ./node_modules/mdast-util-from-markdown/lib/index.js\n/**\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Omit<Parent, 'children' | 'type'> & {type: 'fragment', children: Array<PhrasingContent>}} Fragment\n */\n\n/**\n * @callback Transform\n *   Extra transform, to change the AST afterwards.\n * @param {Root} tree\n *   Tree to transform.\n * @returns {Root | null | undefined | void}\n *   New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n *   Handle a token.\n * @param {CompileContext} this\n *   Context.\n * @param {Token} token\n *   Current token.\n * @returns {undefined | void}\n *   Nothing.\n *\n * @typedef {Record<string, Handle>} Handles\n *   Token types mapping to handles\n *\n * @callback OnEnterError\n *   Handle the case where the `right` token is open, but it is closed (by the\n *   `left` token) or because we reached the end of the document.\n * @param {Omit<CompileContext, 'sliceSerialize'>} this\n *   Context.\n * @param {Token | undefined} left\n *   Left token.\n * @param {Token} right\n *   Right token.\n * @returns {undefined}\n *   Nothing.\n *\n * @callback OnExitError\n *   Handle the case where the `right` token is open but it is closed by\n *   exiting the `left` token.\n * @param {Omit<CompileContext, 'sliceSerialize'>} this\n *   Context.\n * @param {Token} left\n *   Left token.\n * @param {Token} right\n *   Right token.\n * @returns {undefined}\n *   Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n *   Open token on the stack, with an optional error handler for when\n *   that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n *   Configuration.\n *\n *   We have our defaults, but extensions will add more.\n * @property {Array<string>} canContainEols\n *   Token types where line endings are used.\n * @property {Handles} enter\n *   Opening handles.\n * @property {Handles} exit\n *   Closing handles.\n * @property {Array<Transform>} transforms\n *   Tree transforms.\n *\n * @typedef {Partial<Config>} Extension\n *   Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n *   mdast compiler context.\n * @property {Array<Fragment | Nodes>} stack\n *   Stack of nodes.\n * @property {Array<TokenTuple>} tokenStack\n *   Stack of tokens.\n * @property {(this: CompileContext) => undefined} buffer\n *   Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n *   Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Nodes, token: Token, onError?: OnEnterError) => undefined} enter\n *   Enter a node.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => undefined} exit\n *   Exit a node.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n *   Get the string value of a token.\n * @property {Config} config\n *   Configuration.\n * @property {CompileData} data\n *   Info passed around; key/value store.\n *\n * @typedef FromMarkdownOptions\n *   Configuration for how to build mdast.\n * @property {Array<Extension | Array<Extension>> | null | undefined} [mdastExtensions]\n *   Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n *   Configuration.\n */\n\n\n\n\n\n\n\n\nconst lib_own = {}.hasOwnProperty\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n *   Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n *   Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {Root}\n *   mdast tree.\n */\nfunction fromMarkdown(value, encoding, options) {\n  if (typeof encoding !== 'string') {\n    options = encoding\n    encoding = undefined\n  }\n  return compiler(options)(\n    postprocess(\n      parse_parse(options).document().write(preprocess()(value, encoding, true))\n    )\n  )\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n  /** @type {Config} */\n  const config = {\n    transforms: [],\n    canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n    enter: {\n      autolink: opener(link),\n      autolinkProtocol: onenterdata,\n      autolinkEmail: onenterdata,\n      atxHeading: opener(heading),\n      blockQuote: opener(blockQuote),\n      characterEscape: onenterdata,\n      characterReference: onenterdata,\n      codeFenced: opener(codeFlow),\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: opener(codeFlow, buffer),\n      codeText: opener(codeText, buffer),\n      codeTextData: onenterdata,\n      data: onenterdata,\n      codeFlowValue: onenterdata,\n      definition: opener(definition),\n      definitionDestinationString: buffer,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: opener(emphasis),\n      hardBreakEscape: opener(hardBreak),\n      hardBreakTrailing: opener(hardBreak),\n      htmlFlow: opener(html, buffer),\n      htmlFlowData: onenterdata,\n      htmlText: opener(html, buffer),\n      htmlTextData: onenterdata,\n      image: opener(image),\n      label: buffer,\n      link: opener(link),\n      listItem: opener(listItem),\n      listItemValue: onenterlistitemvalue,\n      listOrdered: opener(list, onenterlistordered),\n      listUnordered: opener(list),\n      paragraph: opener(paragraph),\n      reference: onenterreference,\n      referenceString: buffer,\n      resourceDestinationString: buffer,\n      resourceTitleString: buffer,\n      setextHeading: opener(heading),\n      strong: opener(strong),\n      thematicBreak: opener(thematicBreak)\n    },\n    exit: {\n      atxHeading: closer(),\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolink: closer(),\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: closer(),\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      codeFenced: closer(onexitcodefenced),\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: onexitcodefencedfencemeta,\n      codeFlowValue: onexitdata,\n      codeIndented: closer(onexitcodeindented),\n      codeText: closer(onexitcodetext),\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: closer(),\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: closer(),\n      hardBreakEscape: closer(onexithardbreak),\n      hardBreakTrailing: closer(onexithardbreak),\n      htmlFlow: closer(onexithtmlflow),\n      htmlFlowData: onexitdata,\n      htmlText: closer(onexithtmltext),\n      htmlTextData: onexitdata,\n      image: closer(onexitimage),\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: closer(onexitlink),\n      listItem: closer(),\n      listOrdered: closer(),\n      listUnordered: closer(),\n      paragraph: closer(),\n      referenceString: onexitreferencestring,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      resource: onexitresource,\n      setextHeading: closer(onexitsetextheading),\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: closer(),\n      thematicBreak: closer()\n    }\n  }\n  configure(config, (options || {}).mdastExtensions || [])\n\n  /** @type {CompileData} */\n  const data = {}\n  return compile\n\n  /**\n   * Turn micromark events into an mdast tree.\n   *\n   * @param {Array<Event>} events\n   *   Events.\n   * @returns {Root}\n   *   mdast tree.\n   */\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: []\n    }\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n    const context = {\n      stack: [tree],\n      tokenStack: [],\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      data\n    }\n    /** @type {Array<number>} */\n    const listStack = []\n    let index = -1\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (\n        events[index][1].type === 'listOrdered' ||\n        events[index][1].type === 'listUnordered'\n      ) {\n        if (events[index][0] === 'enter') {\n          listStack.push(index)\n        } else {\n          const tail = listStack.pop()\n          index = prepareList(events, tail, index)\n        }\n      }\n    }\n    index = -1\n    while (++index < events.length) {\n      const handler = config[events[index][0]]\n      if (lib_own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(\n          Object.assign(\n            {\n              sliceSerialize: events[index][2].sliceSerialize\n            },\n            context\n          ),\n          events[index][1]\n        )\n      }\n    }\n\n    // Handle tokens still being open.\n    if (context.tokenStack.length > 0) {\n      const tail = context.tokenStack[context.tokenStack.length - 1]\n      const handler = tail[1] || defaultOnError\n      handler.call(context, undefined, tail[0])\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: lib_point(\n        events.length > 0\n          ? events[0][1].start\n          : {\n              line: 1,\n              column: 1,\n              offset: 0\n            }\n      ),\n      end: lib_point(\n        events.length > 0\n          ? events[events.length - 2][1].end\n          : {\n              line: 1,\n              column: 1,\n              offset: 0\n            }\n      )\n    }\n\n    // Call transforms.\n    index = -1\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree\n    }\n    return tree\n  }\n\n  /**\n   * @param {Array<Event>} events\n   * @param {number} start\n   * @param {number} length\n   * @returns {number}\n   */\n  function prepareList(events, start, length) {\n    let index = start - 1\n    let containerBalance = -1\n    let listSpread = false\n    /** @type {Token | undefined} */\n    let listItem\n    /** @type {number | undefined} */\n    let lineIndex\n    /** @type {number | undefined} */\n    let firstBlankLineIndex\n    /** @type {boolean | undefined} */\n    let atMarker\n    while (++index <= length) {\n      const event = events[index]\n      switch (event[1].type) {\n        case 'listUnordered':\n        case 'listOrdered':\n        case 'blockQuote': {\n          if (event[0] === 'enter') {\n            containerBalance++\n          } else {\n            containerBalance--\n          }\n          atMarker = undefined\n          break\n        }\n        case 'lineEndingBlank': {\n          if (event[0] === 'enter') {\n            if (\n              listItem &&\n              !atMarker &&\n              !containerBalance &&\n              !firstBlankLineIndex\n            ) {\n              firstBlankLineIndex = index\n            }\n            atMarker = undefined\n          }\n          break\n        }\n        case 'linePrefix':\n        case 'listItemValue':\n        case 'listItemMarker':\n        case 'listItemPrefix':\n        case 'listItemPrefixWhitespace': {\n          // Empty.\n\n          break\n        }\n        default: {\n          atMarker = undefined\n        }\n      }\n      if (\n        (!containerBalance &&\n          event[0] === 'enter' &&\n          event[1].type === 'listItemPrefix') ||\n        (containerBalance === -1 &&\n          event[0] === 'exit' &&\n          (event[1].type === 'listUnordered' ||\n            event[1].type === 'listOrdered'))\n      ) {\n        if (listItem) {\n          let tailIndex = index\n          lineIndex = undefined\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex]\n            if (\n              tailEvent[1].type === 'lineEnding' ||\n              tailEvent[1].type === 'lineEndingBlank'\n            ) {\n              if (tailEvent[0] === 'exit') continue\n              if (lineIndex) {\n                events[lineIndex][1].type = 'lineEndingBlank'\n                listSpread = true\n              }\n              tailEvent[1].type = 'lineEnding'\n              lineIndex = tailIndex\n            } else if (\n              tailEvent[1].type === 'linePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n              tailEvent[1].type === 'blockQuoteMarker' ||\n              tailEvent[1].type === 'listItemIndent'\n            ) {\n              // Empty\n            } else {\n              break\n            }\n          }\n          if (\n            firstBlankLineIndex &&\n            (!lineIndex || firstBlankLineIndex < lineIndex)\n          ) {\n            listItem._spread = true\n          }\n\n          // Fix position.\n          listItem.end = Object.assign(\n            {},\n            lineIndex ? events[lineIndex][1].start : event[1].end\n          )\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n          index++\n          length++\n        }\n\n        // Create a new list item.\n        if (event[1].type === 'listItemPrefix') {\n          /** @type {Token} */\n          const item = {\n            type: 'listItem',\n            _spread: false,\n            start: Object.assign({}, event[1].start),\n            // @ts-expect-error: we’ll add `end` in a second.\n            end: undefined\n          }\n          listItem = item\n          events.splice(index, 0, ['enter', item, event[2]])\n          index++\n          length++\n          firstBlankLineIndex = undefined\n          atMarker = true\n        }\n      }\n    }\n    events[start][1]._spread = listSpread\n    return length\n  }\n\n  /**\n   * Create an opener handle.\n   *\n   * @param {(token: Token) => Nodes} create\n   *   Create a node.\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function opener(create, and) {\n    return open\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function open(token) {\n      enter.call(this, create(token), token)\n      if (and) and.call(this, token)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @returns {undefined}\n   */\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    })\n  }\n\n  /**\n   * @this {CompileContext}\n   *   Context.\n   * @param {Nodes} node\n   *   Node to enter.\n   * @param {Token} token\n   *   Corresponding token.\n   * @param {OnEnterError | undefined} [errorHandler]\n   *   Handle the case where this token is open, but it is closed by something else.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1]\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children\n    siblings.push(node)\n    this.stack.push(node)\n    this.tokenStack.push([token, errorHandler])\n    node.position = {\n      start: lib_point(token.start),\n      // @ts-expect-error: `end` will be patched later.\n      end: undefined\n    }\n  }\n\n  /**\n   * Create a closer handle.\n   *\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function closer(and) {\n    return close\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function close(token) {\n      if (and) and.call(this, token)\n      exit.call(this, token)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   *   Context.\n   * @param {Token} token\n   *   Corresponding token.\n   * @param {OnExitError | undefined} [onExitError]\n   *   Handle the case where another token is open.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function exit(token, onExitError) {\n    const node = this.stack.pop()\n    const open = this.tokenStack.pop()\n    if (!open) {\n      throw new Error(\n        'Cannot close `' +\n          token.type +\n          '` (' +\n          stringifyPosition({\n            start: token.start,\n            end: token.end\n          }) +\n          '): it’s not open'\n      )\n    } else if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0])\n      } else {\n        const handler = open[1] || defaultOnError\n        handler.call(this, token, open[0])\n      }\n    }\n    node.position.end = lib_point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @returns {string}\n   */\n  function resume() {\n    return mdast_util_to_string_lib_toString(this.stack.pop())\n  }\n\n  //\n  // Handlers.\n  //\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistordered() {\n    this.data.expectingFirstListItemValue = true\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistitemvalue(token) {\n    if (this.data.expectingFirstListItemValue) {\n      const ancestor = this.stack[this.stack.length - 2]\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n      this.data.expectingFirstListItemValue = undefined\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.lang = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfencemeta() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.meta = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (this.data.flowCodeInside) return\n    this.buffer()\n    this.data.flowCodeInside = true\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefenced() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n    this.data.flowCodeInside = undefined\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodeindented() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitionlabelstring(token) {\n    const label = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.label = label\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiontitlestring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.title = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.url = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitatxheadingsequence(token) {\n    const node = this.stack[this.stack.length - 1]\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length\n      node.depth = depth\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadingtext() {\n    this.data.setextHeadingSlurpLineEnding = true\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadinglinesequence(token) {\n    const node = this.stack[this.stack.length - 1]\n    node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheading() {\n    this.data.setextHeadingSlurpLineEnding = undefined\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterdata(token) {\n    const node = this.stack[this.stack.length - 1]\n    /** @type {Array<Nodes>} */\n    const siblings = node.children\n    let tail = siblings[siblings.length - 1]\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text()\n      tail.position = {\n        start: lib_point(token.start),\n        // @ts-expect-error: we’ll add `end` later.\n        end: undefined\n      }\n      siblings.push(tail)\n    }\n    this.stack.push(tail)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop()\n    tail.value += this.sliceSerialize(token)\n    tail.position.end = lib_point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1]\n    // If we’re at a hard break, include the line ending in there.\n    if (this.data.atHardBreak) {\n      const tail = context.children[context.children.length - 1]\n      tail.position.end = lib_point(token.end)\n      this.data.atHardBreak = undefined\n      return\n    }\n    if (\n      !this.data.setextHeadingSlurpLineEnding &&\n      config.canContainEols.includes(context.type)\n    ) {\n      onenterdata.call(this, token)\n      onexitdata.call(this, token)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithardbreak() {\n    this.data.atHardBreak = true\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmlflow() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmltext() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcodetext() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.value = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlink() {\n    const node = this.stack[this.stack.length - 1]\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut'\n      node.type += 'Reference'\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType\n      // @ts-expect-error: mutate.\n      delete node.url\n      delete node.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier\n      // @ts-expect-error: mutate.\n      delete node.label\n    }\n    this.data.referenceType = undefined\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitimage() {\n    const node = this.stack[this.stack.length - 1]\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut'\n      node.type += 'Reference'\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType\n      // @ts-expect-error: mutate.\n      delete node.url\n      delete node.title\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier\n      // @ts-expect-error: mutate.\n      delete node.label\n    }\n    this.data.referenceType = undefined\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabeltext(token) {\n    const string = this.sliceSerialize(token)\n    const ancestor = this.stack[this.stack.length - 2]\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    ancestor.label = decodeString(string)\n    // @ts-expect-error: same as above.\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabel() {\n    const fragment = this.stack[this.stack.length - 1]\n    const value = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    // Assume a reference.\n    this.data.inReference = true\n    if (node.type === 'link') {\n      /** @type {Array<PhrasingContent>} */\n      const children = fragment.children\n      node.children = children\n    } else {\n      node.alt = value\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.url = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    node.title = data\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresource() {\n    this.data.inReference = undefined\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterreference() {\n    this.data.referenceType = 'collapsed'\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitreferencestring(token) {\n    const label = this.resume()\n    const node = this.stack[this.stack.length - 1]\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    node.label = label\n    // @ts-expect-error: same as above.\n    node.identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n    this.data.referenceType = 'full'\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcharacterreferencemarker(token) {\n    this.data.characterReferenceType = token.type\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token)\n    const type = this.data.characterReferenceType\n    /** @type {string} */\n    let value\n    if (type) {\n      value = decodeNumericCharacterReference(\n        data,\n        type === 'characterReferenceMarkerNumeric' ? 10 : 16\n      )\n      this.data.characterReferenceType = undefined\n    } else {\n      const result = decodeNamedCharacterReference(data)\n      value = result\n    }\n    const tail = this.stack.pop()\n    tail.value += value\n    tail.position.end = lib_point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token)\n    const node = this.stack[this.stack.length - 1]\n    node.url = this.sliceSerialize(token)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token)\n    const node = this.stack[this.stack.length - 1]\n    node.url = 'mailto:' + this.sliceSerialize(token)\n  }\n\n  //\n  // Creaters.\n  //\n\n  /** @returns {Blockquote} */\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: []\n    }\n  }\n\n  /** @returns {Code} */\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: ''\n    }\n  }\n\n  /** @returns {InlineCode} */\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: ''\n    }\n  }\n\n  /** @returns {Definition} */\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    }\n  }\n\n  /** @returns {Emphasis} */\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: []\n    }\n  }\n\n  /** @returns {Heading} */\n  function heading() {\n    return {\n      type: 'heading',\n      // @ts-expect-error `depth` will be set later.\n      depth: 0,\n      children: []\n    }\n  }\n\n  /** @returns {Break} */\n  function hardBreak() {\n    return {\n      type: 'break'\n    }\n  }\n\n  /** @returns {Html} */\n  function html() {\n    return {\n      type: 'html',\n      value: ''\n    }\n  }\n\n  /** @returns {Image} */\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null\n    }\n  }\n\n  /** @returns {Link} */\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: []\n    }\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: []\n    }\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: []\n    }\n  }\n\n  /** @returns {Paragraph} */\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: []\n    }\n  }\n\n  /** @returns {Strong} */\n  function strong() {\n    return {\n      type: 'strong',\n      children: []\n    }\n  }\n\n  /** @returns {Text} */\n  function text() {\n    return {\n      type: 'text',\n      value: ''\n    }\n  }\n\n  /** @returns {ThematicBreak} */\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak'\n    }\n  }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n *   Point-like value.\n * @returns {Point}\n *   unist point.\n */\nfunction lib_point(d) {\n  return {\n    line: d.line,\n    column: d.column,\n    offset: d.offset\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n  let index = -1\n  while (++index < extensions.length) {\n    const value = extensions[index]\n    if (Array.isArray(value)) {\n      configure(combined, value)\n    } else {\n      extension(combined, value)\n    }\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n  /** @type {keyof Extension} */\n  let key\n  for (key in extension) {\n    if (lib_own.call(extension, key)) {\n      switch (key) {\n        case 'canContainEols': {\n          const right = extension[key]\n          if (right) {\n            combined[key].push(...right)\n          }\n          break\n        }\n        case 'transforms': {\n          const right = extension[key]\n          if (right) {\n            combined[key].push(...right)\n          }\n          break\n        }\n        case 'enter':\n        case 'exit': {\n          const right = extension[key]\n          if (right) {\n            Object.assign(combined[key], right)\n          }\n          break\n        }\n        // No default\n      }\n    }\n  }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error(\n      'Cannot close `' +\n        left.type +\n        '` (' +\n        stringifyPosition({\n          start: left.start,\n          end: left.end\n        }) +\n        '): a different token (`' +\n        right.type +\n        '`, ' +\n        stringifyPosition({\n          start: right.start,\n          end: right.end\n        }) +\n        ') is open'\n    )\n  } else {\n    throw new Error(\n      'Cannot close document, a token (`' +\n        right.type +\n        '`, ' +\n        stringifyPosition({\n          start: right.start,\n          end: right.end\n        }) +\n        ') is still open'\n    )\n  }\n}\n\n;// ./node_modules/remark-parse/lib/index.js\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\n\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction remarkParse(options) {\n  /** @type {Processor} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n\n  self.parser = parser\n\n  /**\n   * @type {Parser}\n   */\n  function parser(doc) {\n    return fromMarkdown(doc, {\n      ...self.data('settings'),\n      ...options,\n      // Note: these options are not in the readme.\n      // The goal is for them to be set by plugins on `data` instead of being\n      // passed by users.\n      extensions: self.data('micromarkExtensions') || [],\n      mdastExtensions: self.data('fromMarkdownExtensions') || []\n    })\n  }\n}\n\n;// ./node_modules/zwitch/index.js\n/**\n * @callback Handler\n *   Handle a value, with a certain ID field set to a certain value.\n *   The ID field is passed to `zwitch`, and it’s value is this function’s\n *   place on the `handlers` record.\n * @param {...any} parameters\n *   Arbitrary parameters passed to the zwitch.\n *   The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n *   Anything!\n */\n\n/**\n * @callback UnknownHandler\n *   Handle values that do have a certain ID field, but it’s set to a value\n *   that is not listed in the `handlers` record.\n * @param {unknown} value\n *   An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n *   Arbitrary parameters passed to the zwitch.\n * @returns {any}\n *   Anything!\n */\n\n/**\n * @callback InvalidHandler\n *   Handle values that do not have a certain ID field.\n * @param {unknown} value\n *   Any unknown value.\n * @param {...any} rest\n *   Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n *   This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n *   Configuration (required).\n * @property {Invalid} [invalid]\n *   Handler to use for invalid values.\n * @property {Unknown} [unknown]\n *   Handler to use for unknown values.\n * @property {Handlers} [handlers]\n *   Handlers to use.\n */\n\nconst zwitch_own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n *   Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n *   Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nfunction zwitch(key, options) {\n  const settings = options || {}\n\n  /**\n   * Handle one value.\n   *\n   * Based on the bound `key`, a respective handler will be called.\n   * If `value` is not an object, or doesn’t have a `key` property, the special\n   * “invalid” handler will be called.\n   * If `value` has an unknown `key`, the special “unknown” handler will be\n   * called.\n   *\n   * All arguments, and the context object, are passed through to the handler,\n   * and it’s result is returned.\n   *\n   * @this {unknown}\n   *   Any context object.\n   * @param {unknown} [value]\n   *   Any value.\n   * @param {...unknown} parameters\n   *   Arbitrary parameters passed to the zwitch.\n   * @property {Handler} invalid\n   *   Handle for values that do not have a certain ID field.\n   * @property {Handler} unknown\n   *   Handle values that do have a certain ID field, but it’s set to a value\n   *   that is not listed in the `handlers` record.\n   * @property {Handlers} handlers\n   *   Record of handlers.\n   * @returns {unknown}\n   *   Anything.\n   */\n  function one(value, ...parameters) {\n    /** @type {Handler|undefined} */\n    let fn = one.invalid\n    const handlers = one.handlers\n\n    if (value && zwitch_own.call(value, key)) {\n      // @ts-expect-error Indexable.\n      const id = String(value[key])\n      // @ts-expect-error Indexable.\n      fn = zwitch_own.call(handlers, id) ? handlers[id] : one.unknown\n    }\n\n    if (fn) {\n      return fn.call(this, value, ...parameters)\n    }\n  }\n\n  one.handlers = settings.handlers || {}\n  one.invalid = settings.invalid\n  one.unknown = settings.unknown\n\n  // @ts-expect-error: matches!\n  return one\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/configure.js\n/**\n * @import {Options, State} from './types.js'\n */\n\nconst configure_own = {}.hasOwnProperty\n\n/**\n * @param {State} base\n * @param {Options} extension\n * @returns {State}\n */\nfunction configure_configure(base, extension) {\n  let index = -1\n  /** @type {keyof Options} */\n  let key\n\n  // First do subextensions.\n  if (extension.extensions) {\n    while (++index < extension.extensions.length) {\n      configure_configure(base, extension.extensions[index])\n    }\n  }\n\n  for (key in extension) {\n    if (configure_own.call(extension, key)) {\n      switch (key) {\n        case 'extensions': {\n          // Empty.\n          break\n        }\n\n        /* c8 ignore next 4 */\n        case 'unsafe': {\n          configure_list(base[key], extension[key])\n          break\n        }\n\n        case 'join': {\n          configure_list(base[key], extension[key])\n          break\n        }\n\n        case 'handlers': {\n          map(base[key], extension[key])\n          break\n        }\n\n        default: {\n          // @ts-expect-error: matches.\n          base.options[key] = extension[key]\n        }\n      }\n    }\n  }\n\n  return base\n}\n\n/**\n * @template T\n * @param {Array<T>} left\n * @param {Array<T> | null | undefined} right\n */\nfunction configure_list(left, right) {\n  if (right) {\n    left.push(...right)\n  }\n}\n\n/**\n * @template T\n * @param {Record<string, T>} left\n * @param {Record<string, T> | null | undefined} right\n */\nfunction map(left, right) {\n  if (right) {\n    Object.assign(left, right)\n  }\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/blockquote.js\n/**\n * @import {Blockquote, Parents} from 'mdast'\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction blockquote(node, _, state, info) {\n  const exit = state.enter('blockquote')\n  const tracker = state.createTracker(info)\n  tracker.move('> ')\n  tracker.shift(2)\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    blockquote_map\n  )\n  exit()\n  return value\n}\n\n/** @type {Map} */\nfunction blockquote_map(line, _, blank) {\n  return '>' + (blank ? '' : ' ') + line\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js\n/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nfunction patternInScope(stack, pattern) {\n  return (\n    listInScope(stack, pattern.inConstruct, true) &&\n    !listInScope(stack, pattern.notInConstruct, false)\n  )\n}\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n  if (typeof list === 'string') {\n    list = [list]\n  }\n\n  if (!list || list.length === 0) {\n    return none\n  }\n\n  let index = -1\n\n  while (++index < list.length) {\n    if (stack.includes(list[index])) {\n      return true\n    }\n  }\n\n  return false\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/break.js\n/**\n * @import {Break, Parents} from 'mdast'\n * @import {Info, State} from 'mdast-util-to-markdown'\n */\n\n\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction hardBreak(_, _1, state, info) {\n  let index = -1\n\n  while (++index < state.unsafe.length) {\n    // If we can’t put eols in this construct (setext headings, tables), use a\n    // space instead.\n    if (\n      state.unsafe[index].character === '\\n' &&\n      patternInScope(state.stack, state.unsafe[index])\n    ) {\n      return /[ \\t]/.test(info.before) ? '' : ' '\n    }\n  }\n\n  return '\\\\\\n'\n}\n\n;// ./node_modules/longest-streak/index.js\n/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n *   Content to search in.\n * @param {string} substring\n *   Substring to look for, typically one character.\n * @returns {number}\n *   Count of most frequent adjacent `substring`s in `value`.\n */\nfunction longestStreak(value, substring) {\n  const source = String(value)\n  let index = source.indexOf(substring)\n  let expected = index\n  let count = 0\n  let max = 0\n\n  if (typeof substring !== 'string') {\n    throw new TypeError('Expected substring')\n  }\n\n  while (index !== -1) {\n    if (index === expected) {\n      if (++count > max) {\n        max = count\n      }\n    } else {\n      count = 1\n    }\n\n    expected = index + substring.length\n    index = source.indexOf(substring, expected)\n  }\n\n  return max\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js\n/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Code} from 'mdast'\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nfunction formatCodeAsIndented(node, state) {\n  return Boolean(\n    state.options.fences === false &&\n      node.value &&\n      // If there’s no info…\n      !node.lang &&\n      // And there’s a non-whitespace character…\n      /[^ \\r\\n]/.test(node.value) &&\n      // And the value doesn’t start or end in a blank…\n      !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n  )\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-fence.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['fence'], null | undefined>}\n */\nfunction checkFence(state) {\n  const marker = state.options.fence || '`'\n\n  if (marker !== '`' && marker !== '~') {\n    throw new Error(\n      'Cannot serialize code with `' +\n        marker +\n        '` for `options.fence`, expected `` ` `` or `~`'\n    )\n  }\n\n  return marker\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/code.js\n/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {Code, Parents} from 'mdast'\n */\n\n\n\n\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction code(node, _, state, info) {\n  const marker = checkFence(state)\n  const raw = node.value || ''\n  const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n  if (formatCodeAsIndented(node, state)) {\n    const exit = state.enter('codeIndented')\n    const value = state.indentLines(raw, code_map)\n    exit()\n    return value\n  }\n\n  const tracker = state.createTracker(info)\n  const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n  const exit = state.enter('codeFenced')\n  let value = tracker.move(sequence)\n\n  if (node.lang) {\n    const subexit = state.enter(`codeFencedLang${suffix}`)\n    value += tracker.move(\n      state.safe(node.lang, {\n        before: value,\n        after: ' ',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  if (node.lang && node.meta) {\n    const subexit = state.enter(`codeFencedMeta${suffix}`)\n    value += tracker.move(' ')\n    value += tracker.move(\n      state.safe(node.meta, {\n        before: value,\n        after: '\\n',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  value += tracker.move('\\n')\n\n  if (raw) {\n    value += tracker.move(raw + '\\n')\n  }\n\n  value += tracker.move(sequence)\n  exit()\n  return value\n}\n\n/** @type {Map} */\nfunction code_map(line, _, blank) {\n  return (blank ? '' : '    ') + line\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-quote.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['quote'], null | undefined>}\n */\nfunction checkQuote(state) {\n  const marker = state.options.quote || '\"'\n\n  if (marker !== '\"' && marker !== \"'\") {\n    throw new Error(\n      'Cannot serialize title with `' +\n        marker +\n        '` for `options.quote`, expected `\"`, or `\\'`'\n    )\n  }\n\n  return marker\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/definition.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Definition, Parents} from 'mdast'\n */\n\n\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction definition_definition(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('definition')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.safe(state.associationId(node), {\n      before: value,\n      after: ']',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move(']: ')\n\n  subexit()\n\n  if (\n    // If there’s no url, or…\n    !node.url ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : '\\n',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  exit()\n\n  return value\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['emphasis'], null | undefined>}\n */\nfunction checkEmphasis(state) {\n  const marker = state.options.emphasis || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize emphasis with `' +\n        marker +\n        '` for `options.emphasis`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js\n/**\n * Encode a code point as a character reference.\n *\n * @param {number} code\n *   Code point to encode.\n * @returns {string}\n *   Encoded character reference.\n */\nfunction encodeCharacterReference(code) {\n  return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/encode-info.js\n/**\n * @import {EncodeSides} from '../types.js'\n */\n\n\n\n/**\n * Check whether to encode (as a character reference) the characters\n * surrounding an attention run.\n *\n * Which characters are around an attention run influence whether it works or\n * not.\n *\n * See <https://github.com/orgs/syntax-tree/discussions/60> for more info.\n * See this markdown in a particular renderer to see what works:\n *\n * ```markdown\n * |                         | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |\n * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |\n * | 1 (letter outside)      | x*y*z             | x*.*z                  | x* *z                 | x**z               |\n * | 2 (punctuation outside) | .*y*.             | .*.*.                  | .* *.                 | .**.               |\n * | 3 (whitespace outside)  | x *y* z           | x *.* z                | x * * z               | x ** z             |\n * | 4 (nothing outside)     | *x*               | *.*                    | * *                   | **                 |\n * ```\n *\n * @param {number} outside\n *   Code point on the outer side of the run.\n * @param {number} inside\n *   Code point on the inner side of the run.\n * @param {'*' | '_'} marker\n *   Marker of the run.\n *   Underscores are handled more strictly (they form less often) than\n *   asterisks.\n * @returns {EncodeSides}\n *   Whether to encode characters.\n */\n// Important: punctuation must never be encoded.\n// Punctuation is solely used by markdown constructs.\n// And by encoding itself.\n// Encoding them will break constructs or double encode things.\nfunction encodeInfo(outside, inside, marker) {\n  const outsideKind = classifyCharacter(outside)\n  const insideKind = classifyCharacter(inside)\n\n  // Letter outside:\n  if (outsideKind === undefined) {\n    return insideKind === undefined\n      ? // Letter inside:\n        // we have to encode *both* letters for `_` as it is looser.\n        // it already forms for `*` (and GFMs `~`).\n        marker === '_'\n        ? {inside: true, outside: true}\n        : {inside: false, outside: false}\n      : insideKind === 1\n        ? // Whitespace inside: encode both (letter, whitespace).\n          {inside: true, outside: true}\n        : // Punctuation inside: encode outer (letter)\n          {inside: false, outside: true}\n  }\n\n  // Whitespace outside:\n  if (outsideKind === 1) {\n    return insideKind === undefined\n      ? // Letter inside: already forms.\n        {inside: false, outside: false}\n      : insideKind === 1\n        ? // Whitespace inside: encode both (whitespace).\n          {inside: true, outside: true}\n        : // Punctuation inside: already forms.\n          {inside: false, outside: false}\n  }\n\n  // Punctuation outside:\n  return insideKind === undefined\n    ? // Letter inside: already forms.\n      {inside: false, outside: false}\n    : insideKind === 1\n      ? // Whitespace inside: encode inner (whitespace).\n        {inside: true, outside: false}\n      : // Punctuation inside: already forms.\n        {inside: false, outside: false}\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/emphasis.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Emphasis, Parents} from 'mdast'\n */\n\n\n\n\n\nemphasis.peek = emphasisPeek\n\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction emphasis(node, _, state, info) {\n  const marker = checkEmphasis(state)\n  const exit = state.enter('emphasis')\n  const tracker = state.createTracker(info)\n  const before = tracker.move(marker)\n\n  let between = tracker.move(\n    state.containerPhrasing(node, {\n      after: marker,\n      before,\n      ...tracker.current()\n    })\n  )\n  const betweenHead = between.charCodeAt(0)\n  const open = encodeInfo(\n    info.before.charCodeAt(info.before.length - 1),\n    betweenHead,\n    marker\n  )\n\n  if (open.inside) {\n    between = encodeCharacterReference(betweenHead) + between.slice(1)\n  }\n\n  const betweenTail = between.charCodeAt(between.length - 1)\n  const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n  if (close.inside) {\n    between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n  }\n\n  const after = tracker.move(marker)\n\n  exit()\n\n  state.attentionEncodeSurroundingInfo = {\n    after: close.outside,\n    before: open.outside\n  }\n  return before + between + after\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n  return state.options.emphasis || '*'\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js\n/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Heading} from 'mdast'\n */\n\n\n\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nfunction formatHeadingAsSetext(node, state) {\n  let literalWithBreak = false\n\n  // Look for literals with a line break.\n  // Note that this also\n  visit(node, function (node) {\n    if (\n      ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n      node.type === 'break'\n    ) {\n      literalWithBreak = true\n      return EXIT\n    }\n  })\n\n  return Boolean(\n    (!node.depth || node.depth < 3) &&\n      mdast_util_to_string_lib_toString(node) &&\n      (state.options.setext || literalWithBreak)\n  )\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/heading.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Heading, Parents} from 'mdast'\n */\n\n\n\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction heading(node, _, state, info) {\n  const rank = Math.max(Math.min(6, node.depth || 1), 1)\n  const tracker = state.createTracker(info)\n\n  if (formatHeadingAsSetext(node, state)) {\n    const exit = state.enter('headingSetext')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...tracker.current(),\n      before: '\\n',\n      after: '\\n'\n    })\n    subexit()\n    exit()\n\n    return (\n      value +\n      '\\n' +\n      (rank === 1 ? '=' : '-').repeat(\n        // The whole size…\n        value.length -\n          // Minus the position of the character after the last EOL (or\n          // 0 if there is none)…\n          (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n      )\n    )\n  }\n\n  const sequence = '#'.repeat(rank)\n  const exit = state.enter('headingAtx')\n  const subexit = state.enter('phrasing')\n\n  // Note: for proper tracking, we should reset the output positions when there\n  // is no content returned, because then the space is not output.\n  // Practically, in that case, there is no content, so it doesn’t matter that\n  // we’ve tracked one too many characters.\n  tracker.move(sequence + ' ')\n\n  let value = state.containerPhrasing(node, {\n    before: '# ',\n    after: '\\n',\n    ...tracker.current()\n  })\n\n  if (/^[\\t ]/.test(value)) {\n    // To do: what effect has the character reference on tracking?\n    value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1)\n  }\n\n  value = value ? sequence + ' ' + value : sequence\n\n  if (state.options.closeAtx) {\n    value += ' ' + sequence\n  }\n\n  subexit()\n  exit()\n\n  return value\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/html.js\n/**\n * @import {Html} from 'mdast'\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nfunction html(node) {\n  return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n  return '<'\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/image.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Image, Parents} from 'mdast'\n */\n\n\n\nimage_image.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction image_image(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('image')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  value += tracker.move(\n    state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n  )\n  value += tracker.move('](')\n\n  subexit()\n\n  if (\n    // If there’s no url but there is a title…\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n  exit()\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n  return '!'\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/image-reference.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {ImageReference, Parents} from 'mdast'\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction imageReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('imageReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  const alt = state.safe(node.alt, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(alt + '][')\n\n  subexit()\n  // Hide the fact that we’re in phrasing, because escapes don’t work.\n  const stack = state.stack\n  state.stack = []\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn’t matter that\n  // we’ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !alt || alt !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n  return '!'\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/inline-code.js\n/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {InlineCode, Parents} from 'mdast'\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction inlineCode(node, _, state) {\n  let value = node.value || ''\n  let sequence = '`'\n  let index = -1\n\n  // If there is a single grave accent on its own in the code, use a fence of\n  // two.\n  // If there are two in a row, use one.\n  while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n    sequence += '`'\n  }\n\n  // If this is not just spaces or eols (tabs don’t count), and either the\n  // first or last character are a space, eol, or tick, then pad with spaces.\n  if (\n    /[^ \\r\\n]/.test(value) &&\n    ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n  ) {\n    value = ' ' + value + ' '\n  }\n\n  // We have a potential problem: certain characters after eols could result in\n  // blocks being seen.\n  // For example, if someone injected the string `'\\n# b'`, then that would\n  // result in an ATX heading.\n  // We can’t escape characters in `inlineCode`, but because eols are\n  // transformed to spaces when going from markdown to HTML anyway, we can swap\n  // them out.\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n    const expression = state.compilePattern(pattern)\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    // Only look for `atBreak`s.\n    // Btw: note that `atBreak` patterns will always start the regex at LF or\n    // CR.\n    if (!pattern.atBreak) continue\n\n    while ((match = expression.exec(value))) {\n      let position = match.index\n\n      // Support CRLF (patterns only look for one of the characters).\n      if (\n        value.charCodeAt(position) === 10 /* `\\n` */ &&\n        value.charCodeAt(position - 1) === 13 /* `\\r` */\n      ) {\n        position--\n      }\n\n      value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n    }\n  }\n\n  return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n  return '`'\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js\n/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Link} from 'mdast'\n */\n\n\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nfunction formatLinkAsAutolink(node, state) {\n  const raw = mdast_util_to_string_lib_toString(node)\n\n  return Boolean(\n    !state.options.resourceLink &&\n      // If there’s a url…\n      node.url &&\n      // And there’s a no title…\n      !node.title &&\n      // And the content of `node` is a single text node…\n      node.children &&\n      node.children.length === 1 &&\n      node.children[0].type === 'text' &&\n      // And if the url is the same as the content…\n      (raw === node.url || 'mailto:' + raw === node.url) &&\n      // And that starts w/ a protocol…\n      /^[a-z][a-z+.-]+:/i.test(node.url) &&\n      // And that doesn’t contain ASCII control codes (character escapes and\n      // references don’t work), space, or angle brackets…\n      !/[\\0- <>\\u007F]/.test(node.url)\n  )\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/link.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Link, Parents} from 'mdast'\n * @import {Exit} from '../types.js'\n */\n\n\n\n\nlink_link.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction link_link(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const tracker = state.createTracker(info)\n  /** @type {Exit} */\n  let exit\n  /** @type {Exit} */\n  let subexit\n\n  if (formatLinkAsAutolink(node, state)) {\n    // Hide the fact that we’re in phrasing, because escapes don’t work.\n    const stack = state.stack\n    state.stack = []\n    exit = state.enter('autolink')\n    let value = tracker.move('<')\n    value += tracker.move(\n      state.containerPhrasing(node, {\n        before: value,\n        after: '>',\n        ...tracker.current()\n      })\n    )\n    value += tracker.move('>')\n    exit()\n    state.stack = stack\n    return value\n  }\n\n  exit = state.enter('link')\n  subexit = state.enter('label')\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.containerPhrasing(node, {\n      before: value,\n      after: '](',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move('](')\n  subexit()\n\n  if (\n    // If there’s no url but there is a title…\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n\n  exit()\n  return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n  return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/link-reference.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {LinkReference, Parents} from 'mdast'\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction linkReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('linkReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  const text = state.containerPhrasing(node, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(text + '][')\n\n  subexit()\n  // Hide the fact that we’re in phrasing, because escapes don’t work.\n  const stack = state.stack\n  state.stack = []\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn’t matter that\n  // we’ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !text || text !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n  return '['\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-bullet.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nfunction checkBullet(state) {\n  const marker = state.options.bullet || '*'\n\n  if (marker !== '*' && marker !== '+' && marker !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bullet`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  return marker\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nfunction checkBulletOther(state) {\n  const bullet = checkBullet(state)\n  const bulletOther = state.options.bulletOther\n\n  if (!bulletOther) {\n    return bullet === '*' ? '-' : '*'\n  }\n\n  if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        bulletOther +\n        '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  if (bulletOther === bullet) {\n    throw new Error(\n      'Expected `bullet` (`' +\n        bullet +\n        '`) and `bulletOther` (`' +\n        bulletOther +\n        '`) to be different'\n    )\n  }\n\n  return bulletOther\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bulletOrdered'], null | undefined>}\n */\nfunction checkBulletOrdered(state) {\n  const marker = state.options.bulletOrdered || '.'\n\n  if (marker !== '.' && marker !== ')') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bulletOrdered`, expected `.` or `)`'\n    )\n  }\n\n  return marker\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-rule.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['rule'], null | undefined>}\n */\nfunction checkRule(state) {\n  const marker = state.options.rule || '*'\n\n  if (marker !== '*' && marker !== '-' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize rules with `' +\n        marker +\n        '` for `options.rule`, expected `*`, `-`, or `_`'\n    )\n  }\n\n  return marker\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/list.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {List, Parents} from 'mdast'\n */\n\n\n\n\n\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction handle_list_list(node, parent, state, info) {\n  const exit = state.enter('list')\n  const bulletCurrent = state.bulletCurrent\n  /** @type {string} */\n  let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n  /** @type {string} */\n  const bulletOther = node.ordered\n    ? bullet === '.'\n      ? ')'\n      : '.'\n    : checkBulletOther(state)\n  let useDifferentMarker =\n    parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n  if (!node.ordered) {\n    const firstListItem = node.children ? node.children[0] : undefined\n\n    // If there’s an empty first list item directly in two list items,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * - *\n    // ```\n    //\n    // …because otherwise it would become one big thematic break.\n    if (\n      // Bullet could be used as a thematic break marker:\n      (bullet === '*' || bullet === '-') &&\n      // Empty first list item:\n      firstListItem &&\n      (!firstListItem.children || !firstListItem.children[0]) &&\n      // Directly in two other list items:\n      state.stack[state.stack.length - 1] === 'list' &&\n      state.stack[state.stack.length - 2] === 'listItem' &&\n      state.stack[state.stack.length - 3] === 'list' &&\n      state.stack[state.stack.length - 4] === 'listItem' &&\n      // That are each the first child.\n      state.indexStack[state.indexStack.length - 1] === 0 &&\n      state.indexStack[state.indexStack.length - 2] === 0 &&\n      state.indexStack[state.indexStack.length - 3] === 0\n    ) {\n      useDifferentMarker = true\n    }\n\n    // If there’s a thematic break at the start of the first list item,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * ---\n    // ```\n    //\n    // …because otherwise it would become one big thematic break.\n    if (checkRule(state) === bullet && firstListItem) {\n      let index = -1\n\n      while (++index < node.children.length) {\n        const item = node.children[index]\n\n        if (\n          item &&\n          item.type === 'listItem' &&\n          item.children &&\n          item.children[0] &&\n          item.children[0].type === 'thematicBreak'\n        ) {\n          useDifferentMarker = true\n          break\n        }\n      }\n    }\n  }\n\n  if (useDifferentMarker) {\n    bullet = bulletOther\n  }\n\n  state.bulletCurrent = bullet\n  const value = state.containerFlow(node, info)\n  state.bulletLastUsed = bullet\n  state.bulletCurrent = bulletCurrent\n  exit()\n  return value\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n */\nfunction checkListItemIndent(state) {\n  const style = state.options.listItemIndent || 'one'\n\n  if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        style +\n        '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n    )\n  }\n\n  return style\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/list-item.js\n/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {ListItem, Parents} from 'mdast'\n */\n\n\n\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction listItem(node, parent, state, info) {\n  const listItemIndent = checkListItemIndent(state)\n  let bullet = state.bulletCurrent || checkBullet(state)\n\n  // Add the marker value for ordered lists.\n  if (parent && parent.type === 'list' && parent.ordered) {\n    bullet =\n      (typeof parent.start === 'number' && parent.start > -1\n        ? parent.start\n        : 1) +\n      (state.options.incrementListMarker === false\n        ? 0\n        : parent.children.indexOf(node)) +\n      bullet\n  }\n\n  let size = bullet.length + 1\n\n  if (\n    listItemIndent === 'tab' ||\n    (listItemIndent === 'mixed' &&\n      ((parent && parent.type === 'list' && parent.spread) || node.spread))\n  ) {\n    size = Math.ceil(size / 4) * 4\n  }\n\n  const tracker = state.createTracker(info)\n  tracker.move(bullet + ' '.repeat(size - bullet.length))\n  tracker.shift(size)\n  const exit = state.enter('listItem')\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n\n  return value\n\n  /** @type {Map} */\n  function map(line, index, blank) {\n    if (index) {\n      return (blank ? '' : ' '.repeat(size)) + line\n    }\n\n    return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n  }\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/paragraph.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Paragraph, Parents} from 'mdast'\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction paragraph(node, _, state, info) {\n  const exit = state.enter('paragraph')\n  const subexit = state.enter('phrasing')\n  const value = state.containerPhrasing(node, info)\n  subexit()\n  exit()\n  return value\n}\n\n;// ./node_modules/mdast-util-phrasing/lib/index.js\n/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\n\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > 👉 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n *   Thing to check, typically `Node`.\n * @returns\n *   Whether `value` is phrasing content.\n */\n\nconst phrasing =\n  /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n  (\n    convert([\n      'break',\n      'delete',\n      'emphasis',\n      // To do: next major: removed since footnotes were added to GFM.\n      'footnote',\n      'footnoteReference',\n      'image',\n      'imageReference',\n      'inlineCode',\n      // Enabled by `mdast-util-math`:\n      'inlineMath',\n      'link',\n      'linkReference',\n      // Enabled by `mdast-util-mdx`:\n      'mdxJsxTextElement',\n      // Enabled by `mdast-util-mdx`:\n      'mdxTextExpression',\n      'strong',\n      'text',\n      // Enabled by `mdast-util-directive`:\n      'textDirective'\n    ])\n  )\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/root.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Root} from 'mdast'\n */\n\n\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction root_root(node, _, state, info) {\n  // Note: `html` nodes are ambiguous.\n  const hasPhrasing = node.children.some(function (d) {\n    return phrasing(d)\n  })\n\n  const container = hasPhrasing ? state.containerPhrasing : state.containerFlow\n  return container.call(state, node, info)\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-strong.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['strong'], null | undefined>}\n */\nfunction checkStrong(state) {\n  const marker = state.options.strong || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize strong with `' +\n        marker +\n        '` for `options.strong`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/strong.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Strong} from 'mdast'\n */\n\n\n\n\n\nstrong.peek = strongPeek\n\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction strong(node, _, state, info) {\n  const marker = checkStrong(state)\n  const exit = state.enter('strong')\n  const tracker = state.createTracker(info)\n  const before = tracker.move(marker + marker)\n\n  let between = tracker.move(\n    state.containerPhrasing(node, {\n      after: marker,\n      before,\n      ...tracker.current()\n    })\n  )\n  const betweenHead = between.charCodeAt(0)\n  const open = encodeInfo(\n    info.before.charCodeAt(info.before.length - 1),\n    betweenHead,\n    marker\n  )\n\n  if (open.inside) {\n    between = encodeCharacterReference(betweenHead) + between.slice(1)\n  }\n\n  const betweenTail = between.charCodeAt(between.length - 1)\n  const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n  if (close.inside) {\n    between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n  }\n\n  const after = tracker.move(marker + marker)\n\n  exit()\n\n  state.attentionEncodeSurroundingInfo = {\n    after: close.outside,\n    before: open.outside\n  }\n  return before + between + after\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n  return state.options.strong || '*'\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/text.js\n/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Text} from 'mdast'\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nfunction handle_text_text(node, _, state, info) {\n  return state.safe(node.value, info)\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js\n/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['ruleRepetition'], null | undefined>}\n */\nfunction checkRuleRepetition(state) {\n  const repetition = state.options.ruleRepetition || 3\n\n  if (repetition < 3) {\n    throw new Error(\n      'Cannot serialize rules with repetition `' +\n        repetition +\n        '` for `options.ruleRepetition`, expected `3` or more'\n    )\n  }\n\n  return repetition\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js\n/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Parents, ThematicBreak} from 'mdast'\n */\n\n\n\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction thematic_break_thematicBreak(_, _1, state) {\n  const value = (\n    checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n  ).repeat(checkRuleRepetition(state))\n\n  return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/handle/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Default (CommonMark) handlers.\n */\nconst handle = {\n  blockquote: blockquote,\n  break: hardBreak,\n  code: code,\n  definition: definition_definition,\n  emphasis: emphasis,\n  hardBreak: hardBreak,\n  heading: heading,\n  html: html,\n  image: image_image,\n  imageReference: imageReference,\n  inlineCode: inlineCode,\n  link: link_link,\n  linkReference: linkReference,\n  list: handle_list_list,\n  listItem: listItem,\n  paragraph: paragraph,\n  root: root_root,\n  strong: strong,\n  text: handle_text_text,\n  thematicBreak: thematic_break_thematicBreak\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/join.js\n/**\n * @import {Join} from 'mdast-util-to-markdown'\n */\n\n\n\n\n/** @type {Array<Join>} */\nconst join = [joinDefaults]\n\n/** @type {Join} */\nfunction joinDefaults(left, right, parent, state) {\n  // Indented code after list or another indented code.\n  if (\n    right.type === 'code' &&\n    formatCodeAsIndented(right, state) &&\n    (left.type === 'list' ||\n      (left.type === right.type && formatCodeAsIndented(left, state)))\n  ) {\n    return false\n  }\n\n  // Join children of a list or an item.\n  // In which case, `parent` has a `spread` field.\n  if ('spread' in parent && typeof parent.spread === 'boolean') {\n    if (\n      left.type === 'paragraph' &&\n      // Two paragraphs.\n      (left.type === right.type ||\n        right.type === 'definition' ||\n        // Paragraph followed by a setext heading.\n        (right.type === 'heading' && formatHeadingAsSetext(right, state)))\n    ) {\n      return\n    }\n\n    return parent.spread ? 1 : 0\n  }\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/unsafe.js\n/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain things like attention (emphasis, strong), images, or links.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * @type {Array<ConstructName>}\n */\nconst fullPhrasingSpans = [\n  'autolink',\n  'destinationLiteral',\n  'destinationRaw',\n  'reference',\n  'titleQuote',\n  'titleApostrophe'\n]\n\n/** @type {Array<Unsafe>} */\nconst unsafe = [\n  {character: '\\t', after: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n  {character: '\\t', before: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n  {\n    character: '\\t',\n    inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde']\n  },\n  {\n    character: '\\r',\n    inConstruct: [\n      'codeFencedLangGraveAccent',\n      'codeFencedLangTilde',\n      'codeFencedMetaGraveAccent',\n      'codeFencedMetaTilde',\n      'destinationLiteral',\n      'headingAtx'\n    ]\n  },\n  {\n    character: '\\n',\n    inConstruct: [\n      'codeFencedLangGraveAccent',\n      'codeFencedLangTilde',\n      'codeFencedMetaGraveAccent',\n      'codeFencedMetaTilde',\n      'destinationLiteral',\n      'headingAtx'\n    ]\n  },\n  {character: ' ', after: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n  {character: ' ', before: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n  {\n    character: ' ',\n    inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde']\n  },\n  // An exclamation mark can start an image, if it is followed by a link or\n  // a link reference.\n  {\n    character: '!',\n    after: '\\\\[',\n    inConstruct: 'phrasing',\n    notInConstruct: fullPhrasingSpans\n  },\n  // A quote can break out of a title.\n  {character: '\"', inConstruct: 'titleQuote'},\n  // A number sign could start an ATX heading if it starts a line.\n  {atBreak: true, character: '#'},\n  {character: '#', inConstruct: 'headingAtx', after: '(?:[\\r\\n]|$)'},\n  // Dollar sign and percentage are not used in markdown.\n  // An ampersand could start a character reference.\n  {character: '&', after: '[#A-Za-z]', inConstruct: 'phrasing'},\n  // An apostrophe can break out of a title.\n  {character: \"'\", inConstruct: 'titleApostrophe'},\n  // A left paren could break out of a destination raw.\n  {character: '(', inConstruct: 'destinationRaw'},\n  // A left paren followed by `]` could make something into a link or image.\n  {\n    before: '\\\\]',\n    character: '(',\n    inConstruct: 'phrasing',\n    notInConstruct: fullPhrasingSpans\n  },\n  // A right paren could start a list item or break out of a destination\n  // raw.\n  {atBreak: true, before: '\\\\d+', character: ')'},\n  {character: ')', inConstruct: 'destinationRaw'},\n  // An asterisk can start thematic breaks, list items, emphasis, strong.\n  {atBreak: true, character: '*', after: '(?:[ \\t\\r\\n*])'},\n  {character: '*', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n  // A plus sign could start a list item.\n  {atBreak: true, character: '+', after: '(?:[ \\t\\r\\n])'},\n  // A dash can start thematic breaks, list items, and setext heading\n  // underlines.\n  {atBreak: true, character: '-', after: '(?:[ \\t\\r\\n-])'},\n  // A dot could start a list item.\n  {atBreak: true, before: '\\\\d+', character: '.', after: '(?:[ \\t\\r\\n]|$)'},\n  // Slash, colon, and semicolon are not used in markdown for constructs.\n  // A less than can start html (flow or text) or an autolink.\n  // HTML could start with an exclamation mark (declaration, cdata, comment),\n  // slash (closing tag), question mark (instruction), or a letter (tag).\n  // An autolink also starts with a letter.\n  // Finally, it could break out of a destination literal.\n  {atBreak: true, character: '<', after: '[!/?A-Za-z]'},\n  {\n    character: '<',\n    after: '[!/?A-Za-z]',\n    inConstruct: 'phrasing',\n    notInConstruct: fullPhrasingSpans\n  },\n  {character: '<', inConstruct: 'destinationLiteral'},\n  // An equals to can start setext heading underlines.\n  {atBreak: true, character: '='},\n  // A greater than can start block quotes and it can break out of a\n  // destination literal.\n  {atBreak: true, character: '>'},\n  {character: '>', inConstruct: 'destinationLiteral'},\n  // Question mark and at sign are not used in markdown for constructs.\n  // A left bracket can start definitions, references, labels,\n  {atBreak: true, character: '['},\n  {character: '[', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n  {character: '[', inConstruct: ['label', 'reference']},\n  // A backslash can start an escape (when followed by punctuation) or a\n  // hard break (when followed by an eol).\n  // Note: typical escapes are handled in `safe`!\n  {character: '\\\\', after: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n  // A right bracket can exit labels.\n  {character: ']', inConstruct: ['label', 'reference']},\n  // Caret is not used in markdown for constructs.\n  // An underscore can start emphasis, strong, or a thematic break.\n  {atBreak: true, character: '_'},\n  {character: '_', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n  // A grave accent can start code (fenced or text), or it can break out of\n  // a grave accent code fence.\n  {atBreak: true, character: '`'},\n  {\n    character: '`',\n    inConstruct: ['codeFencedLangGraveAccent', 'codeFencedMetaGraveAccent']\n  },\n  {character: '`', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n  // Left brace, vertical bar, right brace are not used in markdown for\n  // constructs.\n  // A tilde can start code (fenced).\n  {atBreak: true, character: '~'}\n]\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/association.js\n/**\n * @import {AssociationId} from '../types.js'\n */\n\n\n\n/**\n * Get an identifier from an association to match it to others.\n *\n * Associations are nodes that match to something else through an ID:\n * <https://github.com/syntax-tree/mdast#association>.\n *\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another:\n * controversially, character escapes and references don’t work in this\n * matching: `&copy;` does not match `©`, and `\\+` does not match `+`.\n *\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we’re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character\n * escapes and all character references.\n *\n * @type {AssociationId}\n */\nfunction association(node) {\n  if (node.label || !node.identifier) {\n    return node.label || ''\n  }\n\n  return decodeString(node.identifier)\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/compile-pattern.js\n/**\n * @import {CompilePattern} from '../types.js'\n */\n\n/**\n * @type {CompilePattern}\n */\nfunction compilePattern(pattern) {\n  if (!pattern._compiled) {\n    const before =\n      (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n      (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n    pattern._compiled = new RegExp(\n      (before ? '(' + before + ')' : '') +\n        (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n        pattern.character +\n        (pattern.after ? '(?:' + pattern.after + ')' : ''),\n      'g'\n    )\n  }\n\n  return pattern._compiled\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js\n/**\n * @import {Handle, Info, State} from 'mdast-util-to-markdown'\n * @import {PhrasingParents} from '../types.js'\n */\n\n\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @param {PhrasingParents} parent\n *   Parent of flow nodes.\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Info} info\n *   Info on where we are in the document we are generating.\n * @returns {string}\n *   Serialized children, joined together.\n */\nfunction containerPhrasing(parent, state, info) {\n  const indexStack = state.indexStack\n  const children = parent.children || []\n  /** @type {Array<string>} */\n  const results = []\n  let index = -1\n  let before = info.before\n  /** @type {string | undefined} */\n  let encodeAfter\n\n  indexStack.push(-1)\n  let tracker = state.createTracker(info)\n\n  while (++index < children.length) {\n    const child = children[index]\n    /** @type {string} */\n    let after\n\n    indexStack[indexStack.length - 1] = index\n\n    if (index + 1 < children.length) {\n      /** @type {Handle} */\n      // @ts-expect-error: hush, it’s actually a `zwitch`.\n      let handle = state.handle.handlers[children[index + 1].type]\n      /** @type {Handle} */\n      // @ts-expect-error: hush, it’s actually a `zwitch`.\n      if (handle && handle.peek) handle = handle.peek\n      after = handle\n        ? handle(children[index + 1], parent, state, {\n            before: '',\n            after: '',\n            ...tracker.current()\n          }).charAt(0)\n        : ''\n    } else {\n      after = info.after\n    }\n\n    // In some cases, html (text) can be found in phrasing right after an eol.\n    // When we’d serialize that, in most cases that would be seen as html\n    // (flow).\n    // As we can’t escape or so to prevent it from happening, we take a somewhat\n    // reasonable approach: replace that eol with a space.\n    // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n    if (\n      results.length > 0 &&\n      (before === '\\r' || before === '\\n') &&\n      child.type === 'html'\n    ) {\n      results[results.length - 1] = results[results.length - 1].replace(\n        /(\\r?\\n|\\r)$/,\n        ' '\n      )\n      before = ' '\n\n      // To do: does this work to reset tracker?\n      tracker = state.createTracker(info)\n      tracker.move(results.join(''))\n    }\n\n    let value = state.handle(child, parent, state, {\n      ...tracker.current(),\n      after,\n      before\n    })\n\n    // If we had to encode the first character after the previous node and it’s\n    // still the same character,\n    // encode it.\n    if (encodeAfter && encodeAfter === value.slice(0, 1)) {\n      value =\n        encodeCharacterReference(encodeAfter.charCodeAt(0)) + value.slice(1)\n    }\n\n    const encodingInfo = state.attentionEncodeSurroundingInfo\n    state.attentionEncodeSurroundingInfo = undefined\n    encodeAfter = undefined\n\n    // If we have to encode the first character before the current node and\n    // it’s still the same character,\n    // encode it.\n    if (encodingInfo) {\n      if (\n        results.length > 0 &&\n        encodingInfo.before &&\n        before === results[results.length - 1].slice(-1)\n      ) {\n        results[results.length - 1] =\n          results[results.length - 1].slice(0, -1) +\n          encodeCharacterReference(before.charCodeAt(0))\n      }\n\n      if (encodingInfo.after) encodeAfter = after\n    }\n\n    tracker.move(value)\n    results.push(value)\n    before = value.slice(-1)\n  }\n\n  indexStack.pop()\n\n  return results.join('')\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/container-flow.js\n/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {FlowChildren, FlowParents, TrackFields} from '../types.js'\n */\n\n/**\n * @param {FlowParents} parent\n *   Parent of flow nodes.\n * @param {State} state\n *   Info passed around about the current state.\n * @param {TrackFields} info\n *   Info on where we are in the document we are generating.\n * @returns {string}\n *   Serialized children, joined by (blank) lines.\n */\nfunction containerFlow(parent, state, info) {\n  const indexStack = state.indexStack\n  const children = parent.children || []\n  const tracker = state.createTracker(info)\n  /** @type {Array<string>} */\n  const results = []\n  let index = -1\n\n  indexStack.push(-1)\n\n  while (++index < children.length) {\n    const child = children[index]\n\n    indexStack[indexStack.length - 1] = index\n\n    results.push(\n      tracker.move(\n        state.handle(child, parent, state, {\n          before: '\\n',\n          after: '\\n',\n          ...tracker.current()\n        })\n      )\n    )\n\n    if (child.type !== 'list') {\n      state.bulletLastUsed = undefined\n    }\n\n    if (index < children.length - 1) {\n      results.push(\n        tracker.move(between(child, children[index + 1], parent, state))\n      )\n    }\n  }\n\n  indexStack.pop()\n\n  return results.join('')\n}\n\n/**\n * @param {FlowChildren} left\n * @param {FlowChildren} right\n * @param {FlowParents} parent\n * @param {State} state\n * @returns {string}\n */\nfunction between(left, right, parent, state) {\n  let index = state.join.length\n\n  while (index--) {\n    const result = state.join[index](left, right, parent, state)\n\n    if (result === true || result === 1) {\n      break\n    }\n\n    if (typeof result === 'number') {\n      return '\\n'.repeat(1 + result)\n    }\n\n    if (result === false) {\n      return '\\n\\n<!---->\\n\\n'\n    }\n  }\n\n  return '\\n\\n'\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/indent-lines.js\n/**\n * @import {IndentLines} from '../types.js'\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @type {IndentLines}\n */\nfunction indentLines(value, map) {\n  /** @type {Array<string>} */\n  const result = []\n  let start = 0\n  let line = 0\n  /** @type {RegExpExecArray | null} */\n  let match\n\n  while ((match = eol.exec(value))) {\n    one(value.slice(start, match.index))\n    result.push(match[0])\n    start = match.index + match[0].length\n    line++\n  }\n\n  one(value.slice(start))\n\n  return result.join('')\n\n  /**\n   * @param {string} value\n   */\n  function one(value) {\n    result.push(map(value, line, !value))\n  }\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/safe.js\n/**\n * @import {SafeConfig, State} from 'mdast-util-to-markdown'\n */\n\n\n\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What “constructs” we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {string | null | undefined} input\n *   Raw value to make safe.\n * @param {SafeConfig} config\n *   Configuration.\n * @returns {string}\n *   Serialized markdown safe for embedding.\n */\nfunction safe(state, input, config) {\n  const value = (config.before || '') + (input || '') + (config.after || '')\n  /** @type {Array<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {Record<number, {before: boolean, after: boolean}>} */\n  const infos = {}\n  let index = -1\n\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n\n    if (!patternInScope(state.stack, pattern)) {\n      continue\n    }\n\n    const expression = state.compilePattern(pattern)\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    while ((match = expression.exec(value))) {\n      const before = 'before' in pattern || Boolean(pattern.atBreak)\n      const after = 'after' in pattern\n      const position = match.index + (before ? match[1].length : 0)\n\n      if (positions.includes(position)) {\n        if (infos[position].before && !before) {\n          infos[position].before = false\n        }\n\n        if (infos[position].after && !after) {\n          infos[position].after = false\n        }\n      } else {\n        positions.push(position)\n        infos[position] = {before, after}\n      }\n    }\n  }\n\n  positions.sort(numerical)\n\n  let start = config.before ? config.before.length : 0\n  const end = value.length - (config.after ? config.after.length : 0)\n  index = -1\n\n  while (++index < positions.length) {\n    const position = positions[index]\n\n    // Character before or after matched:\n    if (position < start || position >= end) {\n      continue\n    }\n\n    // If this character is supposed to be escaped because it has a condition on\n    // the next character, and the next character is definitly being escaped,\n    // then skip this escape.\n    if (\n      (position + 1 < end &&\n        positions[index + 1] === position + 1 &&\n        infos[position].after &&\n        !infos[position + 1].before &&\n        !infos[position + 1].after) ||\n      (positions[index - 1] === position - 1 &&\n        infos[position].before &&\n        !infos[position - 1].before &&\n        !infos[position - 1].after)\n    ) {\n      continue\n    }\n\n    if (start !== position) {\n      // If we have to use a character reference, an ampersand would be more\n      // correct, but as backslashes only care about punctuation, either will\n      // do the trick\n      result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n    }\n\n    start = position\n\n    if (\n      /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n      (!config.encode || !config.encode.includes(value.charAt(position)))\n    ) {\n      // Character escape.\n      result.push('\\\\')\n    } else {\n      // Character reference.\n      result.push(encodeCharacterReference(value.charCodeAt(position)))\n      start++\n    }\n  }\n\n  result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n  return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n  return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n  const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n  /** @type {Array<number>} */\n  const positions = []\n  /** @type {Array<string>} */\n  const results = []\n  const whole = value + after\n  let index = -1\n  let start = 0\n  /** @type {RegExpExecArray | null} */\n  let match\n\n  while ((match = expression.exec(whole))) {\n    positions.push(match.index)\n  }\n\n  while (++index < positions.length) {\n    if (start !== positions[index]) {\n      results.push(value.slice(start, positions[index]))\n    }\n\n    results.push('\\\\')\n    start = positions[index]\n  }\n\n  results.push(value.slice(start))\n\n  return results.join('')\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/util/track.js\n/**\n * @import {CreateTracker, TrackCurrent, TrackMove, TrackShift} from '../types.js'\n */\n\n/**\n * Track positional info in the output.\n *\n * @type {CreateTracker}\n */\nfunction track(config) {\n  // Defaults are used to prevent crashes when older utilities somehow activate\n  // this code.\n  /* c8 ignore next 5 */\n  const options = config || {}\n  const now = options.now || {}\n  let lineShift = options.lineShift || 0\n  let line = now.line || 1\n  let column = now.column || 1\n\n  return {move, current, shift}\n\n  /**\n   * Get the current tracked info.\n   *\n   * @type {TrackCurrent}\n   */\n  function current() {\n    return {now: {line, column}, lineShift}\n  }\n\n  /**\n   * Define an increased line shift (the typical indent for lines).\n   *\n   * @type {TrackShift}\n   */\n  function shift(value) {\n    lineShift += value\n  }\n\n  /**\n   * Move past some generated markdown.\n   *\n   * @type {TrackMove}\n   */\n  function move(input) {\n    // eslint-disable-next-line unicorn/prefer-default-parameters\n    const value = input || ''\n    const chunks = value.split(/\\r?\\n|\\r/g)\n    const tail = chunks[chunks.length - 1]\n    line += chunks.length - 1\n    column =\n      chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n    return value\n  }\n}\n\n;// ./node_modules/mdast-util-to-markdown/lib/index.js\n/**\n * @import {Info, Join, Options, SafeConfig, State} from 'mdast-util-to-markdown'\n * @import {Nodes} from 'mdast'\n * @import {Enter, FlowParents, PhrasingParents, TrackFields} from './types.js'\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Turn an mdast syntax tree into markdown.\n *\n * @param {Nodes} tree\n *   Tree to serialize.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized markdown representing `tree`.\n */\nfunction toMarkdown(tree, options) {\n  const settings = options || {}\n  /** @type {State} */\n  const state = {\n    associationId: association,\n    containerPhrasing: containerPhrasingBound,\n    containerFlow: containerFlowBound,\n    createTracker: track,\n    compilePattern: compilePattern,\n    enter,\n    // @ts-expect-error: GFM / frontmatter are typed in `mdast` but not defined\n    // here.\n    handlers: {...handle},\n    // @ts-expect-error: add `handle` in a second.\n    handle: undefined,\n    indentLines: indentLines,\n    indexStack: [],\n    join: [...join],\n    options: {},\n    safe: safeBound,\n    stack: [],\n    unsafe: [...unsafe]\n  }\n\n  configure_configure(state, settings)\n\n  if (state.options.tightDefinitions) {\n    state.join.push(joinDefinition)\n  }\n\n  state.handle = zwitch('type', {\n    invalid,\n    unknown,\n    handlers: state.handlers\n  })\n\n  let result = state.handle(tree, undefined, state, {\n    before: '\\n',\n    after: '\\n',\n    now: {line: 1, column: 1},\n    lineShift: 0\n  })\n\n  if (\n    result &&\n    result.charCodeAt(result.length - 1) !== 10 &&\n    result.charCodeAt(result.length - 1) !== 13\n  ) {\n    result += '\\n'\n  }\n\n  return result\n\n  /** @type {Enter} */\n  function enter(name) {\n    state.stack.push(name)\n    return exit\n\n    /**\n     * @returns {undefined}\n     */\n    function exit() {\n      state.stack.pop()\n    }\n  }\n}\n\n/**\n * @param {unknown} value\n * @returns {never}\n */\nfunction invalid(value) {\n  throw new Error('Cannot handle value `' + value + '`, expected node')\n}\n\n/**\n * @param {unknown} value\n * @returns {never}\n */\nfunction unknown(value) {\n  // Always a node.\n  const node = /** @type {Nodes} */ (value)\n  throw new Error('Cannot handle unknown node `' + node.type + '`')\n}\n\n/** @type {Join} */\nfunction joinDefinition(left, right) {\n  // No blank line between adjacent definitions.\n  if (left.type === 'definition' && left.type === right.type) {\n    return 0\n  }\n}\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {PhrasingParents} parent\n *   Parent of flow nodes.\n * @param {Info} info\n *   Info on where we are in the document we are generating.\n * @returns {string}\n *   Serialized children, joined together.\n */\nfunction containerPhrasingBound(parent, info) {\n  return containerPhrasing(parent, this, info)\n}\n\n/**\n * Serialize the children of a parent that contains flow children.\n *\n * These children will typically be joined by blank lines.\n * What they are joined by exactly is defined by `Join` functions.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {FlowParents} parent\n *   Parent of flow nodes.\n * @param {TrackFields} info\n *   Info on where we are in the document we are generating.\n * @returns {string}\n *   Serialized children, joined by (blank) lines.\n */\nfunction containerFlowBound(parent, info) {\n  return containerFlow(parent, this, info)\n}\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What “constructs” we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {string | null | undefined} value\n *   Raw value to make safe.\n * @param {SafeConfig} config\n *   Configuration.\n * @returns {string}\n *   Serialized markdown safe for embedding.\n */\nfunction safeBound(value, config) {\n  return safe(this, value, config)\n}\n\n;// ./node_modules/remark-stringify/lib/index.js\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownOptions\n * @typedef {import('unified').Compiler<Root, string>} Compiler\n * @typedef {import('unified').Processor<undefined, undefined, undefined, Root, string>} Processor\n */\n\n/**\n * @typedef {Omit<ToMarkdownOptions, 'extensions'>} Options\n */\n\n\n\n/**\n * Add support for serializing to markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction remarkStringify(options) {\n  /** @type {Processor} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n\n  self.compiler = compiler\n\n  /**\n   * @type {Compiler}\n   */\n  function compiler(tree) {\n    return toMarkdown(tree, {\n      ...self.data('settings'),\n      ...options,\n      // Note: this option is not in the readme.\n      // The goal is for it to be set by plugins on `data` instead of being\n      // passed by users.\n      extensions: self.data('toMarkdownExtensions') || []\n    })\n  }\n}\n\n;// ./node_modules/bail/index.js\n/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nfunction bail(error) {\n  if (error) {\n    throw error\n  }\n}\n\n// EXTERNAL MODULE: ./node_modules/extend/index.js\nvar extend = __webpack_require__(2849);\nvar extend_default = /*#__PURE__*/__webpack_require__.n(extend);\n;// ./node_modules/devlop/lib/default.js\nfunction deprecate(fn) {\n  return fn\n}\n\nfunction equal() {}\n\nfunction default_ok() {}\n\nfunction unreachable() {}\n\n;// ./node_modules/is-plain-obj/index.js\nfunction isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n\n;// ./node_modules/trough/lib/index.js\n// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n *   Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n *   Ware.\n *\n * @typedef Pipeline\n *   Pipeline.\n * @property {Run} run\n *   Run the pipeline.\n * @property {Use} use\n *   Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n *\n *   Calls `done` on completion with either an error or the output of the\n *   last middleware.\n *\n *   > 👉 **Note**: as the length of input defines whether async functions get a\n *   > `next` function,\n *   > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n *   Pipeline.\n */\nfunction trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we’re done.\n     *\n     * @param {Error | null | undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n *   returns a promise that is rejected,\n *   or calls the given `done` function with an error,\n *   `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n *   that value is the main output value\n * * if `middleware` calls `done`,\n *   all non-nullish values except for the first one (the error) overwrite the\n *   output values\n *\n * @param {Middleware} middleware\n *   Function to wrap.\n * @param {Callback} callback\n *   Callback called with the output of `middleware`.\n * @returns {Run}\n *   Wrapped middleware.\n */\nfunction wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result && result.then && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   *\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n\n;// ./node_modules/vfile-message/lib/index.js\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n *   Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n *   Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n *   Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n *   Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n *   Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n *   Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\n\n\n/**\n * Message.\n */\nclass VFileMessage extends Error {\n  /**\n   * Create a message for `reason`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Options | null | undefined} [options]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns\n   *   Instance of `VFileMessage`.\n   */\n  // eslint-disable-next-line complexity\n  constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n    super()\n\n    if (typeof optionsOrParentOrPlace === 'string') {\n      origin = optionsOrParentOrPlace\n      optionsOrParentOrPlace = undefined\n    }\n\n    /** @type {string} */\n    let reason = ''\n    /** @type {Options} */\n    let options = {}\n    let legacyCause = false\n\n    if (optionsOrParentOrPlace) {\n      // Point.\n      if (\n        'line' in optionsOrParentOrPlace &&\n        'column' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Position.\n      else if (\n        'start' in optionsOrParentOrPlace &&\n        'end' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Node.\n      else if ('type' in optionsOrParentOrPlace) {\n        options = {\n          ancestors: [optionsOrParentOrPlace],\n          place: optionsOrParentOrPlace.position\n        }\n      }\n      // Options.\n      else {\n        options = {...optionsOrParentOrPlace}\n      }\n    }\n\n    if (typeof causeOrReason === 'string') {\n      reason = causeOrReason\n    }\n    // Error.\n    else if (!options.cause && causeOrReason) {\n      legacyCause = true\n      reason = causeOrReason.message\n      options.cause = causeOrReason\n    }\n\n    if (!options.ruleId && !options.source && typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        options.ruleId = origin\n      } else {\n        options.source = origin.slice(0, index)\n        options.ruleId = origin.slice(index + 1)\n      }\n    }\n\n    if (!options.place && options.ancestors && options.ancestors) {\n      const parent = options.ancestors[options.ancestors.length - 1]\n\n      if (parent) {\n        options.place = parent.position\n      }\n    }\n\n    const start =\n      options.place && 'start' in options.place\n        ? options.place.start\n        : options.place\n\n    /* eslint-disable no-unused-expressions */\n    /**\n     * Stack of ancestor nodes surrounding the message.\n     *\n     * @type {Array<Node> | undefined}\n     */\n    this.ancestors = options.ancestors || undefined\n\n    /**\n     * Original error cause of the message.\n     *\n     * @type {Error | undefined}\n     */\n    this.cause = options.cause || undefined\n\n    /**\n     * Starting column of message.\n     *\n     * @type {number | undefined}\n     */\n    this.column = start ? start.column : undefined\n\n    /**\n     * State of problem.\n     *\n     * * `true` — error, file not usable\n     * * `false` — warning, change may be needed\n     * * `undefined` — change likely not needed\n     *\n     * @type {boolean | null | undefined}\n     */\n    this.fatal = undefined\n\n    /**\n     * Path of a file (used throughout the `VFile` ecosystem).\n     *\n     * @type {string | undefined}\n     */\n    this.file\n\n    // Field from `Error`.\n    /**\n     * Reason for message.\n     *\n     * @type {string}\n     */\n    this.message = reason\n\n    /**\n     * Starting line of error.\n     *\n     * @type {number | undefined}\n     */\n    this.line = start ? start.line : undefined\n\n    // Field from `Error`.\n    /**\n     * Serialized positional info of message.\n     *\n     * On normal errors, this would be something like `ParseError`, buit in\n     * `VFile` messages we use this space to show where an error happened.\n     */\n    this.name = stringifyPosition(options.place) || '1:1'\n\n    /**\n     * Place of message.\n     *\n     * @type {Point | Position | undefined}\n     */\n    this.place = options.place || undefined\n\n    /**\n     * Reason for message, should use markdown.\n     *\n     * @type {string}\n     */\n    this.reason = this.message\n\n    /**\n     * Category of message (example: `'my-rule'`).\n     *\n     * @type {string | undefined}\n     */\n    this.ruleId = options.ruleId || undefined\n\n    /**\n     * Namespace of message (example: `'my-package'`).\n     *\n     * @type {string | undefined}\n     */\n    this.source = options.source || undefined\n\n    // Field from `Error`.\n    /**\n     * Stack of message.\n     *\n     * This is used by normal errors to show where something happened in\n     * programming code, irrelevant for `VFile` messages,\n     *\n     * @type {string}\n     */\n    this.stack =\n      legacyCause && options.cause && typeof options.cause.stack === 'string'\n        ? options.cause.stack\n        : ''\n\n    // The following fields are “well known”.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /**\n     * Specify the source value that’s being reported, which is deemed\n     * incorrect.\n     *\n     * @type {string | undefined}\n     */\n    this.actual\n\n    /**\n     * Suggest acceptable values that can be used instead of `actual`.\n     *\n     * @type {Array<string> | undefined}\n     */\n    this.expected\n\n    /**\n     * Long form description of the message (you should use markdown).\n     *\n     * @type {string | undefined}\n     */\n    this.note\n\n    /**\n     * Link to docs for the message.\n     *\n     * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n     * > to `new URL(x)`.\n     *\n     * @type {string | undefined}\n     */\n    this.url\n    /* eslint-enable no-unused-expressions */\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n\n;// ./node_modules/vfile/lib/minpath.browser.js\n// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nconst path = {basename, dirname, extname, join: minpath_browser_join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n *   File path.\n * @param {string | null | undefined} [ext]\n *   Extension to strip.\n * @returns {string}\n *   Stem or basename.\n */\nfunction basename(path, ext) {\n  if (ext !== undefined && typeof ext !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  let start = 0\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let seenNonSlash\n\n  if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n    while (index--) {\n      if (path.codePointAt(index) === 47 /* `/` */) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now.\n        if (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (ext === path) {\n    return ''\n  }\n\n  let firstNonSlashEnd = -1\n  let extIndex = ext.length - 1\n\n  while (index--) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.codePointAt(index) === ext.codePointAt(extIndex--)) {\n          if (extIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\nfunction dirname(path) {\n  assertPath(path)\n\n  if (path.length === 0) {\n    return '.'\n  }\n\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.codePointAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.codePointAt(0) === 47 /* `/` */\n    ? '//'\n    : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   Extname.\n */\nfunction extname(path) {\n  assertPath(path)\n\n  let index = path.length\n\n  let end = -1\n  let startPart = 0\n  let startDot = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  let preDotState = 0\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  while (index--) {\n    const code = path.codePointAt(index)\n\n    if (code === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\n    } else if (startDot > -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension.\n      preDotState = -1\n    }\n  }\n\n  if (\n    startDot < 0 ||\n    end < 0 ||\n    // We saw a non-dot character immediately before the dot.\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly `..`.\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n *   Path segments.\n * @returns {string}\n *   File path.\n */\nfunction minpath_browser_join(...segments) {\n  let index = -1\n  /** @type {string | undefined} */\n  let joined\n\n  while (++index < segments.length) {\n    assertPath(segments[index])\n\n    if (segments[index]) {\n      joined =\n        joined === undefined ? segments[index] : joined + '/' + segments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n  assertPath(path)\n\n  const absolute = path.codePointAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  let value = normalizeString(path, !absolute)\n\n  if (value.length === 0 && !absolute) {\n    value = '.'\n  }\n\n  if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n *   File path.\n * @param {boolean} allowAboveRoot\n *   Whether `..` can move above root.\n * @returns {string}\n *   File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n  let result = ''\n  let lastSegmentLength = 0\n  let lastSlash = -1\n  let dots = 0\n  let index = -1\n  /** @type {number | undefined} */\n  let code\n  /** @type {number} */\n  let lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.codePointAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n          result.codePointAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length > 0) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length > 0 ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length > 0) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n *   File path.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n\n/* eslint-enable max-depth, complexity */\n\n;// ./node_modules/vfile/lib/minproc.browser.js\n// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nconst proc = {cwd}\n\nfunction cwd() {\n  return '/'\n}\n\n;// ./node_modules/vfile/lib/minurl.shared.js\n/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n *   File path or URL.\n * @returns {fileUrlOrPath is URL}\n *   Whether it’s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nfunction isUrl(fileUrlOrPath) {\n  return Boolean(\n    fileUrlOrPath !== null &&\n      typeof fileUrlOrPath === 'object' &&\n      'href' in fileUrlOrPath &&\n      fileUrlOrPath.href &&\n      'protocol' in fileUrlOrPath &&\n      fileUrlOrPath.protocol &&\n      // @ts-expect-error: indexing is fine.\n      fileUrlOrPath.auth === undefined\n  )\n}\n\n;// ./node_modules/vfile/lib/minurl.browser.js\n\n\n\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n *   File URL.\n * @returns {string}\n *   File URL.\n */\nfunction urlToPath(path) {\n  if (typeof path === 'string') {\n    path = new URL(path)\n  } else if (!isUrl(path)) {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'The \"path\" argument must be of type string or an instance of URL. Received `' +\n        path +\n        '`'\n    )\n    error.code = 'ERR_INVALID_ARG_TYPE'\n    throw error\n  }\n\n  if (path.protocol !== 'file:') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError('The URL must be of scheme file')\n    error.code = 'ERR_INVALID_URL_SCHEME'\n    throw error\n  }\n\n  return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n *   URL.\n * @returns {string}\n *   File path.\n */\nfunction getPathFromURLPosix(url) {\n  if (url.hostname !== '') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'File URL host must be \"localhost\" or empty on darwin'\n    )\n    error.code = 'ERR_INVALID_FILE_URL_HOST'\n    throw error\n  }\n\n  const pathname = url.pathname\n  let index = -1\n\n  while (++index < pathname.length) {\n    if (\n      pathname.codePointAt(index) === 37 /* `%` */ &&\n      pathname.codePointAt(index + 1) === 50 /* `2` */\n    ) {\n      const third = pathname.codePointAt(index + 2)\n      if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n        /** @type {NodeJS.ErrnoException} */\n        const error = new TypeError(\n          'File URL path must not include encoded / characters'\n        )\n        error.code = 'ERR_INVALID_FILE_URL_PATH'\n        throw error\n      }\n    }\n  }\n\n  return decodeURIComponent(pathname)\n}\n\n;// ./node_modules/vfile/lib/index.js\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n * @typedef {import('vfile-message').Options} MessageOptions\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {Options | URL | VFile | Value} Compatible\n *   Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n *   Set multiple values.\n * @property {string | null | undefined} [basename]\n *   Set `basename` (name).\n * @property {string | null | undefined} [cwd]\n *   Set `cwd` (working directory).\n * @property {Data | null | undefined} [data]\n *   Set `data` (associated info).\n * @property {string | null | undefined} [dirname]\n *   Set `dirname` (path w/o basename).\n * @property {string | null | undefined} [extname]\n *   Set `extname` (extension with dot).\n * @property {Array<string> | null | undefined} [history]\n *   Set `history` (paths the file moved between).\n * @property {URL | string | null | undefined} [path]\n *   Set `path` (current path).\n * @property {string | null | undefined} [stem]\n *   Set `stem` (name without extension).\n * @property {Value | null | undefined} [value]\n *   Set `value` (the contents of the file).\n *\n * @typedef Map\n *   Raw source map.\n *\n *   See:\n *   <https://github.com/mozilla/source-map/blob/60adcb0/source-map.d.ts#L15-L23>.\n * @property {number} version\n *   Which version of the source map spec this map is following.\n * @property {Array<string>} sources\n *   An array of URLs to the original source files.\n * @property {Array<string>} names\n *   An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n *   The URL root from which all sources are relative.\n * @property {Array<string> | undefined} [sourcesContent]\n *   An array of contents of the original source files.\n * @property {string} mappings\n *   A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n *   The generated file this source map is associated with.\n *\n * @typedef {Record<string, unknown> & VFileCoreOptions} Options\n *   Configuration.\n *\n *   A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n *   Configuration for reporters.\n */\n\n/**\n * @template [Settings=ReporterSettings]\n *   Options type.\n * @callback Reporter\n *   Type for a reporter.\n * @param {Array<VFile>} files\n *   Files to report.\n * @param {Settings} options\n *   Configuration.\n * @returns {string}\n *   Report.\n */\n\n\n\n\n\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n])\n\nclass VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * `options` is treated as:\n   *\n   * *   `string` or `Uint8Array` — `{value: options}`\n   * *   `URL` — `{path: options}`\n   * *   `VFile` — shallow copies its data over to the new file\n   * *   `object` — all fields are shallow copied over to the new file\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * You cannot set `dirname` or `extname` without setting either `history`,\n   * `path`, `basename`, or `stem` too.\n   *\n   * @param {Compatible | null | undefined} [value]\n   *   File value.\n   * @returns\n   *   New instance.\n   */\n  constructor(value) {\n    /** @type {Options | VFile} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else if (typeof value === 'string' || isUint8Array(value)) {\n      options = {value}\n    } else {\n      options = value\n    }\n\n    /* eslint-disable no-unused-expressions */\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     *\n     * @type {string}\n     */\n    this.cwd = proc.cwd()\n\n    /**\n     * Place to store custom info (default: `{}`).\n     *\n     * It’s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     *\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of file paths the file moved between.\n     *\n     * The first is the original path and the last is the current path.\n     *\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * List of messages associated with the file.\n     *\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * Raw value.\n     *\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are “well-known”.\n    // As in, used in several tools.\n    /**\n     * Source map.\n     *\n     * This type is equivalent to the `RawSourceMap` type from the `source-map`\n     * module.\n     *\n     * @type {Map | null | undefined}\n     */\n    this.map\n\n    /**\n     * Custom, non-string, compiled, representation.\n     *\n     * This is used by unified to store non-string results.\n     * One example is when turning markdown into React nodes.\n     *\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Whether a file was saved to disk.\n     *\n     * This is used by vfile reporters.\n     *\n     * @type {boolean}\n     */\n    this.stored\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const prop = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (\n        prop in options &&\n        options[prop] !== undefined &&\n        options[prop] !== null\n      ) {\n        // @ts-expect-error: TS doesn’t understand basic reality.\n        this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n      }\n    }\n\n    /** @type {string} */\n    let prop\n\n    // Set non-path related properties.\n    for (prop in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(prop)) {\n        // @ts-expect-error: fine to set other things.\n        this[prop] = options[prop]\n      }\n    }\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   *\n   * @returns {string | undefined}\n   *   Basename.\n   */\n  get basename() {\n    return typeof this.path === 'string' ? path.basename(this.path) : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} basename\n   *   Basename.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = path.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   *\n   * @returns {string | undefined}\n   *   Dirname.\n   */\n  get dirname() {\n    return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   *\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} dirname\n   *   Dirname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set dirname(dirname) {\n    lib_assertPath(this.basename, 'dirname')\n    this.path = path.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   *\n   * @returns {string | undefined}\n   *   Extname.\n   */\n  get extname() {\n    return typeof this.path === 'string' ? path.extname(this.path) : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there’s no `path` yet.\n   *\n   * @param {string | undefined} extname\n   *   Extname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    lib_assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.codePointAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = path.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   *\n   * @returns {string}\n   *   Path.\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   *\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   *\n   * @param {URL | string} path\n   *   Path.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set path(path) {\n    if (isUrl(path)) {\n      path = urlToPath(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * @returns {string | undefined}\n   *   Stem.\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? path.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} stem\n   *   Stem.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  // Normal prototypal methods.\n  /**\n   * Create a fatal message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `true` (error; file not usable)\n   * and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {never}\n   *   Never.\n   * @throws {VFileMessage}\n   *   Message.\n   */\n  fail(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n\n  /**\n   * Create an info message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `undefined` (info; change\n   * likely not needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = undefined\n\n    return message\n  }\n\n  /**\n   * Create a message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `false` (warning; change may be\n   * needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > 🪦 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(causeOrReason, optionsOrParentOrPlace, origin) {\n    const message = new VFileMessage(\n      // @ts-expect-error: the overloads are fine.\n      causeOrReason,\n      optionsOrParentOrPlace,\n      origin\n    )\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * > **Note**: which encodings are supported depends on the engine.\n   * > For info on Node.js, see:\n   * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n   *\n   * @param {string | null | undefined} [encoding='utf8']\n   *   Character encoding to understand `value` as when it’s a `Uint8Array`\n   *   (default: `'utf-8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    if (this.value === undefined) {\n      return ''\n    }\n\n    if (typeof this.value === 'string') {\n      return this.value\n    }\n\n    const decoder = new TextDecoder(encoding || undefined)\n    return decoder.decode(this.value)\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n *   File path part.\n * @param {string} name\n *   Part name.\n * @returns {undefined}\n *   Nothing.\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(path.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n *   Thing.\n * @param {string} name\n *   Part name.\n * @returns {asserts part is string}\n *   Nothing.\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n *   Path.\n * @param {string} name\n *   Dependency name.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction lib_assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n\n;// ./node_modules/unified/lib/callable-instance.js\nconst CallableInstance =\n  /**\n   * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n   */\n  (\n    /** @type {unknown} */\n    (\n      /**\n       * @this {Function}\n       * @param {string | symbol} property\n       * @returns {(...parameters: Array<unknown>) => unknown}\n       */\n      function (property) {\n        const self = this\n        const constr = self.constructor\n        const proto = /** @type {Record<string | symbol, Function>} */ (\n          // Prototypes do exist.\n          // type-coverage:ignore-next-line\n          constr.prototype\n        )\n        const func = proto[property]\n        /** @type {(...parameters: Array<unknown>) => unknown} */\n        const apply = function () {\n          return func.apply(apply, arguments)\n        }\n\n        Object.setPrototypeOf(apply, proto)\n\n        const names = Object.getOwnPropertyNames(func)\n\n        for (const p of names) {\n          const descriptor = Object.getOwnPropertyDescriptor(func, p)\n          if (descriptor) Object.defineProperty(apply, p, descriptor)\n        }\n\n        return apply\n      }\n    )\n  )\n\n;// ./node_modules/unified/lib/index.js\n/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n *   Acceptable results from compilers.\n *\n *   To register custom results, add them to\n *   {@link CompileResultMap `CompileResultMap`}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n *   The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n *   A **compiler** handles the compiling of a syntax tree to something else\n *   (in most cases, text) (TypeScript type).\n *\n *   It is used in the stringify phase and called with a {@link Node `Node`}\n *   and {@link VFile `VFile`} representation of the document to compile.\n *   It should return the textual representation of the given tree (typically\n *   `string`).\n *\n *   > 👉 **Note**: unified typically compiles by serializing: most compilers\n *   > return `string` (or `Uint8Array`).\n *   > Some compilers, such as the one configured with\n *   > [`rehype-react`][rehype-react], return other values (in this case, a\n *   > React tree).\n *   > If you’re using a compiler that doesn’t serialize, expect different\n *   > result values.\n *   >\n *   > To register custom results in TypeScript, add them to\n *   > {@link CompileResultMap `CompileResultMap`}.\n *\n *   [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n *   Tree to compile.\n * @param {VFile} file\n *   File associated with `tree`.\n * @returns {Result}\n *   New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n *   something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the parser yields (default: `Node`)\n * @callback Parser\n *   A **parser** handles the parsing of text to a syntax tree.\n *\n *   It is used in the parse phase and is called with a `string` and\n *   {@link VFile `VFile`} of the document to parse.\n *   It must return the syntax tree representation of the given file\n *   ({@link Node `Node`}).\n * @param {string} document\n *   Document to parse.\n * @param {VFile} file\n *   File associated with `document`.\n * @returns {Tree}\n *   Node representing the given file.\n */\n\n/**\n * @typedef {(\n *   Plugin<Array<any>, any, any> |\n *   PluginTuple<Array<any>, any, any> |\n *   Preset\n * )} Pluggable\n *   Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n *   List of plugins and presets.\n */\n\n// Note: we can’t use `callback` yet as it messes up `this`:\n//  <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n *   Value that is expected as input (default: `Node`).\n *\n *   *   If the plugin returns a {@link Transformer `Transformer`}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@link Parser `Parser`}, this should be\n *       `string`.\n *   *   If the plugin sets a {@link Compiler `Compiler`}, this should be the\n *       node it expects.\n * @template [Output=Input]\n *   Value that is yielded as output (default: `Input`).\n *\n *   *   If the plugin returns a {@link Transformer `Transformer`}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@link Parser `Parser`}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@link Compiler `Compiler`}, this should be\n *       result it yields.\n * @typedef {(\n *   (this: Processor, ...parameters: PluginParameters) =>\n *     Input extends string ? // Parser.\n *        Output extends Node | undefined ? undefined | void : never :\n *     Output extends CompileResults ? // Compiler.\n *        Input extends Node | undefined ? undefined | void : never :\n *     Transformer<\n *       Input extends Node ? Input : Node,\n *       Output extends Node ? Output : Node\n *     > | undefined | void\n * )} Plugin\n *   Single plugin.\n *\n *   Plugins configure the processors they are applied on in the following\n *   ways:\n *\n *   *   they change the processor, such as the parser, the compiler, or by\n *       configuring data\n *   *   they specify how to handle trees and files\n *\n *   In practice, they are functions that can receive options and configure the\n *   processor (`this`).\n *\n *   > 👉 **Note**: plugins are called when the processor is *frozen*, not when\n *   > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n *   Value that is expected as input (optional).\n *\n *   *   If the plugin returns a {@link Transformer `Transformer`}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@link Parser `Parser`}, this should be\n *       `string`.\n *   *   If the plugin sets a {@link Compiler `Compiler`}, this should be the\n *       node it expects.\n * @template [Output=undefined] (optional).\n *   Value that is yielded as output.\n *\n *   *   If the plugin returns a {@link Transformer `Transformer`}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@link Parser `Parser`}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@link Compiler `Compiler`}, this should be\n *       result it yields.\n * @typedef {(\n *   [\n *     plugin: Plugin<TupleParameters, Input, Output>,\n *     ...parameters: TupleParameters\n *   ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n *   Sharable configuration.\n *\n *   They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n *   List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n *   Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n *   The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n *   Callback called when the process is done.\n *\n *   Called with either an error or a result.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {File | undefined} [file]\n *   Processed file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n *   Callback called when transformers are done.\n *\n *   Called with either an error or results.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {Tree | undefined} [tree]\n *   Transformed tree (optional).\n * @param {VFile | undefined} [file]\n *   File (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n *   Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n *   Callback passed to transforms.\n *\n *   If the signature of a `transformer` accepts a third argument, the\n *   transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n *   Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n *   New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n *   New, changed, file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n *   Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n *   Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n *   Transformers handle syntax trees and files.\n *\n *   They are functions that are called each time a syntax tree and file are\n *   passed through the run phase.\n *   When an error occurs in them (either because it’s thrown, returned,\n *   rejected, or passed to `next`), the process stops.\n *\n *   The run phase is handled by [`trough`][trough], see its documentation for\n *   the exact semantics of these functions.\n *\n *   > 👉 **Note**: you should likely ignore `next`: don’t accept it.\n *   > it supports callback-style async work.\n *   > But promises are likely easier to reason about.\n *\n *   [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n *   Tree to handle.\n * @param {VFile} file\n *   File to handle.\n * @param {TransformCallback<Output>} next\n *   Callback.\n * @returns {(\n *   Promise<Output | undefined | void> |\n *   Promise<never> | // For some reason this is needed separately.\n *   Output |\n *   Error |\n *   undefined |\n *   void\n * )}\n *   If you accept `next`, nothing.\n *   Otherwise:\n *\n *   *   `Error` — fatal error to stop the process\n *   *   `Promise<undefined>` or `undefined` — the next transformer keeps using\n *       same tree\n *   *   `Promise<Node>` or `Node` — new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n *   Output of `parse`.\n * @template {Node | undefined} HeadTree\n *   Input for `run`.\n * @template {Node | undefined} TailTree\n *   Output for `run`.\n * @template {Node | undefined} CompileTree\n *   Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n *   Output of `stringify`.\n * @template {Node | string | undefined} Input\n *   Input of plugin.\n * @template Output\n *   Output of plugin (optional).\n * @typedef {(\n *   Input extends string\n *     ? Output extends Node | undefined\n *       ? // Parser.\n *         Processor<\n *           Output extends undefined ? ParseTree : Output,\n *           HeadTree,\n *           TailTree,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Output extends CompileResults\n *     ? Input extends Node | undefined\n *       ? // Compiler.\n *         Processor<\n *           ParseTree,\n *           HeadTree,\n *           TailTree,\n *           Input extends undefined ? CompileTree : Input,\n *           Output extends undefined ? CompileResult : Output\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Input extends Node | undefined\n *     ? Output extends Node | undefined\n *       ? // Transform.\n *         Processor<\n *           ParseTree,\n *           HeadTree extends undefined ? Input : HeadTree,\n *           Output extends undefined ? TailTree : Output,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : // Unknown.\n *       Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n *   Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n *   Node type that the transformer yields.\n * @typedef {(\n *   Result extends Value | undefined ?\n *     VFile :\n *     VFile & {result: Result}\n *   )} VFileWithOutput\n *   Type to generate a {@link VFile `VFile`} corresponding to a compiler result.\n *\n *   If a result that is not acceptable on a `VFile` is used, that will\n *   be stored on the `result` field of {@link VFile `VFile`}.\n */\n\n\n\n\n\n\n\n\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst unified_lib_own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n *   Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n *   Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n *   Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n *   Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n *   Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nclass lib_Processor extends CallableInstance {\n  /**\n   * Create a processor.\n   */\n  constructor() {\n    // If `Processor()` is called (w/o new), `copy` is called instead.\n    super('copy')\n\n    /**\n     * Compiler to use (deprecated).\n     *\n     * @deprecated\n     *   Use `compiler` instead.\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.Compiler = undefined\n\n    /**\n     * Parser to use (deprecated).\n     *\n     * @deprecated\n     *   Use `parser` instead.\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.Parser = undefined\n\n    // Note: the following fields are considered private.\n    // However, they are needed for tests, and TSC generates an untyped\n    // `private freezeIndex` field for, which trips `type-coverage` up.\n    // Instead, we use `@deprecated` to visualize that they shouldn’t be used.\n    /**\n     * Internal list of configured plugins.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Array<PluginTuple<Array<unknown>>>}\n     */\n    this.attachers = []\n\n    /**\n     * Compiler to use.\n     *\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.compiler = undefined\n\n    /**\n     * Internal state to track where we are while freezing.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {number}\n     */\n    this.freezeIndex = -1\n\n    /**\n     * Internal state to track whether we’re frozen.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {boolean | undefined}\n     */\n    this.frozen = undefined\n\n    /**\n     * Internal state.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Data}\n     */\n    this.namespace = {}\n\n    /**\n     * Parser to use.\n     *\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.parser = undefined\n\n    /**\n     * Internal list of configured transformers.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Pipeline}\n     */\n    this.transformers = trough()\n  }\n\n  /**\n   * Copy a processor.\n   *\n   * @deprecated\n   *   This is a private internal method and should not be used.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   New *unfrozen* processor ({@link Processor `Processor`}) that is\n   *   configured to work the same as its ancestor.\n   *   When the descendant processor is configured in the future it does not\n   *   affect the ancestral processor.\n   */\n  copy() {\n    // Cast as the type parameters will be the same after attaching.\n    const destination =\n      /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n        new lib_Processor()\n      )\n    let index = -1\n\n    while (++index < this.attachers.length) {\n      const attacher = this.attachers[index]\n      destination.use(...attacher)\n    }\n\n    destination.data(extend_default()(true, {}, this.namespace))\n\n    return destination\n  }\n\n  /**\n   * Configure the processor with info available to all plugins.\n   * Information is stored in an object.\n   *\n   * Typically, options can be given to a specific plugin, but sometimes it\n   * makes sense to have information shared with several plugins.\n   * For example, a list of HTML elements that are self-closing, which is\n   * needed during all phases.\n   *\n   * > 👉 **Note**: setting information cannot occur on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * > 👉 **Note**: to register custom data in TypeScript, augment the\n   * > {@link Data `Data`} interface.\n   *\n   * @example\n   *   This example show how to get and set info:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   const processor = unified().data('alpha', 'bravo')\n   *\n   *   processor.data('alpha') // => 'bravo'\n   *\n   *   processor.data() // => {alpha: 'bravo'}\n   *\n   *   processor.data({charlie: 'delta'})\n   *\n   *   processor.data() // => {charlie: 'delta'}\n   *   ```\n   *\n   * @template {keyof Data} Key\n   *\n   * @overload\n   * @returns {Data}\n   *\n   * @overload\n   * @param {Data} dataset\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Key} key\n   * @returns {Data[Key]}\n   *\n   * @overload\n   * @param {Key} key\n   * @param {Data[Key]} value\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @param {Data | Key} [key]\n   *   Key to get or set, or entire dataset to set, or nothing to get the\n   *   entire dataset (optional).\n   * @param {Data[Key]} [value]\n   *   Value to set (optional).\n   * @returns {unknown}\n   *   The current processor when setting, the value at `key` when getting, or\n   *   the entire dataset when getting without key.\n   */\n  data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', this.frozen)\n        this.namespace[key] = value\n        return this\n      }\n\n      // Get `key`.\n      return (unified_lib_own.call(this.namespace, key) && this.namespace[key]) || undefined\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', this.frozen)\n      this.namespace = key\n      return this\n    }\n\n    // Get space.\n    return this.namespace\n  }\n\n  /**\n   * Freeze a processor.\n   *\n   * Frozen processors are meant to be extended and not to be configured\n   * directly.\n   *\n   * When a processor is frozen it cannot be unfrozen.\n   * New processors working the same way can be created by calling the\n   * processor.\n   *\n   * It’s possible to freeze processors explicitly by calling `.freeze()`.\n   * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n   * `.stringify()`, `.process()`, or `.processSync()` are called.\n   *\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   The current processor.\n   */\n  freeze() {\n    if (this.frozen) {\n      return this\n    }\n\n    // Cast so that we can type plugins easier.\n    // Plugins are supposed to be usable on different processors, not just on\n    // this exact processor.\n    const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n    while (++this.freezeIndex < this.attachers.length) {\n      const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      const transformer = attacher.call(self, ...options)\n\n      if (typeof transformer === 'function') {\n        this.transformers.use(transformer)\n      }\n    }\n\n    this.frozen = true\n    this.freezeIndex = Number.POSITIVE_INFINITY\n\n    return this\n  }\n\n  /**\n   * Parse text to a syntax tree.\n   *\n   * > 👉 **Note**: `parse` freezes the processor if not already *frozen*.\n   *\n   * > 👉 **Note**: `parse` performs the parse phase, not the run phase or other\n   * > phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   file to parse (optional); typically `string` or `VFile`; any value\n   *   accepted as `x` in `new VFile(x)`.\n   * @returns {ParseTree extends undefined ? Node : ParseTree}\n   *   Syntax tree representing `file`.\n   */\n  parse(file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const parser = this.parser || this.Parser\n    assertParser('parse', parser)\n    return parser(String(realFile), realFile)\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * > 👉 **Note**: `process` freezes the processor if not already *frozen*.\n   *\n   * > 👉 **Note**: `process` performs the parse, run, and stringify phases.\n   *\n   * @overload\n   * @param {Compatible | undefined} file\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<VFileWithOutput<CompileResult>>}\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`]; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n   *   Callback (optional).\n   * @returns {Promise<VFile> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise a promise, rejected with a fatal error or resolved with the\n   *   processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > 👉 **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@link CompileResultMap `CompileResultMap`}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  process(file, done) {\n    const self = this\n\n    this.freeze()\n    assertParser('process', this.parser || this.Parser)\n    assertCompiler('process', this.compiler || this.Compiler)\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n     * @param {(error: Error | undefined) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      const realFile = vfile(file)\n      // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n      // input of the first transform).\n      const parseTree =\n        /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n          /** @type {unknown} */ (self.parse(realFile))\n        )\n\n      self.run(parseTree, realFile, function (error, tree, file) {\n        if (error || !tree || !file) {\n          return realDone(error)\n        }\n\n        // Assume `TailTree` (the output of the last transform) matches\n        // `CompileTree` (the input of the compiler).\n        const compileTree =\n          /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n            /** @type {unknown} */ (tree)\n          )\n\n        const compileResult = self.stringify(compileTree, file)\n\n        if (looksLikeAValue(compileResult)) {\n          file.value = compileResult\n        } else {\n          file.result = compileResult\n        }\n\n        realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n      })\n\n      /**\n       * @param {Error | undefined} error\n       * @param {VFileWithOutput<CompileResult> | undefined} [file]\n       * @returns {undefined}\n       */\n      function realDone(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          default_ok(done, '`done` is defined if `resolve` is not')\n          done(undefined, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > 👉 **Note**: `processSync` freezes the processor if not already *frozen*.\n   *\n   * > 👉 **Note**: `processSync` performs the parse, run, and stringify phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @returns {VFileWithOutput<CompileResult>}\n   *   The processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > 👉 **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@link CompileResultMap `CompileResultMap`}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  processSync(file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {VFileWithOutput<CompileResult> | undefined} */\n    let result\n\n    this.freeze()\n    assertParser('processSync', this.parser || this.Parser)\n    assertCompiler('processSync', this.compiler || this.Compiler)\n\n    this.process(file, realDone)\n    assertDone('processSync', 'process', complete)\n    default_ok(result, 'we either bailed on an error or have a tree')\n\n    return result\n\n    /**\n     * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n     */\n    function realDone(error, file) {\n      complete = true\n      bail(error)\n      result = file\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * > 👉 **Note**: `run` freezes the processor if not already *frozen*.\n   *\n   * > 👉 **Note**: `run` performs the run phase, not other phases.\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} file\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {(\n   *   RunCallback<TailTree extends undefined ? Node : TailTree> |\n   *   Compatible\n   * )} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n   *   Callback (optional).\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise, a promise rejected with a fatal error or resolved with the\n   *   transformed tree.\n   */\n  run(tree, file, done) {\n    assertNode(tree)\n    this.freeze()\n\n    const transformers = this.transformers\n\n    if (!done && typeof file === 'function') {\n      done = file\n      file = undefined\n    }\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {(\n     *   ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n     *   undefined\n     * )} resolve\n     * @param {(error: Error) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      default_ok(\n        typeof file !== 'function',\n        '`file` can’t be a `done` anymore, we checked'\n      )\n      const realFile = vfile(file)\n      transformers.run(tree, realFile, realDone)\n\n      /**\n       * @param {Error | undefined} error\n       * @param {Node} outputTree\n       * @param {VFile} file\n       * @returns {undefined}\n       */\n      function realDone(error, outputTree, file) {\n        const resultingTree =\n          /** @type {TailTree extends undefined ? Node : TailTree} */ (\n            outputTree || tree\n          )\n\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(resultingTree)\n        } else {\n          default_ok(done, '`done` is defined if `resolve` is not')\n          done(undefined, resultingTree, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > 👉 **Note**: `runSync` freezes the processor if not already *frozen*.\n   *\n   * > 👉 **Note**: `runSync` performs the run phase, not other phases.\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {TailTree extends undefined ? Node : TailTree}\n   *   Transformed tree.\n   */\n  runSync(tree, file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n    let result\n\n    this.run(tree, file, realDone)\n\n    assertDone('runSync', 'run', complete)\n    default_ok(result, 'we either bailed on an error or have a tree')\n    return result\n\n    /**\n     * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n     */\n    function realDone(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * Compile a syntax tree.\n   *\n   * > 👉 **Note**: `stringify` freezes the processor if not already *frozen*.\n   *\n   * > 👉 **Note**: `stringify` performs the stringify phase, not the run phase\n   * > or other phases.\n   *\n   * @param {CompileTree extends undefined ? Node : CompileTree} tree\n   *   Tree to compile.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {CompileResult extends undefined ? Value : CompileResult}\n   *   Textual representation of the tree (see note).\n   *\n   *   > 👉 **Note**: unified typically compiles by serializing: most compilers\n   *   > return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you’re using a compiler that doesn’t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@link CompileResultMap `CompileResultMap`}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  stringify(tree, file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const compiler = this.compiler || this.Compiler\n    assertCompiler('stringify', compiler)\n    assertNode(tree)\n\n    return compiler(tree, realFile)\n  }\n\n  /**\n   * Configure the processor to use a plugin, a list of usable values, or a\n   * preset.\n   *\n   * If the processor is already using a plugin, the previous plugin\n   * configuration is changed based on the options that are passed in.\n   * In other words, the plugin is not added a second time.\n   *\n   * > 👉 **Note**: `use` cannot be called on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * @example\n   *   There are many ways to pass plugins to `.use()`.\n   *   This example gives an overview:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   unified()\n   *     // Plugin with options:\n   *     .use(pluginA, {x: true, y: true})\n   *     // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n   *     .use(pluginA, {y: false, z: true})\n   *     // Plugins:\n   *     .use([pluginB, pluginC])\n   *     // Two plugins, the second with options:\n   *     .use([pluginD, [pluginE, {}]])\n   *     // Preset with plugins and settings:\n   *     .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n   *     // Settings only:\n   *     .use({settings: {position: false}})\n   *   ```\n   *\n   * @template {Array<unknown>} [Parameters=[]]\n   * @template {Node | string | undefined} [Input=undefined]\n   * @template [Output=Input]\n   *\n   * @overload\n   * @param {Preset | null | undefined} [preset]\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {PluggableList} list\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Plugin<Parameters, Input, Output>} plugin\n   * @param {...(Parameters | [boolean])} parameters\n   * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n   *\n   * @param {PluggableList | Plugin | Preset | null | undefined} value\n   *   Usable value.\n   * @param {...unknown} parameters\n   *   Parameters, when a plugin is given as a usable value.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   Current processor.\n   */\n  use(value, ...parameters) {\n    const attachers = this.attachers\n    const namespace = this.namespace\n\n    assertUnfrozen('use', this.frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, parameters)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    return this\n\n    /**\n     * @param {Pluggable} value\n     * @returns {undefined}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value, [])\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...parameters] =\n            /** @type {PluginTuple<Array<unknown>>} */ (value)\n          addPlugin(plugin, parameters)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {undefined}\n     */\n    function addPreset(result) {\n      if (!('plugins' in result) && !('settings' in result)) {\n        throw new Error(\n          'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n        )\n      }\n\n      addList(result.plugins)\n\n      if (result.settings) {\n        namespace.settings = extend_default()(true, namespace.settings, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList | null | undefined} plugins\n     * @returns {undefined}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {Array<unknown>} parameters\n     * @returns {undefined}\n     */\n    function addPlugin(plugin, parameters) {\n      let index = -1\n      let entryIndex = -1\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entryIndex = index\n          break\n        }\n      }\n\n      if (entryIndex === -1) {\n        attachers.push([plugin, ...parameters])\n      }\n      // Only set if there was at least a `primary` value, otherwise we’d change\n      // `arguments.length`.\n      else if (parameters.length > 0) {\n        let [primary, ...rest] = parameters\n        const currentPrimary = attachers[entryIndex][1]\n        if (isPlainObject(currentPrimary) && isPlainObject(primary)) {\n          primary = extend_default()(true, currentPrimary, primary)\n        }\n\n        attachers[entryIndex] = [plugin, primary, ...rest]\n      }\n    }\n  }\n}\n\n// Note: this returns a *callable* instance.\n// That’s why it’s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n *   This example shows how a new processor can be created (from `remark`) and linked\n *   to **stdin**(4) and **stdout**(4).\n *\n *   ```js\n *   import process from 'node:process'\n *   import concatStream from 'concat-stream'\n *   import {remark} from 'remark'\n *\n *   process.stdin.pipe(\n *     concatStream(function (buf) {\n *       process.stdout.write(String(remark().processSync(buf)))\n *     })\n *   )\n *   ```\n *\n * @returns\n *   New *unfrozen* processor (`processor`).\n *\n *   This processor is configured to work the same as its ancestor.\n *   When the descendant processor is configured in the future it does not\n *   affect the ancestral processor.\n */\nconst unified = new lib_Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObject(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n  return typeof value === 'string' || lib_isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction lib_isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n\n;// ./node_modules/remark/index.js\n// Note: types exposed from `index.d.ts`\n\n\n\n\n/**\n * Create a new unified processor that already uses `remark-parse` and\n * `remark-stringify`.\n */\nconst remark = unified().use(remarkParse).use(remarkStringify).freeze()\n\n// EXTERNAL MODULE: ./node_modules/format/format.js\nvar format_format = __webpack_require__(6311);\nvar format_default = /*#__PURE__*/__webpack_require__.n(format_format);\n;// ./node_modules/fault/index.js\n// @ts-expect-error\n\n\nconst fault = Object.assign(create(Error), {\n  eval: create(EvalError),\n  range: create(RangeError),\n  reference: create(ReferenceError),\n  syntax: create(SyntaxError),\n  type: create(TypeError),\n  uri: create(URIError)\n})\n\n/**\n * Create a new `EConstructor`, with the formatted `format` as a first argument.\n *\n * @template {Error} Fault\n * @template {new (reason: string) => Fault} Class\n * @param {Class} Constructor\n */\nfunction create(Constructor) {\n  /** @type {string} */\n  // @ts-expect-error\n  FormattedError.displayName = Constructor.displayName || Constructor.name\n\n  return FormattedError\n\n  /**\n   * Create an error with a printf-like formatted message.\n   *\n   * @param {string|null} [format]\n   *   Template string.\n   * @param {...unknown} values\n   *   Values to render in `format`.\n   * @returns {Fault}\n   */\n  function FormattedError(format, ...values) {\n    /** @type {string} */\n    const reason = format ? format_default()(format, ...values) : format\n    return new Constructor(reason)\n  }\n}\n\n;// ./node_modules/micromark-extension-frontmatter/lib/to-matters.js\n/**\n * @typedef {'toml' | 'yaml'} Preset\n *   Known name of a frontmatter style.\n *\n * @typedef Info\n *   Sequence.\n *\n *   Depending on how this structure is used, it reflects a marker or a fence.\n * @property {string} close\n *   Closing.\n * @property {string} open\n *   Opening.\n *\n * @typedef MatterProps\n *   Fields describing a kind of matter.\n * @property {string} type\n *   Node type to tokenize as.\n * @property {boolean | null | undefined} [anywhere=false]\n *   Whether matter can be found anywhere in the document, normally, only matter\n *   at the start of the document is recognized.\n *\n *   > 👉 **Note**: using this is a terrible idea.\n *   > It’s called frontmatter, not matter-in-the-middle or so.\n *   > This makes your markdown less portable.\n *\n * @typedef MarkerProps\n *   Marker configuration.\n * @property {Info | string} marker\n *   Character repeated 3 times, used as complete fences.\n *\n *   For example the character `'-'` will result in `'---'` being used as the\n *   fence\n *   Pass `open` and `close` to specify different characters for opening and\n *   closing fences.\n * @property {never} [fence]\n *   If `marker` is set, `fence` must not be set.\n *\n * @typedef FenceProps\n *   Fence configuration.\n * @property {Info | string} fence\n *   Complete fences.\n *\n *   This can be used when fences contain different characters or lengths\n *   other than 3.\n *   Pass `open` and `close` to interface to specify different characters for opening and\n *   closing fences.\n * @property {never} [marker]\n *   If `fence` is set, `marker` must not be set.\n *\n * @typedef {(MatterProps & FenceProps) | (MatterProps & MarkerProps)} Matter\n *   Fields describing a kind of matter.\n *\n *   > 👉 **Note**: using `anywhere` is a terrible idea.\n *   > It’s called frontmatter, not matter-in-the-middle or so.\n *   > This makes your markdown less portable.\n *\n *   > 👉 **Note**: `marker` and `fence` are mutually exclusive.\n *   > If `marker` is set, `fence` must not be set, and vice versa.\n *\n * @typedef {Matter | Preset | Array<Matter | Preset>} Options\n *   Configuration.\n */\n\n\nconst to_matters_own = {}.hasOwnProperty\nconst markers = {\n  yaml: '-',\n  toml: '+'\n}\n\n/**\n * Simplify options by normalizing them to an array of matters.\n *\n * @param {Options | null | undefined} [options='yaml']\n *   Configuration (default: `'yaml'`).\n * @returns {Array<Matter>}\n *   List of matters.\n */\nfunction toMatters(options) {\n  /** @type {Array<Matter>} */\n  const result = []\n  let index = -1\n\n  /** @type {Array<Matter | Preset>} */\n  const presetsOrMatters = Array.isArray(options)\n    ? options\n    : options\n    ? [options]\n    : ['yaml']\n  while (++index < presetsOrMatters.length) {\n    result[index] = matter(presetsOrMatters[index])\n  }\n  return result\n}\n\n/**\n * Simplify an option.\n *\n * @param {Matter | Preset} option\n *   Configuration.\n * @returns {Matter}\n *   Matter.\n */\nfunction matter(option) {\n  let result = option\n  if (typeof result === 'string') {\n    if (!to_matters_own.call(markers, result)) {\n      throw fault('Missing matter definition for `%s`', result)\n    }\n    result = {\n      type: result,\n      marker: markers[result]\n    }\n  } else if (typeof result !== 'object') {\n    throw fault('Expected matter to be an object, not `%j`', result)\n  }\n  if (!to_matters_own.call(result, 'type')) {\n    throw fault('Missing `type` in matter `%j`', result)\n  }\n  if (!to_matters_own.call(result, 'fence') && !to_matters_own.call(result, 'marker')) {\n    throw fault('Missing `marker` or `fence` in matter `%j`', result)\n  }\n  return result\n}\n\n;// ./node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp/index.js\nfunction escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n\n;// ./node_modules/mdast-util-frontmatter/lib/index.js\n/**\n * @typedef {import('mdast').Literal} Literal\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('micromark-extension-frontmatter').Info} Info\n * @typedef {import('micromark-extension-frontmatter').Matter} Matter\n * @typedef {import('micromark-extension-frontmatter').Options} Options\n */\n\n\n\n\n\n/**\n * Create an extension for `mdast-util-from-markdown`.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nfunction frontmatterFromMarkdown(options) {\n  const matters = toMatters(options)\n  /** @type {FromMarkdownExtension['enter']} */\n  const enter = {}\n  /** @type {FromMarkdownExtension['exit']} */\n  const exit = {}\n  let index = -1\n\n  while (++index < matters.length) {\n    const matter = matters[index]\n    enter[matter.type] = lib_opener(matter)\n    exit[matter.type] = lib_close\n    exit[matter.type + 'Value'] = value\n  }\n\n  return {enter, exit}\n}\n\n/**\n * @param {Matter} matter\n * @returns {FromMarkdownHandle} enter\n */\nfunction lib_opener(matter) {\n  return open\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function open(token) {\n    // @ts-expect-error: custom.\n    this.enter({type: matter.type, value: ''}, token)\n    this.buffer()\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction lib_close(token) {\n  const data = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  default_ok('value' in node)\n  this.exit(token)\n  // Remove the initial and final eol.\n  node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction value(token) {\n  this.config.enter.data.call(this, token)\n  this.config.exit.data.call(this, token)\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown`.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nfunction frontmatterToMarkdown(options) {\n  /** @type {ToMarkdownExtension['unsafe']} */\n  const unsafe = []\n  /** @type {ToMarkdownExtension['handlers']} */\n  const handlers = {}\n  const matters = toMatters(options)\n  let index = -1\n\n  while (++index < matters.length) {\n    const matter = matters[index]\n\n    // @ts-expect-error: this can add custom frontmatter nodes.\n    // Typing those is the responsibility of the end user.\n    handlers[matter.type] = handler(matter)\n\n    const open = fence(matter, 'open')\n\n    unsafe.push({\n      atBreak: true,\n      character: open.charAt(0),\n      after: escapeStringRegexp(open.charAt(1))\n    })\n  }\n\n  return {unsafe, handlers}\n}\n\n/**\n * Create a handle that can serialize a frontmatter node as markdown.\n *\n * @param {Matter} matter\n *   Structure.\n * @returns {(node: Literal) => string} enter\n *   Handler.\n */\nfunction handler(matter) {\n  const open = fence(matter, 'open')\n  const close = fence(matter, 'close')\n\n  return handle\n\n  /**\n   * Serialize a frontmatter node as markdown.\n   *\n   * @param {Literal} node\n   *   Node to serialize.\n   * @returns {string}\n   *   Serialized node.\n   */\n  function handle(node) {\n    return open + (node.value ? '\\n' + node.value : '') + '\\n' + close\n  }\n}\n\n/**\n * Get an `open` or `close` fence.\n *\n * @param {Matter} matter\n *   Structure.\n * @param {'close' | 'open'} prop\n *   Field to get.\n * @returns {string}\n *   Fence.\n */\nfunction fence(matter, prop) {\n  return matter.marker\n    ? pick(matter.marker, prop).repeat(3)\n    : // @ts-expect-error: They’re mutually exclusive.\n      pick(matter.fence, prop)\n}\n\n/**\n * Take `open` or `close` fields when schema is an info object, or use the\n * given value when it is a string.\n *\n * @param {Info | string} schema\n *   Info object or value.\n * @param {'close' | 'open'} prop\n *   Field to get.\n * @returns {string}\n *   Thing to use for the opening or closing.\n */\nfunction pick(schema, prop) {\n  return typeof schema === 'string' ? schema : schema[prop]\n}\n\n;// ./node_modules/micromark-extension-frontmatter/lib/syntax.js\n/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef {import('./to-matters.js').Info} Info\n * @typedef {import('./to-matters.js').Matter} Matter\n * @typedef {import('./to-matters.js').Options} Options\n */\n\n\n\n\n/**\n * Create an extension for `micromark` to enable frontmatter syntax.\n *\n * @param {Options | null | undefined} [options='yaml']\n *   Configuration (default: `'yaml'`).\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions`, to\n *   enable frontmatter syntax.\n */\nfunction frontmatter(options) {\n  const matters = toMatters(options)\n  /** @type {ConstructRecord} */\n  const flow = {}\n  let index = -1\n  while (++index < matters.length) {\n    const matter = matters[index]\n    const code = syntax_fence(matter, 'open').charCodeAt(0)\n    const construct = createConstruct(matter)\n    const existing = flow[code]\n    if (Array.isArray(existing)) {\n      existing.push(construct)\n    } else {\n      // Never a single object, always an array.\n      flow[code] = [construct]\n    }\n  }\n  return {\n    flow\n  }\n}\n\n/**\n * @param {Matter} matter\n * @returns {Construct}\n */\nfunction createConstruct(matter) {\n  const anywhere = matter.anywhere\n  const frontmatterType = /** @type {TokenType} */ matter.type\n  const fenceType = /** @type {TokenType} */ frontmatterType + 'Fence'\n  const sequenceType = /** @type {TokenType} */ fenceType + 'Sequence'\n  const valueType = /** @type {TokenType} */ frontmatterType + 'Value'\n  const closingFenceConstruct = {\n    tokenize: tokenizeClosingFence,\n    partial: true\n  }\n\n  /**\n   * Fence to look for.\n   *\n   * @type {string}\n   */\n  let buffer\n  let bufferIndex = 0\n  return {\n    tokenize: tokenizeFrontmatter,\n    concrete: true\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeFrontmatter(effects, ok, nok) {\n    const self = this\n    return start\n\n    /**\n     * Start of frontmatter.\n     *\n     * ```markdown\n     * > | ---\n     *     ^\n     *   | title: \"Venus\"\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      const position = self.now()\n      if (\n        // Indent not allowed.\n        position.column === 1 &&\n        // Normally, only allowed in first line.\n        (position.line === 1 || anywhere)\n      ) {\n        buffer = syntax_fence(matter, 'open')\n        bufferIndex = 0\n        if (code === buffer.charCodeAt(bufferIndex)) {\n          effects.enter(frontmatterType)\n          effects.enter(fenceType)\n          effects.enter(sequenceType)\n          return openSequence(code)\n        }\n      }\n      return nok(code)\n    }\n\n    /**\n     * In open sequence.\n     *\n     * ```markdown\n     * > | ---\n     *     ^\n     *   | title: \"Venus\"\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function openSequence(code) {\n      if (bufferIndex === buffer.length) {\n        effects.exit(sequenceType)\n        if (markdownSpace(code)) {\n          effects.enter('whitespace')\n          return openSequenceWhitespace(code)\n        }\n        return openAfter(code)\n      }\n      if (code === buffer.charCodeAt(bufferIndex++)) {\n        effects.consume(code)\n        return openSequence\n      }\n      return nok(code)\n    }\n\n    /**\n     * In whitespace after open sequence.\n     *\n     * ```markdown\n     * > | ---␠\n     *        ^\n     *   | title: \"Venus\"\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function openSequenceWhitespace(code) {\n      if (markdownSpace(code)) {\n        effects.consume(code)\n        return openSequenceWhitespace\n      }\n      effects.exit('whitespace')\n      return openAfter(code)\n    }\n\n    /**\n     * After open sequence.\n     *\n     * ```markdown\n     * > | ---\n     *        ^\n     *   | title: \"Venus\"\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function openAfter(code) {\n      if (markdownLineEnding(code)) {\n        effects.exit(fenceType)\n        effects.enter('lineEnding')\n        effects.consume(code)\n        effects.exit('lineEnding')\n        // Get ready for closing fence.\n        buffer = syntax_fence(matter, 'close')\n        bufferIndex = 0\n        return effects.attempt(closingFenceConstruct, after, contentStart)\n      }\n\n      // EOF is not okay.\n      return nok(code)\n    }\n\n    /**\n     * Start of content chunk.\n     *\n     * ```markdown\n     *   | ---\n     * > | title: \"Venus\"\n     *     ^\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function contentStart(code) {\n      if (code === null || markdownLineEnding(code)) {\n        return contentEnd(code)\n      }\n      effects.enter(valueType)\n      return contentInside(code)\n    }\n\n    /**\n     * In content chunk.\n     *\n     * ```markdown\n     *   | ---\n     * > | title: \"Venus\"\n     *     ^\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function contentInside(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(valueType)\n        return contentEnd(code)\n      }\n      effects.consume(code)\n      return contentInside\n    }\n\n    /**\n     * End of content chunk.\n     *\n     * ```markdown\n     *   | ---\n     * > | title: \"Venus\"\n     *                   ^\n     *   | ---\n     * ```\n     *\n     * @type {State}\n     */\n    function contentEnd(code) {\n      // Require a closing fence.\n      if (code === null) {\n        return nok(code)\n      }\n\n      // Can only be an eol.\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return effects.attempt(closingFenceConstruct, after, contentStart)\n    }\n\n    /**\n     * After frontmatter.\n     *\n     * ```markdown\n     *   | ---\n     *   | title: \"Venus\"\n     * > | ---\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function after(code) {\n      // `code` must be eol/eof.\n      effects.exit(frontmatterType)\n      return ok(code)\n    }\n  }\n\n  /** @type {Tokenizer} */\n  function tokenizeClosingFence(effects, ok, nok) {\n    let bufferIndex = 0\n    return closeStart\n\n    /**\n     * Start of close sequence.\n     *\n     * ```markdown\n     *   | ---\n     *   | title: \"Venus\"\n     * > | ---\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function closeStart(code) {\n      if (code === buffer.charCodeAt(bufferIndex)) {\n        effects.enter(fenceType)\n        effects.enter(sequenceType)\n        return closeSequence(code)\n      }\n      return nok(code)\n    }\n\n    /**\n     * In close sequence.\n     *\n     * ```markdown\n     *   | ---\n     *   | title: \"Venus\"\n     * > | ---\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function closeSequence(code) {\n      if (bufferIndex === buffer.length) {\n        effects.exit(sequenceType)\n        if (markdownSpace(code)) {\n          effects.enter('whitespace')\n          return closeSequenceWhitespace(code)\n        }\n        return closeAfter(code)\n      }\n      if (code === buffer.charCodeAt(bufferIndex++)) {\n        effects.consume(code)\n        return closeSequence\n      }\n      return nok(code)\n    }\n\n    /**\n     * In whitespace after close sequence.\n     *\n     * ```markdown\n     * > | ---\n     *   | title: \"Venus\"\n     *   | ---␠\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function closeSequenceWhitespace(code) {\n      if (markdownSpace(code)) {\n        effects.consume(code)\n        return closeSequenceWhitespace\n      }\n      effects.exit('whitespace')\n      return closeAfter(code)\n    }\n\n    /**\n     * After close sequence.\n     *\n     * ```markdown\n     *   | ---\n     *   | title: \"Venus\"\n     * > | ---\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function closeAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(fenceType)\n        return ok(code)\n      }\n      return nok(code)\n    }\n  }\n}\n\n/**\n * @param {Matter} matter\n * @param {'close' | 'open'} prop\n * @returns {string}\n */\nfunction syntax_fence(matter, prop) {\n  return matter.marker\n    ? syntax_pick(matter.marker, prop).repeat(3)\n    : // @ts-expect-error: They’re mutually exclusive.\n      syntax_pick(matter.fence, prop)\n}\n\n/**\n * @param {Info | string} schema\n * @param {'close' | 'open'} prop\n * @returns {string}\n */\nfunction syntax_pick(schema, prop) {\n  return typeof schema === 'string' ? schema : schema[prop]\n}\n\n;// ./node_modules/remark-frontmatter/lib/index.js\n/// <reference types=\"remark-parse\" />\n/// <reference types=\"remark-stringify\" />\n\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('micromark-extension-frontmatter').Options} Options\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n\n\n\n/** @type {Options} */\nconst remark_frontmatter_lib_emptyOptions = 'yaml'\n\n/**\n * Add support for frontmatter.\n *\n * ###### Notes\n *\n * Doesn’t parse the data inside them: create your own plugin to do that.\n *\n * @param {Options | null | undefined} [options='yaml']\n *   Configuration (default: `'yaml'`).\n * @returns {undefined}\n *   Nothing.\n */\nfunction remarkFrontmatter(options) {\n  // @ts-expect-error: TS is wrong about `this`.\n  // eslint-disable-next-line unicorn/no-this-assignment\n  const self = /** @type {Processor} */ (this)\n  const settings = options || remark_frontmatter_lib_emptyOptions\n  const data = self.data()\n\n  const micromarkExtensions =\n    data.micromarkExtensions || (data.micromarkExtensions = [])\n  const fromMarkdownExtensions =\n    data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n  const toMarkdownExtensions =\n    data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n  micromarkExtensions.push(frontmatter(settings))\n  fromMarkdownExtensions.push(frontmatterFromMarkdown(settings))\n  toMarkdownExtensions.push(frontmatterToMarkdown(settings))\n}\n\n;// ./node_modules/ccount/index.js\n/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n *   Value to search in.\n * @param {string} character\n *   Character (or substring) to look for.\n * @return {number}\n *   Number of times `character` occurred in `value`.\n */\nfunction ccount(value, character) {\n  const source = String(value)\n\n  if (typeof character !== 'string') {\n    throw new TypeError('Expected character')\n  }\n\n  let count = 0\n  let index = source.indexOf(character)\n\n  while (index !== -1) {\n    count++\n    index = source.indexOf(character, index + character.length)\n  }\n\n  return count\n}\n\n;// ./node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js\nfunction escape_string_regexp_escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n\n;// ./node_modules/mdast-util-find-and-replace/lib/index.js\n/**\n * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'\n * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef RegExpMatchObject\n *   Info on the match.\n * @property {number} index\n *   The index of the search at which the result was found.\n * @property {string} input\n *   A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n *   All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n *   Pattern to find.\n *\n *   Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n *   Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n *   Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n *   Thing to replace with.\n *\n * @callback ReplaceFunction\n *   Callback called when a search matches.\n * @param {...any} parameters\n *   The parameters are the result of corresponding search expression:\n *\n *   * `value` (`string`) — whole match\n *   * `...capture` (`Array<string>`) — matches from regex capture groups\n *   * `match` (`RegExpMatchObject`) — info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n *   Thing to replace with.\n *\n *   * when `null`, `undefined`, `''`, remove the match\n *   * …or when `false`, do not replace at all\n *   * …or when `string`, replace with a text node of that value\n *   * …or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n *   Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n *   All find and replaced.\n *\n * @typedef Options\n *   Configuration.\n * @property {Test | null | undefined} [ignore]\n *   Test for which nodes to ignore (optional).\n */\n\n\n\n\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n *   Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n *   Patterns to find.\n * @param {Options | null | undefined} [options]\n *   Configuration (when `find` is not `Find`).\n * @returns {undefined}\n *   Nothing.\n */\nfunction findAndReplace(tree, list, options) {\n  const settings = options || {}\n  const ignored = convert(settings.ignore || [])\n  const pairs = toPairs(list)\n  let pairIndex = -1\n\n  while (++pairIndex < pairs.length) {\n    visitParents(tree, 'text', visitor)\n  }\n\n  /** @type {BuildVisitor<Root, 'text'>} */\n  function visitor(node, parents) {\n    let index = -1\n    /** @type {Parents | undefined} */\n    let grandparent\n\n    while (++index < parents.length) {\n      const parent = parents[index]\n      /** @type {Array<Nodes> | undefined} */\n      const siblings = grandparent ? grandparent.children : undefined\n\n      if (\n        ignored(\n          parent,\n          siblings ? siblings.indexOf(parent) : undefined,\n          grandparent\n        )\n      ) {\n        return\n      }\n\n      grandparent = parent\n    }\n\n    if (grandparent) {\n      return handler(node, parents)\n    }\n  }\n\n  /**\n   * Handle a text node which is not in an ignored parent.\n   *\n   * @param {Text} node\n   *   Text node.\n   * @param {Array<Parents>} parents\n   *   Parents.\n   * @returns {VisitorResult}\n   *   Result.\n   */\n  function handler(node, parents) {\n    const parent = parents[parents.length - 1]\n    const find = pairs[pairIndex][0]\n    const replace = pairs[pairIndex][1]\n    let start = 0\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children\n    const index = siblings.indexOf(node)\n    let change = false\n    /** @type {Array<PhrasingContent>} */\n    let nodes = []\n\n    find.lastIndex = 0\n\n    let match = find.exec(node.value)\n\n    while (match) {\n      const position = match.index\n      /** @type {RegExpMatchObject} */\n      const matchObject = {\n        index: match.index,\n        input: match.input,\n        stack: [...parents, node]\n      }\n      let value = replace(...match, matchObject)\n\n      if (typeof value === 'string') {\n        value = value.length > 0 ? {type: 'text', value} : undefined\n      }\n\n      // It wasn’t a match after all.\n      if (value === false) {\n        // False acts as if there was no match.\n        // So we need to reset `lastIndex`, which currently being at the end of\n        // the current match, to the beginning.\n        find.lastIndex = position + 1\n      } else {\n        if (start !== position) {\n          nodes.push({\n            type: 'text',\n            value: node.value.slice(start, position)\n          })\n        }\n\n        if (Array.isArray(value)) {\n          nodes.push(...value)\n        } else if (value) {\n          nodes.push(value)\n        }\n\n        start = position + match[0].length\n        change = true\n      }\n\n      if (!find.global) {\n        break\n      }\n\n      match = find.exec(node.value)\n    }\n\n    if (change) {\n      if (start < node.value.length) {\n        nodes.push({type: 'text', value: node.value.slice(start)})\n      }\n\n      parent.children.splice(index, 1, ...nodes)\n    } else {\n      nodes = [node]\n    }\n\n    return index + nodes.length\n  }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n *   Schema.\n * @returns {Pairs}\n *   Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n  /** @type {Pairs} */\n  const result = []\n\n  if (!Array.isArray(tupleOrList)) {\n    throw new TypeError('Expected find and replace tuple or list of tuples')\n  }\n\n  /** @type {FindAndReplaceList} */\n  // @ts-expect-error: correct.\n  const list =\n    !tupleOrList[0] || Array.isArray(tupleOrList[0])\n      ? tupleOrList\n      : [tupleOrList]\n\n  let index = -1\n\n  while (++index < list.length) {\n    const tuple = list[index]\n    result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n  }\n\n  return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n *   Find.\n * @returns {RegExp}\n *   Expression.\n */\nfunction toExpression(find) {\n  return typeof find === 'string' ? new RegExp(escape_string_regexp_escapeStringRegexp(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n *   Replace.\n * @returns {ReplaceFunction}\n *   Function.\n */\nfunction toFunction(replace) {\n  return typeof replace === 'function'\n    ? replace\n    : function () {\n        return replace\n      }\n}\n\n;// ./node_modules/mdast-util-gfm-autolink-literal/lib/index.js\n/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').Transform} FromMarkdownTransform\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('mdast-util-find-and-replace').RegExpMatchObject} RegExpMatchObject\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n */\n\n\n\n\n\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nfunction gfmAutolinkLiteralFromMarkdown() {\n  return {\n    transforms: [transformGfmAutolinkLiterals],\n    enter: {\n      literalAutolink: enterLiteralAutolink,\n      literalAutolinkEmail: enterLiteralAutolinkValue,\n      literalAutolinkHttp: enterLiteralAutolinkValue,\n      literalAutolinkWww: enterLiteralAutolinkValue\n    },\n    exit: {\n      literalAutolink: exitLiteralAutolink,\n      literalAutolinkEmail: exitLiteralAutolinkEmail,\n      literalAutolinkHttp: exitLiteralAutolinkHttp,\n      literalAutolinkWww: exitLiteralAutolinkWww\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nfunction gfmAutolinkLiteralToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: '@',\n        before: '[+\\\\-.\\\\w]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: '.',\n        before: '[Ww]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: ':',\n        before: '[ps]',\n        after: '\\\\/',\n        inConstruct,\n        notInConstruct\n      }\n    ]\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n  this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n  this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n  this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n  this.config.exit.data.call(this, token)\n  const node = this.stack[this.stack.length - 1]\n  default_ok(node.type === 'link')\n  node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n  this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n  this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n  findAndReplace(\n    tree,\n    [\n      [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n      [/([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/g, findEmail]\n    ],\n    {ignore: ['link', 'linkReference']}\n  )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array<PhrasingContent> | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n  let prefix = ''\n\n  // Not an expected previous character.\n  if (!lib_previous(match)) {\n    return false\n  }\n\n  // Treat `www` as part of the domain.\n  if (/^w/i.test(protocol)) {\n    domain = protocol + domain\n    protocol = ''\n    prefix = 'http://'\n  }\n\n  if (!isCorrectDomain(domain)) {\n    return false\n  }\n\n  const parts = splitUrl(domain + path)\n\n  if (!parts[0]) return false\n\n  /** @type {Link} */\n  const result = {\n    type: 'link',\n    title: null,\n    url: prefix + protocol + parts[0],\n    children: [{type: 'text', value: protocol + parts[0]}]\n  }\n\n  if (parts[1]) {\n    return [result, {type: 'text', value: parts[1]}]\n  }\n\n  return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n  if (\n    // Not an expected previous character.\n    !lib_previous(match, true) ||\n    // Label ends in not allowed character.\n    /[-\\d_]$/.test(label)\n  ) {\n    return false\n  }\n\n  return {\n    type: 'link',\n    title: null,\n    url: 'mailto:' + atext + '@' + label,\n    children: [{type: 'text', value: atext + '@' + label}]\n  }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n  const parts = domain.split('.')\n\n  if (\n    parts.length < 2 ||\n    (parts[parts.length - 1] &&\n      (/_/.test(parts[parts.length - 1]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n    (parts[parts.length - 2] &&\n      (/_/.test(parts[parts.length - 2]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n  ) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n  const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n  if (!trailExec) {\n    return [url, undefined]\n  }\n\n  url = url.slice(0, trailExec.index)\n\n  let trail = trailExec[0]\n  let closingParenIndex = trail.indexOf(')')\n  const openingParens = ccount(url, '(')\n  let closingParens = ccount(url, ')')\n\n  while (closingParenIndex !== -1 && openingParens > closingParens) {\n    url += trail.slice(0, closingParenIndex + 1)\n    trail = trail.slice(closingParenIndex + 1)\n    closingParenIndex = trail.indexOf(')')\n    closingParens++\n  }\n\n  return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction lib_previous(match, email) {\n  const code = match.input.charCodeAt(match.index - 1)\n\n  return (\n    (match.index === 0 ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)) &&\n    (!email || code !== 47)\n  )\n}\n\n;// ./node_modules/mdast-util-gfm-footnote/lib/index.js\n/**\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Map} Map\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n\n\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nfunction gfmFootnoteFromMarkdown() {\n  return {\n    enter: {\n      gfmFootnoteDefinition: enterFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n      gfmFootnoteCall: enterFootnoteCall,\n      gfmFootnoteCallString: enterFootnoteCallString\n    },\n    exit: {\n      gfmFootnoteDefinition: exitFootnoteDefinition,\n      gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n      gfmFootnoteCall: exitFootnoteCall,\n      gfmFootnoteCallString: exitFootnoteCallString\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nfunction gfmFootnoteToMarkdown() {\n  return {\n    // This is on by default already.\n    unsafe: [{character: '[', inConstruct: ['phrasing', 'label', 'reference']}],\n    handlers: {footnoteDefinition, footnoteReference}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n  this.enter(\n    {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n    token\n  )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  default_ok(node.type === 'footnoteDefinition')\n  node.label = label\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n  this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  default_ok(node.type === 'footnoteReference')\n  node.label = label\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[^')\n  const exit = state.enter('footnoteReference')\n  const subexit = state.enter('reference')\n  value += tracker.move(\n    state.safe(state.associationId(node), {\n      ...tracker.current(),\n      before: value,\n      after: ']'\n    })\n  )\n  subexit()\n  exit()\n  value += tracker.move(']')\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n  return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\nfunction footnoteDefinition(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[^')\n  const exit = state.enter('footnoteDefinition')\n  const subexit = state.enter('label')\n  value += tracker.move(\n    state.safe(state.associationId(node), {\n      ...tracker.current(),\n      before: value,\n      after: ']'\n    })\n  )\n  subexit()\n  value += tracker.move(\n    ']:' + (node.children && node.children.length > 0 ? ' ' : '')\n  )\n  tracker.shift(4)\n  value += tracker.move(\n    state.indentLines(state.containerFlow(node, tracker.current()), lib_map)\n  )\n  exit()\n\n  return value\n}\n\n/** @type {Map} */\nfunction lib_map(line, index, blank) {\n  if (index === 0) {\n    return line\n  }\n\n  return (blank ? '' : '    ') + line\n}\n\n;// ./node_modules/mdast-util-gfm-strikethrough/lib/index.js\n/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n  'autolink',\n  'destinationLiteral',\n  'destinationRaw',\n  'reference',\n  'titleQuote',\n  'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nfunction gfmStrikethroughFromMarkdown() {\n  return {\n    canContainEols: ['delete'],\n    enter: {strikethrough: enterStrikethrough},\n    exit: {strikethrough: exitStrikethrough}\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nfunction gfmStrikethroughToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: '~',\n        inConstruct: 'phrasing',\n        notInConstruct: constructsWithoutStrikethrough\n      }\n    ],\n    handlers: {delete: handleDelete}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n  this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  const exit = state.enter('strikethrough')\n  let value = tracker.move('~~')\n  value += state.containerPhrasing(node, {\n    ...tracker.current(),\n    before: value,\n    after: '~'\n  })\n  value += tracker.move('~~')\n  exit()\n  return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n  return '~'\n}\n\n;// ./node_modules/markdown-table/index.js\n/**\n * @typedef Options\n *   Configuration (optional).\n * @property {string|null|ReadonlyArray<string|null|undefined>} [align]\n *   One style for all columns, or styles for their respective columns.\n *   Each style is either `'l'` (left), `'r'` (right), or `'c'` (center).\n *   Other values are treated as `''`, which doesn’t place the colon in the\n *   alignment row but does align left.\n *   *Only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean} [padding=true]\n *   Whether to add a space of padding between delimiters and cells.\n *\n *   When `true`, there is padding:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there is no padding:\n *\n *   ```markdown\n *   |Alpha|B    |\n *   |-----|-----|\n *   |C    |Delta|\n *   ```\n * @property {boolean} [delimiterStart=true]\n *   Whether to begin each row with the delimiter.\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are starting delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no starting delimiters:\n *\n *   ```markdown\n *   Alpha | B     |\n *   ----- | ----- |\n *   C     | Delta |\n *   ```\n * @property {boolean} [delimiterEnd=true]\n *   Whether to end each row with the delimiter.\n *\n *   > 👉 **Note**: please don’t use this: it could create fragile structures\n *   > that aren’t understandable to some markdown parsers.\n *\n *   When `true`, there are ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B\n *   | ----- | -----\n *   | C     | Delta\n *   ```\n * @property {boolean} [alignDelimiters=true]\n *   Whether to align the delimiters.\n *   By default, they are aligned:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   Pass `false` to make them staggered:\n *\n *   ```markdown\n *   | Alpha | B |\n *   | - | - |\n *   | C | Delta |\n *   ```\n * @property {(value: string) => number} [stringLength]\n *   Function to detect the length of table cell content.\n *   This is used when aligning the delimiters (`|`) between table cells.\n *   Full-width characters and emoji mess up delimiter alignment when viewing\n *   the markdown source.\n *   To fix this, you can pass this function, which receives the cell content\n *   and returns its “visible” size.\n *   Note that what is and isn’t visible depends on where the text is displayed.\n *\n *   Without such a function, the following:\n *\n *   ```js\n *   markdownTable([\n *     ['Alpha', 'Bravo'],\n *     ['中文', 'Charlie'],\n *     ['👩‍❤️‍👩', 'Delta']\n *   ])\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo |\n *   | - | - |\n *   | 中文 | Charlie |\n *   | 👩‍❤️‍👩 | Delta |\n *   ```\n *\n *   With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n *   ```js\n *   import stringWidth from 'string-width'\n *\n *   markdownTable(\n *     [\n *       ['Alpha', 'Bravo'],\n *       ['中文', 'Charlie'],\n *       ['👩‍❤️‍👩', 'Delta']\n *     ],\n *     {stringLength: stringWidth}\n *   )\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo   |\n *   | ----- | ------- |\n *   | 中文  | Charlie |\n *   | 👩‍❤️‍👩    | Delta   |\n *   ```\n */\n\n/**\n * @typedef {Options} MarkdownTableOptions\n * @todo\n *   Remove next major.\n */\n\n/**\n * Generate a markdown ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables)) table..\n *\n * @param {ReadonlyArray<ReadonlyArray<string|null|undefined>>} table\n *   Table data (matrix of strings).\n * @param {Options} [options]\n *   Configuration (optional).\n * @returns {string}\n */\nfunction markdownTable(table, options = {}) {\n  const align = (options.align || []).concat()\n  const stringLength = options.stringLength || defaultStringLength\n  /** @type {Array<number>} Character codes as symbols for alignment per column. */\n  const alignments = []\n  /** @type {Array<Array<string>>} Cells per row. */\n  const cellMatrix = []\n  /** @type {Array<Array<number>>} Sizes of each cell per row. */\n  const sizeMatrix = []\n  /** @type {Array<number>} */\n  const longestCellByColumn = []\n  let mostCellsPerRow = 0\n  let rowIndex = -1\n\n  // This is a superfluous loop if we don’t align delimiters, but otherwise we’d\n  // do superfluous work when aligning, so optimize for aligning.\n  while (++rowIndex < table.length) {\n    /** @type {Array<string>} */\n    const row = []\n    /** @type {Array<number>} */\n    const sizes = []\n    let columnIndex = -1\n\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length\n    }\n\n    while (++columnIndex < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex])\n\n      if (options.alignDelimiters !== false) {\n        const size = stringLength(cell)\n        sizes[columnIndex] = size\n\n        if (\n          longestCellByColumn[columnIndex] === undefined ||\n          size > longestCellByColumn[columnIndex]\n        ) {\n          longestCellByColumn[columnIndex] = size\n        }\n      }\n\n      row.push(cell)\n    }\n\n    cellMatrix[rowIndex] = row\n    sizeMatrix[rowIndex] = sizes\n  }\n\n  // Figure out which alignments to use.\n  let columnIndex = -1\n\n  if (typeof align === 'object' && 'length' in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex])\n    }\n  } else {\n    const code = toAlignment(align)\n\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code\n    }\n  }\n\n  // Inject the alignment row.\n  columnIndex = -1\n  /** @type {Array<string>} */\n  const row = []\n  /** @type {Array<number>} */\n  const sizes = []\n\n  while (++columnIndex < mostCellsPerRow) {\n    const code = alignments[columnIndex]\n    let before = ''\n    let after = ''\n\n    if (code === 99 /* `c` */) {\n      before = ':'\n      after = ':'\n    } else if (code === 108 /* `l` */) {\n      before = ':'\n    } else if (code === 114 /* `r` */) {\n      after = ':'\n    }\n\n    // There *must* be at least one hyphen-minus in each alignment cell.\n    let size =\n      options.alignDelimiters === false\n        ? 1\n        : Math.max(\n            1,\n            longestCellByColumn[columnIndex] - before.length - after.length\n          )\n\n    const cell = before + '-'.repeat(size) + after\n\n    if (options.alignDelimiters !== false) {\n      size = before.length + size + after.length\n\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size\n      }\n\n      sizes[columnIndex] = size\n    }\n\n    row[columnIndex] = cell\n  }\n\n  // Inject the alignment row.\n  cellMatrix.splice(1, 0, row)\n  sizeMatrix.splice(1, 0, sizes)\n\n  rowIndex = -1\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (++rowIndex < cellMatrix.length) {\n    const row = cellMatrix[rowIndex]\n    const sizes = sizeMatrix[rowIndex]\n    columnIndex = -1\n    /** @type {Array<string>} */\n    const line = []\n\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row[columnIndex] || ''\n      let before = ''\n      let after = ''\n\n      if (options.alignDelimiters !== false) {\n        const size =\n          longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n        const code = alignments[columnIndex]\n\n        if (code === 114 /* `r` */) {\n          before = ' '.repeat(size)\n        } else if (code === 99 /* `c` */) {\n          if (size % 2) {\n            before = ' '.repeat(size / 2 + 0.5)\n            after = ' '.repeat(size / 2 - 0.5)\n          } else {\n            before = ' '.repeat(size / 2)\n            after = before\n          }\n        } else {\n          after = ' '.repeat(size)\n        }\n      }\n\n      if (options.delimiterStart !== false && !columnIndex) {\n        line.push('|')\n      }\n\n      if (\n        options.padding !== false &&\n        // Don’t add the opening space if we’re not aligning and the cell is\n        // empty: there will be a closing space.\n        !(options.alignDelimiters === false && cell === '') &&\n        (options.delimiterStart !== false || columnIndex)\n      ) {\n        line.push(' ')\n      }\n\n      if (options.alignDelimiters !== false) {\n        line.push(before)\n      }\n\n      line.push(cell)\n\n      if (options.alignDelimiters !== false) {\n        line.push(after)\n      }\n\n      if (options.padding !== false) {\n        line.push(' ')\n      }\n\n      if (\n        options.delimiterEnd !== false ||\n        columnIndex !== mostCellsPerRow - 1\n      ) {\n        line.push('|')\n      }\n    }\n\n    lines.push(\n      options.delimiterEnd === false\n        ? line.join('').replace(/ +$/, '')\n        : line.join('')\n    )\n  }\n\n  return lines.join('\\n')\n}\n\n/**\n * @param {string|null|undefined} [value]\n * @returns {string}\n */\nfunction serialize(value) {\n  return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string} value\n * @returns {number}\n */\nfunction defaultStringLength(value) {\n  return value.length\n}\n\n/**\n * @param {string|null|undefined} value\n * @returns {number}\n */\nfunction toAlignment(value) {\n  const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n  return code === 67 /* `C` */ || code === 99 /* `c` */\n    ? 99 /* `c` */\n    : code === 76 /* `L` */ || code === 108 /* `l` */\n    ? 108 /* `l` */\n    : code === 82 /* `R` */ || code === 114 /* `r` */\n    ? 114 /* `r` */\n    : 0\n}\n\n;// ./node_modules/mdast-util-gfm-table/lib/index.js\n/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n *   Whether to add a space of padding between delimiters and cells (default:\n *   `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n *   Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n *   Function to detect the length of table cell content, used when aligning\n *   the delimiters between cells (optional).\n */\n\n\n\n\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nfunction gfmTableFromMarkdown() {\n  return {\n    enter: {\n      table: enterTable,\n      tableData: enterCell,\n      tableHeader: enterCell,\n      tableRow: enterRow\n    },\n    exit: {\n      codeText: exitCodeText,\n      table: exitTable,\n      tableData: lib_exit,\n      tableHeader: lib_exit,\n      tableRow: lib_exit\n    }\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n  const align = token._align\n  default_ok(align, 'expected `_align` on table')\n  this.enter(\n    {\n      type: 'table',\n      align: align.map(function (d) {\n        return d === 'none' ? null : d\n      }),\n      children: []\n    },\n    token\n  )\n  this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n  this.exit(token)\n  this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n  this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction lib_exit(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n  this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n  let value = this.resume()\n\n  if (this.data.inTable) {\n    value = value.replace(/\\\\([\\\\|])/g, replace)\n  }\n\n  const node = this.stack[this.stack.length - 1]\n  default_ok(node.type === 'inlineCode')\n  node.value = value\n  this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n  // Pipes work, backslashes don’t (but can’t escape pipes).\n  return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nfunction gfmTableToMarkdown(options) {\n  const settings = options || {}\n  const padding = settings.tableCellPadding\n  const alignDelimiters = settings.tablePipeAlign\n  const stringLength = settings.stringLength\n  const around = padding ? ' ' : '|'\n\n  return {\n    unsafe: [\n      {character: '\\r', inConstruct: 'tableCell'},\n      {character: '\\n', inConstruct: 'tableCell'},\n      // A pipe, when followed by a tab or space (padding), or a dash or colon\n      // (unpadded delimiter row), could result in a table.\n      {atBreak: true, character: '|', after: '[\\t :-]'},\n      // A pipe in a cell must be encoded.\n      {character: '|', inConstruct: 'tableCell'},\n      // A colon must be followed by a dash, in which case it could start a\n      // delimiter row.\n      {atBreak: true, character: ':', after: '-'},\n      // A delimiter row can also start with a dash, when followed by more\n      // dashes, a colon, or a pipe.\n      // This is a stricter version than the built in check for lists, thematic\n      // breaks, and setex heading underlines though:\n      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      {atBreak: true, character: '-', after: '[:|-]'}\n    ],\n    handlers: {\n      inlineCode: inlineCodeWithTable,\n      table: handleTable,\n      tableCell: handleTableCell,\n      tableRow: handleTableRow\n    }\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Table} node\n   */\n  function handleTable(node, _, state, info) {\n    return serializeData(handleTableAsData(node, state, info), node.align)\n  }\n\n  /**\n   * This function isn’t really used normally, because we handle rows at the\n   * table level.\n   * But, if someone passes in a table row, this ensures we make somewhat sense.\n   *\n   * @type {ToMarkdownHandle}\n   * @param {TableRow} node\n   */\n  function handleTableRow(node, _, state, info) {\n    const row = handleTableRowAsData(node, state, info)\n    const value = serializeData([row])\n    // `markdown-table` will always add an align row\n    return value.slice(0, value.indexOf('\\n'))\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {TableCell} node\n   */\n  function handleTableCell(node, _, state, info) {\n    const exit = state.enter('tableCell')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...info,\n      before: around,\n      after: around\n    })\n    subexit()\n    exit()\n    return value\n  }\n\n  /**\n   * @param {Array<Array<string>>} matrix\n   * @param {Array<string | null | undefined> | null | undefined} [align]\n   */\n  function serializeData(matrix, align) {\n    return markdownTable(matrix, {\n      align,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      alignDelimiters,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      padding,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      stringLength\n    })\n  }\n\n  /**\n   * @param {Table} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<Array<string>>} */\n    const result = []\n    const subexit = state.enter('table')\n\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(children[index], state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @param {TableRow} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableRowAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<string>} */\n    const result = []\n    const subexit = state.enter('tableRow')\n\n    while (++index < children.length) {\n      // Note: the positional info as used here is incorrect.\n      // Making it correct would be impossible due to aligning cells?\n      // And it would need copy/pasting `markdown-table` into this project.\n      result[index] = handleTableCell(children[index], node, state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineCode} node\n   */\n  function inlineCodeWithTable(node, parent, state) {\n    let value = handle.inlineCode(node, parent, state)\n\n    if (state.stack.includes('tableCell')) {\n      value = value.replace(/\\|/g, '\\\\$&')\n    }\n\n    return value\n  }\n}\n\n;// ./node_modules/mdast-util-gfm-task-list-item/lib/index.js\n/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\n\n\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nfunction gfmTaskListItemFromMarkdown() {\n  return {\n    exit: {\n      taskListCheckValueChecked: exitCheck,\n      taskListCheckValueUnchecked: exitCheck,\n      paragraph: exitParagraphWithTaskListItem\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nfunction gfmTaskListItemToMarkdown() {\n  return {\n    unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n    handlers: {listItem: listItemWithTaskListItem}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n  // We’re always in a paragraph, in a list item.\n  const node = this.stack[this.stack.length - 2]\n  default_ok(node.type === 'listItem')\n  node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n  const parent = this.stack[this.stack.length - 2]\n\n  if (\n    parent &&\n    parent.type === 'listItem' &&\n    typeof parent.checked === 'boolean'\n  ) {\n    const node = this.stack[this.stack.length - 1]\n    default_ok(node.type === 'paragraph')\n    const head = node.children[0]\n\n    if (head && head.type === 'text') {\n      const siblings = parent.children\n      let index = -1\n      /** @type {Paragraph | undefined} */\n      let firstParaghraph\n\n      while (++index < siblings.length) {\n        const sibling = siblings[index]\n        if (sibling.type === 'paragraph') {\n          firstParaghraph = sibling\n          break\n        }\n      }\n\n      if (firstParaghraph === node) {\n        // Must start with a space or a tab.\n        head.value = head.value.slice(1)\n\n        if (head.value.length === 0) {\n          node.children.shift()\n        } else if (\n          node.position &&\n          head.position &&\n          typeof head.position.start.offset === 'number'\n        ) {\n          head.position.start.column++\n          head.position.start.offset++\n          node.position.start = Object.assign({}, head.position.start)\n        }\n      }\n    }\n  }\n\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n  const head = node.children[0]\n  const checkable =\n    typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n  const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n  const tracker = state.createTracker(info)\n\n  if (checkable) {\n    tracker.move(checkbox)\n  }\n\n  let value = handle.listItem(node, parent, state, {\n    ...info,\n    ...tracker.current()\n  })\n\n  if (checkable) {\n    value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n  }\n\n  return value\n\n  /**\n   * @param {string} $0\n   * @returns {string}\n   */\n  function check($0) {\n    return $0 + checkbox\n  }\n}\n\n;// ./node_modules/mdast-util-gfm/lib/index.js\n/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * @typedef {import('mdast-util-gfm-table').Options} Options\n *   Configuration.\n */\n\n\n\n\n\n\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n *   Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nfunction gfmFromMarkdown() {\n  return [\n    gfmAutolinkLiteralFromMarkdown(),\n    gfmFootnoteFromMarkdown(),\n    gfmStrikethroughFromMarkdown(),\n    gfmTableFromMarkdown(),\n    gfmTaskListItemFromMarkdown()\n  ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nfunction gfmToMarkdown(options) {\n  return {\n    extensions: [\n      gfmAutolinkLiteralToMarkdown(),\n      gfmFootnoteToMarkdown(),\n      gfmStrikethroughToMarkdown(),\n      gfmTableToMarkdown(options),\n      gfmTaskListItemToMarkdown()\n    ]\n  }\n}\n\n;// ./node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js\n/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\nconst wwwPrefix = {\n  tokenize: tokenizeWwwPrefix,\n  partial: true\n}\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n}\nconst syntax_path = {\n  tokenize: tokenizePath,\n  partial: true\n}\nconst trail = {\n  tokenize: tokenizeTrail,\n  partial: true\n}\nconst emailDomainDotTrail = {\n  tokenize: tokenizeEmailDomainDotTrail,\n  partial: true\n}\nconst wwwAutolink = {\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n}\nconst protocolAutolink = {\n  tokenize: tokenizeProtocolAutolink,\n  previous: previousProtocol\n}\nconst emailAutolink = {\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n}\n\n/** @type {ConstructRecord} */\nconst syntax_text = {}\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   autolink literal syntax.\n */\nfunction gfmAutolinkLiteral() {\n  return {\n    text: syntax_text\n  }\n}\n\n/** @type {Code} */\nlet syntax_code = 48\n\n// Add alphanumerics.\nwhile (syntax_code < 123) {\n  syntax_text[syntax_code] = emailAutolink\n  syntax_code++\n  if (syntax_code === 58) syntax_code = 65\n  else if (syntax_code === 91) syntax_code = 97\n}\nsyntax_text[43] = emailAutolink\nsyntax_text[45] = emailAutolink\nsyntax_text[46] = emailAutolink\nsyntax_text[95] = emailAutolink\nsyntax_text[72] = [emailAutolink, protocolAutolink]\nsyntax_text[104] = [emailAutolink, protocolAutolink]\nsyntax_text[87] = [emailAutolink, wwwAutolink]\nsyntax_text[119] = [emailAutolink, wwwAutolink]\n\n// To do: perform email autolink literals on events, afterwards.\n// That’s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self = this\n  /** @type {boolean | undefined} */\n  let dot\n  /** @type {boolean} */\n  let data\n  return start\n\n  /**\n   * Start of email autolink literal.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (\n      !gfmAtext(code) ||\n      !previousEmail.call(self, self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkEmail')\n    return atext(code)\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atext(code) {\n    if (gfmAtext(code)) {\n      effects.consume(code)\n      return atext\n    }\n    if (code === 64) {\n      effects.consume(code)\n      return emailDomain\n    }\n    return nok(code)\n  }\n\n  /**\n   * In email domain.\n   *\n   * The reference code is a bit overly complex as it handles the `@`, of which\n   * there may be just one.\n   * Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomain(code) {\n    // Dot followed by alphanumerical (not `-` or `_`).\n    if (code === 46) {\n      return effects.check(\n        emailDomainDotTrail,\n        emailDomainAfter,\n        emailDomainDot\n      )(code)\n    }\n\n    // Alphanumerical, `-`, and `_`.\n    if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n      data = true\n      effects.consume(code)\n      return emailDomain\n    }\n\n    // To do: `/` if xmpp.\n\n    // Note: normally we’d truncate trailing punctuation from the link.\n    // However, email autolink literals cannot contain any of those markers,\n    // except for `.`, but that can only occur if it isn’t trailing.\n    // So we can ignore truncating!\n    return emailDomainAfter(code)\n  }\n\n  /**\n   * In email domain, on dot that is not a trail.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainDot(code) {\n    effects.consume(code)\n    dot = true\n    return emailDomain\n  }\n\n  /**\n   * After email domain.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainAfter(code) {\n    // Domain must not be empty, must include a dot, and must end in alphabetical.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\n    if (data && dot && asciiAlpha(self.previous)) {\n      effects.exit('literalAutolinkEmail')\n      effects.exit('literalAutolink')\n      return ok(code)\n    }\n    return nok(code)\n  }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self = this\n  return wwwStart\n\n  /**\n   * Start of www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwStart(code) {\n    if (\n      (code !== 87 && code !== 119) ||\n      !previousWww.call(self, self.previous) ||\n      previousUnbalanced(self.events)\n    ) {\n      return nok(code)\n    }\n    effects.enter('literalAutolink')\n    effects.enter('literalAutolinkWww')\n    // Note: we *check*, so we can discard the `www.` we parsed.\n    // If it worked, we consider it as a part of the domain.\n    return effects.check(\n      wwwPrefix,\n      effects.attempt(domain, effects.attempt(syntax_path, wwwAfter), nok),\n      nok\n    )(code)\n  }\n\n  /**\n   * After a www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwAfter(code) {\n    effects.exit('literalAutolinkWww')\n    effects.exit('literalAutolink')\n    return ok(code)\n  }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n  const self = this\n  let buffer = ''\n  let seen = false\n  return protocolStart\n\n  /**\n   * Start of protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolStart(code) {\n    if (\n      (code === 72 || code === 104) &&\n      previousProtocol.call(self, self.previous) &&\n      !previousUnbalanced(self.events)\n    ) {\n      effects.enter('literalAutolink')\n      effects.enter('literalAutolinkHttp')\n      buffer += String.fromCodePoint(code)\n      effects.consume(code)\n      return protocolPrefixInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * In protocol.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolPrefixInside(code) {\n    // `5` is size of `https`\n    if (asciiAlpha(code) && buffer.length < 5) {\n      // @ts-expect-error: definitely number.\n      buffer += String.fromCodePoint(code)\n      effects.consume(code)\n      return protocolPrefixInside\n    }\n    if (code === 58) {\n      const protocol = buffer.toLowerCase()\n      if (protocol === 'http' || protocol === 'https') {\n        effects.consume(code)\n        return protocolSlashesInside\n      }\n    }\n    return nok(code)\n  }\n\n  /**\n   * In slashes.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *           ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolSlashesInside(code) {\n    if (code === 47) {\n      effects.consume(code)\n      if (seen) {\n        return afterProtocol\n      }\n      seen = true\n      return protocolSlashesInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * After protocol, before domain.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterProtocol(code) {\n    // To do: this is different from `markdown-rs`:\n    // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n    return code === null ||\n      asciiControl(code) ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)\n      ? nok(code)\n      : effects.attempt(domain, effects.attempt(syntax_path, protocolAfter), nok)(code)\n  }\n\n  /**\n   * After a protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *                              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolAfter(code) {\n    effects.exit('literalAutolinkHttp')\n    effects.exit('literalAutolink')\n    return ok(code)\n  }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n  let size = 0\n  return wwwPrefixInside\n\n  /**\n   * In www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *     ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixInside(code) {\n    if ((code === 87 || code === 119) && size < 3) {\n      size++\n      effects.consume(code)\n      return wwwPrefixInside\n    }\n    if (code === 46 && size === 3) {\n      effects.consume(code)\n      return wwwPrefixAfter\n    }\n    return nok(code)\n  }\n\n  /**\n   * After www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixAfter(code) {\n    // If there is *anything*, we can link.\n    return code === null ? nok(code) : ok(code)\n  }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n *               ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n  /** @type {boolean | undefined} */\n  let underscoreInLastSegment\n  /** @type {boolean | undefined} */\n  let underscoreInLastLastSegment\n  /** @type {boolean | undefined} */\n  let seen\n  return domainInside\n\n  /**\n   * In domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *             ^^^^^^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainInside(code) {\n    // Check whether this marker, which is a trailing punctuation\n    // marker, optionally followed by more trailing markers, and then\n    // followed by an end.\n    if (code === 46 || code === 95) {\n      return effects.check(trail, domainAfter, domainAtPunctuation)(code)\n    }\n\n    // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n    // occur, which sounds like ASCII only, but they also support `www.點看.com`,\n    // so that’s Unicode.\n    // Instead of some new production for Unicode alphanumerics, markdown\n    // already has that for Unicode punctuation and whitespace, so use those.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\n    if (\n      code === null ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code) ||\n      (code !== 45 && unicodePunctuation(code))\n    ) {\n      return domainAfter(code)\n    }\n    seen = true\n    effects.consume(code)\n    return domainInside\n  }\n\n  /**\n   * In domain, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainAtPunctuation(code) {\n    // There is an underscore in the last segment of the domain\n    if (code === 95) {\n      underscoreInLastSegment = true\n    }\n    // Otherwise, it’s a `.`: save the last segment underscore in the\n    // penultimate segment slot.\n    else {\n      underscoreInLastLastSegment = underscoreInLastSegment\n      underscoreInLastSegment = undefined\n    }\n    effects.consume(code)\n    return domainInside\n  }\n\n  /**\n   * After domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^\n   * ```\n   *\n   * @type {State} */\n  function domainAfter(code) {\n    // Note: that’s GH says a dot is needed, but it’s not true:\n    // <https://github.com/github/cmark-gfm/issues/279>\n    if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n      return nok(code)\n    }\n    return ok(code)\n  }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n *                          ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n  let sizeOpen = 0\n  let sizeClose = 0\n  return pathInside\n\n  /**\n   * In path.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathInside(code) {\n    if (code === 40) {\n      sizeOpen++\n      effects.consume(code)\n      return pathInside\n    }\n\n    // To do: `markdown-rs` also needs this.\n    // If this is a paren, and there are less closings than openings,\n    // we don’t check for a trail.\n    if (code === 41 && sizeClose < sizeOpen) {\n      return pathAtPunctuation(code)\n    }\n\n    // Check whether this trailing punctuation marker is optionally\n    // followed by more trailing markers, and then followed\n    // by an end.\n    if (\n      code === 33 ||\n      code === 34 ||\n      code === 38 ||\n      code === 39 ||\n      code === 41 ||\n      code === 42 ||\n      code === 44 ||\n      code === 46 ||\n      code === 58 ||\n      code === 59 ||\n      code === 60 ||\n      code === 63 ||\n      code === 93 ||\n      code === 95 ||\n      code === 126\n    ) {\n      return effects.check(trail, ok, pathAtPunctuation)(code)\n    }\n    if (\n      code === null ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code)\n    ) {\n      return ok(code)\n    }\n    effects.consume(code)\n    return pathInside\n  }\n\n  /**\n   * In path, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com/a\"b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathAtPunctuation(code) {\n    // Count closing parens.\n    if (code === 41) {\n      sizeClose++\n    }\n    effects.consume(code)\n    return pathInside\n  }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n *                        ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n  return trail\n\n  /**\n   * In trail of domain or path.\n   *\n   * ```markdown\n   * > | https://example.com\").\n   *                        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trail(code) {\n    // Regular trailing punctuation.\n    if (\n      code === 33 ||\n      code === 34 ||\n      code === 39 ||\n      code === 41 ||\n      code === 42 ||\n      code === 44 ||\n      code === 46 ||\n      code === 58 ||\n      code === 59 ||\n      code === 63 ||\n      code === 95 ||\n      code === 126\n    ) {\n      effects.consume(code)\n      return trail\n    }\n\n    // `&` followed by one or more alphabeticals and then a `;`, is\n    // as a whole considered as trailing punctuation.\n    // In all other cases, it is considered as continuation of the URL.\n    if (code === 38) {\n      effects.consume(code)\n      return trailCharRefStart\n    }\n\n    // Needed because we allow literals after `[`, as we fix:\n    // <https://github.com/github/cmark-gfm/issues/278>.\n    // Check that it is not followed by `(` or `[`.\n    if (code === 93) {\n      effects.consume(code)\n      return trailBracketAfter\n    }\n    if (\n      // `<` is an end.\n      code === 60 ||\n      // So is whitespace.\n      code === null ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code)\n    ) {\n      return ok(code)\n    }\n    return nok(code)\n  }\n\n  /**\n   * In trail, after `]`.\n   *\n   * > 👉 **Note**: this deviates from `cmark-gfm` to fix a bug.\n   * > See end of <https://github.com/github/cmark-gfm/issues/278> for more.\n   *\n   * ```markdown\n   * > | https://example.com](\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailBracketAfter(code) {\n    // Whitespace or something that could start a resource or reference is the end.\n    // Switch back to trail otherwise.\n    if (\n      code === null ||\n      code === 40 ||\n      code === 91 ||\n      markdownLineEndingOrSpace(code) ||\n      unicodeWhitespace(code)\n    ) {\n      return ok(code)\n    }\n    return trail(code)\n  }\n\n  /**\n   * In character-reference like trail, after `&`.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharRefStart(code) {\n    // When non-alpha, it’s not a trail.\n    return asciiAlpha(code) ? trailCharRefInside(code) : nok(code)\n  }\n\n  /**\n   * In character-reference like trail.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharRefInside(code) {\n    // Switch back to trail if this is well-formed.\n    if (code === 59) {\n      effects.consume(code)\n      return trail\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return trailCharRefInside\n    }\n\n    // It’s not a trail.\n    return nok(code)\n  }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n *                        ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n  return start\n\n  /**\n   * Dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                    ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Must be dot.\n    effects.consume(code)\n    return after\n  }\n\n  /**\n   * After dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                     ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Not a trail if alphanumeric.\n    return asciiAlphanumeric(code) ? nok(code) : ok(code)\n  }\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n  return (\n    code === null ||\n    code === 40 ||\n    code === 42 ||\n    code === 95 ||\n    code === 91 ||\n    code === 93 ||\n    code === 126 ||\n    markdownLineEndingOrSpace(code)\n  )\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n  return !asciiAlpha(code)\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n  // Do not allow a slash “inside” atext.\n  // The reference code is a bit weird, but that’s what it results in.\n  // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\n  // Other than slash, every preceding character is allowed.\n  return !(code === 47 || gfmAtext(code))\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n  return (\n    code === 43 ||\n    code === 45 ||\n    code === 46 ||\n    code === 95 ||\n    asciiAlphanumeric(code)\n  )\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n  let index = events.length\n  let result = false\n  while (index--) {\n    const token = events[index][1]\n    if (\n      (token.type === 'labelLink' || token.type === 'labelImage') &&\n      !token._balanced\n    ) {\n      result = true\n      break\n    }\n\n    // If we’ve seen this token, and it was marked as not having any unbalanced\n    // bracket before it, we can exit.\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false\n      break\n    }\n  }\n  if (events.length > 0 && !result) {\n    // Mark the last token as “walked into” w/o finding\n    // anything.\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true\n  }\n  return result\n}\n\n;// ./node_modules/micromark-extension-gfm-footnote/lib/syntax.js\n/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\n\n\nconst indent = {\n  tokenize: syntax_tokenizeIndent,\n  partial: true\n}\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to\n *   enable GFM footnote syntax.\n */\nfunction gfmFootnote() {\n  /** @type {Extension} */\n  return {\n    document: {\n      [91]: {\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        add: 'after',\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  }\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self = this\n  let index = self.events.length\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  /** @type {Token} */\n  let labelStart\n\n  // Find an opening.\n  while (index--) {\n    const token = self.events[index][1]\n    if (token.type === 'labelImage') {\n      labelStart = token\n      break\n    }\n\n    // Exit if we’ve walked far enough.\n    if (\n      token.type === 'gfmFootnoteCall' ||\n      token.type === 'labelLink' ||\n      token.type === 'label' ||\n      token.type === 'image' ||\n      token.type === 'link'\n    ) {\n      break\n    }\n  }\n  return start\n\n  /**\n   * @type {State}\n   */\n  function start(code) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code)\n    }\n    const id = normalizeIdentifier(\n      self.sliceSerialize({\n        start: labelStart.end,\n        end: self.now()\n      })\n    )\n    if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code)\n    }\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    return ok(code)\n  }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length\n  /** @type {Token | undefined} */\n  let labelStart\n\n  // Find an opening.\n  while (index--) {\n    if (\n      events[index][1].type === 'labelImage' &&\n      events[index][0] === 'enter'\n    ) {\n      labelStart = events[index][1]\n      break\n    }\n  }\n  // Change the `labelImageMarker` to a `data`.\n  events[index + 1][1].type = 'data'\n  events[index + 3][1].type = 'gfmFootnoteCallLabelMarker'\n\n  // The whole (without `!`):\n  /** @type {Token} */\n  const call = {\n    type: 'gfmFootnoteCall',\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  }\n  // The `^` marker\n  /** @type {Token} */\n  const marker = {\n    type: 'gfmFootnoteCallMarker',\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  }\n  // Increment the end 1 character.\n  marker.end.column++\n  marker.end.offset++\n  marker.end._bufferIndex++\n  /** @type {Token} */\n  const string = {\n    type: 'gfmFootnoteCallString',\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  }\n  /** @type {Token} */\n  const chunk = {\n    type: 'chunkString',\n    contentType: 'string',\n    start: Object.assign({}, string.start),\n    end: Object.assign({}, string.end)\n  }\n\n  /** @type {Array<Event>} */\n  const replacement = [\n    // Take the `labelImageMarker` (now `data`, the `!`)\n    events[index + 1],\n    events[index + 2],\n    ['enter', call, context],\n    // The `[`\n    events[index + 3],\n    events[index + 4],\n    // The `^`.\n    ['enter', marker, context],\n    ['exit', marker, context],\n    // Everything in between.\n    ['enter', string, context],\n    ['enter', chunk, context],\n    ['exit', chunk, context],\n    ['exit', string, context],\n    // The ending (`]`, properly parsed and labelled).\n    events[events.length - 2],\n    events[events.length - 1],\n    ['exit', call, context]\n  ]\n  events.splice(index, events.length - index + 1, ...replacement)\n  return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self = this\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  let size = 0\n  /** @type {boolean} */\n  let data\n\n  // Note: the implementation of `markdown-rs` is different, because it houses\n  // core *and* extensions in one project.\n  // Therefore, it can include footnote logic inside `label-end`.\n  // We can’t do that, but luckily, we can parse footnotes in a simpler way than\n  // needed for labels.\n  return start\n\n  /**\n   * Start of footnote label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteCall')\n    effects.enter('gfmFootnoteCallLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallLabelMarker')\n    return callStart\n  }\n\n  /**\n   * After `[`, at `^`.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callStart(code) {\n    if (code !== 94) return nok(code)\n    effects.enter('gfmFootnoteCallMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteCallMarker')\n    effects.enter('gfmFootnoteCallString')\n    effects.enter('chunkString').contentType = 'string'\n    return callData\n  }\n\n  /**\n   * In label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callData(code) {\n    if (\n      // Too long.\n      size > 999 ||\n      // Closing brace with nothing.\n      (code === 93 && !data) ||\n      // Space or tab is not supported by GFM for some reason.\n      // `\\n` and `[` not being supported makes sense.\n      code === null ||\n      code === 91 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return nok(code)\n    }\n    if (code === 93) {\n      effects.exit('chunkString')\n      const token = effects.exit('gfmFootnoteCallString')\n      if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n        return nok(code)\n      }\n      effects.enter('gfmFootnoteCallLabelMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteCallLabelMarker')\n      effects.exit('gfmFootnoteCall')\n      return ok\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true\n    }\n    size++\n    effects.consume(code)\n    return code === 92 ? callEscape : callData\n  }\n\n  /**\n   * On character after escape.\n   *\n   * ```markdown\n   * > | a [^b\\c] d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return callData\n    }\n    return callData(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self = this\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = [])\n  /** @type {string} */\n  let identifier\n  let size = 0\n  /** @type {boolean | undefined} */\n  let data\n  return start\n\n  /**\n   * Start of GFM footnote definition.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteDefinition')._container = true\n    effects.enter('gfmFootnoteDefinitionLabel')\n    effects.enter('gfmFootnoteDefinitionLabelMarker')\n    effects.consume(code)\n    effects.exit('gfmFootnoteDefinitionLabelMarker')\n    return labelAtMarker\n  }\n\n  /**\n   * In label, at caret.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAtMarker(code) {\n    if (code === 94) {\n      effects.enter('gfmFootnoteDefinitionMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteDefinitionMarker')\n      effects.enter('gfmFootnoteDefinitionLabelString')\n      effects.enter('chunkString').contentType = 'string'\n      return labelInside\n    }\n    return nok(code)\n  }\n\n  /**\n   * In label.\n   *\n   * > 👉 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n   * > definition labels.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (\n      // Too long.\n      size > 999 ||\n      // Closing brace with nothing.\n      (code === 93 && !data) ||\n      // Space or tab is not supported by GFM for some reason.\n      // `\\n` and `[` not being supported makes sense.\n      code === null ||\n      code === 91 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return nok(code)\n    }\n    if (code === 93) {\n      effects.exit('chunkString')\n      const token = effects.exit('gfmFootnoteDefinitionLabelString')\n      identifier = normalizeIdentifier(self.sliceSerialize(token))\n      effects.enter('gfmFootnoteDefinitionLabelMarker')\n      effects.consume(code)\n      effects.exit('gfmFootnoteDefinitionLabelMarker')\n      effects.exit('gfmFootnoteDefinitionLabel')\n      return labelAfter\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true\n    }\n    size++\n    effects.consume(code)\n    return code === 92 ? labelEscape : labelInside\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * > 👉 **Note**: `cmark-gfm` currently does not support escaped brackets:\n   * > <https://github.com/github/cmark-gfm/issues/240>\n   *\n   * ```markdown\n   * > | [^a\\*b]: c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return labelInside\n    }\n    return labelInside(code)\n  }\n\n  /**\n   * After definition label.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    if (code === 58) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker')\n      if (!defined.includes(identifier)) {\n        defined.push(identifier)\n      }\n\n      // Any whitespace after the marker is eaten, forming indented code\n      // is not possible.\n      // No space is also fine, just like a block quote marker.\n      return factorySpace(\n        effects,\n        whitespaceAfter,\n        'gfmFootnoteDefinitionWhitespace'\n      )\n    }\n    return nok(code)\n  }\n\n  /**\n   * After definition prefix.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function whitespaceAfter(code) {\n    // `markdown-rs` has a wrapping token for the prefix that is closed here.\n    return ok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  /// Start of footnote definition continuation.\n  ///\n  /// ```markdown\n  ///   | [^a]: b\n  /// > |     c\n  ///     ^\n  /// ```\n  //\n  // Either a blank line, which is okay, or an indented thing.\n  return effects.check(blankLine, ok, effects.attempt(indent, ok, nok))\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit('gfmFootnoteDefinition')\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction syntax_tokenizeIndent(effects, ok, nok) {\n  const self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'gfmFootnoteDefinitionIndent',\n    4 + 1\n  )\n\n  /**\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1]\n    return tail &&\n      tail[1].type === 'gfmFootnoteDefinitionIndent' &&\n      tail[2].sliceSerialize(tail[1], true).length === 4\n      ? ok(code)\n      : nok(code)\n  }\n}\n\n;// ./node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js\n/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [singleTilde=true]\n *   Whether to support strikethrough with a single tilde (default: `true`).\n *\n *   Single tildes work on github.com, but are technically prohibited by the\n *   GFM spec.\n */\n\n\n\n\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n *   Configuration.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions`, to\n *   enable GFM strikethrough syntax.\n */\nfunction gfmStrikethrough(options) {\n  const options_ = options || {}\n  let single = options_.singleTilde\n  const tokenizer = {\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  }\n  if (single === null || single === undefined) {\n    single = true\n  }\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  }\n\n  /**\n   * Take events and resolve strikethrough.\n   *\n   * @type {Resolver}\n   */\n  function resolveAllStrikethrough(events, context) {\n    let index = -1\n\n    // Walk through all events.\n    while (++index < events.length) {\n      // Find a token that can close.\n      if (\n        events[index][0] === 'enter' &&\n        events[index][1].type === 'strikethroughSequenceTemporary' &&\n        events[index][1]._close\n      ) {\n        let open = index\n\n        // Now walk back to find an opener.\n        while (open--) {\n          // Find a token that can open the closer.\n          if (\n            events[open][0] === 'exit' &&\n            events[open][1].type === 'strikethroughSequenceTemporary' &&\n            events[open][1]._open &&\n            // If the sizes are the same:\n            events[index][1].end.offset - events[index][1].start.offset ===\n              events[open][1].end.offset - events[open][1].start.offset\n          ) {\n            events[index][1].type = 'strikethroughSequence'\n            events[open][1].type = 'strikethroughSequence'\n\n            /** @type {Token} */\n            const strikethrough = {\n              type: 'strikethrough',\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            }\n\n            /** @type {Token} */\n            const text = {\n              type: 'strikethroughText',\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            }\n\n            // Opening.\n            /** @type {Array<Event>} */\n            const nextEvents = [\n              ['enter', strikethrough, context],\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context],\n              ['enter', text, context]\n            ]\n            const insideSpan = context.parser.constructs.insideSpan.null\n            if (insideSpan) {\n              // Between.\n              splice(\n                nextEvents,\n                nextEvents.length,\n                0,\n                resolveAll(insideSpan, events.slice(open + 1, index), context)\n              )\n            }\n\n            // Closing.\n            splice(nextEvents, nextEvents.length, 0, [\n              ['exit', text, context],\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context],\n              ['exit', strikethrough, context]\n            ])\n            splice(events, open - 1, index - open + 3, nextEvents)\n            index = open + nextEvents.length - 2\n            break\n          }\n        }\n      }\n    }\n    index = -1\n    while (++index < events.length) {\n      if (events[index][1].type === 'strikethroughSequenceTemporary') {\n        events[index][1].type = 'data'\n      }\n    }\n    return events\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous = this.previous\n    const events = this.events\n    let size = 0\n    return start\n\n    /** @type {State} */\n    function start(code) {\n      if (\n        previous === 126 &&\n        events[events.length - 1][1].type !== 'characterEscape'\n      ) {\n        return nok(code)\n      }\n      effects.enter('strikethroughSequenceTemporary')\n      return more(code)\n    }\n\n    /** @type {State} */\n    function more(code) {\n      const before = classifyCharacter(previous)\n      if (code === 126) {\n        // If this is the third marker, exit.\n        if (size > 1) return nok(code)\n        effects.consume(code)\n        size++\n        return more\n      }\n      if (size < 2 && !single) return nok(code)\n      const token = effects.exit('strikethroughSequenceTemporary')\n      const after = classifyCharacter(code)\n      token._open = !after || (after === 2 && Boolean(before))\n      token._close = !before || (before === 2 && Boolean(after))\n      return ok(code)\n    }\n  }\n}\n\n;// ./node_modules/micromark-extension-gfm-table/lib/edit-map.js\n/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it’s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it’s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nclass EditMap {\n  /**\n   * Create a new edit map.\n   */\n  constructor() {\n    /**\n     * Record of changes.\n     *\n     * @type {Array<Change>}\n     */\n    this.map = []\n  }\n\n  /**\n   * Create an edit: a remove and/or add at a certain place.\n   *\n   * @param {number} index\n   * @param {number} remove\n   * @param {Array<Event>} add\n   * @returns {undefined}\n   */\n  add(index, remove, add) {\n    addImpl(this, index, remove, add)\n  }\n\n  // To do: add this when moving to `micromark`.\n  // /**\n  //  * Create an edit: but insert `add` before existing additions.\n  //  *\n  //  * @param {number} index\n  //  * @param {number} remove\n  //  * @param {Array<Event>} add\n  //  * @returns {undefined}\n  //  */\n  // addBefore(index, remove, add) {\n  //   addImpl(this, index, remove, add, true)\n  // }\n\n  /**\n   * Done, change the events.\n   *\n   * @param {Array<Event>} events\n   * @returns {undefined}\n   */\n  consume(events) {\n    this.map.sort(function (a, b) {\n      return a[0] - b[0]\n    })\n\n    /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n    if (this.map.length === 0) {\n      return\n    }\n\n    // To do: if links are added in events, like they are in `markdown-rs`,\n    // this is needed.\n    // // Calculate jumps: where items in the current list move to.\n    // /** @type {Array<Jump>} */\n    // const jumps = []\n    // let index = 0\n    // let addAcc = 0\n    // let removeAcc = 0\n    // while (index < this.map.length) {\n    //   const [at, remove, add] = this.map[index]\n    //   removeAcc += remove\n    //   addAcc += add.length\n    //   jumps.push([at, removeAcc, addAcc])\n    //   index += 1\n    // }\n    //\n    // . shiftLinks(events, jumps)\n\n    let index = this.map.length\n    /** @type {Array<Array<Event>>} */\n    const vecs = []\n    while (index > 0) {\n      index -= 1\n      vecs.push(\n        events.slice(this.map[index][0] + this.map[index][1]),\n        this.map[index][2]\n      )\n\n      // Truncate rest.\n      events.length = this.map[index][0]\n    }\n    vecs.push([...events])\n    events.length = 0\n    let slice = vecs.pop()\n    while (slice) {\n      events.push(...slice)\n      slice = vecs.pop()\n    }\n\n    // Truncate everything.\n    this.map.length = 0\n  }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\nfunction addImpl(editMap, at, remove, add) {\n  let index = 0\n\n  /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n  if (remove === 0 && add.length === 0) {\n    return\n  }\n  while (index < editMap.map.length) {\n    if (editMap.map[index][0] === at) {\n      editMap.map[index][1] += remove\n\n      // To do: before not used by tables, use when moving to micromark.\n      // if (before) {\n      //   add.push(...editMap.map[index][2])\n      //   editMap.map[index][2] = add\n      // } else {\n      editMap.map[index][2].push(...add)\n      // }\n\n      return\n    }\n    index += 1\n  }\n  editMap.map.push([at, remove, add])\n}\n\n// /**\n//  * Shift `previous` and `next` links according to `jumps`.\n//  *\n//  * This fixes links in case there are events removed or added between them.\n//  *\n//  * @param {Array<Event>} events\n//  * @param {Array<Jump>} jumps\n//  */\n// function shiftLinks(events, jumps) {\n//   let jumpIndex = 0\n//   let index = 0\n//   let add = 0\n//   let rm = 0\n\n//   while (index < events.length) {\n//     const rmCurr = rm\n\n//     while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n//       add = jumps[jumpIndex][2]\n//       rm = jumps[jumpIndex][1]\n//       jumpIndex += 1\n//     }\n\n//     // Ignore items that will be removed.\n//     if (rm > rmCurr) {\n//       index += rm - rmCurr\n//     } else {\n//       // ?\n//       // if let Some(link) = &events[index].link {\n//       //     if let Some(next) = link.next {\n//       //         events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n//       //         while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n//       //             add = jumps[jumpIndex].2;\n//       //             rm = jumps[jumpIndex].1;\n//       //             jumpIndex += 1;\n//       //         }\n//       //         events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n//       //         index = next;\n//       //         continue;\n//       //     }\n//       // }\n//       index += 1\n//     }\n//   }\n// }\n\n;// ./node_modules/micromark-extension-gfm-table/lib/infer.js\n/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly<Array<Event>>} events\n *   List of events.\n * @param {number} index\n *   Table enter event.\n * @returns {Array<Align>}\n *   List of aligns.\n */\nfunction gfmTableAlign(events, index) {\n  let inDelimiterRow = false\n  /** @type {Array<Align>} */\n  const align = []\n  while (index < events.length) {\n    const event = events[index]\n    if (inDelimiterRow) {\n      if (event[0] === 'enter') {\n        // Start of alignment value: set a new column.\n        // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n        if (event[1].type === 'tableContent') {\n          align.push(\n            events[index + 1][1].type === 'tableDelimiterMarker'\n              ? 'left'\n              : 'none'\n          )\n        }\n      }\n      // Exits:\n      // End of alignment value: change the column.\n      // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n      else if (event[1].type === 'tableContent') {\n        if (events[index - 1][1].type === 'tableDelimiterMarker') {\n          const alignIndex = align.length - 1\n          align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right'\n        }\n      }\n      // Done!\n      else if (event[1].type === 'tableDelimiterRow') {\n        break\n      }\n    } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n      inDelimiterRow = true\n    }\n    index += 1\n  }\n  return align\n}\n\n;// ./node_modules/micromark-extension-gfm-table/lib/syntax.js\n/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n *   Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n *   Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\n\n\n\n\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   table syntax.\n */\nfunction gfmTable() {\n  return {\n    flow: {\n      null: {\n        tokenize: tokenizeTable,\n        resolveAll: resolveTable\n      }\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n  const self = this\n  let size = 0\n  let sizeB = 0\n  /** @type {boolean | undefined} */\n  let seen\n  return start\n\n  /**\n   * Start of a GFM table.\n   *\n   * If there is a valid table row or table head before, then we try to parse\n   * another row.\n   * Otherwise, we try to parse a head.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length - 1\n    while (index > -1) {\n      const type = self.events[index][1].type\n      if (\n        type === 'lineEnding' ||\n        // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n        type === 'linePrefix'\n      )\n        index--\n      else break\n    }\n    const tail = index > -1 ? self.events[index][1].type : null\n    const next =\n      tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore\n\n    // Don’t allow lazy body rows.\n    if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n      return nok(code)\n    }\n    return next(code)\n  }\n\n  /**\n   * Before table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBefore(code) {\n    effects.enter('tableHead')\n    effects.enter('tableRow')\n    return headRowStart(code)\n  }\n\n  /**\n   * Before table head row, after whitespace.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowStart(code) {\n    if (code === 124) {\n      return headRowBreak(code)\n    }\n\n    // To do: micromark-js should let us parse our own whitespace in extensions,\n    // like `markdown-rs`:\n    //\n    // ```js\n    // // 4+ spaces.\n    // if (markdownSpace(code)) {\n    //   return nok(code)\n    // }\n    // ```\n\n    seen = true\n    // Count the first character, that isn’t a pipe, double.\n    sizeB += 1\n    return headRowBreak(code)\n  }\n\n  /**\n   * At break in table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *       ^\n   *         ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBreak(code) {\n    if (code === null) {\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n      return nok(code)\n    }\n    if (markdownLineEnding(code)) {\n      // If anything other than one pipe (ignoring whitespace) was used, it’s fine.\n      if (sizeB > 1) {\n        sizeB = 0\n        // To do: check if this works.\n        // Feel free to interrupt:\n        self.interrupt = true\n        effects.exit('tableRow')\n        effects.enter('lineEnding')\n        effects.consume(code)\n        effects.exit('lineEnding')\n        return headDelimiterStart\n      }\n\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n      return nok(code)\n    }\n    if (markdownSpace(code)) {\n      // To do: check if this is fine.\n      // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n      // State::Retry(space_or_tab(tokenizer))\n      return factorySpace(effects, headRowBreak, 'whitespace')(code)\n    }\n    sizeB += 1\n    if (seen) {\n      seen = false\n      // Header cell count.\n      size += 1\n    }\n    if (code === 124) {\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      // Whether a delimiter was seen.\n      seen = true\n      return headRowBreak\n    }\n\n    // Anything else is cell data.\n    effects.enter('data')\n    return headRowData(code)\n  }\n\n  /**\n   * In table head row data.\n   *\n   * ```markdown\n   * > | | a |\n   *       ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit('data')\n      return headRowBreak(code)\n    }\n    effects.consume(code)\n    return code === 92 ? headRowEscape : headRowData\n  }\n\n  /**\n   * In table head row escape.\n   *\n   * ```markdown\n   * > | | a\\-b |\n   *         ^\n   *   | | ---- |\n   *   | | c    |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code)\n      return headRowData\n    }\n    return headRowData(code)\n  }\n\n  /**\n   * Before delimiter row.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterStart(code) {\n    // Reset `interrupt`.\n    self.interrupt = false\n\n    // Note: in `markdown-rs`, we need to handle piercing here too.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code)\n    }\n    effects.enter('tableDelimiterRow')\n    // Track if we’ve seen a `:` or `|`.\n    seen = false\n    if (markdownSpace(code)) {\n      return factorySpace(\n        effects,\n        headDelimiterBefore,\n        'linePrefix',\n        self.parser.constructs.disable.null.includes('codeIndented')\n          ? undefined\n          : 4\n      )(code)\n    }\n    return headDelimiterBefore(code)\n  }\n\n  /**\n   * Before delimiter row, after optional whitespace.\n   *\n   * Reused when a `|` is found later, to parse another cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterBefore(code) {\n    if (code === 45 || code === 58) {\n      return headDelimiterValueBefore(code)\n    }\n    if (code === 124) {\n      seen = true\n      // If we start with a pipe, we open a cell marker.\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      return headDelimiterCellBefore\n    }\n\n    // More whitespace / empty row not allowed at start.\n    return headDelimiterNok(code)\n  }\n\n  /**\n   * After `|`, before delimiter cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellBefore(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterValueBefore, 'whitespace')(code)\n    }\n    return headDelimiterValueBefore(code)\n  }\n\n  /**\n   * Before delimiter cell value.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterValueBefore(code) {\n    // Align: left.\n    if (code === 58) {\n      sizeB += 1\n      seen = true\n      effects.enter('tableDelimiterMarker')\n      effects.consume(code)\n      effects.exit('tableDelimiterMarker')\n      return headDelimiterLeftAlignmentAfter\n    }\n\n    // Align: none.\n    if (code === 45) {\n      sizeB += 1\n      // To do: seems weird that this *isn’t* left aligned, but that state is used?\n      return headDelimiterLeftAlignmentAfter(code)\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return headDelimiterCellAfter(code)\n    }\n    return headDelimiterNok(code)\n  }\n\n  /**\n   * After delimiter cell left alignment marker.\n   *\n   * ```markdown\n   *   | | a  |\n   * > | | :- |\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterLeftAlignmentAfter(code) {\n    if (code === 45) {\n      effects.enter('tableDelimiterFiller')\n      return headDelimiterFiller(code)\n    }\n\n    // Anything else is not ok after the left-align colon.\n    return headDelimiterNok(code)\n  }\n\n  /**\n   * In delimiter cell filler.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterFiller(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return headDelimiterFiller\n    }\n\n    // Align is `center` if it was `left`, `right` otherwise.\n    if (code === 58) {\n      seen = true\n      effects.exit('tableDelimiterFiller')\n      effects.enter('tableDelimiterMarker')\n      effects.consume(code)\n      effects.exit('tableDelimiterMarker')\n      return headDelimiterRightAlignmentAfter\n    }\n    effects.exit('tableDelimiterFiller')\n    return headDelimiterRightAlignmentAfter(code)\n  }\n\n  /**\n   * After delimiter cell right alignment marker.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterRightAlignmentAfter(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterCellAfter, 'whitespace')(code)\n    }\n    return headDelimiterCellAfter(code)\n  }\n\n  /**\n   * After delimiter cell.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellAfter(code) {\n    if (code === 124) {\n      return headDelimiterBefore(code)\n    }\n    if (code === null || markdownLineEnding(code)) {\n      // Exit when:\n      // * there was no `:` or `|` at all (it’s a thematic break or setext\n      //   underline instead)\n      // * the header cell count is not the delimiter cell count\n      if (!seen || size !== sizeB) {\n        return headDelimiterNok(code)\n      }\n\n      // Note: in markdown-rs`, a reset is needed here.\n      effects.exit('tableDelimiterRow')\n      effects.exit('tableHead')\n      // To do: in `markdown-rs`, resolvers need to be registered manually.\n      // effects.register_resolver(ResolveName::GfmTable)\n      return ok(code)\n    }\n    return headDelimiterNok(code)\n  }\n\n  /**\n   * In delimiter row, at a disallowed byte.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | x |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterNok(code) {\n    // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don‘t.\n    return nok(code)\n  }\n\n  /**\n   * Before table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowStart(code) {\n    // Note: in `markdown-rs` we need to manually take care of a prefix,\n    // but in `micromark-js` that is done for us, so if we’re here, we’re\n    // never at whitespace.\n    effects.enter('tableRow')\n    return bodyRowBreak(code)\n  }\n\n  /**\n   * At break in table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   *       ^\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowBreak(code) {\n    if (code === 124) {\n      effects.enter('tableCellDivider')\n      effects.consume(code)\n      effects.exit('tableCellDivider')\n      return bodyRowBreak\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('tableRow')\n      return ok(code)\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, bodyRowBreak, 'whitespace')(code)\n    }\n\n    // Anything else is cell content.\n    effects.enter('data')\n    return bodyRowData(code)\n  }\n\n  /**\n   * In table body row data.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit('data')\n      return bodyRowBreak(code)\n    }\n    effects.consume(code)\n    return code === 92 ? bodyRowEscape : bodyRowData\n  }\n\n  /**\n   * In table body row escape.\n   *\n   * ```markdown\n   *   | | a    |\n   *   | | ---- |\n   * > | | b\\-c |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code)\n      return bodyRowData\n    }\n    return bodyRowData(code)\n  }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n  let index = -1\n  let inFirstCellAwaitingPipe = true\n  /** @type {RowKind} */\n  let rowKind = 0\n  /** @type {Range} */\n  let lastCell = [0, 0, 0, 0]\n  /** @type {Range} */\n  let cell = [0, 0, 0, 0]\n  let afterHeadAwaitingFirstBodyRow = false\n  let lastTableEnd = 0\n  /** @type {Token | undefined} */\n  let currentTable\n  /** @type {Token | undefined} */\n  let currentBody\n  /** @type {Token | undefined} */\n  let currentCell\n  const map = new EditMap()\n  while (++index < events.length) {\n    const event = events[index]\n    const token = event[1]\n    if (event[0] === 'enter') {\n      // Start of head.\n      if (token.type === 'tableHead') {\n        afterHeadAwaitingFirstBodyRow = false\n\n        // Inject previous (body end and) table end.\n        if (lastTableEnd !== 0) {\n          flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n          currentBody = undefined\n          lastTableEnd = 0\n        }\n\n        // Inject table start.\n        currentTable = {\n          type: 'table',\n          start: Object.assign({}, token.start),\n          // Note: correct end is set later.\n          end: Object.assign({}, token.end)\n        }\n        map.add(index, 0, [['enter', currentTable, context]])\n      } else if (\n        token.type === 'tableRow' ||\n        token.type === 'tableDelimiterRow'\n      ) {\n        inFirstCellAwaitingPipe = true\n        currentCell = undefined\n        lastCell = [0, 0, 0, 0]\n        cell = [0, index + 1, 0, 0]\n\n        // Inject table body start.\n        if (afterHeadAwaitingFirstBodyRow) {\n          afterHeadAwaitingFirstBodyRow = false\n          currentBody = {\n            type: 'tableBody',\n            start: Object.assign({}, token.start),\n            // Note: correct end is set later.\n            end: Object.assign({}, token.end)\n          }\n          map.add(index, 0, [['enter', currentBody, context]])\n        }\n        rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1\n      }\n      // Cell data.\n      else if (\n        rowKind &&\n        (token.type === 'data' ||\n          token.type === 'tableDelimiterMarker' ||\n          token.type === 'tableDelimiterFiller')\n      ) {\n        inFirstCellAwaitingPipe = false\n\n        // First value in cell.\n        if (cell[2] === 0) {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1]\n            currentCell = flushCell(\n              map,\n              context,\n              lastCell,\n              rowKind,\n              undefined,\n              currentCell\n            )\n            lastCell = [0, 0, 0, 0]\n          }\n          cell[2] = index\n        }\n      } else if (token.type === 'tableCellDivider') {\n        if (inFirstCellAwaitingPipe) {\n          inFirstCellAwaitingPipe = false\n        } else {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1]\n            currentCell = flushCell(\n              map,\n              context,\n              lastCell,\n              rowKind,\n              undefined,\n              currentCell\n            )\n          }\n          lastCell = cell\n          cell = [lastCell[1], index, 0, 0]\n        }\n      }\n    }\n    // Exit events.\n    else if (token.type === 'tableHead') {\n      afterHeadAwaitingFirstBodyRow = true\n      lastTableEnd = index\n    } else if (\n      token.type === 'tableRow' ||\n      token.type === 'tableDelimiterRow'\n    ) {\n      lastTableEnd = index\n      if (lastCell[1] !== 0) {\n        cell[0] = cell[1]\n        currentCell = flushCell(\n          map,\n          context,\n          lastCell,\n          rowKind,\n          index,\n          currentCell\n        )\n      } else if (cell[1] !== 0) {\n        currentCell = flushCell(map, context, cell, rowKind, index, currentCell)\n      }\n      rowKind = 0\n    } else if (\n      rowKind &&\n      (token.type === 'data' ||\n        token.type === 'tableDelimiterMarker' ||\n        token.type === 'tableDelimiterFiller')\n    ) {\n      cell[3] = index\n    }\n  }\n  if (lastTableEnd !== 0) {\n    flushTableEnd(map, context, lastTableEnd, currentTable, currentBody)\n  }\n  map.consume(context.events)\n\n  // To do: move this into `html`, when events are exposed there.\n  // That’s what `markdown-rs` does.\n  // That needs updates to `mdast-util-gfm-table`.\n  index = -1\n  while (++index < context.events.length) {\n    const event = context.events[index]\n    if (event[0] === 'enter' && event[1].type === 'table') {\n      event[1]._align = gfmTableAlign(context.events, index)\n    }\n  }\n  return events\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly<TokenizeContext>} context\n * @param {Readonly<Range>} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n  const groupName =\n    rowKind === 1\n      ? 'tableHeader'\n      : rowKind === 2\n      ? 'tableDelimiter'\n      : 'tableData'\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n  const valueName = 'tableContent'\n\n  // Insert an exit for the previous cell, if there is one.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //          ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[0] !== 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, range[0]))\n    map.add(range[0], 0, [['exit', previousCell, context]])\n  }\n\n  // Insert enter of this cell.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //           ^-- enter\n  //           ^^^^-- this cell\n  // ```\n  const now = getPoint(context.events, range[1])\n  previousCell = {\n    type: groupName,\n    start: Object.assign({}, now),\n    // Note: correct end is set later.\n    end: Object.assign({}, now)\n  }\n  map.add(range[1], 0, [['enter', previousCell, context]])\n\n  // Insert text start at first data start and end at last data end, and\n  // remove events between.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //            ^-- enter\n  //             ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[2] !== 0) {\n    const relatedStart = getPoint(context.events, range[2])\n    const relatedEnd = getPoint(context.events, range[3])\n    /** @type {Token} */\n    const valueToken = {\n      type: valueName,\n      start: Object.assign({}, relatedStart),\n      end: Object.assign({}, relatedEnd)\n    }\n    map.add(range[2], 0, [['enter', valueToken, context]])\n    if (rowKind !== 2) {\n      // Fix positional info on remaining events\n      const start = context.events[range[2]]\n      const end = context.events[range[3]]\n      start[1].end = Object.assign({}, end[1].end)\n      start[1].type = 'chunkText'\n      start[1].contentType = 'text'\n\n      // Remove if needed.\n      if (range[3] > range[2] + 1) {\n        const a = range[2] + 1\n        const b = range[3] - range[2] - 1\n        map.add(a, b, [])\n      }\n    }\n    map.add(range[3] + 1, 0, [['exit', valueToken, context]])\n  }\n\n  // Insert an exit for the last cell, if at the row end.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //                    ^-- exit\n  //               ^^^^^^-- this cell (the last one contains two “between” parts)\n  // ```\n  if (rowEnd !== undefined) {\n    previousCell.end = Object.assign({}, getPoint(context.events, rowEnd))\n    map.add(rowEnd, 0, [['exit', previousCell, context]])\n    previousCell = undefined\n  }\n  return previousCell\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly<EditMap>} map\n * @param {Readonly<TokenizeContext>} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n  /** @type {Array<Event>} */\n  const exits = []\n  const related = getPoint(context.events, index)\n  if (tableBody) {\n    tableBody.end = Object.assign({}, related)\n    exits.push(['exit', tableBody, context])\n  }\n  table.end = Object.assign({}, related)\n  exits.push(['exit', table, context])\n  map.add(index + 1, 0, exits)\n}\n\n/**\n * @param {Readonly<Array<Event>>} events\n * @param {number} index\n * @returns {Readonly<Point>}\n */\nfunction getPoint(events, index) {\n  const event = events[index]\n  const side = event[0] === 'enter' ? 'start' : 'end'\n  return event[1][side]\n}\n\n;// ./node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n\n\nconst tasklistCheck = {\n  tokenize: tokenizeTasklistCheck\n}\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM task list items when serializing to HTML.\n */\nfunction gfmTaskListItem() {\n  return {\n    text: {\n      [91]: tasklistCheck\n    }\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self = this\n  return open\n\n  /**\n   * At start of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (\n      // Exit if there’s stuff before.\n      self.previous !== null ||\n      // Exit if not in the first content that is the first child of a list\n      // item.\n      !self._gfmTasklistFirstContentOfListItem\n    ) {\n      return nok(code)\n    }\n    effects.enter('taskListCheck')\n    effects.enter('taskListCheckMarker')\n    effects.consume(code)\n    effects.exit('taskListCheckMarker')\n    return inside\n  }\n\n  /**\n   * In task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // Currently we match how GH works in files.\n    // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n    // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n    if (markdownLineEndingOrSpace(code)) {\n      effects.enter('taskListCheckValueUnchecked')\n      effects.consume(code)\n      effects.exit('taskListCheckValueUnchecked')\n      return close\n    }\n    if (code === 88 || code === 120) {\n      effects.enter('taskListCheckValueChecked')\n      effects.consume(code)\n      effects.exit('taskListCheckValueChecked')\n      return close\n    }\n    return nok(code)\n  }\n\n  /**\n   * At close of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function close(code) {\n    if (code === 93) {\n      effects.enter('taskListCheckMarker')\n      effects.consume(code)\n      effects.exit('taskListCheckMarker')\n      effects.exit('taskListCheck')\n      return after\n    }\n    return nok(code)\n  }\n\n  /**\n   * @type {State}\n   */\n  function after(code) {\n    // EOL in paragraph means there must be something else after it.\n    if (markdownLineEnding(code)) {\n      return ok(code)\n    }\n\n    // Space or tab?\n    // Check what comes after.\n    if (markdownSpace(code)) {\n      return effects.check(\n        {\n          tokenize: spaceThenNonSpace\n        },\n        ok,\n        nok\n      )(code)\n    }\n\n    // EOF, or non-whitespace, both wrong.\n    return nok(code)\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n  return factorySpace(effects, after, 'whitespace')\n\n  /**\n   * After whitespace, after task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // EOF means there was nothing, so bad.\n    // EOL means there’s content after it, so good.\n    // Impossible to have more spaces.\n    // Anything else is good.\n    return code === null ? nok(code) : ok(code)\n  }\n}\n\n;// ./node_modules/micromark-extension-gfm/index.js\n/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\n\n\n\n\n\n\n\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   syntax.\n */\nfunction gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral(),\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable(),\n    gfmTaskListItem()\n  ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM when serializing to HTML.\n */\nfunction gfmHtml(options) {\n  return combineHtmlExtensions([\n    gfmAutolinkLiteralHtml(),\n    gfmFootnoteHtml(options),\n    gfmStrikethroughHtml(),\n    gfmTableHtml(),\n    gfmTagfilterHtml(),\n    gfmTaskListItemHtml()\n  ])\n}\n\n;// ./node_modules/remark-gfm/lib/index.js\n/**\n * @import {Root} from 'mdast'\n * @import {Options} from 'remark-gfm'\n * @import {} from 'remark-parse'\n * @import {} from 'remark-stringify'\n * @import {Processor} from 'unified'\n */\n\n\n\n\n/** @type {Options} */\nconst remark_gfm_lib_emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction remarkGfm(options) {\n  // @ts-expect-error: TS is wrong about `this`.\n  // eslint-disable-next-line unicorn/no-this-assignment\n  const self = /** @type {Processor<Root>} */ (this)\n  const settings = options || remark_gfm_lib_emptyOptions\n  const data = self.data()\n\n  const micromarkExtensions =\n    data.micromarkExtensions || (data.micromarkExtensions = [])\n  const fromMarkdownExtensions =\n    data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n  const toMarkdownExtensions =\n    data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n  micromarkExtensions.push(gfm(settings))\n  fromMarkdownExtensions.push(gfmFromMarkdown())\n  toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n\n;// ./node_modules/mdast-util-mdx-expression/lib/index.js\n/**\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('../index.js').MdxFlowExpression} MdxFlowExpression\n * @typedef {import('../index.js').MdxTextExpression} MdxTextExpression\n */\n\n\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable MDX expressions\n * in markdown.\n *\n * When using the micromark syntax extension with `addResult`, nodes will have\n * a `data.estree` field set to an ESTree `Program` node.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable MDX expressions.\n */\nfunction mdxExpressionFromMarkdown() {\n  return {\n    enter: {\n      mdxFlowExpression: enterMdxFlowExpression,\n      mdxTextExpression: enterMdxTextExpression\n    },\n    exit: {\n      mdxFlowExpression: exitMdxExpression,\n      mdxFlowExpressionChunk: exitMdxExpressionData,\n      mdxTextExpression: exitMdxExpression,\n      mdxTextExpressionChunk: exitMdxExpressionData\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable MDX expressions\n * in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable MDX expressions.\n */\nfunction mdxExpressionToMarkdown() {\n  return {\n    handlers: {\n      mdxFlowExpression: handleMdxExpression,\n      mdxTextExpression: handleMdxExpression\n    },\n    unsafe: [\n      {character: '{', inConstruct: ['phrasing']},\n      {atBreak: true, character: '{'}\n    ]\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterMdxFlowExpression(token) {\n  this.enter({type: 'mdxFlowExpression', value: ''}, token)\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterMdxTextExpression(token) {\n  this.enter({type: 'mdxTextExpression', value: ''}, token)\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitMdxExpression(token) {\n  const value = this.resume()\n  const estree = token.estree\n  const node = this.stack[this.stack.length - 1]\n  default_ok(node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression')\n  this.exit(token)\n  node.value = value\n\n  if (estree) {\n    node.data = {estree}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitMdxExpressionData(token) {\n  this.config.enter.data.call(this, token)\n  this.config.exit.data.call(this, token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {MdxFlowExpression | MdxTextExpression} node\n */\nfunction handleMdxExpression(node) {\n  const value = node.value || ''\n  return '{' + value + '}'\n}\n\n;// ./node_modules/character-entities-legacy/index.js\n/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nconst characterEntitiesLegacy = [\n  'AElig',\n  'AMP',\n  'Aacute',\n  'Acirc',\n  'Agrave',\n  'Aring',\n  'Atilde',\n  'Auml',\n  'COPY',\n  'Ccedil',\n  'ETH',\n  'Eacute',\n  'Ecirc',\n  'Egrave',\n  'Euml',\n  'GT',\n  'Iacute',\n  'Icirc',\n  'Igrave',\n  'Iuml',\n  'LT',\n  'Ntilde',\n  'Oacute',\n  'Ocirc',\n  'Ograve',\n  'Oslash',\n  'Otilde',\n  'Ouml',\n  'QUOT',\n  'REG',\n  'THORN',\n  'Uacute',\n  'Ucirc',\n  'Ugrave',\n  'Uuml',\n  'Yacute',\n  'aacute',\n  'acirc',\n  'acute',\n  'aelig',\n  'agrave',\n  'amp',\n  'aring',\n  'atilde',\n  'auml',\n  'brvbar',\n  'ccedil',\n  'cedil',\n  'cent',\n  'copy',\n  'curren',\n  'deg',\n  'divide',\n  'eacute',\n  'ecirc',\n  'egrave',\n  'eth',\n  'euml',\n  'frac12',\n  'frac14',\n  'frac34',\n  'gt',\n  'iacute',\n  'icirc',\n  'iexcl',\n  'igrave',\n  'iquest',\n  'iuml',\n  'laquo',\n  'lt',\n  'macr',\n  'micro',\n  'middot',\n  'nbsp',\n  'not',\n  'ntilde',\n  'oacute',\n  'ocirc',\n  'ograve',\n  'ordf',\n  'ordm',\n  'oslash',\n  'otilde',\n  'ouml',\n  'para',\n  'plusmn',\n  'pound',\n  'quot',\n  'raquo',\n  'reg',\n  'sect',\n  'shy',\n  'sup1',\n  'sup2',\n  'sup3',\n  'szlig',\n  'thorn',\n  'times',\n  'uacute',\n  'ucirc',\n  'ugrave',\n  'uml',\n  'uuml',\n  'yacute',\n  'yen',\n  'yuml'\n]\n\n;// ./node_modules/character-reference-invalid/index.js\n/**\n * Map of invalid numeric character references to their replacements, according to HTML.\n *\n * @type {Record<number, string>}\n */\nconst characterReferenceInvalid = {\n  0: '�',\n  128: '€',\n  130: '‚',\n  131: 'ƒ',\n  132: '„',\n  133: '…',\n  134: '†',\n  135: '‡',\n  136: 'ˆ',\n  137: '‰',\n  138: 'Š',\n  139: '‹',\n  140: 'Œ',\n  142: 'Ž',\n  145: '‘',\n  146: '’',\n  147: '“',\n  148: '”',\n  149: '•',\n  150: '–',\n  151: '—',\n  152: '˜',\n  153: '™',\n  154: 'š',\n  155: '›',\n  156: 'œ',\n  158: 'ž',\n  159: 'Ÿ'\n}\n\n;// ./node_modules/is-decimal/index.js\n/**\n * Check if the given character code, or the character code at the first\n * character, is decimal.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is a decimal\n */\nfunction isDecimal(character) {\n  const code =\n    typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return code >= 48 && code <= 57 /* 0-9 */\n}\n\n;// ./node_modules/is-hexadecimal/index.js\n/**\n * Check if the given character code, or the character code at the first\n * character, is hexadecimal.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is hexadecimal\n */\nfunction isHexadecimal(character) {\n  const code =\n    typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 /* a */ && code <= 102) /* z */ ||\n    (code >= 65 /* A */ && code <= 70) /* Z */ ||\n    (code >= 48 /* A */ && code <= 57) /* Z */\n  )\n}\n\n;// ./node_modules/is-alphabetical/index.js\n/**\n * Check if the given character code, or the character code at the first\n * character, is alphabetical.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is alphabetical.\n */\nfunction isAlphabetical(character) {\n  const code =\n    typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 && code <= 122) /* a-z */ ||\n    (code >= 65 && code <= 90) /* A-Z */\n  )\n}\n\n;// ./node_modules/is-alphanumerical/index.js\n\n\n\n/**\n * Check if the given character code, or the character code at the first\n * character, is alphanumerical.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is alphanumerical.\n */\nfunction isAlphanumerical(character) {\n  return isAlphabetical(character) || isDecimal(character)\n}\n\n;// ./node_modules/parse-entities/lib/index.js\n/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n\n\n\n\n\n\n\nconst fromCharCode = String.fromCharCode\n\n// Warning messages.\nconst messages = [\n  '',\n  /* 1: Non terminated (named) */\n  'Named character references must be terminated by a semicolon',\n  /* 2: Non terminated (numeric) */\n  'Numeric character references must be terminated by a semicolon',\n  /* 3: Empty (named) */\n  'Named character references cannot be empty',\n  /* 4: Empty (numeric) */\n  'Numeric character references cannot be empty',\n  /* 5: Unknown (named) */\n  'Named character references must be known',\n  /* 6: Disallowed (numeric) */\n  'Numeric character references cannot be disallowed',\n  /* 7: Prohibited (numeric) */\n  'Numeric character references cannot be outside the permissible Unicode range'\n]\n\n/**\n * Parse HTML character references.\n *\n * @param {string} value\n * @param {import('../index.js').Options} [options={}]\n */\nfunction parseEntities(value, options = {}) {\n  const additional =\n    typeof options.additional === 'string'\n      ? options.additional.charCodeAt(0)\n      : options.additional\n  /** @type {Array<string>} */\n  const result = []\n  let index = 0\n  let lines = -1\n  let queue = ''\n  /** @type {Point|undefined} */\n  let point\n  /** @type {Array<number>|undefined} */\n  let indent\n\n  if (options.position) {\n    if ('start' in options.position || 'indent' in options.position) {\n      // @ts-expect-error: points don’t have indent.\n      indent = options.position.indent\n      // @ts-expect-error: points don’t have indent.\n      point = options.position.start\n    } else {\n      point = options.position\n    }\n  }\n\n  let line = (point ? point.line : 0) || 1\n  let column = (point ? point.column : 0) || 1\n\n  // Cache the current point.\n  let previous = now()\n  /** @type {number|undefined} */\n  let character\n\n  // Ensure the algorithm walks over the first character (inclusive).\n  index--\n\n  while (++index <= value.length) {\n    // If the previous character was a newline.\n    if (character === 10 /* `\\n` */) {\n      column = (indent ? indent[lines] : 0) || 1\n    }\n\n    character = value.charCodeAt(index)\n\n    if (character === 38 /* `&` */) {\n      const following = value.charCodeAt(index + 1)\n\n      // The behavior depends on the identity of the next character.\n      if (\n        following === 9 /* `\\t` */ ||\n        following === 10 /* `\\n` */ ||\n        following === 12 /* `\\f` */ ||\n        following === 32 /* ` ` */ ||\n        following === 38 /* `&` */ ||\n        following === 60 /* `<` */ ||\n        Number.isNaN(following) ||\n        (additional && following === additional)\n      ) {\n        // Not a character reference.\n        // No characters are consumed, and nothing is returned.\n        // This is not an error, either.\n        queue += fromCharCode(character)\n        column++\n        continue\n      }\n\n      const start = index + 1\n      let begin = start\n      let end = start\n      /** @type {string} */\n      let type\n\n      if (following === 35 /* `#` */) {\n        // Numerical reference.\n        end = ++begin\n\n        // The behavior further depends on the next character.\n        const following = value.charCodeAt(end)\n\n        if (following === 88 /* `X` */ || following === 120 /* `x` */) {\n          // ASCII hexadecimal digits.\n          type = 'hexadecimal'\n          end = ++begin\n        } else {\n          // ASCII decimal digits.\n          type = 'decimal'\n        }\n      } else {\n        // Named reference.\n        type = 'named'\n      }\n\n      let characterReferenceCharacters = ''\n      let characterReference = ''\n      let characters = ''\n      // Each type of character reference accepts different characters.\n      // This test is used to detect whether a reference has ended (as the semicolon\n      // is not strictly needed).\n      const test =\n        type === 'named'\n          ? isAlphanumerical\n          : type === 'decimal'\n          ? isDecimal\n          : isHexadecimal\n\n      end--\n\n      while (++end <= value.length) {\n        const following = value.charCodeAt(end)\n\n        if (!test(following)) {\n          break\n        }\n\n        characters += fromCharCode(following)\n\n        // Check if we can match a legacy named reference.\n        // If so, we cache that as the last viable named reference.\n        // This ensures we do not need to walk backwards later.\n        if (type === 'named' && characterEntitiesLegacy.includes(characters)) {\n          characterReferenceCharacters = characters\n          // @ts-expect-error: always able to decode.\n          characterReference = decodeNamedCharacterReference(characters)\n        }\n      }\n\n      let terminated = value.charCodeAt(end) === 59 /* `;` */\n\n      if (terminated) {\n        end++\n\n        const namedReference =\n          type === 'named' ? decodeNamedCharacterReference(characters) : false\n\n        if (namedReference) {\n          characterReferenceCharacters = characters\n          characterReference = namedReference\n        }\n      }\n\n      let diff = 1 + end - start\n      let reference = ''\n\n      if (!terminated && options.nonTerminated === false) {\n        // Empty.\n      } else if (!characters) {\n        // An empty (possible) reference is valid, unless it’s numeric (thus an\n        // ampersand followed by an octothorp).\n        if (type !== 'named') {\n          warning(4 /* Empty (numeric) */, diff)\n        }\n      } else if (type === 'named') {\n        // An ampersand followed by anything unknown, and not terminated, is\n        // invalid.\n        if (terminated && !characterReference) {\n          warning(5 /* Unknown (named) */, 1)\n        } else {\n          // If there’s something after an named reference which is not known,\n          // cap the reference.\n          if (characterReferenceCharacters !== characters) {\n            end = begin + characterReferenceCharacters.length\n            diff = 1 + end - begin\n            terminated = false\n          }\n\n          // If the reference is not terminated, warn.\n          if (!terminated) {\n            const reason = characterReferenceCharacters\n              ? 1 /* Non terminated (named) */\n              : 3 /* Empty (named) */\n\n            if (options.attribute) {\n              const following = value.charCodeAt(end)\n\n              if (following === 61 /* `=` */) {\n                warning(reason, diff)\n                characterReference = ''\n              } else if (isAlphanumerical(following)) {\n                characterReference = ''\n              } else {\n                warning(reason, diff)\n              }\n            } else {\n              warning(reason, diff)\n            }\n          }\n        }\n\n        reference = characterReference\n      } else {\n        if (!terminated) {\n          // All nonterminated numeric references are not rendered, and emit a\n          // warning.\n          warning(2 /* Non terminated (numeric) */, diff)\n        }\n\n        // When terminated and numerical, parse as either hexadecimal or\n        // decimal.\n        let referenceCode = Number.parseInt(\n          characters,\n          type === 'hexadecimal' ? 16 : 10\n        )\n\n        // Emit a warning when the parsed number is prohibited, and replace with\n        // replacement character.\n        if (prohibited(referenceCode)) {\n          warning(7 /* Prohibited (numeric) */, diff)\n          reference = fromCharCode(65533 /* `�` */)\n        } else if (referenceCode in characterReferenceInvalid) {\n          // Emit a warning when the parsed number is disallowed, and replace by\n          // an alternative.\n          warning(6 /* Disallowed (numeric) */, diff)\n          reference = characterReferenceInvalid[referenceCode]\n        } else {\n          // Parse the number.\n          let output = ''\n\n          // Emit a warning when the parsed number should not be used.\n          if (disallowed(referenceCode)) {\n            warning(6 /* Disallowed (numeric) */, diff)\n          }\n\n          // Serialize the number.\n          if (referenceCode > 0xffff) {\n            referenceCode -= 0x10000\n            output += fromCharCode((referenceCode >>> (10 & 0x3ff)) | 0xd800)\n            referenceCode = 0xdc00 | (referenceCode & 0x3ff)\n          }\n\n          reference = output + fromCharCode(referenceCode)\n        }\n      }\n\n      // Found it!\n      // First eat the queued characters as normal text, then eat a reference.\n      if (reference) {\n        flush()\n\n        previous = now()\n        index = end - 1\n        column += end - start + 1\n        result.push(reference)\n        const next = now()\n        next.offset++\n\n        if (options.reference) {\n          options.reference.call(\n            options.referenceContext,\n            reference,\n            {start: previous, end: next},\n            value.slice(start - 1, end)\n          )\n        }\n\n        previous = next\n      } else {\n        // If we could not find a reference, queue the checked characters (as\n        // normal characters), and move the pointer to their end.\n        // This is possible because we can be certain neither newlines nor\n        // ampersands are included.\n        characters = value.slice(start - 1, end)\n        queue += characters\n        column += characters.length\n        index = end - 1\n      }\n    } else {\n      // Handle anything other than an ampersand, including newlines and EOF.\n      if (character === 10 /* `\\n` */) {\n        line++\n        lines++\n        column = 0\n      }\n\n      if (Number.isNaN(character)) {\n        flush()\n      } else {\n        queue += fromCharCode(character)\n        column++\n      }\n    }\n  }\n\n  // Return the reduced nodes.\n  return result.join('')\n\n  // Get current position.\n  function now() {\n    return {\n      line,\n      column,\n      offset: index + ((point ? point.offset : 0) || 0)\n    }\n  }\n\n  /**\n   * Handle the warning.\n   *\n   * @param {1|2|3|4|5|6|7} code\n   * @param {number} offset\n   */\n  function warning(code, offset) {\n    /** @type {ReturnType<now>} */\n    let position\n\n    if (options.warning) {\n      position = now()\n      position.column += offset\n      position.offset += offset\n\n      options.warning.call(\n        options.warningContext,\n        messages[code],\n        position,\n        code\n      )\n    }\n  }\n\n  /**\n   * Flush `queue` (normal text).\n   * Macro invoked before each reference and at the end of `value`.\n   * Does nothing when `queue` is empty.\n   */\n  function flush() {\n    if (queue) {\n      result.push(queue)\n\n      if (options.text) {\n        options.text.call(options.textContext, queue, {\n          start: previous,\n          end: now()\n        })\n      }\n\n      queue = ''\n    }\n  }\n}\n\n/**\n * Check if `character` is outside the permissible unicode range.\n *\n * @param {number} code\n * @returns {boolean}\n */\nfunction prohibited(code) {\n  return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff\n}\n\n/**\n * Check if `character` is disallowed.\n *\n * @param {number} code\n * @returns {boolean}\n */\nfunction disallowed(code) {\n  return (\n    (code >= 0x0001 && code <= 0x0008) ||\n    code === 0x000b ||\n    (code >= 0x000d && code <= 0x001f) ||\n    (code >= 0x007f && code <= 0x009f) ||\n    (code >= 0xfdd0 && code <= 0xfdef) ||\n    (code & 0xffff) === 0xffff ||\n    (code & 0xffff) === 0xfffe\n  )\n}\n\n;// ./node_modules/stringify-entities/lib/core.js\n/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n *   Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n *   Whether to only escape possibly dangerous characters.\n *   Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n *   Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n  // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n  /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nfunction core(value, options) {\n  value = value.replace(\n    options.subset\n      ? charactersToExpressionCached(options.subset)\n      : defaultSubsetRegex,\n    basic\n  )\n\n  if (options.subset || options.escapeOnly) {\n    return value\n  }\n\n  return (\n    value\n      // Surrogate pairs.\n      .replace(surrogatePairsRegex, surrogate)\n      // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n      // non-ASCII ones).\n      .replace(controlCharactersRegex, basic)\n  )\n\n  /**\n   * @param {string} pair\n   * @param {number} index\n   * @param {string} all\n   */\n  function surrogate(pair, index, all) {\n    return options.format(\n      (pair.charCodeAt(0) - 0xd800) * 0x400 +\n        pair.charCodeAt(1) -\n        0xdc00 +\n        0x10000,\n      all.charCodeAt(index + 2),\n      options\n    )\n  }\n\n  /**\n   * @param {string} character\n   * @param {number} index\n   * @param {string} all\n   */\n  function basic(character, index, all) {\n    return options.format(\n      character.charCodeAt(0),\n      all.charCodeAt(index + 1),\n      options\n    )\n  }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n  let cached = subsetToRegexCache.get(subset)\n\n  if (!cached) {\n    cached = charactersToExpression(subset)\n    subsetToRegexCache.set(subset, cached)\n  }\n\n  return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n  /** @type {Array<string>} */\n  const groups = []\n  let index = -1\n\n  while (++index < subset.length) {\n    groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n  }\n\n  return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n\n;// ./node_modules/stringify-entities/lib/util/to-hexadecimal.js\nconst hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nfunction toHexadecimal(code, next, omit) {\n  const value = '&#x' + code.toString(16).toUpperCase()\n  return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n    ? value\n    : value + ';'\n}\n\n;// ./node_modules/stringify-entities/lib/util/to-decimal.js\nconst decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nfunction toDecimal(code, next, omit) {\n  const value = '&#' + String(code)\n  return omit && next && !decimalRegex.test(String.fromCharCode(next))\n    ? value\n    : value + ';'\n}\n\n;// ./node_modules/character-entities-html4/index.js\n/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nconst characterEntitiesHtml4 = {\n  nbsp: ' ',\n  iexcl: '¡',\n  cent: '¢',\n  pound: '£',\n  curren: '¤',\n  yen: '¥',\n  brvbar: '¦',\n  sect: '§',\n  uml: '¨',\n  copy: '©',\n  ordf: 'ª',\n  laquo: '«',\n  not: '¬',\n  shy: '­',\n  reg: '®',\n  macr: '¯',\n  deg: '°',\n  plusmn: '±',\n  sup2: '²',\n  sup3: '³',\n  acute: '´',\n  micro: 'µ',\n  para: '¶',\n  middot: '·',\n  cedil: '¸',\n  sup1: '¹',\n  ordm: 'º',\n  raquo: '»',\n  frac14: '¼',\n  frac12: '½',\n  frac34: '¾',\n  iquest: '¿',\n  Agrave: 'À',\n  Aacute: 'Á',\n  Acirc: 'Â',\n  Atilde: 'Ã',\n  Auml: 'Ä',\n  Aring: 'Å',\n  AElig: 'Æ',\n  Ccedil: 'Ç',\n  Egrave: 'È',\n  Eacute: 'É',\n  Ecirc: 'Ê',\n  Euml: 'Ë',\n  Igrave: 'Ì',\n  Iacute: 'Í',\n  Icirc: 'Î',\n  Iuml: 'Ï',\n  ETH: 'Ð',\n  Ntilde: 'Ñ',\n  Ograve: 'Ò',\n  Oacute: 'Ó',\n  Ocirc: 'Ô',\n  Otilde: 'Õ',\n  Ouml: 'Ö',\n  times: '×',\n  Oslash: 'Ø',\n  Ugrave: 'Ù',\n  Uacute: 'Ú',\n  Ucirc: 'Û',\n  Uuml: 'Ü',\n  Yacute: 'Ý',\n  THORN: 'Þ',\n  szlig: 'ß',\n  agrave: 'à',\n  aacute: 'á',\n  acirc: 'â',\n  atilde: 'ã',\n  auml: 'ä',\n  aring: 'å',\n  aelig: 'æ',\n  ccedil: 'ç',\n  egrave: 'è',\n  eacute: 'é',\n  ecirc: 'ê',\n  euml: 'ë',\n  igrave: 'ì',\n  iacute: 'í',\n  icirc: 'î',\n  iuml: 'ï',\n  eth: 'ð',\n  ntilde: 'ñ',\n  ograve: 'ò',\n  oacute: 'ó',\n  ocirc: 'ô',\n  otilde: 'õ',\n  ouml: 'ö',\n  divide: '÷',\n  oslash: 'ø',\n  ugrave: 'ù',\n  uacute: 'ú',\n  ucirc: 'û',\n  uuml: 'ü',\n  yacute: 'ý',\n  thorn: 'þ',\n  yuml: 'ÿ',\n  fnof: 'ƒ',\n  Alpha: 'Α',\n  Beta: 'Β',\n  Gamma: 'Γ',\n  Delta: 'Δ',\n  Epsilon: 'Ε',\n  Zeta: 'Ζ',\n  Eta: 'Η',\n  Theta: 'Θ',\n  Iota: 'Ι',\n  Kappa: 'Κ',\n  Lambda: 'Λ',\n  Mu: 'Μ',\n  Nu: 'Ν',\n  Xi: 'Ξ',\n  Omicron: 'Ο',\n  Pi: 'Π',\n  Rho: 'Ρ',\n  Sigma: 'Σ',\n  Tau: 'Τ',\n  Upsilon: 'Υ',\n  Phi: 'Φ',\n  Chi: 'Χ',\n  Psi: 'Ψ',\n  Omega: 'Ω',\n  alpha: 'α',\n  beta: 'β',\n  gamma: 'γ',\n  delta: 'δ',\n  epsilon: 'ε',\n  zeta: 'ζ',\n  eta: 'η',\n  theta: 'θ',\n  iota: 'ι',\n  kappa: 'κ',\n  lambda: 'λ',\n  mu: 'μ',\n  nu: 'ν',\n  xi: 'ξ',\n  omicron: 'ο',\n  pi: 'π',\n  rho: 'ρ',\n  sigmaf: 'ς',\n  sigma: 'σ',\n  tau: 'τ',\n  upsilon: 'υ',\n  phi: 'φ',\n  chi: 'χ',\n  psi: 'ψ',\n  omega: 'ω',\n  thetasym: 'ϑ',\n  upsih: 'ϒ',\n  piv: 'ϖ',\n  bull: '•',\n  hellip: '…',\n  prime: '′',\n  Prime: '″',\n  oline: '‾',\n  frasl: '⁄',\n  weierp: '℘',\n  image: 'ℑ',\n  real: 'ℜ',\n  trade: '™',\n  alefsym: 'ℵ',\n  larr: '←',\n  uarr: '↑',\n  rarr: '→',\n  darr: '↓',\n  harr: '↔',\n  crarr: '↵',\n  lArr: '⇐',\n  uArr: '⇑',\n  rArr: '⇒',\n  dArr: '⇓',\n  hArr: '⇔',\n  forall: '∀',\n  part: '∂',\n  exist: '∃',\n  empty: '∅',\n  nabla: '∇',\n  isin: '∈',\n  notin: '∉',\n  ni: '∋',\n  prod: '∏',\n  sum: '∑',\n  minus: '−',\n  lowast: '∗',\n  radic: '√',\n  prop: '∝',\n  infin: '∞',\n  ang: '∠',\n  and: '∧',\n  or: '∨',\n  cap: '∩',\n  cup: '∪',\n  int: '∫',\n  there4: '∴',\n  sim: '∼',\n  cong: '≅',\n  asymp: '≈',\n  ne: '≠',\n  equiv: '≡',\n  le: '≤',\n  ge: '≥',\n  sub: '⊂',\n  sup: '⊃',\n  nsub: '⊄',\n  sube: '⊆',\n  supe: '⊇',\n  oplus: '⊕',\n  otimes: '⊗',\n  perp: '⊥',\n  sdot: '⋅',\n  lceil: '⌈',\n  rceil: '⌉',\n  lfloor: '⌊',\n  rfloor: '⌋',\n  lang: '〈',\n  rang: '〉',\n  loz: '◊',\n  spades: '♠',\n  clubs: '♣',\n  hearts: '♥',\n  diams: '♦',\n  quot: '\"',\n  amp: '&',\n  lt: '<',\n  gt: '>',\n  OElig: 'Œ',\n  oelig: 'œ',\n  Scaron: 'Š',\n  scaron: 'š',\n  Yuml: 'Ÿ',\n  circ: 'ˆ',\n  tilde: '˜',\n  ensp: ' ',\n  emsp: ' ',\n  thinsp: ' ',\n  zwnj: '‌',\n  zwj: '‍',\n  lrm: '‎',\n  rlm: '‏',\n  ndash: '–',\n  mdash: '—',\n  lsquo: '‘',\n  rsquo: '’',\n  sbquo: '‚',\n  ldquo: '“',\n  rdquo: '”',\n  bdquo: '„',\n  dagger: '†',\n  Dagger: '‡',\n  permil: '‰',\n  lsaquo: '‹',\n  rsaquo: '›',\n  euro: '€'\n}\n\n;// ./node_modules/stringify-entities/lib/constant/dangerous.js\n/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nconst dangerous = [\n  'cent',\n  'copy',\n  'divide',\n  'gt',\n  'lt',\n  'not',\n  'para',\n  'times'\n]\n\n;// ./node_modules/stringify-entities/lib/util/to-named.js\n\n\n\n\nconst to_named_own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n  if (to_named_own.call(characterEntitiesHtml4, key)) {\n    characters[characterEntitiesHtml4[key]] = key\n  }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nfunction toNamed(code, next, omit, attribute) {\n  const character = String.fromCharCode(code)\n\n  if (to_named_own.call(characters, character)) {\n    const name = characters[character]\n    const value = '&' + name\n\n    if (\n      omit &&\n      characterEntitiesLegacy.includes(name) &&\n      !dangerous.includes(name) &&\n      (!attribute ||\n        (next &&\n          next !== 61 /* `=` */ &&\n          notAlphanumericRegex.test(String.fromCharCode(next))))\n    ) {\n      return value\n    }\n\n    return value + ';'\n  }\n\n  return ''\n}\n\n;// ./node_modules/stringify-entities/lib/util/format-smart.js\n/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n *   Prefer named character references (`&amp;`) where possible.\n * @property {boolean} [useShortestReferences=false]\n *   Prefer the shortest possible reference, if that results in less bytes.\n *   **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n *   Whether to omit semicolons when possible.\n *   **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n *   Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n *   Create character references which don’t fail in attributes.\n *   **Note**: `attribute` only applies when operating dangerously with\n *   `omitOptionalSemicolons: true`.\n */\n\n\n\n\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nfunction formatSmart(code, next, options) {\n  let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n  /** @type {string|undefined} */\n  let named\n\n  if (options.useNamedReferences || options.useShortestReferences) {\n    named = toNamed(\n      code,\n      next,\n      options.omitOptionalSemicolons,\n      options.attribute\n    )\n  }\n\n  // Use the shortest numeric reference when requested.\n  // A simple algorithm would use decimal for all code points under 100, as\n  // those are shorter than hexadecimal:\n  //\n  // * `&#99;` vs `&#x63;` (decimal shorter)\n  // * `&#100;` vs `&#x64;` (equal)\n  //\n  // However, because we take `next` into consideration when `omit` is used,\n  // And it would be possible that decimals are shorter on bigger values as\n  // well if `next` is hexadecimal but not decimal, we instead compare both.\n  if (\n    (options.useShortestReferences || !named) &&\n    options.useShortestReferences\n  ) {\n    const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n    if (decimal.length < numeric.length) {\n      numeric = decimal\n    }\n  }\n\n  return named &&\n    (!options.useShortestReferences || named.length < numeric.length)\n    ? named\n    : numeric\n}\n\n;// ./node_modules/stringify-entities/lib/util/format-basic.js\n/**\n * The smallest way to encode a character.\n *\n * @param {number} code\n * @returns {string}\n */\nfunction formatBasic(code) {\n  return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n\n;// ./node_modules/stringify-entities/lib/index.js\n/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\n\n\n\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n *   Value to encode.\n * @param {Options} [options]\n *   Configuration.\n * @returns {string}\n *   Encoded value.\n */\nfunction stringifyEntities(value, options) {\n  return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n *   Value to encode.\n * @param {LightOptions} [options]\n *   Configuration.\n * @returns {string}\n *   Encoded value.\n */\nfunction stringifyEntitiesLight(value, options) {\n  return core(value, Object.assign({format: formatBasic}, options))\n}\n\n;// ./node_modules/mdast-util-mdx-jsx/lib/index.js\n/**\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-from-markdown').OnEnterError} OnEnterError\n * @typedef {import('mdast-util-from-markdown').OnExitError} OnExitError\n * @typedef {import('mdast-util-from-markdown').Token} Token\n *\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Tracker} Tracker\n *\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('../index.js').MdxJsxAttribute} MdxJsxAttribute\n * @typedef {import('../index.js').MdxJsxAttributeValueExpression} MdxJsxAttributeValueExpression\n * @typedef {import('../index.js').MdxJsxExpressionAttribute} MdxJsxExpressionAttribute\n * @typedef {import('../index.js').MdxJsxFlowElement} MdxJsxFlowElement\n * @typedef {import('../index.js').MdxJsxTextElement} MdxJsxTextElement\n */\n\n/**\n * @typedef Tag\n *   Single tag.\n * @property {string | undefined} name\n *   Name of tag, or `undefined` for fragment.\n *\n *   > 👉 **Note**: `null` is used in the AST for fragments, as it serializes in\n *   > JSON.\n * @property {Array<MdxJsxAttribute | MdxJsxExpressionAttribute>} attributes\n *   Attributes.\n * @property {boolean} close\n *   Whether the tag is closing (`</x>`).\n * @property {boolean} selfClosing\n *   Whether the tag is self-closing (`<x/>`).\n * @property {Token['start']} start\n *   Start point.\n * @property {Token['start']} end\n *   End point.\n *\n * @typedef ToMarkdownOptions\n *   Configuration.\n * @property {'\"' | \"'\" | null | undefined} [quote='\"']\n *   Preferred quote to use around attribute values (default: `'\"'`).\n * @property {boolean | null | undefined} [quoteSmart=false]\n *   Use the other quote if that results in less bytes (default: `false`).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n *   Do not use an extra space when closing self-closing elements: `<img/>`\n *   instead of `<img />` (default: `false`).\n * @property {number | null | undefined} [printWidth=Infinity]\n *   Try and wrap syntax at this width (default: `Infinity`).\n *\n *   When set to a finite number (say, `80`), the formatter will print\n *   attributes on separate lines when a tag doesn’t fit on one line.\n *   The normal behavior is to print attributes with spaces between them\n *   instead of line endings.\n */\n\n\n\n\n\n\n\n\nconst lib_indent = '  '\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable MDX JSX.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable MDX JSX.\n *\n *   When using the syntax extension with `addResult`, nodes will have a\n *   `data.estree` field set to an ESTree `Program` node.\n */\nfunction mdxJsxFromMarkdown() {\n  return {\n    canContainEols: ['mdxJsxTextElement'],\n    enter: {\n      mdxJsxFlowTag: enterMdxJsxTag,\n      mdxJsxFlowTagClosingMarker: enterMdxJsxTagClosingMarker,\n      mdxJsxFlowTagAttribute: enterMdxJsxTagAttribute,\n      mdxJsxFlowTagExpressionAttribute: enterMdxJsxTagExpressionAttribute,\n      mdxJsxFlowTagAttributeValueLiteral: buffer,\n      mdxJsxFlowTagAttributeValueExpression: buffer,\n      mdxJsxFlowTagSelfClosingMarker: enterMdxJsxTagSelfClosingMarker,\n\n      mdxJsxTextTag: enterMdxJsxTag,\n      mdxJsxTextTagClosingMarker: enterMdxJsxTagClosingMarker,\n      mdxJsxTextTagAttribute: enterMdxJsxTagAttribute,\n      mdxJsxTextTagExpressionAttribute: enterMdxJsxTagExpressionAttribute,\n      mdxJsxTextTagAttributeValueLiteral: buffer,\n      mdxJsxTextTagAttributeValueExpression: buffer,\n      mdxJsxTextTagSelfClosingMarker: enterMdxJsxTagSelfClosingMarker\n    },\n    exit: {\n      mdxJsxFlowTagClosingMarker: exitMdxJsxTagClosingMarker,\n      mdxJsxFlowTagNamePrimary: exitMdxJsxTagNamePrimary,\n      mdxJsxFlowTagNameMember: exitMdxJsxTagNameMember,\n      mdxJsxFlowTagNameLocal: exitMdxJsxTagNameLocal,\n      mdxJsxFlowTagExpressionAttribute: exitMdxJsxTagExpressionAttribute,\n      mdxJsxFlowTagExpressionAttributeValue: data,\n      mdxJsxFlowTagAttributeNamePrimary: exitMdxJsxTagAttributeNamePrimary,\n      mdxJsxFlowTagAttributeNameLocal: exitMdxJsxTagAttributeNameLocal,\n      mdxJsxFlowTagAttributeValueLiteral: exitMdxJsxTagAttributeValueLiteral,\n      mdxJsxFlowTagAttributeValueLiteralValue: data,\n      mdxJsxFlowTagAttributeValueExpression:\n        exitMdxJsxTagAttributeValueExpression,\n      mdxJsxFlowTagAttributeValueExpressionValue: data,\n      mdxJsxFlowTagSelfClosingMarker: exitMdxJsxTagSelfClosingMarker,\n      mdxJsxFlowTag: exitMdxJsxTag,\n\n      mdxJsxTextTagClosingMarker: exitMdxJsxTagClosingMarker,\n      mdxJsxTextTagNamePrimary: exitMdxJsxTagNamePrimary,\n      mdxJsxTextTagNameMember: exitMdxJsxTagNameMember,\n      mdxJsxTextTagNameLocal: exitMdxJsxTagNameLocal,\n      mdxJsxTextTagExpressionAttribute: exitMdxJsxTagExpressionAttribute,\n      mdxJsxTextTagExpressionAttributeValue: data,\n      mdxJsxTextTagAttributeNamePrimary: exitMdxJsxTagAttributeNamePrimary,\n      mdxJsxTextTagAttributeNameLocal: exitMdxJsxTagAttributeNameLocal,\n      mdxJsxTextTagAttributeValueLiteral: exitMdxJsxTagAttributeValueLiteral,\n      mdxJsxTextTagAttributeValueLiteralValue: data,\n      mdxJsxTextTagAttributeValueExpression:\n        exitMdxJsxTagAttributeValueExpression,\n      mdxJsxTextTagAttributeValueExpressionValue: data,\n      mdxJsxTextTagSelfClosingMarker: exitMdxJsxTagSelfClosingMarker,\n      mdxJsxTextTag: exitMdxJsxTag\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function buffer() {\n    this.buffer()\n  }\n\n  /**\n   * Copy a point-like value.\n   *\n   * @param {Point} d\n   *   Point-like value.\n   * @returns {Point}\n   *   unist point.\n   */\n  function point(d) {\n    return {line: d.line, column: d.column, offset: d.offset}\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function data(token) {\n    this.config.enter.data.call(this, token)\n    this.config.exit.data.call(this, token)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function enterMdxJsxTag(token) {\n    /** @type {Tag} */\n    const tag = {\n      name: undefined,\n      attributes: [],\n      close: false,\n      selfClosing: false,\n      start: token.start,\n      end: token.end\n    }\n    if (!this.data.mdxJsxTagStack) this.data.mdxJsxTagStack = []\n    this.data.mdxJsxTag = tag\n    this.buffer()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function enterMdxJsxTagClosingMarker(token) {\n    const stack = this.data.mdxJsxTagStack\n    default_ok(stack, 'expected `mdxJsxTagStack`')\n\n    if (stack.length === 0) {\n      throw new VFileMessage(\n        'Unexpected closing slash `/` in tag, expected an open tag first',\n        {start: token.start, end: token.end},\n        'mdast-util-mdx-jsx:unexpected-closing-slash'\n      )\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function enterMdxJsxTagAnyAttribute(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n\n    if (tag.close) {\n      throw new VFileMessage(\n        'Unexpected attribute in closing tag, expected the end of the tag',\n        {start: token.start, end: token.end},\n        'mdast-util-mdx-jsx:unexpected-attribute'\n      )\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function enterMdxJsxTagSelfClosingMarker(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n\n    if (tag.close) {\n      throw new VFileMessage(\n        'Unexpected self-closing slash `/` in closing tag, expected the end of the tag',\n        {start: token.start, end: token.end},\n        'mdast-util-mdx-jsx:unexpected-self-closing-slash'\n      )\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagClosingMarker() {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    tag.close = true\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagNamePrimary(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    tag.name = this.sliceSerialize(token)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagNameMember(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    tag.name += '.' + this.sliceSerialize(token)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagNameLocal(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    tag.name += ':' + this.sliceSerialize(token)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function enterMdxJsxTagAttribute(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    enterMdxJsxTagAnyAttribute.call(this, token)\n    tag.attributes.push({\n      type: 'mdxJsxAttribute',\n      name: '',\n      value: null,\n      position: {\n        start: point(token.start),\n        // @ts-expect-error: `end` will be patched later.\n        end: undefined\n      }\n    })\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function enterMdxJsxTagExpressionAttribute(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    enterMdxJsxTagAnyAttribute.call(this, token)\n    tag.attributes.push({type: 'mdxJsxExpressionAttribute', value: ''})\n    this.buffer()\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagExpressionAttribute(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    const tail = tag.attributes[tag.attributes.length - 1]\n    default_ok(tail.type === 'mdxJsxExpressionAttribute')\n    const estree = token.estree\n\n    tail.value = this.resume()\n\n    if (estree) {\n      tail.data = {estree}\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagAttributeNamePrimary(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    const node = tag.attributes[tag.attributes.length - 1]\n    default_ok(node.type === 'mdxJsxAttribute')\n    node.name = this.sliceSerialize(token)\n    default_ok(node.position !== undefined)\n    node.position.end = point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagAttributeNameLocal(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    const node = tag.attributes[tag.attributes.length - 1]\n    default_ok(node.type === 'mdxJsxAttribute')\n    node.name += ':' + this.sliceSerialize(token)\n    default_ok(node.position !== undefined)\n    node.position.end = point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagAttributeValueLiteral(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    const node = tag.attributes[tag.attributes.length - 1]\n    node.value = parseEntities(this.resume(), {nonTerminated: false})\n    default_ok(node.position !== undefined)\n    node.position.end = point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagAttributeValueExpression(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    const tail = tag.attributes[tag.attributes.length - 1]\n    default_ok(tail.type === 'mdxJsxAttribute')\n    /** @type {MdxJsxAttributeValueExpression} */\n    const node = {type: 'mdxJsxAttributeValueExpression', value: this.resume()}\n    const estree = token.estree\n\n    if (estree) {\n      node.data = {estree}\n    }\n\n    tail.value = node\n    default_ok(tail.position !== undefined)\n    tail.position.end = point(token.end)\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTagSelfClosingMarker() {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n\n    tag.selfClosing = true\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {FromMarkdownHandle}\n   */\n  function exitMdxJsxTag(token) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n    const stack = this.data.mdxJsxTagStack\n    default_ok(stack, 'expected `mdxJsxTagStack`')\n    const tail = stack[stack.length - 1]\n\n    if (tag.close && tail.name !== tag.name) {\n      throw new VFileMessage(\n        'Unexpected closing tag `' +\n          serializeAbbreviatedTag(tag) +\n          '`, expected corresponding closing tag for `' +\n          serializeAbbreviatedTag(tail) +\n          '` (' +\n          stringifyPosition(tail) +\n          ')',\n        {start: token.start, end: token.end},\n        'mdast-util-mdx-jsx:end-tag-mismatch'\n      )\n    }\n\n    // End of a tag, so drop the buffer.\n    this.resume()\n\n    if (tag.close) {\n      stack.pop()\n    } else {\n      this.enter(\n        {\n          type:\n            token.type === 'mdxJsxTextTag'\n              ? 'mdxJsxTextElement'\n              : 'mdxJsxFlowElement',\n          name: tag.name || null,\n          attributes: tag.attributes,\n          children: []\n        },\n        token,\n        onErrorRightIsTag\n      )\n    }\n\n    if (tag.selfClosing || tag.close) {\n      this.exit(token, onErrorLeftIsTag)\n    } else {\n      stack.push(tag)\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {OnEnterError}\n   */\n  function onErrorRightIsTag(closing, open) {\n    const stack = this.data.mdxJsxTagStack\n    default_ok(stack, 'expected `mdxJsxTagStack`')\n    const tag = stack[stack.length - 1]\n    default_ok(tag, 'expected `mdxJsxTag`')\n    const place = closing ? ' before the end of `' + closing.type + '`' : ''\n    const position = closing\n      ? {start: closing.start, end: closing.end}\n      : undefined\n\n    throw new VFileMessage(\n      'Expected a closing tag for `' +\n        serializeAbbreviatedTag(tag) +\n        '` (' +\n        stringifyPosition({start: open.start, end: open.end}) +\n        ')' +\n        place,\n      position,\n      'mdast-util-mdx-jsx:end-tag-mismatch'\n    )\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {OnExitError}\n   */\n  function onErrorLeftIsTag(a, b) {\n    const tag = this.data.mdxJsxTag\n    default_ok(tag, 'expected `mdxJsxTag`')\n\n    throw new VFileMessage(\n      'Expected the closing tag `' +\n        serializeAbbreviatedTag(tag) +\n        '` either after the end of `' +\n        b.type +\n        '` (' +\n        stringifyPosition(b.end) +\n        ') or another opening tag after the start of `' +\n        b.type +\n        '` (' +\n        stringifyPosition(b.start) +\n        ')',\n      {start: a.start, end: a.end},\n      'mdast-util-mdx-jsx:end-tag-mismatch'\n    )\n  }\n\n  /**\n   * Serialize a tag, excluding attributes.\n   * `self-closing` is not supported, because we don’t need it yet.\n   *\n   * @param {Tag} tag\n   * @returns {string}\n   */\n  function serializeAbbreviatedTag(tag) {\n    return '<' + (tag.close ? '/' : '') + (tag.name || '') + '>'\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable MDX JSX.\n *\n * This extension configures `mdast-util-to-markdown` with\n * `options.fences: true` and `options.resourceLink: true` too, do not\n * overwrite them!\n *\n * @param {ToMarkdownOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable MDX JSX.\n */\nfunction mdxJsxToMarkdown(options) {\n  const options_ = options || {}\n  const quote = options_.quote || '\"'\n  const quoteSmart = options_.quoteSmart || false\n  const tightSelfClosing = options_.tightSelfClosing || false\n  const printWidth = options_.printWidth || Number.POSITIVE_INFINITY\n  const alternative = quote === '\"' ? \"'\" : '\"'\n\n  if (quote !== '\"' && quote !== \"'\") {\n    throw new Error(\n      'Cannot serialize attribute values with `' +\n        quote +\n        '` for `options.quote`, expected `\"`, or `\\'`'\n    )\n  }\n\n  mdxElement.peek = peekElement\n\n  return {\n    handlers: {\n      mdxJsxFlowElement: mdxElement,\n      mdxJsxTextElement: mdxElement\n    },\n    unsafe: [\n      {character: '<', inConstruct: ['phrasing']},\n      {atBreak: true, character: '<'}\n    ],\n    // Always generate fenced code (never indented code).\n    fences: true,\n    // Always generate links with resources (never autolinks).\n    resourceLink: true\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {MdxJsxFlowElement | MdxJsxTextElement} node\n   */\n  // eslint-disable-next-line complexity\n  function mdxElement(node, _, state, info) {\n    const flow = node.type === 'mdxJsxFlowElement'\n    const selfClosing = node.name\n      ? !node.children || node.children.length === 0\n      : false\n    const depth = inferDepth(state)\n    const currentIndent = createIndent(depth)\n    const trackerOneLine = state.createTracker(info)\n    const trackerMultiLine = state.createTracker(info)\n    /** @type {Array<string>} */\n    const serializedAttributes = []\n    const prefix = (flow ? currentIndent : '') + '<' + (node.name || '')\n    const exit = state.enter(node.type)\n\n    trackerOneLine.move(prefix)\n    trackerMultiLine.move(prefix)\n\n    // None.\n    if (node.attributes && node.attributes.length > 0) {\n      if (!node.name) {\n        throw new Error('Cannot serialize fragment w/ attributes')\n      }\n\n      let index = -1\n      while (++index < node.attributes.length) {\n        const attribute = node.attributes[index]\n        /** @type {string} */\n        let result\n\n        if (attribute.type === 'mdxJsxExpressionAttribute') {\n          result = '{' + (attribute.value || '') + '}'\n        } else {\n          if (!attribute.name) {\n            throw new Error('Cannot serialize attribute w/o name')\n          }\n\n          const value = attribute.value\n          const left = attribute.name\n          /** @type {string} */\n          let right = ''\n\n          if (value === null || value === undefined) {\n            // Empty.\n          } else if (typeof value === 'object') {\n            right = '{' + (value.value || '') + '}'\n          } else {\n            // If the alternative is less common than `quote`, switch.\n            const appliedQuote =\n              quoteSmart && ccount(value, quote) > ccount(value, alternative)\n                ? alternative\n                : quote\n            right =\n              appliedQuote +\n              stringifyEntitiesLight(value, {subset: [appliedQuote]}) +\n              appliedQuote\n          }\n\n          result = left + (right ? '=' : '') + right\n        }\n\n        serializedAttributes.push(result)\n      }\n    }\n\n    let attributesOnTheirOwnLine = false\n    const attributesOnOneLine = serializedAttributes.join(' ')\n\n    if (\n      // Block:\n      flow &&\n      // Including a line ending (expressions).\n      (/\\r?\\n|\\r/.test(attributesOnOneLine) ||\n        // Current position (including `<tag`).\n        trackerOneLine.current().now.column +\n          // -1 because columns, +1 for ` ` before attributes.\n          // Attributes joined by spaces.\n          attributesOnOneLine.length +\n          // ` />`.\n          (selfClosing ? (tightSelfClosing ? 2 : 3) : 1) >\n          printWidth)\n    ) {\n      attributesOnTheirOwnLine = true\n    }\n\n    let tracker = trackerOneLine\n    let value = prefix\n\n    if (attributesOnTheirOwnLine) {\n      tracker = trackerMultiLine\n\n      let index = -1\n\n      while (++index < serializedAttributes.length) {\n        // Only indent first line of of attributes, we can’t indent attribute\n        // values.\n        serializedAttributes[index] =\n          currentIndent + lib_indent + serializedAttributes[index]\n      }\n\n      value += tracker.move(\n        '\\n' + serializedAttributes.join('\\n') + '\\n' + currentIndent\n      )\n    } else if (attributesOnOneLine) {\n      value += tracker.move(' ' + attributesOnOneLine)\n    }\n\n    if (selfClosing) {\n      value += tracker.move(\n        (tightSelfClosing || attributesOnTheirOwnLine ? '' : ' ') + '/'\n      )\n    }\n\n    value += tracker.move('>')\n\n    if (node.children && node.children.length > 0) {\n      if (node.type === 'mdxJsxTextElement') {\n        value += tracker.move(\n          // @ts-expect-error: `containerPhrasing` is typed correctly, but TS\n          // generates *hardcoded* types, which means that our dynamically added\n          // directives are not present.\n          // At some point, TS should fix that, and `from-markdown` should be fine.\n          state.containerPhrasing(node, {\n            ...tracker.current(),\n            before: '>',\n            after: '<'\n          })\n        )\n      } else {\n        tracker.shift(2)\n        value += tracker.move('\\n')\n        value += tracker.move(lib_containerFlow(node, state, tracker.current()))\n        value += tracker.move('\\n')\n      }\n    }\n\n    if (!selfClosing) {\n      value += tracker.move(\n        (flow ? currentIndent : '') + '</' + (node.name || '') + '>'\n      )\n    }\n\n    exit()\n    return value\n  }\n}\n\n// Modified copy of:\n// <https://github.com/syntax-tree/mdast-util-to-markdown/blob/a381cbc/lib/util/container-flow.js>.\n//\n// To do: add `indent` support to `mdast-util-to-markdown`.\n// As indents are only used for JSX, it’s fine for now, but perhaps better\n// there.\n/**\n * @param {MdxJsxFlowElement} parent\n *   Parent of flow nodes.\n * @param {State} state\n *   Info passed around about the current state.\n * @param {ReturnType<Tracker['current']>} info\n *   Info on where we are in the document we are generating.\n * @returns {string}\n *   Serialized children, joined by (blank) lines.\n */\nfunction lib_containerFlow(parent, state, info) {\n  const indexStack = state.indexStack\n  const children = parent.children\n  const tracker = state.createTracker(info)\n  const currentIndent = createIndent(inferDepth(state))\n  /** @type {Array<string>} */\n  const results = []\n  let index = -1\n\n  indexStack.push(-1)\n\n  while (++index < children.length) {\n    const child = children[index]\n\n    indexStack[indexStack.length - 1] = index\n\n    const childInfo = {before: '\\n', after: '\\n', ...tracker.current()}\n\n    const result = state.handle(child, parent, state, childInfo)\n\n    const serializedChild =\n      child.type === 'mdxJsxFlowElement'\n        ? result\n        : state.indentLines(result, function (line, _, blank) {\n            return (blank ? '' : currentIndent) + line\n          })\n\n    results.push(tracker.move(serializedChild))\n\n    if (child.type !== 'list') {\n      state.bulletLastUsed = undefined\n    }\n\n    if (index < children.length - 1) {\n      results.push(tracker.move('\\n\\n'))\n    }\n  }\n\n  indexStack.pop()\n\n  return results.join('')\n}\n\n/**\n * @param {State} state\n * @returns {number}\n */\nfunction inferDepth(state) {\n  let depth = 0\n  let index = state.stack.length\n\n  while (--index > -1) {\n    const name = state.stack[index]\n\n    if (name === 'blockquote' || name === 'listItem') break\n    if (name === 'mdxJsxFlowElement') depth++\n  }\n\n  return depth\n}\n\n/**\n * @param {number} depth\n * @returns {string}\n */\nfunction createIndent(depth) {\n  return lib_indent.repeat(depth)\n}\n\n/**\n * @type {ToMarkdownHandle}\n */\nfunction peekElement() {\n  return '<'\n}\n\n;// ./node_modules/mdast-util-mdxjs-esm/lib/index.js\n/**\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n *\n * @typedef {import('../index.js').MdxjsEsm} MdxjsEsm\n */\n\n// To do: next major: expose functions.\n\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable MDX.js ESM in\n * markdown.\n *\n * When using the micromark syntax extension with `addResult`, nodes will have\n * a `data.estree` field set to an ESTree [`Program`][program] node.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable MDX.js ESM.\n */\nfunction mdxjsEsmFromMarkdown() {\n  return {\n    enter: {mdxjsEsm: enterMdxjsEsm},\n    exit: {mdxjsEsm: exitMdxjsEsm, mdxjsEsmData: exitMdxjsEsmData}\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable MDX.js ESM in\n * markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable MDX.js ESM.\n */\nfunction mdxjsEsmToMarkdown() {\n  return {handlers: {mdxjsEsm: handleMdxjsEsm}}\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterMdxjsEsm(token) {\n  this.enter({type: 'mdxjsEsm', value: ''}, token)\n  this.buffer() // Capture EOLs\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitMdxjsEsm(token) {\n  const value = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  default_ok(node.type === 'mdxjsEsm')\n\n  this.exit(token)\n\n  const estree = token.estree\n\n  node.value = value\n\n  if (estree) {\n    node.data = {estree}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitMdxjsEsmData(token) {\n  this.config.enter.data.call(this, token)\n  this.config.exit.data.call(this, token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {MdxjsEsm} node\n */\nfunction handleMdxjsEsm(node) {\n  return node.value || ''\n}\n\n;// ./node_modules/mdast-util-mdx/lib/index.js\n/**\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-mdx-jsx').ToMarkdownOptions} ToMarkdownOptions\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n\n\n\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX,\n * expressions).\n *\n * @returns {Array<FromMarkdownExtension>}\n *   Extension for `mdast-util-from-markdown` to enable MDX (ESM, JSX,\n *   expressions).\n *\n *   When using the syntax extensions with `addResult`, ESM and expression\n *   nodes will have `data.estree` fields set to ESTree `Program` node.\n */\nfunction mdxFromMarkdown() {\n  return [\n    mdxExpressionFromMarkdown(),\n    mdxJsxFromMarkdown(),\n    mdxjsEsmFromMarkdown()\n  ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX,\n * expressions).\n *\n * @param {ToMarkdownOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable MDX (ESM, JSX,\n *   expressions).\n */\nfunction mdxToMarkdown(options) {\n  return {\n    extensions: [\n      mdxExpressionToMarkdown(),\n      mdxJsxToMarkdown(options),\n      mdxjsEsmToMarkdown()\n    ]\n  }\n}\n\n// EXTERNAL MODULE: external \"acorn\"\nvar external_acorn_ = __webpack_require__(6473);\n// EXTERNAL MODULE: ./node_modules/acorn-jsx/index.js\nvar acorn_jsx = __webpack_require__(9214);\nvar acorn_jsx_default = /*#__PURE__*/__webpack_require__.n(acorn_jsx);\n;// ./node_modules/estree-util-visit/lib/color.default.js\n/**\n * @param {string} d\n * @returns {string}\n */\nfunction color_default_color(d) {\n  return d\n}\n\n;// ./node_modules/estree-util-visit/lib/index.js\n/**\n * @typedef {import('estree-jsx').Node} Node\n */\n\n/**\n * @typedef {CONTINUE | EXIT | SKIP} Action\n *   Union of the action types.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed), when moving in an array.\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n */\n\n/**\n * @callback Visitor\n *   Handle a node.\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node`, the `Visitor` should\n *   return a new `Index` to specify the sibling to traverse after `node` is\n *   traversed.\n *   Adding or removing next siblings of `node` is handled as expected without\n *   needing to return a new `Index`.\n * @param {Node} node\n *   Found node.\n * @param {string | undefined} key\n *   Field at which `node` lives in its parent (or where a list of nodes lives).\n * @param {number | undefined} index\n *   Index where `node` lives if `parent[key]` is an array.\n * @param {Array<Node>} ancestors\n *   Ancestors of `node`.\n * @returns {Action | ActionTuple | Index | null | undefined | void}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @typedef Visitors\n *   Handle nodes when entering (preorder) and leaving (postorder).\n * @property {Visitor | null | undefined} [enter]\n *   Handle nodes when entering (preorder) (optional).\n * @property {Visitor | null | undefined} [leave]\n *   Handle nodes when leaving (postorder) (optional).\n */\n\n\n\nconst estree_util_visit_lib_own = {}.hasOwnProperty\n\n/**\n * Continue traversing as normal.\n */\nconst lib_CONTINUE = Symbol('continue')\n\n/**\n * Stop traversing immediately.\n */\nconst lib_EXIT = Symbol('exit')\n\n/**\n * Do not traverse this node’s children.\n */\nconst lib_SKIP = Symbol('skip')\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) and/or *postorder* (**LRN**).\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor(s) when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * @param {Node} tree\n *   Tree to traverse\n * @param {Visitor | Visitors | null | undefined} [visitor]\n *   Handle each node (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction lib_visit(tree, visitor) {\n  /** @type {Visitor | undefined} */\n  let enter\n  /** @type {Visitor | undefined} */\n  let leave\n\n  if (typeof visitor === 'function') {\n    enter = visitor\n  } else if (visitor && typeof visitor === 'object') {\n    if (visitor.enter) enter = visitor.enter\n    if (visitor.leave) leave = visitor.leave\n  }\n\n  build(tree, undefined, undefined, [])()\n\n  /**\n   * @param {Node} node\n   * @param {string | undefined} key\n   * @param {number | undefined} index\n   * @param {Array<Node>} parents\n   */\n  function build(node, key, index, parents) {\n    if (nodelike(node)) {\n      visit.displayName = 'node (' + color_default_color(node.type) + ')'\n    }\n\n    return visit\n\n    /**\n     * @returns {ActionTuple}\n     */\n    function visit() {\n      /** @type {ActionTuple} */\n      const result = enter ? lib_toResult(enter(node, key, index, parents)) : []\n\n      if (result[0] === lib_EXIT) {\n        return result\n      }\n\n      if (result[0] !== lib_SKIP) {\n        /** @type {keyof node} */\n        let cKey\n\n        for (cKey in node) {\n          if (\n            estree_util_visit_lib_own.call(node, cKey) &&\n            node[cKey] &&\n            typeof node[cKey] === 'object' &&\n            // @ts-expect-error: custom esast extension.\n            cKey !== 'data' &&\n            // @ts-expect-error: custom esast extension.\n            cKey !== 'position'\n          ) {\n            const grandparents = parents.concat(node)\n            /** @type {unknown} */\n            const value = node[cKey]\n\n            if (Array.isArray(value)) {\n              const nodes = /** @type {Array<unknown>} */ (value)\n              let cIndex = 0\n\n              while (cIndex > -1 && cIndex < nodes.length) {\n                const subvalue = nodes[cIndex]\n\n                if (nodelike(subvalue)) {\n                  const subresult = build(\n                    subvalue,\n                    cKey,\n                    cIndex,\n                    grandparents\n                  )()\n                  if (subresult[0] === lib_EXIT) return subresult\n                  cIndex =\n                    typeof subresult[1] === 'number' ? subresult[1] : cIndex + 1\n                } else {\n                  cIndex++\n                }\n              }\n            } else if (nodelike(value)) {\n              const subresult = build(value, cKey, undefined, grandparents)()\n              if (subresult[0] === lib_EXIT) return subresult\n            }\n          }\n        }\n      }\n\n      return leave ? lib_toResult(leave(node, key, index, parents)) : result\n    }\n  }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {Action | ActionTuple | Index | null | undefined | void} value\n *   Valid return values from visitors.\n * @returns {ActionTuple}\n *   Clean result.\n */\nfunction lib_toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [lib_CONTINUE, value]\n  }\n\n  return [value]\n}\n\n/**\n * Check if something looks like a node.\n *\n * @param {unknown} value\n *   Anything.\n * @returns {value is Node}\n *   Whether `value` looks like a node.\n */\nfunction nodelike(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'type' in value &&\n      typeof value.type === 'string' &&\n      value.type.length > 0\n  )\n}\n\n;// ./node_modules/micromark-util-events-to-acorn/index.js\n/**\n * @typedef {import('acorn').Comment} Comment\n * @typedef {import('acorn').Node} AcornNode\n * @typedef {import('acorn').Options} AcornOptions\n * @typedef {import('acorn').Token} Token\n * @typedef {import('estree').Node} EstreeNode\n * @typedef {import('estree').Program} Program\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} MicromarkPoint\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('unist').Point} UnistPoint\n */\n\n/**\n * @typedef Acorn\n *   Acorn-like interface.\n * @property {import('acorn').parse} parse\n *   Parse a program.\n * @property {import('acorn').parseExpressionAt} parseExpressionAt\n *   Parse an expression.\n *\n * @typedef AcornLoc\n * @property {number} line\n * @property {number} column\n *\n * @typedef AcornErrorFields\n * @property {number} raisedAt\n * @property {number} pos\n * @property {AcornLoc} loc\n *\n * @typedef {Error & AcornErrorFields} AcornError\n *\n * @typedef Options\n *   Configuration.\n * @property {Acorn} acorn\n *   Typically `acorn`, object with `parse` and `parseExpressionAt` fields (required).\n * @property {Array<TokenType>} tokenTypes\n *   Names of (void) tokens to consider as data; `'lineEnding'` is always\n *   included (required).\n * @property {AcornOptions | null | undefined} [acornOptions]\n *   Configuration for `acorn` (optional).\n * @property {MicromarkPoint | null | undefined} [start]\n *   Place where events start (optional, required if `allowEmpty`).\n * @property {string | null | undefined} [prefix='']\n *   Text to place before events (default: `''`).\n * @property {string | null | undefined} [suffix='']\n *   Text to place after events (default: `''`).\n * @property {boolean | null | undefined} [expression=false]\n *   Whether this is a program or expression (default: `false`).\n * @property {boolean | null | undefined} [allowEmpty=false]\n *   Whether an empty expression is allowed (programs are always allowed to\n *   be empty) (default: `false`).\n *\n * @typedef Result\n *   Result.\n * @property {Program | undefined} estree\n *   Program.\n * @property {AcornError | undefined} error\n *   Error if unparseable\n * @property {boolean} swallow\n *   Whether the error, if there is one, can be swallowed and more JavaScript\n *   could be valid.\n *\n * @typedef {[number, MicromarkPoint]} Stop\n *\n * @typedef Collection\n * @property {string} value\n * @property {Array<Stop>} stops\n */\n\n\n\n\n/**\n * Parse a list of micromark events with acorn.\n *\n * @param {Array<Event>} events\n *   Events.\n * @param {Options} options\n *   Configuration (required).\n * @returns {Result}\n *   Result.\n */\n// eslint-disable-next-line complexity\nfunction eventsToAcorn(events, options) {\n  const prefix = options.prefix || '';\n  const suffix = options.suffix || '';\n  const acornOptions = Object.assign({}, options.acornOptions);\n  /** @type {Array<Comment>} */\n  const comments = [];\n  /** @type {Array<Token>} */\n  const tokens = [];\n  const onComment = acornOptions.onComment;\n  const onToken = acornOptions.onToken;\n  let swallow = false;\n  /** @type {AcornNode | undefined} */\n  let estree;\n  /** @type {AcornError | undefined} */\n  let exception;\n  /** @type {AcornOptions} */\n  const acornConfig = Object.assign({}, acornOptions, {\n    onComment: comments,\n    preserveParens: true\n  });\n  if (onToken) {\n    acornConfig.onToken = tokens;\n  }\n  const collection = collect(events, options.tokenTypes);\n  const source = collection.value;\n  const value = prefix + source + suffix;\n  const isEmptyExpression = options.expression && micromark_util_events_to_acorn_empty(source);\n  if (isEmptyExpression && !options.allowEmpty) {\n    throw new VFileMessage('Unexpected empty expression', {\n      place: parseOffsetToUnistPoint(0),\n      ruleId: 'unexpected-empty-expression',\n      source: 'micromark-extension-mdx-expression'\n    });\n  }\n  try {\n    estree = options.expression && !isEmptyExpression ? options.acorn.parseExpressionAt(value, 0, acornConfig) : options.acorn.parse(value, acornConfig);\n  } catch (error_) {\n    const error = /** @type {AcornError} */error_;\n    const point = parseOffsetToUnistPoint(error.pos);\n    error.message = String(error.message).replace(/ \\(\\d+:\\d+\\)$/, '');\n    // Always defined in our unist points that come from micromark.\n\n    error.pos = point.offset;\n    error.loc = {\n      line: point.line,\n      column: point.column - 1\n    };\n    exception = error;\n    swallow = error.raisedAt >= prefix.length + source.length ||\n    // Broken comments are raised at their start, not their end.\n    error.message === 'Unterminated comment';\n  }\n  if (estree && options.expression && !isEmptyExpression) {\n    if (micromark_util_events_to_acorn_empty(value.slice(estree.end, value.length - suffix.length))) {\n      estree = {\n        type: 'Program',\n        start: 0,\n        end: prefix.length + source.length,\n        // @ts-expect-error: It’s good.\n        body: [{\n          type: 'ExpressionStatement',\n          expression: estree,\n          start: 0,\n          end: prefix.length + source.length\n        }],\n        sourceType: 'module',\n        comments: []\n      };\n    } else {\n      const point = parseOffsetToUnistPoint(estree.end);\n      const error = /** @type {AcornError} */\n      new Error('Unexpected content after expression');\n      // Always defined in our unist points that come from micromark.\n\n      error.pos = point.offset;\n      error.loc = {\n        line: point.line,\n        column: point.column - 1\n      };\n      exception = error;\n      estree = undefined;\n    }\n  }\n  if (estree) {\n    // @ts-expect-error: acorn *does* allow comments\n    estree.comments = comments;\n\n    // @ts-expect-error: acorn looks enough like estree.\n    lib_visit(estree, function (esnode, field, index, parents) {\n      let context = /** @type {AcornNode | Array<AcornNode>} */\n      parents[parents.length - 1];\n      /** @type {number | string | undefined} */\n      let prop = field;\n\n      // Remove non-standard `ParenthesizedExpression`.\n      // @ts-expect-error: included in acorn.\n      if (esnode.type === 'ParenthesizedExpression' && context && prop) {\n        /* c8 ignore next 5 */\n        if (typeof index === 'number') {\n          // @ts-expect-error: indexable.\n          context = context[prop];\n          prop = index;\n        }\n\n        // @ts-expect-error: indexable.\n        context[prop] = esnode.expression;\n      }\n      fixPosition(esnode);\n    });\n\n    // Comment positions are fixed by `visit` because they’re in the tree.\n    if (Array.isArray(onComment)) {\n      onComment.push(...comments);\n    } else if (typeof onComment === 'function') {\n      for (const comment of comments) {\n        onComment(comment.type === 'Block', comment.value, comment.start, comment.end, comment.loc.start, comment.loc.end);\n      }\n    }\n    for (const token of tokens) {\n      // Ignore tokens that ends in prefix or start in suffix:\n      if (token.end <= prefix.length || token.start - prefix.length >= source.length) {\n        continue;\n      }\n      fixPosition(token);\n      if (Array.isArray(onToken)) {\n        onToken.push(token);\n      } else {\n        // `tokens` are not added if `onToken` is not defined, so it must be a\n        // function.\n\n        onToken(token);\n      }\n    }\n  }\n\n  // @ts-expect-error: It’s a program now.\n  return {\n    estree,\n    error: exception,\n    swallow\n  };\n\n  /**\n   * Update the position of a node.\n   *\n   * @param {AcornNode | EstreeNode | Token} nodeOrToken\n   * @returns {undefined}\n   */\n  function fixPosition(nodeOrToken) {\n    const pointStart = parseOffsetToUnistPoint(nodeOrToken.start);\n    const pointEnd = parseOffsetToUnistPoint(nodeOrToken.end);\n    // Always defined in our unist points that come from micromark.\n\n    nodeOrToken.start = pointStart.offset;\n    nodeOrToken.end = pointEnd.offset;\n    nodeOrToken.loc = {\n      start: {\n        line: pointStart.line,\n        column: pointStart.column - 1,\n        offset: pointStart.offset\n      },\n      end: {\n        line: pointEnd.line,\n        column: pointEnd.column - 1,\n        offset: pointEnd.offset\n      }\n    };\n    nodeOrToken.range = [nodeOrToken.start, nodeOrToken.end];\n  }\n\n  /**\n   * Turn an arbitrary offset into the parsed value, into a point in the source\n   * value.\n   *\n   * @param {number} acornOffset\n   * @returns {UnistPoint}\n   */\n  function parseOffsetToUnistPoint(acornOffset) {\n    let sourceOffset = acornOffset - prefix.length;\n    if (sourceOffset < 0) {\n      sourceOffset = 0;\n    } else if (sourceOffset > source.length) {\n      sourceOffset = source.length;\n    }\n    let point = relativeToPoint(collection.stops, sourceOffset);\n    if (!point) {\n      point = {\n        line: options.start.line,\n        column: options.start.column,\n        offset: options.start.offset\n      };\n    }\n    return point;\n  }\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction micromark_util_events_to_acorn_empty(value) {\n  return /^\\s*$/.test(value\n  // Multiline comments.\n  .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n  // Line comments.\n  // EOF instead of EOL is specifically not allowed, because that would\n  // mean the closing brace is on the commented-out line\n  .replace(/\\/\\/[^\\r\\n]*(\\r\\n|\\n|\\r)/g, ''));\n}\n\n// Port from <https://github.com/wooorm/markdown-rs/blob/e692ab0/src/util/mdx_collect.rs#L15>.\n/**\n * @param {Array<Event>} events\n * @param {Array<TokenType>} tokenTypes\n * @returns {Collection}\n */\nfunction collect(events, tokenTypes) {\n  /** @type {Collection} */\n  const result = {\n    value: '',\n    stops: []\n  };\n  let index = -1;\n  while (++index < events.length) {\n    const event = events[index];\n\n    // Assume void.\n    if (event[0] === 'enter') {\n      const type = event[1].type;\n      if (type === \"lineEnding\" || tokenTypes.includes(type)) {\n        const chunks = event[2].sliceStream(event[1]);\n\n        // Drop virtual spaces.\n        while (chunks.length > 0 && chunks[0] === -1) {\n          chunks.shift();\n        }\n        const value = micromark_util_events_to_acorn_serializeChunks(chunks);\n        result.stops.push([result.value.length, event[1].start]);\n        result.value += value;\n        result.stops.push([result.value.length, event[1].end]);\n      }\n    }\n  }\n  return result;\n}\n\n// Port from <https://github.com/wooorm/markdown-rs/blob/e692ab0/src/util/location.rs#L91>.\n/**\n * Turn a relative offset into an absolute offset.\n *\n * @param {Array<Stop>} stops\n * @param {number} relative\n * @returns {UnistPoint | undefined}\n */\nfunction relativeToPoint(stops, relative) {\n  let index = 0;\n  while (index < stops.length && stops[index][0] <= relative) {\n    index += 1;\n  }\n\n  // There are no points: that only occurs if there was an empty string.\n  if (index === 0) {\n    return undefined;\n  }\n  const [stopRelative, stopAbsolute] = stops[index - 1];\n  const rest = relative - stopRelative;\n  return {\n    line: stopAbsolute.line,\n    column: stopAbsolute.column + rest,\n    offset: stopAbsolute.offset + rest\n  };\n}\n\n// Copy from <https://github.com/micromark/micromark/blob/ce3593a/packages/micromark/dev/lib/create-tokenizer.js#L595>\n// To do: expose that?\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array<Chunk>} chunks\n * @returns {string}\n */\nfunction micromark_util_events_to_acorn_serializeChunks(chunks) {\n  let index = -1;\n  /** @type {Array<string>} */\n  const result = [];\n  /** @type {boolean | undefined} */\n  let atTab;\n  while (++index < chunks.length) {\n    const chunk = chunks[index];\n    /** @type {string} */\n    let value;\n    if (typeof chunk === 'string') {\n      value = chunk;\n    } else switch (chunk) {\n      case -5:\n        {\n          value = \"\\r\";\n          break;\n        }\n      case -4:\n        {\n          value = \"\\n\";\n          break;\n        }\n      case -3:\n        {\n          value = \"\\r\" + \"\\n\";\n          break;\n        }\n      case -2:\n        {\n          value = \"\\t\";\n          break;\n        }\n\n      /* c8 ignore next 6 */\n      case -1:\n        {\n          if (atTab) continue;\n          value = \" \";\n          break;\n        }\n      default:\n        {\n          // Currently only replacement character.\n          // eslint-disable-next-line unicorn/prefer-code-point\n          value = String.fromCharCode(chunk);\n        }\n    }\n    atTab = chunk === -2;\n    result.push(value);\n  }\n  return result.join('');\n}\n;// ./node_modules/unist-util-position-from-estree/lib/index.js\n/**\n * @typedef {import('unist').Point} UnistPoint\n * @typedef {import('unist').Position} UnistPosition\n */\n\n/**\n * @typedef {[start: number | null | undefined, end: number | null | undefined]} RangeLike\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n *\n * @typedef LocLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {LocLike | null | undefined} [loc]\n * @property {RangeLike | null | undefined} [range]\n * @property {number | null | undefined} [start]\n * @property {number | null | undefined} [end]\n */\n\n/**\n * Turn an estree `node` into a unist `position`.\n *\n * @param {NodeLike | null | undefined} [node]\n *   estree node.\n * @returns {UnistPosition | undefined}\n *   unist position.\n */\nfunction positionFromEstree(node) {\n  const nodeLike = node || {}\n  const loc = nodeLike.loc || {}\n  const range = nodeLike.range || [undefined, undefined]\n  const start = pointOrUndefined(loc.start, range[0] || nodeLike.start)\n  const end = pointOrUndefined(loc.end, range[1] || nodeLike.end)\n\n  if (start && end) {\n    return {start, end}\n  }\n}\n\n/**\n * @param {unknown} estreePoint\n *   estree point.\n * @param {unknown} estreeOffset\n *  estree offset.\n * @returns {UnistPoint | undefined}\n *   unist point.\n */\nfunction pointOrUndefined(estreePoint, estreeOffset) {\n  if (estreePoint && typeof estreePoint === 'object') {\n    const line =\n      'line' in estreePoint ? numberOrUndefined(estreePoint.line) : undefined\n    const column =\n      'column' in estreePoint\n        ? numberOrUndefined(estreePoint.column)\n        : undefined\n\n    if (line && column !== undefined) {\n      return {\n        line,\n        column: column + 1,\n        offset: numberOrUndefined(estreeOffset)\n      }\n    }\n  }\n}\n\n/**\n * @param {unknown} value\n * @returns {number | undefined}\n */\nfunction numberOrUndefined(value) {\n  return typeof value === 'number' && value > -1 ? value : undefined\n}\n\n;// ./node_modules/micromark-factory-mdx-expression/index.js\n/**\n * @typedef {import('estree').Program} Program\n * @typedef {import('micromark-util-events-to-acorn').Acorn} Acorn\n * @typedef {import('micromark-util-events-to-acorn').AcornOptions} AcornOptions\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @typedef MdxSignalOk\n *   Good result.\n * @property {'ok'} type\n *   Type.\n * @property {Program | undefined} estree\n *   Value.\n *\n * @typedef MdxSignalNok\n *   Bad result.\n * @property {'nok'} type\n *   Type.\n * @property {VFileMessage} message\n *   Value.\n *\n * @typedef {MdxSignalNok | MdxSignalOk} MdxSignal\n */\n\n\n\n\n\nconst trouble =\n  'https://github.com/micromark/micromark-extension-mdx-expression/tree/main/packages/micromark-extension-mdx-expression'\nconst unexpectedEofHash =\n  '#unexpected-end-of-file-in-expression-expected-a-corresponding-closing-brace-for-'\nconst unexpectedLazyHash =\n  '#unexpected-lazy-line-in-expression-in-container-expected-line-to-be-prefixed'\nconst nonSpreadHash =\n  '#unexpected-type-in-code-expected-an-object-spread-spread'\nconst spreadExtraHash =\n  '#unexpected-extra-content-in-spread-only-a-single-spread-is-supported'\nconst acornHash = '#could-not-parse-expression-with-acorn'\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful\n * @param {TokenType} type\n *   Token type for whole (`{}`).\n * @param {TokenType} markerType\n *   Token type for the markers (`{`, `}`).\n * @param {TokenType} chunkType\n *   Token type for the value (`1`).\n * @param {Acorn | null | undefined} [acorn]\n *   Object with `acorn.parse` and `acorn.parseExpressionAt`.\n * @param {AcornOptions | null | undefined} [acornOptions]\n *   Configuration for acorn.\n * @param {boolean | null | undefined} [addResult=false]\n *   Add `estree` to token (default: `false`).\n * @param {boolean | null | undefined} [spread=false]\n *   Support a spread (`{...a}`) only (default: `false`).\n * @param {boolean | null | undefined} [allowEmpty=false]\n *   Support an empty expression (default: `false`).\n * @param {boolean | null | undefined} [allowLazy=false]\n *   Support lazy continuation of an expression (default: `false`).\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nfunction factoryMdxExpression(\n  effects,\n  ok,\n  type,\n  markerType,\n  chunkType,\n  acorn,\n  acornOptions,\n  addResult,\n  spread,\n  allowEmpty,\n  allowLazy\n) {\n  const self = this\n  const eventStart = this.events.length + 3 // Add main and marker token\n  let size = 0\n  /** @type {Point} */\n  let pointStart\n  /** @type {Error} */\n  let lastCrash\n  return start\n\n  /**\n   * Start of an MDX expression.\n   *\n   * ```markdown\n   * > | a {Math.PI} c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    pointStart = self.now()\n    return before\n  }\n\n  /**\n   * Before data.\n   *\n   * ```markdown\n   * > | a {Math.PI} c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    if (code === null) {\n      if (lastCrash) throw lastCrash\n      const error = new VFileMessage(\n        'Unexpected end of file in expression, expected a corresponding closing brace for `{`',\n        {\n          place: self.now(),\n          ruleId: 'unexpected-eof',\n          source: 'micromark-extension-mdx-expression'\n        }\n      )\n      error.url = trouble + unexpectedEofHash\n      throw error\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return eolAfter\n    }\n    if (code === 125 && size === 0) {\n      /** @type {MdxSignal} */\n      const next = acorn\n        ? mdxExpressionParse.call(\n            self,\n            acorn,\n            acornOptions,\n            chunkType,\n            eventStart,\n            pointStart,\n            allowEmpty || false,\n            spread || false\n          )\n        : {\n            type: 'ok',\n            estree: undefined\n          }\n      if (next.type === 'ok') {\n        effects.enter(markerType)\n        effects.consume(code)\n        effects.exit(markerType)\n        const token = effects.exit(type)\n        if (addResult && next.estree) {\n          Object.assign(token, {\n            estree: next.estree\n          })\n        }\n        return ok\n      }\n      lastCrash = next.message\n      effects.enter(chunkType)\n      effects.consume(code)\n      return inside\n    }\n    effects.enter(chunkType)\n    return inside(code)\n  }\n\n  /**\n   * In data.\n   *\n   * ```markdown\n   * > | a {Math.PI} c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (\n      (code === 125 && size === 0) ||\n      code === null ||\n      markdownLineEnding(code)\n    ) {\n      effects.exit(chunkType)\n      return before(code)\n    }\n\n    // Don’t count if gnostic.\n    if (code === 123 && !acorn) {\n      size += 1\n    } else if (code === 125) {\n      size -= 1\n    }\n    effects.consume(code)\n    return inside\n  }\n\n  /**\n   * After eol.\n   *\n   * ```markdown\n   *   | a {b +\n   * > | c} d\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function eolAfter(code) {\n    const now = self.now()\n\n    // Lazy continuation in a flow expression (or flow tag) is a syntax error.\n    if (\n      now.line !== pointStart.line &&\n      !allowLazy &&\n      self.parser.lazy[now.line]\n    ) {\n      const error = new VFileMessage(\n        'Unexpected lazy line in expression in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc',\n        {\n          place: self.now(),\n          ruleId: 'unexpected-lazy',\n          source: 'micromark-extension-mdx-expression'\n        }\n      )\n      error.url = trouble + unexpectedLazyHash\n      throw error\n    }\n\n    // Idea: investigate if we’d need to use more complex stripping.\n    // Take this example:\n    //\n    // ```markdown\n    // >  aaa <b c={`\n    // >      d\n    // >  `} /> eee\n    // ```\n    //\n    // The block quote takes one space from each line, the paragraph doesn’t.\n    // The intent above is *perhaps* for the split to be as `>␠␠|␠␠␠␠|d`,\n    // Currently, we *don’t* do anything at all, it’s `>␠|␠␠␠␠␠|d` instead.\n    //\n    // Note: we used to have some handling here, and `markdown-rs` still does,\n    // which should be removed.\n    return before(code)\n  }\n}\n\n/**\n * Mix of `markdown-rs`’s `parse_expression` and `MdxExpressionParse`\n * functionality, to wrap our `eventsToAcorn`.\n *\n * In the future, the plan is to realise the rust way, which allows arbitrary\n * parsers.\n *\n * @this {TokenizeContext}\n * @param {Acorn} acorn\n * @param {AcornOptions | null | undefined} acornOptions\n * @param {TokenType} chunkType\n * @param {number} eventStart\n * @param {Point} pointStart\n * @param {boolean} allowEmpty\n * @param {boolean} spread\n * @returns {MdxSignal}\n */\n// eslint-disable-next-line max-params\nfunction mdxExpressionParse(\n  acorn,\n  acornOptions,\n  chunkType,\n  eventStart,\n  pointStart,\n  allowEmpty,\n  spread\n) {\n  // Gnostic mode: parse w/ acorn.\n  const result = eventsToAcorn(this.events.slice(eventStart), {\n    acorn,\n    tokenTypes: [chunkType],\n    acornOptions,\n    start: pointStart,\n    expression: true,\n    allowEmpty,\n    prefix: spread ? '({' : '',\n    suffix: spread ? '})' : ''\n  })\n  const estree = result.estree\n\n  // Get the spread value.\n  if (spread && estree) {\n    // Should always be the case as we wrap in `d={}`\n\n    const head = estree.body[0]\n    if (\n      head.type !== 'ExpressionStatement' ||\n      head.expression.type !== 'ObjectExpression'\n    ) {\n      const place = positionFromEstree(head)\n      const error = new VFileMessage(\n        'Unexpected `' +\n          head.type +\n          '` in code: expected an object spread (`{...spread}`)',\n        {\n          place: place.start,\n          ruleId: 'non-spread',\n          source: 'micromark-extension-mdx-expression'\n        }\n      )\n      error.url = trouble + nonSpreadHash\n      throw error\n    }\n    if (head.expression.properties[1]) {\n      const place = positionFromEstree(head.expression.properties[1])\n      const error = new VFileMessage(\n        'Unexpected extra content in spread: only a single spread is supported',\n        {\n          place: place.start,\n          ruleId: 'spread-extra',\n          source: 'micromark-extension-mdx-expression'\n        }\n      )\n      error.url = trouble + spreadExtraHash\n      throw error\n    }\n    if (\n      head.expression.properties[0] &&\n      head.expression.properties[0].type !== 'SpreadElement'\n    ) {\n      const place = positionFromEstree(head.expression.properties[0])\n      const error = new VFileMessage(\n        'Unexpected `' +\n          head.expression.properties[0].type +\n          '` in code: only spread elements are supported',\n        {\n          place: place.start,\n          ruleId: 'non-spread',\n          source: 'micromark-extension-mdx-expression'\n        }\n      )\n      error.url = trouble + nonSpreadHash\n      throw error\n    }\n  }\n  if (result.error) {\n    const error = new VFileMessage('Could not parse expression with acorn', {\n      cause: result.error,\n      place: {\n        line: result.error.loc.line,\n        column: result.error.loc.column + 1,\n        offset: result.error.pos\n      },\n      ruleId: 'acorn',\n      source: 'micromark-extension-mdx-expression'\n    })\n    error.url = trouble + acornHash\n    return {\n      type: 'nok',\n      message: error\n    }\n  }\n  return {\n    type: 'ok',\n    estree\n  }\n}\n\n;// ./node_modules/micromark-extension-mdx-expression/lib/syntax.js\n/**\n * @import {Options} from 'micromark-extension-mdx-expression'\n * @import {AcornOptions} from 'micromark-util-events-to-acorn'\n * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n\n\n\n/**\n * Create an extension for `micromark` to enable MDX expression syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable MDX\n *   expression syntax.\n */\nfunction mdxExpression(options) {\n  const options_ = options || {};\n  const addResult = options_.addResult;\n  const acorn = options_.acorn;\n  // Hidden: `micromark-extension-mdx-jsx` supports expressions in tags,\n  // and one of them is only “spread” elements.\n  // It also has expressions that are not allowed to be empty (`<x y={}/>`).\n  // Instead of duplicating code there, this are two small hidden feature here\n  // to test that behavior.\n  const spread = options_.spread;\n  let allowEmpty = options_.allowEmpty;\n  /** @type {AcornOptions} */\n  let acornOptions;\n  if (allowEmpty === null || allowEmpty === undefined) {\n    allowEmpty = true;\n  }\n  if (acorn) {\n    if (!acorn.parseExpressionAt) {\n      throw new Error('Expected a proper `acorn` instance passed in as `options.acorn`');\n    }\n    acornOptions = Object.assign({\n      ecmaVersion: 2024,\n      sourceType: 'module'\n    }, options_.acornOptions);\n  } else if (options_.acornOptions || options_.addResult) {\n    throw new Error('Expected an `acorn` instance passed in as `options.acorn`');\n  }\n  return {\n    flow: {\n      [123]: {\n        name: 'mdxFlowExpression',\n        tokenize: tokenizeFlowExpression,\n        concrete: true\n      }\n    },\n    text: {\n      [123]: {\n        name: 'mdxTextExpression',\n        tokenize: tokenizeTextExpression\n      }\n    }\n  };\n\n  /**\n   * MDX expression (flow).\n   *\n   * ```markdown\n   * > | {Math.PI}\n   *     ^^^^^^^^^\n   * ```\n   *\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeFlowExpression(effects, ok, nok) {\n    const self = this;\n    return start;\n\n    /**\n     * Start of an MDX expression (flow).\n     *\n     * ```markdown\n     * > | {Math.PI}\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // To do: in `markdown-rs`, constructs need to parse the indent themselves.\n      // This should also be introduced in `micromark-js`.\n\n      return before(code);\n    }\n\n    /**\n     * After optional whitespace, before expression.\n     *\n     * ```markdown\n     * > | {Math.PI}\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function before(code) {\n      return factoryMdxExpression.call(self, effects, after, 'mdxFlowExpression', 'mdxFlowExpressionMarker', 'mdxFlowExpressionChunk', acorn, acornOptions, addResult, spread, allowEmpty)(code);\n    }\n\n    /**\n     * After expression.\n     *\n     * ```markdown\n     * > | {Math.PI}\n     *              ^\n     * ```\n     *\n     * @type {State}\n     */\n    function after(code) {\n      return markdownSpace(code) ? factorySpace(effects, end, \"whitespace\")(code) : end(code);\n    }\n\n    /**\n     * After expression, after optional whitespace.\n     *\n     * ```markdown\n     * > | {Math.PI}␠␊\n     *               ^\n     * ```\n     *\n     * @type {State}\n     */\n    function end(code) {\n      // We want to allow tags directly after expressions.\n      //\n      // This case is useful:\n      //\n      // ```mdx\n      // <a>{b}</a>\n      // ```\n      //\n      // This case is not (very?) useful:\n      //\n      // ```mdx\n      // {a}<b/>\n      // ```\n      //\n      // …but it would be tougher than needed to disallow.\n      //\n      // To allow that, here we call the flow construct of\n      // `micromark-extension-mdx-jsx`, and there we call this one.\n      //\n      // It would introduce a cyclical interdependency if we test JSX and\n      // expressions here.\n      // Because the JSX extension already uses parts of this monorepo, we\n      // instead test it there.\n      const lessThanValue = self.parser.constructs.flow[60];\n      const constructs = Array.isArray(lessThanValue) ? lessThanValue : /* c8 ignore next 3 -- always a list when normalized. */\n      lessThanValue ? [lessThanValue] : [];\n      const jsxTag = constructs.find(function (d) {\n        return d.name === 'mdxJsxFlowTag';\n      });\n\n      /* c8 ignore next 3 -- this is tested in `micromark-extension-mdx-jsx` */\n      if (code === 60 && jsxTag) {\n        return effects.attempt(jsxTag, end, nok)(code);\n      }\n      return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n    }\n  }\n\n  /**\n   * MDX expression (text).\n   *\n   * ```markdown\n   * > | a {Math.PI} c.\n   *       ^^^^^^^^^\n   * ```\n   *\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeTextExpression(effects, ok) {\n    const self = this;\n    return start;\n\n    /**\n     * Start of an MDX expression (text).\n     *\n     * ```markdown\n     * > | a {Math.PI} c.\n     *       ^\n     * ```\n     *\n     *\n     * @type {State}\n     */\n    function start(code) {\n      return factoryMdxExpression.call(self, effects, ok, 'mdxTextExpression', 'mdxTextExpressionMarker', 'mdxTextExpressionChunk', acorn, acornOptions, addResult, spread, allowEmpty, true)(code);\n    }\n  }\n}\n;// ./node_modules/estree-util-is-identifier-name/lib/index.js\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n *   Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst estree_util_is_identifier_name_lib_emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @returns {boolean}\n *   Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nfunction lib_start(code) {\n  return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nfunction cont(code, options) {\n  const settings = options || estree_util_is_identifier_name_lib_emptyOptions\n  const re = settings.jsx ? contReJsx : contRe\n  return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n *   Identifier to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `name` can be an identifier.\n */\nfunction lib_name(name, options) {\n  const settings = options || estree_util_is_identifier_name_lib_emptyOptions\n  const re = settings.jsx ? nameReJsx : nameRe\n  return re.test(name)\n}\n\n;// ./node_modules/micromark-extension-mdx-jsx/lib/factory-tag.js\n/**\n * @typedef {import('micromark-factory-mdx-expression').Acorn} Acorn\n * @typedef {import('micromark-factory-mdx-expression').AcornOptions} AcornOptions\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\n\n\n\n\nconst factory_tag_trouble = 'https://github.com/micromark/micromark-extension-mdx-jsx';\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {Acorn | undefined} acorn\n * @param {AcornOptions | undefined} acornOptions\n * @param {boolean | undefined} addResult\n * @param {boolean | undefined} allowLazy\n * @param {TokenType} tagType\n * @param {TokenType} tagMarkerType\n * @param {TokenType} tagClosingMarkerType\n * @param {TokenType} tagSelfClosingMarker\n * @param {TokenType} tagNameType\n * @param {TokenType} tagNamePrimaryType\n * @param {TokenType} tagNameMemberMarkerType\n * @param {TokenType} tagNameMemberType\n * @param {TokenType} tagNamePrefixMarkerType\n * @param {TokenType} tagNameLocalType\n * @param {TokenType} tagExpressionAttributeType\n * @param {TokenType} tagExpressionAttributeMarkerType\n * @param {TokenType} tagExpressionAttributeValueType\n * @param {TokenType} tagAttributeType\n * @param {TokenType} tagAttributeNameType\n * @param {TokenType} tagAttributeNamePrimaryType\n * @param {TokenType} tagAttributeNamePrefixMarkerType\n * @param {TokenType} tagAttributeNameLocalType\n * @param {TokenType} tagAttributeInitializerMarkerType\n * @param {TokenType} tagAttributeValueLiteralType\n * @param {TokenType} tagAttributeValueLiteralMarkerType\n * @param {TokenType} tagAttributeValueLiteralValueType\n * @param {TokenType} tagAttributeValueExpressionType\n * @param {TokenType} tagAttributeValueExpressionMarkerType\n * @param {TokenType} tagAttributeValueExpressionValueType\n */\n// eslint-disable-next-line max-params\nfunction factoryTag(effects, ok, nok, acorn, acornOptions, addResult, allowLazy, tagType, tagMarkerType, tagClosingMarkerType, tagSelfClosingMarker, tagNameType, tagNamePrimaryType, tagNameMemberMarkerType, tagNameMemberType, tagNamePrefixMarkerType, tagNameLocalType, tagExpressionAttributeType, tagExpressionAttributeMarkerType, tagExpressionAttributeValueType, tagAttributeType, tagAttributeNameType, tagAttributeNamePrimaryType, tagAttributeNamePrefixMarkerType, tagAttributeNameLocalType, tagAttributeInitializerMarkerType, tagAttributeValueLiteralType, tagAttributeValueLiteralMarkerType, tagAttributeValueLiteralValueType, tagAttributeValueExpressionType, tagAttributeValueExpressionMarkerType, tagAttributeValueExpressionValueType) {\n  const self = this;\n  /** @type {State} */\n  let returnState;\n  /** @type {NonNullable<Code> | undefined} */\n  let marker;\n  return start;\n\n  /**\n   * Start of MDX: JSX.\n   *\n   * ```markdown\n   * > | a <B /> c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(tagType);\n    effects.enter(tagMarkerType);\n    effects.consume(code);\n    effects.exit(tagMarkerType);\n    return startAfter;\n  }\n\n  /**\n   * After `<`.\n   *\n   * ```markdown\n   * > | a <B /> c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function startAfter(code) {\n    // Deviate from JSX, which allows arbitrary whitespace.\n    // See: <https://github.com/micromark/micromark-extension-mdx-jsx/issues/7>.\n    if (markdownLineEndingOrSpace(code)) {\n      return nok(code);\n    }\n\n    // Any other ES whitespace does not get this treatment.\n    returnState = nameBefore;\n    return esWhitespaceStart(code);\n  }\n\n  /**\n   * Before name, self slash, or end of tag for fragments.\n   *\n   * ```markdown\n   * > | a <B> c\n   *        ^\n   * > | a </B> c\n   *        ^\n   * > | a <> b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function nameBefore(code) {\n    // Closing tag.\n    if (code === 47) {\n      effects.enter(tagClosingMarkerType);\n      effects.consume(code);\n      effects.exit(tagClosingMarkerType);\n      returnState = closingTagNameBefore;\n      return esWhitespaceStart;\n    }\n\n    // Fragment opening tag.\n    if (code === 62) {\n      return tagEnd(code);\n    }\n\n    // Start of a name.\n    if (code !== null && code >= 0 && lib_start(code)) {\n      effects.enter(tagNameType);\n      effects.enter(tagNamePrimaryType);\n      effects.consume(code);\n      return primaryName;\n    }\n    crash(code, 'before name', 'a character that can start a name, such as a letter, `$`, or `_`' + (code === 33 ? ' (note: to create a comment in MDX, use `{/* text */}`)' : ''));\n  }\n\n  /**\n   * Before name of closing tag or end of closing fragment tag.\n   *\n   * ```markdown\n   * > | a </> b\n   *         ^\n   * > | a </B> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function closingTagNameBefore(code) {\n    // Fragment closing tag.\n    if (code === 62) {\n      return tagEnd(code);\n    }\n\n    // Start of a closing tag name.\n    if (code !== null && code >= 0 && lib_start(code)) {\n      effects.enter(tagNameType);\n      effects.enter(tagNamePrimaryType);\n      effects.consume(code);\n      return primaryName;\n    }\n    crash(code, 'before name', 'a character that can start a name, such as a letter, `$`, or `_`' + (code === 42 || code === 47 ? ' (note: JS comments in JSX tags are not supported in MDX)' : ''));\n  }\n\n  /**\n   * In primary name.\n   *\n   * ```markdown\n   * > | a <Bc> d\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function primaryName(code) {\n    // Continuation of name: remain.\n    if (code !== null && code >= 0 && cont(code, {\n      jsx: true\n    })) {\n      effects.consume(code);\n      return primaryName;\n    }\n\n    // End of name.\n    if (code === 46 || code === 47 || code === 58 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      effects.exit(tagNamePrimaryType);\n      returnState = primaryNameAfter;\n      return esWhitespaceStart(code);\n    }\n    crash(code, 'in name', 'a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag' + (code === 64 ? ' (note: to create a link in MDX, use `[text](url)`)' : ''));\n  }\n\n  /**\n   * After primary name.\n   *\n   * ```markdown\n   * > | a <b.c> d\n   *         ^\n   * > | a <b:c> d\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function primaryNameAfter(code) {\n    // Start of a member name.\n    if (code === 46) {\n      effects.enter(tagNameMemberMarkerType);\n      effects.consume(code);\n      effects.exit(tagNameMemberMarkerType);\n      returnState = memberNameBefore;\n      return esWhitespaceStart;\n    }\n\n    // Start of a local name.\n    if (code === 58) {\n      effects.enter(tagNamePrefixMarkerType);\n      effects.consume(code);\n      effects.exit(tagNamePrefixMarkerType);\n      returnState = localNameBefore;\n      return esWhitespaceStart;\n    }\n\n    // End of name.\n    if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) {\n      effects.exit(tagNameType);\n      return attributeBefore(code);\n    }\n    crash(code, 'after name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag');\n  }\n\n  /**\n   * Before member name.\n   *\n   * ```markdown\n   * > | a <b.c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function memberNameBefore(code) {\n    // Start of a member name.\n    if (code !== null && code >= 0 && lib_start(code)) {\n      effects.enter(tagNameMemberType);\n      effects.consume(code);\n      return memberName;\n    }\n    crash(code, 'before member name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag');\n  }\n\n  /**\n   * In member name.\n   *\n   * ```markdown\n   * > | a <b.cd> e\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function memberName(code) {\n    // Continuation of name: remain.\n    if (code !== null && code >= 0 && cont(code, {\n      jsx: true\n    })) {\n      effects.consume(code);\n      return memberName;\n    }\n\n    // End of name.\n    // Note: no `:` allowed here.\n    if (code === 46 || code === 47 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      effects.exit(tagNameMemberType);\n      returnState = memberNameAfter;\n      return esWhitespaceStart(code);\n    }\n    crash(code, 'in member name', 'a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag' + (code === 64 ? ' (note: to create a link in MDX, use `[text](url)`)' : ''));\n  }\n\n  /**\n   * After member name.\n   *\n   * ```markdown\n   * > | a <b.c> d\n   *           ^\n   * > | a <b.c.d> e\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function memberNameAfter(code) {\n    // Start another member name.\n    if (code === 46) {\n      effects.enter(tagNameMemberMarkerType);\n      effects.consume(code);\n      effects.exit(tagNameMemberMarkerType);\n      returnState = memberNameBefore;\n      return esWhitespaceStart;\n    }\n\n    // End of name.\n    if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) {\n      effects.exit(tagNameType);\n      return attributeBefore(code);\n    }\n    crash(code, 'after member name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag');\n  }\n\n  /**\n   * Local member name.\n   *\n   * ```markdown\n   * > | a <b:c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function localNameBefore(code) {\n    // Start of a local name.\n    if (code !== null && code >= 0 && lib_start(code)) {\n      effects.enter(tagNameLocalType);\n      effects.consume(code);\n      return localName;\n    }\n    crash(code, 'before local name', 'a character that can start a name, such as a letter, `$`, or `_`' + (code === 43 || code !== null && code > 46 && code < 58 /* `/` - `9` */ ? ' (note: to create a link in MDX, use `[text](url)`)' : ''));\n  }\n\n  /**\n   * In local name.\n   *\n   * ```markdown\n   * > | a <b:cd> e\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function localName(code) {\n    // Continuation of name: remain.\n    if (code !== null && code >= 0 && cont(code, {\n      jsx: true\n    })) {\n      effects.consume(code);\n      return localName;\n    }\n\n    // End of local name (note that we don’t expect another colon, or a member).\n    if (code === 47 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      effects.exit(tagNameLocalType);\n      returnState = localNameAfter;\n      return esWhitespaceStart(code);\n    }\n    crash(code, 'in local name', 'a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag');\n  }\n\n  /**\n   * After local name.\n   *\n   * This is like as `primary_name_after`, but we don’t expect colons or\n   * periods.\n   *\n   * ```markdown\n   * > | a <b.c> d\n   *           ^\n   * > | a <b.c.d> e\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function localNameAfter(code) {\n    // End of name.\n    if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) {\n      effects.exit(tagNameType);\n      return attributeBefore(code);\n    }\n    crash(code, 'after local name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag');\n  }\n\n  /**\n   * Before attribute.\n   *\n   * ```markdown\n   * > | a <b /> c\n   *          ^\n   * > | a <b > c\n   *          ^\n   * > | a <b {...c}> d\n   *          ^\n   * > | a <b c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributeBefore(code) {\n    // Self-closing.\n    if (code === 47) {\n      effects.enter(tagSelfClosingMarker);\n      effects.consume(code);\n      effects.exit(tagSelfClosingMarker);\n      returnState = selfClosing;\n      return esWhitespaceStart;\n    }\n\n    // End of tag.\n    if (code === 62) {\n      return tagEnd(code);\n    }\n\n    // Attribute expression.\n    if (code === 123) {\n      return factoryMdxExpression.call(self, effects, attributeExpressionAfter, tagExpressionAttributeType, tagExpressionAttributeMarkerType, tagExpressionAttributeValueType, acorn, acornOptions, addResult, true, false, allowLazy)(code);\n    }\n\n    // Start of an attribute name.\n    if (code !== null && code >= 0 && lib_start(code)) {\n      effects.enter(tagAttributeType);\n      effects.enter(tagAttributeNameType);\n      effects.enter(tagAttributeNamePrimaryType);\n      effects.consume(code);\n      return attributePrimaryName;\n    }\n    crash(code, 'before attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag');\n  }\n\n  /**\n   * After attribute expression.\n   *\n   * ```markdown\n   * > | a <b {c} d/> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributeExpressionAfter(code) {\n    returnState = attributeBefore;\n    return esWhitespaceStart(code);\n  }\n\n  /**\n   * In primary attribute name.\n   *\n   * ```markdown\n   * > | a <b cd/> e\n   *           ^\n   * > | a <b c:d> e\n   *           ^\n   * > | a <b c=d> e\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributePrimaryName(code) {\n    // Continuation of name: remain.\n    if (code !== null && code >= 0 && cont(code, {\n      jsx: true\n    })) {\n      effects.consume(code);\n      return attributePrimaryName;\n    }\n\n    // End of attribute name or tag.\n    if (code === 47 || code === 58 || code === 61 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      effects.exit(tagAttributeNamePrimaryType);\n      returnState = attributePrimaryNameAfter;\n      return esWhitespaceStart(code);\n    }\n    crash(code, 'in attribute name', 'an attribute name character such as letters, digits, `$`, or `_`; `=` to initialize a value; whitespace before attributes; or the end of the tag');\n  }\n\n  /**\n   * After primary attribute name.\n   *\n   * ```markdown\n   * > | a <b c/> d\n   *           ^\n   * > | a <b c:d> e\n   *           ^\n   * > | a <b c=d> e\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributePrimaryNameAfter(code) {\n    // Start of a local name.\n    if (code === 58) {\n      effects.enter(tagAttributeNamePrefixMarkerType);\n      effects.consume(code);\n      effects.exit(tagAttributeNamePrefixMarkerType);\n      returnState = attributeLocalNameBefore;\n      return esWhitespaceStart;\n    }\n\n    // Initializer: start of an attribute value.\n    if (code === 61) {\n      effects.exit(tagAttributeNameType);\n      effects.enter(tagAttributeInitializerMarkerType);\n      effects.consume(code);\n      effects.exit(tagAttributeInitializerMarkerType);\n      returnState = attributeValueBefore;\n      return esWhitespaceStart;\n    }\n\n    // End of tag / new attribute.\n    if (code === 47 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== null && code >= 0 && lib_start(code)) {\n      effects.exit(tagAttributeNameType);\n      effects.exit(tagAttributeType);\n      returnState = attributeBefore;\n      return esWhitespaceStart(code);\n    }\n    crash(code, 'after attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; `=` to initialize a value; or the end of the tag');\n  }\n\n  /**\n   * Before local attribute name.\n   *\n   * ```markdown\n   * > | a <b c:d/> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributeLocalNameBefore(code) {\n    // Start of a local name.\n    if (code !== null && code >= 0 && lib_start(code)) {\n      effects.enter(tagAttributeNameLocalType);\n      effects.consume(code);\n      return attributeLocalName;\n    }\n    crash(code, 'before local attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; `=` to initialize a value; or the end of the tag');\n  }\n\n  /**\n   * In local attribute name.\n   *\n   * ```markdown\n   * > | a <b c:de/> f\n   *             ^\n   * > | a <b c:d=e/> f\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributeLocalName(code) {\n    // Continuation of name: remain.\n    if (code !== null && code >= 0 && cont(code, {\n      jsx: true\n    })) {\n      effects.consume(code);\n      return attributeLocalName;\n    }\n\n    // End of local name (note that we don’t expect another colon).\n    if (code === 47 || code === 61 || code === 62 || code === 123 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      effects.exit(tagAttributeNameLocalType);\n      effects.exit(tagAttributeNameType);\n      returnState = attributeLocalNameAfter;\n      return esWhitespaceStart(code);\n    }\n    crash(code, 'in local attribute name', 'an attribute name character such as letters, digits, `$`, or `_`; `=` to initialize a value; whitespace before attributes; or the end of the tag');\n  }\n\n  /**\n   * After local attribute name.\n   *\n   * ```markdown\n   * > | a <b c:d/> f\n   *             ^\n   * > | a <b c:d=e/> f\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributeLocalNameAfter(code) {\n    // Start of an attribute value.\n    if (code === 61) {\n      effects.enter(tagAttributeInitializerMarkerType);\n      effects.consume(code);\n      effects.exit(tagAttributeInitializerMarkerType);\n      returnState = attributeValueBefore;\n      return esWhitespaceStart;\n    }\n\n    // End of name.\n    if (code === 47 || code === 62 || code === 123 || code !== null && code >= 0 && lib_start(code)) {\n      effects.exit(tagAttributeType);\n      return attributeBefore(code);\n    }\n    crash(code, 'after local attribute name', 'a character that can start an attribute name, such as a letter, `$`, or `_`; `=` to initialize a value; or the end of the tag');\n  }\n\n  /**\n   * After `=`, before value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"/> e\n   *            ^\n   * > | a <b c={d}/> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributeValueBefore(code) {\n    // Start of double- or single quoted value.\n    if (code === 34 || code === 39) {\n      effects.enter(tagAttributeValueLiteralType);\n      effects.enter(tagAttributeValueLiteralMarkerType);\n      effects.consume(code);\n      effects.exit(tagAttributeValueLiteralMarkerType);\n      marker = code;\n      return attributeValueQuotedStart;\n    }\n\n    // Attribute value expression.\n    if (code === 123) {\n      return factoryMdxExpression.call(self, effects, attributeValueExpressionAfter, tagAttributeValueExpressionType, tagAttributeValueExpressionMarkerType, tagAttributeValueExpressionValueType, acorn, acornOptions, addResult, false, false, allowLazy)(code);\n    }\n    crash(code, 'before attribute value', 'a character that can start an attribute value, such as `\"`, `\\'`, or `{`' + (code === 60 ? ' (note: to use an element or fragment as a prop value in MDX, use `{<element />}`)' : ''));\n  }\n\n  /**\n   * After attribute value expression.\n   *\n   * ```markdown\n   * > | a <b c={d} e/> f\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributeValueExpressionAfter(code) {\n    effects.exit(tagAttributeType);\n    returnState = attributeBefore;\n    return esWhitespaceStart(code);\n  }\n\n  /**\n   * Before quoted literal attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"/> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributeValueQuotedStart(code) {\n    if (code === null) {\n      crash(code, 'in attribute value', 'a corresponding closing quote `' + String.fromCodePoint(marker) + '`');\n    }\n    if (code === marker) {\n      effects.enter(tagAttributeValueLiteralMarkerType);\n      effects.consume(code);\n      effects.exit(tagAttributeValueLiteralMarkerType);\n      effects.exit(tagAttributeValueLiteralType);\n      effects.exit(tagAttributeType);\n      marker = undefined;\n      returnState = attributeBefore;\n      return esWhitespaceStart;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = attributeValueQuotedStart;\n      return esWhitespaceStart(code);\n    }\n    effects.enter(tagAttributeValueLiteralValueType);\n    return attributeValueQuoted(code);\n  }\n\n  /**\n   * In quoted literal attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"/> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function attributeValueQuoted(code) {\n    if (code === null || code === marker || markdownLineEnding(code)) {\n      effects.exit(tagAttributeValueLiteralValueType);\n      return attributeValueQuotedStart(code);\n    }\n    effects.consume(code);\n    return attributeValueQuoted;\n  }\n\n  /**\n   * After self-closing slash.\n   *\n   * ```markdown\n   * > | a <b/> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function selfClosing(code) {\n    if (code === 62) {\n      return tagEnd(code);\n    }\n    crash(code, 'after self-closing slash', '`>` to end the tag' + (code === 42 || code === 47 ? ' (note: JS comments in JSX tags are not supported in MDX)' : ''));\n  }\n\n  /**\n   * At final `>`.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagEnd(code) {\n    effects.enter(tagMarkerType);\n    effects.consume(code);\n    effects.exit(tagMarkerType);\n    effects.exit(tagType);\n    return ok;\n  }\n\n  /**\n   * Before optional ECMAScript whitespace.\n   *\n   * ```markdown\n   * > | a <a b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function esWhitespaceStart(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return esWhitespaceEolAfter;\n    }\n    if (markdownSpace(code) || unicodeWhitespace(code)) {\n      effects.enter('esWhitespace');\n      return esWhitespaceInside(code);\n    }\n    return returnState(code);\n  }\n\n  /**\n   * In ECMAScript whitespace.\n   *\n   * ```markdown\n   * > | a <a  b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function esWhitespaceInside(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit('esWhitespace');\n      return esWhitespaceStart(code);\n    }\n    if (markdownSpace(code) || unicodeWhitespace(code)) {\n      effects.consume(code);\n      return esWhitespaceInside;\n    }\n    effects.exit('esWhitespace');\n    return returnState(code);\n  }\n\n  /**\n   * After eol in whitespace.\n   *\n   * ```markdown\n   * > | a <a\\nb> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function esWhitespaceEolAfter(code) {\n    // Lazy continuation in a flow tag is a syntax error.\n    if (!allowLazy && self.parser.lazy[self.now().line]) {\n      const error = new VFileMessage('Unexpected lazy line in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc', self.now(), 'micromark-extension-mdx-jsx:unexpected-lazy');\n      error.url = factory_tag_trouble + '#unexpected-lazy-line-in-container-expected-line-to-be';\n      throw error;\n    }\n    return esWhitespaceStart(code);\n  }\n\n  /**\n   * Crash at a nonconforming character.\n   *\n   * @param {Code} code\n   * @param {string} at\n   * @param {string} expect\n   */\n  function crash(code, at, expect) {\n    const error = new VFileMessage('Unexpected ' + (code === null ? 'end of file' : 'character `' + (code === 96 ? '` ` `' : String.fromCodePoint(code)) + '` (' + serializeCharCode(code) + ')') + ' ' + at + ', expected ' + expect, self.now(), 'micromark-extension-mdx-jsx:unexpected-' + (code === null ? 'eof' : 'character'));\n    error.url = factory_tag_trouble + (code === null ? '#unexpected-end-of-file-at-expected-expect' : '#unexpected-character-at-expected-expect');\n    throw error;\n  }\n}\n\n/**\n * @param {NonNullable<Code>} code\n * @returns {string}\n */\nfunction serializeCharCode(code) {\n  return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n;// ./node_modules/micromark-extension-mdx-jsx/lib/jsx-text.js\n/**\n * @typedef {import('micromark-factory-mdx-expression').Acorn} Acorn\n * @typedef {import('micromark-factory-mdx-expression').AcornOptions} AcornOptions\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {AcornOptions | undefined} acornOptions\n *   Acorn options.\n * @property {boolean | undefined} addResult\n *   Whether to add `estree` fields to tokens with results from acorn.\n */\n\n\n\n/**\n * Parse JSX (text).\n *\n * @param {Acorn | undefined} acorn\n *   Acorn parser to use (optional).\n * @param {Options} options\n *   Configuration.\n * @returns {Construct}\n *   Construct.\n */\nfunction jsxText(acorn, options) {\n  return {\n    name: 'mdxJsxTextTag',\n    tokenize: tokenizeJsxText\n  };\n\n  /**\n   * MDX JSX (text).\n   *\n   * ```markdown\n   * > | a <b />.\n   *       ^^^^^\n   * ```\n   *\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeJsxText(effects, ok, nok) {\n    return factoryTag.call(this, effects, ok, nok, acorn, options.acornOptions, options.addResult, true, 'mdxJsxTextTag', 'mdxJsxTextTagMarker', 'mdxJsxTextTagClosingMarker', 'mdxJsxTextTagSelfClosingMarker', 'mdxJsxTextTagName', 'mdxJsxTextTagNamePrimary', 'mdxJsxTextTagNameMemberMarker', 'mdxJsxTextTagNameMember', 'mdxJsxTextTagNamePrefixMarker', 'mdxJsxTextTagNameLocal', 'mdxJsxTextTagExpressionAttribute', 'mdxJsxTextTagExpressionAttributeMarker', 'mdxJsxTextTagExpressionAttributeValue', 'mdxJsxTextTagAttribute', 'mdxJsxTextTagAttributeName', 'mdxJsxTextTagAttributeNamePrimary', 'mdxJsxTextTagAttributeNamePrefixMarker', 'mdxJsxTextTagAttributeNameLocal', 'mdxJsxTextTagAttributeInitializerMarker', 'mdxJsxTextTagAttributeValueLiteral', 'mdxJsxTextTagAttributeValueLiteralMarker', 'mdxJsxTextTagAttributeValueLiteralValue', 'mdxJsxTextTagAttributeValueExpression', 'mdxJsxTextTagAttributeValueExpressionMarker', 'mdxJsxTextTagAttributeValueExpressionValue');\n  }\n}\n;// ./node_modules/micromark-extension-mdx-jsx/lib/jsx-flow.js\n/**\n * @typedef {import('micromark-factory-mdx-expression').Acorn} Acorn\n * @typedef {import('micromark-factory-mdx-expression').AcornOptions} AcornOptions\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {AcornOptions | undefined} acornOptions\n *   Acorn options.\n * @property {boolean | undefined} addResult\n *   Whether to add `estree` fields to tokens with results from acorn.\n */\n\n\n\n\n\n/**\n * Parse JSX (flow).\n *\n * @param {Acorn | undefined} acorn\n *   Acorn parser to use (optional).\n * @param {Options} options\n *   Configuration.\n * @returns {Construct}\n *   Construct.\n */\nfunction jsxFlow(acorn, options) {\n  return {\n    name: 'mdxJsxFlowTag',\n    tokenize: tokenizeJsxFlow,\n    concrete: true\n  };\n\n  /**\n   * MDX JSX (flow).\n   *\n   * ```markdown\n   * > | <A />\n   *     ^^^^^\n   * ```\n   *\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeJsxFlow(effects, ok, nok) {\n    const self = this;\n    return start;\n\n    /**\n     * Start of MDX: JSX (flow).\n     *\n     * ```markdown\n     * > | <A />\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // To do: in `markdown-rs`, constructs need to parse the indent themselves.\n      // This should also be introduced in `micromark-js`.\n\n      return before(code);\n    }\n\n    /**\n     * After optional whitespace, before of MDX JSX (flow).\n     *\n     * ```markdown\n     * > | <A />\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function before(code) {\n      return factoryTag.call(self, effects, after, nok, acorn, options.acornOptions, options.addResult, false, 'mdxJsxFlowTag', 'mdxJsxFlowTagMarker', 'mdxJsxFlowTagClosingMarker', 'mdxJsxFlowTagSelfClosingMarker', 'mdxJsxFlowTagName', 'mdxJsxFlowTagNamePrimary', 'mdxJsxFlowTagNameMemberMarker', 'mdxJsxFlowTagNameMember', 'mdxJsxFlowTagNamePrefixMarker', 'mdxJsxFlowTagNameLocal', 'mdxJsxFlowTagExpressionAttribute', 'mdxJsxFlowTagExpressionAttributeMarker', 'mdxJsxFlowTagExpressionAttributeValue', 'mdxJsxFlowTagAttribute', 'mdxJsxFlowTagAttributeName', 'mdxJsxFlowTagAttributeNamePrimary', 'mdxJsxFlowTagAttributeNamePrefixMarker', 'mdxJsxFlowTagAttributeNameLocal', 'mdxJsxFlowTagAttributeInitializerMarker', 'mdxJsxFlowTagAttributeValueLiteral', 'mdxJsxFlowTagAttributeValueLiteralMarker', 'mdxJsxFlowTagAttributeValueLiteralValue', 'mdxJsxFlowTagAttributeValueExpression', 'mdxJsxFlowTagAttributeValueExpressionMarker', 'mdxJsxFlowTagAttributeValueExpressionValue')(code);\n    }\n\n    /**\n     * After an MDX JSX (flow) tag.\n     *\n     * ```markdown\n     * > | <A>\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function after(code) {\n      return markdownSpace(code) ? factorySpace(effects, end, \"whitespace\")(code) : end(code);\n    }\n\n    /**\n     * After an MDX JSX (flow) tag, after optional whitespace.\n     *\n     * ```markdown\n     * > | <A> <B>\n     *         ^\n     * ```\n     *\n     * @type {State}\n     */\n    function end(code) {\n      // We want to allow expressions directly after tags.\n      // See <https://github.com/micromark/micromark-extension-mdx-expression/blob/d5d92b9/packages/micromark-extension-mdx-expression/dev/lib/syntax.js#L183>\n      // for more info.\n      const leftBraceValue = self.parser.constructs.flow[123];\n      /* c8 ignore next 5 -- always a list when normalized. */\n      const constructs = Array.isArray(leftBraceValue) ? leftBraceValue : leftBraceValue ? [leftBraceValue] : [];\n      const expression = constructs.find(d => d.name === 'mdxFlowExpression');\n\n      // Another tag.\n      return code === 60 ?\n      // We can’t just say: fine. Lines of blocks have to be parsed until an eol/eof.\n      start(code) : code === 123 && expression ? effects.attempt(expression, end, nok)(code) : code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n    }\n  }\n}\n;// ./node_modules/micromark-extension-mdx-jsx/lib/syntax.js\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-factory-mdx-expression').Acorn} Acorn\n * @typedef {import('micromark-factory-mdx-expression').AcornOptions} AcornOptions\n */\n\n/**\n * @typedef Options\n *   Configuration (optional).\n * @property {Acorn | null | undefined} [acorn]\n *   Acorn parser to use (optional).\n * @property {AcornOptions | null | undefined} [acornOptions]\n *   Configuration for acorn (default: `{ecmaVersion: 2024, locations: true,\n *   sourceType: 'module'}`); all fields except `locations` can be set.\n * @property {boolean | null | undefined} [addResult=false]\n *   Whether to add `estree` fields to tokens with results from acorn\n *   (default: `false`).\n */\n\n\n\n\n/**\n * Create an extension for `micromark` to enable MDX JSX syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable MDX\n *   JSX syntax.\n */\nfunction mdxJsx(options) {\n  const settings = options || {};\n  const acorn = settings.acorn;\n  /** @type {AcornOptions | undefined} */\n  let acornOptions;\n  if (acorn) {\n    if (!acorn.parse || !acorn.parseExpressionAt) {\n      throw new Error('Expected a proper `acorn` instance passed in as `options.acorn`');\n    }\n    acornOptions = Object.assign({\n      ecmaVersion: 2024,\n      sourceType: 'module'\n    }, settings.acornOptions, {\n      locations: true\n    });\n  } else if (settings.acornOptions || settings.addResult) {\n    throw new Error('Expected an `acorn` instance passed in as `options.acorn`');\n  }\n  return {\n    flow: {\n      [60]: jsxFlow(acorn || undefined, {\n        acornOptions,\n        addResult: settings.addResult || undefined\n      })\n    },\n    text: {\n      [60]: jsxText(acorn || undefined, {\n        acornOptions,\n        addResult: settings.addResult || undefined\n      })\n    }\n  };\n}\n;// ./node_modules/micromark-extension-mdx-md/index.js\n/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\n/**\n * Create an extension for `micromark` to disable some CommonMark syntax (code\n * (indented), autolinks, and HTML (flow and text)) for MDX.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to disable\n *   some CommonMark syntax for MDX.\n */\nfunction mdxMd() {\n  return {\n    disable: {null: ['autolink', 'codeIndented', 'htmlFlow', 'htmlText']}\n  }\n}\n\n;// ./node_modules/micromark-extension-mdxjs-esm/lib/syntax.js\n/**\n * @typedef {import('micromark-util-events-to-acorn').Acorn} Acorn\n * @typedef {import('micromark-util-events-to-acorn').AcornOptions} AcornOptions\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef Options\n *   Configuration (required).\n * @property {Acorn} acorn\n *   Acorn parser to use (required).\n * @property {AcornOptions | null | undefined} [acornOptions]\n *   Configuration for acorn (default: `{ecmaVersion: 2024, locations: true,\n *   sourceType: 'module'}`); all fields except `locations` can be set.\n * @property {boolean | null | undefined} [addResult=false]\n *   Whether to add `estree` fields to tokens with results from acorn\n *   (default: `false`).\n */\n\n\n\n\n\n\nconst syntax_blankLineBefore = {\n  tokenize: tokenizeNextBlank,\n  partial: true\n};\nconst syntax_trouble = 'https://github.com/micromark/micromark-extension-mdxjs-esm';\nconst allowedAcornTypes = new Set(['ExportAllDeclaration', 'ExportDefaultDeclaration', 'ExportNamedDeclaration', 'ImportDeclaration']);\n\n/**\n * Create an extension for `micromark` to enable MDX ESM syntax.\n *\n * @param {Options} options\n *   Configuration (required).\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable MDX\n *   ESM syntax.\n */\nfunction mdxjsEsm(options) {\n  const exportImportConstruct = {\n    tokenize: tokenizeExportImport,\n    concrete: true\n  };\n  if (!options || !options.acorn || !options.acorn.parse) {\n    throw new Error('Expected an `acorn` instance passed in as `options.acorn`');\n  }\n  const acorn = options.acorn;\n  const acornOptions = Object.assign({\n    ecmaVersion: 2024,\n    sourceType: 'module'\n  }, options.acornOptions, {\n    locations: true\n  });\n  return {\n    flow: {\n      [101]: exportImportConstruct,\n      [105]: exportImportConstruct\n    }\n  };\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeExportImport(effects, ok, nok) {\n    const self = this;\n    const definedModuleSpecifiers = self.parser.definedModuleSpecifiers || (self.parser.definedModuleSpecifiers = []);\n    const eventStart = this.events.length + 1; // Add the main `mdxjsEsm` token\n    let buffer = '';\n    return self.interrupt ? nok : start;\n\n    /**\n     * Start of MDX ESM.\n     *\n     * ```markdown\n     * > | import a from 'b'\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // Only at the start of a line, not at whitespace or in a container.\n      if (self.now().column > 1) return nok(code);\n      effects.enter('mdxjsEsm');\n      effects.enter('mdxjsEsmData');\n      effects.consume(code);\n      // eslint-disable-next-line unicorn/prefer-code-point\n      buffer += String.fromCharCode(code);\n      return word;\n    }\n\n    /**\n     * In keyword.\n     *\n     * ```markdown\n     * > | import a from 'b'\n     *     ^^^^^^\n     * ```\n     *\n     * @type {State}\n     */\n    function word(code) {\n      if (asciiAlpha(code)) {\n        effects.consume(code);\n        // @ts-expect-error: definitely a number.\n        // eslint-disable-next-line unicorn/prefer-code-point\n        buffer += String.fromCharCode(code);\n        return word;\n      }\n      if ((buffer === 'import' || buffer === 'export') && code === 32) {\n        effects.consume(code);\n        return inside;\n      }\n      return nok(code);\n    }\n\n    /**\n     * In data.\n     *\n     * ```markdown\n     * > | import a from 'b'\n     *           ^\n     * ```\n     *\n     * @type {State}\n     */\n    function inside(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit('mdxjsEsmData');\n        return lineStart(code);\n      }\n      effects.consume(code);\n      return inside;\n    }\n\n    /**\n     * At line ending.\n     *\n     * ```markdown\n     * > | import a from 'b'\n     *                      ^\n     *   | export {a}\n     * ```\n     *\n     * @type {State}\n     */\n    function lineStart(code) {\n      if (code === null) {\n        return atEnd(code);\n      }\n      if (markdownLineEnding(code)) {\n        return effects.check(syntax_blankLineBefore, atEnd, continuationStart)(code);\n      }\n      effects.enter('mdxjsEsmData');\n      return inside(code);\n    }\n\n    /**\n     * At line ending that continues.\n     *\n     * ```markdown\n     * > | import a from 'b'\n     *                      ^\n     *   | export {a}\n     * ```\n     *\n     * @type {State}\n     */\n    function continuationStart(code) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return lineStart;\n    }\n\n    /**\n     * At end of line (blank or eof).\n     *\n     * ```markdown\n     * > | import a from 'b'\n     *                      ^\n     * ```\n     *\n     * @type {State}\n     */\n    function atEnd(code) {\n      const result = eventsToAcorn(self.events.slice(eventStart), {\n        acorn,\n        acornOptions,\n        tokenTypes: ['mdxjsEsmData'],\n        prefix: definedModuleSpecifiers.length > 0 ? 'var ' + definedModuleSpecifiers.join(',') + '\\n' : ''\n      });\n      if (result.error) {\n        // There’s an error, which could be solved with more content, and there\n        // is more content.\n        if (code !== null && result.swallow) {\n          return continuationStart(code);\n        }\n        const error = new VFileMessage('Could not parse import/exports with acorn', {\n          cause: result.error,\n          place: {\n            line: result.error.loc.line,\n            column: result.error.loc.column + 1,\n            offset: result.error.pos\n          },\n          ruleId: 'acorn',\n          source: 'micromark-extension-mdxjs-esm'\n        });\n        error.url = syntax_trouble + '#could-not-parse-importexports-with-acorn';\n        throw error;\n      }\n      // Remove the `VariableDeclaration`.\n      if (definedModuleSpecifiers.length > 0) {\n        const declaration = result.estree.body.shift();\n      }\n      let index = -1;\n      while (++index < result.estree.body.length) {\n        const node = result.estree.body[index];\n        if (!allowedAcornTypes.has(node.type)) {\n          const error = new VFileMessage('Unexpected `' + node.type + '` in code: only import/exports are supported', {\n            place: positionFromEstree(node),\n            ruleId: 'non-esm',\n            source: 'micromark-extension-mdxjs-esm'\n          });\n          error.url = syntax_trouble + '#unexpected-type-in-code-only-importexports-are-supported';\n          throw error;\n        }\n\n        // Otherwise, when we’re not interrupting (hacky, because `interrupt` is\n        // used to parse containers and “sniff” if this is ESM), collect all the\n        // local values that are imported.\n        if (node.type === 'ImportDeclaration' && !self.interrupt) {\n          let index = -1;\n          while (++index < node.specifiers.length) {\n            const specifier = node.specifiers[index];\n            definedModuleSpecifiers.push(specifier.local.name);\n          }\n        }\n      }\n      Object.assign(effects.exit('mdxjsEsm'), options.addResult ? {\n        estree: result.estree\n      } : undefined);\n      return ok(code);\n    }\n  }\n}\n\n/** @type {Tokenizer} */\nfunction tokenizeNextBlank(effects, ok, nok) {\n  return start;\n\n  /**\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"lineEndingBlank\");\n    effects.consume(code);\n    effects.exit(\"lineEndingBlank\");\n    return effects.attempt(blankLine, ok, nok);\n  }\n}\n;// ./node_modules/micromark-extension-mdxjs/index.js\n/**\n * @typedef {import('micromark-extension-mdx-expression').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\n\n\n\n\n\n\n\n\n/**\n * Create an extension for `micromark` to enable MDX syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable MDX\n *   syntax.\n */\nfunction mdxjs(options) {\n  const settings = Object.assign(\n    {\n      acorn: external_acorn_.Parser.extend(acorn_jsx_default()()),\n      acornOptions: {ecmaVersion: 2024, sourceType: 'module'},\n      addResult: true\n    },\n    options\n  )\n\n  return combineExtensions([\n    mdxjsEsm(settings),\n    mdxExpression(settings),\n    mdxJsx(settings),\n    mdxMd()\n  ])\n}\n\n;// ./node_modules/remark-mdx/lib/index.js\n/**\n * @import {ToMarkdownOptions} from 'mdast-util-mdx'\n * @import {Options as MicromarkOptions} from 'micromark-extension-mdxjs'\n * @import {Processor} from 'unified'\n */\n\n/**\n * @typedef {MicromarkOptions & ToMarkdownOptions} Options\n *   Configuration.\n */\n\n\n\n\n/** @type {Readonly<Options>} */\nconst remark_mdx_lib_emptyOptions = {}\n\n/**\n * Add support for MDX (JSX: `<Video id={123} />`, export/imports: `export {x}\n * from 'y'`; and expressions: `{1 + 1}`).\n *\n * @this {Processor}\n *   Processor.\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction remarkMdx(options) {\n  const self = this\n  const settings = options || remark_mdx_lib_emptyOptions\n  const data = self.data()\n\n  const micromarkExtensions =\n    data.micromarkExtensions || (data.micromarkExtensions = [])\n  const fromMarkdownExtensions =\n    data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n  const toMarkdownExtensions =\n    data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n  micromarkExtensions.push(mdxjs(settings))\n  fromMarkdownExtensions.push(mdxFromMarkdown())\n  toMarkdownExtensions.push(mdxToMarkdown(settings))\n}\n\n;// ./enums.ts\nvar NodeTypes;\n(function (NodeTypes) {\n    NodeTypes[\"callout\"] = \"rdme-callout\";\n    NodeTypes[\"codeTabs\"] = \"code-tabs\";\n    NodeTypes[\"embedBlock\"] = \"embed-block\";\n    NodeTypes[\"emoji\"] = \"gemoji\";\n    NodeTypes[\"figcaption\"] = \"figcaption\";\n    NodeTypes[\"figure\"] = \"figure\";\n    NodeTypes[\"glossary\"] = \"readme-glossary-item\";\n    NodeTypes[\"htmlBlock\"] = \"html-block\";\n    NodeTypes[\"i\"] = \"i\";\n    NodeTypes[\"imageBlock\"] = \"image-block\";\n    NodeTypes[\"plain\"] = \"plain\";\n    NodeTypes[\"recipe\"] = \"recipe\";\n    NodeTypes[\"reusableContent\"] = \"reusable-content\";\n    NodeTypes[\"tableau\"] = \"tableau\";\n    /** @deprecated Deprecated in favor of `recipe`. */\n    NodeTypes[\"tutorialTile\"] = \"tutorial-tile\";\n    NodeTypes[\"variable\"] = \"readme-variable\";\n})(NodeTypes || (NodeTypes = {}));\n\n;// ./node_modules/property-information/lib/util/schema.js\n/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nclass Schema {\n  /**\n   * @constructor\n   * @param {Properties} property\n   * @param {Normal} normal\n   * @param {string} [space]\n   */\n  constructor(property, normal, space) {\n    this.property = property\n    this.normal = normal\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n\n;// ./node_modules/property-information/lib/util/merge.js\n/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\n\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nfunction merge(definitions, space) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  let index = -1\n\n  while (++index < definitions.length) {\n    Object.assign(property, definitions[index].property)\n    Object.assign(normal, definitions[index].normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n\n;// ./node_modules/property-information/lib/normalize.js\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction normalize_normalize(value) {\n  return value.toLowerCase()\n}\n\n;// ./node_modules/property-information/lib/util/info.js\nclass Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   */\n  constructor(property, attribute) {\n    /** @type {string} */\n    this.property = property\n    /** @type {string} */\n    this.attribute = attribute\n  }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n\n;// ./node_modules/property-information/lib/util/types.js\nlet powers = 0\n\nconst types_boolean = increment()\nconst booleanish = increment()\nconst overloadedBoolean = increment()\nconst number = increment()\nconst spaceSeparated = increment()\nconst commaSeparated = increment()\nconst commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n\n;// ./node_modules/property-information/lib/util/defined-info.js\n\n\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types_namespaceObject)\n\nclass DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   * @param {string} attribute\n   * @param {number|null} [mask]\n   * @param {string} [space]\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types_namespaceObject[check]) === types_namespaceObject[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n  if (value) {\n    // @ts-expect-error: assume `value` matches the expected value of `key`.\n    values[key] = value\n  }\n}\n\n;// ./node_modules/property-information/lib/util/create.js\n/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\n\n\n\n\nconst create_own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nfunction create_create(definition) {\n  /** @type {Properties} */\n  const property = {}\n  /** @type {Normal} */\n  const normal = {}\n  /** @type {string} */\n  let prop\n\n  for (prop in definition.properties) {\n    if (create_own.call(definition.properties, prop)) {\n      const value = definition.properties[prop]\n      const info = new DefinedInfo(\n        prop,\n        definition.transform(definition.attributes || {}, prop),\n        value,\n        definition.space\n      )\n\n      if (\n        definition.mustUseProperty &&\n        definition.mustUseProperty.includes(prop)\n      ) {\n        info.mustUseProperty = true\n      }\n\n      property[prop] = info\n\n      normal[normalize_normalize(prop)] = prop\n      normal[normalize_normalize(info.attribute)] = prop\n    }\n  }\n\n  return new Schema(property, normal, definition.space)\n}\n\n;// ./node_modules/property-information/lib/xlink.js\n\n\nconst xlink = create_create({\n  space: 'xlink',\n  transform(_, prop) {\n    return 'xlink:' + prop.slice(5).toLowerCase()\n  },\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  }\n})\n\n;// ./node_modules/property-information/lib/xml.js\n\n\nconst xml = create_create({\n  space: 'xml',\n  transform(_, prop) {\n    return 'xml:' + prop.slice(3).toLowerCase()\n  },\n  properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n\n;// ./node_modules/property-information/lib/util/case-sensitive-transform.js\n/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nfunction caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n\n;// ./node_modules/property-information/lib/util/case-insensitive-transform.js\n\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nfunction caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n\n;// ./node_modules/property-information/lib/xmlns.js\n\n\n\nconst xmlns = create_create({\n  space: 'xmlns',\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  transform: caseInsensitiveTransform,\n  properties: {xmlns: null, xmlnsXLink: null}\n})\n\n;// ./node_modules/property-information/lib/aria.js\n\n\n\nconst aria = create_create({\n  transform(_, prop) {\n    return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n  },\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  }\n})\n\n;// ./node_modules/property-information/lib/html.js\n\n\n\n\nconst html_html = create_create({\n  space: 'html',\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  transform: caseInsensitiveTransform,\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: types_boolean,\n    allowPaymentRequest: types_boolean,\n    allowUserMedia: types_boolean,\n    alt: null,\n    as: null,\n    async: types_boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: types_boolean,\n    autoPlay: types_boolean,\n    blocking: spaceSeparated,\n    capture: null,\n    charSet: null,\n    checked: types_boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: types_boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: types_boolean,\n    defer: types_boolean,\n    dir: null,\n    dirName: null,\n    disabled: types_boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    fetchPriority: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: types_boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: types_boolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inert: types_boolean,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: types_boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: types_boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: types_boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: types_boolean,\n    muted: types_boolean,\n    name: null,\n    nonce: null,\n    noModule: types_boolean,\n    noValidate: types_boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: types_boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: types_boolean,\n    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\n    poster: null,\n    preload: null,\n    readOnly: types_boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: types_boolean,\n    reversed: types_boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: types_boolean,\n    seamless: types_boolean,\n    selected: types_boolean,\n    shadowRootClonable: types_boolean,\n    shadowRootDelegatesFocus: types_boolean,\n    shadowRootMode: null,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: types_boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n    writingSuggestions: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: types_boolean, // Lists. Use CSS to reduce space between items instead\n    declare: types_boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: types_boolean, // `<frame>`\n    noHref: types_boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: types_boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: types_boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: types_boolean,\n    disableRemotePlayback: types_boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  }\n})\n\n;// ./node_modules/property-information/lib/svg.js\n\n\n\n\nconst svg = create_create({\n  space: 'svg',\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    transformOrigin: 'transform-origin',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  transform: caseSensitiveTransform,\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: types_boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    transformOrigin: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  }\n})\n\n;// ./node_modules/property-information/index.js\n/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\n\n\n\n\n\n\n\n\n\n\n\nconst property_information_html = merge([xml, xlink, xmlns, aria, html_html], 'html')\nconst property_information_svg = merge([xml, xlink, xmlns, aria, svg], 'svg')\n\n;// ./node_modules/comma-separated-tokens/index.js\n/**\n * @typedef Options\n *   Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n *   Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n *   Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n *   Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n *   Comma-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nfunction comma_separated_tokens_parse(value) {\n  /** @type {Array<string>} */\n  const tokens = []\n  const input = String(value || '')\n  let index = input.indexOf(',')\n  let start = 0\n  /** @type {boolean} */\n  let end = false\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    const token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @param {Options} [options]\n *   Configuration for `stringify` (optional).\n * @returns {string}\n *   Comma-separated tokens.\n */\nfunction comma_separated_tokens_stringify(values, options) {\n  const settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n  return input\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n\n;// ./node_modules/hast-util-parse-selector/lib/index.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n */\n\n/**\n * @template {string} SimpleSelector\n *   Selector type.\n * @template {string} DefaultTagName\n *   Default tag name.\n * @typedef {(\n *   SimpleSelector extends ''\n *     ? DefaultTagName\n *     : SimpleSelector extends `${infer TagName}.${infer Rest}`\n *     ? ExtractTagName<TagName, DefaultTagName>\n *     : SimpleSelector extends `${infer TagName}#${infer Rest}`\n *     ? ExtractTagName<TagName, DefaultTagName>\n *     : SimpleSelector extends string\n *     ? SimpleSelector\n *     : DefaultTagName\n * )} ExtractTagName\n *   Extract tag name from a simple selector.\n */\n\nconst lib_search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @template {string} Selector\n *   Type of selector.\n * @template {string} [DefaultTagName='div']\n *   Type of default tag name (default: `'div'`).\n * @param {Selector | null | undefined} [selector]\n *   Simple CSS selector (optional).\n *\n *   Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).\n *   Multiple classes are allowed.\n *   Uses the last ID if multiple IDs are found.\n * @param {DefaultTagName | null | undefined} [defaultTagName='div']\n *   Tag name to use if `selector` does not specify one (default: `'div'`).\n * @returns {Element & {tagName: ExtractTagName<Selector, DefaultTagName>}}\n *   Built element.\n */\nfunction parseSelector(selector, defaultTagName) {\n  const value = selector || ''\n  /** @type {Properties} */\n  const props = {}\n  let start = 0\n  /** @type {string | undefined} */\n  let previous\n  /** @type {string | undefined} */\n  let tagName\n\n  while (start < value.length) {\n    lib_search.lastIndex = start\n    const match = lib_search.exec(value)\n    const subvalue = value.slice(start, match ? match.index : value.length)\n\n    if (subvalue) {\n      if (!previous) {\n        tagName = subvalue\n      } else if (previous === '#') {\n        props.id = subvalue\n      } else if (Array.isArray(props.className)) {\n        props.className.push(subvalue)\n      } else {\n        props.className = [subvalue]\n      }\n\n      start += subvalue.length\n    }\n\n    if (match) {\n      previous = match[0]\n      start++\n    }\n  }\n\n  return {\n    type: 'element',\n    // @ts-expect-error: tag name is parsed.\n    tagName: tagName || defaultTagName || 'div',\n    properties: props,\n    children: []\n  }\n}\n\n;// ./node_modules/property-information/lib/find.js\n/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\n\n\n\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nfunction find(schema, value) {\n  const normal = normalize_normalize(value)\n  let prop = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n\n;// ./node_modules/space-separated-tokens/index.js\n/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n *   Space-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nfunction space_separated_tokens_parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @returns {string}\n *   Space-separated tokens.\n */\nfunction space_separated_tokens_stringify(values) {\n  return values.join(' ').trim()\n}\n\n;// ./node_modules/hast-util-from-parse5/node_modules/hastscript/lib/create-h.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').RootContent} RootContent\n *\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n */\n\n/**\n * @typedef {Element | Root} Result\n *   Result from a `h` (or `s`) call.\n *\n * @typedef {number | string} StyleValue\n *   Value for a CSS style field.\n * @typedef {Record<string, StyleValue>} Style\n *   Supported value of a `style` prop.\n * @typedef {boolean | number | string | null | undefined} PrimitiveValue\n *   Primitive property value.\n * @typedef {Array<number | string>} ArrayValue\n *   List of property values for space- or comma separated values (such as `className`).\n * @typedef {ArrayValue | PrimitiveValue} PropertyValue\n *   Primitive value or list value.\n * @typedef {{[property: string]: PropertyValue | Style}} Properties\n *   Acceptable value for element properties.\n *\n * @typedef {number | string | null | undefined} PrimitiveChild\n *   Primitive children, either ignored (nullish), or turned into text nodes.\n * @typedef {Array<ArrayChildNested | Nodes | PrimitiveChild>} ArrayChild\n *   List of children.\n * @typedef {Array<Nodes | PrimitiveChild>} ArrayChildNested\n *   List of children (deep).\n * @typedef {ArrayChild | Nodes | PrimitiveChild} Child\n *   Acceptable child value.\n */\n\n\n\n\n\n\nconst buttonTypes = new Set(['button', 'menu', 'reset', 'submit'])\n\nconst create_h_own = {}.hasOwnProperty\n\n/**\n * @param {Schema} schema\n *   Schema to use.\n * @param {string} defaultTagName\n *   Default tag name.\n * @param {Array<string> | undefined} [caseSensitive]\n *   Case-sensitive tag names (default: `undefined`).\n * @returns\n *   `h`.\n */\nfunction createH(schema, defaultTagName, caseSensitive) {\n  const adjust = caseSensitive && createAdjustMap(caseSensitive)\n\n  /**\n   * Hyperscript compatible DSL for creating virtual hast trees.\n   *\n   * @overload\n   * @param {null | undefined} [selector]\n   * @param {...Child} children\n   * @returns {Root}\n   *\n   * @overload\n   * @param {string} selector\n   * @param {Properties} properties\n   * @param {...Child} children\n   * @returns {Element}\n   *\n   * @overload\n   * @param {string} selector\n   * @param {...Child} children\n   * @returns {Element}\n   *\n   * @param {string | null | undefined} [selector]\n   *   Selector.\n   * @param {Child | Properties | null | undefined} [properties]\n   *   Properties (or first child) (default: `undefined`).\n   * @param {...Child} children\n   *   Children.\n   * @returns {Result}\n   *   Result.\n   */\n  function h(selector, properties, ...children) {\n    let index = -1\n    /** @type {Result} */\n    let node\n\n    if (selector === undefined || selector === null) {\n      node = {type: 'root', children: []}\n      // Properties are not supported for roots.\n      const child = /** @type {Child} */ (properties)\n      children.unshift(child)\n    } else {\n      node = parseSelector(selector, defaultTagName)\n      // Normalize the name.\n      node.tagName = node.tagName.toLowerCase()\n      if (adjust && create_h_own.call(adjust, node.tagName)) {\n        node.tagName = adjust[node.tagName]\n      }\n\n      // Handle props.\n      if (isProperties(properties, node.tagName)) {\n        /** @type {string} */\n        let key\n\n        for (key in properties) {\n          if (create_h_own.call(properties, key)) {\n            addProperty(schema, node.properties, key, properties[key])\n          }\n        }\n      } else {\n        children.unshift(properties)\n      }\n    }\n\n    // Handle children.\n    while (++index < children.length) {\n      addChild(node.children, children[index])\n    }\n\n    if (node.type === 'element' && node.tagName === 'template') {\n      node.content = {type: 'root', children: node.children}\n      node.children = []\n    }\n\n    return node\n  }\n\n  return h\n}\n\n/**\n * Check if something is properties or a child.\n *\n * @param {Child | Properties} value\n *   Value to check.\n * @param {string} name\n *   Tag name.\n * @returns {value is Properties}\n *   Whether `value` is a properties object.\n */\nfunction isProperties(value, name) {\n  if (\n    value === null ||\n    value === undefined ||\n    typeof value !== 'object' ||\n    Array.isArray(value)\n  ) {\n    return false\n  }\n\n  if (name === 'input' || !value.type || typeof value.type !== 'string') {\n    return true\n  }\n\n  if ('children' in value && Array.isArray(value.children)) {\n    return false\n  }\n\n  if (name === 'button') {\n    return buttonTypes.has(value.type.toLowerCase())\n  }\n\n  return !('value' in value)\n}\n\n/**\n * @param {Schema} schema\n *   Schema.\n * @param {Properties} properties\n *   Properties object.\n * @param {string} key\n *   Property name.\n * @param {PropertyValue | Style} value\n *   Property value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addProperty(schema, properties, key, value) {\n  const info = find(schema, key)\n  let index = -1\n  /** @type {PropertyValue} */\n  let result\n\n  // Ignore nullish and NaN values.\n  if (value === undefined || value === null) return\n\n  if (typeof value === 'number') {\n    // Ignore NaN.\n    if (Number.isNaN(value)) return\n\n    result = value\n  }\n  // Booleans.\n  else if (typeof value === 'boolean') {\n    result = value\n  }\n  // Handle list values.\n  else if (typeof value === 'string') {\n    if (info.spaceSeparated) {\n      result = space_separated_tokens_parse(value)\n    } else if (info.commaSeparated) {\n      result = comma_separated_tokens_parse(value)\n    } else if (info.commaOrSpaceSeparated) {\n      result = space_separated_tokens_parse(comma_separated_tokens_parse(value).join(' '))\n    } else {\n      result = parsePrimitive(info, info.property, value)\n    }\n  } else if (Array.isArray(value)) {\n    result = value.concat()\n  } else {\n    result = info.property === 'style' ? style(value) : String(value)\n  }\n\n  if (Array.isArray(result)) {\n    /** @type {Array<number | string>} */\n    const finalResult = []\n\n    while (++index < result.length) {\n      // Assume no booleans in array.\n      const value = /** @type {number | string} */ (\n        parsePrimitive(info, info.property, result[index])\n      )\n      finalResult[index] = value\n    }\n\n    result = finalResult\n  }\n\n  // Class names (which can be added both on the `selector` and here).\n  if (info.property === 'className' && Array.isArray(properties.className)) {\n    // Assume no booleans in `className`.\n    const value = /** @type {number | string} */ (result)\n    result = properties.className.concat(value)\n  }\n\n  properties[info.property] = result\n}\n\n/**\n * @param {Array<RootContent>} nodes\n *   Children.\n * @param {Child} value\n *   Child.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addChild(nodes, value) {\n  let index = -1\n\n  if (value === undefined || value === null) {\n    // Empty.\n  } else if (typeof value === 'string' || typeof value === 'number') {\n    nodes.push({type: 'text', value: String(value)})\n  } else if (Array.isArray(value)) {\n    while (++index < value.length) {\n      addChild(nodes, value[index])\n    }\n  } else if (typeof value === 'object' && 'type' in value) {\n    if (value.type === 'root') {\n      addChild(nodes, value.children)\n    } else {\n      nodes.push(value)\n    }\n  } else {\n    throw new Error('Expected node, nodes, or string, got `' + value + '`')\n  }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n *   Property information.\n * @param {string} name\n *   Property name.\n * @param {PrimitiveValue} value\n *   Property value.\n * @returns {PrimitiveValue}\n *   Property value.\n */\nfunction parsePrimitive(info, name, value) {\n  if (typeof value === 'string') {\n    if (info.number && value && !Number.isNaN(Number(value))) {\n      return Number(value)\n    }\n\n    if (\n      (info.boolean || info.overloadedBoolean) &&\n      (value === '' || normalize_normalize(value) === normalize_normalize(name))\n    ) {\n      return true\n    }\n  }\n\n  return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {Style} value\n *   Style object.\n * @returns {string}\n *   CSS string.\n */\nfunction style(value) {\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {string} */\n  let key\n\n  for (key in value) {\n    if (create_h_own.call(value, key)) {\n      result.push([key, value[key]].join(': '))\n    }\n  }\n\n  return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {Array<string>} values\n *   List of properly cased keys.\n * @returns {Record<string, string>}\n *   Map of lowercase keys to uppercase keys.\n */\nfunction createAdjustMap(values) {\n  /** @type {Record<string, string>} */\n  const result = {}\n  let index = -1\n\n  while (++index < values.length) {\n    result[values[index].toLowerCase()] = values[index]\n  }\n\n  return result\n}\n\n;// ./node_modules/hast-util-from-parse5/node_modules/hastscript/lib/svg-case-sensitive-tag-names.js\nconst svgCaseSensitiveTagNames = [\n  'altGlyph',\n  'altGlyphDef',\n  'altGlyphItem',\n  'animateColor',\n  'animateMotion',\n  'animateTransform',\n  'clipPath',\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n  'foreignObject',\n  'glyphRef',\n  'linearGradient',\n  'radialGradient',\n  'solidColor',\n  'textArea',\n  'textPath'\n]\n\n;// ./node_modules/hast-util-from-parse5/node_modules/hastscript/lib/index.js\n/**\n * @typedef {import('./create-h.js').Child} Child\n *   Acceptable child value.\n * @typedef {import('./create-h.js').Properties} Properties\n *   Acceptable value for element properties.\n * @typedef {import('./create-h.js').Result} Result\n *   Result from a `h` (or `s`) call.\n */\n\n// Register the JSX namespace on `h`.\n/**\n * @typedef {import('./jsx-classic.js').Element} h.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n */\n\n// Register the JSX namespace on `s`.\n/**\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n */\n\n\n\n\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nconst lib_h = createH(property_information_html, 'div')\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nconst s = createH(property_information_svg, 'g', svgCaseSensitiveTagNames)\n\n;// ./node_modules/vfile-location/lib/index.js\n/**\n * @typedef {import('vfile').VFile} VFile\n * @typedef {import('vfile').Value} Value\n * @typedef {import('unist').Point} UnistPoint\n */\n\n/**\n *\n * @typedef PointLike\n *   unist point, allowed as input.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @callback ToPoint\n *   Get the line/column based `Point` for `offset` in the bound indices.\n *\n *   Returns `undefined` when given out of bounds input.\n *\n *   Also implemented in Rust in [`wooorm/markdown-rs`][markdown-rs].\n *\n *   [markdown-rs]: https://github.com/wooorm/markdown-rs/blob/main/src/util/location.rs\n * @param {number | null | undefined} [offset]\n *   Something that should be an `offset.\n * @returns {UnistPoint | undefined}\n *   Point, if `offset` is valid and in-bounds input.\n *\n * @callback ToOffset\n *   Get the `offset` from a line/column based `Point` in the bound indices.\n * @param {PointLike | null | undefined} [point]\n *   Something that should be a `point.\n * @returns {number | undefined}\n *   Offset (`number`) or `undefined` for invalid or out of bounds input.\n *\n * @typedef Location\n *   Accessors for index.\n * @property {ToPoint} toPoint\n *   Get the line/column based `Point` for `offset` in the bound indices.\n * @property {ToOffset} toOffset\n *   Get the `offset` from a line/column based `Point` in the bound indices.\n */\n\nconst vfile_location_lib_search = /\\r?\\n|\\r/g\n\n/**\n * Create an index of the given document to translate between line/column and\n * offset based positional info.\n *\n * Also implemented in Rust in [`wooorm/markdown-rs`][markdown-rs].\n *\n * [markdown-rs]: https://github.com/wooorm/markdown-rs/blob/main/src/util/location.rs\n *\n * @param {VFile | Value} file\n *   File to index.\n * @returns {Location}\n *   Accessors for index.\n */\nfunction lib_location(file) {\n  const value = String(file)\n  /**\n   * List, where each index is a line number (0-based), and each value is the\n   * byte index *after* where the line ends.\n   *\n   * @type {Array<number>}\n   */\n  const indices = []\n\n  vfile_location_lib_search.lastIndex = 0\n\n  while (vfile_location_lib_search.test(value)) {\n    indices.push(vfile_location_lib_search.lastIndex)\n  }\n\n  indices.push(value.length + 1)\n\n  return {toPoint, toOffset}\n\n  /** @type {ToPoint} */\n  function toPoint(offset) {\n    let index = -1\n\n    if (\n      typeof offset === 'number' &&\n      offset > -1 &&\n      offset < indices[indices.length - 1]\n    ) {\n      while (++index < indices.length) {\n        if (indices[index] > offset) {\n          return {\n            line: index + 1,\n            column: offset - (index > 0 ? indices[index - 1] : 0) + 1,\n            offset\n          }\n        }\n      }\n    }\n  }\n\n  /** @type {ToOffset} */\n  function toOffset(point) {\n    const line = point && point.line\n    const column = point && point.column\n\n    if (\n      typeof line === 'number' &&\n      typeof column === 'number' &&\n      !Number.isNaN(line) &&\n      !Number.isNaN(column) &&\n      line - 1 in indices\n    ) {\n      const offset = (indices[line - 2] || 0) + column - 1 || 0\n\n      if (offset > -1 && offset < indices[indices.length - 1]) {\n        return offset\n      }\n    }\n  }\n}\n\n;// ./node_modules/web-namespaces/index.js\n/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nconst webNamespaces = {\n  html: 'http://www.w3.org/1999/xhtml',\n  mathml: 'http://www.w3.org/1998/Math/MathML',\n  svg: 'http://www.w3.org/2000/svg',\n  xlink: 'http://www.w3.org/1999/xlink',\n  xml: 'http://www.w3.org/XML/1998/namespace',\n  xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n\n;// ./node_modules/hast-util-from-parse5/lib/index.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementData} ElementData\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').RootContent} RootContent\n *\n * @typedef {import('parse5').DefaultTreeAdapterMap} DefaultTreeAdapterMap\n * @typedef {import('parse5').Token.ElementLocation} P5ElementLocation\n * @typedef {import('parse5').Token.Location} P5Location\n *\n * @typedef {import('property-information').Schema} Schema\n *\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n *\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {DefaultTreeAdapterMap['document']} P5Document\n * @typedef {DefaultTreeAdapterMap['documentFragment']} P5DocumentFragment\n * @typedef {DefaultTreeAdapterMap['documentType']} P5DocumentType\n * @typedef {DefaultTreeAdapterMap['commentNode']} P5Comment\n * @typedef {DefaultTreeAdapterMap['textNode']} P5Text\n * @typedef {DefaultTreeAdapterMap['element']} P5Element\n * @typedef {DefaultTreeAdapterMap['node']} P5Node\n * @typedef {DefaultTreeAdapterMap['template']} P5Template\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {Space | null | undefined} [space='html']\n *   Which space the document is in (default: `'html'`).\n *\n *   When an `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it.\n * @property {VFile | null | undefined} [file]\n *   File used to add positional info to nodes (optional).\n *\n *   If given, the file should represent the original HTML source.\n * @property {boolean | null | undefined} [verbose=false]\n *   Whether to add extra positional info about starting tags, closing tags,\n *   and attributes to elements (default: `false`).\n *\n *   > 👉 **Note**: only used when `file` is given.\n *\n * @typedef {'html' | 'svg'} Space\n *   Namespace.\n *\n * @typedef State\n *   Info passed around about the current state.\n * @property {VFile | undefined} file\n *   Corresponding file.\n * @property {boolean} location\n *   Whether location info was found.\n * @property {Schema} schema\n *   Current schema.\n * @property {boolean | undefined} verbose\n *   Add extra positional info.\n */\n\n\n\n\n\n\n\nconst hast_util_from_parse5_lib_own = {}.hasOwnProperty\n/** @type {unknown} */\n// type-coverage:ignore-next-line\nconst proto = Object.prototype\n\n/**\n * Transform a `parse5` AST to hast.\n *\n * @param {P5Node} tree\n *   `parse5` tree to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Nodes}\n *   hast tree.\n */\nfunction fromParse5(tree, options) {\n  const settings = options || {}\n\n  return hast_util_from_parse5_lib_one(\n    {\n      file: settings.file || undefined,\n      location: false,\n      schema: settings.space === 'svg' ? property_information_svg : property_information_html,\n      verbose: settings.verbose || false\n    },\n    tree\n  )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {P5Node} node\n *   p5 node.\n * @returns {Nodes}\n *   hast node.\n */\nfunction hast_util_from_parse5_lib_one(state, node) {\n  /** @type {Nodes} */\n  let result\n\n  switch (node.nodeName) {\n    case '#comment': {\n      const reference = /** @type {P5Comment} */ (node)\n      result = {type: 'comment', value: reference.data}\n      patch(state, reference, result)\n      return result\n    }\n\n    case '#document':\n    case '#document-fragment': {\n      const reference = /** @type {P5Document | P5DocumentFragment} */ (node)\n      const quirksMode =\n        'mode' in reference\n          ? reference.mode === 'quirks' || reference.mode === 'limited-quirks'\n          : false\n\n      result = {\n        type: 'root',\n        children: hast_util_from_parse5_lib_all(state, node.childNodes),\n        data: {quirksMode}\n      }\n\n      if (state.file && state.location) {\n        const doc = String(state.file)\n        const loc = lib_location(doc)\n        const start = loc.toPoint(0)\n        const end = loc.toPoint(doc.length)\n        // Always defined as we give valid input.\n        default_ok(start, 'expected `start`')\n        default_ok(end, 'expected `end`')\n        result.position = {start, end}\n      }\n\n      return result\n    }\n\n    case '#documentType': {\n      const reference = /** @type {P5DocumentType} */ (node)\n      result = {type: 'doctype'}\n      patch(state, reference, result)\n      return result\n    }\n\n    case '#text': {\n      const reference = /** @type {P5Text} */ (node)\n      result = {type: 'text', value: reference.value}\n      patch(state, reference, result)\n      return result\n    }\n\n    // Element.\n    default: {\n      const reference = /** @type {P5Element} */ (node)\n      result = lib_element(state, reference)\n      return result\n    }\n  }\n}\n\n/**\n * Transform children.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Array<P5Node>} nodes\n *   Nodes.\n * @returns {Array<RootContent>}\n *   hast nodes.\n */\nfunction hast_util_from_parse5_lib_all(state, nodes) {\n  let index = -1\n  /** @type {Array<RootContent>} */\n  const results = []\n\n  while (++index < nodes.length) {\n    // Assume no roots in `nodes`.\n    const result = /** @type {RootContent} */ (hast_util_from_parse5_lib_one(state, nodes[index]))\n    results.push(result)\n  }\n\n  return results\n}\n\n/**\n * Transform an element.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {P5Element} node\n *   `parse5` node to transform.\n * @returns {Element}\n *   hast node.\n */\nfunction lib_element(state, node) {\n  const schema = state.schema\n\n  state.schema = node.namespaceURI === webNamespaces.svg ? property_information_svg : property_information_html\n\n  // Props.\n  let index = -1\n  /** @type {Record<string, string>} */\n  const props = {}\n\n  while (++index < node.attrs.length) {\n    const attribute = node.attrs[index]\n    const name =\n      (attribute.prefix ? attribute.prefix + ':' : '') + attribute.name\n    if (!hast_util_from_parse5_lib_own.call(proto, name)) {\n      props[name] = attribute.value\n    }\n  }\n\n  // Build.\n  const fn = state.schema.space === 'svg' ? s : lib_h\n  const result = fn(node.tagName, props, hast_util_from_parse5_lib_all(state, node.childNodes))\n  patch(state, node, result)\n\n  // Switch content.\n  if (result.tagName === 'template') {\n    const reference = /** @type {P5Template} */ (node)\n    const pos = reference.sourceCodeLocation\n    const startTag = pos && pos.startTag && lib_position(pos.startTag)\n    const endTag = pos && pos.endTag && lib_position(pos.endTag)\n\n    // Root in, root out.\n    const content = /** @type {Root} */ (hast_util_from_parse5_lib_one(state, reference.content))\n\n    if (startTag && endTag && state.file) {\n      content.position = {start: startTag.end, end: endTag.start}\n    }\n\n    result.content = content\n  }\n\n  state.schema = schema\n\n  return result\n}\n\n/**\n * Patch positional info from `from` onto `to`.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {P5Node} from\n *   p5 node.\n * @param {Nodes} to\n *   hast node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(state, from, to) {\n  if ('sourceCodeLocation' in from && from.sourceCodeLocation && state.file) {\n    const position = createLocation(state, to, from.sourceCodeLocation)\n\n    if (position) {\n      state.location = true\n      to.position = position\n    }\n  }\n}\n\n/**\n * Create clean positional information.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Nodes} node\n *   hast node.\n * @param {P5ElementLocation} location\n *   p5 location info.\n * @returns {Position | undefined}\n *   Position, or nothing.\n */\nfunction createLocation(state, node, location) {\n  const result = lib_position(location)\n\n  if (node.type === 'element') {\n    const tail = node.children[node.children.length - 1]\n\n    // Bug for unclosed with children.\n    // See: <https://github.com/inikulin/parse5/issues/109>.\n    if (\n      result &&\n      !location.endTag &&\n      tail &&\n      tail.position &&\n      tail.position.end\n    ) {\n      result.end = Object.assign({}, tail.position.end)\n    }\n\n    if (state.verbose) {\n      /** @type {Record<string, Position | undefined>} */\n      const props = {}\n      /** @type {string} */\n      let key\n\n      if (location.attrs) {\n        for (key in location.attrs) {\n          if (hast_util_from_parse5_lib_own.call(location.attrs, key)) {\n            props[find(state.schema, key).property] = lib_position(\n              location.attrs[key]\n            )\n          }\n        }\n      }\n\n      default_ok(location.startTag, 'a start tag should exist')\n      const opening = lib_position(location.startTag)\n      const closing = location.endTag ? lib_position(location.endTag) : undefined\n      /** @type {ElementData['position']} */\n      const data = {opening}\n      if (closing) data.closing = closing\n      data.properties = props\n\n      node.data = {position: data}\n    }\n  }\n\n  return result\n}\n\n/**\n * Turn a p5 location into a position.\n *\n * @param {P5Location} loc\n *   Location.\n * @returns {Position | undefined}\n *   Position or nothing.\n */\nfunction lib_position(loc) {\n  const start = hast_util_from_parse5_lib_point({\n    line: loc.startLine,\n    column: loc.startCol,\n    offset: loc.startOffset\n  })\n  const end = hast_util_from_parse5_lib_point({\n    line: loc.endLine,\n    column: loc.endCol,\n    offset: loc.endOffset\n  })\n\n  // @ts-expect-error: we do use `undefined` for points if one or the other\n  // exists.\n  return start || end ? {start, end} : undefined\n}\n\n/**\n * Filter out invalid points.\n *\n * @param {Point} point\n *   Point with potentially `undefined` values.\n * @returns {Point | undefined}\n *   Point or nothing.\n */\nfunction hast_util_from_parse5_lib_point(point) {\n  return point.line && point.column ? point : undefined\n}\n\n;// ./node_modules/parse5/dist/common/unicode.js\nconst UNDEFINED_CODE_POINTS = new Set([\n    65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n    393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n    720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n    1048575, 1114110, 1114111,\n]);\nconst REPLACEMENT_CHARACTER = '\\uFFFD';\nvar CODE_POINTS;\n(function (CODE_POINTS) {\n    CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n    CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n    CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n    CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n    CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n    CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n    CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n    CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n    CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n    CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n    CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n    CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n    CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_F\"] = 70] = \"LATIN_CAPITAL_F\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_X\"] = 88] = \"LATIN_CAPITAL_X\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n    CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n    CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_F\"] = 102] = \"LATIN_SMALL_F\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_X\"] = 120] = \"LATIN_SMALL_X\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n    CODE_POINTS[CODE_POINTS[\"REPLACEMENT_CHARACTER\"] = 65533] = \"REPLACEMENT_CHARACTER\";\n})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));\nconst SEQUENCES = {\n    DASH_DASH: '--',\n    CDATA_START: '[CDATA[',\n    DOCTYPE: 'doctype',\n    SCRIPT: 'script',\n    PUBLIC: 'public',\n    SYSTEM: 'system',\n};\n//Surrogates\nfunction isSurrogate(cp) {\n    return cp >= 55296 && cp <= 57343;\n}\nfunction isSurrogatePair(cp) {\n    return cp >= 56320 && cp <= 57343;\n}\nfunction getSurrogatePairCodePoint(cp1, cp2) {\n    return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nfunction isControlCodePoint(cp) {\n    return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n        (cp >= 0x7f && cp <= 0x9f));\n}\nfunction isUndefinedCodePoint(cp) {\n    return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n\n;// ./node_modules/parse5/dist/common/error-codes.js\nvar ERR;\n(function (ERR) {\n    ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n    ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n    ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n    ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n    ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n    ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n    ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n    ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n    ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n    ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n    ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n    ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n    ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n    ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n    ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n    ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n    ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n    ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n    ERR[\"eofInTag\"] = \"eof-in-tag\";\n    ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n    ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n    ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n    ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n    ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n    ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n    ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n    ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n    ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n    ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n    ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n    ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n    ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n    ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n    ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n    ERR[\"nestedComment\"] = \"nested-comment\";\n    ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n    ERR[\"eofInComment\"] = \"eof-in-comment\";\n    ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n    ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n    ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n    ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n    ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n    ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n    ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n    ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n    ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n    ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n    ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n    ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n    ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n    ERR[\"missingDoctype\"] = \"missing-doctype\";\n    ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n    ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n    ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n    ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n    ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n    ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n    ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n    ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n    ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR = ERR || (ERR = {}));\n\n;// ./node_modules/parse5/dist/tokenizer/preprocessor.js\n\n\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nclass Preprocessor {\n    constructor(handler) {\n        this.handler = handler;\n        this.html = '';\n        this.pos = -1;\n        // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n        this.lastGapPos = -2;\n        this.gapStack = [];\n        this.skipNextNewLine = false;\n        this.lastChunkWritten = false;\n        this.endOfChunkHit = false;\n        this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n        this.isEol = false;\n        this.lineStartPos = 0;\n        this.droppedBufferSize = 0;\n        this.line = 1;\n        //NOTE: avoid reporting errors twice on advance/retreat\n        this.lastErrOffset = -1;\n    }\n    /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n    get col() {\n        return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n    }\n    get offset() {\n        return this.droppedBufferSize + this.pos;\n    }\n    getError(code) {\n        const { line, col, offset } = this;\n        return {\n            code,\n            startLine: line,\n            endLine: line,\n            startCol: col,\n            endCol: col,\n            startOffset: offset,\n            endOffset: offset,\n        };\n    }\n    _err(code) {\n        if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n            this.lastErrOffset = this.offset;\n            this.handler.onParseError(this.getError(code));\n        }\n    }\n    _addGap() {\n        this.gapStack.push(this.lastGapPos);\n        this.lastGapPos = this.pos;\n    }\n    _processSurrogate(cp) {\n        //NOTE: try to peek a surrogate pair\n        if (this.pos !== this.html.length - 1) {\n            const nextCp = this.html.charCodeAt(this.pos + 1);\n            if (isSurrogatePair(nextCp)) {\n                //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n                this.pos++;\n                //NOTE: add a gap that should be avoided during retreat\n                this._addGap();\n                return getSurrogatePairCodePoint(cp, nextCp);\n            }\n        }\n        //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n        else if (!this.lastChunkWritten) {\n            this.endOfChunkHit = true;\n            return CODE_POINTS.EOF;\n        }\n        //NOTE: isolated surrogate\n        this._err(ERR.surrogateInInputStream);\n        return cp;\n    }\n    willDropParsedChunk() {\n        return this.pos > this.bufferWaterline;\n    }\n    dropParsedChunk() {\n        if (this.willDropParsedChunk()) {\n            this.html = this.html.substring(this.pos);\n            this.lineStartPos -= this.pos;\n            this.droppedBufferSize += this.pos;\n            this.pos = 0;\n            this.lastGapPos = -2;\n            this.gapStack.length = 0;\n        }\n    }\n    write(chunk, isLastChunk) {\n        if (this.html.length > 0) {\n            this.html += chunk;\n        }\n        else {\n            this.html = chunk;\n        }\n        this.endOfChunkHit = false;\n        this.lastChunkWritten = isLastChunk;\n    }\n    insertHtmlAtCurrentPos(chunk) {\n        this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n        this.endOfChunkHit = false;\n    }\n    startsWith(pattern, caseSensitive) {\n        // Check if our buffer has enough characters\n        if (this.pos + pattern.length > this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return false;\n        }\n        if (caseSensitive) {\n            return this.html.startsWith(pattern, this.pos);\n        }\n        for (let i = 0; i < pattern.length; i++) {\n            const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n            if (cp !== pattern.charCodeAt(i)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    peek(offset) {\n        const pos = this.pos + offset;\n        if (pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return CODE_POINTS.EOF;\n        }\n        const code = this.html.charCodeAt(pos);\n        return code === CODE_POINTS.CARRIAGE_RETURN ? CODE_POINTS.LINE_FEED : code;\n    }\n    advance() {\n        this.pos++;\n        //NOTE: LF should be in the last column of the line\n        if (this.isEol) {\n            this.isEol = false;\n            this.line++;\n            this.lineStartPos = this.pos;\n        }\n        if (this.pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return CODE_POINTS.EOF;\n        }\n        let cp = this.html.charCodeAt(this.pos);\n        //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n        if (cp === CODE_POINTS.CARRIAGE_RETURN) {\n            this.isEol = true;\n            this.skipNextNewLine = true;\n            return CODE_POINTS.LINE_FEED;\n        }\n        //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n        //must be ignored.\n        if (cp === CODE_POINTS.LINE_FEED) {\n            this.isEol = true;\n            if (this.skipNextNewLine) {\n                // `line` will be bumped again in the recursive call.\n                this.line--;\n                this.skipNextNewLine = false;\n                this._addGap();\n                return this.advance();\n            }\n        }\n        this.skipNextNewLine = false;\n        if (isSurrogate(cp)) {\n            cp = this._processSurrogate(cp);\n        }\n        //OPTIMIZATION: first check if code point is in the common allowed\n        //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n        //before going into detailed performance cost validation.\n        const isCommonValidRange = this.handler.onParseError === null ||\n            (cp > 0x1f && cp < 0x7f) ||\n            cp === CODE_POINTS.LINE_FEED ||\n            cp === CODE_POINTS.CARRIAGE_RETURN ||\n            (cp > 0x9f && cp < 64976);\n        if (!isCommonValidRange) {\n            this._checkForProblematicCharacters(cp);\n        }\n        return cp;\n    }\n    _checkForProblematicCharacters(cp) {\n        if (isControlCodePoint(cp)) {\n            this._err(ERR.controlCharacterInInputStream);\n        }\n        else if (isUndefinedCodePoint(cp)) {\n            this._err(ERR.noncharacterInInputStream);\n        }\n    }\n    retreat(count) {\n        this.pos -= count;\n        while (this.pos < this.lastGapPos) {\n            this.lastGapPos = this.gapStack.pop();\n            this.pos--;\n        }\n        this.isEol = false;\n    }\n}\n\n;// ./node_modules/parse5/dist/common/token.js\nvar TokenType;\n(function (TokenType) {\n    TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n    TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n    TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n    TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n    TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n    TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n    TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n    TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n    TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType = TokenType || (TokenType = {}));\nfunction getTokenAttr(token, attrName) {\n    for (let i = token.attrs.length - 1; i >= 0; i--) {\n        if (token.attrs[i].name === attrName) {\n            return token.attrs[i].value;\n        }\n    }\n    return null;\n}\n\n;// ./node_modules/entities/lib/esm/generated/decode-data-html.js\n// Generated using scripts/write-decode-map.ts\n/* harmony default export */ const decode_data_html = (new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n    .split(\"\")\n    .map((c) => c.charCodeAt(0))));\n\n;// ./node_modules/entities/lib/esm/generated/decode-data-xml.js\n// Generated using scripts/write-decode-map.ts\n/* harmony default export */ const decode_data_xml = (new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n    .split(\"\")\n    .map((c) => c.charCodeAt(0))));\n\n;// ./node_modules/entities/lib/esm/decode_codepoint.js\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar decode_codepoint_a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nconst fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(decode_codepoint_a = String.fromCodePoint) !== null && decode_codepoint_a !== void 0 ? decode_codepoint_a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 0xffff) {\n        codePoint -= 0x10000;\n        output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n        codePoint = 0xdc00 | (codePoint & 0x3ff);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nfunction replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n        return 0xfffd;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nfunction decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n\n;// ./node_modules/entities/lib/esm/decode.js\n\n\n\n// Re-export for use by eg. htmlparser2\n\n\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nvar BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nvar DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nclass EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param string The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(str, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (str.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(str, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(str, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(str, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(str, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(str, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(str, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param str The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(str, offset) {\n        if (offset >= str.length) {\n            return -1;\n        }\n        if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(str, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(str, offset);\n    }\n    addToNumericResult(str, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    parseInt(str.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param str The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(str, offset) {\n        const startIdx = offset;\n        while (offset < str.length) {\n            const char = str.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(str, startIdx, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(str, startIdx, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param str The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(str, offset) {\n        const startIdx = offset;\n        while (offset < str.length) {\n            const char = str.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(str, startIdx, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(str, startIdx, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param str The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(str, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < str.length; offset++, this.excess++) {\n            const char = str.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let ret = \"\";\n    const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n    return function decodeWithTrie(str, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n            ret += str.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const len = decoder.write(str, \n            // Skip the \"&\"\n            offset + 1);\n            if (len < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + len;\n            // If `len` is 0, skip the current `&` and continue.\n            offset = len === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = ret + str.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        ret = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nfunction determineBranch(decodeTree, current, nodeIdx, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIdx + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIdx;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midVal = decodeTree[mid];\n        if (midVal < char) {\n            lo = mid + 1;\n        }\n        else if (midVal > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = getDecoder(decode_data_html);\nconst xmlDecoder = getDecoder(decode_data_xml);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nfunction decodeHTML(str, mode = DecodingMode.Legacy) {\n    return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLAttribute(str) {\n    return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLStrict(str) {\n    return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeXML(str) {\n    return xmlDecoder(str, DecodingMode.Strict);\n}\n\n;// ./node_modules/parse5/dist/common/html.js\n/** All valid namespaces in HTML. */\nvar html_NS;\n(function (NS) {\n    NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n    NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n    NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n    NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n    NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n    NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(html_NS = html_NS || (html_NS = {}));\nvar ATTRS;\n(function (ATTRS) {\n    ATTRS[\"TYPE\"] = \"type\";\n    ATTRS[\"ACTION\"] = \"action\";\n    ATTRS[\"ENCODING\"] = \"encoding\";\n    ATTRS[\"PROMPT\"] = \"prompt\";\n    ATTRS[\"NAME\"] = \"name\";\n    ATTRS[\"COLOR\"] = \"color\";\n    ATTRS[\"FACE\"] = \"face\";\n    ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS = ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nvar DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n    DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n    DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n    DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nvar TAG_NAMES;\n(function (TAG_NAMES) {\n    TAG_NAMES[\"A\"] = \"a\";\n    TAG_NAMES[\"ADDRESS\"] = \"address\";\n    TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n    TAG_NAMES[\"APPLET\"] = \"applet\";\n    TAG_NAMES[\"AREA\"] = \"area\";\n    TAG_NAMES[\"ARTICLE\"] = \"article\";\n    TAG_NAMES[\"ASIDE\"] = \"aside\";\n    TAG_NAMES[\"B\"] = \"b\";\n    TAG_NAMES[\"BASE\"] = \"base\";\n    TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n    TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n    TAG_NAMES[\"BIG\"] = \"big\";\n    TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n    TAG_NAMES[\"BODY\"] = \"body\";\n    TAG_NAMES[\"BR\"] = \"br\";\n    TAG_NAMES[\"BUTTON\"] = \"button\";\n    TAG_NAMES[\"CAPTION\"] = \"caption\";\n    TAG_NAMES[\"CENTER\"] = \"center\";\n    TAG_NAMES[\"CODE\"] = \"code\";\n    TAG_NAMES[\"COL\"] = \"col\";\n    TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n    TAG_NAMES[\"DD\"] = \"dd\";\n    TAG_NAMES[\"DESC\"] = \"desc\";\n    TAG_NAMES[\"DETAILS\"] = \"details\";\n    TAG_NAMES[\"DIALOG\"] = \"dialog\";\n    TAG_NAMES[\"DIR\"] = \"dir\";\n    TAG_NAMES[\"DIV\"] = \"div\";\n    TAG_NAMES[\"DL\"] = \"dl\";\n    TAG_NAMES[\"DT\"] = \"dt\";\n    TAG_NAMES[\"EM\"] = \"em\";\n    TAG_NAMES[\"EMBED\"] = \"embed\";\n    TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n    TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n    TAG_NAMES[\"FIGURE\"] = \"figure\";\n    TAG_NAMES[\"FONT\"] = \"font\";\n    TAG_NAMES[\"FOOTER\"] = \"footer\";\n    TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n    TAG_NAMES[\"FORM\"] = \"form\";\n    TAG_NAMES[\"FRAME\"] = \"frame\";\n    TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n    TAG_NAMES[\"H1\"] = \"h1\";\n    TAG_NAMES[\"H2\"] = \"h2\";\n    TAG_NAMES[\"H3\"] = \"h3\";\n    TAG_NAMES[\"H4\"] = \"h4\";\n    TAG_NAMES[\"H5\"] = \"h5\";\n    TAG_NAMES[\"H6\"] = \"h6\";\n    TAG_NAMES[\"HEAD\"] = \"head\";\n    TAG_NAMES[\"HEADER\"] = \"header\";\n    TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n    TAG_NAMES[\"HR\"] = \"hr\";\n    TAG_NAMES[\"HTML\"] = \"html\";\n    TAG_NAMES[\"I\"] = \"i\";\n    TAG_NAMES[\"IMG\"] = \"img\";\n    TAG_NAMES[\"IMAGE\"] = \"image\";\n    TAG_NAMES[\"INPUT\"] = \"input\";\n    TAG_NAMES[\"IFRAME\"] = \"iframe\";\n    TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n    TAG_NAMES[\"LABEL\"] = \"label\";\n    TAG_NAMES[\"LI\"] = \"li\";\n    TAG_NAMES[\"LINK\"] = \"link\";\n    TAG_NAMES[\"LISTING\"] = \"listing\";\n    TAG_NAMES[\"MAIN\"] = \"main\";\n    TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n    TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n    TAG_NAMES[\"MATH\"] = \"math\";\n    TAG_NAMES[\"MENU\"] = \"menu\";\n    TAG_NAMES[\"META\"] = \"meta\";\n    TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n    TAG_NAMES[\"MI\"] = \"mi\";\n    TAG_NAMES[\"MO\"] = \"mo\";\n    TAG_NAMES[\"MN\"] = \"mn\";\n    TAG_NAMES[\"MS\"] = \"ms\";\n    TAG_NAMES[\"MTEXT\"] = \"mtext\";\n    TAG_NAMES[\"NAV\"] = \"nav\";\n    TAG_NAMES[\"NOBR\"] = \"nobr\";\n    TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n    TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n    TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n    TAG_NAMES[\"OBJECT\"] = \"object\";\n    TAG_NAMES[\"OL\"] = \"ol\";\n    TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n    TAG_NAMES[\"OPTION\"] = \"option\";\n    TAG_NAMES[\"P\"] = \"p\";\n    TAG_NAMES[\"PARAM\"] = \"param\";\n    TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n    TAG_NAMES[\"PRE\"] = \"pre\";\n    TAG_NAMES[\"RB\"] = \"rb\";\n    TAG_NAMES[\"RP\"] = \"rp\";\n    TAG_NAMES[\"RT\"] = \"rt\";\n    TAG_NAMES[\"RTC\"] = \"rtc\";\n    TAG_NAMES[\"RUBY\"] = \"ruby\";\n    TAG_NAMES[\"S\"] = \"s\";\n    TAG_NAMES[\"SCRIPT\"] = \"script\";\n    TAG_NAMES[\"SECTION\"] = \"section\";\n    TAG_NAMES[\"SELECT\"] = \"select\";\n    TAG_NAMES[\"SOURCE\"] = \"source\";\n    TAG_NAMES[\"SMALL\"] = \"small\";\n    TAG_NAMES[\"SPAN\"] = \"span\";\n    TAG_NAMES[\"STRIKE\"] = \"strike\";\n    TAG_NAMES[\"STRONG\"] = \"strong\";\n    TAG_NAMES[\"STYLE\"] = \"style\";\n    TAG_NAMES[\"SUB\"] = \"sub\";\n    TAG_NAMES[\"SUMMARY\"] = \"summary\";\n    TAG_NAMES[\"SUP\"] = \"sup\";\n    TAG_NAMES[\"TABLE\"] = \"table\";\n    TAG_NAMES[\"TBODY\"] = \"tbody\";\n    TAG_NAMES[\"TEMPLATE\"] = \"template\";\n    TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n    TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n    TAG_NAMES[\"TD\"] = \"td\";\n    TAG_NAMES[\"TH\"] = \"th\";\n    TAG_NAMES[\"THEAD\"] = \"thead\";\n    TAG_NAMES[\"TITLE\"] = \"title\";\n    TAG_NAMES[\"TR\"] = \"tr\";\n    TAG_NAMES[\"TRACK\"] = \"track\";\n    TAG_NAMES[\"TT\"] = \"tt\";\n    TAG_NAMES[\"U\"] = \"u\";\n    TAG_NAMES[\"UL\"] = \"ul\";\n    TAG_NAMES[\"SVG\"] = \"svg\";\n    TAG_NAMES[\"VAR\"] = \"var\";\n    TAG_NAMES[\"WBR\"] = \"wbr\";\n    TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nvar TAG_ID;\n(function (TAG_ID) {\n    TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n    TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n    TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n    TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n    TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n    TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n    TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n    TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n    TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n    TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n    TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n    TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n    TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n    TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n    TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n    TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n    TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n    TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n    TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n    TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n    TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n    TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n    TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n    TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n    TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n    TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n    TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n    TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n    TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n    TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n    TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n    TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n    TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n    TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n    TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n    TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n    TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n    TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n    TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n    TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n    TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n    TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n    TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n    TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n    TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n    TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n    TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n    TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n    TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n    TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n    TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n    TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n    TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n    TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n    TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n    TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n    TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n    TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n    TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n    TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n    TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n    TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n    TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n    TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n    TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n    TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n    TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n    TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n    TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n    TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n    TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n    TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n    TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n    TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n    TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n    TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n    TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n    TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n    TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n    TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n    TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n    TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n    TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n    TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n    TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n    TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n    TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n    TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n    TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n    TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n    TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n    TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n    TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n    TAG_ID[TAG_ID[\"SECTION\"] = 94] = \"SECTION\";\n    TAG_ID[TAG_ID[\"SELECT\"] = 95] = \"SELECT\";\n    TAG_ID[TAG_ID[\"SOURCE\"] = 96] = \"SOURCE\";\n    TAG_ID[TAG_ID[\"SMALL\"] = 97] = \"SMALL\";\n    TAG_ID[TAG_ID[\"SPAN\"] = 98] = \"SPAN\";\n    TAG_ID[TAG_ID[\"STRIKE\"] = 99] = \"STRIKE\";\n    TAG_ID[TAG_ID[\"STRONG\"] = 100] = \"STRONG\";\n    TAG_ID[TAG_ID[\"STYLE\"] = 101] = \"STYLE\";\n    TAG_ID[TAG_ID[\"SUB\"] = 102] = \"SUB\";\n    TAG_ID[TAG_ID[\"SUMMARY\"] = 103] = \"SUMMARY\";\n    TAG_ID[TAG_ID[\"SUP\"] = 104] = \"SUP\";\n    TAG_ID[TAG_ID[\"TABLE\"] = 105] = \"TABLE\";\n    TAG_ID[TAG_ID[\"TBODY\"] = 106] = \"TBODY\";\n    TAG_ID[TAG_ID[\"TEMPLATE\"] = 107] = \"TEMPLATE\";\n    TAG_ID[TAG_ID[\"TEXTAREA\"] = 108] = \"TEXTAREA\";\n    TAG_ID[TAG_ID[\"TFOOT\"] = 109] = \"TFOOT\";\n    TAG_ID[TAG_ID[\"TD\"] = 110] = \"TD\";\n    TAG_ID[TAG_ID[\"TH\"] = 111] = \"TH\";\n    TAG_ID[TAG_ID[\"THEAD\"] = 112] = \"THEAD\";\n    TAG_ID[TAG_ID[\"TITLE\"] = 113] = \"TITLE\";\n    TAG_ID[TAG_ID[\"TR\"] = 114] = \"TR\";\n    TAG_ID[TAG_ID[\"TRACK\"] = 115] = \"TRACK\";\n    TAG_ID[TAG_ID[\"TT\"] = 116] = \"TT\";\n    TAG_ID[TAG_ID[\"U\"] = 117] = \"U\";\n    TAG_ID[TAG_ID[\"UL\"] = 118] = \"UL\";\n    TAG_ID[TAG_ID[\"SVG\"] = 119] = \"SVG\";\n    TAG_ID[TAG_ID[\"VAR\"] = 120] = \"VAR\";\n    TAG_ID[TAG_ID[\"WBR\"] = 121] = \"WBR\";\n    TAG_ID[TAG_ID[\"XMP\"] = 122] = \"XMP\";\n})(TAG_ID = TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n    [TAG_NAMES.A, TAG_ID.A],\n    [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n    [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n    [TAG_NAMES.APPLET, TAG_ID.APPLET],\n    [TAG_NAMES.AREA, TAG_ID.AREA],\n    [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n    [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n    [TAG_NAMES.B, TAG_ID.B],\n    [TAG_NAMES.BASE, TAG_ID.BASE],\n    [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n    [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n    [TAG_NAMES.BIG, TAG_ID.BIG],\n    [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n    [TAG_NAMES.BODY, TAG_ID.BODY],\n    [TAG_NAMES.BR, TAG_ID.BR],\n    [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n    [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n    [TAG_NAMES.CENTER, TAG_ID.CENTER],\n    [TAG_NAMES.CODE, TAG_ID.CODE],\n    [TAG_NAMES.COL, TAG_ID.COL],\n    [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n    [TAG_NAMES.DD, TAG_ID.DD],\n    [TAG_NAMES.DESC, TAG_ID.DESC],\n    [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n    [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n    [TAG_NAMES.DIR, TAG_ID.DIR],\n    [TAG_NAMES.DIV, TAG_ID.DIV],\n    [TAG_NAMES.DL, TAG_ID.DL],\n    [TAG_NAMES.DT, TAG_ID.DT],\n    [TAG_NAMES.EM, TAG_ID.EM],\n    [TAG_NAMES.EMBED, TAG_ID.EMBED],\n    [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n    [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n    [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n    [TAG_NAMES.FONT, TAG_ID.FONT],\n    [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n    [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n    [TAG_NAMES.FORM, TAG_ID.FORM],\n    [TAG_NAMES.FRAME, TAG_ID.FRAME],\n    [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n    [TAG_NAMES.H1, TAG_ID.H1],\n    [TAG_NAMES.H2, TAG_ID.H2],\n    [TAG_NAMES.H3, TAG_ID.H3],\n    [TAG_NAMES.H4, TAG_ID.H4],\n    [TAG_NAMES.H5, TAG_ID.H5],\n    [TAG_NAMES.H6, TAG_ID.H6],\n    [TAG_NAMES.HEAD, TAG_ID.HEAD],\n    [TAG_NAMES.HEADER, TAG_ID.HEADER],\n    [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n    [TAG_NAMES.HR, TAG_ID.HR],\n    [TAG_NAMES.HTML, TAG_ID.HTML],\n    [TAG_NAMES.I, TAG_ID.I],\n    [TAG_NAMES.IMG, TAG_ID.IMG],\n    [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n    [TAG_NAMES.INPUT, TAG_ID.INPUT],\n    [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n    [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n    [TAG_NAMES.LABEL, TAG_ID.LABEL],\n    [TAG_NAMES.LI, TAG_ID.LI],\n    [TAG_NAMES.LINK, TAG_ID.LINK],\n    [TAG_NAMES.LISTING, TAG_ID.LISTING],\n    [TAG_NAMES.MAIN, TAG_ID.MAIN],\n    [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n    [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n    [TAG_NAMES.MATH, TAG_ID.MATH],\n    [TAG_NAMES.MENU, TAG_ID.MENU],\n    [TAG_NAMES.META, TAG_ID.META],\n    [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n    [TAG_NAMES.MI, TAG_ID.MI],\n    [TAG_NAMES.MO, TAG_ID.MO],\n    [TAG_NAMES.MN, TAG_ID.MN],\n    [TAG_NAMES.MS, TAG_ID.MS],\n    [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n    [TAG_NAMES.NAV, TAG_ID.NAV],\n    [TAG_NAMES.NOBR, TAG_ID.NOBR],\n    [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n    [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n    [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n    [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n    [TAG_NAMES.OL, TAG_ID.OL],\n    [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n    [TAG_NAMES.OPTION, TAG_ID.OPTION],\n    [TAG_NAMES.P, TAG_ID.P],\n    [TAG_NAMES.PARAM, TAG_ID.PARAM],\n    [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n    [TAG_NAMES.PRE, TAG_ID.PRE],\n    [TAG_NAMES.RB, TAG_ID.RB],\n    [TAG_NAMES.RP, TAG_ID.RP],\n    [TAG_NAMES.RT, TAG_ID.RT],\n    [TAG_NAMES.RTC, TAG_ID.RTC],\n    [TAG_NAMES.RUBY, TAG_ID.RUBY],\n    [TAG_NAMES.S, TAG_ID.S],\n    [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n    [TAG_NAMES.SECTION, TAG_ID.SECTION],\n    [TAG_NAMES.SELECT, TAG_ID.SELECT],\n    [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n    [TAG_NAMES.SMALL, TAG_ID.SMALL],\n    [TAG_NAMES.SPAN, TAG_ID.SPAN],\n    [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n    [TAG_NAMES.STRONG, TAG_ID.STRONG],\n    [TAG_NAMES.STYLE, TAG_ID.STYLE],\n    [TAG_NAMES.SUB, TAG_ID.SUB],\n    [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n    [TAG_NAMES.SUP, TAG_ID.SUP],\n    [TAG_NAMES.TABLE, TAG_ID.TABLE],\n    [TAG_NAMES.TBODY, TAG_ID.TBODY],\n    [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n    [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n    [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n    [TAG_NAMES.TD, TAG_ID.TD],\n    [TAG_NAMES.TH, TAG_ID.TH],\n    [TAG_NAMES.THEAD, TAG_ID.THEAD],\n    [TAG_NAMES.TITLE, TAG_ID.TITLE],\n    [TAG_NAMES.TR, TAG_ID.TR],\n    [TAG_NAMES.TRACK, TAG_ID.TRACK],\n    [TAG_NAMES.TT, TAG_ID.TT],\n    [TAG_NAMES.U, TAG_ID.U],\n    [TAG_NAMES.UL, TAG_ID.UL],\n    [TAG_NAMES.SVG, TAG_ID.SVG],\n    [TAG_NAMES.VAR, TAG_ID.VAR],\n    [TAG_NAMES.WBR, TAG_ID.WBR],\n    [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nfunction getTagID(tagName) {\n    var _a;\n    return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst html_$ = TAG_ID;\nconst SPECIAL_ELEMENTS = {\n    [html_NS.HTML]: new Set([\n        html_$.ADDRESS,\n        html_$.APPLET,\n        html_$.AREA,\n        html_$.ARTICLE,\n        html_$.ASIDE,\n        html_$.BASE,\n        html_$.BASEFONT,\n        html_$.BGSOUND,\n        html_$.BLOCKQUOTE,\n        html_$.BODY,\n        html_$.BR,\n        html_$.BUTTON,\n        html_$.CAPTION,\n        html_$.CENTER,\n        html_$.COL,\n        html_$.COLGROUP,\n        html_$.DD,\n        html_$.DETAILS,\n        html_$.DIR,\n        html_$.DIV,\n        html_$.DL,\n        html_$.DT,\n        html_$.EMBED,\n        html_$.FIELDSET,\n        html_$.FIGCAPTION,\n        html_$.FIGURE,\n        html_$.FOOTER,\n        html_$.FORM,\n        html_$.FRAME,\n        html_$.FRAMESET,\n        html_$.H1,\n        html_$.H2,\n        html_$.H3,\n        html_$.H4,\n        html_$.H5,\n        html_$.H6,\n        html_$.HEAD,\n        html_$.HEADER,\n        html_$.HGROUP,\n        html_$.HR,\n        html_$.HTML,\n        html_$.IFRAME,\n        html_$.IMG,\n        html_$.INPUT,\n        html_$.LI,\n        html_$.LINK,\n        html_$.LISTING,\n        html_$.MAIN,\n        html_$.MARQUEE,\n        html_$.MENU,\n        html_$.META,\n        html_$.NAV,\n        html_$.NOEMBED,\n        html_$.NOFRAMES,\n        html_$.NOSCRIPT,\n        html_$.OBJECT,\n        html_$.OL,\n        html_$.P,\n        html_$.PARAM,\n        html_$.PLAINTEXT,\n        html_$.PRE,\n        html_$.SCRIPT,\n        html_$.SECTION,\n        html_$.SELECT,\n        html_$.SOURCE,\n        html_$.STYLE,\n        html_$.SUMMARY,\n        html_$.TABLE,\n        html_$.TBODY,\n        html_$.TD,\n        html_$.TEMPLATE,\n        html_$.TEXTAREA,\n        html_$.TFOOT,\n        html_$.TH,\n        html_$.THEAD,\n        html_$.TITLE,\n        html_$.TR,\n        html_$.TRACK,\n        html_$.UL,\n        html_$.WBR,\n        html_$.XMP,\n    ]),\n    [html_NS.MATHML]: new Set([html_$.MI, html_$.MO, html_$.MN, html_$.MS, html_$.MTEXT, html_$.ANNOTATION_XML]),\n    [html_NS.SVG]: new Set([html_$.TITLE, html_$.FOREIGN_OBJECT, html_$.DESC]),\n    [html_NS.XLINK]: new Set(),\n    [html_NS.XML]: new Set(),\n    [html_NS.XMLNS]: new Set(),\n};\nfunction isNumberedHeader(tn) {\n    return tn === html_$.H1 || tn === html_$.H2 || tn === html_$.H3 || tn === html_$.H4 || tn === html_$.H5 || tn === html_$.H6;\n}\nconst UNESCAPED_TEXT = new Set([\n    TAG_NAMES.STYLE,\n    TAG_NAMES.SCRIPT,\n    TAG_NAMES.XMP,\n    TAG_NAMES.IFRAME,\n    TAG_NAMES.NOEMBED,\n    TAG_NAMES.NOFRAMES,\n    TAG_NAMES.PLAINTEXT,\n]);\nfunction html_hasUnescapedText(tn, scriptingEnabled) {\n    return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n\n;// ./node_modules/parse5/dist/tokenizer/index.js\n\n\n\n\n\n\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([\n    [0x80, 8364],\n    [0x82, 8218],\n    [0x83, 402],\n    [0x84, 8222],\n    [0x85, 8230],\n    [0x86, 8224],\n    [0x87, 8225],\n    [0x88, 710],\n    [0x89, 8240],\n    [0x8a, 352],\n    [0x8b, 8249],\n    [0x8c, 338],\n    [0x8e, 381],\n    [0x91, 8216],\n    [0x92, 8217],\n    [0x93, 8220],\n    [0x94, 8221],\n    [0x95, 8226],\n    [0x96, 8211],\n    [0x97, 8212],\n    [0x98, 732],\n    [0x99, 8482],\n    [0x9a, 353],\n    [0x9b, 8250],\n    [0x9c, 339],\n    [0x9e, 382],\n    [0x9f, 376],\n]);\n//States\nvar State;\n(function (State) {\n    State[State[\"DATA\"] = 0] = \"DATA\";\n    State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n    State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n    State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n    State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n    State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n    State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n    State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n    State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n    State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n    State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n    State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n    State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n    State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n    State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n    State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n    State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n    State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n    State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n    State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n    State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n    State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n    State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n    State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n    State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n    State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n    State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n    State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n    State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n    State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n    State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n    State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n    State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n    State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n    State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n    State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n    State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n    State[State[\"NAMED_CHARACTER_REFERENCE\"] = 72] = \"NAMED_CHARACTER_REFERENCE\";\n    State[State[\"AMBIGUOUS_AMPERSAND\"] = 73] = \"AMBIGUOUS_AMPERSAND\";\n    State[State[\"NUMERIC_CHARACTER_REFERENCE\"] = 74] = \"NUMERIC_CHARACTER_REFERENCE\";\n    State[State[\"HEXADEMICAL_CHARACTER_REFERENCE_START\"] = 75] = \"HEXADEMICAL_CHARACTER_REFERENCE_START\";\n    State[State[\"HEXADEMICAL_CHARACTER_REFERENCE\"] = 76] = \"HEXADEMICAL_CHARACTER_REFERENCE\";\n    State[State[\"DECIMAL_CHARACTER_REFERENCE\"] = 77] = \"DECIMAL_CHARACTER_REFERENCE\";\n    State[State[\"NUMERIC_CHARACTER_REFERENCE_END\"] = 78] = \"NUMERIC_CHARACTER_REFERENCE_END\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nconst TokenizerMode = {\n    DATA: State.DATA,\n    RCDATA: State.RCDATA,\n    RAWTEXT: State.RAWTEXT,\n    SCRIPT_DATA: State.SCRIPT_DATA,\n    PLAINTEXT: State.PLAINTEXT,\n    CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n    return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n    return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n    return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n    return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction tokenizer_isAsciiAlphaNumeric(cp) {\n    return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction isAsciiUpperHexDigit(cp) {\n    return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_F;\n}\nfunction isAsciiLowerHexDigit(cp) {\n    return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_F;\n}\nfunction isAsciiHexDigit(cp) {\n    return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\nfunction toAsciiLower(cp) {\n    return cp + 32;\n}\nfunction isWhitespace(cp) {\n    return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED;\n}\nfunction tokenizer_isEntityInAttributeInvalidEnd(nextCp) {\n    return nextCp === CODE_POINTS.EQUALS_SIGN || tokenizer_isAsciiAlphaNumeric(nextCp);\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n    return isWhitespace(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN;\n}\n//Tokenizer\nclass Tokenizer {\n    constructor(options, handler) {\n        this.options = options;\n        this.handler = handler;\n        this.paused = false;\n        /** Ensures that the parsing loop isn't run multiple times at once. */\n        this.inLoop = false;\n        /**\n         * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n         * and that it is not an integration point for either MathML or HTML.\n         *\n         * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n         */\n        this.inForeignNode = false;\n        this.lastStartTagName = '';\n        this.active = false;\n        this.state = State.DATA;\n        this.returnState = State.DATA;\n        this.charRefCode = -1;\n        this.consumedAfterSnapshot = -1;\n        this.currentCharacterToken = null;\n        this.currentToken = null;\n        this.currentAttr = { name: '', value: '' };\n        this.preprocessor = new Preprocessor(handler);\n        this.currentLocation = this.getCurrentLocation(-1);\n    }\n    //Errors\n    _err(code) {\n        var _a, _b;\n        (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));\n    }\n    // NOTE: `offset` may never run across line boundaries.\n    getCurrentLocation(offset) {\n        if (!this.options.sourceCodeLocationInfo) {\n            return null;\n        }\n        return {\n            startLine: this.preprocessor.line,\n            startCol: this.preprocessor.col - offset,\n            startOffset: this.preprocessor.offset - offset,\n            endLine: -1,\n            endCol: -1,\n            endOffset: -1,\n        };\n    }\n    _runParsingLoop() {\n        if (this.inLoop)\n            return;\n        this.inLoop = true;\n        while (this.active && !this.paused) {\n            this.consumedAfterSnapshot = 0;\n            const cp = this._consume();\n            if (!this._ensureHibernation()) {\n                this._callState(cp);\n            }\n        }\n        this.inLoop = false;\n    }\n    //API\n    pause() {\n        this.paused = true;\n    }\n    resume(writeCallback) {\n        if (!this.paused) {\n            throw new Error('Parser was already resumed');\n        }\n        this.paused = false;\n        // Necessary for synchronous resume.\n        if (this.inLoop)\n            return;\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    write(chunk, isLastChunk, writeCallback) {\n        this.active = true;\n        this.preprocessor.write(chunk, isLastChunk);\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    insertHtmlAtCurrentPos(chunk) {\n        this.active = true;\n        this.preprocessor.insertHtmlAtCurrentPos(chunk);\n        this._runParsingLoop();\n    }\n    //Hibernation\n    _ensureHibernation() {\n        if (this.preprocessor.endOfChunkHit) {\n            this._unconsume(this.consumedAfterSnapshot);\n            this.active = false;\n            return true;\n        }\n        return false;\n    }\n    //Consumption\n    _consume() {\n        this.consumedAfterSnapshot++;\n        return this.preprocessor.advance();\n    }\n    _unconsume(count) {\n        this.consumedAfterSnapshot -= count;\n        this.preprocessor.retreat(count);\n    }\n    _reconsumeInState(state, cp) {\n        this.state = state;\n        this._callState(cp);\n    }\n    _advanceBy(count) {\n        this.consumedAfterSnapshot += count;\n        for (let i = 0; i < count; i++) {\n            this.preprocessor.advance();\n        }\n    }\n    _consumeSequenceIfMatch(pattern, caseSensitive) {\n        if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n            // We will already have consumed one character before calling this method.\n            this._advanceBy(pattern.length - 1);\n            return true;\n        }\n        return false;\n    }\n    //Token creation\n    _createStartTagToken() {\n        this.currentToken = {\n            type: TokenType.START_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(1),\n        };\n    }\n    _createEndTagToken() {\n        this.currentToken = {\n            type: TokenType.END_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(2),\n        };\n    }\n    _createCommentToken(offset) {\n        this.currentToken = {\n            type: TokenType.COMMENT,\n            data: '',\n            location: this.getCurrentLocation(offset),\n        };\n    }\n    _createDoctypeToken(initialName) {\n        this.currentToken = {\n            type: TokenType.DOCTYPE,\n            name: initialName,\n            forceQuirks: false,\n            publicId: null,\n            systemId: null,\n            location: this.currentLocation,\n        };\n    }\n    _createCharacterToken(type, chars) {\n        this.currentCharacterToken = {\n            type,\n            chars,\n            location: this.currentLocation,\n        };\n    }\n    //Tag attributes\n    _createAttr(attrNameFirstCh) {\n        this.currentAttr = {\n            name: attrNameFirstCh,\n            value: '',\n        };\n        this.currentLocation = this.getCurrentLocation(0);\n    }\n    _leaveAttrName() {\n        var _a;\n        var _b;\n        const token = this.currentToken;\n        if (getTokenAttr(token, this.currentAttr.name) === null) {\n            token.attrs.push(this.currentAttr);\n            if (token.location && this.currentLocation) {\n                const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n                attrLocations[this.currentAttr.name] = this.currentLocation;\n                // Set end location\n                this._leaveAttrValue();\n            }\n        }\n        else {\n            this._err(ERR.duplicateAttribute);\n        }\n    }\n    _leaveAttrValue() {\n        if (this.currentLocation) {\n            this.currentLocation.endLine = this.preprocessor.line;\n            this.currentLocation.endCol = this.preprocessor.col;\n            this.currentLocation.endOffset = this.preprocessor.offset;\n        }\n    }\n    //Token emission\n    prepareToken(ct) {\n        this._emitCurrentCharacterToken(ct.location);\n        this.currentToken = null;\n        if (ct.location) {\n            ct.location.endLine = this.preprocessor.line;\n            ct.location.endCol = this.preprocessor.col + 1;\n            ct.location.endOffset = this.preprocessor.offset + 1;\n        }\n        this.currentLocation = this.getCurrentLocation(-1);\n    }\n    emitCurrentTagToken() {\n        const ct = this.currentToken;\n        this.prepareToken(ct);\n        ct.tagID = getTagID(ct.tagName);\n        if (ct.type === TokenType.START_TAG) {\n            this.lastStartTagName = ct.tagName;\n            this.handler.onStartTag(ct);\n        }\n        else {\n            if (ct.attrs.length > 0) {\n                this._err(ERR.endTagWithAttributes);\n            }\n            if (ct.selfClosing) {\n                this._err(ERR.endTagWithTrailingSolidus);\n            }\n            this.handler.onEndTag(ct);\n        }\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentComment(ct) {\n        this.prepareToken(ct);\n        this.handler.onComment(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentDoctype(ct) {\n        this.prepareToken(ct);\n        this.handler.onDoctype(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    _emitCurrentCharacterToken(nextLocation) {\n        if (this.currentCharacterToken) {\n            //NOTE: if we have a pending character token, make it's end location equal to the\n            //current token's start location.\n            if (nextLocation && this.currentCharacterToken.location) {\n                this.currentCharacterToken.location.endLine = nextLocation.startLine;\n                this.currentCharacterToken.location.endCol = nextLocation.startCol;\n                this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n            }\n            switch (this.currentCharacterToken.type) {\n                case TokenType.CHARACTER: {\n                    this.handler.onCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.NULL_CHARACTER: {\n                    this.handler.onNullCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.WHITESPACE_CHARACTER: {\n                    this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n                    break;\n                }\n            }\n            this.currentCharacterToken = null;\n        }\n    }\n    _emitEOFToken() {\n        const location = this.getCurrentLocation(0);\n        if (location) {\n            location.endLine = location.startLine;\n            location.endCol = location.startCol;\n            location.endOffset = location.startOffset;\n        }\n        this._emitCurrentCharacterToken(location);\n        this.handler.onEof({ type: TokenType.EOF, location });\n        this.active = false;\n    }\n    //Characters emission\n    //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n    //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n    //If we have a sequence of characters that belong to the same group, the parser can process it\n    //as a single solid character token.\n    //So, there are 3 types of character tokens in parse5:\n    //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n    //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n  \\r\\t   \\f')\n    //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n    _appendCharToCurrentCharacterToken(type, ch) {\n        if (this.currentCharacterToken) {\n            if (this.currentCharacterToken.type !== type) {\n                this.currentLocation = this.getCurrentLocation(0);\n                this._emitCurrentCharacterToken(this.currentLocation);\n                this.preprocessor.dropParsedChunk();\n            }\n            else {\n                this.currentCharacterToken.chars += ch;\n                return;\n            }\n        }\n        this._createCharacterToken(type, ch);\n    }\n    _emitCodePoint(cp) {\n        const type = isWhitespace(cp)\n            ? TokenType.WHITESPACE_CHARACTER\n            : cp === CODE_POINTS.NULL\n                ? TokenType.NULL_CHARACTER\n                : TokenType.CHARACTER;\n        this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n    }\n    //NOTE: used when we emit characters explicitly.\n    //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n    _emitChars(ch) {\n        this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n    }\n    // Character reference helpers\n    _matchNamedCharacterReference(cp) {\n        let result = null;\n        let excess = 0;\n        let withoutSemicolon = false;\n        for (let i = 0, current = decode_data_html[0]; i >= 0; cp = this._consume()) {\n            i = determineBranch(decode_data_html, current, i + 1, cp);\n            if (i < 0)\n                break;\n            excess += 1;\n            current = decode_data_html[i];\n            const masked = current & BinTrieFlags.VALUE_LENGTH;\n            // If the branch is a value, store it and continue\n            if (masked) {\n                // The mask is the number of bytes of the value, including the current byte.\n                const valueLength = (masked >> 14) - 1;\n                // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n                // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n                if (cp !== CODE_POINTS.SEMICOLON &&\n                    this._isCharacterReferenceInAttribute() &&\n                    tokenizer_isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {\n                    //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after\n                    //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.\n                    result = [CODE_POINTS.AMPERSAND];\n                    // Skip over the value.\n                    i += valueLength;\n                }\n                else {\n                    // If this is a surrogate pair, consume the next two bytes.\n                    result =\n                        valueLength === 0\n                            ? [decode_data_html[i] & ~BinTrieFlags.VALUE_LENGTH]\n                            : valueLength === 1\n                                ? [decode_data_html[++i]]\n                                : [decode_data_html[++i], decode_data_html[++i]];\n                    excess = 0;\n                    withoutSemicolon = cp !== CODE_POINTS.SEMICOLON;\n                }\n                if (valueLength === 0) {\n                    // If the value is zero-length, we're done.\n                    this._consume();\n                    break;\n                }\n            }\n        }\n        this._unconsume(excess);\n        if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n        }\n        // We want to emit the error above on the code point after the entity.\n        // We always consume one code point too many in the loop, and we wait to\n        // unconsume it until after the error is emitted.\n        this._unconsume(1);\n        return result;\n    }\n    _isCharacterReferenceInAttribute() {\n        return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n    }\n    _flushCodePointConsumedAsCharacterReference(cp) {\n        if (this._isCharacterReferenceInAttribute()) {\n            this.currentAttr.value += String.fromCodePoint(cp);\n        }\n        else {\n            this._emitCodePoint(cp);\n        }\n    }\n    // Calling states this way turns out to be much faster than any other approach.\n    _callState(cp) {\n        switch (this.state) {\n            case State.DATA: {\n                this._stateData(cp);\n                break;\n            }\n            case State.RCDATA: {\n                this._stateRcdata(cp);\n                break;\n            }\n            case State.RAWTEXT: {\n                this._stateRawtext(cp);\n                break;\n            }\n            case State.SCRIPT_DATA: {\n                this._stateScriptData(cp);\n                break;\n            }\n            case State.PLAINTEXT: {\n                this._statePlaintext(cp);\n                break;\n            }\n            case State.TAG_OPEN: {\n                this._stateTagOpen(cp);\n                break;\n            }\n            case State.END_TAG_OPEN: {\n                this._stateEndTagOpen(cp);\n                break;\n            }\n            case State.TAG_NAME: {\n                this._stateTagName(cp);\n                break;\n            }\n            case State.RCDATA_LESS_THAN_SIGN: {\n                this._stateRcdataLessThanSign(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_OPEN: {\n                this._stateRcdataEndTagOpen(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_NAME: {\n                this._stateRcdataEndTagName(cp);\n                break;\n            }\n            case State.RAWTEXT_LESS_THAN_SIGN: {\n                this._stateRawtextLessThanSign(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_OPEN: {\n                this._stateRawtextEndTagOpen(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_NAME: {\n                this._stateRawtextEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n                this._stateScriptDataLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_OPEN: {\n                this._stateScriptDataEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_NAME: {\n                this._stateScriptDataEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START: {\n                this._stateScriptDataEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n                this._stateScriptDataEscapeStartDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED: {\n                this._stateScriptDataEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH: {\n                this._stateScriptDataEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n                this._stateScriptDataEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n                this._stateScriptDataEscapedEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n                this._stateScriptDataEscapedEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n                this._stateScriptDataDoubleEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n                this._stateScriptDataDoubleEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n                this._stateScriptDataDoubleEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n                this._stateScriptDataDoubleEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataDoubleEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n                this._stateScriptDataDoubleEscapeEnd(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_NAME: {\n                this._stateBeforeAttributeName(cp);\n                break;\n            }\n            case State.ATTRIBUTE_NAME: {\n                this._stateAttributeName(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_NAME: {\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_VALUE: {\n                this._stateBeforeAttributeValue(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n                this._stateAttributeValueDoubleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n                this._stateAttributeValueSingleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_UNQUOTED: {\n                this._stateAttributeValueUnquoted(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n                this._stateAfterAttributeValueQuoted(cp);\n                break;\n            }\n            case State.SELF_CLOSING_START_TAG: {\n                this._stateSelfClosingStartTag(cp);\n                break;\n            }\n            case State.BOGUS_COMMENT: {\n                this._stateBogusComment(cp);\n                break;\n            }\n            case State.MARKUP_DECLARATION_OPEN: {\n                this._stateMarkupDeclarationOpen(cp);\n                break;\n            }\n            case State.COMMENT_START: {\n                this._stateCommentStart(cp);\n                break;\n            }\n            case State.COMMENT_START_DASH: {\n                this._stateCommentStartDash(cp);\n                break;\n            }\n            case State.COMMENT: {\n                this._stateComment(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN: {\n                this._stateCommentLessThanSign(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG: {\n                this._stateCommentLessThanSignBang(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n                this._stateCommentLessThanSignBangDash(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n                this._stateCommentLessThanSignBangDashDash(cp);\n                break;\n            }\n            case State.COMMENT_END_DASH: {\n                this._stateCommentEndDash(cp);\n                break;\n            }\n            case State.COMMENT_END: {\n                this._stateCommentEnd(cp);\n                break;\n            }\n            case State.COMMENT_END_BANG: {\n                this._stateCommentEndBang(cp);\n                break;\n            }\n            case State.DOCTYPE: {\n                this._stateDoctype(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_NAME: {\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case State.DOCTYPE_NAME: {\n                this._stateDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_NAME: {\n                this._stateAfterDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n                this._stateAfterDoctypePublicKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateBeforeDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypePublicIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateAfterDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n                this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n                this._stateAfterDoctypeSystemKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateBeforeDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateAfterDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.BOGUS_DOCTYPE: {\n                this._stateBogusDoctype(cp);\n                break;\n            }\n            case State.CDATA_SECTION: {\n                this._stateCdataSection(cp);\n                break;\n            }\n            case State.CDATA_SECTION_BRACKET: {\n                this._stateCdataSectionBracket(cp);\n                break;\n            }\n            case State.CDATA_SECTION_END: {\n                this._stateCdataSectionEnd(cp);\n                break;\n            }\n            case State.CHARACTER_REFERENCE: {\n                this._stateCharacterReference(cp);\n                break;\n            }\n            case State.NAMED_CHARACTER_REFERENCE: {\n                this._stateNamedCharacterReference(cp);\n                break;\n            }\n            case State.AMBIGUOUS_AMPERSAND: {\n                this._stateAmbiguousAmpersand(cp);\n                break;\n            }\n            case State.NUMERIC_CHARACTER_REFERENCE: {\n                this._stateNumericCharacterReference(cp);\n                break;\n            }\n            case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {\n                this._stateHexademicalCharacterReferenceStart(cp);\n                break;\n            }\n            case State.HEXADEMICAL_CHARACTER_REFERENCE: {\n                this._stateHexademicalCharacterReference(cp);\n                break;\n            }\n            case State.DECIMAL_CHARACTER_REFERENCE: {\n                this._stateDecimalCharacterReference(cp);\n                break;\n            }\n            case State.NUMERIC_CHARACTER_REFERENCE_END: {\n                this._stateNumericCharacterReferenceEnd(cp);\n                break;\n            }\n            default: {\n                throw new Error('Unknown state');\n            }\n        }\n    }\n    // State machine\n    // Data state\n    //------------------------------------------------------------------\n    _stateData(cp) {\n        switch (cp) {\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.TAG_OPEN;\n                break;\n            }\n            case CODE_POINTS.AMPERSAND: {\n                this.returnState = State.DATA;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitCodePoint(cp);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    //  RCDATA state\n    //------------------------------------------------------------------\n    _stateRcdata(cp) {\n        switch (cp) {\n            case CODE_POINTS.AMPERSAND: {\n                this.returnState = State.RCDATA;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.RCDATA_LESS_THAN_SIGN;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // RAWTEXT state\n    //------------------------------------------------------------------\n    _stateRawtext(cp) {\n        switch (cp) {\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.RAWTEXT_LESS_THAN_SIGN;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data state\n    //------------------------------------------------------------------\n    _stateScriptData(cp) {\n        switch (cp) {\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // PLAINTEXT state\n    //------------------------------------------------------------------\n    _statePlaintext(cp) {\n        switch (cp) {\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Tag open state\n    //------------------------------------------------------------------\n    _stateTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createStartTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case CODE_POINTS.EXCLAMATION_MARK: {\n                    this.state = State.MARKUP_DECLARATION_OPEN;\n                    break;\n                }\n                case CODE_POINTS.SOLIDUS: {\n                    this.state = State.END_TAG_OPEN;\n                    break;\n                }\n                case CODE_POINTS.QUESTION_MARK: {\n                    this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n                    this._createCommentToken(1);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                    break;\n                }\n                case CODE_POINTS.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('<');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._emitChars('<');\n                    this.state = State.DATA;\n                    this._stateData(cp);\n                }\n            }\n    }\n    // End tag open state\n    //------------------------------------------------------------------\n    _stateEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case CODE_POINTS.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingEndTagName);\n                    this.state = State.DATA;\n                    break;\n                }\n                case CODE_POINTS.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('</');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._createCommentToken(2);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                }\n            }\n    }\n    // Tag name state\n    //------------------------------------------------------------------\n    _stateTagName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case CODE_POINTS.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.tagName += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // RCDATA less-than sign state\n    //------------------------------------------------------------------\n    _stateRcdataLessThanSign(cp) {\n        if (cp === CODE_POINTS.SOLIDUS) {\n            this.state = State.RCDATA_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RCDATA end tag open state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RCDATA_END_TAG_NAME;\n            this._stateRcdataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    handleSpecialEndTag(_cp) {\n        if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n            return !this._ensureHibernation();\n        }\n        this._createEndTagToken();\n        const token = this.currentToken;\n        token.tagName = this.lastStartTagName;\n        const cp = this.preprocessor.peek(this.lastStartTagName.length);\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                return false;\n            }\n            case CODE_POINTS.SOLIDUS: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.SELF_CLOSING_START_TAG;\n                return false;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.emitCurrentTagToken();\n                this.state = State.DATA;\n                return false;\n            }\n            default: {\n                return !this._ensureHibernation();\n            }\n        }\n    }\n    // RCDATA end tag name state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RAWTEXT less-than sign state\n    //------------------------------------------------------------------\n    _stateRawtextLessThanSign(cp) {\n        if (cp === CODE_POINTS.SOLIDUS) {\n            this.state = State.RAWTEXT_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag open state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RAWTEXT_END_TAG_NAME;\n            this._stateRawtextEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag name state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // Script data less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataLessThanSign(cp) {\n        switch (cp) {\n            case CODE_POINTS.SOLIDUS: {\n                this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n                break;\n            }\n            case CODE_POINTS.EXCLAMATION_MARK: {\n                this.state = State.SCRIPT_DATA_ESCAPE_START;\n                this._emitChars('<!');\n                break;\n            }\n            default: {\n                this._emitChars('<');\n                this.state = State.SCRIPT_DATA;\n                this._stateScriptData(cp);\n            }\n        }\n    }\n    // Script data end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_END_TAG_NAME;\n            this._stateScriptDataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStart(cp) {\n        if (cp === CODE_POINTS.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStartDash(cp) {\n        if (cp === CODE_POINTS.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataEscaped(cp) {\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDash(cp) {\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDashDash(cp) {\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedLessThanSign(cp) {\n        if (cp === CODE_POINTS.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n        }\n        else if (isAsciiLetter(cp)) {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n            this._stateScriptDataDoubleEscapeStart(cp);\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n            this._stateScriptDataEscapedEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeStart(cp) {\n        if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscaped(cp) {\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDash(cp) {\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDashDash(cp) {\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedLessThanSign(cp) {\n        if (cp === CODE_POINTS.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n            this._emitChars('/');\n        }\n        else {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Script data double escape end state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeEnd(cp) {\n        if (this.preprocessor.startsWith(SEQUENCES.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(SEQUENCES.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < SEQUENCES.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Before attribute name state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeName(cp) {\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case CODE_POINTS.SOLIDUS:\n            case CODE_POINTS.GREATER_THAN_SIGN:\n            case CODE_POINTS.EOF: {\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case CODE_POINTS.EQUALS_SIGN: {\n                this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n                this._createAttr('=');\n                this.state = State.ATTRIBUTE_NAME;\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Attribute name state\n    //------------------------------------------------------------------\n    _stateAttributeName(cp) {\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED:\n            case CODE_POINTS.SOLIDUS:\n            case CODE_POINTS.GREATER_THAN_SIGN:\n            case CODE_POINTS.EOF: {\n                this._leaveAttrName();\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case CODE_POINTS.EQUALS_SIGN: {\n                this._leaveAttrName();\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case CODE_POINTS.QUOTATION_MARK:\n            case CODE_POINTS.APOSTROPHE:\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                this._err(ERR.unexpectedCharacterInAttributeName);\n                this.currentAttr.name += String.fromCodePoint(cp);\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After attribute name state\n    //------------------------------------------------------------------\n    _stateAfterAttributeName(cp) {\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case CODE_POINTS.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case CODE_POINTS.EQUALS_SIGN: {\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Before attribute value state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeValue(cp) {\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case CODE_POINTS.QUOTATION_MARK: {\n                this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.APOSTROPHE: {\n                this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.missingAttributeValue);\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            default: {\n                this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n                this._stateAttributeValueUnquoted(cp);\n            }\n        }\n    }\n    // Attribute value (double-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueDoubleQuoted(cp) {\n        switch (cp) {\n            case CODE_POINTS.QUOTATION_MARK: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.AMPERSAND: {\n                this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (single-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueSingleQuoted(cp) {\n        switch (cp) {\n            case CODE_POINTS.APOSTROPHE: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.AMPERSAND: {\n                this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (unquoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueUnquoted(cp) {\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case CODE_POINTS.AMPERSAND: {\n                this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.QUOTATION_MARK:\n            case CODE_POINTS.APOSTROPHE:\n            case CODE_POINTS.LESS_THAN_SIGN:\n            case CODE_POINTS.EQUALS_SIGN:\n            case CODE_POINTS.GRAVE_ACCENT: {\n                this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n                this.currentAttr.value += String.fromCodePoint(cp);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After attribute value (quoted) state\n    //------------------------------------------------------------------\n    _stateAfterAttributeValueQuoted(cp) {\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case CODE_POINTS.SOLIDUS: {\n                this._leaveAttrValue();\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBetweenAttributes);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Self-closing start tag state\n    //------------------------------------------------------------------\n    _stateSelfClosingStartTag(cp) {\n        switch (cp) {\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                const token = this.currentToken;\n                token.selfClosing = true;\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedSolidusInTag);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Bogus comment state\n    //------------------------------------------------------------------\n    _stateBogusComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Markup declaration open state\n    //------------------------------------------------------------------\n    _stateMarkupDeclarationOpen(cp) {\n        if (this._consumeSequenceIfMatch(SEQUENCES.DASH_DASH, true)) {\n            this._createCommentToken(SEQUENCES.DASH_DASH.length + 1);\n            this.state = State.COMMENT_START;\n        }\n        else if (this._consumeSequenceIfMatch(SEQUENCES.DOCTYPE, false)) {\n            // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n            this.currentLocation = this.getCurrentLocation(SEQUENCES.DOCTYPE.length + 1);\n            this.state = State.DOCTYPE;\n        }\n        else if (this._consumeSequenceIfMatch(SEQUENCES.CDATA_START, true)) {\n            if (this.inForeignNode) {\n                this.state = State.CDATA_SECTION;\n            }\n            else {\n                this._err(ERR.cdataInHtmlContent);\n                this._createCommentToken(SEQUENCES.CDATA_START.length + 1);\n                this.currentToken.data = '[CDATA[';\n                this.state = State.BOGUS_COMMENT;\n            }\n        }\n        //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n        //results are no longer valid and we will need to start over.\n        else if (!this._ensureHibernation()) {\n            this._err(ERR.incorrectlyOpenedComment);\n            this._createCommentToken(2);\n            this.state = State.BOGUS_COMMENT;\n            this._stateBogusComment(cp);\n        }\n    }\n    // Comment start state\n    //------------------------------------------------------------------\n    _stateCommentStart(cp) {\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this.state = State.COMMENT_START_DASH;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                const token = this.currentToken;\n                this.emitCurrentComment(token);\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment start dash state\n    //------------------------------------------------------------------\n    _stateCommentStartDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment state\n    //------------------------------------------------------------------\n    _stateComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                token.data += '<';\n                this.state = State.COMMENT_LESS_THAN_SIGN;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Comment less-than sign state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSign(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.EXCLAMATION_MARK: {\n                token.data += '!';\n                this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n                break;\n            }\n            case CODE_POINTS.LESS_THAN_SIGN: {\n                token.data += '<';\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment less-than sign bang state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBang(cp) {\n        if (cp === CODE_POINTS.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n        }\n        else {\n            this.state = State.COMMENT;\n            this._stateComment(cp);\n        }\n    }\n    // Comment less-than sign bang dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDash(cp) {\n        if (cp === CODE_POINTS.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n        }\n        else {\n            this.state = State.COMMENT_END_DASH;\n            this._stateCommentEndDash(cp);\n        }\n    }\n    // Comment less-than sign bang dash dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDashDash(cp) {\n        if (cp !== CODE_POINTS.GREATER_THAN_SIGN && cp !== CODE_POINTS.EOF) {\n            this._err(ERR.nestedComment);\n        }\n        this.state = State.COMMENT_END;\n        this._stateCommentEnd(cp);\n    }\n    // Comment end dash state\n    //------------------------------------------------------------------\n    _stateCommentEndDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end state\n    //------------------------------------------------------------------\n    _stateCommentEnd(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case CODE_POINTS.EXCLAMATION_MARK: {\n                this.state = State.COMMENT_END_BANG;\n                break;\n            }\n            case CODE_POINTS.HYPHEN_MINUS: {\n                token.data += '-';\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end bang state\n    //------------------------------------------------------------------\n    _stateCommentEndBang(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.HYPHEN_MINUS: {\n                token.data += '--!';\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.incorrectlyClosedComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--!';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // DOCTYPE state\n    //------------------------------------------------------------------\n    _stateDoctype(cp) {\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                this._createDoctypeToken(null);\n                const token = this.currentToken;\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBeforeDoctypeName);\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n            }\n        }\n    }\n    // Before DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeName(cp) {\n        if (isAsciiUpper(cp)) {\n            this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n            this.state = State.DOCTYPE_NAME;\n        }\n        else\n            switch (cp) {\n                case CODE_POINTS.SPACE:\n                case CODE_POINTS.LINE_FEED:\n                case CODE_POINTS.TABULATION:\n                case CODE_POINTS.FORM_FEED: {\n                    // Ignore whitespace\n                    break;\n                }\n                case CODE_POINTS.NULL: {\n                    this._err(ERR.unexpectedNullCharacter);\n                    this._createDoctypeToken(REPLACEMENT_CHARACTER);\n                    this.state = State.DOCTYPE_NAME;\n                    break;\n                }\n                case CODE_POINTS.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingDoctypeName);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this.state = State.DATA;\n                    break;\n                }\n                case CODE_POINTS.EOF: {\n                    this._err(ERR.eofInDoctype);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._createDoctypeToken(String.fromCodePoint(cp));\n                    this.state = State.DOCTYPE_NAME;\n                }\n            }\n    }\n    // DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                this.state = State.AFTER_DOCTYPE_NAME;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                if (this._consumeSequenceIfMatch(SEQUENCES.PUBLIC, false)) {\n                    this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n                }\n                else if (this._consumeSequenceIfMatch(SEQUENCES.SYSTEM, false)) {\n                    this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n                }\n                //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n                //results are no longer valid and we will need to start over.\n                else if (!this._ensureHibernation()) {\n                    this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n                    token.forceQuirks = true;\n                    this.state = State.BOGUS_DOCTYPE;\n                    this._stateBogusDoctype(cp);\n                }\n            }\n        }\n    }\n    // After DOCTYPE public keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case CODE_POINTS.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case CODE_POINTS.QUOTATION_MARK: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.APOSTROPHE: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case CODE_POINTS.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Between DOCTYPE public and system identifiers state\n    //------------------------------------------------------------------\n    _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case CODE_POINTS.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // After DOCTYPE system keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case CODE_POINTS.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case CODE_POINTS.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.SPACE:\n            case CODE_POINTS.LINE_FEED:\n            case CODE_POINTS.TABULATION:\n            case CODE_POINTS.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Bogus DOCTYPE state\n    //------------------------------------------------------------------\n    _stateBogusDoctype(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case CODE_POINTS.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    // CDATA section state\n    //------------------------------------------------------------------\n    _stateCdataSection(cp) {\n        switch (cp) {\n            case CODE_POINTS.RIGHT_SQUARE_BRACKET: {\n                this.state = State.CDATA_SECTION_BRACKET;\n                break;\n            }\n            case CODE_POINTS.EOF: {\n                this._err(ERR.eofInCdata);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // CDATA section bracket state\n    //------------------------------------------------------------------\n    _stateCdataSectionBracket(cp) {\n        if (cp === CODE_POINTS.RIGHT_SQUARE_BRACKET) {\n            this.state = State.CDATA_SECTION_END;\n        }\n        else {\n            this._emitChars(']');\n            this.state = State.CDATA_SECTION;\n            this._stateCdataSection(cp);\n        }\n    }\n    // CDATA section end state\n    //------------------------------------------------------------------\n    _stateCdataSectionEnd(cp) {\n        switch (cp) {\n            case CODE_POINTS.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                break;\n            }\n            case CODE_POINTS.RIGHT_SQUARE_BRACKET: {\n                this._emitChars(']');\n                break;\n            }\n            default: {\n                this._emitChars(']]');\n                this.state = State.CDATA_SECTION;\n                this._stateCdataSection(cp);\n            }\n        }\n    }\n    // Character reference state\n    //------------------------------------------------------------------\n    _stateCharacterReference(cp) {\n        if (cp === CODE_POINTS.NUMBER_SIGN) {\n            this.state = State.NUMERIC_CHARACTER_REFERENCE;\n        }\n        else if (tokenizer_isAsciiAlphaNumeric(cp)) {\n            this.state = State.NAMED_CHARACTER_REFERENCE;\n            this._stateNamedCharacterReference(cp);\n        }\n        else {\n            this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);\n            this._reconsumeInState(this.returnState, cp);\n        }\n    }\n    // Named character reference state\n    //------------------------------------------------------------------\n    _stateNamedCharacterReference(cp) {\n        const matchResult = this._matchNamedCharacterReference(cp);\n        //NOTE: Matching can be abrupted by hibernation. In that case, match\n        //results are no longer valid and we will need to start over.\n        if (this._ensureHibernation()) {\n            // Stay in the state, try again.\n        }\n        else if (matchResult) {\n            for (let i = 0; i < matchResult.length; i++) {\n                this._flushCodePointConsumedAsCharacterReference(matchResult[i]);\n            }\n            this.state = this.returnState;\n        }\n        else {\n            this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);\n            this.state = State.AMBIGUOUS_AMPERSAND;\n        }\n    }\n    // Ambiguos ampersand state\n    //------------------------------------------------------------------\n    _stateAmbiguousAmpersand(cp) {\n        if (tokenizer_isAsciiAlphaNumeric(cp)) {\n            this._flushCodePointConsumedAsCharacterReference(cp);\n        }\n        else {\n            if (cp === CODE_POINTS.SEMICOLON) {\n                this._err(ERR.unknownNamedCharacterReference);\n            }\n            this._reconsumeInState(this.returnState, cp);\n        }\n    }\n    // Numeric character reference state\n    //------------------------------------------------------------------\n    _stateNumericCharacterReference(cp) {\n        this.charRefCode = 0;\n        if (cp === CODE_POINTS.LATIN_SMALL_X || cp === CODE_POINTS.LATIN_CAPITAL_X) {\n            this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;\n        }\n        // Inlined decimal character reference start state\n        else if (isAsciiDigit(cp)) {\n            this.state = State.DECIMAL_CHARACTER_REFERENCE;\n            this._stateDecimalCharacterReference(cp);\n        }\n        else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);\n            this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);\n            this._reconsumeInState(this.returnState, cp);\n        }\n    }\n    // Hexademical character reference start state\n    //------------------------------------------------------------------\n    _stateHexademicalCharacterReferenceStart(cp) {\n        if (isAsciiHexDigit(cp)) {\n            this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;\n            this._stateHexademicalCharacterReference(cp);\n        }\n        else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);\n            this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);\n            this._unconsume(2);\n            this.state = this.returnState;\n        }\n    }\n    // Hexademical character reference state\n    //------------------------------------------------------------------\n    _stateHexademicalCharacterReference(cp) {\n        if (isAsciiUpperHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n        }\n        else if (isAsciiLowerHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n        }\n        else if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n        }\n        else if (cp === CODE_POINTS.SEMICOLON) {\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n        }\n        else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n            this._stateNumericCharacterReferenceEnd(cp);\n        }\n    }\n    // Decimal character reference state\n    //------------------------------------------------------------------\n    _stateDecimalCharacterReference(cp) {\n        if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n        }\n        else if (cp === CODE_POINTS.SEMICOLON) {\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n        }\n        else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n            this._stateNumericCharacterReferenceEnd(cp);\n        }\n    }\n    // Numeric character reference end state\n    //------------------------------------------------------------------\n    _stateNumericCharacterReferenceEnd(cp) {\n        if (this.charRefCode === CODE_POINTS.NULL) {\n            this._err(ERR.nullCharacterReference);\n            this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;\n        }\n        else if (this.charRefCode > 1114111) {\n            this._err(ERR.characterReferenceOutsideUnicodeRange);\n            this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;\n        }\n        else if (isSurrogate(this.charRefCode)) {\n            this._err(ERR.surrogateCharacterReference);\n            this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;\n        }\n        else if (isUndefinedCodePoint(this.charRefCode)) {\n            this._err(ERR.noncharacterCharacterReference);\n        }\n        else if (isControlCodePoint(this.charRefCode) || this.charRefCode === CODE_POINTS.CARRIAGE_RETURN) {\n            this._err(ERR.controlCharacterReference);\n            const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);\n            if (replacement !== undefined) {\n                this.charRefCode = replacement;\n            }\n        }\n        this._flushCodePointConsumedAsCharacterReference(this.charRefCode);\n        this._reconsumeInState(this.returnState, cp);\n    }\n}\n\n;// ./node_modules/parse5/dist/parser/open-element-stack.js\n\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([TAG_ID.DD, TAG_ID.DT, TAG_ID.LI, TAG_ID.OPTGROUP, TAG_ID.OPTION, TAG_ID.P, TAG_ID.RB, TAG_ID.RP, TAG_ID.RT, TAG_ID.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n    ...IMPLICIT_END_TAG_REQUIRED,\n    TAG_ID.CAPTION,\n    TAG_ID.COLGROUP,\n    TAG_ID.TBODY,\n    TAG_ID.TD,\n    TAG_ID.TFOOT,\n    TAG_ID.TH,\n    TAG_ID.THEAD,\n    TAG_ID.TR,\n]);\nconst SCOPING_ELEMENT_NS = new Map([\n    [TAG_ID.APPLET, html_NS.HTML],\n    [TAG_ID.CAPTION, html_NS.HTML],\n    [TAG_ID.HTML, html_NS.HTML],\n    [TAG_ID.MARQUEE, html_NS.HTML],\n    [TAG_ID.OBJECT, html_NS.HTML],\n    [TAG_ID.TABLE, html_NS.HTML],\n    [TAG_ID.TD, html_NS.HTML],\n    [TAG_ID.TEMPLATE, html_NS.HTML],\n    [TAG_ID.TH, html_NS.HTML],\n    [TAG_ID.ANNOTATION_XML, html_NS.MATHML],\n    [TAG_ID.MI, html_NS.MATHML],\n    [TAG_ID.MN, html_NS.MATHML],\n    [TAG_ID.MO, html_NS.MATHML],\n    [TAG_ID.MS, html_NS.MATHML],\n    [TAG_ID.MTEXT, html_NS.MATHML],\n    [TAG_ID.DESC, html_NS.SVG],\n    [TAG_ID.FOREIGN_OBJECT, html_NS.SVG],\n    [TAG_ID.TITLE, html_NS.SVG],\n]);\nconst NAMED_HEADERS = [TAG_ID.H1, TAG_ID.H2, TAG_ID.H3, TAG_ID.H4, TAG_ID.H5, TAG_ID.H6];\nconst TABLE_ROW_CONTEXT = [TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML];\nconst TABLE_BODY_CONTEXT = [TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML];\nconst TABLE_CONTEXT = [TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML];\nconst TABLE_CELLS = [TAG_ID.TD, TAG_ID.TH];\n//Stack of open elements\nclass OpenElementStack {\n    get currentTmplContentOrNode() {\n        return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n    }\n    constructor(document, treeAdapter, handler) {\n        this.treeAdapter = treeAdapter;\n        this.handler = handler;\n        this.items = [];\n        this.tagIDs = [];\n        this.stackTop = -1;\n        this.tmplCount = 0;\n        this.currentTagId = TAG_ID.UNKNOWN;\n        this.current = document;\n    }\n    //Index of element\n    _indexOf(element) {\n        return this.items.lastIndexOf(element, this.stackTop);\n    }\n    //Update current element\n    _isInTemplate() {\n        return this.currentTagId === TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === html_NS.HTML;\n    }\n    _updateCurrentElement() {\n        this.current = this.items[this.stackTop];\n        this.currentTagId = this.tagIDs[this.stackTop];\n    }\n    //Mutations\n    push(element, tagID) {\n        this.stackTop++;\n        this.items[this.stackTop] = element;\n        this.current = element;\n        this.tagIDs[this.stackTop] = tagID;\n        this.currentTagId = tagID;\n        if (this._isInTemplate()) {\n            this.tmplCount++;\n        }\n        this.handler.onItemPush(element, tagID, true);\n    }\n    pop() {\n        const popped = this.current;\n        if (this.tmplCount > 0 && this._isInTemplate()) {\n            this.tmplCount--;\n        }\n        this.stackTop--;\n        this._updateCurrentElement();\n        this.handler.onItemPop(popped, true);\n    }\n    replace(oldElement, newElement) {\n        const idx = this._indexOf(oldElement);\n        this.items[idx] = newElement;\n        if (idx === this.stackTop) {\n            this.current = newElement;\n        }\n    }\n    insertAfter(referenceElement, newElement, newElementID) {\n        const insertionIdx = this._indexOf(referenceElement) + 1;\n        this.items.splice(insertionIdx, 0, newElement);\n        this.tagIDs.splice(insertionIdx, 0, newElementID);\n        this.stackTop++;\n        if (insertionIdx === this.stackTop) {\n            this._updateCurrentElement();\n        }\n        this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n    }\n    popUntilTagNamePopped(tagName) {\n        let targetIdx = this.stackTop + 1;\n        do {\n            targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n        } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== html_NS.HTML);\n        this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n    }\n    shortenToLength(idx) {\n        while (this.stackTop >= idx) {\n            const popped = this.current;\n            if (this.tmplCount > 0 && this._isInTemplate()) {\n                this.tmplCount -= 1;\n            }\n            this.stackTop--;\n            this._updateCurrentElement();\n            this.handler.onItemPop(popped, this.stackTop < idx);\n        }\n    }\n    popUntilElementPopped(element) {\n        const idx = this._indexOf(element);\n        this.shortenToLength(idx < 0 ? 0 : idx);\n    }\n    popUntilPopped(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(idx < 0 ? 0 : idx);\n    }\n    popUntilNumberedHeaderPopped() {\n        this.popUntilPopped(NAMED_HEADERS, html_NS.HTML);\n    }\n    popUntilTableCellPopped() {\n        this.popUntilPopped(TABLE_CELLS, html_NS.HTML);\n    }\n    popAllUpToHtmlElement() {\n        //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n        //we perform this fast stack clean up.\n        this.tmplCount = 0;\n        this.shortenToLength(1);\n    }\n    _indexOfTagNames(tagNames, namespace) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n                return i;\n            }\n        }\n        return -1;\n    }\n    clearBackTo(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(idx + 1);\n    }\n    clearBackToTableContext() {\n        this.clearBackTo(TABLE_CONTEXT, html_NS.HTML);\n    }\n    clearBackToTableBodyContext() {\n        this.clearBackTo(TABLE_BODY_CONTEXT, html_NS.HTML);\n    }\n    clearBackToTableRowContext() {\n        this.clearBackTo(TABLE_ROW_CONTEXT, html_NS.HTML);\n    }\n    remove(element) {\n        const idx = this._indexOf(element);\n        if (idx >= 0) {\n            if (idx === this.stackTop) {\n                this.pop();\n            }\n            else {\n                this.items.splice(idx, 1);\n                this.tagIDs.splice(idx, 1);\n                this.stackTop--;\n                this._updateCurrentElement();\n                this.handler.onItemPop(element, false);\n            }\n        }\n    }\n    //Search\n    tryPeekProperlyNestedBodyElement() {\n        //Properly nested <body> element (should be second element in stack).\n        return this.stackTop >= 1 && this.tagIDs[1] === TAG_ID.BODY ? this.items[1] : null;\n    }\n    contains(element) {\n        return this._indexOf(element) > -1;\n    }\n    getCommonAncestor(element) {\n        const elementIdx = this._indexOf(element) - 1;\n        return elementIdx >= 0 ? this.items[elementIdx] : null;\n    }\n    isRootHtmlElementCurrent() {\n        return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML;\n    }\n    //Element in scope\n    hasInScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (tn === tagName && ns === html_NS.HTML) {\n                return true;\n            }\n            if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasNumberedHeaderInScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (isNumberedHeader(tn) && ns === html_NS.HTML) {\n                return true;\n            }\n            if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasInListItemScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (tn === tagName && ns === html_NS.HTML) {\n                return true;\n            }\n            if (((tn === TAG_ID.UL || tn === TAG_ID.OL) && ns === html_NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasInButtonScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (tn === tagName && ns === html_NS.HTML) {\n                return true;\n            }\n            if ((tn === TAG_ID.BUTTON && ns === html_NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasInTableScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (ns !== html_NS.HTML) {\n                continue;\n            }\n            if (tn === tagName) {\n                return true;\n            }\n            if (tn === TAG_ID.TABLE || tn === TAG_ID.TEMPLATE || tn === TAG_ID.HTML) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasTableBodyContextInTableScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (ns !== html_NS.HTML) {\n                continue;\n            }\n            if (tn === TAG_ID.TBODY || tn === TAG_ID.THEAD || tn === TAG_ID.TFOOT) {\n                return true;\n            }\n            if (tn === TAG_ID.TABLE || tn === TAG_ID.HTML) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasInSelectScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (ns !== html_NS.HTML) {\n                continue;\n            }\n            if (tn === tagName) {\n                return true;\n            }\n            if (tn !== TAG_ID.OPTION && tn !== TAG_ID.OPTGROUP) {\n                return false;\n            }\n        }\n        return true;\n    }\n    //Implied end tags\n    generateImpliedEndTags() {\n        while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsThoroughly() {\n        while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsWithExclusion(exclusionId) {\n        while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n}\n\n;// ./node_modules/parse5/dist/parser/formatting-element-list.js\n//Const\nconst NOAH_ARK_CAPACITY = 3;\nvar EntryType;\n(function (EntryType) {\n    EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n    EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType = EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nclass FormattingElementList {\n    constructor(treeAdapter) {\n        this.treeAdapter = treeAdapter;\n        this.entries = [];\n        this.bookmark = null;\n    }\n    //Noah Ark's condition\n    //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n    //lightweight heuristics without thorough attributes check.\n    _getNoahArkConditionCandidates(newElement, neAttrs) {\n        const candidates = [];\n        const neAttrsLength = neAttrs.length;\n        const neTagName = this.treeAdapter.getTagName(newElement);\n        const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n        for (let i = 0; i < this.entries.length; i++) {\n            const entry = this.entries[i];\n            if (entry.type === EntryType.Marker) {\n                break;\n            }\n            const { element } = entry;\n            if (this.treeAdapter.getTagName(element) === neTagName &&\n                this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n                const elementAttrs = this.treeAdapter.getAttrList(element);\n                if (elementAttrs.length === neAttrsLength) {\n                    candidates.push({ idx: i, attrs: elementAttrs });\n                }\n            }\n        }\n        return candidates;\n    }\n    _ensureNoahArkCondition(newElement) {\n        if (this.entries.length < NOAH_ARK_CAPACITY)\n            return;\n        const neAttrs = this.treeAdapter.getAttrList(newElement);\n        const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n        if (candidates.length < NOAH_ARK_CAPACITY)\n            return;\n        //NOTE: build attrs map for the new element, so we can perform fast lookups\n        const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n        let validCandidates = 0;\n        //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n        for (let i = 0; i < candidates.length; i++) {\n            const candidate = candidates[i];\n            // We know that `candidate.attrs.length === neAttrs.length`\n            if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n                validCandidates += 1;\n                if (validCandidates >= NOAH_ARK_CAPACITY) {\n                    this.entries.splice(candidate.idx, 1);\n                }\n            }\n        }\n    }\n    //Mutations\n    insertMarker() {\n        this.entries.unshift(MARKER);\n    }\n    pushElement(element, token) {\n        this._ensureNoahArkCondition(element);\n        this.entries.unshift({\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    insertElementAfterBookmark(element, token) {\n        const bookmarkIdx = this.entries.indexOf(this.bookmark);\n        this.entries.splice(bookmarkIdx, 0, {\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    removeEntry(entry) {\n        const entryIndex = this.entries.indexOf(entry);\n        if (entryIndex >= 0) {\n            this.entries.splice(entryIndex, 1);\n        }\n    }\n    /**\n     * Clears the list of formatting elements up to the last marker.\n     *\n     * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n     */\n    clearToLastMarker() {\n        const markerIdx = this.entries.indexOf(MARKER);\n        if (markerIdx >= 0) {\n            this.entries.splice(0, markerIdx + 1);\n        }\n        else {\n            this.entries.length = 0;\n        }\n    }\n    //Search\n    getElementEntryInScopeWithTagName(tagName) {\n        const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n        return entry && entry.type === EntryType.Element ? entry : null;\n    }\n    getElementEntry(element) {\n        return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n    }\n}\n\n;// ./node_modules/parse5/dist/tree-adapters/default.js\n\nfunction createTextNode(value) {\n    return {\n        nodeName: '#text',\n        value,\n        parentNode: null,\n    };\n}\nconst defaultTreeAdapter = {\n    //Node construction\n    createDocument() {\n        return {\n            nodeName: '#document',\n            mode: DOCUMENT_MODE.NO_QUIRKS,\n            childNodes: [],\n        };\n    },\n    createDocumentFragment() {\n        return {\n            nodeName: '#document-fragment',\n            childNodes: [],\n        };\n    },\n    createElement(tagName, namespaceURI, attrs) {\n        return {\n            nodeName: tagName,\n            tagName,\n            attrs,\n            namespaceURI,\n            childNodes: [],\n            parentNode: null,\n        };\n    },\n    createCommentNode(data) {\n        return {\n            nodeName: '#comment',\n            data,\n            parentNode: null,\n        };\n    },\n    //Tree mutation\n    appendChild(parentNode, newNode) {\n        parentNode.childNodes.push(newNode);\n        newNode.parentNode = parentNode;\n    },\n    insertBefore(parentNode, newNode, referenceNode) {\n        const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n        parentNode.childNodes.splice(insertionIdx, 0, newNode);\n        newNode.parentNode = parentNode;\n    },\n    setTemplateContent(templateElement, contentElement) {\n        templateElement.content = contentElement;\n    },\n    getTemplateContent(templateElement) {\n        return templateElement.content;\n    },\n    setDocumentType(document, name, publicId, systemId) {\n        const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n        if (doctypeNode) {\n            doctypeNode.name = name;\n            doctypeNode.publicId = publicId;\n            doctypeNode.systemId = systemId;\n        }\n        else {\n            const node = {\n                nodeName: '#documentType',\n                name,\n                publicId,\n                systemId,\n                parentNode: null,\n            };\n            defaultTreeAdapter.appendChild(document, node);\n        }\n    },\n    setDocumentMode(document, mode) {\n        document.mode = mode;\n    },\n    getDocumentMode(document) {\n        return document.mode;\n    },\n    detachNode(node) {\n        if (node.parentNode) {\n            const idx = node.parentNode.childNodes.indexOf(node);\n            node.parentNode.childNodes.splice(idx, 1);\n            node.parentNode = null;\n        }\n    },\n    insertText(parentNode, text) {\n        if (parentNode.childNodes.length > 0) {\n            const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n            if (defaultTreeAdapter.isTextNode(prevNode)) {\n                prevNode.value += text;\n                return;\n            }\n        }\n        defaultTreeAdapter.appendChild(parentNode, createTextNode(text));\n    },\n    insertTextBefore(parentNode, text, referenceNode) {\n        const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n        if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n            prevNode.value += text;\n        }\n        else {\n            defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n        }\n    },\n    adoptAttributes(recipient, attrs) {\n        const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n        for (let j = 0; j < attrs.length; j++) {\n            if (!recipientAttrsMap.has(attrs[j].name)) {\n                recipient.attrs.push(attrs[j]);\n            }\n        }\n    },\n    //Tree traversing\n    getFirstChild(node) {\n        return node.childNodes[0];\n    },\n    getChildNodes(node) {\n        return node.childNodes;\n    },\n    getParentNode(node) {\n        return node.parentNode;\n    },\n    getAttrList(element) {\n        return element.attrs;\n    },\n    //Node data\n    getTagName(element) {\n        return element.tagName;\n    },\n    getNamespaceURI(element) {\n        return element.namespaceURI;\n    },\n    getTextNodeContent(textNode) {\n        return textNode.value;\n    },\n    getCommentNodeContent(commentNode) {\n        return commentNode.data;\n    },\n    getDocumentTypeNodeName(doctypeNode) {\n        return doctypeNode.name;\n    },\n    getDocumentTypeNodePublicId(doctypeNode) {\n        return doctypeNode.publicId;\n    },\n    getDocumentTypeNodeSystemId(doctypeNode) {\n        return doctypeNode.systemId;\n    },\n    //Node types\n    isTextNode(node) {\n        return node.nodeName === '#text';\n    },\n    isCommentNode(node) {\n        return node.nodeName === '#comment';\n    },\n    isDocumentTypeNode(node) {\n        return node.nodeName === '#documentType';\n    },\n    isElementNode(node) {\n        return Object.prototype.hasOwnProperty.call(node, 'tagName');\n    },\n    // Source code location\n    setNodeSourceCodeLocation(node, location) {\n        node.sourceCodeLocation = location;\n    },\n    getNodeSourceCodeLocation(node) {\n        return node.sourceCodeLocation;\n    },\n    updateNodeSourceCodeLocation(node, endLocation) {\n        node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n    },\n};\n\n;// ./node_modules/parse5/dist/common/doctype.js\n\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n    '+//silmaril//dtd html pro v0r11 19970101//',\n    '-//as//dtd html 3.0 aswedit + extensions//',\n    '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n    '-//ietf//dtd html 2.0 level 1//',\n    '-//ietf//dtd html 2.0 level 2//',\n    '-//ietf//dtd html 2.0 strict level 1//',\n    '-//ietf//dtd html 2.0 strict level 2//',\n    '-//ietf//dtd html 2.0 strict//',\n    '-//ietf//dtd html 2.0//',\n    '-//ietf//dtd html 2.1e//',\n    '-//ietf//dtd html 3.0//',\n    '-//ietf//dtd html 3.2 final//',\n    '-//ietf//dtd html 3.2//',\n    '-//ietf//dtd html 3//',\n    '-//ietf//dtd html level 0//',\n    '-//ietf//dtd html level 1//',\n    '-//ietf//dtd html level 2//',\n    '-//ietf//dtd html level 3//',\n    '-//ietf//dtd html strict level 0//',\n    '-//ietf//dtd html strict level 1//',\n    '-//ietf//dtd html strict level 2//',\n    '-//ietf//dtd html strict level 3//',\n    '-//ietf//dtd html strict//',\n    '-//ietf//dtd html//',\n    '-//metrius//dtd metrius presentational//',\n    '-//microsoft//dtd internet explorer 2.0 html strict//',\n    '-//microsoft//dtd internet explorer 2.0 html//',\n    '-//microsoft//dtd internet explorer 2.0 tables//',\n    '-//microsoft//dtd internet explorer 3.0 html strict//',\n    '-//microsoft//dtd internet explorer 3.0 html//',\n    '-//microsoft//dtd internet explorer 3.0 tables//',\n    '-//netscape comm. corp.//dtd html//',\n    '-//netscape comm. corp.//dtd strict html//',\n    \"-//o'reilly and associates//dtd html 2.0//\",\n    \"-//o'reilly and associates//dtd html extended 1.0//\",\n    \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n    '-//sq//dtd html 2.0 hotmetal + extensions//',\n    '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n    '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n    '-//spyglass//dtd html 2.0 extended//',\n    '-//sun microsystems corp.//dtd hotjava html//',\n    '-//sun microsystems corp.//dtd hotjava strict html//',\n    '-//w3c//dtd html 3 1995-03-24//',\n    '-//w3c//dtd html 3.2 draft//',\n    '-//w3c//dtd html 3.2 final//',\n    '-//w3c//dtd html 3.2//',\n    '-//w3c//dtd html 3.2s draft//',\n    '-//w3c//dtd html 4.0 frameset//',\n    '-//w3c//dtd html 4.0 transitional//',\n    '-//w3c//dtd html experimental 19960712//',\n    '-//w3c//dtd html experimental 970421//',\n    '-//w3c//dtd w3 html//',\n    '-//w3o//dtd w3 html 3.0//',\n    '-//webtechs//dtd mozilla html 2.0//',\n    '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n    ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n    '-//w3o//dtd w3 html strict 3.0//en//',\n    '-/w3c/dtd html 4.0 transitional/en',\n    'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n    ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n    return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nfunction isConforming(token) {\n    return (token.name === VALID_DOCTYPE_NAME &&\n        token.publicId === null &&\n        (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nfunction getDocumentMode(token) {\n    if (token.name !== VALID_DOCTYPE_NAME) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    const { systemId } = token;\n    if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    let { publicId } = token;\n    if (publicId !== null) {\n        publicId = publicId.toLowerCase();\n        if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n        let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n        prefixes =\n            systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.LIMITED_QUIRKS;\n        }\n    }\n    return DOCUMENT_MODE.NO_QUIRKS;\n}\n\n;// ./node_modules/parse5/dist/common/foreign-content.js\n\n//MIME types\nconst MIME_TYPES = {\n    TEXT_HTML: 'text/html',\n    APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n    'attributeName',\n    'attributeType',\n    'baseFrequency',\n    'baseProfile',\n    'calcMode',\n    'clipPathUnits',\n    'diffuseConstant',\n    'edgeMode',\n    'filterUnits',\n    'glyphRef',\n    'gradientTransform',\n    'gradientUnits',\n    'kernelMatrix',\n    'kernelUnitLength',\n    'keyPoints',\n    'keySplines',\n    'keyTimes',\n    'lengthAdjust',\n    'limitingConeAngle',\n    'markerHeight',\n    'markerUnits',\n    'markerWidth',\n    'maskContentUnits',\n    'maskUnits',\n    'numOctaves',\n    'pathLength',\n    'patternContentUnits',\n    'patternTransform',\n    'patternUnits',\n    'pointsAtX',\n    'pointsAtY',\n    'pointsAtZ',\n    'preserveAlpha',\n    'preserveAspectRatio',\n    'primitiveUnits',\n    'refX',\n    'refY',\n    'repeatCount',\n    'repeatDur',\n    'requiredExtensions',\n    'requiredFeatures',\n    'specularConstant',\n    'specularExponent',\n    'spreadMethod',\n    'startOffset',\n    'stdDeviation',\n    'stitchTiles',\n    'surfaceScale',\n    'systemLanguage',\n    'tableValues',\n    'targetX',\n    'targetY',\n    'textLength',\n    'viewBox',\n    'viewTarget',\n    'xChannelSelector',\n    'yChannelSelector',\n    'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n    ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: html_NS.XLINK }],\n    ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: html_NS.XLINK }],\n    ['xlink:href', { prefix: 'xlink', name: 'href', namespace: html_NS.XLINK }],\n    ['xlink:role', { prefix: 'xlink', name: 'role', namespace: html_NS.XLINK }],\n    ['xlink:show', { prefix: 'xlink', name: 'show', namespace: html_NS.XLINK }],\n    ['xlink:title', { prefix: 'xlink', name: 'title', namespace: html_NS.XLINK }],\n    ['xlink:type', { prefix: 'xlink', name: 'type', namespace: html_NS.XLINK }],\n    ['xml:base', { prefix: 'xml', name: 'base', namespace: html_NS.XML }],\n    ['xml:lang', { prefix: 'xml', name: 'lang', namespace: html_NS.XML }],\n    ['xml:space', { prefix: 'xml', name: 'space', namespace: html_NS.XML }],\n    ['xmlns', { prefix: '', name: 'xmlns', namespace: html_NS.XMLNS }],\n    ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: html_NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nconst SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n    'altGlyph',\n    'altGlyphDef',\n    'altGlyphItem',\n    'animateColor',\n    'animateMotion',\n    'animateTransform',\n    'clipPath',\n    'feBlend',\n    'feColorMatrix',\n    'feComponentTransfer',\n    'feComposite',\n    'feConvolveMatrix',\n    'feDiffuseLighting',\n    'feDisplacementMap',\n    'feDistantLight',\n    'feFlood',\n    'feFuncA',\n    'feFuncB',\n    'feFuncG',\n    'feFuncR',\n    'feGaussianBlur',\n    'feImage',\n    'feMerge',\n    'feMergeNode',\n    'feMorphology',\n    'feOffset',\n    'fePointLight',\n    'feSpecularLighting',\n    'feSpotLight',\n    'feTile',\n    'feTurbulence',\n    'foreignObject',\n    'glyphRef',\n    'linearGradient',\n    'radialGradient',\n    'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n    TAG_ID.B,\n    TAG_ID.BIG,\n    TAG_ID.BLOCKQUOTE,\n    TAG_ID.BODY,\n    TAG_ID.BR,\n    TAG_ID.CENTER,\n    TAG_ID.CODE,\n    TAG_ID.DD,\n    TAG_ID.DIV,\n    TAG_ID.DL,\n    TAG_ID.DT,\n    TAG_ID.EM,\n    TAG_ID.EMBED,\n    TAG_ID.H1,\n    TAG_ID.H2,\n    TAG_ID.H3,\n    TAG_ID.H4,\n    TAG_ID.H5,\n    TAG_ID.H6,\n    TAG_ID.HEAD,\n    TAG_ID.HR,\n    TAG_ID.I,\n    TAG_ID.IMG,\n    TAG_ID.LI,\n    TAG_ID.LISTING,\n    TAG_ID.MENU,\n    TAG_ID.META,\n    TAG_ID.NOBR,\n    TAG_ID.OL,\n    TAG_ID.P,\n    TAG_ID.PRE,\n    TAG_ID.RUBY,\n    TAG_ID.S,\n    TAG_ID.SMALL,\n    TAG_ID.SPAN,\n    TAG_ID.STRONG,\n    TAG_ID.STRIKE,\n    TAG_ID.SUB,\n    TAG_ID.SUP,\n    TAG_ID.TABLE,\n    TAG_ID.TT,\n    TAG_ID.U,\n    TAG_ID.UL,\n    TAG_ID.VAR,\n]);\n//Check exit from foreign content\nfunction causesExit(startTagToken) {\n    const tn = startTagToken.tagID;\n    const isFontWithAttrs = tn === TAG_ID.FONT &&\n        startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n    return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nfunction adjustTokenMathMLAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n            token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n            break;\n        }\n    }\n}\nfunction adjustTokenSVGAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n        if (adjustedAttrName != null) {\n            token.attrs[i].name = adjustedAttrName;\n        }\n    }\n}\nfunction adjustTokenXMLAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n        if (adjustedAttrEntry) {\n            token.attrs[i].prefix = adjustedAttrEntry.prefix;\n            token.attrs[i].name = adjustedAttrEntry.name;\n            token.attrs[i].namespace = adjustedAttrEntry.namespace;\n        }\n    }\n}\nfunction adjustTokenSVGTagName(token) {\n    const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n    if (adjustedTagName != null) {\n        token.tagName = adjustedTagName;\n        token.tagID = getTagID(token.tagName);\n    }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n    return ns === html_NS.MATHML && (tn === TAG_ID.MI || tn === TAG_ID.MO || tn === TAG_ID.MN || tn === TAG_ID.MS || tn === TAG_ID.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n    if (ns === html_NS.MATHML && tn === TAG_ID.ANNOTATION_XML) {\n        for (let i = 0; i < attrs.length; i++) {\n            if (attrs[i].name === ATTRS.ENCODING) {\n                const value = attrs[i].value.toLowerCase();\n                return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n            }\n        }\n    }\n    return ns === html_NS.SVG && (tn === TAG_ID.FOREIGN_OBJECT || tn === TAG_ID.DESC || tn === TAG_ID.TITLE);\n}\nfunction isIntegrationPoint(tn, ns, attrs, foreignNS) {\n    return (((!foreignNS || foreignNS === html_NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n        ((!foreignNS || foreignNS === html_NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n\n;// ./node_modules/parse5/dist/parser/index.js\n\n\n\n\n\n\n\n\n\n\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n    InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n    InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n    InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n    InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n    InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n    InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n    InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n    InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n    InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n    InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n    InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n    InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n    InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n    InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n    InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n    InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n    startLine: -1,\n    startCol: -1,\n    startOffset: -1,\n    endLine: -1,\n    endCol: -1,\n    endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([TAG_ID.TABLE, TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TR]);\nconst defaultParserOptions = {\n    scriptingEnabled: true,\n    sourceCodeLocationInfo: false,\n    treeAdapter: defaultTreeAdapter,\n    onParseError: null,\n};\n//Parser\nclass Parser {\n    constructor(options, document, fragmentContext = null, scriptHandler = null) {\n        this.fragmentContext = fragmentContext;\n        this.scriptHandler = scriptHandler;\n        this.currentToken = null;\n        this.stopped = false;\n        this.insertionMode = InsertionMode.INITIAL;\n        this.originalInsertionMode = InsertionMode.INITIAL;\n        this.headElement = null;\n        this.formElement = null;\n        /** Indicates that the current node is not an element in the HTML namespace */\n        this.currentNotInHTML = false;\n        /**\n         * The template insertion mode stack is maintained from the left.\n         * Ie. the topmost element will always have index 0.\n         */\n        this.tmplInsertionModeStack = [];\n        this.pendingCharacterTokens = [];\n        this.hasNonWhitespacePendingCharacterToken = false;\n        this.framesetOk = true;\n        this.skipNextNewLine = false;\n        this.fosterParentingEnabled = false;\n        this.options = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        this.treeAdapter = this.options.treeAdapter;\n        this.onParseError = this.options.onParseError;\n        // Always enable location info if we report parse errors.\n        if (this.onParseError) {\n            this.options.sourceCodeLocationInfo = true;\n        }\n        this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n        this.tokenizer = new Tokenizer(this.options, this);\n        this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n        this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : TAG_ID.UNKNOWN;\n        this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n        this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n    }\n    // API\n    static parse(html, options) {\n        const parser = new this(options);\n        parser.tokenizer.write(html, true);\n        return parser.document;\n    }\n    static getFragmentParser(fragmentContext, options) {\n        const opts = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        //NOTE: use a <template> element as the fragment context if no context element was provided,\n        //so we will parse in a \"forgiving\" manner\n        fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TAG_NAMES.TEMPLATE, html_NS.HTML, []));\n        //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n        //This is important for jsdom, where a new `document` cannot be created. This led to\n        //fragment parsing messing with the main `document`.\n        const documentMock = opts.treeAdapter.createElement('documentmock', html_NS.HTML, []);\n        const parser = new this(opts, documentMock, fragmentContext);\n        if (parser.fragmentContextID === TAG_ID.TEMPLATE) {\n            parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n        }\n        parser._initTokenizerForFragmentParsing();\n        parser._insertFakeRootElement();\n        parser._resetInsertionMode();\n        parser._findFormInFragmentContext();\n        return parser;\n    }\n    getFragment() {\n        const rootElement = this.treeAdapter.getFirstChild(this.document);\n        const fragment = this.treeAdapter.createDocumentFragment();\n        this._adoptNodes(rootElement, fragment);\n        return fragment;\n    }\n    //Errors\n    _err(token, code, beforeToken) {\n        var _a;\n        if (!this.onParseError)\n            return;\n        const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n        const err = {\n            code,\n            startLine: loc.startLine,\n            startCol: loc.startCol,\n            startOffset: loc.startOffset,\n            endLine: beforeToken ? loc.startLine : loc.endLine,\n            endCol: beforeToken ? loc.startCol : loc.endCol,\n            endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n        };\n        this.onParseError(err);\n    }\n    //Stack events\n    onItemPush(node, tid, isTop) {\n        var _a, _b;\n        (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n        if (isTop && this.openElements.stackTop > 0)\n            this._setContextModes(node, tid);\n    }\n    onItemPop(node, isTop) {\n        var _a, _b;\n        if (this.options.sourceCodeLocationInfo) {\n            this._setEndLocation(node, this.currentToken);\n        }\n        (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n        if (isTop) {\n            let current;\n            let currentTagId;\n            if (this.openElements.stackTop === 0 && this.fragmentContext) {\n                current = this.fragmentContext;\n                currentTagId = this.fragmentContextID;\n            }\n            else {\n                ({ current, currentTagId } = this.openElements);\n            }\n            this._setContextModes(current, currentTagId);\n        }\n    }\n    _setContextModes(current, tid) {\n        const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === html_NS.HTML;\n        this.currentNotInHTML = !isHTML;\n        this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current);\n    }\n    _switchToTextParsing(currentToken, nextTokenizerState) {\n        this._insertElement(currentToken, html_NS.HTML);\n        this.tokenizer.state = nextTokenizerState;\n        this.originalInsertionMode = this.insertionMode;\n        this.insertionMode = InsertionMode.TEXT;\n    }\n    switchToPlaintextParsing() {\n        this.insertionMode = InsertionMode.TEXT;\n        this.originalInsertionMode = InsertionMode.IN_BODY;\n        this.tokenizer.state = TokenizerMode.PLAINTEXT;\n    }\n    //Fragment parsing\n    _getAdjustedCurrentElement() {\n        return this.openElements.stackTop === 0 && this.fragmentContext\n            ? this.fragmentContext\n            : this.openElements.current;\n    }\n    _findFormInFragmentContext() {\n        let node = this.fragmentContext;\n        while (node) {\n            if (this.treeAdapter.getTagName(node) === TAG_NAMES.FORM) {\n                this.formElement = node;\n                break;\n            }\n            node = this.treeAdapter.getParentNode(node);\n        }\n    }\n    _initTokenizerForFragmentParsing() {\n        if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== html_NS.HTML) {\n            return;\n        }\n        switch (this.fragmentContextID) {\n            case TAG_ID.TITLE:\n            case TAG_ID.TEXTAREA: {\n                this.tokenizer.state = TokenizerMode.RCDATA;\n                break;\n            }\n            case TAG_ID.STYLE:\n            case TAG_ID.XMP:\n            case TAG_ID.IFRAME:\n            case TAG_ID.NOEMBED:\n            case TAG_ID.NOFRAMES:\n            case TAG_ID.NOSCRIPT: {\n                this.tokenizer.state = TokenizerMode.RAWTEXT;\n                break;\n            }\n            case TAG_ID.SCRIPT: {\n                this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n                break;\n            }\n            case TAG_ID.PLAINTEXT: {\n                this.tokenizer.state = TokenizerMode.PLAINTEXT;\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    //Tree mutation\n    _setDocumentType(token) {\n        const name = token.name || '';\n        const publicId = token.publicId || '';\n        const systemId = token.systemId || '';\n        this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n        if (token.location) {\n            const documentChildren = this.treeAdapter.getChildNodes(this.document);\n            const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n            if (docTypeNode) {\n                this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n            }\n        }\n    }\n    _attachElementToTree(element, location) {\n        if (this.options.sourceCodeLocationInfo) {\n            const loc = location && {\n                ...location,\n                startTag: location,\n            };\n            this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n        }\n        if (this._shouldFosterParentOnInsertion()) {\n            this._fosterParentElement(element);\n        }\n        else {\n            const parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.appendChild(parent, element);\n        }\n    }\n    _appendElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n    }\n    _insertElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n        this.openElements.push(element, token.tagID);\n    }\n    _insertFakeElement(tagName, tagID) {\n        const element = this.treeAdapter.createElement(tagName, html_NS.HTML, []);\n        this._attachElementToTree(element, null);\n        this.openElements.push(element, tagID);\n    }\n    _insertTemplate(token) {\n        const tmpl = this.treeAdapter.createElement(token.tagName, html_NS.HTML, token.attrs);\n        const content = this.treeAdapter.createDocumentFragment();\n        this.treeAdapter.setTemplateContent(tmpl, content);\n        this._attachElementToTree(tmpl, token.location);\n        this.openElements.push(tmpl, token.tagID);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(content, null);\n    }\n    _insertFakeRootElement() {\n        const element = this.treeAdapter.createElement(TAG_NAMES.HTML, html_NS.HTML, []);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(element, null);\n        this.treeAdapter.appendChild(this.openElements.current, element);\n        this.openElements.push(element, TAG_ID.HTML);\n    }\n    _appendCommentNode(token, parent) {\n        const commentNode = this.treeAdapter.createCommentNode(token.data);\n        this.treeAdapter.appendChild(parent, commentNode);\n        if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n        }\n    }\n    _insertCharacters(token) {\n        let parent;\n        let beforeElement;\n        if (this._shouldFosterParentOnInsertion()) {\n            ({ parent, beforeElement } = this._findFosterParentingLocation());\n            if (beforeElement) {\n                this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n            }\n            else {\n                this.treeAdapter.insertText(parent, token.chars);\n            }\n        }\n        else {\n            parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.insertText(parent, token.chars);\n        }\n        if (!token.location)\n            return;\n        const siblings = this.treeAdapter.getChildNodes(parent);\n        const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n        const textNode = siblings[textNodeIdx - 1];\n        //NOTE: if we have a location assigned by another token, then just update the end position\n        const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n        if (tnLoc) {\n            const { endLine, endCol, endOffset } = token.location;\n            this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n        }\n        else if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n        }\n    }\n    _adoptNodes(donor, recipient) {\n        for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n            this.treeAdapter.detachNode(child);\n            this.treeAdapter.appendChild(recipient, child);\n        }\n    }\n    _setEndLocation(element, closingToken) {\n        if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n            const ctLoc = closingToken.location;\n            const tn = this.treeAdapter.getTagName(element);\n            const endLoc = \n            // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n            // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n            closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n                ? {\n                    endTag: { ...ctLoc },\n                    endLine: ctLoc.endLine,\n                    endCol: ctLoc.endCol,\n                    endOffset: ctLoc.endOffset,\n                }\n                : {\n                    endLine: ctLoc.startLine,\n                    endCol: ctLoc.startCol,\n                    endOffset: ctLoc.startOffset,\n                };\n            this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n        }\n    }\n    //Token processing\n    shouldProcessStartTagTokenInForeignContent(token) {\n        // Check that neither current === document, or ns === NS.HTML\n        if (!this.currentNotInHTML)\n            return false;\n        let current;\n        let currentTagId;\n        if (this.openElements.stackTop === 0 && this.fragmentContext) {\n            current = this.fragmentContext;\n            currentTagId = this.fragmentContextID;\n        }\n        else {\n            ({ current, currentTagId } = this.openElements);\n        }\n        if (token.tagID === TAG_ID.SVG &&\n            this.treeAdapter.getTagName(current) === TAG_NAMES.ANNOTATION_XML &&\n            this.treeAdapter.getNamespaceURI(current) === html_NS.MATHML) {\n            return false;\n        }\n        return (\n        // Check that `current` is not an integration point for HTML or MathML elements.\n        this.tokenizer.inForeignNode ||\n            // If it _is_ an integration point, then we might have to check that it is not an HTML\n            // integration point.\n            ((token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) &&\n                !this._isIntegrationPoint(currentTagId, current, html_NS.HTML)));\n    }\n    _processToken(token) {\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                this.onCharacter(token);\n                break;\n            }\n            case TokenType.NULL_CHARACTER: {\n                this.onNullCharacter(token);\n                break;\n            }\n            case TokenType.COMMENT: {\n                this.onComment(token);\n                break;\n            }\n            case TokenType.DOCTYPE: {\n                this.onDoctype(token);\n                break;\n            }\n            case TokenType.START_TAG: {\n                this._processStartTag(token);\n                break;\n            }\n            case TokenType.END_TAG: {\n                this.onEndTag(token);\n                break;\n            }\n            case TokenType.EOF: {\n                this.onEof(token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                this.onWhitespaceCharacter(token);\n                break;\n            }\n        }\n    }\n    //Integration points\n    _isIntegrationPoint(tid, element, foreignNS) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        const attrs = this.treeAdapter.getAttrList(element);\n        return isIntegrationPoint(tid, ns, attrs, foreignNS);\n    }\n    //Active formatting elements reconstruction\n    _reconstructActiveFormattingElements() {\n        const listLength = this.activeFormattingElements.entries.length;\n        if (listLength) {\n            const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n            const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;\n            for (let i = unopenIdx; i >= 0; i--) {\n                const entry = this.activeFormattingElements.entries[i];\n                this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n                entry.element = this.openElements.current;\n            }\n        }\n    }\n    //Close elements\n    _closeTableCell() {\n        this.openElements.generateImpliedEndTags();\n        this.openElements.popUntilTableCellPopped();\n        this.activeFormattingElements.clearToLastMarker();\n        this.insertionMode = InsertionMode.IN_ROW;\n    }\n    _closePElement() {\n        this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P);\n        this.openElements.popUntilTagNamePopped(TAG_ID.P);\n    }\n    //Insertion modes\n    _resetInsertionMode() {\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            //Insertion mode reset map\n            switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n                case TAG_ID.TR: {\n                    this.insertionMode = InsertionMode.IN_ROW;\n                    return;\n                }\n                case TAG_ID.TBODY:\n                case TAG_ID.THEAD:\n                case TAG_ID.TFOOT: {\n                    this.insertionMode = InsertionMode.IN_TABLE_BODY;\n                    return;\n                }\n                case TAG_ID.CAPTION: {\n                    this.insertionMode = InsertionMode.IN_CAPTION;\n                    return;\n                }\n                case TAG_ID.COLGROUP: {\n                    this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n                    return;\n                }\n                case TAG_ID.TABLE: {\n                    this.insertionMode = InsertionMode.IN_TABLE;\n                    return;\n                }\n                case TAG_ID.BODY: {\n                    this.insertionMode = InsertionMode.IN_BODY;\n                    return;\n                }\n                case TAG_ID.FRAMESET: {\n                    this.insertionMode = InsertionMode.IN_FRAMESET;\n                    return;\n                }\n                case TAG_ID.SELECT: {\n                    this._resetInsertionModeForSelect(i);\n                    return;\n                }\n                case TAG_ID.TEMPLATE: {\n                    this.insertionMode = this.tmplInsertionModeStack[0];\n                    return;\n                }\n                case TAG_ID.HTML: {\n                    this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n                    return;\n                }\n                case TAG_ID.TD:\n                case TAG_ID.TH: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_CELL;\n                        return;\n                    }\n                    break;\n                }\n                case TAG_ID.HEAD: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_HEAD;\n                        return;\n                    }\n                    break;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_BODY;\n    }\n    _resetInsertionModeForSelect(selectIdx) {\n        if (selectIdx > 0) {\n            for (let i = selectIdx - 1; i > 0; i--) {\n                const tn = this.openElements.tagIDs[i];\n                if (tn === TAG_ID.TEMPLATE) {\n                    break;\n                }\n                else if (tn === TAG_ID.TABLE) {\n                    this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n                    return;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_SELECT;\n    }\n    //Foster parenting\n    _isElementCausesFosterParenting(tn) {\n        return TABLE_STRUCTURE_TAGS.has(tn);\n    }\n    _shouldFosterParentOnInsertion() {\n        return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);\n    }\n    _findFosterParentingLocation() {\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            const openElement = this.openElements.items[i];\n            switch (this.openElements.tagIDs[i]) {\n                case TAG_ID.TEMPLATE: {\n                    if (this.treeAdapter.getNamespaceURI(openElement) === html_NS.HTML) {\n                        return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n                    }\n                    break;\n                }\n                case TAG_ID.TABLE: {\n                    const parent = this.treeAdapter.getParentNode(openElement);\n                    if (parent) {\n                        return { parent, beforeElement: openElement };\n                    }\n                    return { parent: this.openElements.items[i - 1], beforeElement: null };\n                }\n                default:\n                // Do nothing\n            }\n        }\n        return { parent: this.openElements.items[0], beforeElement: null };\n    }\n    _fosterParentElement(element) {\n        const location = this._findFosterParentingLocation();\n        if (location.beforeElement) {\n            this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n        }\n        else {\n            this.treeAdapter.appendChild(location.parent, element);\n        }\n    }\n    //Special elements\n    _isSpecialElement(element, id) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        return SPECIAL_ELEMENTS[ns].has(id);\n    }\n    onCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            characterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE: {\n                characterInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                characterInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onNullCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            nullCharacterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onComment(token) {\n        this.skipNextNewLine = false;\n        if (this.currentNotInHTML) {\n            appendComment(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL:\n            case InsertionMode.BEFORE_HTML:\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                appendComment(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                appendCommentToRootHtmlElement(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                appendCommentToDocument(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onDoctype(token) {\n        this.skipNextNewLine = false;\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                doctypeInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD: {\n                this._err(token, ERR.misplacedDoctype);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onStartTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        this._processStartTag(token);\n        if (token.selfClosing && !token.ackSelfClosing) {\n            this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n        }\n    }\n    /**\n     * Processes a given start tag.\n     *\n     * `onStartTag` checks if a self-closing tag was recognized. When a token\n     * is moved inbetween multiple insertion modes, this check for self-closing\n     * could lead to false positives. To avoid this, `_processStartTag` is used\n     * for nested calls.\n     *\n     * @param token The token to process.\n     */\n    _processStartTag(token) {\n        if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n            startTagInForeignContent(this, token);\n        }\n        else {\n            this._startTagOutsideForeignContent(token);\n        }\n    }\n    _startTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                startTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                startTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                startTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                startTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                startTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                startTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                startTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                startTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                startTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                startTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                startTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                startTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                startTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                startTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                startTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                startTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                startTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                startTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                startTagAfterAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                startTagAfterAfterFrameset(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onEndTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        if (this.currentNotInHTML) {\n            endTagInForeignContent(this, token);\n        }\n        else {\n            this._endTagOutsideForeignContent(token);\n        }\n    }\n    _endTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                endTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                endTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                endTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                endTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                endTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                endTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                endTagInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                endTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                endTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                endTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                endTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                endTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                endTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                endTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                endTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                endTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                endTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                endTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                endTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onEof(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                eofInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                eofInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                eofInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                stopParsing(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onWhitespaceCharacter(token) {\n        if (this.skipNextNewLine) {\n            this.skipNextNewLine = false;\n            if (token.chars.charCodeAt(0) === CODE_POINTS.LINE_FEED) {\n                if (token.chars.length === 1) {\n                    return;\n                }\n                token.chars = token.chars.substr(1);\n            }\n        }\n        if (this.tokenizer.inForeignNode) {\n            this._insertCharacters(token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                whitespaceCharacterInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                whitespaceCharacterInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n    let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n    if (formattingElementEntry) {\n        if (!p.openElements.contains(formattingElementEntry.element)) {\n            p.activeFormattingElements.removeEntry(formattingElementEntry);\n            formattingElementEntry = null;\n        }\n        else if (!p.openElements.hasInScope(token.tagID)) {\n            formattingElementEntry = null;\n        }\n    }\n    else {\n        genericEndTagInBody(p, token);\n    }\n    return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n    let furthestBlock = null;\n    let idx = p.openElements.stackTop;\n    for (; idx >= 0; idx--) {\n        const element = p.openElements.items[idx];\n        if (element === formattingElementEntry.element) {\n            break;\n        }\n        if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n            furthestBlock = element;\n        }\n    }\n    if (!furthestBlock) {\n        p.openElements.shortenToLength(idx < 0 ? 0 : idx);\n        p.activeFormattingElements.removeEntry(formattingElementEntry);\n    }\n    return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n    let lastElement = furthestBlock;\n    let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n    for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n        //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n        nextElement = p.openElements.getCommonAncestor(element);\n        const elementEntry = p.activeFormattingElements.getElementEntry(element);\n        const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n        const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n        if (shouldRemoveFromOpenElements) {\n            if (counterOverflow) {\n                p.activeFormattingElements.removeEntry(elementEntry);\n            }\n            p.openElements.remove(element);\n        }\n        else {\n            element = aaRecreateElementFromEntry(p, elementEntry);\n            if (lastElement === furthestBlock) {\n                p.activeFormattingElements.bookmark = elementEntry;\n            }\n            p.treeAdapter.detachNode(lastElement);\n            p.treeAdapter.appendChild(element, lastElement);\n            lastElement = element;\n        }\n    }\n    return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n    const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n    p.openElements.replace(elementEntry.element, newElement);\n    elementEntry.element = newElement;\n    return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n    const tn = p.treeAdapter.getTagName(commonAncestor);\n    const tid = getTagID(tn);\n    if (p._isElementCausesFosterParenting(tid)) {\n        p._fosterParentElement(lastElement);\n    }\n    else {\n        const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n        if (tid === TAG_ID.TEMPLATE && ns === html_NS.HTML) {\n            commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n        }\n        p.treeAdapter.appendChild(commonAncestor, lastElement);\n    }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n    const { token } = formattingElementEntry;\n    const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n    p._adoptNodes(furthestBlock, newElement);\n    p.treeAdapter.appendChild(furthestBlock, newElement);\n    p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n    p.activeFormattingElements.removeEntry(formattingElementEntry);\n    p.openElements.remove(formattingElementEntry.element);\n    p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n    for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n        const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n        if (!formattingElementEntry) {\n            break;\n        }\n        const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n        if (!furthestBlock) {\n            break;\n        }\n        p.activeFormattingElements.bookmark = formattingElementEntry;\n        const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n        const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n        p.treeAdapter.detachNode(lastElement);\n        if (commonAncestor)\n            aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n        aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n    }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n    p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n    p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n    p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n    p.stopped = true;\n    // NOTE: Set end locations for elements that remain on the open element stack.\n    if (token.location) {\n        // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n        // This is a problem, as we might overwrite their end position here.\n        const target = p.fragmentContext ? 0 : 2;\n        for (let i = p.openElements.stackTop; i >= target; i--) {\n            p._setEndLocation(p.openElements.items[i], token);\n        }\n        // Handle `html` and `body`\n        if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n            const htmlElement = p.openElements.items[0];\n            const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n            if (htmlLocation && !htmlLocation.endTag) {\n                p._setEndLocation(htmlElement, token);\n                if (p.openElements.stackTop >= 1) {\n                    const bodyElement = p.openElements.items[1];\n                    const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n                    if (bodyLocation && !bodyLocation.endTag) {\n                        p._setEndLocation(bodyElement, token);\n                    }\n                }\n            }\n        }\n    }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n    p._setDocumentType(token);\n    const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : getDocumentMode(token);\n    if (!isConforming(token)) {\n        p._err(token, ERR.nonConformingDoctype);\n    }\n    p.treeAdapter.setDocumentMode(p.document, mode);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n    p._err(token, ERR.missingDoctype, true);\n    p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n    p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n    if (token.tagID === TAG_ID.HTML) {\n        p._insertElement(token, html_NS.HTML);\n        p.insertionMode = InsertionMode.BEFORE_HEAD;\n    }\n    else {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction endTagBeforeHtml(p, token) {\n    const tn = token.tagID;\n    if (tn === TAG_ID.HTML || tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.BR) {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction tokenBeforeHtml(p, token) {\n    p._insertFakeRootElement();\n    p.insertionMode = InsertionMode.BEFORE_HEAD;\n    p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.HEAD: {\n            p._insertElement(token, html_NS.HTML);\n            p.headElement = p.openElements.current;\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        default: {\n            tokenBeforeHead(p, token);\n        }\n    }\n}\nfunction endTagBeforeHead(p, token) {\n    const tn = token.tagID;\n    if (tn === TAG_ID.HEAD || tn === TAG_ID.BODY || tn === TAG_ID.HTML || tn === TAG_ID.BR) {\n        tokenBeforeHead(p, token);\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenBeforeHead(p, token) {\n    p._insertFakeElement(TAG_NAMES.HEAD, TAG_ID.HEAD);\n    p.headElement = p.openElements.current;\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.BASE:\n        case TAG_ID.BASEFONT:\n        case TAG_ID.BGSOUND:\n        case TAG_ID.LINK:\n        case TAG_ID.META: {\n            p._appendElement(token, html_NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case TAG_ID.TITLE: {\n            p._switchToTextParsing(token, TokenizerMode.RCDATA);\n            break;\n        }\n        case TAG_ID.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            }\n            else {\n                p._insertElement(token, html_NS.HTML);\n                p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n            }\n            break;\n        }\n        case TAG_ID.NOFRAMES:\n        case TAG_ID.STYLE: {\n            p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            break;\n        }\n        case TAG_ID.SCRIPT: {\n            p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n            break;\n        }\n        case TAG_ID.TEMPLATE: {\n            p._insertTemplate(token);\n            p.activeFormattingElements.insertMarker();\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_TEMPLATE;\n            p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n            break;\n        }\n        case TAG_ID.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenInHead(p, token);\n        }\n    }\n}\nfunction endTagInHead(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HEAD: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.AFTER_HEAD;\n            break;\n        }\n        case TAG_ID.BODY:\n        case TAG_ID.BR:\n        case TAG_ID.HTML: {\n            tokenInHead(p, token);\n            break;\n        }\n        case TAG_ID.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction templateEndTagInHead(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.generateImpliedEndTagsThoroughly();\n        if (p.openElements.currentTagId !== TAG_ID.TEMPLATE) {\n            p._err(token, ERR.closingOfElementWithOpenChildElements);\n        }\n        p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenInHead(p, token) {\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.AFTER_HEAD;\n    p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.BASEFONT:\n        case TAG_ID.BGSOUND:\n        case TAG_ID.HEAD:\n        case TAG_ID.LINK:\n        case TAG_ID.META:\n        case TAG_ID.NOFRAMES:\n        case TAG_ID.STYLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case TAG_ID.NOSCRIPT: {\n            p._err(token, ERR.nestedNoscriptInHead);\n            break;\n        }\n        default: {\n            tokenInHeadNoScript(p, token);\n        }\n    }\n}\nfunction endTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.NOSCRIPT: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        case TAG_ID.BR: {\n            tokenInHeadNoScript(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenInHeadNoScript(p, token) {\n    const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n    p._err(token, errCode);\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.BODY: {\n            p._insertElement(token, html_NS.HTML);\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_BODY;\n            break;\n        }\n        case TAG_ID.FRAMESET: {\n            p._insertElement(token, html_NS.HTML);\n            p.insertionMode = InsertionMode.IN_FRAMESET;\n            break;\n        }\n        case TAG_ID.BASE:\n        case TAG_ID.BASEFONT:\n        case TAG_ID.BGSOUND:\n        case TAG_ID.LINK:\n        case TAG_ID.META:\n        case TAG_ID.NOFRAMES:\n        case TAG_ID.SCRIPT:\n        case TAG_ID.STYLE:\n        case TAG_ID.TEMPLATE:\n        case TAG_ID.TITLE: {\n            p._err(token, ERR.abandonedHeadElementChild);\n            p.openElements.push(p.headElement, TAG_ID.HEAD);\n            startTagInHead(p, token);\n            p.openElements.remove(p.headElement);\n            break;\n        }\n        case TAG_ID.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenAfterHead(p, token);\n        }\n    }\n}\nfunction endTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.BODY:\n        case TAG_ID.HTML:\n        case TAG_ID.BR: {\n            tokenAfterHead(p, token);\n            break;\n        }\n        case TAG_ID.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenAfterHead(p, token) {\n    p._insertFakeElement(TAG_NAMES.BODY, TAG_ID.BODY);\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n    switch (token.type) {\n        case TokenType.CHARACTER: {\n            characterInBody(p, token);\n            break;\n        }\n        case TokenType.WHITESPACE_CHARACTER: {\n            whitespaceCharacterInBody(p, token);\n            break;\n        }\n        case TokenType.COMMENT: {\n            appendComment(p, token);\n            break;\n        }\n        case TokenType.START_TAG: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TokenType.END_TAG: {\n            endTagInBody(p, token);\n            break;\n        }\n        case TokenType.EOF: {\n            eofInBody(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction whitespaceCharacterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n    if (p.openElements.tmplCount === 0) {\n        p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n    }\n}\nfunction bodyStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (bodyElement && p.openElements.tmplCount === 0) {\n        p.framesetOk = false;\n        p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n    }\n}\nfunction framesetStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (p.framesetOk && bodyElement) {\n        p.treeAdapter.detachNode(bodyElement);\n        p.openElements.popAllUpToHtmlElement();\n        p._insertElement(token, html_NS.HTML);\n        p.insertionMode = InsertionMode.IN_FRAMESET;\n    }\n}\nfunction addressStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope(TAG_ID.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, html_NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope(TAG_ID.P)) {\n        p._closePElement();\n    }\n    if (isNumberedHeader(p.openElements.currentTagId)) {\n        p.openElements.pop();\n    }\n    p._insertElement(token, html_NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope(TAG_ID.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, html_NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    if (!p.formElement || inTemplate) {\n        if (p.openElements.hasInButtonScope(TAG_ID.P)) {\n            p._closePElement();\n        }\n        p._insertElement(token, html_NS.HTML);\n        if (!inTemplate) {\n            p.formElement = p.openElements.current;\n        }\n    }\n}\nfunction listItemStartTagInBody(p, token) {\n    p.framesetOk = false;\n    const tn = token.tagID;\n    for (let i = p.openElements.stackTop; i >= 0; i--) {\n        const elementId = p.openElements.tagIDs[i];\n        if ((tn === TAG_ID.LI && elementId === TAG_ID.LI) ||\n            ((tn === TAG_ID.DD || tn === TAG_ID.DT) && (elementId === TAG_ID.DD || elementId === TAG_ID.DT))) {\n            p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n            p.openElements.popUntilTagNamePopped(elementId);\n            break;\n        }\n        if (elementId !== TAG_ID.ADDRESS &&\n            elementId !== TAG_ID.DIV &&\n            elementId !== TAG_ID.P &&\n            p._isSpecialElement(p.openElements.items[i], elementId)) {\n            break;\n        }\n    }\n    if (p.openElements.hasInButtonScope(TAG_ID.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, html_NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope(TAG_ID.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, html_NS.HTML);\n    p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n    if (p.openElements.hasInScope(TAG_ID.BUTTON)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(TAG_ID.BUTTON);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, html_NS.HTML);\n    p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n    const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TAG_NAMES.A);\n    if (activeElementEntry) {\n        callAdoptionAgency(p, token);\n        p.openElements.remove(activeElementEntry.element);\n        p.activeFormattingElements.removeEntry(activeElementEntry);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, html_NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, html_NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    if (p.openElements.hasInScope(TAG_ID.NOBR)) {\n        callAdoptionAgency(p, token);\n        p._reconstructActiveFormattingElements();\n    }\n    p._insertElement(token, html_NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, html_NS.HTML);\n    p.activeFormattingElements.insertMarker();\n    p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n    if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(TAG_ID.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, html_NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, html_NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n    const inputType = getTokenAttr(token, ATTRS.TYPE);\n    return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, html_NS.HTML);\n    if (!isHiddenInput(token)) {\n        p.framesetOk = false;\n    }\n    token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n    p._appendElement(token, html_NS.HTML);\n    token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope(TAG_ID.P)) {\n        p._closePElement();\n    }\n    p._appendElement(token, html_NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n    token.tagName = TAG_NAMES.IMG;\n    token.tagID = TAG_ID.IMG;\n    areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n    p._insertElement(token, html_NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.tokenizer.state = TokenizerMode.RCDATA;\n    p.originalInsertionMode = p.insertionMode;\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope(TAG_ID.P)) {\n        p._closePElement();\n    }\n    p._reconstructActiveFormattingElements();\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as rawtext.\nfunction noembedStartTagInBody(p, token) {\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, html_NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode =\n        p.insertionMode === InsertionMode.IN_TABLE ||\n            p.insertionMode === InsertionMode.IN_CAPTION ||\n            p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n            p.insertionMode === InsertionMode.IN_ROW ||\n            p.insertionMode === InsertionMode.IN_CELL\n            ? InsertionMode.IN_SELECT_IN_TABLE\n            : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n    if (p.openElements.currentTagId === TAG_ID.OPTION) {\n        p.openElements.pop();\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, html_NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n    if (p.openElements.hasInScope(TAG_ID.RUBY)) {\n        p.openElements.generateImpliedEndTags();\n    }\n    p._insertElement(token, html_NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n    if (p.openElements.hasInScope(TAG_ID.RUBY)) {\n        p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.RTC);\n    }\n    p._insertElement(token, html_NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    adjustTokenMathMLAttrs(token);\n    adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, html_NS.MATHML);\n    }\n    else {\n        p._insertElement(token, html_NS.MATHML);\n    }\n    token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    adjustTokenSVGAttrs(token);\n    adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, html_NS.SVG);\n    }\n    else {\n        p._insertElement(token, html_NS.SVG);\n    }\n    token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, html_NS.HTML);\n}\nfunction startTagInBody(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.I:\n        case TAG_ID.S:\n        case TAG_ID.B:\n        case TAG_ID.U:\n        case TAG_ID.EM:\n        case TAG_ID.TT:\n        case TAG_ID.BIG:\n        case TAG_ID.CODE:\n        case TAG_ID.FONT:\n        case TAG_ID.SMALL:\n        case TAG_ID.STRIKE:\n        case TAG_ID.STRONG: {\n            bStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.A: {\n            aStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.H1:\n        case TAG_ID.H2:\n        case TAG_ID.H3:\n        case TAG_ID.H4:\n        case TAG_ID.H5:\n        case TAG_ID.H6: {\n            numberedHeaderStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.P:\n        case TAG_ID.DL:\n        case TAG_ID.OL:\n        case TAG_ID.UL:\n        case TAG_ID.DIV:\n        case TAG_ID.DIR:\n        case TAG_ID.NAV:\n        case TAG_ID.MAIN:\n        case TAG_ID.MENU:\n        case TAG_ID.ASIDE:\n        case TAG_ID.CENTER:\n        case TAG_ID.FIGURE:\n        case TAG_ID.FOOTER:\n        case TAG_ID.HEADER:\n        case TAG_ID.HGROUP:\n        case TAG_ID.DIALOG:\n        case TAG_ID.DETAILS:\n        case TAG_ID.ADDRESS:\n        case TAG_ID.ARTICLE:\n        case TAG_ID.SECTION:\n        case TAG_ID.SUMMARY:\n        case TAG_ID.FIELDSET:\n        case TAG_ID.BLOCKQUOTE:\n        case TAG_ID.FIGCAPTION: {\n            addressStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.LI:\n        case TAG_ID.DD:\n        case TAG_ID.DT: {\n            listItemStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.BR:\n        case TAG_ID.IMG:\n        case TAG_ID.WBR:\n        case TAG_ID.AREA:\n        case TAG_ID.EMBED:\n        case TAG_ID.KEYGEN: {\n            areaStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.HR: {\n            hrStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.RB:\n        case TAG_ID.RTC: {\n            rbStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.RT:\n        case TAG_ID.RP: {\n            rtStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.PRE:\n        case TAG_ID.LISTING: {\n            preStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.XMP: {\n            xmpStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.SVG: {\n            svgStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.HTML: {\n            htmlStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.BASE:\n        case TAG_ID.LINK:\n        case TAG_ID.META:\n        case TAG_ID.STYLE:\n        case TAG_ID.TITLE:\n        case TAG_ID.SCRIPT:\n        case TAG_ID.BGSOUND:\n        case TAG_ID.BASEFONT:\n        case TAG_ID.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case TAG_ID.BODY: {\n            bodyStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.FORM: {\n            formStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.NOBR: {\n            nobrStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.MATH: {\n            mathStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.TABLE: {\n            tableStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.INPUT: {\n            inputStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.PARAM:\n        case TAG_ID.TRACK:\n        case TAG_ID.SOURCE: {\n            paramStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.IMAGE: {\n            imageStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.BUTTON: {\n            buttonStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.APPLET:\n        case TAG_ID.OBJECT:\n        case TAG_ID.MARQUEE: {\n            appletStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.IFRAME: {\n            iframeStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.SELECT: {\n            selectStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.OPTION:\n        case TAG_ID.OPTGROUP: {\n            optgroupStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.NOEMBED: {\n            noembedStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.FRAMESET: {\n            framesetStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.TEXTAREA: {\n            textareaStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                noembedStartTagInBody(p, token);\n            }\n            else {\n                genericStartTagInBody(p, token);\n            }\n            break;\n        }\n        case TAG_ID.PLAINTEXT: {\n            plaintextStartTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.COL:\n        case TAG_ID.TH:\n        case TAG_ID.TD:\n        case TAG_ID.TR:\n        case TAG_ID.HEAD:\n        case TAG_ID.FRAME:\n        case TAG_ID.TBODY:\n        case TAG_ID.TFOOT:\n        case TAG_ID.THEAD:\n        case TAG_ID.CAPTION:\n        case TAG_ID.COLGROUP: {\n            // Ignore token\n            break;\n        }\n        default: {\n            genericStartTagInBody(p, token);\n        }\n    }\n}\nfunction bodyEndTagInBody(p, token) {\n    if (p.openElements.hasInScope(TAG_ID.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        //NOTE: <body> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo) {\n            const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n            if (bodyElement) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n}\nfunction htmlEndTagInBody(p, token) {\n    if (p.openElements.hasInScope(TAG_ID.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        endTagAfterBody(p, token);\n    }\n}\nfunction addressEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction formEndTagInBody(p) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    const { formElement } = p;\n    if (!inTemplate) {\n        p.formElement = null;\n    }\n    if ((formElement || inTemplate) && p.openElements.hasInScope(TAG_ID.FORM)) {\n        p.openElements.generateImpliedEndTags();\n        if (inTemplate) {\n            p.openElements.popUntilTagNamePopped(TAG_ID.FORM);\n        }\n        else if (formElement) {\n            p.openElements.remove(formElement);\n        }\n    }\n}\nfunction pEndTagInBody(p) {\n    if (!p.openElements.hasInButtonScope(TAG_ID.P)) {\n        p._insertFakeElement(TAG_NAMES.P, TAG_ID.P);\n    }\n    p._closePElement();\n}\nfunction liEndTagInBody(p) {\n    if (p.openElements.hasInListItemScope(TAG_ID.LI)) {\n        p.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.LI);\n        p.openElements.popUntilTagNamePopped(TAG_ID.LI);\n    }\n}\nfunction ddEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTagsWithExclusion(tn);\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction numberedHeaderEndTagInBody(p) {\n    if (p.openElements.hasNumberedHeaderInScope()) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilNumberedHeaderPopped();\n    }\n}\nfunction appletEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n        p.activeFormattingElements.clearToLastMarker();\n    }\n}\nfunction brEndTagInBody(p) {\n    p._reconstructActiveFormattingElements();\n    p._insertFakeElement(TAG_NAMES.BR, TAG_ID.BR);\n    p.openElements.pop();\n    p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n    const tn = token.tagName;\n    const tid = token.tagID;\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        const elementId = p.openElements.tagIDs[i];\n        // Compare the tag name here, as the tag might not be a known tag with an ID.\n        if (tid === elementId && (tid !== TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n            p.openElements.generateImpliedEndTagsWithExclusion(tid);\n            if (p.openElements.stackTop >= i)\n                p.openElements.shortenToLength(i);\n            break;\n        }\n        if (p._isSpecialElement(element, elementId)) {\n            break;\n        }\n    }\n}\nfunction endTagInBody(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.A:\n        case TAG_ID.B:\n        case TAG_ID.I:\n        case TAG_ID.S:\n        case TAG_ID.U:\n        case TAG_ID.EM:\n        case TAG_ID.TT:\n        case TAG_ID.BIG:\n        case TAG_ID.CODE:\n        case TAG_ID.FONT:\n        case TAG_ID.NOBR:\n        case TAG_ID.SMALL:\n        case TAG_ID.STRIKE:\n        case TAG_ID.STRONG: {\n            callAdoptionAgency(p, token);\n            break;\n        }\n        case TAG_ID.P: {\n            pEndTagInBody(p);\n            break;\n        }\n        case TAG_ID.DL:\n        case TAG_ID.UL:\n        case TAG_ID.OL:\n        case TAG_ID.DIR:\n        case TAG_ID.DIV:\n        case TAG_ID.NAV:\n        case TAG_ID.PRE:\n        case TAG_ID.MAIN:\n        case TAG_ID.MENU:\n        case TAG_ID.ASIDE:\n        case TAG_ID.BUTTON:\n        case TAG_ID.CENTER:\n        case TAG_ID.FIGURE:\n        case TAG_ID.FOOTER:\n        case TAG_ID.HEADER:\n        case TAG_ID.HGROUP:\n        case TAG_ID.DIALOG:\n        case TAG_ID.ADDRESS:\n        case TAG_ID.ARTICLE:\n        case TAG_ID.DETAILS:\n        case TAG_ID.SECTION:\n        case TAG_ID.SUMMARY:\n        case TAG_ID.LISTING:\n        case TAG_ID.FIELDSET:\n        case TAG_ID.BLOCKQUOTE:\n        case TAG_ID.FIGCAPTION: {\n            addressEndTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.LI: {\n            liEndTagInBody(p);\n            break;\n        }\n        case TAG_ID.DD:\n        case TAG_ID.DT: {\n            ddEndTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.H1:\n        case TAG_ID.H2:\n        case TAG_ID.H3:\n        case TAG_ID.H4:\n        case TAG_ID.H5:\n        case TAG_ID.H6: {\n            numberedHeaderEndTagInBody(p);\n            break;\n        }\n        case TAG_ID.BR: {\n            brEndTagInBody(p);\n            break;\n        }\n        case TAG_ID.BODY: {\n            bodyEndTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.HTML: {\n            htmlEndTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.FORM: {\n            formEndTagInBody(p);\n            break;\n        }\n        case TAG_ID.APPLET:\n        case TAG_ID.OBJECT:\n        case TAG_ID.MARQUEE: {\n            appletEndTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            genericEndTagInBody(p, token);\n        }\n    }\n}\nfunction eofInBody(p, token) {\n    if (p.tmplInsertionModeStack.length > 0) {\n        eofInTemplate(p, token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n    var _a;\n    if (token.tagID === TAG_ID.SCRIPT) {\n        (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n    }\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n    p._err(token, ERR.eofInElementThatCanContainOnlyText);\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n    p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n    if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n        p.pendingCharacterTokens.length = 0;\n        p.hasNonWhitespacePendingCharacterToken = false;\n        p.originalInsertionMode = p.insertionMode;\n        p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                characterInTableText(p, token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                whitespaceCharacterInTableText(p, token);\n                break;\n            }\n            // Ignore null\n        }\n    }\n    else {\n        tokenInTable(p, token);\n    }\n}\nfunction captionStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p.activeFormattingElements.insertMarker();\n    p._insertElement(token, html_NS.HTML);\n    p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, html_NS.HTML);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TAG_NAMES.COLGROUP, TAG_ID.COLGROUP);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n    startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, html_NS.HTML);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TAG_NAMES.TBODY, TAG_ID.TBODY);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n    startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n    if (p.openElements.hasInTableScope(TAG_ID.TABLE)) {\n        p.openElements.popUntilTagNamePopped(TAG_ID.TABLE);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n}\nfunction inputStartTagInTable(p, token) {\n    if (isHiddenInput(token)) {\n        p._appendElement(token, html_NS.HTML);\n    }\n    else {\n        tokenInTable(p, token);\n    }\n    token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n    if (!p.formElement && p.openElements.tmplCount === 0) {\n        p._insertElement(token, html_NS.HTML);\n        p.formElement = p.openElements.current;\n        p.openElements.pop();\n    }\n}\nfunction startTagInTable(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.TD:\n        case TAG_ID.TH:\n        case TAG_ID.TR: {\n            tdStartTagInTable(p, token);\n            break;\n        }\n        case TAG_ID.STYLE:\n        case TAG_ID.SCRIPT:\n        case TAG_ID.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case TAG_ID.COL: {\n            colStartTagInTable(p, token);\n            break;\n        }\n        case TAG_ID.FORM: {\n            formStartTagInTable(p, token);\n            break;\n        }\n        case TAG_ID.TABLE: {\n            tableStartTagInTable(p, token);\n            break;\n        }\n        case TAG_ID.TBODY:\n        case TAG_ID.TFOOT:\n        case TAG_ID.THEAD: {\n            tbodyStartTagInTable(p, token);\n            break;\n        }\n        case TAG_ID.INPUT: {\n            inputStartTagInTable(p, token);\n            break;\n        }\n        case TAG_ID.CAPTION: {\n            captionStartTagInTable(p, token);\n            break;\n        }\n        case TAG_ID.COLGROUP: {\n            colgroupStartTagInTable(p, token);\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction endTagInTable(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.TABLE: {\n            if (p.openElements.hasInTableScope(TAG_ID.TABLE)) {\n                p.openElements.popUntilTagNamePopped(TAG_ID.TABLE);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case TAG_ID.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case TAG_ID.BODY:\n        case TAG_ID.CAPTION:\n        case TAG_ID.COL:\n        case TAG_ID.COLGROUP:\n        case TAG_ID.HTML:\n        case TAG_ID.TBODY:\n        case TAG_ID.TD:\n        case TAG_ID.TFOOT:\n        case TAG_ID.TH:\n        case TAG_ID.THEAD:\n        case TAG_ID.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction tokenInTable(p, token) {\n    const savedFosterParentingState = p.fosterParentingEnabled;\n    p.fosterParentingEnabled = true;\n    // Process token in `In Body` mode\n    modeInBody(p, token);\n    p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n    p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n    let i = 0;\n    if (p.hasNonWhitespacePendingCharacterToken) {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            tokenInTable(p, p.pendingCharacterTokens[i]);\n        }\n    }\n    else {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            p._insertCharacters(p.pendingCharacterTokens[i]);\n        }\n    }\n    p.insertionMode = p.originalInsertionMode;\n    p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([TAG_ID.CAPTION, TAG_ID.COL, TAG_ID.COLGROUP, TAG_ID.TBODY, TAG_ID.TD, TAG_ID.TFOOT, TAG_ID.TH, TAG_ID.THEAD, TAG_ID.TR]);\nfunction startTagInCaption(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCaption(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case TAG_ID.CAPTION:\n        case TAG_ID.TABLE: {\n            if (p.openElements.hasInTableScope(TAG_ID.CAPTION)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped(TAG_ID.CAPTION);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                if (tn === TAG_ID.TABLE) {\n                    endTagInTable(p, token);\n                }\n            }\n            break;\n        }\n        case TAG_ID.BODY:\n        case TAG_ID.COL:\n        case TAG_ID.COLGROUP:\n        case TAG_ID.HTML:\n        case TAG_ID.TBODY:\n        case TAG_ID.TD:\n        case TAG_ID.TFOOT:\n        case TAG_ID.TH:\n        case TAG_ID.THEAD:\n        case TAG_ID.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.COL: {\n            p._appendElement(token, html_NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case TAG_ID.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction endTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.COLGROUP: {\n            if (p.openElements.currentTagId === TAG_ID.COLGROUP) {\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case TAG_ID.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case TAG_ID.COL: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction tokenInColumnGroup(p, token) {\n    if (p.openElements.currentTagId === TAG_ID.COLGROUP) {\n        p.openElements.pop();\n        p.insertionMode = InsertionMode.IN_TABLE;\n        p._processToken(token);\n    }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.TR: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertElement(token, html_NS.HTML);\n            p.insertionMode = InsertionMode.IN_ROW;\n            break;\n        }\n        case TAG_ID.TH:\n        case TAG_ID.TD: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertFakeElement(TAG_NAMES.TR, TAG_ID.TR);\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        case TAG_ID.CAPTION:\n        case TAG_ID.COL:\n        case TAG_ID.COLGROUP:\n        case TAG_ID.TBODY:\n        case TAG_ID.TFOOT:\n        case TAG_ID.THEAD: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                startTagInTable(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInTableBody(p, token) {\n    const tn = token.tagID;\n    switch (token.tagID) {\n        case TAG_ID.TBODY:\n        case TAG_ID.TFOOT:\n        case TAG_ID.THEAD: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case TAG_ID.TABLE: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                endTagInTable(p, token);\n            }\n            break;\n        }\n        case TAG_ID.BODY:\n        case TAG_ID.CAPTION:\n        case TAG_ID.COL:\n        case TAG_ID.COLGROUP:\n        case TAG_ID.HTML:\n        case TAG_ID.TD:\n        case TAG_ID.TH:\n        case TAG_ID.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.TH:\n        case TAG_ID.TD: {\n            p.openElements.clearBackToTableRowContext();\n            p._insertElement(token, html_NS.HTML);\n            p.insertionMode = InsertionMode.IN_CELL;\n            p.activeFormattingElements.insertMarker();\n            break;\n        }\n        case TAG_ID.CAPTION:\n        case TAG_ID.COL:\n        case TAG_ID.COLGROUP:\n        case TAG_ID.TBODY:\n        case TAG_ID.TFOOT:\n        case TAG_ID.THEAD:\n        case TAG_ID.TR: {\n            if (p.openElements.hasInTableScope(TAG_ID.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                startTagInTableBody(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInRow(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.TR: {\n            if (p.openElements.hasInTableScope(TAG_ID.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            }\n            break;\n        }\n        case TAG_ID.TABLE: {\n            if (p.openElements.hasInTableScope(TAG_ID.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case TAG_ID.TBODY:\n        case TAG_ID.TFOOT:\n        case TAG_ID.THEAD: {\n            if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(TAG_ID.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case TAG_ID.BODY:\n        case TAG_ID.CAPTION:\n        case TAG_ID.COL:\n        case TAG_ID.COLGROUP:\n        case TAG_ID.HTML:\n        case TAG_ID.TD:\n        case TAG_ID.TH: {\n            // Ignore end tag\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope(TAG_ID.TD) || p.openElements.hasInTableScope(TAG_ID.TH)) {\n            p._closeTableCell();\n            startTagInRow(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCell(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case TAG_ID.TD:\n        case TAG_ID.TH: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped(tn);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_ROW;\n            }\n            break;\n        }\n        case TAG_ID.TABLE:\n        case TAG_ID.TBODY:\n        case TAG_ID.TFOOT:\n        case TAG_ID.THEAD:\n        case TAG_ID.TR: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p._closeTableCell();\n                endTagInRow(p, token);\n            }\n            break;\n        }\n        case TAG_ID.BODY:\n        case TAG_ID.CAPTION:\n        case TAG_ID.COL:\n        case TAG_ID.COLGROUP:\n        case TAG_ID.HTML: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.OPTION: {\n            if (p.openElements.currentTagId === TAG_ID.OPTION) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, html_NS.HTML);\n            break;\n        }\n        case TAG_ID.OPTGROUP: {\n            if (p.openElements.currentTagId === TAG_ID.OPTION) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === TAG_ID.OPTGROUP) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, html_NS.HTML);\n            break;\n        }\n        case TAG_ID.INPUT:\n        case TAG_ID.KEYGEN:\n        case TAG_ID.TEXTAREA:\n        case TAG_ID.SELECT: {\n            if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) {\n                p.openElements.popUntilTagNamePopped(TAG_ID.SELECT);\n                p._resetInsertionMode();\n                if (token.tagID !== TAG_ID.SELECT) {\n                    p._processStartTag(token);\n                }\n            }\n            break;\n        }\n        case TAG_ID.SCRIPT:\n        case TAG_ID.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInSelect(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.OPTGROUP: {\n            if (p.openElements.stackTop > 0 &&\n                p.openElements.currentTagId === TAG_ID.OPTION &&\n                p.openElements.tagIDs[p.openElements.stackTop - 1] === TAG_ID.OPTGROUP) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === TAG_ID.OPTGROUP) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case TAG_ID.OPTION: {\n            if (p.openElements.currentTagId === TAG_ID.OPTION) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case TAG_ID.SELECT: {\n            if (p.openElements.hasInSelectScope(TAG_ID.SELECT)) {\n                p.openElements.popUntilTagNamePopped(TAG_ID.SELECT);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case TAG_ID.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === TAG_ID.CAPTION ||\n        tn === TAG_ID.TABLE ||\n        tn === TAG_ID.TBODY ||\n        tn === TAG_ID.TFOOT ||\n        tn === TAG_ID.THEAD ||\n        tn === TAG_ID.TR ||\n        tn === TAG_ID.TD ||\n        tn === TAG_ID.TH) {\n        p.openElements.popUntilTagNamePopped(TAG_ID.SELECT);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n    else {\n        startTagInSelect(p, token);\n    }\n}\nfunction endTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === TAG_ID.CAPTION ||\n        tn === TAG_ID.TABLE ||\n        tn === TAG_ID.TBODY ||\n        tn === TAG_ID.TFOOT ||\n        tn === TAG_ID.THEAD ||\n        tn === TAG_ID.TR ||\n        tn === TAG_ID.TD ||\n        tn === TAG_ID.TH) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.popUntilTagNamePopped(TAG_ID.SELECT);\n            p._resetInsertionMode();\n            p.onEndTag(token);\n        }\n    }\n    else {\n        endTagInSelect(p, token);\n    }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n    switch (token.tagID) {\n        // First, handle tags that can start without a mode change\n        case TAG_ID.BASE:\n        case TAG_ID.BASEFONT:\n        case TAG_ID.BGSOUND:\n        case TAG_ID.LINK:\n        case TAG_ID.META:\n        case TAG_ID.NOFRAMES:\n        case TAG_ID.SCRIPT:\n        case TAG_ID.STYLE:\n        case TAG_ID.TEMPLATE:\n        case TAG_ID.TITLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        // Re-process the token in the appropriate mode\n        case TAG_ID.CAPTION:\n        case TAG_ID.COLGROUP:\n        case TAG_ID.TBODY:\n        case TAG_ID.TFOOT:\n        case TAG_ID.THEAD: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n            break;\n        }\n        case TAG_ID.COL: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n            p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n            startTagInColumnGroup(p, token);\n            break;\n        }\n        case TAG_ID.TR: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n            p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            startTagInTableBody(p, token);\n            break;\n        }\n        case TAG_ID.TD:\n        case TAG_ID.TH: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        default: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n            p.insertionMode = InsertionMode.IN_BODY;\n            startTagInBody(p, token);\n        }\n    }\n}\nfunction endTagInTemplate(p, token) {\n    if (token.tagID === TAG_ID.TEMPLATE) {\n        templateEndTagInHead(p, token);\n    }\n}\nfunction eofInTemplate(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.popUntilTagNamePopped(TAG_ID.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n        p.onEof(token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n    if (token.tagID === TAG_ID.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction endTagAfterBody(p, token) {\n    var _a;\n    if (token.tagID === TAG_ID.HTML) {\n        if (!p.fragmentContext) {\n            p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n        }\n        //NOTE: <html> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === TAG_ID.HTML) {\n            p._setEndLocation(p.openElements.items[0], token);\n            // Update the body element, if it doesn't have an end tag\n            const bodyElement = p.openElements.items[1];\n            if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction tokenAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.FRAMESET: {\n            p._insertElement(token, html_NS.HTML);\n            break;\n        }\n        case TAG_ID.FRAME: {\n            p._appendElement(token, html_NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case TAG_ID.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInFrameset(p, token) {\n    if (token.tagID === TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n        p.openElements.pop();\n        if (!p.fragmentContext && p.openElements.currentTagId !== TAG_ID.FRAMESET) {\n            p.insertionMode = InsertionMode.AFTER_FRAMESET;\n        }\n    }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagAfterFrameset(p, token) {\n    if (token.tagID === TAG_ID.HTML) {\n        p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n    }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n    if (token.tagID === TAG_ID.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterAfterBody(p, token);\n    }\n}\nfunction tokenAfterAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case TAG_ID.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TAG_ID.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n    token.chars = REPLACEMENT_CHARACTER;\n    p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n    while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== html_NS.HTML &&\n        !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n        p.openElements.pop();\n    }\n}\nfunction startTagInForeignContent(p, token) {\n    if (causesExit(token)) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._startTagOutsideForeignContent(token);\n    }\n    else {\n        const current = p._getAdjustedCurrentElement();\n        const currentNs = p.treeAdapter.getNamespaceURI(current);\n        if (currentNs === html_NS.MATHML) {\n            adjustTokenMathMLAttrs(token);\n        }\n        else if (currentNs === html_NS.SVG) {\n            adjustTokenSVGTagName(token);\n            adjustTokenSVGAttrs(token);\n        }\n        adjustTokenXMLAttrs(token);\n        if (token.selfClosing) {\n            p._appendElement(token, currentNs);\n        }\n        else {\n            p._insertElement(token, currentNs);\n        }\n        token.ackSelfClosing = true;\n    }\n}\nfunction endTagInForeignContent(p, token) {\n    if (token.tagID === TAG_ID.P || token.tagID === TAG_ID.BR) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._endTagOutsideForeignContent(token);\n        return;\n    }\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        if (p.treeAdapter.getNamespaceURI(element) === html_NS.HTML) {\n            p._endTagOutsideForeignContent(token);\n            break;\n        }\n        const tagName = p.treeAdapter.getTagName(element);\n        if (tagName.toLowerCase() === token.tagName) {\n            //NOTE: update the token tag name for `_setEndLocation`.\n            token.tagName = tagName;\n            p.openElements.shortenToLength(i);\n            break;\n        }\n    }\n}\n\n;// ./node_modules/entities/lib/esm/escape.js\nconst xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n    [34, \"&quot;\"],\n    [38, \"&amp;\"],\n    [39, \"&apos;\"],\n    [60, \"&lt;\"],\n    [62, \"&gt;\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nconst getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n    ? (str, index) => str.codePointAt(index)\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n            ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n                c.charCodeAt(index + 1) -\n                0xdc00 +\n                0x10000\n            : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nfunction encodeXML(str) {\n    let ret = \"\";\n    let lastIdx = 0;\n    let match;\n    while ((match = xmlReplacer.exec(str)) !== null) {\n        const i = match.index;\n        const char = str.charCodeAt(i);\n        const next = xmlCodeMap.get(char);\n        if (next !== undefined) {\n            ret += str.substring(lastIdx, i) + next;\n            lastIdx = i + 1;\n        }\n        else {\n            ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n            // Increase by 1 if we have a surrogate pair\n            lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n        }\n    }\n    return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nconst escape_escape = (/* unused pure expression or super */ null && (encodeXML));\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n    return function escape(data) {\n        let match;\n        let lastIdx = 0;\n        let result = \"\";\n        while ((match = regex.exec(data))) {\n            if (lastIdx !== match.index) {\n                result += data.substring(lastIdx, match.index);\n            }\n            // We know that this character will be in the map.\n            result += map.get(match[0].charCodeAt(0));\n            // Every match will be of length 1\n            lastIdx = match.index + 1;\n        }\n        return result + data.substring(lastIdx);\n    };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nconst escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nconst escape_escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n    [34, \"&quot;\"],\n    [38, \"&amp;\"],\n    [160, \"&nbsp;\"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nconst escape_escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n    [38, \"&amp;\"],\n    [60, \"&lt;\"],\n    [62, \"&gt;\"],\n    [160, \"&nbsp;\"],\n]));\n\n;// ./node_modules/parse5/dist/serializer/index.js\n\n\n\n// Sets\nconst VOID_ELEMENTS = new Set([\n    TAG_NAMES.AREA,\n    TAG_NAMES.BASE,\n    TAG_NAMES.BASEFONT,\n    TAG_NAMES.BGSOUND,\n    TAG_NAMES.BR,\n    TAG_NAMES.COL,\n    TAG_NAMES.EMBED,\n    TAG_NAMES.FRAME,\n    TAG_NAMES.HR,\n    TAG_NAMES.IMG,\n    TAG_NAMES.INPUT,\n    TAG_NAMES.KEYGEN,\n    TAG_NAMES.LINK,\n    TAG_NAMES.META,\n    TAG_NAMES.PARAM,\n    TAG_NAMES.SOURCE,\n    TAG_NAMES.TRACK,\n    TAG_NAMES.WBR,\n]);\nfunction isVoidElement(node, options) {\n    return (options.treeAdapter.isElementNode(node) &&\n        options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n        VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nfunction serializer_serialize(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    if (isVoidElement(node, opts)) {\n        return '';\n    }\n    return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const html = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nfunction serializeOuter(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n    let html = '';\n    // Get container of the child nodes\n    const container = options.treeAdapter.isElementNode(parentNode) &&\n        options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n        options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n        ? options.treeAdapter.getTemplateContent(parentNode)\n        : parentNode;\n    const childNodes = options.treeAdapter.getChildNodes(container);\n    if (childNodes) {\n        for (const currentNode of childNodes) {\n            html += serializeNode(currentNode, options);\n        }\n    }\n    return html;\n}\nfunction serializeNode(node, options) {\n    if (options.treeAdapter.isElementNode(node)) {\n        return serializeElement(node, options);\n    }\n    if (options.treeAdapter.isTextNode(node)) {\n        return serializeTextNode(node, options);\n    }\n    if (options.treeAdapter.isCommentNode(node)) {\n        return serializeCommentNode(node, options);\n    }\n    if (options.treeAdapter.isDocumentTypeNode(node)) {\n        return serializeDocumentTypeNode(node, options);\n    }\n    // Return an empty string for unknown nodes\n    return '';\n}\nfunction serializeElement(node, options) {\n    const tn = options.treeAdapter.getTagName(node);\n    return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n    let html = '';\n    for (const attr of treeAdapter.getAttrList(node)) {\n        html += ' ';\n        if (!attr.namespace) {\n            html += attr.name;\n        }\n        else\n            switch (attr.namespace) {\n                case NS.XML: {\n                    html += `xml:${attr.name}`;\n                    break;\n                }\n                case NS.XMLNS: {\n                    if (attr.name !== 'xmlns') {\n                        html += 'xmlns:';\n                    }\n                    html += attr.name;\n                    break;\n                }\n                case NS.XLINK: {\n                    html += `xlink:${attr.name}`;\n                    break;\n                }\n                default: {\n                    html += `${attr.prefix}:${attr.name}`;\n                }\n            }\n        html += `=\"${escapeAttribute(attr.value)}\"`;\n    }\n    return html;\n}\nfunction serializeTextNode(node, options) {\n    const { treeAdapter } = options;\n    const content = treeAdapter.getTextNodeContent(node);\n    const parent = treeAdapter.getParentNode(node);\n    const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n    return parentTn &&\n        treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n        hasUnescapedText(parentTn, options.scriptingEnabled)\n        ? content\n        : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n    return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n    return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n\n;// ./node_modules/parse5/dist/index.js\n\n\n\n\n\n/** @internal */\n\n/** @internal */\n\n/** @internal */\n\n/** @internal */\n\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nfunction dist_parse(html, options) {\n    return Parser.parse(html, options);\n}\nfunction parseFragment(fragmentContext, html, options) {\n    if (typeof fragmentContext === 'string') {\n        options = html;\n        html = fragmentContext;\n        fragmentContext = null;\n    }\n    const parser = Parser.getFragmentParser(fragmentContext, options);\n    parser.tokenizer.write(html, true);\n    return parser.getFragment();\n}\n\n;// ./node_modules/hast-util-from-html/lib/errors.js\n/**\n * @typedef ErrorInfo\n *   Info on a `parse5` error.\n * @property {string} reason\n *   Reason of error.\n * @property {string} description\n *   More info on error.\n * @property {false} [url]\n *   Turn off if this is not documented in the html5 spec (optional).\n */\n\nconst errors = {\n  /** @type {ErrorInfo} */\n  abandonedHeadElementChild: {\n    reason: 'Unexpected metadata element after head',\n    description:\n      'Unexpected element after head. Expected the element before `</head>`',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  abruptClosingOfEmptyComment: {\n    reason: 'Unexpected abruptly closed empty comment',\n    description: 'Unexpected `>` or `->`. Expected `-->` to close comments'\n  },\n  /** @type {ErrorInfo} */\n  abruptDoctypePublicIdentifier: {\n    reason: 'Unexpected abruptly closed public identifier',\n    description:\n      'Unexpected `>`. Expected a closing `\"` or `\\'` after the public identifier'\n  },\n  /** @type {ErrorInfo} */\n  abruptDoctypeSystemIdentifier: {\n    reason: 'Unexpected abruptly closed system identifier',\n    description:\n      'Unexpected `>`. Expected a closing `\"` or `\\'` after the identifier identifier'\n  },\n  /** @type {ErrorInfo} */\n  absenceOfDigitsInNumericCharacterReference: {\n    reason: 'Unexpected non-digit at start of numeric character reference',\n    description:\n      'Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references'\n  },\n  /** @type {ErrorInfo} */\n  cdataInHtmlContent: {\n    reason: 'Unexpected CDATA section in HTML',\n    description:\n      'Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead'\n  },\n  /** @type {ErrorInfo} */\n  characterReferenceOutsideUnicodeRange: {\n    reason: 'Unexpected too big numeric character reference',\n    description:\n      'Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)'\n  },\n  /** @type {ErrorInfo} */\n  closingOfElementWithOpenChildElements: {\n    reason: 'Unexpected closing tag with open child elements',\n    description:\n      'Unexpectedly closing tag. Expected other tags to be closed first',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  controlCharacterInInputStream: {\n    reason: 'Unexpected control character',\n    description:\n      'Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace'\n  },\n  /** @type {ErrorInfo} */\n  controlCharacterReference: {\n    reason: 'Unexpected control character reference',\n    description:\n      'Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace'\n  },\n  /** @type {ErrorInfo} */\n  disallowedContentInNoscriptInHead: {\n    reason: 'Disallowed content inside `<noscript>` in `<head>`',\n    description:\n      'Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  duplicateAttribute: {\n    reason: 'Unexpected duplicate attribute',\n    description:\n      'Unexpectedly double attribute. Expected attributes to occur only once'\n  },\n  /** @type {ErrorInfo} */\n  endTagWithAttributes: {\n    reason: 'Unexpected attribute on closing tag',\n    description: 'Unexpected attribute. Expected `>` instead'\n  },\n  /** @type {ErrorInfo} */\n  endTagWithTrailingSolidus: {\n    reason: 'Unexpected slash at end of closing tag',\n    description: 'Unexpected `%c-1`. Expected `>` instead'\n  },\n  /** @type {ErrorInfo} */\n  endTagWithoutMatchingOpenElement: {\n    reason: 'Unexpected unopened end tag',\n    description: 'Unexpected end tag. Expected no end tag or another end tag',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  eofBeforeTagName: {\n    reason: 'Unexpected end of file',\n    description: 'Unexpected end of file. Expected tag name instead'\n  },\n  /** @type {ErrorInfo} */\n  eofInCdata: {\n    reason: 'Unexpected end of file in CDATA',\n    description: 'Unexpected end of file. Expected `]]>` to close the CDATA'\n  },\n  /** @type {ErrorInfo} */\n  eofInComment: {\n    reason: 'Unexpected end of file in comment',\n    description: 'Unexpected end of file. Expected `-->` to close the comment'\n  },\n  /** @type {ErrorInfo} */\n  eofInDoctype: {\n    reason: 'Unexpected end of file in doctype',\n    description:\n      'Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)'\n  },\n  /** @type {ErrorInfo} */\n  eofInElementThatCanContainOnlyText: {\n    reason: 'Unexpected end of file in element that can only contain text',\n    description: 'Unexpected end of file. Expected text or a closing tag',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  eofInScriptHtmlCommentLikeText: {\n    reason: 'Unexpected end of file in comment inside script',\n    description: 'Unexpected end of file. Expected `-->` to close the comment'\n  },\n  /** @type {ErrorInfo} */\n  eofInTag: {\n    reason: 'Unexpected end of file in tag',\n    description: 'Unexpected end of file. Expected `>` to close the tag'\n  },\n  /** @type {ErrorInfo} */\n  incorrectlyClosedComment: {\n    reason: 'Incorrectly closed comment',\n    description: 'Unexpected `%c-1`. Expected `-->` to close the comment'\n  },\n  /** @type {ErrorInfo} */\n  incorrectlyOpenedComment: {\n    reason: 'Incorrectly opened comment',\n    description: 'Unexpected `%c`. Expected `<!--` to open the comment'\n  },\n  /** @type {ErrorInfo} */\n  invalidCharacterSequenceAfterDoctypeName: {\n    reason: 'Invalid sequence after doctype name',\n    description: 'Unexpected sequence at `%c`. Expected `public` or `system`'\n  },\n  /** @type {ErrorInfo} */\n  invalidFirstCharacterOfTagName: {\n    reason: 'Invalid first character in tag name',\n    description: 'Unexpected `%c`. Expected an ASCII letter instead'\n  },\n  /** @type {ErrorInfo} */\n  misplacedDoctype: {\n    reason: 'Misplaced doctype',\n    description: 'Unexpected doctype. Expected doctype before head',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  misplacedStartTagForHeadElement: {\n    reason: 'Misplaced `<head>` start tag',\n    description:\n      'Unexpected start tag `<head>`. Expected `<head>` directly after doctype',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  missingAttributeValue: {\n    reason: 'Missing attribute value',\n    description:\n      'Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingDoctype: {\n    reason: 'Missing doctype before other content',\n    description: 'Expected a `<!doctype html>` before anything else',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  missingDoctypeName: {\n    reason: 'Missing doctype name',\n    description: 'Unexpected doctype end at `%c`. Expected `html` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingDoctypePublicIdentifier: {\n    reason: 'Missing public identifier in doctype',\n    description: 'Unexpected `%c`. Expected identifier for `public` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingDoctypeSystemIdentifier: {\n    reason: 'Missing system identifier in doctype',\n    description:\n      'Unexpected `%c`. Expected identifier for `system` instead (suggested: `\"about:legacy-compat\"`)'\n  },\n  /** @type {ErrorInfo} */\n  missingEndTagName: {\n    reason: 'Missing name in end tag',\n    description: 'Unexpected `%c`. Expected an ASCII letter instead'\n  },\n  /** @type {ErrorInfo} */\n  missingQuoteBeforeDoctypePublicIdentifier: {\n    reason: 'Missing quote before public identifier in doctype',\n    description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingQuoteBeforeDoctypeSystemIdentifier: {\n    reason: 'Missing quote before system identifier in doctype',\n    description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingSemicolonAfterCharacterReference: {\n    reason: 'Missing semicolon after character reference',\n    description: 'Unexpected `%c`. Expected `;` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceAfterDoctypePublicKeyword: {\n    reason: 'Missing whitespace after public identifier in doctype',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceAfterDoctypeSystemKeyword: {\n    reason: 'Missing whitespace after system identifier in doctype',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceBeforeDoctypeName: {\n    reason: 'Missing whitespace before doctype name',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceBetweenAttributes: {\n    reason: 'Missing whitespace between attributes',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: {\n    reason:\n      'Missing whitespace between public and system identifiers in doctype',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  nestedComment: {\n    reason: 'Unexpected nested comment',\n    description: 'Unexpected `<!--`. Expected `-->`'\n  },\n  /** @type {ErrorInfo} */\n  nestedNoscriptInHead: {\n    reason: 'Unexpected nested `<noscript>` in `<head>`',\n    description:\n      'Unexpected `<noscript>`. Expected a closing tag or a meta element',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  nonConformingDoctype: {\n    reason: 'Unexpected non-conforming doctype declaration',\n    description:\n      'Expected `<!doctype html>` or `<!doctype html system \"about:legacy-compat\">`',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  nonVoidHtmlElementStartTagWithTrailingSolidus: {\n    reason: 'Unexpected trailing slash on start tag of non-void element',\n    description: 'Unexpected `/`. Expected `>` instead'\n  },\n  /** @type {ErrorInfo} */\n  noncharacterCharacterReference: {\n    reason:\n      'Unexpected noncharacter code point referenced by character reference',\n    description: 'Unexpected code point. Do not use noncharacters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  noncharacterInInputStream: {\n    reason: 'Unexpected noncharacter character',\n    description: 'Unexpected code point `%x`. Do not use noncharacters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  nullCharacterReference: {\n    reason: 'Unexpected NULL character referenced by character reference',\n    description: 'Unexpected code point. Do not use NULL characters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  openElementsLeftAfterEof: {\n    reason: 'Unexpected end of file',\n    description: 'Unexpected end of file. Expected closing tag instead',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  surrogateCharacterReference: {\n    reason: 'Unexpected surrogate character referenced by character reference',\n    description:\n      'Unexpected code point. Do not use lone surrogate characters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  surrogateInInputStream: {\n    reason: 'Unexpected surrogate character',\n    description:\n      'Unexpected code point `%x`. Do not use lone surrogate characters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedCharacterAfterDoctypeSystemIdentifier: {\n    reason: 'Invalid character after system identifier in doctype',\n    description: 'Unexpected character at `%c`. Expected `>`'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedCharacterInAttributeName: {\n    reason: 'Unexpected character in attribute name',\n    description:\n      'Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedCharacterInUnquotedAttributeValue: {\n    reason: 'Unexpected character in unquoted attribute value',\n    description: 'Unexpected `%c`. Quote the attribute value to include it'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedEqualsSignBeforeAttributeName: {\n    reason: 'Unexpected equals sign before attribute name',\n    description: 'Unexpected `%c`. Add an attribute name before it'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedNullCharacter: {\n    reason: 'Unexpected NULL character',\n    description:\n      'Unexpected code point `%x`. Do not use NULL characters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedQuestionMarkInsteadOfTagName: {\n    reason: 'Unexpected question mark instead of tag name',\n    description: 'Unexpected `%c`. Expected an ASCII letter instead'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedSolidusInTag: {\n    reason: 'Unexpected slash in tag',\n    description:\n      'Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value'\n  },\n  /** @type {ErrorInfo} */\n  unknownNamedCharacterReference: {\n    reason: 'Unexpected unknown named character reference',\n    description:\n      'Unexpected character reference. Expected known named character references'\n  }\n}\n\n;// ./node_modules/hast-util-from-html/lib/index.js\n/**\n * @import {Root} from 'hast'\n * @import {ParserError} from 'parse5'\n * @import {Value} from 'vfile'\n * @import {ErrorCode, Options} from './types.js'\n */\n\n\n\n\n\n\n\n\nconst base = 'https://html.spec.whatwg.org/multipage/parsing.html#parse-error-'\n\nconst dashToCamelRe = /-[a-z]/g\nconst formatCRe = /%c(?:([-+])(\\d+))?/g\nconst formatXRe = /%x/g\n\nconst fatalities = {2: true, 1: false, 0: null}\n\n/** @type {Readonly<Options>} */\nconst hast_util_from_html_lib_emptyOptions = {}\n\n/**\n * Turn serialized HTML into a hast tree.\n *\n * @param {VFile | Value} value\n *   Serialized HTML to parse.\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Root}\n *   Tree.\n */\nfunction fromHtml(value, options) {\n  const settings = options || hast_util_from_html_lib_emptyOptions\n  const onerror = settings.onerror\n  const file = value instanceof VFile ? value : new VFile(value)\n  const parseFunction = settings.fragment ? parseFragment : dist_parse\n  const document = String(file)\n  const p5Document = parseFunction(document, {\n    sourceCodeLocationInfo: true,\n    // Note `parse5` types currently do not allow `undefined`.\n    onParseError: settings.onerror ? internalOnerror : null,\n    scriptingEnabled: false\n  })\n\n  // `parse5` returns document which are always mapped to roots.\n  return /** @type {Root} */ (\n    fromParse5(p5Document, {\n      file,\n      space: settings.space,\n      verbose: settings.verbose\n    })\n  )\n\n  /**\n   * Handle a parse error.\n   *\n   * @param {ParserError} error\n   *   Parse5 error.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function internalOnerror(error) {\n    const code = error.code\n    const name = lib_camelcase(code)\n    const setting = settings[name]\n    const config = setting === null || setting === undefined ? true : setting\n    const level = typeof config === 'number' ? config : config ? 1 : 0\n\n    if (level) {\n      const info = errors[name]\n      default_ok(info, 'expected known error from `parse5`')\n\n      const message = new VFileMessage(format(info.reason), {\n        place: {\n          start: {\n            line: error.startLine,\n            column: error.startCol,\n            offset: error.startOffset\n          },\n          end: {\n            line: error.endLine,\n            column: error.endCol,\n            offset: error.endOffset\n          }\n        },\n        ruleId: code,\n        source: 'hast-util-from-html'\n      })\n\n      if (file.path) {\n        message.file = file.path\n        message.name = file.path + ':' + message.name\n      }\n\n      message.fatal = fatalities[level]\n      message.note = format(info.description)\n      message.url = info.url === false ? undefined : base + code\n\n      default_ok(onerror, '`internalOnerror` is not passed if `onerror` is not set')\n      onerror(message)\n    }\n\n    /**\n     * Format a human readable string about an error.\n     *\n     * @param {string} value\n     *   Value to format.\n     * @returns {string}\n     *   Formatted.\n     */\n    function format(value) {\n      return value.replace(formatCRe, formatC).replace(formatXRe, formatX)\n\n      /**\n       * Format the character.\n       *\n       * @param {string} _\n       *   Match.\n       * @param {string} $1\n       *   Sign (`-` or `+`, optional).\n       * @param {string} $2\n       *   Offset.\n       * @returns {string}\n       *   Formatted.\n       */\n      function formatC(_, $1, $2) {\n        const offset =\n          ($2 ? Number.parseInt($2, 10) : 0) * ($1 === '-' ? -1 : 1)\n        const char = document.charAt(error.startOffset + offset)\n        return visualizeCharacter(char)\n      }\n\n      /**\n       * Format the character code.\n       *\n       * @returns {string}\n       *   Formatted.\n       */\n      function formatX() {\n        return visualizeCharacterCode(document.charCodeAt(error.startOffset))\n      }\n    }\n  }\n}\n\n/**\n * @param {string} value\n *   Error code in dash case.\n * @returns {ErrorCode}\n *   Error code in camelcase.\n */\nfunction lib_camelcase(value) {\n  // This should match an error code.\n  return /** @type {ErrorCode} */ (value.replace(dashToCamelRe, dashToCamel))\n}\n\n/**\n * @param {string} $0\n *   Match.\n * @returns {string}\n *   Camelcased.\n */\nfunction dashToCamel($0) {\n  return $0.charAt(1).toUpperCase()\n}\n\n/**\n * @param {string} char\n *   Character.\n * @returns {string}\n *   Formatted.\n */\nfunction visualizeCharacter(char) {\n  return char === '`' ? '` ` `' : char\n}\n\n/**\n * @param {number} charCode\n *   Character code.\n * @returns {string}\n *   Formatted.\n */\nfunction visualizeCharacterCode(charCode) {\n  return '0x' + charCode.toString(16).toUpperCase()\n}\n\n;// ./processor/transform/stripComments.ts\n\nconst HTML_COMMENT_REGEX = /<!--[\\s\\S]*?-->/g;\nconst MDX_COMMENT_REGEX = /\\/\\*(?:(?!\\*\\/)[\\s\\S])*\\*\\//g;\n/**\n * A remark plugin to remove comments from Markdown and MDX.\n */\nconst stripCommentsTransformer = () => {\n    return (tree) => {\n        visit(tree, ['html', 'mdxFlowExpression', 'mdxTextExpression'], (node, index, parent) => {\n            if (parent && typeof index === 'number') {\n                // Remove HTML comments\n                if (node.type === 'html' && HTML_COMMENT_REGEX.test(node.value)) {\n                    const newValue = node.value.replace(HTML_COMMENT_REGEX, '').trim();\n                    if (newValue) {\n                        node.value = newValue;\n                    }\n                    else {\n                        parent.children.splice(index, 1);\n                        return [SKIP, index];\n                    }\n                }\n                // Remove MDX comments\n                if ((node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') &&\n                    MDX_COMMENT_REGEX.test(node.value)) {\n                    const newValue = node.value.replace(MDX_COMMENT_REGEX, '').trim();\n                    if (newValue) {\n                        node.value = newValue;\n                    }\n                    else {\n                        parent.children.splice(index, 1);\n                        return [SKIP, index];\n                    }\n                }\n            }\n            return undefined;\n        });\n    };\n};\n\n;// ./lib/plain.ts\n\n\nconst STRIP_TAGS = ['script', 'style'];\n/** Valid JS identifier: starts with $, _, or a letter; followed by $, _, letters, digits, etc. */\nconst JS_IDENTIFIER_RE = /^[$_\\p{L}][$_\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\u200C\\u200D]*$/u;\n/** Format a variable key as MDX syntax, using bracket notation for non-identifier keys (e.g. hyphens). */\nfunction toMdxVariableSyntax(key) {\n    return JS_IDENTIFIER_RE.test(key) ? `{user.${key}}` : `{user[\"${key}\"]}`;\n}\n/**\n * Extract variable key from MDX expression AST (e.g., {user.name} → 'name')\n * Uses ESTree AST inspection, matching the approach in processor/transform/variables.ts\n *\n * @see https://github.com/syntax-tree/mdast-util-mdx-expression - MdxTextExpressionHast type\n * @see https://github.com/estree/estree/blob/master/es5.md - ESTree spec for expression types\n */\nfunction extractMdxVariableKey(node) {\n    const estree = node.data?.estree;\n    if (!estree || estree.type !== 'Program' || estree.body.length === 0)\n        return undefined;\n    const statement = estree.body[0];\n    if (statement.type !== 'ExpressionStatement')\n        return undefined;\n    const expr = statement.expression;\n    if (expr.type !== 'MemberExpression')\n        return undefined;\n    const memberExpr = expr;\n    const obj = memberExpr.object;\n    if (obj.type !== 'Identifier' || obj.name !== 'user')\n        return undefined;\n    const prop = memberExpr.property;\n    if (prop.type === 'Identifier') {\n        return prop.name;\n    }\n    if (prop.type === 'Literal') {\n        const val = prop.value;\n        return typeof val === 'string' ? val : undefined;\n    }\n    return undefined;\n}\nfunction plain_one(node, opts) {\n    if (node.type === 'comment')\n        return '';\n    if ('type' in node && node.type === 'text') {\n        // Remove all MDX comments from text nodes. We need this here because we\n        // don't control whether comments are parsed into comment vs text nodes.\n        return node.value.replace(MDX_COMMENT_REGEX, '');\n    }\n    if ('tagName' in node) {\n        if (STRIP_TAGS.includes(node.tagName))\n            return '';\n        switch (node.tagName) {\n            case 'html-block': {\n                if (!node.properties.html)\n                    return '';\n                return plain_all(fromHtml(node.properties.html.toString()), opts);\n            }\n            case 'rdme-callout': {\n                const { icon, title } = node.properties;\n                const children = node?.children?.slice(title ? 1 : 0);\n                const body = children ? plain_all({ type: 'root', children }, opts) : '';\n                return [icon, ' ', title, title && body && ': ', body].filter(Boolean).join('');\n            }\n            // 'variable' (lowercase) comes from mdxish() after rehypeRaw normalizes HTML tag names\n            case 'variable':\n            case 'Variable': {\n                const key = node.properties.name.toString();\n                if (opts.preserveVariableSyntax) {\n                    return node.properties.isLegacy ? `<<${key}>>` : toMdxVariableSyntax(key);\n                }\n                const val = 'variables' in opts && opts.variables[key];\n                return val || key;\n            }\n            case 'img': {\n                return node.properties?.title || '';\n            }\n            case 'Accordion':\n            case 'Card':\n            case 'Callout':\n            case 'Tab': {\n                const title = node.properties?.title || '';\n                const children = node?.children;\n                const body = children ? plain_all({ type: 'root', children }, opts) : '';\n                return [title, body].filter(Boolean).join(' ');\n            }\n            default:\n                break;\n        }\n    }\n    // Handle MDX expressions like {user.name}\n    if (node.type === 'mdxTextExpression') {\n        const key = extractMdxVariableKey(node);\n        if (key) {\n            if (opts.preserveVariableSyntax)\n                return toMdxVariableSyntax(key);\n            return ('variables' in opts && opts.variables[key]) || key;\n        }\n    }\n    if ('value' in node) {\n        return node.value;\n    }\n    return 'children' in node ? plain_all(node, opts) : ' ';\n}\nfunction plain_all(node, opts) {\n    let index = -1;\n    const result = [];\n    // eslint-disable-next-line no-plusplus\n    while (++index < node?.children.length) {\n        result[index] = plain_one(node.children[index], opts);\n    }\n    return result.join(' ').replaceAll(/\\s+/g, ' ').trim();\n}\nconst plain = (node, opts = {}) => {\n    return 'children' in node ? plain_all(node, opts) || plain_one(node, opts) : plain_one(node, opts);\n};\n/* harmony default export */ const lib_plain = (plain);\n\n;// ./processor/transform/extract-text.ts\n/**\n * Extracts text content from a single AST node recursively.\n * Works with both MDAST and HAST-like node structures.\n *\n * Placed this outside of the utils.ts file to avoid circular dependencies.\n *\n * @param node - The node to extract text from (can be MDAST Node or HAST-like structure)\n * @returns The concatenated text content\n */\nconst extractText = (node) => {\n    if (node.type === 'text' && typeof node.value === 'string') {\n        return node.value;\n    }\n    // When a blockquote contains only an image (no text), treat it as having content\n    // so the blockquote is no longer treated as empty and preserved correctly.\n    if (node.type === 'image') {\n        return typeof node.alt === 'string' && node.alt ? node.alt : '[image]';\n    }\n    if (node.children && Array.isArray(node.children)) {\n        return node.children\n            .map(child => {\n            if (child && typeof child === 'object' && 'type' in child) {\n                return extractText(child);\n            }\n            return '';\n        })\n            .join('');\n    }\n    return '';\n};\n\n;// ./processor/transform/callouts.ts\n\n\n\n\n\n\nconst callouts_regex = `^(${emoji_regex().source}|⚠)(\\\\s+|$)`;\nconst findFirst = (node) => {\n    if ('children' in node)\n        return findFirst(node.children[0]);\n    if (node.type === 'text')\n        return node;\n    return null;\n};\nconst wrapHeading = (node) => {\n    const firstChild = node.children[0];\n    return {\n        type: 'heading',\n        depth: 3,\n        children: ('children' in firstChild ? firstChild.children : []),\n        position: {\n            start: firstChild.position.start,\n            end: firstChild.position.end,\n        },\n    };\n};\n/**\n * Checks if a blockquote matches the expected callout structure:\n * blockquote > paragraph > text node\n */\nconst isCalloutStructure = (node) => {\n    const firstChild = node.children?.[0];\n    if (!firstChild || firstChild.type !== 'paragraph')\n        return false;\n    if (!('children' in firstChild))\n        return false;\n    const firstTextChild = firstChild.children?.[0];\n    return firstTextChild?.type === 'text';\n};\n/**\n * Finds the first text node containing a newline in a paragraph's children.\n * Returns the index and the newline position within that text node.\n */\nconst findNewlineInParagraph = (paragraph) => {\n    for (let i = 0; i < paragraph.children.length; i += 1) {\n        const child = paragraph.children[i];\n        if (child.type === 'text' && typeof child.value === 'string') {\n            const newlineIndex = child.value.indexOf('\\n');\n            if (newlineIndex !== -1) {\n                return { index: i, newlineIndex };\n            }\n        }\n    }\n    return null;\n};\n/**\n * Splits a paragraph at the first newline, separating heading content (before \\n)\n * from body content (after \\n). Mutates the paragraph to contain only heading children.\n */\nconst splitParagraphAtNewline = (paragraph) => {\n    const splitPoint = findNewlineInParagraph(paragraph);\n    if (!splitPoint)\n        return null;\n    const { index, newlineIndex } = splitPoint;\n    const originalChildren = paragraph.children;\n    const textNode = originalChildren[index];\n    const beforeNewline = textNode.value.slice(0, newlineIndex);\n    const afterNewline = textNode.value.slice(newlineIndex + 1);\n    // Split paragraph: heading = children[0..index-1] + text before newline\n    const headingChildren = originalChildren.slice(0, index);\n    if (beforeNewline.length > 0 || headingChildren.length === 0) {\n        headingChildren.push({ type: 'text', value: beforeNewline });\n    }\n    paragraph.children = headingChildren;\n    // Body = text after newline + remaining children from original array\n    const bodyChildren = [];\n    if (afterNewline.length > 0) {\n        bodyChildren.push({ type: 'text', value: afterNewline });\n    }\n    bodyChildren.push(...originalChildren.slice(index + 1));\n    return bodyChildren.length > 0 ? bodyChildren : null;\n};\n/**\n * Removes the icon/match prefix from the first text node in a paragraph.\n * This is needed to clean up the raw AST after we've extracted the icon.\n */\nconst removeIconPrefix = (paragraph, prefixLength) => {\n    const firstTextNode = findFirst(paragraph);\n    if (firstTextNode && 'value' in firstTextNode && typeof firstTextNode.value === 'string') {\n        firstTextNode.value = firstTextNode.value.slice(prefixLength);\n    }\n};\nconst processBlockquote = (node, index, parent) => {\n    if (!isCalloutStructure(node)) {\n        // Only stringify empty blockquotes (no extractable text content)\n        // Preserve blockquotes with actual content (e.g., headings, lists, etc.)\n        const content = extractText(node);\n        const isEmpty = !content || content.trim() === '';\n        if (isEmpty && index !== undefined && parent) {\n            const textNode = {\n                type: 'text',\n                value: '>',\n            };\n            const paragraphNode = {\n                type: 'paragraph',\n                children: [textNode],\n                position: node.position,\n            };\n            parent.children.splice(index, 1, paragraphNode);\n        }\n        return;\n    }\n    // isCalloutStructure ensures node.children[0] is a Paragraph with children\n    const firstParagraph = node.children[0];\n    const startText = lib_plain(firstParagraph).toString();\n    const [match, icon] = startText.match(callouts_regex) || [];\n    const firstParagraphOriginalEnd = firstParagraph.position.end;\n    if (icon && match) {\n        // Handle cases where heading and body are on the same line separated by a newline.\n        // Example: \"> ⚠️ **Bold heading**\\nBody text here\"\n        const bodyChildren = splitParagraphAtNewline(firstParagraph);\n        const didSplit = bodyChildren !== null;\n        // Extract heading text after removing the icon prefix.\n        // Use `plain()` to handle complex markdown structures (bold, inline code, etc.)\n        const headingText = lib_plain(firstParagraph)\n            .toString()\n            .slice(match.length);\n        // Clean up the raw AST by removing the icon prefix from the first text node\n        removeIconPrefix(firstParagraph, match.length);\n        const empty = !headingText.length && firstParagraph.children.length === 1;\n        const theme = themes[icon] || 'default';\n        // Convert the first paragraph (first children of node) to a heading if it has content or was split\n        if (headingText || didSplit) {\n            node.children[0] = wrapHeading(node);\n            // Adjust position to account for the stripped icon prefix\n            node.children[0].position.start.offset += match.length;\n            node.children[0].position.start.column += match.length;\n        }\n        // Insert body content as a separate paragraph after the heading\n        if (bodyChildren) {\n            node.children.splice(1, 0, {\n                type: 'paragraph',\n                children: bodyChildren,\n                position: {\n                    start: node.children[0].position.end,\n                    end: firstParagraphOriginalEnd,\n                },\n            });\n        }\n        Object.assign(node, {\n            type: NodeTypes.callout,\n            data: {\n                hName: 'Callout',\n                hProperties: {\n                    icon,\n                    ...(empty && { empty }),\n                    theme,\n                },\n            },\n        });\n    }\n};\nconst calloutTransformer = () => {\n    return (tree) => {\n        visit(tree, 'blockquote', (node, index, parent) => {\n            processBlockquote(node, index, parent);\n        });\n    };\n};\n/* harmony default export */ const callouts = (calloutTransformer);\n\n;// ./processor/transform/code-tabs.ts\n\n\nconst isCode = (node) => node?.type === 'code';\nconst codeTabsTransformer = ({ copyButtons } = {}) => (tree) => {\n    visit(tree, 'code', (node) => {\n        const { lang, meta, value } = node;\n        node.data = {\n            hProperties: { lang, meta, value, copyButtons },\n        };\n    });\n    visit(tree, 'code', (node, index, parent) => {\n        if (parent.type === 'code-tabs' || !('children' in parent))\n            return;\n        const length = parent.children.length;\n        const children = [node];\n        let walker = index + 1;\n        while (walker <= length) {\n            const sibling = parent.children[walker];\n            if (!isCode(sibling))\n                break;\n            const olderSibling = parent.children[walker - 1];\n            if (olderSibling.position.end.offset + sibling.position.start.column !== sibling.position.start.offset)\n                break;\n            children.push(sibling);\n            // eslint-disable-next-line no-plusplus\n            walker++;\n        }\n        // If there is a single code block, and it has either a title or a\n        // language set, let's display it by wrapping it in a code tabs block.\n        // Othewise, we can leave early!\n        if (children.length === 1 && !(node.lang || node.meta))\n            return;\n        const codeTabs = {\n            type: NodeTypes.codeTabs,\n            children,\n            data: {\n                hName: 'CodeTabs',\n            },\n            position: {\n                start: children[0].position.start,\n                end: children[children.length - 1].position.end,\n            },\n        };\n        parent.children.splice(index, children.length, codeTabs);\n    });\n    return tree;\n};\n/* harmony default export */ const code_tabs = (codeTabsTransformer);\n\n;// ./processor/transform/compatability.ts\n\n\nconst strongTest = (node) => ['emphasis', 'strong'].includes(node.type);\nconst compatibilityTransfomer = () => tree => {\n    const trimEmphasis = (node) => {\n        visit(node, 'text', child => {\n            child.value = child.value.trim();\n            return EXIT;\n        });\n        return node;\n    };\n    visit(tree, strongTest, node => {\n        trimEmphasis(node);\n        return SKIP;\n    });\n    visit(tree, 'image', (node, index, parent) => {\n        if (phrasing(parent) || !parent.children.every(child => child.type === 'image' || !phrasing(child)))\n            return;\n        parent.children.splice(index, 1, { type: 'paragraph', children: [node] });\n    });\n    return tree;\n};\n/* harmony default export */ const compatability = (compatibilityTransfomer);\n\n;// ./processor/transform/div.ts\n\n\n// This transformer has been necessary for migrating legacy markdown files\n// where tutorial tiles were wrapped in a div. It also provides a fallback for legacy magic blocks that were never fully supported:\n//     [block:custom-block]\n//     { ... }\n//     [/block]\n// This transformer runs before the readme-to-mdx transformer which reshapes the tutorial tile node\n// to the Recipe component\nconst divTransformer = () => tree => {\n    visit(tree, 'div', (node, index, parent) => {\n        const type = node.data?.hName;\n        switch (type) {\n            // Check if the div is a tutorial-tile in disguise\n            case NodeTypes.tutorialTile:\n                {\n                    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                    const { hName, hProperties, ...rest } = node.data;\n                    const tile = {\n                        ...rest,\n                        type: NodeTypes.recipe,\n                    };\n                    parent.children.splice(index, 1, tile);\n                }\n                break;\n            // idk what this is and/or just make it a paragraph\n            default:\n                node.type = type || 'paragraph';\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const div = (divTransformer);\n\n;// ./processor/transform/embeds.ts\n\n\nconst isEmbed = (node) => 'title' in node && node.title === '@embed';\nconst embedTransformer = () => {\n    return (tree) => {\n        visit(tree, 'paragraph', (node, i, parent) => {\n            const [child] = node.children;\n            if (!isEmbed(child))\n                return;\n            const { url, title } = child;\n            const label = child.children[0].value;\n            const newNode = {\n                type: NodeTypes.embedBlock,\n                label,\n                title,\n                url,\n                data: {\n                    hProperties: {\n                        url,\n                        title: label ?? title,\n                    },\n                    hName: 'embed',\n                },\n                position: node.position,\n            };\n            parent.children.splice(i, 1, newNode);\n        });\n    };\n};\n/* harmony default export */ const transform_embeds = (embedTransformer);\n\n;// ./node_modules/gemoji/index.js\n/**\n * @typedef Gemoji\n * @property {string} emoji\n *   Example: `'😀'`.\n * @property {Array<string>} names\n *   Example: `['grinning']`.\n * @property {Array<string>} tags\n *   Example: `['smile', 'happy']`.\n * @property {string} description\n *   Example: `'grinning face'`.\n * @property {string} category\n *   Example: `'Smileys & Emotion'`.\n */\n\n/**\n * List of gemoji.\n *\n * @type {Array<Gemoji>}\n */\nconst gemoji = [\n  {\n    emoji: '😀',\n    names: ['grinning'],\n    tags: ['smile', 'happy'],\n    description: 'grinning face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😃',\n    names: ['smiley'],\n    tags: ['happy', 'joy', 'haha'],\n    description: 'grinning face with big eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😄',\n    names: ['smile'],\n    tags: ['happy', 'joy', 'laugh', 'pleased'],\n    description: 'grinning face with smiling eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😁',\n    names: ['grin'],\n    tags: [],\n    description: 'beaming face with smiling eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😆',\n    names: ['laughing', 'satisfied'],\n    tags: ['happy', 'haha'],\n    description: 'grinning squinting face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😅',\n    names: ['sweat_smile'],\n    tags: ['hot'],\n    description: 'grinning face with sweat',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤣',\n    names: ['rofl'],\n    tags: ['lol', 'laughing'],\n    description: 'rolling on the floor laughing',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😂',\n    names: ['joy'],\n    tags: ['tears'],\n    description: 'face with tears of joy',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🙂',\n    names: ['slightly_smiling_face'],\n    tags: [],\n    description: 'slightly smiling face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🙃',\n    names: ['upside_down_face'],\n    tags: [],\n    description: 'upside-down face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🫠',\n    names: ['melting_face'],\n    tags: ['sarcasm', 'dread'],\n    description: 'melting face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😉',\n    names: ['wink'],\n    tags: ['flirt'],\n    description: 'winking face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😊',\n    names: ['blush'],\n    tags: ['proud'],\n    description: 'smiling face with smiling eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😇',\n    names: ['innocent'],\n    tags: ['angel'],\n    description: 'smiling face with halo',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥰',\n    names: ['smiling_face_with_three_hearts'],\n    tags: ['love'],\n    description: 'smiling face with hearts',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😍',\n    names: ['heart_eyes'],\n    tags: ['love', 'crush'],\n    description: 'smiling face with heart-eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤩',\n    names: ['star_struck'],\n    tags: ['eyes'],\n    description: 'star-struck',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😘',\n    names: ['kissing_heart'],\n    tags: ['flirt'],\n    description: 'face blowing a kiss',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😗',\n    names: ['kissing'],\n    tags: [],\n    description: 'kissing face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '☺️',\n    names: ['relaxed'],\n    tags: ['blush', 'pleased'],\n    description: 'smiling face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😚',\n    names: ['kissing_closed_eyes'],\n    tags: [],\n    description: 'kissing face with closed eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😙',\n    names: ['kissing_smiling_eyes'],\n    tags: [],\n    description: 'kissing face with smiling eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥲',\n    names: ['smiling_face_with_tear'],\n    tags: [],\n    description: 'smiling face with tear',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😋',\n    names: ['yum'],\n    tags: ['tongue', 'lick'],\n    description: 'face savoring food',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😛',\n    names: ['stuck_out_tongue'],\n    tags: [],\n    description: 'face with tongue',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😜',\n    names: ['stuck_out_tongue_winking_eye'],\n    tags: ['prank', 'silly'],\n    description: 'winking face with tongue',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤪',\n    names: ['zany_face'],\n    tags: ['goofy', 'wacky'],\n    description: 'zany face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😝',\n    names: ['stuck_out_tongue_closed_eyes'],\n    tags: ['prank'],\n    description: 'squinting face with tongue',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤑',\n    names: ['money_mouth_face'],\n    tags: ['rich'],\n    description: 'money-mouth face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤗',\n    names: ['hugs'],\n    tags: [],\n    description: 'smiling face with open hands',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤭',\n    names: ['hand_over_mouth'],\n    tags: ['quiet', 'whoops'],\n    description: 'face with hand over mouth',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🫢',\n    names: ['face_with_open_eyes_and_hand_over_mouth'],\n    tags: ['gasp', 'shock'],\n    description: 'face with open eyes and hand over mouth',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🫣',\n    names: ['face_with_peeking_eye'],\n    tags: [],\n    description: 'face with peeking eye',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤫',\n    names: ['shushing_face'],\n    tags: ['silence', 'quiet'],\n    description: 'shushing face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤔',\n    names: ['thinking'],\n    tags: [],\n    description: 'thinking face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🫡',\n    names: ['saluting_face'],\n    tags: ['respect'],\n    description: 'saluting face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤐',\n    names: ['zipper_mouth_face'],\n    tags: ['silence', 'hush'],\n    description: 'zipper-mouth face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤨',\n    names: ['raised_eyebrow'],\n    tags: ['suspicious'],\n    description: 'face with raised eyebrow',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😐',\n    names: ['neutral_face'],\n    tags: ['meh'],\n    description: 'neutral face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😑',\n    names: ['expressionless'],\n    tags: [],\n    description: 'expressionless face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😶',\n    names: ['no_mouth'],\n    tags: ['mute', 'silence'],\n    description: 'face without mouth',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🫥',\n    names: ['dotted_line_face'],\n    tags: ['invisible'],\n    description: 'dotted line face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😶‍🌫️',\n    names: ['face_in_clouds'],\n    tags: [],\n    description: 'face in clouds',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😏',\n    names: ['smirk'],\n    tags: ['smug'],\n    description: 'smirking face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😒',\n    names: ['unamused'],\n    tags: ['meh'],\n    description: 'unamused face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🙄',\n    names: ['roll_eyes'],\n    tags: [],\n    description: 'face with rolling eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😬',\n    names: ['grimacing'],\n    tags: [],\n    description: 'grimacing face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😮‍💨',\n    names: ['face_exhaling'],\n    tags: [],\n    description: 'face exhaling',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤥',\n    names: ['lying_face'],\n    tags: ['liar'],\n    description: 'lying face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🫨',\n    names: ['shaking_face'],\n    tags: ['shock'],\n    description: 'shaking face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😌',\n    names: ['relieved'],\n    tags: ['whew'],\n    description: 'relieved face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😔',\n    names: ['pensive'],\n    tags: [],\n    description: 'pensive face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😪',\n    names: ['sleepy'],\n    tags: ['tired'],\n    description: 'sleepy face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤤',\n    names: ['drooling_face'],\n    tags: [],\n    description: 'drooling face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😴',\n    names: ['sleeping'],\n    tags: ['zzz'],\n    description: 'sleeping face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😷',\n    names: ['mask'],\n    tags: ['sick', 'ill'],\n    description: 'face with medical mask',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤒',\n    names: ['face_with_thermometer'],\n    tags: ['sick'],\n    description: 'face with thermometer',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤕',\n    names: ['face_with_head_bandage'],\n    tags: ['hurt'],\n    description: 'face with head-bandage',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤢',\n    names: ['nauseated_face'],\n    tags: ['sick', 'barf', 'disgusted'],\n    description: 'nauseated face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤮',\n    names: ['vomiting_face'],\n    tags: ['barf', 'sick'],\n    description: 'face vomiting',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤧',\n    names: ['sneezing_face'],\n    tags: ['achoo', 'sick'],\n    description: 'sneezing face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥵',\n    names: ['hot_face'],\n    tags: ['heat', 'sweating'],\n    description: 'hot face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥶',\n    names: ['cold_face'],\n    tags: ['freezing', 'ice'],\n    description: 'cold face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥴',\n    names: ['woozy_face'],\n    tags: ['groggy'],\n    description: 'woozy face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😵',\n    names: ['dizzy_face'],\n    tags: [],\n    description: 'face with crossed-out eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😵‍💫',\n    names: ['face_with_spiral_eyes'],\n    tags: [],\n    description: 'face with spiral eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤯',\n    names: ['exploding_head'],\n    tags: ['mind', 'blown'],\n    description: 'exploding head',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤠',\n    names: ['cowboy_hat_face'],\n    tags: [],\n    description: 'cowboy hat face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥳',\n    names: ['partying_face'],\n    tags: ['celebration', 'birthday'],\n    description: 'partying face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥸',\n    names: ['disguised_face'],\n    tags: [],\n    description: 'disguised face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😎',\n    names: ['sunglasses'],\n    tags: ['cool'],\n    description: 'smiling face with sunglasses',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤓',\n    names: ['nerd_face'],\n    tags: ['geek', 'glasses'],\n    description: 'nerd face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🧐',\n    names: ['monocle_face'],\n    tags: [],\n    description: 'face with monocle',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😕',\n    names: ['confused'],\n    tags: [],\n    description: 'confused face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🫤',\n    names: ['face_with_diagonal_mouth'],\n    tags: ['confused'],\n    description: 'face with diagonal mouth',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😟',\n    names: ['worried'],\n    tags: ['nervous'],\n    description: 'worried face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🙁',\n    names: ['slightly_frowning_face'],\n    tags: [],\n    description: 'slightly frowning face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '☹️',\n    names: ['frowning_face'],\n    tags: [],\n    description: 'frowning face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😮',\n    names: ['open_mouth'],\n    tags: ['surprise', 'impressed', 'wow'],\n    description: 'face with open mouth',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😯',\n    names: ['hushed'],\n    tags: ['silence', 'speechless'],\n    description: 'hushed face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😲',\n    names: ['astonished'],\n    tags: ['amazed', 'gasp'],\n    description: 'astonished face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😳',\n    names: ['flushed'],\n    tags: [],\n    description: 'flushed face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥺',\n    names: ['pleading_face'],\n    tags: ['puppy', 'eyes'],\n    description: 'pleading face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥹',\n    names: ['face_holding_back_tears'],\n    tags: ['tears', 'gratitude'],\n    description: 'face holding back tears',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😦',\n    names: ['frowning'],\n    tags: [],\n    description: 'frowning face with open mouth',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😧',\n    names: ['anguished'],\n    tags: ['stunned'],\n    description: 'anguished face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😨',\n    names: ['fearful'],\n    tags: ['scared', 'shocked', 'oops'],\n    description: 'fearful face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😰',\n    names: ['cold_sweat'],\n    tags: ['nervous'],\n    description: 'anxious face with sweat',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😥',\n    names: ['disappointed_relieved'],\n    tags: ['phew', 'sweat', 'nervous'],\n    description: 'sad but relieved face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😢',\n    names: ['cry'],\n    tags: ['sad', 'tear'],\n    description: 'crying face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😭',\n    names: ['sob'],\n    tags: ['sad', 'cry', 'bawling'],\n    description: 'loudly crying face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😱',\n    names: ['scream'],\n    tags: ['horror', 'shocked'],\n    description: 'face screaming in fear',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😖',\n    names: ['confounded'],\n    tags: [],\n    description: 'confounded face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😣',\n    names: ['persevere'],\n    tags: ['struggling'],\n    description: 'persevering face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😞',\n    names: ['disappointed'],\n    tags: ['sad'],\n    description: 'disappointed face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😓',\n    names: ['sweat'],\n    tags: [],\n    description: 'downcast face with sweat',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😩',\n    names: ['weary'],\n    tags: ['tired'],\n    description: 'weary face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😫',\n    names: ['tired_face'],\n    tags: ['upset', 'whine'],\n    description: 'tired face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🥱',\n    names: ['yawning_face'],\n    tags: [],\n    description: 'yawning face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😤',\n    names: ['triumph'],\n    tags: ['smug'],\n    description: 'face with steam from nose',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😡',\n    names: ['rage', 'pout'],\n    tags: ['angry'],\n    description: 'enraged face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😠',\n    names: ['angry'],\n    tags: ['mad', 'annoyed'],\n    description: 'angry face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤬',\n    names: ['cursing_face'],\n    tags: ['foul'],\n    description: 'face with symbols on mouth',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😈',\n    names: ['smiling_imp'],\n    tags: ['devil', 'evil', 'horns'],\n    description: 'smiling face with horns',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '👿',\n    names: ['imp'],\n    tags: ['angry', 'devil', 'evil', 'horns'],\n    description: 'angry face with horns',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💀',\n    names: ['skull'],\n    tags: ['dead', 'danger', 'poison'],\n    description: 'skull',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '☠️',\n    names: ['skull_and_crossbones'],\n    tags: ['danger', 'pirate'],\n    description: 'skull and crossbones',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💩',\n    names: ['hankey', 'poop', 'shit'],\n    tags: ['crap'],\n    description: 'pile of poo',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤡',\n    names: ['clown_face'],\n    tags: [],\n    description: 'clown face',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '👹',\n    names: ['japanese_ogre'],\n    tags: ['monster'],\n    description: 'ogre',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '👺',\n    names: ['japanese_goblin'],\n    tags: [],\n    description: 'goblin',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '👻',\n    names: ['ghost'],\n    tags: ['halloween'],\n    description: 'ghost',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '👽',\n    names: ['alien'],\n    tags: ['ufo'],\n    description: 'alien',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '👾',\n    names: ['space_invader'],\n    tags: ['game', 'retro'],\n    description: 'alien monster',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤖',\n    names: ['robot'],\n    tags: [],\n    description: 'robot',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😺',\n    names: ['smiley_cat'],\n    tags: [],\n    description: 'grinning cat',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😸',\n    names: ['smile_cat'],\n    tags: [],\n    description: 'grinning cat with smiling eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😹',\n    names: ['joy_cat'],\n    tags: [],\n    description: 'cat with tears of joy',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😻',\n    names: ['heart_eyes_cat'],\n    tags: [],\n    description: 'smiling cat with heart-eyes',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😼',\n    names: ['smirk_cat'],\n    tags: [],\n    description: 'cat with wry smile',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😽',\n    names: ['kissing_cat'],\n    tags: [],\n    description: 'kissing cat',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🙀',\n    names: ['scream_cat'],\n    tags: ['horror'],\n    description: 'weary cat',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😿',\n    names: ['crying_cat_face'],\n    tags: ['sad', 'tear'],\n    description: 'crying cat',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '😾',\n    names: ['pouting_cat'],\n    tags: [],\n    description: 'pouting cat',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🙈',\n    names: ['see_no_evil'],\n    tags: ['monkey', 'blind', 'ignore'],\n    description: 'see-no-evil monkey',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🙉',\n    names: ['hear_no_evil'],\n    tags: ['monkey', 'deaf'],\n    description: 'hear-no-evil monkey',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🙊',\n    names: ['speak_no_evil'],\n    tags: ['monkey', 'mute', 'hush'],\n    description: 'speak-no-evil monkey',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💌',\n    names: ['love_letter'],\n    tags: ['email', 'envelope'],\n    description: 'love letter',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💘',\n    names: ['cupid'],\n    tags: ['love', 'heart'],\n    description: 'heart with arrow',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💝',\n    names: ['gift_heart'],\n    tags: ['chocolates'],\n    description: 'heart with ribbon',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💖',\n    names: ['sparkling_heart'],\n    tags: [],\n    description: 'sparkling heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💗',\n    names: ['heartpulse'],\n    tags: [],\n    description: 'growing heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💓',\n    names: ['heartbeat'],\n    tags: [],\n    description: 'beating heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💞',\n    names: ['revolving_hearts'],\n    tags: [],\n    description: 'revolving hearts',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💕',\n    names: ['two_hearts'],\n    tags: [],\n    description: 'two hearts',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💟',\n    names: ['heart_decoration'],\n    tags: [],\n    description: 'heart decoration',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '❣️',\n    names: ['heavy_heart_exclamation'],\n    tags: [],\n    description: 'heart exclamation',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💔',\n    names: ['broken_heart'],\n    tags: [],\n    description: 'broken heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '❤️‍🔥',\n    names: ['heart_on_fire'],\n    tags: [],\n    description: 'heart on fire',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '❤️‍🩹',\n    names: ['mending_heart'],\n    tags: [],\n    description: 'mending heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '❤️',\n    names: ['heart'],\n    tags: ['love'],\n    description: 'red heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🩷',\n    names: ['pink_heart'],\n    tags: [],\n    description: 'pink heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🧡',\n    names: ['orange_heart'],\n    tags: [],\n    description: 'orange heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💛',\n    names: ['yellow_heart'],\n    tags: [],\n    description: 'yellow heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💚',\n    names: ['green_heart'],\n    tags: [],\n    description: 'green heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💙',\n    names: ['blue_heart'],\n    tags: [],\n    description: 'blue heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🩵',\n    names: ['light_blue_heart'],\n    tags: [],\n    description: 'light blue heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💜',\n    names: ['purple_heart'],\n    tags: [],\n    description: 'purple heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤎',\n    names: ['brown_heart'],\n    tags: [],\n    description: 'brown heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🖤',\n    names: ['black_heart'],\n    tags: [],\n    description: 'black heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🩶',\n    names: ['grey_heart'],\n    tags: [],\n    description: 'grey heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🤍',\n    names: ['white_heart'],\n    tags: [],\n    description: 'white heart',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💋',\n    names: ['kiss'],\n    tags: ['lipstick'],\n    description: 'kiss mark',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💯',\n    names: ['100'],\n    tags: ['score', 'perfect'],\n    description: 'hundred points',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💢',\n    names: ['anger'],\n    tags: ['angry'],\n    description: 'anger symbol',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💥',\n    names: ['boom', 'collision'],\n    tags: ['explode'],\n    description: 'collision',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💫',\n    names: ['dizzy'],\n    tags: ['star'],\n    description: 'dizzy',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💦',\n    names: ['sweat_drops'],\n    tags: ['water', 'workout'],\n    description: 'sweat droplets',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💨',\n    names: ['dash'],\n    tags: ['wind', 'blow', 'fast'],\n    description: 'dashing away',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🕳️',\n    names: ['hole'],\n    tags: [],\n    description: 'hole',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💬',\n    names: ['speech_balloon'],\n    tags: ['comment'],\n    description: 'speech balloon',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '👁️‍🗨️',\n    names: ['eye_speech_bubble'],\n    tags: [],\n    description: 'eye in speech bubble',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🗨️',\n    names: ['left_speech_bubble'],\n    tags: [],\n    description: 'left speech bubble',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '🗯️',\n    names: ['right_anger_bubble'],\n    tags: [],\n    description: 'right anger bubble',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💭',\n    names: ['thought_balloon'],\n    tags: ['thinking'],\n    description: 'thought balloon',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '💤',\n    names: ['zzz'],\n    tags: ['sleeping'],\n    description: 'ZZZ',\n    category: 'Smileys & Emotion'\n  },\n  {\n    emoji: '👋',\n    names: ['wave'],\n    tags: ['goodbye'],\n    description: 'waving hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤚',\n    names: ['raised_back_of_hand'],\n    tags: [],\n    description: 'raised back of hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🖐️',\n    names: ['raised_hand_with_fingers_splayed'],\n    tags: [],\n    description: 'hand with fingers splayed',\n    category: 'People & Body'\n  },\n  {\n    emoji: '✋',\n    names: ['hand', 'raised_hand'],\n    tags: ['highfive', 'stop'],\n    description: 'raised hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🖖',\n    names: ['vulcan_salute'],\n    tags: ['prosper', 'spock'],\n    description: 'vulcan salute',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫱',\n    names: ['rightwards_hand'],\n    tags: [],\n    description: 'rightwards hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫲',\n    names: ['leftwards_hand'],\n    tags: [],\n    description: 'leftwards hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫳',\n    names: ['palm_down_hand'],\n    tags: [],\n    description: 'palm down hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫴',\n    names: ['palm_up_hand'],\n    tags: [],\n    description: 'palm up hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫷',\n    names: ['leftwards_pushing_hand'],\n    tags: [],\n    description: 'leftwards pushing hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫸',\n    names: ['rightwards_pushing_hand'],\n    tags: [],\n    description: 'rightwards pushing hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👌',\n    names: ['ok_hand'],\n    tags: [],\n    description: 'OK hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤌',\n    names: ['pinched_fingers'],\n    tags: [],\n    description: 'pinched fingers',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤏',\n    names: ['pinching_hand'],\n    tags: [],\n    description: 'pinching hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '✌️',\n    names: ['v'],\n    tags: ['victory', 'peace'],\n    description: 'victory hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤞',\n    names: ['crossed_fingers'],\n    tags: ['luck', 'hopeful'],\n    description: 'crossed fingers',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫰',\n    names: ['hand_with_index_finger_and_thumb_crossed'],\n    tags: [],\n    description: 'hand with index finger and thumb crossed',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤟',\n    names: ['love_you_gesture'],\n    tags: [],\n    description: 'love-you gesture',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤘',\n    names: ['metal'],\n    tags: [],\n    description: 'sign of the horns',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤙',\n    names: ['call_me_hand'],\n    tags: [],\n    description: 'call me hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👈',\n    names: ['point_left'],\n    tags: [],\n    description: 'backhand index pointing left',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👉',\n    names: ['point_right'],\n    tags: [],\n    description: 'backhand index pointing right',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👆',\n    names: ['point_up_2'],\n    tags: [],\n    description: 'backhand index pointing up',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🖕',\n    names: ['middle_finger', 'fu'],\n    tags: [],\n    description: 'middle finger',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👇',\n    names: ['point_down'],\n    tags: [],\n    description: 'backhand index pointing down',\n    category: 'People & Body'\n  },\n  {\n    emoji: '☝️',\n    names: ['point_up'],\n    tags: [],\n    description: 'index pointing up',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫵',\n    names: ['index_pointing_at_the_viewer'],\n    tags: [],\n    description: 'index pointing at the viewer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👍',\n    names: ['+1', 'thumbsup'],\n    tags: ['approve', 'ok'],\n    description: 'thumbs up',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👎',\n    names: ['-1', 'thumbsdown'],\n    tags: ['disapprove', 'bury'],\n    description: 'thumbs down',\n    category: 'People & Body'\n  },\n  {\n    emoji: '✊',\n    names: ['fist_raised', 'fist'],\n    tags: ['power'],\n    description: 'raised fist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👊',\n    names: ['fist_oncoming', 'facepunch', 'punch'],\n    tags: ['attack'],\n    description: 'oncoming fist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤛',\n    names: ['fist_left'],\n    tags: [],\n    description: 'left-facing fist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤜',\n    names: ['fist_right'],\n    tags: [],\n    description: 'right-facing fist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👏',\n    names: ['clap'],\n    tags: ['praise', 'applause'],\n    description: 'clapping hands',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙌',\n    names: ['raised_hands'],\n    tags: ['hooray'],\n    description: 'raising hands',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫶',\n    names: ['heart_hands'],\n    tags: ['love'],\n    description: 'heart hands',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👐',\n    names: ['open_hands'],\n    tags: [],\n    description: 'open hands',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤲',\n    names: ['palms_up_together'],\n    tags: [],\n    description: 'palms up together',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤝',\n    names: ['handshake'],\n    tags: ['deal'],\n    description: 'handshake',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙏',\n    names: ['pray'],\n    tags: ['please', 'hope', 'wish'],\n    description: 'folded hands',\n    category: 'People & Body'\n  },\n  {\n    emoji: '✍️',\n    names: ['writing_hand'],\n    tags: [],\n    description: 'writing hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💅',\n    names: ['nail_care'],\n    tags: ['beauty', 'manicure'],\n    description: 'nail polish',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤳',\n    names: ['selfie'],\n    tags: [],\n    description: 'selfie',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💪',\n    names: ['muscle'],\n    tags: ['flex', 'bicep', 'strong', 'workout'],\n    description: 'flexed biceps',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦾',\n    names: ['mechanical_arm'],\n    tags: [],\n    description: 'mechanical arm',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦿',\n    names: ['mechanical_leg'],\n    tags: [],\n    description: 'mechanical leg',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦵',\n    names: ['leg'],\n    tags: [],\n    description: 'leg',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦶',\n    names: ['foot'],\n    tags: [],\n    description: 'foot',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👂',\n    names: ['ear'],\n    tags: ['hear', 'sound', 'listen'],\n    description: 'ear',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦻',\n    names: ['ear_with_hearing_aid'],\n    tags: [],\n    description: 'ear with hearing aid',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👃',\n    names: ['nose'],\n    tags: ['smell'],\n    description: 'nose',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧠',\n    names: ['brain'],\n    tags: [],\n    description: 'brain',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫀',\n    names: ['anatomical_heart'],\n    tags: [],\n    description: 'anatomical heart',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫁',\n    names: ['lungs'],\n    tags: [],\n    description: 'lungs',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦷',\n    names: ['tooth'],\n    tags: [],\n    description: 'tooth',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦴',\n    names: ['bone'],\n    tags: [],\n    description: 'bone',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👀',\n    names: ['eyes'],\n    tags: ['look', 'see', 'watch'],\n    description: 'eyes',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👁️',\n    names: ['eye'],\n    tags: [],\n    description: 'eye',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👅',\n    names: ['tongue'],\n    tags: ['taste'],\n    description: 'tongue',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👄',\n    names: ['lips'],\n    tags: ['kiss'],\n    description: 'mouth',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫦',\n    names: ['biting_lip'],\n    tags: [],\n    description: 'biting lip',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👶',\n    names: ['baby'],\n    tags: ['child', 'newborn'],\n    description: 'baby',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧒',\n    names: ['child'],\n    tags: [],\n    description: 'child',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👦',\n    names: ['boy'],\n    tags: ['child'],\n    description: 'boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👧',\n    names: ['girl'],\n    tags: ['child'],\n    description: 'girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑',\n    names: ['adult'],\n    tags: [],\n    description: 'person',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👱',\n    names: ['blond_haired_person'],\n    tags: [],\n    description: 'person: blond hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨',\n    names: ['man'],\n    tags: ['mustache', 'father', 'dad'],\n    description: 'man',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧔',\n    names: ['bearded_person'],\n    tags: [],\n    description: 'person: beard',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧔‍♂️',\n    names: ['man_beard'],\n    tags: [],\n    description: 'man: beard',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧔‍♀️',\n    names: ['woman_beard'],\n    tags: [],\n    description: 'woman: beard',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🦰',\n    names: ['red_haired_man'],\n    tags: [],\n    description: 'man: red hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🦱',\n    names: ['curly_haired_man'],\n    tags: [],\n    description: 'man: curly hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🦳',\n    names: ['white_haired_man'],\n    tags: [],\n    description: 'man: white hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🦲',\n    names: ['bald_man'],\n    tags: [],\n    description: 'man: bald',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩',\n    names: ['woman'],\n    tags: ['girls'],\n    description: 'woman',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🦰',\n    names: ['red_haired_woman'],\n    tags: [],\n    description: 'woman: red hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🦰',\n    names: ['person_red_hair'],\n    tags: [],\n    description: 'person: red hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🦱',\n    names: ['curly_haired_woman'],\n    tags: [],\n    description: 'woman: curly hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🦱',\n    names: ['person_curly_hair'],\n    tags: [],\n    description: 'person: curly hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🦳',\n    names: ['white_haired_woman'],\n    tags: [],\n    description: 'woman: white hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🦳',\n    names: ['person_white_hair'],\n    tags: [],\n    description: 'person: white hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🦲',\n    names: ['bald_woman'],\n    tags: [],\n    description: 'woman: bald',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🦲',\n    names: ['person_bald'],\n    tags: [],\n    description: 'person: bald',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👱‍♀️',\n    names: ['blond_haired_woman', 'blonde_woman'],\n    tags: [],\n    description: 'woman: blond hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👱‍♂️',\n    names: ['blond_haired_man'],\n    tags: [],\n    description: 'man: blond hair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧓',\n    names: ['older_adult'],\n    tags: [],\n    description: 'older person',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👴',\n    names: ['older_man'],\n    tags: [],\n    description: 'old man',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👵',\n    names: ['older_woman'],\n    tags: [],\n    description: 'old woman',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙍',\n    names: ['frowning_person'],\n    tags: [],\n    description: 'person frowning',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙍‍♂️',\n    names: ['frowning_man'],\n    tags: [],\n    description: 'man frowning',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙍‍♀️',\n    names: ['frowning_woman'],\n    tags: [],\n    description: 'woman frowning',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙎',\n    names: ['pouting_face'],\n    tags: [],\n    description: 'person pouting',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙎‍♂️',\n    names: ['pouting_man'],\n    tags: [],\n    description: 'man pouting',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙎‍♀️',\n    names: ['pouting_woman'],\n    tags: [],\n    description: 'woman pouting',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙅',\n    names: ['no_good'],\n    tags: ['stop', 'halt', 'denied'],\n    description: 'person gesturing NO',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙅‍♂️',\n    names: ['no_good_man', 'ng_man'],\n    tags: ['stop', 'halt', 'denied'],\n    description: 'man gesturing NO',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙅‍♀️',\n    names: ['no_good_woman', 'ng_woman'],\n    tags: ['stop', 'halt', 'denied'],\n    description: 'woman gesturing NO',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙆',\n    names: ['ok_person'],\n    tags: [],\n    description: 'person gesturing OK',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙆‍♂️',\n    names: ['ok_man'],\n    tags: [],\n    description: 'man gesturing OK',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙆‍♀️',\n    names: ['ok_woman'],\n    tags: [],\n    description: 'woman gesturing OK',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💁',\n    names: ['tipping_hand_person', 'information_desk_person'],\n    tags: [],\n    description: 'person tipping hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💁‍♂️',\n    names: ['tipping_hand_man', 'sassy_man'],\n    tags: ['information'],\n    description: 'man tipping hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💁‍♀️',\n    names: ['tipping_hand_woman', 'sassy_woman'],\n    tags: ['information'],\n    description: 'woman tipping hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙋',\n    names: ['raising_hand'],\n    tags: [],\n    description: 'person raising hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙋‍♂️',\n    names: ['raising_hand_man'],\n    tags: [],\n    description: 'man raising hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙋‍♀️',\n    names: ['raising_hand_woman'],\n    tags: [],\n    description: 'woman raising hand',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧏',\n    names: ['deaf_person'],\n    tags: [],\n    description: 'deaf person',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧏‍♂️',\n    names: ['deaf_man'],\n    tags: [],\n    description: 'deaf man',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧏‍♀️',\n    names: ['deaf_woman'],\n    tags: [],\n    description: 'deaf woman',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙇',\n    names: ['bow'],\n    tags: ['respect', 'thanks'],\n    description: 'person bowing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙇‍♂️',\n    names: ['bowing_man'],\n    tags: ['respect', 'thanks'],\n    description: 'man bowing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🙇‍♀️',\n    names: ['bowing_woman'],\n    tags: ['respect', 'thanks'],\n    description: 'woman bowing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤦',\n    names: ['facepalm'],\n    tags: [],\n    description: 'person facepalming',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤦‍♂️',\n    names: ['man_facepalming'],\n    tags: [],\n    description: 'man facepalming',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤦‍♀️',\n    names: ['woman_facepalming'],\n    tags: [],\n    description: 'woman facepalming',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤷',\n    names: ['shrug'],\n    tags: [],\n    description: 'person shrugging',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤷‍♂️',\n    names: ['man_shrugging'],\n    tags: [],\n    description: 'man shrugging',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤷‍♀️',\n    names: ['woman_shrugging'],\n    tags: [],\n    description: 'woman shrugging',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍⚕️',\n    names: ['health_worker'],\n    tags: [],\n    description: 'health worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍⚕️',\n    names: ['man_health_worker'],\n    tags: ['doctor', 'nurse'],\n    description: 'man health worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍⚕️',\n    names: ['woman_health_worker'],\n    tags: ['doctor', 'nurse'],\n    description: 'woman health worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🎓',\n    names: ['student'],\n    tags: [],\n    description: 'student',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🎓',\n    names: ['man_student'],\n    tags: ['graduation'],\n    description: 'man student',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🎓',\n    names: ['woman_student'],\n    tags: ['graduation'],\n    description: 'woman student',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🏫',\n    names: ['teacher'],\n    tags: [],\n    description: 'teacher',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🏫',\n    names: ['man_teacher'],\n    tags: ['school', 'professor'],\n    description: 'man teacher',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🏫',\n    names: ['woman_teacher'],\n    tags: ['school', 'professor'],\n    description: 'woman teacher',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍⚖️',\n    names: ['judge'],\n    tags: [],\n    description: 'judge',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍⚖️',\n    names: ['man_judge'],\n    tags: ['justice'],\n    description: 'man judge',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍⚖️',\n    names: ['woman_judge'],\n    tags: ['justice'],\n    description: 'woman judge',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🌾',\n    names: ['farmer'],\n    tags: [],\n    description: 'farmer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🌾',\n    names: ['man_farmer'],\n    tags: [],\n    description: 'man farmer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🌾',\n    names: ['woman_farmer'],\n    tags: [],\n    description: 'woman farmer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🍳',\n    names: ['cook'],\n    tags: [],\n    description: 'cook',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🍳',\n    names: ['man_cook'],\n    tags: ['chef'],\n    description: 'man cook',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🍳',\n    names: ['woman_cook'],\n    tags: ['chef'],\n    description: 'woman cook',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🔧',\n    names: ['mechanic'],\n    tags: [],\n    description: 'mechanic',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🔧',\n    names: ['man_mechanic'],\n    tags: [],\n    description: 'man mechanic',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🔧',\n    names: ['woman_mechanic'],\n    tags: [],\n    description: 'woman mechanic',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🏭',\n    names: ['factory_worker'],\n    tags: [],\n    description: 'factory worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🏭',\n    names: ['man_factory_worker'],\n    tags: [],\n    description: 'man factory worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🏭',\n    names: ['woman_factory_worker'],\n    tags: [],\n    description: 'woman factory worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍💼',\n    names: ['office_worker'],\n    tags: [],\n    description: 'office worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍💼',\n    names: ['man_office_worker'],\n    tags: ['business'],\n    description: 'man office worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍💼',\n    names: ['woman_office_worker'],\n    tags: ['business'],\n    description: 'woman office worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🔬',\n    names: ['scientist'],\n    tags: [],\n    description: 'scientist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🔬',\n    names: ['man_scientist'],\n    tags: ['research'],\n    description: 'man scientist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🔬',\n    names: ['woman_scientist'],\n    tags: ['research'],\n    description: 'woman scientist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍💻',\n    names: ['technologist'],\n    tags: [],\n    description: 'technologist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍💻',\n    names: ['man_technologist'],\n    tags: ['coder'],\n    description: 'man technologist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍💻',\n    names: ['woman_technologist'],\n    tags: ['coder'],\n    description: 'woman technologist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🎤',\n    names: ['singer'],\n    tags: [],\n    description: 'singer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🎤',\n    names: ['man_singer'],\n    tags: ['rockstar'],\n    description: 'man singer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🎤',\n    names: ['woman_singer'],\n    tags: ['rockstar'],\n    description: 'woman singer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🎨',\n    names: ['artist'],\n    tags: [],\n    description: 'artist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🎨',\n    names: ['man_artist'],\n    tags: ['painter'],\n    description: 'man artist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🎨',\n    names: ['woman_artist'],\n    tags: ['painter'],\n    description: 'woman artist',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍✈️',\n    names: ['pilot'],\n    tags: [],\n    description: 'pilot',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍✈️',\n    names: ['man_pilot'],\n    tags: [],\n    description: 'man pilot',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍✈️',\n    names: ['woman_pilot'],\n    tags: [],\n    description: 'woman pilot',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🚀',\n    names: ['astronaut'],\n    tags: [],\n    description: 'astronaut',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🚀',\n    names: ['man_astronaut'],\n    tags: ['space'],\n    description: 'man astronaut',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🚀',\n    names: ['woman_astronaut'],\n    tags: ['space'],\n    description: 'woman astronaut',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🚒',\n    names: ['firefighter'],\n    tags: [],\n    description: 'firefighter',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🚒',\n    names: ['man_firefighter'],\n    tags: [],\n    description: 'man firefighter',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🚒',\n    names: ['woman_firefighter'],\n    tags: [],\n    description: 'woman firefighter',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👮',\n    names: ['police_officer', 'cop'],\n    tags: ['law'],\n    description: 'police officer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👮‍♂️',\n    names: ['policeman'],\n    tags: ['law', 'cop'],\n    description: 'man police officer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👮‍♀️',\n    names: ['policewoman'],\n    tags: ['law', 'cop'],\n    description: 'woman police officer',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🕵️',\n    names: ['detective'],\n    tags: ['sleuth'],\n    description: 'detective',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🕵️‍♂️',\n    names: ['male_detective'],\n    tags: ['sleuth'],\n    description: 'man detective',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🕵️‍♀️',\n    names: ['female_detective'],\n    tags: ['sleuth'],\n    description: 'woman detective',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💂',\n    names: ['guard'],\n    tags: [],\n    description: 'guard',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💂‍♂️',\n    names: ['guardsman'],\n    tags: [],\n    description: 'man guard',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💂‍♀️',\n    names: ['guardswoman'],\n    tags: [],\n    description: 'woman guard',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🥷',\n    names: ['ninja'],\n    tags: [],\n    description: 'ninja',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👷',\n    names: ['construction_worker'],\n    tags: ['helmet'],\n    description: 'construction worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👷‍♂️',\n    names: ['construction_worker_man'],\n    tags: ['helmet'],\n    description: 'man construction worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👷‍♀️',\n    names: ['construction_worker_woman'],\n    tags: ['helmet'],\n    description: 'woman construction worker',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫅',\n    names: ['person_with_crown'],\n    tags: [],\n    description: 'person with crown',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤴',\n    names: ['prince'],\n    tags: ['crown', 'royal'],\n    description: 'prince',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👸',\n    names: ['princess'],\n    tags: ['crown', 'royal'],\n    description: 'princess',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👳',\n    names: ['person_with_turban'],\n    tags: [],\n    description: 'person wearing turban',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👳‍♂️',\n    names: ['man_with_turban'],\n    tags: [],\n    description: 'man wearing turban',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👳‍♀️',\n    names: ['woman_with_turban'],\n    tags: [],\n    description: 'woman wearing turban',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👲',\n    names: ['man_with_gua_pi_mao'],\n    tags: [],\n    description: 'person with skullcap',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧕',\n    names: ['woman_with_headscarf'],\n    tags: ['hijab'],\n    description: 'woman with headscarf',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤵',\n    names: ['person_in_tuxedo'],\n    tags: ['groom', 'marriage', 'wedding'],\n    description: 'person in tuxedo',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤵‍♂️',\n    names: ['man_in_tuxedo'],\n    tags: [],\n    description: 'man in tuxedo',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤵‍♀️',\n    names: ['woman_in_tuxedo'],\n    tags: [],\n    description: 'woman in tuxedo',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👰',\n    names: ['person_with_veil'],\n    tags: ['marriage', 'wedding'],\n    description: 'person with veil',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👰‍♂️',\n    names: ['man_with_veil'],\n    tags: [],\n    description: 'man with veil',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👰‍♀️',\n    names: ['woman_with_veil', 'bride_with_veil'],\n    tags: [],\n    description: 'woman with veil',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤰',\n    names: ['pregnant_woman'],\n    tags: [],\n    description: 'pregnant woman',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫃',\n    names: ['pregnant_man'],\n    tags: [],\n    description: 'pregnant man',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫄',\n    names: ['pregnant_person'],\n    tags: [],\n    description: 'pregnant person',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤱',\n    names: ['breast_feeding'],\n    tags: ['nursing'],\n    description: 'breast-feeding',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🍼',\n    names: ['woman_feeding_baby'],\n    tags: [],\n    description: 'woman feeding baby',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🍼',\n    names: ['man_feeding_baby'],\n    tags: [],\n    description: 'man feeding baby',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🍼',\n    names: ['person_feeding_baby'],\n    tags: [],\n    description: 'person feeding baby',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👼',\n    names: ['angel'],\n    tags: [],\n    description: 'baby angel',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🎅',\n    names: ['santa'],\n    tags: ['christmas'],\n    description: 'Santa Claus',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤶',\n    names: ['mrs_claus'],\n    tags: ['santa'],\n    description: 'Mrs. Claus',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🎄',\n    names: ['mx_claus'],\n    tags: [],\n    description: 'mx claus',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦸',\n    names: ['superhero'],\n    tags: [],\n    description: 'superhero',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦸‍♂️',\n    names: ['superhero_man'],\n    tags: [],\n    description: 'man superhero',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦸‍♀️',\n    names: ['superhero_woman'],\n    tags: [],\n    description: 'woman superhero',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦹',\n    names: ['supervillain'],\n    tags: [],\n    description: 'supervillain',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦹‍♂️',\n    names: ['supervillain_man'],\n    tags: [],\n    description: 'man supervillain',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🦹‍♀️',\n    names: ['supervillain_woman'],\n    tags: [],\n    description: 'woman supervillain',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧙',\n    names: ['mage'],\n    tags: ['wizard'],\n    description: 'mage',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧙‍♂️',\n    names: ['mage_man'],\n    tags: ['wizard'],\n    description: 'man mage',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧙‍♀️',\n    names: ['mage_woman'],\n    tags: ['wizard'],\n    description: 'woman mage',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧚',\n    names: ['fairy'],\n    tags: [],\n    description: 'fairy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧚‍♂️',\n    names: ['fairy_man'],\n    tags: [],\n    description: 'man fairy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧚‍♀️',\n    names: ['fairy_woman'],\n    tags: [],\n    description: 'woman fairy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧛',\n    names: ['vampire'],\n    tags: [],\n    description: 'vampire',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧛‍♂️',\n    names: ['vampire_man'],\n    tags: [],\n    description: 'man vampire',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧛‍♀️',\n    names: ['vampire_woman'],\n    tags: [],\n    description: 'woman vampire',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧜',\n    names: ['merperson'],\n    tags: [],\n    description: 'merperson',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧜‍♂️',\n    names: ['merman'],\n    tags: [],\n    description: 'merman',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧜‍♀️',\n    names: ['mermaid'],\n    tags: [],\n    description: 'mermaid',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧝',\n    names: ['elf'],\n    tags: [],\n    description: 'elf',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧝‍♂️',\n    names: ['elf_man'],\n    tags: [],\n    description: 'man elf',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧝‍♀️',\n    names: ['elf_woman'],\n    tags: [],\n    description: 'woman elf',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧞',\n    names: ['genie'],\n    tags: [],\n    description: 'genie',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧞‍♂️',\n    names: ['genie_man'],\n    tags: [],\n    description: 'man genie',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧞‍♀️',\n    names: ['genie_woman'],\n    tags: [],\n    description: 'woman genie',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧟',\n    names: ['zombie'],\n    tags: [],\n    description: 'zombie',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧟‍♂️',\n    names: ['zombie_man'],\n    tags: [],\n    description: 'man zombie',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧟‍♀️',\n    names: ['zombie_woman'],\n    tags: [],\n    description: 'woman zombie',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧌',\n    names: ['troll'],\n    tags: [],\n    description: 'troll',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💆',\n    names: ['massage'],\n    tags: ['spa'],\n    description: 'person getting massage',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💆‍♂️',\n    names: ['massage_man'],\n    tags: ['spa'],\n    description: 'man getting massage',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💆‍♀️',\n    names: ['massage_woman'],\n    tags: ['spa'],\n    description: 'woman getting massage',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💇',\n    names: ['haircut'],\n    tags: ['beauty'],\n    description: 'person getting haircut',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💇‍♂️',\n    names: ['haircut_man'],\n    tags: [],\n    description: 'man getting haircut',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💇‍♀️',\n    names: ['haircut_woman'],\n    tags: [],\n    description: 'woman getting haircut',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚶',\n    names: ['walking'],\n    tags: [],\n    description: 'person walking',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚶‍♂️',\n    names: ['walking_man'],\n    tags: [],\n    description: 'man walking',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚶‍♀️',\n    names: ['walking_woman'],\n    tags: [],\n    description: 'woman walking',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧍',\n    names: ['standing_person'],\n    tags: [],\n    description: 'person standing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧍‍♂️',\n    names: ['standing_man'],\n    tags: [],\n    description: 'man standing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧍‍♀️',\n    names: ['standing_woman'],\n    tags: [],\n    description: 'woman standing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧎',\n    names: ['kneeling_person'],\n    tags: [],\n    description: 'person kneeling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧎‍♂️',\n    names: ['kneeling_man'],\n    tags: [],\n    description: 'man kneeling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧎‍♀️',\n    names: ['kneeling_woman'],\n    tags: [],\n    description: 'woman kneeling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🦯',\n    names: ['person_with_probing_cane'],\n    tags: [],\n    description: 'person with white cane',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🦯',\n    names: ['man_with_probing_cane'],\n    tags: [],\n    description: 'man with white cane',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🦯',\n    names: ['woman_with_probing_cane'],\n    tags: [],\n    description: 'woman with white cane',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🦼',\n    names: ['person_in_motorized_wheelchair'],\n    tags: [],\n    description: 'person in motorized wheelchair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🦼',\n    names: ['man_in_motorized_wheelchair'],\n    tags: [],\n    description: 'man in motorized wheelchair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🦼',\n    names: ['woman_in_motorized_wheelchair'],\n    tags: [],\n    description: 'woman in motorized wheelchair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🦽',\n    names: ['person_in_manual_wheelchair'],\n    tags: [],\n    description: 'person in manual wheelchair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍🦽',\n    names: ['man_in_manual_wheelchair'],\n    tags: [],\n    description: 'man in manual wheelchair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍🦽',\n    names: ['woman_in_manual_wheelchair'],\n    tags: [],\n    description: 'woman in manual wheelchair',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏃',\n    names: ['runner', 'running'],\n    tags: ['exercise', 'workout', 'marathon'],\n    description: 'person running',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏃‍♂️',\n    names: ['running_man'],\n    tags: ['exercise', 'workout', 'marathon'],\n    description: 'man running',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏃‍♀️',\n    names: ['running_woman'],\n    tags: ['exercise', 'workout', 'marathon'],\n    description: 'woman running',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💃',\n    names: ['woman_dancing', 'dancer'],\n    tags: ['dress'],\n    description: 'woman dancing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🕺',\n    names: ['man_dancing'],\n    tags: ['dancer'],\n    description: 'man dancing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🕴️',\n    names: ['business_suit_levitating'],\n    tags: [],\n    description: 'person in suit levitating',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👯',\n    names: ['dancers'],\n    tags: ['bunny'],\n    description: 'people with bunny ears',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👯‍♂️',\n    names: ['dancing_men'],\n    tags: ['bunny'],\n    description: 'men with bunny ears',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👯‍♀️',\n    names: ['dancing_women'],\n    tags: ['bunny'],\n    description: 'women with bunny ears',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧖',\n    names: ['sauna_person'],\n    tags: ['steamy'],\n    description: 'person in steamy room',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧖‍♂️',\n    names: ['sauna_man'],\n    tags: ['steamy'],\n    description: 'man in steamy room',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧖‍♀️',\n    names: ['sauna_woman'],\n    tags: ['steamy'],\n    description: 'woman in steamy room',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧗',\n    names: ['climbing'],\n    tags: ['bouldering'],\n    description: 'person climbing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧗‍♂️',\n    names: ['climbing_man'],\n    tags: ['bouldering'],\n    description: 'man climbing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧗‍♀️',\n    names: ['climbing_woman'],\n    tags: ['bouldering'],\n    description: 'woman climbing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤺',\n    names: ['person_fencing'],\n    tags: [],\n    description: 'person fencing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏇',\n    names: ['horse_racing'],\n    tags: [],\n    description: 'horse racing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '⛷️',\n    names: ['skier'],\n    tags: [],\n    description: 'skier',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏂',\n    names: ['snowboarder'],\n    tags: [],\n    description: 'snowboarder',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏌️',\n    names: ['golfing'],\n    tags: [],\n    description: 'person golfing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏌️‍♂️',\n    names: ['golfing_man'],\n    tags: [],\n    description: 'man golfing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏌️‍♀️',\n    names: ['golfing_woman'],\n    tags: [],\n    description: 'woman golfing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏄',\n    names: ['surfer'],\n    tags: [],\n    description: 'person surfing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏄‍♂️',\n    names: ['surfing_man'],\n    tags: [],\n    description: 'man surfing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏄‍♀️',\n    names: ['surfing_woman'],\n    tags: [],\n    description: 'woman surfing',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚣',\n    names: ['rowboat'],\n    tags: [],\n    description: 'person rowing boat',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚣‍♂️',\n    names: ['rowing_man'],\n    tags: [],\n    description: 'man rowing boat',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚣‍♀️',\n    names: ['rowing_woman'],\n    tags: [],\n    description: 'woman rowing boat',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏊',\n    names: ['swimmer'],\n    tags: [],\n    description: 'person swimming',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏊‍♂️',\n    names: ['swimming_man'],\n    tags: [],\n    description: 'man swimming',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏊‍♀️',\n    names: ['swimming_woman'],\n    tags: [],\n    description: 'woman swimming',\n    category: 'People & Body'\n  },\n  {\n    emoji: '⛹️',\n    names: ['bouncing_ball_person'],\n    tags: ['basketball'],\n    description: 'person bouncing ball',\n    category: 'People & Body'\n  },\n  {\n    emoji: '⛹️‍♂️',\n    names: ['bouncing_ball_man', 'basketball_man'],\n    tags: [],\n    description: 'man bouncing ball',\n    category: 'People & Body'\n  },\n  {\n    emoji: '⛹️‍♀️',\n    names: ['bouncing_ball_woman', 'basketball_woman'],\n    tags: [],\n    description: 'woman bouncing ball',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏋️',\n    names: ['weight_lifting'],\n    tags: ['gym', 'workout'],\n    description: 'person lifting weights',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏋️‍♂️',\n    names: ['weight_lifting_man'],\n    tags: ['gym', 'workout'],\n    description: 'man lifting weights',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🏋️‍♀️',\n    names: ['weight_lifting_woman'],\n    tags: ['gym', 'workout'],\n    description: 'woman lifting weights',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚴',\n    names: ['bicyclist'],\n    tags: [],\n    description: 'person biking',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚴‍♂️',\n    names: ['biking_man'],\n    tags: [],\n    description: 'man biking',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚴‍♀️',\n    names: ['biking_woman'],\n    tags: [],\n    description: 'woman biking',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚵',\n    names: ['mountain_bicyclist'],\n    tags: [],\n    description: 'person mountain biking',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚵‍♂️',\n    names: ['mountain_biking_man'],\n    tags: [],\n    description: 'man mountain biking',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🚵‍♀️',\n    names: ['mountain_biking_woman'],\n    tags: [],\n    description: 'woman mountain biking',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤸',\n    names: ['cartwheeling'],\n    tags: [],\n    description: 'person cartwheeling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤸‍♂️',\n    names: ['man_cartwheeling'],\n    tags: [],\n    description: 'man cartwheeling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤸‍♀️',\n    names: ['woman_cartwheeling'],\n    tags: [],\n    description: 'woman cartwheeling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤼',\n    names: ['wrestling'],\n    tags: [],\n    description: 'people wrestling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤼‍♂️',\n    names: ['men_wrestling'],\n    tags: [],\n    description: 'men wrestling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤼‍♀️',\n    names: ['women_wrestling'],\n    tags: [],\n    description: 'women wrestling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤽',\n    names: ['water_polo'],\n    tags: [],\n    description: 'person playing water polo',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤽‍♂️',\n    names: ['man_playing_water_polo'],\n    tags: [],\n    description: 'man playing water polo',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤽‍♀️',\n    names: ['woman_playing_water_polo'],\n    tags: [],\n    description: 'woman playing water polo',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤾',\n    names: ['handball_person'],\n    tags: [],\n    description: 'person playing handball',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤾‍♂️',\n    names: ['man_playing_handball'],\n    tags: [],\n    description: 'man playing handball',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤾‍♀️',\n    names: ['woman_playing_handball'],\n    tags: [],\n    description: 'woman playing handball',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤹',\n    names: ['juggling_person'],\n    tags: [],\n    description: 'person juggling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤹‍♂️',\n    names: ['man_juggling'],\n    tags: [],\n    description: 'man juggling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🤹‍♀️',\n    names: ['woman_juggling'],\n    tags: [],\n    description: 'woman juggling',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧘',\n    names: ['lotus_position'],\n    tags: ['meditation'],\n    description: 'person in lotus position',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧘‍♂️',\n    names: ['lotus_position_man'],\n    tags: ['meditation'],\n    description: 'man in lotus position',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧘‍♀️',\n    names: ['lotus_position_woman'],\n    tags: ['meditation'],\n    description: 'woman in lotus position',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🛀',\n    names: ['bath'],\n    tags: ['shower'],\n    description: 'person taking bath',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🛌',\n    names: ['sleeping_bed'],\n    tags: [],\n    description: 'person in bed',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🧑‍🤝‍🧑',\n    names: ['people_holding_hands'],\n    tags: ['couple', 'date'],\n    description: 'people holding hands',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👭',\n    names: ['two_women_holding_hands'],\n    tags: ['couple', 'date'],\n    description: 'women holding hands',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👫',\n    names: ['couple'],\n    tags: ['date'],\n    description: 'woman and man holding hands',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👬',\n    names: ['two_men_holding_hands'],\n    tags: ['couple', 'date'],\n    description: 'men holding hands',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💏',\n    names: ['couplekiss'],\n    tags: [],\n    description: 'kiss',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍❤️‍💋‍👨',\n    names: ['couplekiss_man_woman'],\n    tags: [],\n    description: 'kiss: woman, man',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍❤️‍💋‍👨',\n    names: ['couplekiss_man_man'],\n    tags: [],\n    description: 'kiss: man, man',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍❤️‍💋‍👩',\n    names: ['couplekiss_woman_woman'],\n    tags: [],\n    description: 'kiss: woman, woman',\n    category: 'People & Body'\n  },\n  {\n    emoji: '💑',\n    names: ['couple_with_heart'],\n    tags: [],\n    description: 'couple with heart',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍❤️‍👨',\n    names: ['couple_with_heart_woman_man'],\n    tags: [],\n    description: 'couple with heart: woman, man',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍❤️‍👨',\n    names: ['couple_with_heart_man_man'],\n    tags: [],\n    description: 'couple with heart: man, man',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍❤️‍👩',\n    names: ['couple_with_heart_woman_woman'],\n    tags: [],\n    description: 'couple with heart: woman, woman',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👪',\n    names: ['family'],\n    tags: ['home', 'parents', 'child'],\n    description: 'family',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👩‍👦',\n    names: ['family_man_woman_boy'],\n    tags: [],\n    description: 'family: man, woman, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👩‍👧',\n    names: ['family_man_woman_girl'],\n    tags: [],\n    description: 'family: man, woman, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👩‍👧‍👦',\n    names: ['family_man_woman_girl_boy'],\n    tags: [],\n    description: 'family: man, woman, girl, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👩‍👦‍👦',\n    names: ['family_man_woman_boy_boy'],\n    tags: [],\n    description: 'family: man, woman, boy, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👩‍👧‍👧',\n    names: ['family_man_woman_girl_girl'],\n    tags: [],\n    description: 'family: man, woman, girl, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👨‍👦',\n    names: ['family_man_man_boy'],\n    tags: [],\n    description: 'family: man, man, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👨‍👧',\n    names: ['family_man_man_girl'],\n    tags: [],\n    description: 'family: man, man, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👨‍👧‍👦',\n    names: ['family_man_man_girl_boy'],\n    tags: [],\n    description: 'family: man, man, girl, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👨‍👦‍👦',\n    names: ['family_man_man_boy_boy'],\n    tags: [],\n    description: 'family: man, man, boy, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👨‍👧‍👧',\n    names: ['family_man_man_girl_girl'],\n    tags: [],\n    description: 'family: man, man, girl, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👩‍👦',\n    names: ['family_woman_woman_boy'],\n    tags: [],\n    description: 'family: woman, woman, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👩‍👧',\n    names: ['family_woman_woman_girl'],\n    tags: [],\n    description: 'family: woman, woman, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👩‍👧‍👦',\n    names: ['family_woman_woman_girl_boy'],\n    tags: [],\n    description: 'family: woman, woman, girl, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👩‍👦‍👦',\n    names: ['family_woman_woman_boy_boy'],\n    tags: [],\n    description: 'family: woman, woman, boy, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👩‍👧‍👧',\n    names: ['family_woman_woman_girl_girl'],\n    tags: [],\n    description: 'family: woman, woman, girl, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👦',\n    names: ['family_man_boy'],\n    tags: [],\n    description: 'family: man, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👦‍👦',\n    names: ['family_man_boy_boy'],\n    tags: [],\n    description: 'family: man, boy, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👧',\n    names: ['family_man_girl'],\n    tags: [],\n    description: 'family: man, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👧‍👦',\n    names: ['family_man_girl_boy'],\n    tags: [],\n    description: 'family: man, girl, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👨‍👧‍👧',\n    names: ['family_man_girl_girl'],\n    tags: [],\n    description: 'family: man, girl, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👦',\n    names: ['family_woman_boy'],\n    tags: [],\n    description: 'family: woman, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👦‍👦',\n    names: ['family_woman_boy_boy'],\n    tags: [],\n    description: 'family: woman, boy, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👧',\n    names: ['family_woman_girl'],\n    tags: [],\n    description: 'family: woman, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👧‍👦',\n    names: ['family_woman_girl_boy'],\n    tags: [],\n    description: 'family: woman, girl, boy',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👩‍👧‍👧',\n    names: ['family_woman_girl_girl'],\n    tags: [],\n    description: 'family: woman, girl, girl',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🗣️',\n    names: ['speaking_head'],\n    tags: [],\n    description: 'speaking head',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👤',\n    names: ['bust_in_silhouette'],\n    tags: ['user'],\n    description: 'bust in silhouette',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👥',\n    names: ['busts_in_silhouette'],\n    tags: ['users', 'group', 'team'],\n    description: 'busts in silhouette',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🫂',\n    names: ['people_hugging'],\n    tags: [],\n    description: 'people hugging',\n    category: 'People & Body'\n  },\n  {\n    emoji: '👣',\n    names: ['footprints'],\n    tags: ['feet', 'tracks'],\n    description: 'footprints',\n    category: 'People & Body'\n  },\n  {\n    emoji: '🐵',\n    names: ['monkey_face'],\n    tags: [],\n    description: 'monkey face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐒',\n    names: ['monkey'],\n    tags: [],\n    description: 'monkey',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦍',\n    names: ['gorilla'],\n    tags: [],\n    description: 'gorilla',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦧',\n    names: ['orangutan'],\n    tags: [],\n    description: 'orangutan',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐶',\n    names: ['dog'],\n    tags: ['pet'],\n    description: 'dog face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐕',\n    names: ['dog2'],\n    tags: [],\n    description: 'dog',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦮',\n    names: ['guide_dog'],\n    tags: [],\n    description: 'guide dog',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐕‍🦺',\n    names: ['service_dog'],\n    tags: [],\n    description: 'service dog',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐩',\n    names: ['poodle'],\n    tags: ['dog'],\n    description: 'poodle',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐺',\n    names: ['wolf'],\n    tags: [],\n    description: 'wolf',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦊',\n    names: ['fox_face'],\n    tags: [],\n    description: 'fox',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦝',\n    names: ['raccoon'],\n    tags: [],\n    description: 'raccoon',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐱',\n    names: ['cat'],\n    tags: ['pet'],\n    description: 'cat face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐈',\n    names: ['cat2'],\n    tags: [],\n    description: 'cat',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐈‍⬛',\n    names: ['black_cat'],\n    tags: [],\n    description: 'black cat',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦁',\n    names: ['lion'],\n    tags: [],\n    description: 'lion',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐯',\n    names: ['tiger'],\n    tags: [],\n    description: 'tiger face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐅',\n    names: ['tiger2'],\n    tags: [],\n    description: 'tiger',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐆',\n    names: ['leopard'],\n    tags: [],\n    description: 'leopard',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐴',\n    names: ['horse'],\n    tags: [],\n    description: 'horse face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🫎',\n    names: ['moose'],\n    tags: ['canada'],\n    description: 'moose',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🫏',\n    names: ['donkey'],\n    tags: ['mule'],\n    description: 'donkey',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐎',\n    names: ['racehorse'],\n    tags: ['speed'],\n    description: 'horse',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦄',\n    names: ['unicorn'],\n    tags: [],\n    description: 'unicorn',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦓',\n    names: ['zebra'],\n    tags: [],\n    description: 'zebra',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦌',\n    names: ['deer'],\n    tags: [],\n    description: 'deer',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦬',\n    names: ['bison'],\n    tags: [],\n    description: 'bison',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐮',\n    names: ['cow'],\n    tags: [],\n    description: 'cow face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐂',\n    names: ['ox'],\n    tags: [],\n    description: 'ox',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐃',\n    names: ['water_buffalo'],\n    tags: [],\n    description: 'water buffalo',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐄',\n    names: ['cow2'],\n    tags: [],\n    description: 'cow',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐷',\n    names: ['pig'],\n    tags: [],\n    description: 'pig face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐖',\n    names: ['pig2'],\n    tags: [],\n    description: 'pig',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐗',\n    names: ['boar'],\n    tags: [],\n    description: 'boar',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐽',\n    names: ['pig_nose'],\n    tags: [],\n    description: 'pig nose',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐏',\n    names: ['ram'],\n    tags: [],\n    description: 'ram',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐑',\n    names: ['sheep'],\n    tags: [],\n    description: 'ewe',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐐',\n    names: ['goat'],\n    tags: [],\n    description: 'goat',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐪',\n    names: ['dromedary_camel'],\n    tags: ['desert'],\n    description: 'camel',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐫',\n    names: ['camel'],\n    tags: [],\n    description: 'two-hump camel',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦙',\n    names: ['llama'],\n    tags: [],\n    description: 'llama',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦒',\n    names: ['giraffe'],\n    tags: [],\n    description: 'giraffe',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐘',\n    names: ['elephant'],\n    tags: [],\n    description: 'elephant',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦣',\n    names: ['mammoth'],\n    tags: [],\n    description: 'mammoth',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦏',\n    names: ['rhinoceros'],\n    tags: [],\n    description: 'rhinoceros',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦛',\n    names: ['hippopotamus'],\n    tags: [],\n    description: 'hippopotamus',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐭',\n    names: ['mouse'],\n    tags: [],\n    description: 'mouse face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐁',\n    names: ['mouse2'],\n    tags: [],\n    description: 'mouse',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐀',\n    names: ['rat'],\n    tags: [],\n    description: 'rat',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐹',\n    names: ['hamster'],\n    tags: ['pet'],\n    description: 'hamster',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐰',\n    names: ['rabbit'],\n    tags: ['bunny'],\n    description: 'rabbit face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐇',\n    names: ['rabbit2'],\n    tags: [],\n    description: 'rabbit',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐿️',\n    names: ['chipmunk'],\n    tags: [],\n    description: 'chipmunk',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦫',\n    names: ['beaver'],\n    tags: [],\n    description: 'beaver',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦔',\n    names: ['hedgehog'],\n    tags: [],\n    description: 'hedgehog',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦇',\n    names: ['bat'],\n    tags: [],\n    description: 'bat',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐻',\n    names: ['bear'],\n    tags: [],\n    description: 'bear',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐻‍❄️',\n    names: ['polar_bear'],\n    tags: [],\n    description: 'polar bear',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐨',\n    names: ['koala'],\n    tags: [],\n    description: 'koala',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐼',\n    names: ['panda_face'],\n    tags: [],\n    description: 'panda',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦥',\n    names: ['sloth'],\n    tags: [],\n    description: 'sloth',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦦',\n    names: ['otter'],\n    tags: [],\n    description: 'otter',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦨',\n    names: ['skunk'],\n    tags: [],\n    description: 'skunk',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦘',\n    names: ['kangaroo'],\n    tags: [],\n    description: 'kangaroo',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦡',\n    names: ['badger'],\n    tags: [],\n    description: 'badger',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐾',\n    names: ['feet', 'paw_prints'],\n    tags: [],\n    description: 'paw prints',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦃',\n    names: ['turkey'],\n    tags: ['thanksgiving'],\n    description: 'turkey',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐔',\n    names: ['chicken'],\n    tags: [],\n    description: 'chicken',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐓',\n    names: ['rooster'],\n    tags: [],\n    description: 'rooster',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐣',\n    names: ['hatching_chick'],\n    tags: [],\n    description: 'hatching chick',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐤',\n    names: ['baby_chick'],\n    tags: [],\n    description: 'baby chick',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐥',\n    names: ['hatched_chick'],\n    tags: [],\n    description: 'front-facing baby chick',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐦',\n    names: ['bird'],\n    tags: [],\n    description: 'bird',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐧',\n    names: ['penguin'],\n    tags: [],\n    description: 'penguin',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🕊️',\n    names: ['dove'],\n    tags: ['peace'],\n    description: 'dove',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦅',\n    names: ['eagle'],\n    tags: [],\n    description: 'eagle',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦆',\n    names: ['duck'],\n    tags: [],\n    description: 'duck',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦢',\n    names: ['swan'],\n    tags: [],\n    description: 'swan',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦉',\n    names: ['owl'],\n    tags: [],\n    description: 'owl',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦤',\n    names: ['dodo'],\n    tags: [],\n    description: 'dodo',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪶',\n    names: ['feather'],\n    tags: [],\n    description: 'feather',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦩',\n    names: ['flamingo'],\n    tags: [],\n    description: 'flamingo',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦚',\n    names: ['peacock'],\n    tags: [],\n    description: 'peacock',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦜',\n    names: ['parrot'],\n    tags: [],\n    description: 'parrot',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪽',\n    names: ['wing'],\n    tags: ['fly'],\n    description: 'wing',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐦‍⬛',\n    names: ['black_bird'],\n    tags: [],\n    description: 'black bird',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪿',\n    names: ['goose'],\n    tags: ['honk'],\n    description: 'goose',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐸',\n    names: ['frog'],\n    tags: [],\n    description: 'frog',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐊',\n    names: ['crocodile'],\n    tags: [],\n    description: 'crocodile',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐢',\n    names: ['turtle'],\n    tags: ['slow'],\n    description: 'turtle',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦎',\n    names: ['lizard'],\n    tags: [],\n    description: 'lizard',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐍',\n    names: ['snake'],\n    tags: [],\n    description: 'snake',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐲',\n    names: ['dragon_face'],\n    tags: [],\n    description: 'dragon face',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐉',\n    names: ['dragon'],\n    tags: [],\n    description: 'dragon',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦕',\n    names: ['sauropod'],\n    tags: ['dinosaur'],\n    description: 'sauropod',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦖',\n    names: ['t-rex'],\n    tags: ['dinosaur'],\n    description: 'T-Rex',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐳',\n    names: ['whale'],\n    tags: ['sea'],\n    description: 'spouting whale',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐋',\n    names: ['whale2'],\n    tags: [],\n    description: 'whale',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐬',\n    names: ['dolphin', 'flipper'],\n    tags: [],\n    description: 'dolphin',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦭',\n    names: ['seal'],\n    tags: [],\n    description: 'seal',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐟',\n    names: ['fish'],\n    tags: [],\n    description: 'fish',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐠',\n    names: ['tropical_fish'],\n    tags: [],\n    description: 'tropical fish',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐡',\n    names: ['blowfish'],\n    tags: [],\n    description: 'blowfish',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦈',\n    names: ['shark'],\n    tags: [],\n    description: 'shark',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐙',\n    names: ['octopus'],\n    tags: [],\n    description: 'octopus',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐚',\n    names: ['shell'],\n    tags: ['sea', 'beach'],\n    description: 'spiral shell',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪸',\n    names: ['coral'],\n    tags: [],\n    description: 'coral',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪼',\n    names: ['jellyfish'],\n    tags: [],\n    description: 'jellyfish',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐌',\n    names: ['snail'],\n    tags: ['slow'],\n    description: 'snail',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦋',\n    names: ['butterfly'],\n    tags: [],\n    description: 'butterfly',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐛',\n    names: ['bug'],\n    tags: [],\n    description: 'bug',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐜',\n    names: ['ant'],\n    tags: [],\n    description: 'ant',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐝',\n    names: ['bee', 'honeybee'],\n    tags: [],\n    description: 'honeybee',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪲',\n    names: ['beetle'],\n    tags: [],\n    description: 'beetle',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🐞',\n    names: ['lady_beetle'],\n    tags: ['bug'],\n    description: 'lady beetle',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦗',\n    names: ['cricket'],\n    tags: [],\n    description: 'cricket',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪳',\n    names: ['cockroach'],\n    tags: [],\n    description: 'cockroach',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🕷️',\n    names: ['spider'],\n    tags: [],\n    description: 'spider',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🕸️',\n    names: ['spider_web'],\n    tags: [],\n    description: 'spider web',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦂',\n    names: ['scorpion'],\n    tags: [],\n    description: 'scorpion',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦟',\n    names: ['mosquito'],\n    tags: [],\n    description: 'mosquito',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪰',\n    names: ['fly'],\n    tags: [],\n    description: 'fly',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪱',\n    names: ['worm'],\n    tags: [],\n    description: 'worm',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🦠',\n    names: ['microbe'],\n    tags: ['germ'],\n    description: 'microbe',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '💐',\n    names: ['bouquet'],\n    tags: ['flowers'],\n    description: 'bouquet',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌸',\n    names: ['cherry_blossom'],\n    tags: ['flower', 'spring'],\n    description: 'cherry blossom',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '💮',\n    names: ['white_flower'],\n    tags: [],\n    description: 'white flower',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪷',\n    names: ['lotus'],\n    tags: [],\n    description: 'lotus',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🏵️',\n    names: ['rosette'],\n    tags: [],\n    description: 'rosette',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌹',\n    names: ['rose'],\n    tags: ['flower'],\n    description: 'rose',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🥀',\n    names: ['wilted_flower'],\n    tags: [],\n    description: 'wilted flower',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌺',\n    names: ['hibiscus'],\n    tags: [],\n    description: 'hibiscus',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌻',\n    names: ['sunflower'],\n    tags: [],\n    description: 'sunflower',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌼',\n    names: ['blossom'],\n    tags: [],\n    description: 'blossom',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌷',\n    names: ['tulip'],\n    tags: ['flower'],\n    description: 'tulip',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪻',\n    names: ['hyacinth'],\n    tags: [],\n    description: 'hyacinth',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌱',\n    names: ['seedling'],\n    tags: ['plant'],\n    description: 'seedling',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪴',\n    names: ['potted_plant'],\n    tags: [],\n    description: 'potted plant',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌲',\n    names: ['evergreen_tree'],\n    tags: ['wood'],\n    description: 'evergreen tree',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌳',\n    names: ['deciduous_tree'],\n    tags: ['wood'],\n    description: 'deciduous tree',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌴',\n    names: ['palm_tree'],\n    tags: [],\n    description: 'palm tree',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌵',\n    names: ['cactus'],\n    tags: [],\n    description: 'cactus',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌾',\n    names: ['ear_of_rice'],\n    tags: [],\n    description: 'sheaf of rice',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🌿',\n    names: ['herb'],\n    tags: [],\n    description: 'herb',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '☘️',\n    names: ['shamrock'],\n    tags: [],\n    description: 'shamrock',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🍀',\n    names: ['four_leaf_clover'],\n    tags: ['luck'],\n    description: 'four leaf clover',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🍁',\n    names: ['maple_leaf'],\n    tags: ['canada'],\n    description: 'maple leaf',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🍂',\n    names: ['fallen_leaf'],\n    tags: ['autumn'],\n    description: 'fallen leaf',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🍃',\n    names: ['leaves'],\n    tags: ['leaf'],\n    description: 'leaf fluttering in wind',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪹',\n    names: ['empty_nest'],\n    tags: [],\n    description: 'empty nest',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🪺',\n    names: ['nest_with_eggs'],\n    tags: [],\n    description: 'nest with eggs',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🍄',\n    names: ['mushroom'],\n    tags: ['fungus'],\n    description: 'mushroom',\n    category: 'Animals & Nature'\n  },\n  {\n    emoji: '🍇',\n    names: ['grapes'],\n    tags: [],\n    description: 'grapes',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍈',\n    names: ['melon'],\n    tags: [],\n    description: 'melon',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍉',\n    names: ['watermelon'],\n    tags: [],\n    description: 'watermelon',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍊',\n    names: ['tangerine', 'orange', 'mandarin'],\n    tags: [],\n    description: 'tangerine',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍋',\n    names: ['lemon'],\n    tags: [],\n    description: 'lemon',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍌',\n    names: ['banana'],\n    tags: ['fruit'],\n    description: 'banana',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍍',\n    names: ['pineapple'],\n    tags: [],\n    description: 'pineapple',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥭',\n    names: ['mango'],\n    tags: [],\n    description: 'mango',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍎',\n    names: ['apple'],\n    tags: [],\n    description: 'red apple',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍏',\n    names: ['green_apple'],\n    tags: ['fruit'],\n    description: 'green apple',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍐',\n    names: ['pear'],\n    tags: [],\n    description: 'pear',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍑',\n    names: ['peach'],\n    tags: [],\n    description: 'peach',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍒',\n    names: ['cherries'],\n    tags: ['fruit'],\n    description: 'cherries',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍓',\n    names: ['strawberry'],\n    tags: ['fruit'],\n    description: 'strawberry',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫐',\n    names: ['blueberries'],\n    tags: [],\n    description: 'blueberries',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥝',\n    names: ['kiwi_fruit'],\n    tags: [],\n    description: 'kiwi fruit',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍅',\n    names: ['tomato'],\n    tags: [],\n    description: 'tomato',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫒',\n    names: ['olive'],\n    tags: [],\n    description: 'olive',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥥',\n    names: ['coconut'],\n    tags: [],\n    description: 'coconut',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥑',\n    names: ['avocado'],\n    tags: [],\n    description: 'avocado',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍆',\n    names: ['eggplant'],\n    tags: ['aubergine'],\n    description: 'eggplant',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥔',\n    names: ['potato'],\n    tags: [],\n    description: 'potato',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥕',\n    names: ['carrot'],\n    tags: [],\n    description: 'carrot',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🌽',\n    names: ['corn'],\n    tags: [],\n    description: 'ear of corn',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🌶️',\n    names: ['hot_pepper'],\n    tags: ['spicy'],\n    description: 'hot pepper',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫑',\n    names: ['bell_pepper'],\n    tags: [],\n    description: 'bell pepper',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥒',\n    names: ['cucumber'],\n    tags: [],\n    description: 'cucumber',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥬',\n    names: ['leafy_green'],\n    tags: [],\n    description: 'leafy green',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥦',\n    names: ['broccoli'],\n    tags: [],\n    description: 'broccoli',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧄',\n    names: ['garlic'],\n    tags: [],\n    description: 'garlic',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧅',\n    names: ['onion'],\n    tags: [],\n    description: 'onion',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥜',\n    names: ['peanuts'],\n    tags: [],\n    description: 'peanuts',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫘',\n    names: ['beans'],\n    tags: [],\n    description: 'beans',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🌰',\n    names: ['chestnut'],\n    tags: [],\n    description: 'chestnut',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫚',\n    names: ['ginger_root'],\n    tags: [],\n    description: 'ginger root',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫛',\n    names: ['pea_pod'],\n    tags: [],\n    description: 'pea pod',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍞',\n    names: ['bread'],\n    tags: ['toast'],\n    description: 'bread',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥐',\n    names: ['croissant'],\n    tags: [],\n    description: 'croissant',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥖',\n    names: ['baguette_bread'],\n    tags: [],\n    description: 'baguette bread',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫓',\n    names: ['flatbread'],\n    tags: [],\n    description: 'flatbread',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥨',\n    names: ['pretzel'],\n    tags: [],\n    description: 'pretzel',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥯',\n    names: ['bagel'],\n    tags: [],\n    description: 'bagel',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥞',\n    names: ['pancakes'],\n    tags: [],\n    description: 'pancakes',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧇',\n    names: ['waffle'],\n    tags: [],\n    description: 'waffle',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧀',\n    names: ['cheese'],\n    tags: [],\n    description: 'cheese wedge',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍖',\n    names: ['meat_on_bone'],\n    tags: [],\n    description: 'meat on bone',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍗',\n    names: ['poultry_leg'],\n    tags: ['meat', 'chicken'],\n    description: 'poultry leg',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥩',\n    names: ['cut_of_meat'],\n    tags: [],\n    description: 'cut of meat',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥓',\n    names: ['bacon'],\n    tags: [],\n    description: 'bacon',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍔',\n    names: ['hamburger'],\n    tags: ['burger'],\n    description: 'hamburger',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍟',\n    names: ['fries'],\n    tags: [],\n    description: 'french fries',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍕',\n    names: ['pizza'],\n    tags: [],\n    description: 'pizza',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🌭',\n    names: ['hotdog'],\n    tags: [],\n    description: 'hot dog',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥪',\n    names: ['sandwich'],\n    tags: [],\n    description: 'sandwich',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🌮',\n    names: ['taco'],\n    tags: [],\n    description: 'taco',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🌯',\n    names: ['burrito'],\n    tags: [],\n    description: 'burrito',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫔',\n    names: ['tamale'],\n    tags: [],\n    description: 'tamale',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥙',\n    names: ['stuffed_flatbread'],\n    tags: [],\n    description: 'stuffed flatbread',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧆',\n    names: ['falafel'],\n    tags: [],\n    description: 'falafel',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥚',\n    names: ['egg'],\n    tags: [],\n    description: 'egg',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍳',\n    names: ['fried_egg'],\n    tags: ['breakfast'],\n    description: 'cooking',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥘',\n    names: ['shallow_pan_of_food'],\n    tags: ['paella', 'curry'],\n    description: 'shallow pan of food',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍲',\n    names: ['stew'],\n    tags: [],\n    description: 'pot of food',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫕',\n    names: ['fondue'],\n    tags: [],\n    description: 'fondue',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥣',\n    names: ['bowl_with_spoon'],\n    tags: [],\n    description: 'bowl with spoon',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥗',\n    names: ['green_salad'],\n    tags: [],\n    description: 'green salad',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍿',\n    names: ['popcorn'],\n    tags: [],\n    description: 'popcorn',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧈',\n    names: ['butter'],\n    tags: [],\n    description: 'butter',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧂',\n    names: ['salt'],\n    tags: [],\n    description: 'salt',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥫',\n    names: ['canned_food'],\n    tags: [],\n    description: 'canned food',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍱',\n    names: ['bento'],\n    tags: [],\n    description: 'bento box',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍘',\n    names: ['rice_cracker'],\n    tags: [],\n    description: 'rice cracker',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍙',\n    names: ['rice_ball'],\n    tags: [],\n    description: 'rice ball',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍚',\n    names: ['rice'],\n    tags: [],\n    description: 'cooked rice',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍛',\n    names: ['curry'],\n    tags: [],\n    description: 'curry rice',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍜',\n    names: ['ramen'],\n    tags: ['noodle'],\n    description: 'steaming bowl',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍝',\n    names: ['spaghetti'],\n    tags: ['pasta'],\n    description: 'spaghetti',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍠',\n    names: ['sweet_potato'],\n    tags: [],\n    description: 'roasted sweet potato',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍢',\n    names: ['oden'],\n    tags: [],\n    description: 'oden',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍣',\n    names: ['sushi'],\n    tags: [],\n    description: 'sushi',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍤',\n    names: ['fried_shrimp'],\n    tags: ['tempura'],\n    description: 'fried shrimp',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍥',\n    names: ['fish_cake'],\n    tags: [],\n    description: 'fish cake with swirl',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥮',\n    names: ['moon_cake'],\n    tags: [],\n    description: 'moon cake',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍡',\n    names: ['dango'],\n    tags: [],\n    description: 'dango',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥟',\n    names: ['dumpling'],\n    tags: [],\n    description: 'dumpling',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥠',\n    names: ['fortune_cookie'],\n    tags: [],\n    description: 'fortune cookie',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥡',\n    names: ['takeout_box'],\n    tags: [],\n    description: 'takeout box',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🦀',\n    names: ['crab'],\n    tags: [],\n    description: 'crab',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🦞',\n    names: ['lobster'],\n    tags: [],\n    description: 'lobster',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🦐',\n    names: ['shrimp'],\n    tags: [],\n    description: 'shrimp',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🦑',\n    names: ['squid'],\n    tags: [],\n    description: 'squid',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🦪',\n    names: ['oyster'],\n    tags: [],\n    description: 'oyster',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍦',\n    names: ['icecream'],\n    tags: [],\n    description: 'soft ice cream',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍧',\n    names: ['shaved_ice'],\n    tags: [],\n    description: 'shaved ice',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍨',\n    names: ['ice_cream'],\n    tags: [],\n    description: 'ice cream',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍩',\n    names: ['doughnut'],\n    tags: [],\n    description: 'doughnut',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍪',\n    names: ['cookie'],\n    tags: [],\n    description: 'cookie',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🎂',\n    names: ['birthday'],\n    tags: ['party'],\n    description: 'birthday cake',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍰',\n    names: ['cake'],\n    tags: ['dessert'],\n    description: 'shortcake',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧁',\n    names: ['cupcake'],\n    tags: [],\n    description: 'cupcake',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥧',\n    names: ['pie'],\n    tags: [],\n    description: 'pie',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍫',\n    names: ['chocolate_bar'],\n    tags: [],\n    description: 'chocolate bar',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍬',\n    names: ['candy'],\n    tags: ['sweet'],\n    description: 'candy',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍭',\n    names: ['lollipop'],\n    tags: [],\n    description: 'lollipop',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍮',\n    names: ['custard'],\n    tags: [],\n    description: 'custard',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍯',\n    names: ['honey_pot'],\n    tags: [],\n    description: 'honey pot',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍼',\n    names: ['baby_bottle'],\n    tags: ['milk'],\n    description: 'baby bottle',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥛',\n    names: ['milk_glass'],\n    tags: [],\n    description: 'glass of milk',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '☕',\n    names: ['coffee'],\n    tags: ['cafe', 'espresso'],\n    description: 'hot beverage',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫖',\n    names: ['teapot'],\n    tags: [],\n    description: 'teapot',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍵',\n    names: ['tea'],\n    tags: ['green', 'breakfast'],\n    description: 'teacup without handle',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍶',\n    names: ['sake'],\n    tags: [],\n    description: 'sake',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍾',\n    names: ['champagne'],\n    tags: ['bottle', 'bubbly', 'celebration'],\n    description: 'bottle with popping cork',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍷',\n    names: ['wine_glass'],\n    tags: [],\n    description: 'wine glass',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍸',\n    names: ['cocktail'],\n    tags: ['drink'],\n    description: 'cocktail glass',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍹',\n    names: ['tropical_drink'],\n    tags: ['summer', 'vacation'],\n    description: 'tropical drink',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍺',\n    names: ['beer'],\n    tags: ['drink'],\n    description: 'beer mug',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍻',\n    names: ['beers'],\n    tags: ['drinks'],\n    description: 'clinking beer mugs',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥂',\n    names: ['clinking_glasses'],\n    tags: ['cheers', 'toast'],\n    description: 'clinking glasses',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥃',\n    names: ['tumbler_glass'],\n    tags: ['whisky'],\n    description: 'tumbler glass',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫗',\n    names: ['pouring_liquid'],\n    tags: [],\n    description: 'pouring liquid',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥤',\n    names: ['cup_with_straw'],\n    tags: [],\n    description: 'cup with straw',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧋',\n    names: ['bubble_tea'],\n    tags: [],\n    description: 'bubble tea',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧃',\n    names: ['beverage_box'],\n    tags: [],\n    description: 'beverage box',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧉',\n    names: ['mate'],\n    tags: [],\n    description: 'mate',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🧊',\n    names: ['ice_cube'],\n    tags: [],\n    description: 'ice',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥢',\n    names: ['chopsticks'],\n    tags: [],\n    description: 'chopsticks',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍽️',\n    names: ['plate_with_cutlery'],\n    tags: ['dining', 'dinner'],\n    description: 'fork and knife with plate',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🍴',\n    names: ['fork_and_knife'],\n    tags: ['cutlery'],\n    description: 'fork and knife',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🥄',\n    names: ['spoon'],\n    tags: [],\n    description: 'spoon',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🔪',\n    names: ['hocho', 'knife'],\n    tags: ['cut', 'chop'],\n    description: 'kitchen knife',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🫙',\n    names: ['jar'],\n    tags: [],\n    description: 'jar',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🏺',\n    names: ['amphora'],\n    tags: [],\n    description: 'amphora',\n    category: 'Food & Drink'\n  },\n  {\n    emoji: '🌍',\n    names: ['earth_africa'],\n    tags: ['globe', 'world', 'international'],\n    description: 'globe showing Europe-Africa',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌎',\n    names: ['earth_americas'],\n    tags: ['globe', 'world', 'international'],\n    description: 'globe showing Americas',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌏',\n    names: ['earth_asia'],\n    tags: ['globe', 'world', 'international'],\n    description: 'globe showing Asia-Australia',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌐',\n    names: ['globe_with_meridians'],\n    tags: ['world', 'global', 'international'],\n    description: 'globe with meridians',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🗺️',\n    names: ['world_map'],\n    tags: ['travel'],\n    description: 'world map',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🗾',\n    names: ['japan'],\n    tags: [],\n    description: 'map of Japan',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🧭',\n    names: ['compass'],\n    tags: [],\n    description: 'compass',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏔️',\n    names: ['mountain_snow'],\n    tags: [],\n    description: 'snow-capped mountain',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛰️',\n    names: ['mountain'],\n    tags: [],\n    description: 'mountain',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌋',\n    names: ['volcano'],\n    tags: [],\n    description: 'volcano',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🗻',\n    names: ['mount_fuji'],\n    tags: [],\n    description: 'mount fuji',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏕️',\n    names: ['camping'],\n    tags: [],\n    description: 'camping',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏖️',\n    names: ['beach_umbrella'],\n    tags: [],\n    description: 'beach with umbrella',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏜️',\n    names: ['desert'],\n    tags: [],\n    description: 'desert',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏝️',\n    names: ['desert_island'],\n    tags: [],\n    description: 'desert island',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏞️',\n    names: ['national_park'],\n    tags: [],\n    description: 'national park',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏟️',\n    names: ['stadium'],\n    tags: [],\n    description: 'stadium',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏛️',\n    names: ['classical_building'],\n    tags: [],\n    description: 'classical building',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏗️',\n    names: ['building_construction'],\n    tags: [],\n    description: 'building construction',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🧱',\n    names: ['bricks'],\n    tags: [],\n    description: 'brick',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🪨',\n    names: ['rock'],\n    tags: [],\n    description: 'rock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🪵',\n    names: ['wood'],\n    tags: [],\n    description: 'wood',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛖',\n    names: ['hut'],\n    tags: [],\n    description: 'hut',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏘️',\n    names: ['houses'],\n    tags: [],\n    description: 'houses',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏚️',\n    names: ['derelict_house'],\n    tags: [],\n    description: 'derelict house',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏠',\n    names: ['house'],\n    tags: [],\n    description: 'house',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏡',\n    names: ['house_with_garden'],\n    tags: [],\n    description: 'house with garden',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏢',\n    names: ['office'],\n    tags: [],\n    description: 'office building',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏣',\n    names: ['post_office'],\n    tags: [],\n    description: 'Japanese post office',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏤',\n    names: ['european_post_office'],\n    tags: [],\n    description: 'post office',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏥',\n    names: ['hospital'],\n    tags: [],\n    description: 'hospital',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏦',\n    names: ['bank'],\n    tags: [],\n    description: 'bank',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏨',\n    names: ['hotel'],\n    tags: [],\n    description: 'hotel',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏩',\n    names: ['love_hotel'],\n    tags: [],\n    description: 'love hotel',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏪',\n    names: ['convenience_store'],\n    tags: [],\n    description: 'convenience store',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏫',\n    names: ['school'],\n    tags: [],\n    description: 'school',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏬',\n    names: ['department_store'],\n    tags: [],\n    description: 'department store',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏭',\n    names: ['factory'],\n    tags: [],\n    description: 'factory',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏯',\n    names: ['japanese_castle'],\n    tags: [],\n    description: 'Japanese castle',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏰',\n    names: ['european_castle'],\n    tags: [],\n    description: 'castle',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '💒',\n    names: ['wedding'],\n    tags: ['marriage'],\n    description: 'wedding',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🗼',\n    names: ['tokyo_tower'],\n    tags: [],\n    description: 'Tokyo tower',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🗽',\n    names: ['statue_of_liberty'],\n    tags: [],\n    description: 'Statue of Liberty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛪',\n    names: ['church'],\n    tags: [],\n    description: 'church',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕌',\n    names: ['mosque'],\n    tags: [],\n    description: 'mosque',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛕',\n    names: ['hindu_temple'],\n    tags: [],\n    description: 'hindu temple',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕍',\n    names: ['synagogue'],\n    tags: [],\n    description: 'synagogue',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛩️',\n    names: ['shinto_shrine'],\n    tags: [],\n    description: 'shinto shrine',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕋',\n    names: ['kaaba'],\n    tags: [],\n    description: 'kaaba',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛲',\n    names: ['fountain'],\n    tags: [],\n    description: 'fountain',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛺',\n    names: ['tent'],\n    tags: ['camping'],\n    description: 'tent',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌁',\n    names: ['foggy'],\n    tags: ['karl'],\n    description: 'foggy',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌃',\n    names: ['night_with_stars'],\n    tags: [],\n    description: 'night with stars',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏙️',\n    names: ['cityscape'],\n    tags: ['skyline'],\n    description: 'cityscape',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌄',\n    names: ['sunrise_over_mountains'],\n    tags: [],\n    description: 'sunrise over mountains',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌅',\n    names: ['sunrise'],\n    tags: [],\n    description: 'sunrise',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌆',\n    names: ['city_sunset'],\n    tags: [],\n    description: 'cityscape at dusk',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌇',\n    names: ['city_sunrise'],\n    tags: [],\n    description: 'sunset',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌉',\n    names: ['bridge_at_night'],\n    tags: [],\n    description: 'bridge at night',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '♨️',\n    names: ['hotsprings'],\n    tags: [],\n    description: 'hot springs',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🎠',\n    names: ['carousel_horse'],\n    tags: [],\n    description: 'carousel horse',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛝',\n    names: ['playground_slide'],\n    tags: [],\n    description: 'playground slide',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🎡',\n    names: ['ferris_wheel'],\n    tags: [],\n    description: 'ferris wheel',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🎢',\n    names: ['roller_coaster'],\n    tags: [],\n    description: 'roller coaster',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '💈',\n    names: ['barber'],\n    tags: [],\n    description: 'barber pole',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🎪',\n    names: ['circus_tent'],\n    tags: [],\n    description: 'circus tent',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚂',\n    names: ['steam_locomotive'],\n    tags: ['train'],\n    description: 'locomotive',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚃',\n    names: ['railway_car'],\n    tags: [],\n    description: 'railway car',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚄',\n    names: ['bullettrain_side'],\n    tags: ['train'],\n    description: 'high-speed train',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚅',\n    names: ['bullettrain_front'],\n    tags: ['train'],\n    description: 'bullet train',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚆',\n    names: ['train2'],\n    tags: [],\n    description: 'train',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚇',\n    names: ['metro'],\n    tags: [],\n    description: 'metro',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚈',\n    names: ['light_rail'],\n    tags: [],\n    description: 'light rail',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚉',\n    names: ['station'],\n    tags: [],\n    description: 'station',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚊',\n    names: ['tram'],\n    tags: [],\n    description: 'tram',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚝',\n    names: ['monorail'],\n    tags: [],\n    description: 'monorail',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚞',\n    names: ['mountain_railway'],\n    tags: [],\n    description: 'mountain railway',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚋',\n    names: ['train'],\n    tags: [],\n    description: 'tram car',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚌',\n    names: ['bus'],\n    tags: [],\n    description: 'bus',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚍',\n    names: ['oncoming_bus'],\n    tags: [],\n    description: 'oncoming bus',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚎',\n    names: ['trolleybus'],\n    tags: [],\n    description: 'trolleybus',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚐',\n    names: ['minibus'],\n    tags: [],\n    description: 'minibus',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚑',\n    names: ['ambulance'],\n    tags: [],\n    description: 'ambulance',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚒',\n    names: ['fire_engine'],\n    tags: [],\n    description: 'fire engine',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚓',\n    names: ['police_car'],\n    tags: [],\n    description: 'police car',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚔',\n    names: ['oncoming_police_car'],\n    tags: [],\n    description: 'oncoming police car',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚕',\n    names: ['taxi'],\n    tags: [],\n    description: 'taxi',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚖',\n    names: ['oncoming_taxi'],\n    tags: [],\n    description: 'oncoming taxi',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚗',\n    names: ['car', 'red_car'],\n    tags: [],\n    description: 'automobile',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚘',\n    names: ['oncoming_automobile'],\n    tags: [],\n    description: 'oncoming automobile',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚙',\n    names: ['blue_car'],\n    tags: [],\n    description: 'sport utility vehicle',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛻',\n    names: ['pickup_truck'],\n    tags: [],\n    description: 'pickup truck',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚚',\n    names: ['truck'],\n    tags: [],\n    description: 'delivery truck',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚛',\n    names: ['articulated_lorry'],\n    tags: [],\n    description: 'articulated lorry',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚜',\n    names: ['tractor'],\n    tags: [],\n    description: 'tractor',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏎️',\n    names: ['racing_car'],\n    tags: [],\n    description: 'racing car',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🏍️',\n    names: ['motorcycle'],\n    tags: [],\n    description: 'motorcycle',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛵',\n    names: ['motor_scooter'],\n    tags: [],\n    description: 'motor scooter',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🦽',\n    names: ['manual_wheelchair'],\n    tags: [],\n    description: 'manual wheelchair',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🦼',\n    names: ['motorized_wheelchair'],\n    tags: [],\n    description: 'motorized wheelchair',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛺',\n    names: ['auto_rickshaw'],\n    tags: [],\n    description: 'auto rickshaw',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚲',\n    names: ['bike'],\n    tags: ['bicycle'],\n    description: 'bicycle',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛴',\n    names: ['kick_scooter'],\n    tags: [],\n    description: 'kick scooter',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛹',\n    names: ['skateboard'],\n    tags: [],\n    description: 'skateboard',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛼',\n    names: ['roller_skate'],\n    tags: [],\n    description: 'roller skate',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚏',\n    names: ['busstop'],\n    tags: [],\n    description: 'bus stop',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛣️',\n    names: ['motorway'],\n    tags: [],\n    description: 'motorway',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛤️',\n    names: ['railway_track'],\n    tags: [],\n    description: 'railway track',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛢️',\n    names: ['oil_drum'],\n    tags: [],\n    description: 'oil drum',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛽',\n    names: ['fuelpump'],\n    tags: [],\n    description: 'fuel pump',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛞',\n    names: ['wheel'],\n    tags: [],\n    description: 'wheel',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚨',\n    names: ['rotating_light'],\n    tags: ['911', 'emergency'],\n    description: 'police car light',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚥',\n    names: ['traffic_light'],\n    tags: [],\n    description: 'horizontal traffic light',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚦',\n    names: ['vertical_traffic_light'],\n    tags: ['semaphore'],\n    description: 'vertical traffic light',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛑',\n    names: ['stop_sign'],\n    tags: [],\n    description: 'stop sign',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚧',\n    names: ['construction'],\n    tags: ['wip'],\n    description: 'construction',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⚓',\n    names: ['anchor'],\n    tags: ['ship'],\n    description: 'anchor',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛟',\n    names: ['ring_buoy'],\n    tags: ['life preserver'],\n    description: 'ring buoy',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛵',\n    names: ['boat', 'sailboat'],\n    tags: [],\n    description: 'sailboat',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛶',\n    names: ['canoe'],\n    tags: [],\n    description: 'canoe',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚤',\n    names: ['speedboat'],\n    tags: ['ship'],\n    description: 'speedboat',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛳️',\n    names: ['passenger_ship'],\n    tags: ['cruise'],\n    description: 'passenger ship',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛴️',\n    names: ['ferry'],\n    tags: [],\n    description: 'ferry',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛥️',\n    names: ['motor_boat'],\n    tags: [],\n    description: 'motor boat',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚢',\n    names: ['ship'],\n    tags: [],\n    description: 'ship',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '✈️',\n    names: ['airplane'],\n    tags: ['flight'],\n    description: 'airplane',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛩️',\n    names: ['small_airplane'],\n    tags: ['flight'],\n    description: 'small airplane',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛫',\n    names: ['flight_departure'],\n    tags: [],\n    description: 'airplane departure',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛬',\n    names: ['flight_arrival'],\n    tags: [],\n    description: 'airplane arrival',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🪂',\n    names: ['parachute'],\n    tags: [],\n    description: 'parachute',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '💺',\n    names: ['seat'],\n    tags: [],\n    description: 'seat',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚁',\n    names: ['helicopter'],\n    tags: [],\n    description: 'helicopter',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚟',\n    names: ['suspension_railway'],\n    tags: [],\n    description: 'suspension railway',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚠',\n    names: ['mountain_cableway'],\n    tags: [],\n    description: 'mountain cableway',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚡',\n    names: ['aerial_tramway'],\n    tags: [],\n    description: 'aerial tramway',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛰️',\n    names: ['artificial_satellite'],\n    tags: ['orbit', 'space'],\n    description: 'satellite',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🚀',\n    names: ['rocket'],\n    tags: ['ship', 'launch'],\n    description: 'rocket',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛸',\n    names: ['flying_saucer'],\n    tags: ['ufo'],\n    description: 'flying saucer',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🛎️',\n    names: ['bellhop_bell'],\n    tags: [],\n    description: 'bellhop bell',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🧳',\n    names: ['luggage'],\n    tags: [],\n    description: 'luggage',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⌛',\n    names: ['hourglass'],\n    tags: ['time'],\n    description: 'hourglass done',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⏳',\n    names: ['hourglass_flowing_sand'],\n    tags: ['time'],\n    description: 'hourglass not done',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⌚',\n    names: ['watch'],\n    tags: ['time'],\n    description: 'watch',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⏰',\n    names: ['alarm_clock'],\n    tags: ['morning'],\n    description: 'alarm clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⏱️',\n    names: ['stopwatch'],\n    tags: [],\n    description: 'stopwatch',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⏲️',\n    names: ['timer_clock'],\n    tags: [],\n    description: 'timer clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕰️',\n    names: ['mantelpiece_clock'],\n    tags: [],\n    description: 'mantelpiece clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕛',\n    names: ['clock12'],\n    tags: [],\n    description: 'twelve o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕧',\n    names: ['clock1230'],\n    tags: [],\n    description: 'twelve-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕐',\n    names: ['clock1'],\n    tags: [],\n    description: 'one o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕜',\n    names: ['clock130'],\n    tags: [],\n    description: 'one-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕑',\n    names: ['clock2'],\n    tags: [],\n    description: 'two o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕝',\n    names: ['clock230'],\n    tags: [],\n    description: 'two-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕒',\n    names: ['clock3'],\n    tags: [],\n    description: 'three o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕞',\n    names: ['clock330'],\n    tags: [],\n    description: 'three-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕓',\n    names: ['clock4'],\n    tags: [],\n    description: 'four o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕟',\n    names: ['clock430'],\n    tags: [],\n    description: 'four-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕔',\n    names: ['clock5'],\n    tags: [],\n    description: 'five o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕠',\n    names: ['clock530'],\n    tags: [],\n    description: 'five-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕕',\n    names: ['clock6'],\n    tags: [],\n    description: 'six o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕡',\n    names: ['clock630'],\n    tags: [],\n    description: 'six-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕖',\n    names: ['clock7'],\n    tags: [],\n    description: 'seven o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕢',\n    names: ['clock730'],\n    tags: [],\n    description: 'seven-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕗',\n    names: ['clock8'],\n    tags: [],\n    description: 'eight o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕣',\n    names: ['clock830'],\n    tags: [],\n    description: 'eight-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕘',\n    names: ['clock9'],\n    tags: [],\n    description: 'nine o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕤',\n    names: ['clock930'],\n    tags: [],\n    description: 'nine-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕙',\n    names: ['clock10'],\n    tags: [],\n    description: 'ten o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕥',\n    names: ['clock1030'],\n    tags: [],\n    description: 'ten-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕚',\n    names: ['clock11'],\n    tags: [],\n    description: 'eleven o’clock',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🕦',\n    names: ['clock1130'],\n    tags: [],\n    description: 'eleven-thirty',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌑',\n    names: ['new_moon'],\n    tags: [],\n    description: 'new moon',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌒',\n    names: ['waxing_crescent_moon'],\n    tags: [],\n    description: 'waxing crescent moon',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌓',\n    names: ['first_quarter_moon'],\n    tags: [],\n    description: 'first quarter moon',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌔',\n    names: ['moon', 'waxing_gibbous_moon'],\n    tags: [],\n    description: 'waxing gibbous moon',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌕',\n    names: ['full_moon'],\n    tags: [],\n    description: 'full moon',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌖',\n    names: ['waning_gibbous_moon'],\n    tags: [],\n    description: 'waning gibbous moon',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌗',\n    names: ['last_quarter_moon'],\n    tags: [],\n    description: 'last quarter moon',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌘',\n    names: ['waning_crescent_moon'],\n    tags: [],\n    description: 'waning crescent moon',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌙',\n    names: ['crescent_moon'],\n    tags: ['night'],\n    description: 'crescent moon',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌚',\n    names: ['new_moon_with_face'],\n    tags: [],\n    description: 'new moon face',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌛',\n    names: ['first_quarter_moon_with_face'],\n    tags: [],\n    description: 'first quarter moon face',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌜',\n    names: ['last_quarter_moon_with_face'],\n    tags: [],\n    description: 'last quarter moon face',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌡️',\n    names: ['thermometer'],\n    tags: [],\n    description: 'thermometer',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '☀️',\n    names: ['sunny'],\n    tags: ['weather'],\n    description: 'sun',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌝',\n    names: ['full_moon_with_face'],\n    tags: [],\n    description: 'full moon face',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌞',\n    names: ['sun_with_face'],\n    tags: ['summer'],\n    description: 'sun with face',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🪐',\n    names: ['ringed_planet'],\n    tags: [],\n    description: 'ringed planet',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⭐',\n    names: ['star'],\n    tags: [],\n    description: 'star',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌟',\n    names: ['star2'],\n    tags: [],\n    description: 'glowing star',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌠',\n    names: ['stars'],\n    tags: [],\n    description: 'shooting star',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌌',\n    names: ['milky_way'],\n    tags: [],\n    description: 'milky way',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '☁️',\n    names: ['cloud'],\n    tags: [],\n    description: 'cloud',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛅',\n    names: ['partly_sunny'],\n    tags: ['weather', 'cloud'],\n    description: 'sun behind cloud',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛈️',\n    names: ['cloud_with_lightning_and_rain'],\n    tags: [],\n    description: 'cloud with lightning and rain',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌤️',\n    names: ['sun_behind_small_cloud'],\n    tags: [],\n    description: 'sun behind small cloud',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌥️',\n    names: ['sun_behind_large_cloud'],\n    tags: [],\n    description: 'sun behind large cloud',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌦️',\n    names: ['sun_behind_rain_cloud'],\n    tags: [],\n    description: 'sun behind rain cloud',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌧️',\n    names: ['cloud_with_rain'],\n    tags: [],\n    description: 'cloud with rain',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌨️',\n    names: ['cloud_with_snow'],\n    tags: [],\n    description: 'cloud with snow',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌩️',\n    names: ['cloud_with_lightning'],\n    tags: [],\n    description: 'cloud with lightning',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌪️',\n    names: ['tornado'],\n    tags: [],\n    description: 'tornado',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌫️',\n    names: ['fog'],\n    tags: [],\n    description: 'fog',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌬️',\n    names: ['wind_face'],\n    tags: [],\n    description: 'wind face',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌀',\n    names: ['cyclone'],\n    tags: ['swirl'],\n    description: 'cyclone',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌈',\n    names: ['rainbow'],\n    tags: [],\n    description: 'rainbow',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌂',\n    names: ['closed_umbrella'],\n    tags: ['weather', 'rain'],\n    description: 'closed umbrella',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '☂️',\n    names: ['open_umbrella'],\n    tags: [],\n    description: 'umbrella',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '☔',\n    names: ['umbrella'],\n    tags: ['rain', 'weather'],\n    description: 'umbrella with rain drops',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛱️',\n    names: ['parasol_on_ground'],\n    tags: ['beach_umbrella'],\n    description: 'umbrella on ground',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⚡',\n    names: ['zap'],\n    tags: ['lightning', 'thunder'],\n    description: 'high voltage',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '❄️',\n    names: ['snowflake'],\n    tags: ['winter', 'cold', 'weather'],\n    description: 'snowflake',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '☃️',\n    names: ['snowman_with_snow'],\n    tags: ['winter', 'christmas'],\n    description: 'snowman',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '⛄',\n    names: ['snowman'],\n    tags: ['winter'],\n    description: 'snowman without snow',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '☄️',\n    names: ['comet'],\n    tags: [],\n    description: 'comet',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🔥',\n    names: ['fire'],\n    tags: ['burn'],\n    description: 'fire',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '💧',\n    names: ['droplet'],\n    tags: ['water'],\n    description: 'droplet',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🌊',\n    names: ['ocean'],\n    tags: ['sea'],\n    description: 'water wave',\n    category: 'Travel & Places'\n  },\n  {\n    emoji: '🎃',\n    names: ['jack_o_lantern'],\n    tags: ['halloween'],\n    description: 'jack-o-lantern',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎄',\n    names: ['christmas_tree'],\n    tags: [],\n    description: 'Christmas tree',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎆',\n    names: ['fireworks'],\n    tags: ['festival', 'celebration'],\n    description: 'fireworks',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎇',\n    names: ['sparkler'],\n    tags: [],\n    description: 'sparkler',\n    category: 'Activities'\n  },\n  {\n    emoji: '🧨',\n    names: ['firecracker'],\n    tags: [],\n    description: 'firecracker',\n    category: 'Activities'\n  },\n  {\n    emoji: '✨',\n    names: ['sparkles'],\n    tags: ['shiny'],\n    description: 'sparkles',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎈',\n    names: ['balloon'],\n    tags: ['party', 'birthday'],\n    description: 'balloon',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎉',\n    names: ['tada'],\n    tags: ['hooray', 'party'],\n    description: 'party popper',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎊',\n    names: ['confetti_ball'],\n    tags: [],\n    description: 'confetti ball',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎋',\n    names: ['tanabata_tree'],\n    tags: [],\n    description: 'tanabata tree',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎍',\n    names: ['bamboo'],\n    tags: [],\n    description: 'pine decoration',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎎',\n    names: ['dolls'],\n    tags: [],\n    description: 'Japanese dolls',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎏',\n    names: ['flags'],\n    tags: [],\n    description: 'carp streamer',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎐',\n    names: ['wind_chime'],\n    tags: [],\n    description: 'wind chime',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎑',\n    names: ['rice_scene'],\n    tags: [],\n    description: 'moon viewing ceremony',\n    category: 'Activities'\n  },\n  {\n    emoji: '🧧',\n    names: ['red_envelope'],\n    tags: [],\n    description: 'red envelope',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎀',\n    names: ['ribbon'],\n    tags: [],\n    description: 'ribbon',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎁',\n    names: ['gift'],\n    tags: ['present', 'birthday', 'christmas'],\n    description: 'wrapped gift',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎗️',\n    names: ['reminder_ribbon'],\n    tags: [],\n    description: 'reminder ribbon',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎟️',\n    names: ['tickets'],\n    tags: [],\n    description: 'admission tickets',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎫',\n    names: ['ticket'],\n    tags: [],\n    description: 'ticket',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎖️',\n    names: ['medal_military'],\n    tags: [],\n    description: 'military medal',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏆',\n    names: ['trophy'],\n    tags: ['award', 'contest', 'winner'],\n    description: 'trophy',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏅',\n    names: ['medal_sports'],\n    tags: ['gold', 'winner'],\n    description: 'sports medal',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥇',\n    names: ['1st_place_medal'],\n    tags: ['gold'],\n    description: '1st place medal',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥈',\n    names: ['2nd_place_medal'],\n    tags: ['silver'],\n    description: '2nd place medal',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥉',\n    names: ['3rd_place_medal'],\n    tags: ['bronze'],\n    description: '3rd place medal',\n    category: 'Activities'\n  },\n  {\n    emoji: '⚽',\n    names: ['soccer'],\n    tags: ['sports'],\n    description: 'soccer ball',\n    category: 'Activities'\n  },\n  {\n    emoji: '⚾',\n    names: ['baseball'],\n    tags: ['sports'],\n    description: 'baseball',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥎',\n    names: ['softball'],\n    tags: [],\n    description: 'softball',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏀',\n    names: ['basketball'],\n    tags: ['sports'],\n    description: 'basketball',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏐',\n    names: ['volleyball'],\n    tags: [],\n    description: 'volleyball',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏈',\n    names: ['football'],\n    tags: ['sports'],\n    description: 'american football',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏉',\n    names: ['rugby_football'],\n    tags: [],\n    description: 'rugby football',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎾',\n    names: ['tennis'],\n    tags: ['sports'],\n    description: 'tennis',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥏',\n    names: ['flying_disc'],\n    tags: [],\n    description: 'flying disc',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎳',\n    names: ['bowling'],\n    tags: [],\n    description: 'bowling',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏏',\n    names: ['cricket_game'],\n    tags: [],\n    description: 'cricket game',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏑',\n    names: ['field_hockey'],\n    tags: [],\n    description: 'field hockey',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏒',\n    names: ['ice_hockey'],\n    tags: [],\n    description: 'ice hockey',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥍',\n    names: ['lacrosse'],\n    tags: [],\n    description: 'lacrosse',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏓',\n    names: ['ping_pong'],\n    tags: [],\n    description: 'ping pong',\n    category: 'Activities'\n  },\n  {\n    emoji: '🏸',\n    names: ['badminton'],\n    tags: [],\n    description: 'badminton',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥊',\n    names: ['boxing_glove'],\n    tags: [],\n    description: 'boxing glove',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥋',\n    names: ['martial_arts_uniform'],\n    tags: [],\n    description: 'martial arts uniform',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥅',\n    names: ['goal_net'],\n    tags: [],\n    description: 'goal net',\n    category: 'Activities'\n  },\n  {\n    emoji: '⛳',\n    names: ['golf'],\n    tags: [],\n    description: 'flag in hole',\n    category: 'Activities'\n  },\n  {\n    emoji: '⛸️',\n    names: ['ice_skate'],\n    tags: ['skating'],\n    description: 'ice skate',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎣',\n    names: ['fishing_pole_and_fish'],\n    tags: [],\n    description: 'fishing pole',\n    category: 'Activities'\n  },\n  {\n    emoji: '🤿',\n    names: ['diving_mask'],\n    tags: [],\n    description: 'diving mask',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎽',\n    names: ['running_shirt_with_sash'],\n    tags: ['marathon'],\n    description: 'running shirt',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎿',\n    names: ['ski'],\n    tags: [],\n    description: 'skis',\n    category: 'Activities'\n  },\n  {\n    emoji: '🛷',\n    names: ['sled'],\n    tags: [],\n    description: 'sled',\n    category: 'Activities'\n  },\n  {\n    emoji: '🥌',\n    names: ['curling_stone'],\n    tags: [],\n    description: 'curling stone',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎯',\n    names: ['dart'],\n    tags: ['target'],\n    description: 'bullseye',\n    category: 'Activities'\n  },\n  {\n    emoji: '🪀',\n    names: ['yo_yo'],\n    tags: [],\n    description: 'yo-yo',\n    category: 'Activities'\n  },\n  {\n    emoji: '🪁',\n    names: ['kite'],\n    tags: [],\n    description: 'kite',\n    category: 'Activities'\n  },\n  {\n    emoji: '🔫',\n    names: ['gun'],\n    tags: ['shoot', 'weapon'],\n    description: 'water pistol',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎱',\n    names: ['8ball'],\n    tags: ['pool', 'billiards'],\n    description: 'pool 8 ball',\n    category: 'Activities'\n  },\n  {\n    emoji: '🔮',\n    names: ['crystal_ball'],\n    tags: ['fortune'],\n    description: 'crystal ball',\n    category: 'Activities'\n  },\n  {\n    emoji: '🪄',\n    names: ['magic_wand'],\n    tags: [],\n    description: 'magic wand',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎮',\n    names: ['video_game'],\n    tags: ['play', 'controller', 'console'],\n    description: 'video game',\n    category: 'Activities'\n  },\n  {\n    emoji: '🕹️',\n    names: ['joystick'],\n    tags: [],\n    description: 'joystick',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎰',\n    names: ['slot_machine'],\n    tags: [],\n    description: 'slot machine',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎲',\n    names: ['game_die'],\n    tags: ['dice', 'gambling'],\n    description: 'game die',\n    category: 'Activities'\n  },\n  {\n    emoji: '🧩',\n    names: ['jigsaw'],\n    tags: [],\n    description: 'puzzle piece',\n    category: 'Activities'\n  },\n  {\n    emoji: '🧸',\n    names: ['teddy_bear'],\n    tags: [],\n    description: 'teddy bear',\n    category: 'Activities'\n  },\n  {\n    emoji: '🪅',\n    names: ['pinata'],\n    tags: [],\n    description: 'piñata',\n    category: 'Activities'\n  },\n  {\n    emoji: '🪩',\n    names: ['mirror_ball'],\n    tags: ['disco', 'party'],\n    description: 'mirror ball',\n    category: 'Activities'\n  },\n  {\n    emoji: '🪆',\n    names: ['nesting_dolls'],\n    tags: [],\n    description: 'nesting dolls',\n    category: 'Activities'\n  },\n  {\n    emoji: '♠️',\n    names: ['spades'],\n    tags: [],\n    description: 'spade suit',\n    category: 'Activities'\n  },\n  {\n    emoji: '♥️',\n    names: ['hearts'],\n    tags: [],\n    description: 'heart suit',\n    category: 'Activities'\n  },\n  {\n    emoji: '♦️',\n    names: ['diamonds'],\n    tags: [],\n    description: 'diamond suit',\n    category: 'Activities'\n  },\n  {\n    emoji: '♣️',\n    names: ['clubs'],\n    tags: [],\n    description: 'club suit',\n    category: 'Activities'\n  },\n  {\n    emoji: '♟️',\n    names: ['chess_pawn'],\n    tags: [],\n    description: 'chess pawn',\n    category: 'Activities'\n  },\n  {\n    emoji: '🃏',\n    names: ['black_joker'],\n    tags: [],\n    description: 'joker',\n    category: 'Activities'\n  },\n  {\n    emoji: '🀄',\n    names: ['mahjong'],\n    tags: [],\n    description: 'mahjong red dragon',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎴',\n    names: ['flower_playing_cards'],\n    tags: [],\n    description: 'flower playing cards',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎭',\n    names: ['performing_arts'],\n    tags: ['theater', 'drama'],\n    description: 'performing arts',\n    category: 'Activities'\n  },\n  {\n    emoji: '🖼️',\n    names: ['framed_picture'],\n    tags: [],\n    description: 'framed picture',\n    category: 'Activities'\n  },\n  {\n    emoji: '🎨',\n    names: ['art'],\n    tags: ['design', 'paint'],\n    description: 'artist palette',\n    category: 'Activities'\n  },\n  {\n    emoji: '🧵',\n    names: ['thread'],\n    tags: [],\n    description: 'thread',\n    category: 'Activities'\n  },\n  {\n    emoji: '🪡',\n    names: ['sewing_needle'],\n    tags: [],\n    description: 'sewing needle',\n    category: 'Activities'\n  },\n  {\n    emoji: '🧶',\n    names: ['yarn'],\n    tags: [],\n    description: 'yarn',\n    category: 'Activities'\n  },\n  {\n    emoji: '🪢',\n    names: ['knot'],\n    tags: [],\n    description: 'knot',\n    category: 'Activities'\n  },\n  {\n    emoji: '👓',\n    names: ['eyeglasses'],\n    tags: ['glasses'],\n    description: 'glasses',\n    category: 'Objects'\n  },\n  {\n    emoji: '🕶️',\n    names: ['dark_sunglasses'],\n    tags: [],\n    description: 'sunglasses',\n    category: 'Objects'\n  },\n  {\n    emoji: '🥽',\n    names: ['goggles'],\n    tags: [],\n    description: 'goggles',\n    category: 'Objects'\n  },\n  {\n    emoji: '🥼',\n    names: ['lab_coat'],\n    tags: [],\n    description: 'lab coat',\n    category: 'Objects'\n  },\n  {\n    emoji: '🦺',\n    names: ['safety_vest'],\n    tags: [],\n    description: 'safety vest',\n    category: 'Objects'\n  },\n  {\n    emoji: '👔',\n    names: ['necktie'],\n    tags: ['shirt', 'formal'],\n    description: 'necktie',\n    category: 'Objects'\n  },\n  {\n    emoji: '👕',\n    names: ['shirt', 'tshirt'],\n    tags: [],\n    description: 't-shirt',\n    category: 'Objects'\n  },\n  {\n    emoji: '👖',\n    names: ['jeans'],\n    tags: ['pants'],\n    description: 'jeans',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧣',\n    names: ['scarf'],\n    tags: [],\n    description: 'scarf',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧤',\n    names: ['gloves'],\n    tags: [],\n    description: 'gloves',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧥',\n    names: ['coat'],\n    tags: [],\n    description: 'coat',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧦',\n    names: ['socks'],\n    tags: [],\n    description: 'socks',\n    category: 'Objects'\n  },\n  {\n    emoji: '👗',\n    names: ['dress'],\n    tags: [],\n    description: 'dress',\n    category: 'Objects'\n  },\n  {\n    emoji: '👘',\n    names: ['kimono'],\n    tags: [],\n    description: 'kimono',\n    category: 'Objects'\n  },\n  {\n    emoji: '🥻',\n    names: ['sari'],\n    tags: [],\n    description: 'sari',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩱',\n    names: ['one_piece_swimsuit'],\n    tags: [],\n    description: 'one-piece swimsuit',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩲',\n    names: ['swim_brief'],\n    tags: [],\n    description: 'briefs',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩳',\n    names: ['shorts'],\n    tags: [],\n    description: 'shorts',\n    category: 'Objects'\n  },\n  {\n    emoji: '👙',\n    names: ['bikini'],\n    tags: ['beach'],\n    description: 'bikini',\n    category: 'Objects'\n  },\n  {\n    emoji: '👚',\n    names: ['womans_clothes'],\n    tags: [],\n    description: 'woman’s clothes',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪭',\n    names: ['folding_hand_fan'],\n    tags: ['sensu'],\n    description: 'folding hand fan',\n    category: 'Objects'\n  },\n  {\n    emoji: '👛',\n    names: ['purse'],\n    tags: [],\n    description: 'purse',\n    category: 'Objects'\n  },\n  {\n    emoji: '👜',\n    names: ['handbag'],\n    tags: ['bag'],\n    description: 'handbag',\n    category: 'Objects'\n  },\n  {\n    emoji: '👝',\n    names: ['pouch'],\n    tags: ['bag'],\n    description: 'clutch bag',\n    category: 'Objects'\n  },\n  {\n    emoji: '🛍️',\n    names: ['shopping'],\n    tags: ['bags'],\n    description: 'shopping bags',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎒',\n    names: ['school_satchel'],\n    tags: [],\n    description: 'backpack',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩴',\n    names: ['thong_sandal'],\n    tags: [],\n    description: 'thong sandal',\n    category: 'Objects'\n  },\n  {\n    emoji: '👞',\n    names: ['mans_shoe', 'shoe'],\n    tags: [],\n    description: 'man’s shoe',\n    category: 'Objects'\n  },\n  {\n    emoji: '👟',\n    names: ['athletic_shoe'],\n    tags: ['sneaker', 'sport', 'running'],\n    description: 'running shoe',\n    category: 'Objects'\n  },\n  {\n    emoji: '🥾',\n    names: ['hiking_boot'],\n    tags: [],\n    description: 'hiking boot',\n    category: 'Objects'\n  },\n  {\n    emoji: '🥿',\n    names: ['flat_shoe'],\n    tags: [],\n    description: 'flat shoe',\n    category: 'Objects'\n  },\n  {\n    emoji: '👠',\n    names: ['high_heel'],\n    tags: ['shoe'],\n    description: 'high-heeled shoe',\n    category: 'Objects'\n  },\n  {\n    emoji: '👡',\n    names: ['sandal'],\n    tags: ['shoe'],\n    description: 'woman’s sandal',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩰',\n    names: ['ballet_shoes'],\n    tags: [],\n    description: 'ballet shoes',\n    category: 'Objects'\n  },\n  {\n    emoji: '👢',\n    names: ['boot'],\n    tags: [],\n    description: 'woman’s boot',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪮',\n    names: ['hair_pick'],\n    tags: [],\n    description: 'hair pick',\n    category: 'Objects'\n  },\n  {\n    emoji: '👑',\n    names: ['crown'],\n    tags: ['king', 'queen', 'royal'],\n    description: 'crown',\n    category: 'Objects'\n  },\n  {\n    emoji: '👒',\n    names: ['womans_hat'],\n    tags: [],\n    description: 'woman’s hat',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎩',\n    names: ['tophat'],\n    tags: ['hat', 'classy'],\n    description: 'top hat',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎓',\n    names: ['mortar_board'],\n    tags: ['education', 'college', 'university', 'graduation'],\n    description: 'graduation cap',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧢',\n    names: ['billed_cap'],\n    tags: [],\n    description: 'billed cap',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪖',\n    names: ['military_helmet'],\n    tags: [],\n    description: 'military helmet',\n    category: 'Objects'\n  },\n  {\n    emoji: '⛑️',\n    names: ['rescue_worker_helmet'],\n    tags: [],\n    description: 'rescue worker’s helmet',\n    category: 'Objects'\n  },\n  {\n    emoji: '📿',\n    names: ['prayer_beads'],\n    tags: [],\n    description: 'prayer beads',\n    category: 'Objects'\n  },\n  {\n    emoji: '💄',\n    names: ['lipstick'],\n    tags: ['makeup'],\n    description: 'lipstick',\n    category: 'Objects'\n  },\n  {\n    emoji: '💍',\n    names: ['ring'],\n    tags: ['wedding', 'marriage', 'engaged'],\n    description: 'ring',\n    category: 'Objects'\n  },\n  {\n    emoji: '💎',\n    names: ['gem'],\n    tags: ['diamond'],\n    description: 'gem stone',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔇',\n    names: ['mute'],\n    tags: ['sound', 'volume'],\n    description: 'muted speaker',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔈',\n    names: ['speaker'],\n    tags: [],\n    description: 'speaker low volume',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔉',\n    names: ['sound'],\n    tags: ['volume'],\n    description: 'speaker medium volume',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔊',\n    names: ['loud_sound'],\n    tags: ['volume'],\n    description: 'speaker high volume',\n    category: 'Objects'\n  },\n  {\n    emoji: '📢',\n    names: ['loudspeaker'],\n    tags: ['announcement'],\n    description: 'loudspeaker',\n    category: 'Objects'\n  },\n  {\n    emoji: '📣',\n    names: ['mega'],\n    tags: [],\n    description: 'megaphone',\n    category: 'Objects'\n  },\n  {\n    emoji: '📯',\n    names: ['postal_horn'],\n    tags: [],\n    description: 'postal horn',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔔',\n    names: ['bell'],\n    tags: ['sound', 'notification'],\n    description: 'bell',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔕',\n    names: ['no_bell'],\n    tags: ['volume', 'off'],\n    description: 'bell with slash',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎼',\n    names: ['musical_score'],\n    tags: [],\n    description: 'musical score',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎵',\n    names: ['musical_note'],\n    tags: [],\n    description: 'musical note',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎶',\n    names: ['notes'],\n    tags: ['music'],\n    description: 'musical notes',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎙️',\n    names: ['studio_microphone'],\n    tags: ['podcast'],\n    description: 'studio microphone',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎚️',\n    names: ['level_slider'],\n    tags: [],\n    description: 'level slider',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎛️',\n    names: ['control_knobs'],\n    tags: [],\n    description: 'control knobs',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎤',\n    names: ['microphone'],\n    tags: ['sing'],\n    description: 'microphone',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎧',\n    names: ['headphones'],\n    tags: ['music', 'earphones'],\n    description: 'headphone',\n    category: 'Objects'\n  },\n  {\n    emoji: '📻',\n    names: ['radio'],\n    tags: ['podcast'],\n    description: 'radio',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎷',\n    names: ['saxophone'],\n    tags: [],\n    description: 'saxophone',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪗',\n    names: ['accordion'],\n    tags: [],\n    description: 'accordion',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎸',\n    names: ['guitar'],\n    tags: ['rock'],\n    description: 'guitar',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎹',\n    names: ['musical_keyboard'],\n    tags: ['piano'],\n    description: 'musical keyboard',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎺',\n    names: ['trumpet'],\n    tags: [],\n    description: 'trumpet',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎻',\n    names: ['violin'],\n    tags: [],\n    description: 'violin',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪕',\n    names: ['banjo'],\n    tags: [],\n    description: 'banjo',\n    category: 'Objects'\n  },\n  {\n    emoji: '🥁',\n    names: ['drum'],\n    tags: [],\n    description: 'drum',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪘',\n    names: ['long_drum'],\n    tags: [],\n    description: 'long drum',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪇',\n    names: ['maracas'],\n    tags: ['shaker'],\n    description: 'maracas',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪈',\n    names: ['flute'],\n    tags: ['recorder'],\n    description: 'flute',\n    category: 'Objects'\n  },\n  {\n    emoji: '📱',\n    names: ['iphone'],\n    tags: ['smartphone', 'mobile'],\n    description: 'mobile phone',\n    category: 'Objects'\n  },\n  {\n    emoji: '📲',\n    names: ['calling'],\n    tags: ['call', 'incoming'],\n    description: 'mobile phone with arrow',\n    category: 'Objects'\n  },\n  {\n    emoji: '☎️',\n    names: ['phone', 'telephone'],\n    tags: [],\n    description: 'telephone',\n    category: 'Objects'\n  },\n  {\n    emoji: '📞',\n    names: ['telephone_receiver'],\n    tags: ['phone', 'call'],\n    description: 'telephone receiver',\n    category: 'Objects'\n  },\n  {\n    emoji: '📟',\n    names: ['pager'],\n    tags: [],\n    description: 'pager',\n    category: 'Objects'\n  },\n  {\n    emoji: '📠',\n    names: ['fax'],\n    tags: [],\n    description: 'fax machine',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔋',\n    names: ['battery'],\n    tags: ['power'],\n    description: 'battery',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪫',\n    names: ['low_battery'],\n    tags: [],\n    description: 'low battery',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔌',\n    names: ['electric_plug'],\n    tags: [],\n    description: 'electric plug',\n    category: 'Objects'\n  },\n  {\n    emoji: '💻',\n    names: ['computer'],\n    tags: ['desktop', 'screen'],\n    description: 'laptop',\n    category: 'Objects'\n  },\n  {\n    emoji: '🖥️',\n    names: ['desktop_computer'],\n    tags: [],\n    description: 'desktop computer',\n    category: 'Objects'\n  },\n  {\n    emoji: '🖨️',\n    names: ['printer'],\n    tags: [],\n    description: 'printer',\n    category: 'Objects'\n  },\n  {\n    emoji: '⌨️',\n    names: ['keyboard'],\n    tags: [],\n    description: 'keyboard',\n    category: 'Objects'\n  },\n  {\n    emoji: '🖱️',\n    names: ['computer_mouse'],\n    tags: [],\n    description: 'computer mouse',\n    category: 'Objects'\n  },\n  {\n    emoji: '🖲️',\n    names: ['trackball'],\n    tags: [],\n    description: 'trackball',\n    category: 'Objects'\n  },\n  {\n    emoji: '💽',\n    names: ['minidisc'],\n    tags: [],\n    description: 'computer disk',\n    category: 'Objects'\n  },\n  {\n    emoji: '💾',\n    names: ['floppy_disk'],\n    tags: ['save'],\n    description: 'floppy disk',\n    category: 'Objects'\n  },\n  {\n    emoji: '💿',\n    names: ['cd'],\n    tags: [],\n    description: 'optical disk',\n    category: 'Objects'\n  },\n  {\n    emoji: '📀',\n    names: ['dvd'],\n    tags: [],\n    description: 'dvd',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧮',\n    names: ['abacus'],\n    tags: [],\n    description: 'abacus',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎥',\n    names: ['movie_camera'],\n    tags: ['film', 'video'],\n    description: 'movie camera',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎞️',\n    names: ['film_strip'],\n    tags: [],\n    description: 'film frames',\n    category: 'Objects'\n  },\n  {\n    emoji: '📽️',\n    names: ['film_projector'],\n    tags: [],\n    description: 'film projector',\n    category: 'Objects'\n  },\n  {\n    emoji: '🎬',\n    names: ['clapper'],\n    tags: ['film'],\n    description: 'clapper board',\n    category: 'Objects'\n  },\n  {\n    emoji: '📺',\n    names: ['tv'],\n    tags: [],\n    description: 'television',\n    category: 'Objects'\n  },\n  {\n    emoji: '📷',\n    names: ['camera'],\n    tags: ['photo'],\n    description: 'camera',\n    category: 'Objects'\n  },\n  {\n    emoji: '📸',\n    names: ['camera_flash'],\n    tags: ['photo'],\n    description: 'camera with flash',\n    category: 'Objects'\n  },\n  {\n    emoji: '📹',\n    names: ['video_camera'],\n    tags: [],\n    description: 'video camera',\n    category: 'Objects'\n  },\n  {\n    emoji: '📼',\n    names: ['vhs'],\n    tags: [],\n    description: 'videocassette',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔍',\n    names: ['mag'],\n    tags: ['search', 'zoom'],\n    description: 'magnifying glass tilted left',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔎',\n    names: ['mag_right'],\n    tags: [],\n    description: 'magnifying glass tilted right',\n    category: 'Objects'\n  },\n  {\n    emoji: '🕯️',\n    names: ['candle'],\n    tags: [],\n    description: 'candle',\n    category: 'Objects'\n  },\n  {\n    emoji: '💡',\n    names: ['bulb'],\n    tags: ['idea', 'light'],\n    description: 'light bulb',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔦',\n    names: ['flashlight'],\n    tags: [],\n    description: 'flashlight',\n    category: 'Objects'\n  },\n  {\n    emoji: '🏮',\n    names: ['izakaya_lantern', 'lantern'],\n    tags: [],\n    description: 'red paper lantern',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪔',\n    names: ['diya_lamp'],\n    tags: [],\n    description: 'diya lamp',\n    category: 'Objects'\n  },\n  {\n    emoji: '📔',\n    names: ['notebook_with_decorative_cover'],\n    tags: [],\n    description: 'notebook with decorative cover',\n    category: 'Objects'\n  },\n  {\n    emoji: '📕',\n    names: ['closed_book'],\n    tags: [],\n    description: 'closed book',\n    category: 'Objects'\n  },\n  {\n    emoji: '📖',\n    names: ['book', 'open_book'],\n    tags: [],\n    description: 'open book',\n    category: 'Objects'\n  },\n  {\n    emoji: '📗',\n    names: ['green_book'],\n    tags: [],\n    description: 'green book',\n    category: 'Objects'\n  },\n  {\n    emoji: '📘',\n    names: ['blue_book'],\n    tags: [],\n    description: 'blue book',\n    category: 'Objects'\n  },\n  {\n    emoji: '📙',\n    names: ['orange_book'],\n    tags: [],\n    description: 'orange book',\n    category: 'Objects'\n  },\n  {\n    emoji: '📚',\n    names: ['books'],\n    tags: ['library'],\n    description: 'books',\n    category: 'Objects'\n  },\n  {\n    emoji: '📓',\n    names: ['notebook'],\n    tags: [],\n    description: 'notebook',\n    category: 'Objects'\n  },\n  {\n    emoji: '📒',\n    names: ['ledger'],\n    tags: [],\n    description: 'ledger',\n    category: 'Objects'\n  },\n  {\n    emoji: '📃',\n    names: ['page_with_curl'],\n    tags: [],\n    description: 'page with curl',\n    category: 'Objects'\n  },\n  {\n    emoji: '📜',\n    names: ['scroll'],\n    tags: ['document'],\n    description: 'scroll',\n    category: 'Objects'\n  },\n  {\n    emoji: '📄',\n    names: ['page_facing_up'],\n    tags: ['document'],\n    description: 'page facing up',\n    category: 'Objects'\n  },\n  {\n    emoji: '📰',\n    names: ['newspaper'],\n    tags: ['press'],\n    description: 'newspaper',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗞️',\n    names: ['newspaper_roll'],\n    tags: ['press'],\n    description: 'rolled-up newspaper',\n    category: 'Objects'\n  },\n  {\n    emoji: '📑',\n    names: ['bookmark_tabs'],\n    tags: [],\n    description: 'bookmark tabs',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔖',\n    names: ['bookmark'],\n    tags: [],\n    description: 'bookmark',\n    category: 'Objects'\n  },\n  {\n    emoji: '🏷️',\n    names: ['label'],\n    tags: ['tag'],\n    description: 'label',\n    category: 'Objects'\n  },\n  {\n    emoji: '💰',\n    names: ['moneybag'],\n    tags: ['dollar', 'cream'],\n    description: 'money bag',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪙',\n    names: ['coin'],\n    tags: [],\n    description: 'coin',\n    category: 'Objects'\n  },\n  {\n    emoji: '💴',\n    names: ['yen'],\n    tags: [],\n    description: 'yen banknote',\n    category: 'Objects'\n  },\n  {\n    emoji: '💵',\n    names: ['dollar'],\n    tags: ['money'],\n    description: 'dollar banknote',\n    category: 'Objects'\n  },\n  {\n    emoji: '💶',\n    names: ['euro'],\n    tags: [],\n    description: 'euro banknote',\n    category: 'Objects'\n  },\n  {\n    emoji: '💷',\n    names: ['pound'],\n    tags: [],\n    description: 'pound banknote',\n    category: 'Objects'\n  },\n  {\n    emoji: '💸',\n    names: ['money_with_wings'],\n    tags: ['dollar'],\n    description: 'money with wings',\n    category: 'Objects'\n  },\n  {\n    emoji: '💳',\n    names: ['credit_card'],\n    tags: ['subscription'],\n    description: 'credit card',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧾',\n    names: ['receipt'],\n    tags: [],\n    description: 'receipt',\n    category: 'Objects'\n  },\n  {\n    emoji: '💹',\n    names: ['chart'],\n    tags: [],\n    description: 'chart increasing with yen',\n    category: 'Objects'\n  },\n  {\n    emoji: '✉️',\n    names: ['envelope'],\n    tags: ['letter', 'email'],\n    description: 'envelope',\n    category: 'Objects'\n  },\n  {\n    emoji: '📧',\n    names: ['email', 'e-mail'],\n    tags: [],\n    description: 'e-mail',\n    category: 'Objects'\n  },\n  {\n    emoji: '📨',\n    names: ['incoming_envelope'],\n    tags: [],\n    description: 'incoming envelope',\n    category: 'Objects'\n  },\n  {\n    emoji: '📩',\n    names: ['envelope_with_arrow'],\n    tags: [],\n    description: 'envelope with arrow',\n    category: 'Objects'\n  },\n  {\n    emoji: '📤',\n    names: ['outbox_tray'],\n    tags: [],\n    description: 'outbox tray',\n    category: 'Objects'\n  },\n  {\n    emoji: '📥',\n    names: ['inbox_tray'],\n    tags: [],\n    description: 'inbox tray',\n    category: 'Objects'\n  },\n  {\n    emoji: '📦',\n    names: ['package'],\n    tags: ['shipping'],\n    description: 'package',\n    category: 'Objects'\n  },\n  {\n    emoji: '📫',\n    names: ['mailbox'],\n    tags: [],\n    description: 'closed mailbox with raised flag',\n    category: 'Objects'\n  },\n  {\n    emoji: '📪',\n    names: ['mailbox_closed'],\n    tags: [],\n    description: 'closed mailbox with lowered flag',\n    category: 'Objects'\n  },\n  {\n    emoji: '📬',\n    names: ['mailbox_with_mail'],\n    tags: [],\n    description: 'open mailbox with raised flag',\n    category: 'Objects'\n  },\n  {\n    emoji: '📭',\n    names: ['mailbox_with_no_mail'],\n    tags: [],\n    description: 'open mailbox with lowered flag',\n    category: 'Objects'\n  },\n  {\n    emoji: '📮',\n    names: ['postbox'],\n    tags: [],\n    description: 'postbox',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗳️',\n    names: ['ballot_box'],\n    tags: [],\n    description: 'ballot box with ballot',\n    category: 'Objects'\n  },\n  {\n    emoji: '✏️',\n    names: ['pencil2'],\n    tags: [],\n    description: 'pencil',\n    category: 'Objects'\n  },\n  {\n    emoji: '✒️',\n    names: ['black_nib'],\n    tags: [],\n    description: 'black nib',\n    category: 'Objects'\n  },\n  {\n    emoji: '🖋️',\n    names: ['fountain_pen'],\n    tags: [],\n    description: 'fountain pen',\n    category: 'Objects'\n  },\n  {\n    emoji: '🖊️',\n    names: ['pen'],\n    tags: [],\n    description: 'pen',\n    category: 'Objects'\n  },\n  {\n    emoji: '🖌️',\n    names: ['paintbrush'],\n    tags: [],\n    description: 'paintbrush',\n    category: 'Objects'\n  },\n  {\n    emoji: '🖍️',\n    names: ['crayon'],\n    tags: [],\n    description: 'crayon',\n    category: 'Objects'\n  },\n  {\n    emoji: '📝',\n    names: ['memo', 'pencil'],\n    tags: ['document', 'note'],\n    description: 'memo',\n    category: 'Objects'\n  },\n  {\n    emoji: '💼',\n    names: ['briefcase'],\n    tags: ['business'],\n    description: 'briefcase',\n    category: 'Objects'\n  },\n  {\n    emoji: '📁',\n    names: ['file_folder'],\n    tags: ['directory'],\n    description: 'file folder',\n    category: 'Objects'\n  },\n  {\n    emoji: '📂',\n    names: ['open_file_folder'],\n    tags: [],\n    description: 'open file folder',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗂️',\n    names: ['card_index_dividers'],\n    tags: [],\n    description: 'card index dividers',\n    category: 'Objects'\n  },\n  {\n    emoji: '📅',\n    names: ['date'],\n    tags: ['calendar', 'schedule'],\n    description: 'calendar',\n    category: 'Objects'\n  },\n  {\n    emoji: '📆',\n    names: ['calendar'],\n    tags: ['schedule'],\n    description: 'tear-off calendar',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗒️',\n    names: ['spiral_notepad'],\n    tags: [],\n    description: 'spiral notepad',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗓️',\n    names: ['spiral_calendar'],\n    tags: [],\n    description: 'spiral calendar',\n    category: 'Objects'\n  },\n  {\n    emoji: '📇',\n    names: ['card_index'],\n    tags: [],\n    description: 'card index',\n    category: 'Objects'\n  },\n  {\n    emoji: '📈',\n    names: ['chart_with_upwards_trend'],\n    tags: ['graph', 'metrics'],\n    description: 'chart increasing',\n    category: 'Objects'\n  },\n  {\n    emoji: '📉',\n    names: ['chart_with_downwards_trend'],\n    tags: ['graph', 'metrics'],\n    description: 'chart decreasing',\n    category: 'Objects'\n  },\n  {\n    emoji: '📊',\n    names: ['bar_chart'],\n    tags: ['stats', 'metrics'],\n    description: 'bar chart',\n    category: 'Objects'\n  },\n  {\n    emoji: '📋',\n    names: ['clipboard'],\n    tags: [],\n    description: 'clipboard',\n    category: 'Objects'\n  },\n  {\n    emoji: '📌',\n    names: ['pushpin'],\n    tags: ['location'],\n    description: 'pushpin',\n    category: 'Objects'\n  },\n  {\n    emoji: '📍',\n    names: ['round_pushpin'],\n    tags: ['location'],\n    description: 'round pushpin',\n    category: 'Objects'\n  },\n  {\n    emoji: '📎',\n    names: ['paperclip'],\n    tags: [],\n    description: 'paperclip',\n    category: 'Objects'\n  },\n  {\n    emoji: '🖇️',\n    names: ['paperclips'],\n    tags: [],\n    description: 'linked paperclips',\n    category: 'Objects'\n  },\n  {\n    emoji: '📏',\n    names: ['straight_ruler'],\n    tags: [],\n    description: 'straight ruler',\n    category: 'Objects'\n  },\n  {\n    emoji: '📐',\n    names: ['triangular_ruler'],\n    tags: [],\n    description: 'triangular ruler',\n    category: 'Objects'\n  },\n  {\n    emoji: '✂️',\n    names: ['scissors'],\n    tags: ['cut'],\n    description: 'scissors',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗃️',\n    names: ['card_file_box'],\n    tags: [],\n    description: 'card file box',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗄️',\n    names: ['file_cabinet'],\n    tags: [],\n    description: 'file cabinet',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗑️',\n    names: ['wastebasket'],\n    tags: ['trash'],\n    description: 'wastebasket',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔒',\n    names: ['lock'],\n    tags: ['security', 'private'],\n    description: 'locked',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔓',\n    names: ['unlock'],\n    tags: ['security'],\n    description: 'unlocked',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔏',\n    names: ['lock_with_ink_pen'],\n    tags: [],\n    description: 'locked with pen',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔐',\n    names: ['closed_lock_with_key'],\n    tags: ['security'],\n    description: 'locked with key',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔑',\n    names: ['key'],\n    tags: ['lock', 'password'],\n    description: 'key',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗝️',\n    names: ['old_key'],\n    tags: [],\n    description: 'old key',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔨',\n    names: ['hammer'],\n    tags: ['tool'],\n    description: 'hammer',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪓',\n    names: ['axe'],\n    tags: [],\n    description: 'axe',\n    category: 'Objects'\n  },\n  {\n    emoji: '⛏️',\n    names: ['pick'],\n    tags: [],\n    description: 'pick',\n    category: 'Objects'\n  },\n  {\n    emoji: '⚒️',\n    names: ['hammer_and_pick'],\n    tags: [],\n    description: 'hammer and pick',\n    category: 'Objects'\n  },\n  {\n    emoji: '🛠️',\n    names: ['hammer_and_wrench'],\n    tags: [],\n    description: 'hammer and wrench',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗡️',\n    names: ['dagger'],\n    tags: [],\n    description: 'dagger',\n    category: 'Objects'\n  },\n  {\n    emoji: '⚔️',\n    names: ['crossed_swords'],\n    tags: [],\n    description: 'crossed swords',\n    category: 'Objects'\n  },\n  {\n    emoji: '💣',\n    names: ['bomb'],\n    tags: ['boom'],\n    description: 'bomb',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪃',\n    names: ['boomerang'],\n    tags: [],\n    description: 'boomerang',\n    category: 'Objects'\n  },\n  {\n    emoji: '🏹',\n    names: ['bow_and_arrow'],\n    tags: ['archery'],\n    description: 'bow and arrow',\n    category: 'Objects'\n  },\n  {\n    emoji: '🛡️',\n    names: ['shield'],\n    tags: [],\n    description: 'shield',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪚',\n    names: ['carpentry_saw'],\n    tags: [],\n    description: 'carpentry saw',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔧',\n    names: ['wrench'],\n    tags: ['tool'],\n    description: 'wrench',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪛',\n    names: ['screwdriver'],\n    tags: [],\n    description: 'screwdriver',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔩',\n    names: ['nut_and_bolt'],\n    tags: [],\n    description: 'nut and bolt',\n    category: 'Objects'\n  },\n  {\n    emoji: '⚙️',\n    names: ['gear'],\n    tags: [],\n    description: 'gear',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗜️',\n    names: ['clamp'],\n    tags: [],\n    description: 'clamp',\n    category: 'Objects'\n  },\n  {\n    emoji: '⚖️',\n    names: ['balance_scale'],\n    tags: [],\n    description: 'balance scale',\n    category: 'Objects'\n  },\n  {\n    emoji: '🦯',\n    names: ['probing_cane'],\n    tags: [],\n    description: 'white cane',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔗',\n    names: ['link'],\n    tags: [],\n    description: 'link',\n    category: 'Objects'\n  },\n  {\n    emoji: '⛓️',\n    names: ['chains'],\n    tags: [],\n    description: 'chains',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪝',\n    names: ['hook'],\n    tags: [],\n    description: 'hook',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧰',\n    names: ['toolbox'],\n    tags: [],\n    description: 'toolbox',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧲',\n    names: ['magnet'],\n    tags: [],\n    description: 'magnet',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪜',\n    names: ['ladder'],\n    tags: [],\n    description: 'ladder',\n    category: 'Objects'\n  },\n  {\n    emoji: '⚗️',\n    names: ['alembic'],\n    tags: [],\n    description: 'alembic',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧪',\n    names: ['test_tube'],\n    tags: [],\n    description: 'test tube',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧫',\n    names: ['petri_dish'],\n    tags: [],\n    description: 'petri dish',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧬',\n    names: ['dna'],\n    tags: [],\n    description: 'dna',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔬',\n    names: ['microscope'],\n    tags: ['science', 'laboratory', 'investigate'],\n    description: 'microscope',\n    category: 'Objects'\n  },\n  {\n    emoji: '🔭',\n    names: ['telescope'],\n    tags: [],\n    description: 'telescope',\n    category: 'Objects'\n  },\n  {\n    emoji: '📡',\n    names: ['satellite'],\n    tags: ['signal'],\n    description: 'satellite antenna',\n    category: 'Objects'\n  },\n  {\n    emoji: '💉',\n    names: ['syringe'],\n    tags: ['health', 'hospital', 'needle'],\n    description: 'syringe',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩸',\n    names: ['drop_of_blood'],\n    tags: [],\n    description: 'drop of blood',\n    category: 'Objects'\n  },\n  {\n    emoji: '💊',\n    names: ['pill'],\n    tags: ['health', 'medicine'],\n    description: 'pill',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩹',\n    names: ['adhesive_bandage'],\n    tags: [],\n    description: 'adhesive bandage',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩼',\n    names: ['crutch'],\n    tags: [],\n    description: 'crutch',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩺',\n    names: ['stethoscope'],\n    tags: [],\n    description: 'stethoscope',\n    category: 'Objects'\n  },\n  {\n    emoji: '🩻',\n    names: ['x_ray'],\n    tags: [],\n    description: 'x-ray',\n    category: 'Objects'\n  },\n  {\n    emoji: '🚪',\n    names: ['door'],\n    tags: [],\n    description: 'door',\n    category: 'Objects'\n  },\n  {\n    emoji: '🛗',\n    names: ['elevator'],\n    tags: [],\n    description: 'elevator',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪞',\n    names: ['mirror'],\n    tags: [],\n    description: 'mirror',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪟',\n    names: ['window'],\n    tags: [],\n    description: 'window',\n    category: 'Objects'\n  },\n  {\n    emoji: '🛏️',\n    names: ['bed'],\n    tags: [],\n    description: 'bed',\n    category: 'Objects'\n  },\n  {\n    emoji: '🛋️',\n    names: ['couch_and_lamp'],\n    tags: [],\n    description: 'couch and lamp',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪑',\n    names: ['chair'],\n    tags: [],\n    description: 'chair',\n    category: 'Objects'\n  },\n  {\n    emoji: '🚽',\n    names: ['toilet'],\n    tags: ['wc'],\n    description: 'toilet',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪠',\n    names: ['plunger'],\n    tags: [],\n    description: 'plunger',\n    category: 'Objects'\n  },\n  {\n    emoji: '🚿',\n    names: ['shower'],\n    tags: ['bath'],\n    description: 'shower',\n    category: 'Objects'\n  },\n  {\n    emoji: '🛁',\n    names: ['bathtub'],\n    tags: [],\n    description: 'bathtub',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪤',\n    names: ['mouse_trap'],\n    tags: [],\n    description: 'mouse trap',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪒',\n    names: ['razor'],\n    tags: [],\n    description: 'razor',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧴',\n    names: ['lotion_bottle'],\n    tags: [],\n    description: 'lotion bottle',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧷',\n    names: ['safety_pin'],\n    tags: [],\n    description: 'safety pin',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧹',\n    names: ['broom'],\n    tags: [],\n    description: 'broom',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧺',\n    names: ['basket'],\n    tags: [],\n    description: 'basket',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧻',\n    names: ['roll_of_paper'],\n    tags: ['toilet'],\n    description: 'roll of paper',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪣',\n    names: ['bucket'],\n    tags: [],\n    description: 'bucket',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧼',\n    names: ['soap'],\n    tags: [],\n    description: 'soap',\n    category: 'Objects'\n  },\n  {\n    emoji: '🫧',\n    names: ['bubbles'],\n    tags: [],\n    description: 'bubbles',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪥',\n    names: ['toothbrush'],\n    tags: [],\n    description: 'toothbrush',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧽',\n    names: ['sponge'],\n    tags: [],\n    description: 'sponge',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧯',\n    names: ['fire_extinguisher'],\n    tags: [],\n    description: 'fire extinguisher',\n    category: 'Objects'\n  },\n  {\n    emoji: '🛒',\n    names: ['shopping_cart'],\n    tags: [],\n    description: 'shopping cart',\n    category: 'Objects'\n  },\n  {\n    emoji: '🚬',\n    names: ['smoking'],\n    tags: ['cigarette'],\n    description: 'cigarette',\n    category: 'Objects'\n  },\n  {\n    emoji: '⚰️',\n    names: ['coffin'],\n    tags: ['funeral'],\n    description: 'coffin',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪦',\n    names: ['headstone'],\n    tags: [],\n    description: 'headstone',\n    category: 'Objects'\n  },\n  {\n    emoji: '⚱️',\n    names: ['funeral_urn'],\n    tags: [],\n    description: 'funeral urn',\n    category: 'Objects'\n  },\n  {\n    emoji: '🧿',\n    names: ['nazar_amulet'],\n    tags: [],\n    description: 'nazar amulet',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪬',\n    names: ['hamsa'],\n    tags: [],\n    description: 'hamsa',\n    category: 'Objects'\n  },\n  {\n    emoji: '🗿',\n    names: ['moyai'],\n    tags: ['stone'],\n    description: 'moai',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪧',\n    names: ['placard'],\n    tags: [],\n    description: 'placard',\n    category: 'Objects'\n  },\n  {\n    emoji: '🪪',\n    names: ['identification_card'],\n    tags: [],\n    description: 'identification card',\n    category: 'Objects'\n  },\n  {\n    emoji: '🏧',\n    names: ['atm'],\n    tags: [],\n    description: 'ATM sign',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚮',\n    names: ['put_litter_in_its_place'],\n    tags: [],\n    description: 'litter in bin sign',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚰',\n    names: ['potable_water'],\n    tags: [],\n    description: 'potable water',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♿',\n    names: ['wheelchair'],\n    tags: ['accessibility'],\n    description: 'wheelchair symbol',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚹',\n    names: ['mens'],\n    tags: [],\n    description: 'men’s room',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚺',\n    names: ['womens'],\n    tags: [],\n    description: 'women’s room',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚻',\n    names: ['restroom'],\n    tags: ['toilet'],\n    description: 'restroom',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚼',\n    names: ['baby_symbol'],\n    tags: [],\n    description: 'baby symbol',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚾',\n    names: ['wc'],\n    tags: ['toilet', 'restroom'],\n    description: 'water closet',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🛂',\n    names: ['passport_control'],\n    tags: [],\n    description: 'passport control',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🛃',\n    names: ['customs'],\n    tags: [],\n    description: 'customs',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🛄',\n    names: ['baggage_claim'],\n    tags: ['airport'],\n    description: 'baggage claim',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🛅',\n    names: ['left_luggage'],\n    tags: [],\n    description: 'left luggage',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⚠️',\n    names: ['warning'],\n    tags: ['wip'],\n    description: 'warning',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚸',\n    names: ['children_crossing'],\n    tags: [],\n    description: 'children crossing',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⛔',\n    names: ['no_entry'],\n    tags: ['limit'],\n    description: 'no entry',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚫',\n    names: ['no_entry_sign'],\n    tags: ['block', 'forbidden'],\n    description: 'prohibited',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚳',\n    names: ['no_bicycles'],\n    tags: [],\n    description: 'no bicycles',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚭',\n    names: ['no_smoking'],\n    tags: [],\n    description: 'no smoking',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚯',\n    names: ['do_not_litter'],\n    tags: [],\n    description: 'no littering',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚱',\n    names: ['non-potable_water'],\n    tags: [],\n    description: 'non-potable water',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🚷',\n    names: ['no_pedestrians'],\n    tags: [],\n    description: 'no pedestrians',\n    category: 'Symbols'\n  },\n  {\n    emoji: '📵',\n    names: ['no_mobile_phones'],\n    tags: [],\n    description: 'no mobile phones',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔞',\n    names: ['underage'],\n    tags: [],\n    description: 'no one under eighteen',\n    category: 'Symbols'\n  },\n  {\n    emoji: '☢️',\n    names: ['radioactive'],\n    tags: [],\n    description: 'radioactive',\n    category: 'Symbols'\n  },\n  {\n    emoji: '☣️',\n    names: ['biohazard'],\n    tags: [],\n    description: 'biohazard',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⬆️',\n    names: ['arrow_up'],\n    tags: [],\n    description: 'up arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '↗️',\n    names: ['arrow_upper_right'],\n    tags: [],\n    description: 'up-right arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '➡️',\n    names: ['arrow_right'],\n    tags: [],\n    description: 'right arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '↘️',\n    names: ['arrow_lower_right'],\n    tags: [],\n    description: 'down-right arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⬇️',\n    names: ['arrow_down'],\n    tags: [],\n    description: 'down arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '↙️',\n    names: ['arrow_lower_left'],\n    tags: [],\n    description: 'down-left arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⬅️',\n    names: ['arrow_left'],\n    tags: [],\n    description: 'left arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '↖️',\n    names: ['arrow_upper_left'],\n    tags: [],\n    description: 'up-left arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '↕️',\n    names: ['arrow_up_down'],\n    tags: [],\n    description: 'up-down arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '↔️',\n    names: ['left_right_arrow'],\n    tags: [],\n    description: 'left-right arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '↩️',\n    names: ['leftwards_arrow_with_hook'],\n    tags: ['return'],\n    description: 'right arrow curving left',\n    category: 'Symbols'\n  },\n  {\n    emoji: '↪️',\n    names: ['arrow_right_hook'],\n    tags: [],\n    description: 'left arrow curving right',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⤴️',\n    names: ['arrow_heading_up'],\n    tags: [],\n    description: 'right arrow curving up',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⤵️',\n    names: ['arrow_heading_down'],\n    tags: [],\n    description: 'right arrow curving down',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔃',\n    names: ['arrows_clockwise'],\n    tags: [],\n    description: 'clockwise vertical arrows',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔄',\n    names: ['arrows_counterclockwise'],\n    tags: ['sync'],\n    description: 'counterclockwise arrows button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔙',\n    names: ['back'],\n    tags: [],\n    description: 'BACK arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔚',\n    names: ['end'],\n    tags: [],\n    description: 'END arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔛',\n    names: ['on'],\n    tags: [],\n    description: 'ON! arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔜',\n    names: ['soon'],\n    tags: [],\n    description: 'SOON arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔝',\n    names: ['top'],\n    tags: [],\n    description: 'TOP arrow',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🛐',\n    names: ['place_of_worship'],\n    tags: [],\n    description: 'place of worship',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⚛️',\n    names: ['atom_symbol'],\n    tags: [],\n    description: 'atom symbol',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🕉️',\n    names: ['om'],\n    tags: [],\n    description: 'om',\n    category: 'Symbols'\n  },\n  {\n    emoji: '✡️',\n    names: ['star_of_david'],\n    tags: [],\n    description: 'star of David',\n    category: 'Symbols'\n  },\n  {\n    emoji: '☸️',\n    names: ['wheel_of_dharma'],\n    tags: [],\n    description: 'wheel of dharma',\n    category: 'Symbols'\n  },\n  {\n    emoji: '☯️',\n    names: ['yin_yang'],\n    tags: [],\n    description: 'yin yang',\n    category: 'Symbols'\n  },\n  {\n    emoji: '✝️',\n    names: ['latin_cross'],\n    tags: [],\n    description: 'latin cross',\n    category: 'Symbols'\n  },\n  {\n    emoji: '☦️',\n    names: ['orthodox_cross'],\n    tags: [],\n    description: 'orthodox cross',\n    category: 'Symbols'\n  },\n  {\n    emoji: '☪️',\n    names: ['star_and_crescent'],\n    tags: [],\n    description: 'star and crescent',\n    category: 'Symbols'\n  },\n  {\n    emoji: '☮️',\n    names: ['peace_symbol'],\n    tags: [],\n    description: 'peace symbol',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🕎',\n    names: ['menorah'],\n    tags: [],\n    description: 'menorah',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔯',\n    names: ['six_pointed_star'],\n    tags: [],\n    description: 'dotted six-pointed star',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🪯',\n    names: ['khanda'],\n    tags: [],\n    description: 'khanda',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♈',\n    names: ['aries'],\n    tags: [],\n    description: 'Aries',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♉',\n    names: ['taurus'],\n    tags: [],\n    description: 'Taurus',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♊',\n    names: ['gemini'],\n    tags: [],\n    description: 'Gemini',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♋',\n    names: ['cancer'],\n    tags: [],\n    description: 'Cancer',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♌',\n    names: ['leo'],\n    tags: [],\n    description: 'Leo',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♍',\n    names: ['virgo'],\n    tags: [],\n    description: 'Virgo',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♎',\n    names: ['libra'],\n    tags: [],\n    description: 'Libra',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♏',\n    names: ['scorpius'],\n    tags: [],\n    description: 'Scorpio',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♐',\n    names: ['sagittarius'],\n    tags: [],\n    description: 'Sagittarius',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♑',\n    names: ['capricorn'],\n    tags: [],\n    description: 'Capricorn',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♒',\n    names: ['aquarius'],\n    tags: [],\n    description: 'Aquarius',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♓',\n    names: ['pisces'],\n    tags: [],\n    description: 'Pisces',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⛎',\n    names: ['ophiuchus'],\n    tags: [],\n    description: 'Ophiuchus',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔀',\n    names: ['twisted_rightwards_arrows'],\n    tags: ['shuffle'],\n    description: 'shuffle tracks button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔁',\n    names: ['repeat'],\n    tags: ['loop'],\n    description: 'repeat button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔂',\n    names: ['repeat_one'],\n    tags: [],\n    description: 'repeat single button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '▶️',\n    names: ['arrow_forward'],\n    tags: [],\n    description: 'play button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏩',\n    names: ['fast_forward'],\n    tags: [],\n    description: 'fast-forward button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏭️',\n    names: ['next_track_button'],\n    tags: [],\n    description: 'next track button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏯️',\n    names: ['play_or_pause_button'],\n    tags: [],\n    description: 'play or pause button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '◀️',\n    names: ['arrow_backward'],\n    tags: [],\n    description: 'reverse button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏪',\n    names: ['rewind'],\n    tags: [],\n    description: 'fast reverse button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏮️',\n    names: ['previous_track_button'],\n    tags: [],\n    description: 'last track button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔼',\n    names: ['arrow_up_small'],\n    tags: [],\n    description: 'upwards button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏫',\n    names: ['arrow_double_up'],\n    tags: [],\n    description: 'fast up button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔽',\n    names: ['arrow_down_small'],\n    tags: [],\n    description: 'downwards button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏬',\n    names: ['arrow_double_down'],\n    tags: [],\n    description: 'fast down button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏸️',\n    names: ['pause_button'],\n    tags: [],\n    description: 'pause button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏹️',\n    names: ['stop_button'],\n    tags: [],\n    description: 'stop button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏺️',\n    names: ['record_button'],\n    tags: [],\n    description: 'record button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⏏️',\n    names: ['eject_button'],\n    tags: [],\n    description: 'eject button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🎦',\n    names: ['cinema'],\n    tags: ['film', 'movie'],\n    description: 'cinema',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔅',\n    names: ['low_brightness'],\n    tags: [],\n    description: 'dim button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔆',\n    names: ['high_brightness'],\n    tags: [],\n    description: 'bright button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '📶',\n    names: ['signal_strength'],\n    tags: ['wifi'],\n    description: 'antenna bars',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🛜',\n    names: ['wireless'],\n    tags: ['wifi'],\n    description: 'wireless',\n    category: 'Symbols'\n  },\n  {\n    emoji: '📳',\n    names: ['vibration_mode'],\n    tags: [],\n    description: 'vibration mode',\n    category: 'Symbols'\n  },\n  {\n    emoji: '📴',\n    names: ['mobile_phone_off'],\n    tags: ['mute', 'off'],\n    description: 'mobile phone off',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♀️',\n    names: ['female_sign'],\n    tags: [],\n    description: 'female sign',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♂️',\n    names: ['male_sign'],\n    tags: [],\n    description: 'male sign',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⚧️',\n    names: ['transgender_symbol'],\n    tags: [],\n    description: 'transgender symbol',\n    category: 'Symbols'\n  },\n  {\n    emoji: '✖️',\n    names: ['heavy_multiplication_x'],\n    tags: [],\n    description: 'multiply',\n    category: 'Symbols'\n  },\n  {\n    emoji: '➕',\n    names: ['heavy_plus_sign'],\n    tags: [],\n    description: 'plus',\n    category: 'Symbols'\n  },\n  {\n    emoji: '➖',\n    names: ['heavy_minus_sign'],\n    tags: [],\n    description: 'minus',\n    category: 'Symbols'\n  },\n  {\n    emoji: '➗',\n    names: ['heavy_division_sign'],\n    tags: [],\n    description: 'divide',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟰',\n    names: ['heavy_equals_sign'],\n    tags: [],\n    description: 'heavy equals sign',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♾️',\n    names: ['infinity'],\n    tags: [],\n    description: 'infinity',\n    category: 'Symbols'\n  },\n  {\n    emoji: '‼️',\n    names: ['bangbang'],\n    tags: [],\n    description: 'double exclamation mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⁉️',\n    names: ['interrobang'],\n    tags: [],\n    description: 'exclamation question mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '❓',\n    names: ['question'],\n    tags: ['confused'],\n    description: 'red question mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '❔',\n    names: ['grey_question'],\n    tags: [],\n    description: 'white question mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '❕',\n    names: ['grey_exclamation'],\n    tags: [],\n    description: 'white exclamation mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '❗',\n    names: ['exclamation', 'heavy_exclamation_mark'],\n    tags: ['bang'],\n    description: 'red exclamation mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '〰️',\n    names: ['wavy_dash'],\n    tags: [],\n    description: 'wavy dash',\n    category: 'Symbols'\n  },\n  {\n    emoji: '💱',\n    names: ['currency_exchange'],\n    tags: [],\n    description: 'currency exchange',\n    category: 'Symbols'\n  },\n  {\n    emoji: '💲',\n    names: ['heavy_dollar_sign'],\n    tags: [],\n    description: 'heavy dollar sign',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⚕️',\n    names: ['medical_symbol'],\n    tags: [],\n    description: 'medical symbol',\n    category: 'Symbols'\n  },\n  {\n    emoji: '♻️',\n    names: ['recycle'],\n    tags: ['environment', 'green'],\n    description: 'recycling symbol',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⚜️',\n    names: ['fleur_de_lis'],\n    tags: [],\n    description: 'fleur-de-lis',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔱',\n    names: ['trident'],\n    tags: [],\n    description: 'trident emblem',\n    category: 'Symbols'\n  },\n  {\n    emoji: '📛',\n    names: ['name_badge'],\n    tags: [],\n    description: 'name badge',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔰',\n    names: ['beginner'],\n    tags: [],\n    description: 'Japanese symbol for beginner',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⭕',\n    names: ['o'],\n    tags: [],\n    description: 'hollow red circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '✅',\n    names: ['white_check_mark'],\n    tags: [],\n    description: 'check mark button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '☑️',\n    names: ['ballot_box_with_check'],\n    tags: [],\n    description: 'check box with check',\n    category: 'Symbols'\n  },\n  {\n    emoji: '✔️',\n    names: ['heavy_check_mark'],\n    tags: [],\n    description: 'check mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '❌',\n    names: ['x'],\n    tags: [],\n    description: 'cross mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '❎',\n    names: ['negative_squared_cross_mark'],\n    tags: [],\n    description: 'cross mark button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '➰',\n    names: ['curly_loop'],\n    tags: [],\n    description: 'curly loop',\n    category: 'Symbols'\n  },\n  {\n    emoji: '➿',\n    names: ['loop'],\n    tags: [],\n    description: 'double curly loop',\n    category: 'Symbols'\n  },\n  {\n    emoji: '〽️',\n    names: ['part_alternation_mark'],\n    tags: [],\n    description: 'part alternation mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '✳️',\n    names: ['eight_spoked_asterisk'],\n    tags: [],\n    description: 'eight-spoked asterisk',\n    category: 'Symbols'\n  },\n  {\n    emoji: '✴️',\n    names: ['eight_pointed_black_star'],\n    tags: [],\n    description: 'eight-pointed star',\n    category: 'Symbols'\n  },\n  {\n    emoji: '❇️',\n    names: ['sparkle'],\n    tags: [],\n    description: 'sparkle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '©️',\n    names: ['copyright'],\n    tags: [],\n    description: 'copyright',\n    category: 'Symbols'\n  },\n  {\n    emoji: '®️',\n    names: ['registered'],\n    tags: [],\n    description: 'registered',\n    category: 'Symbols'\n  },\n  {\n    emoji: '™️',\n    names: ['tm'],\n    tags: ['trademark'],\n    description: 'trade mark',\n    category: 'Symbols'\n  },\n  {\n    emoji: '#️⃣',\n    names: ['hash'],\n    tags: ['number'],\n    description: 'keycap: #',\n    category: 'Symbols'\n  },\n  {\n    emoji: '*️⃣',\n    names: ['asterisk'],\n    tags: [],\n    description: 'keycap: *',\n    category: 'Symbols'\n  },\n  {\n    emoji: '0️⃣',\n    names: ['zero'],\n    tags: [],\n    description: 'keycap: 0',\n    category: 'Symbols'\n  },\n  {\n    emoji: '1️⃣',\n    names: ['one'],\n    tags: [],\n    description: 'keycap: 1',\n    category: 'Symbols'\n  },\n  {\n    emoji: '2️⃣',\n    names: ['two'],\n    tags: [],\n    description: 'keycap: 2',\n    category: 'Symbols'\n  },\n  {\n    emoji: '3️⃣',\n    names: ['three'],\n    tags: [],\n    description: 'keycap: 3',\n    category: 'Symbols'\n  },\n  {\n    emoji: '4️⃣',\n    names: ['four'],\n    tags: [],\n    description: 'keycap: 4',\n    category: 'Symbols'\n  },\n  {\n    emoji: '5️⃣',\n    names: ['five'],\n    tags: [],\n    description: 'keycap: 5',\n    category: 'Symbols'\n  },\n  {\n    emoji: '6️⃣',\n    names: ['six'],\n    tags: [],\n    description: 'keycap: 6',\n    category: 'Symbols'\n  },\n  {\n    emoji: '7️⃣',\n    names: ['seven'],\n    tags: [],\n    description: 'keycap: 7',\n    category: 'Symbols'\n  },\n  {\n    emoji: '8️⃣',\n    names: ['eight'],\n    tags: [],\n    description: 'keycap: 8',\n    category: 'Symbols'\n  },\n  {\n    emoji: '9️⃣',\n    names: ['nine'],\n    tags: [],\n    description: 'keycap: 9',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔟',\n    names: ['keycap_ten'],\n    tags: [],\n    description: 'keycap: 10',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔠',\n    names: ['capital_abcd'],\n    tags: ['letters'],\n    description: 'input latin uppercase',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔡',\n    names: ['abcd'],\n    tags: [],\n    description: 'input latin lowercase',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔢',\n    names: ['1234'],\n    tags: ['numbers'],\n    description: 'input numbers',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔣',\n    names: ['symbols'],\n    tags: [],\n    description: 'input symbols',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔤',\n    names: ['abc'],\n    tags: ['alphabet'],\n    description: 'input latin letters',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🅰️',\n    names: ['a'],\n    tags: [],\n    description: 'A button (blood type)',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆎',\n    names: ['ab'],\n    tags: [],\n    description: 'AB button (blood type)',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🅱️',\n    names: ['b'],\n    tags: [],\n    description: 'B button (blood type)',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆑',\n    names: ['cl'],\n    tags: [],\n    description: 'CL button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆒',\n    names: ['cool'],\n    tags: [],\n    description: 'COOL button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆓',\n    names: ['free'],\n    tags: [],\n    description: 'FREE button',\n    category: 'Symbols'\n  },\n  {\n    emoji: 'ℹ️',\n    names: ['information_source'],\n    tags: [],\n    description: 'information',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆔',\n    names: ['id'],\n    tags: [],\n    description: 'ID button',\n    category: 'Symbols'\n  },\n  {\n    emoji: 'Ⓜ️',\n    names: ['m'],\n    tags: [],\n    description: 'circled M',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆕',\n    names: ['new'],\n    tags: ['fresh'],\n    description: 'NEW button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆖',\n    names: ['ng'],\n    tags: [],\n    description: 'NG button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🅾️',\n    names: ['o2'],\n    tags: [],\n    description: 'O button (blood type)',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆗',\n    names: ['ok'],\n    tags: ['yes'],\n    description: 'OK button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🅿️',\n    names: ['parking'],\n    tags: [],\n    description: 'P button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆘',\n    names: ['sos'],\n    tags: ['help', 'emergency'],\n    description: 'SOS button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆙',\n    names: ['up'],\n    tags: [],\n    description: 'UP! button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🆚',\n    names: ['vs'],\n    tags: [],\n    description: 'VS button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈁',\n    names: ['koko'],\n    tags: [],\n    description: 'Japanese “here” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈂️',\n    names: ['sa'],\n    tags: [],\n    description: 'Japanese “service charge” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈷️',\n    names: ['u6708'],\n    tags: [],\n    description: 'Japanese “monthly amount” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈶',\n    names: ['u6709'],\n    tags: [],\n    description: 'Japanese “not free of charge” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈯',\n    names: ['u6307'],\n    tags: [],\n    description: 'Japanese “reserved” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🉐',\n    names: ['ideograph_advantage'],\n    tags: [],\n    description: 'Japanese “bargain” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈹',\n    names: ['u5272'],\n    tags: [],\n    description: 'Japanese “discount” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈚',\n    names: ['u7121'],\n    tags: [],\n    description: 'Japanese “free of charge” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈲',\n    names: ['u7981'],\n    tags: [],\n    description: 'Japanese “prohibited” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🉑',\n    names: ['accept'],\n    tags: [],\n    description: 'Japanese “acceptable” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈸',\n    names: ['u7533'],\n    tags: [],\n    description: 'Japanese “application” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈴',\n    names: ['u5408'],\n    tags: [],\n    description: 'Japanese “passing grade” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈳',\n    names: ['u7a7a'],\n    tags: [],\n    description: 'Japanese “vacancy” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '㊗️',\n    names: ['congratulations'],\n    tags: [],\n    description: 'Japanese “congratulations” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '㊙️',\n    names: ['secret'],\n    tags: [],\n    description: 'Japanese “secret” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈺',\n    names: ['u55b6'],\n    tags: [],\n    description: 'Japanese “open for business” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🈵',\n    names: ['u6e80'],\n    tags: [],\n    description: 'Japanese “no vacancy” button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔴',\n    names: ['red_circle'],\n    tags: [],\n    description: 'red circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟠',\n    names: ['orange_circle'],\n    tags: [],\n    description: 'orange circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟡',\n    names: ['yellow_circle'],\n    tags: [],\n    description: 'yellow circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟢',\n    names: ['green_circle'],\n    tags: [],\n    description: 'green circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔵',\n    names: ['large_blue_circle'],\n    tags: [],\n    description: 'blue circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟣',\n    names: ['purple_circle'],\n    tags: [],\n    description: 'purple circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟤',\n    names: ['brown_circle'],\n    tags: [],\n    description: 'brown circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⚫',\n    names: ['black_circle'],\n    tags: [],\n    description: 'black circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⚪',\n    names: ['white_circle'],\n    tags: [],\n    description: 'white circle',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟥',\n    names: ['red_square'],\n    tags: [],\n    description: 'red square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟧',\n    names: ['orange_square'],\n    tags: [],\n    description: 'orange square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟨',\n    names: ['yellow_square'],\n    tags: [],\n    description: 'yellow square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟩',\n    names: ['green_square'],\n    tags: [],\n    description: 'green square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟦',\n    names: ['blue_square'],\n    tags: [],\n    description: 'blue square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟪',\n    names: ['purple_square'],\n    tags: [],\n    description: 'purple square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🟫',\n    names: ['brown_square'],\n    tags: [],\n    description: 'brown square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⬛',\n    names: ['black_large_square'],\n    tags: [],\n    description: 'black large square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '⬜',\n    names: ['white_large_square'],\n    tags: [],\n    description: 'white large square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '◼️',\n    names: ['black_medium_square'],\n    tags: [],\n    description: 'black medium square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '◻️',\n    names: ['white_medium_square'],\n    tags: [],\n    description: 'white medium square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '◾',\n    names: ['black_medium_small_square'],\n    tags: [],\n    description: 'black medium-small square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '◽',\n    names: ['white_medium_small_square'],\n    tags: [],\n    description: 'white medium-small square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '▪️',\n    names: ['black_small_square'],\n    tags: [],\n    description: 'black small square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '▫️',\n    names: ['white_small_square'],\n    tags: [],\n    description: 'white small square',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔶',\n    names: ['large_orange_diamond'],\n    tags: [],\n    description: 'large orange diamond',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔷',\n    names: ['large_blue_diamond'],\n    tags: [],\n    description: 'large blue diamond',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔸',\n    names: ['small_orange_diamond'],\n    tags: [],\n    description: 'small orange diamond',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔹',\n    names: ['small_blue_diamond'],\n    tags: [],\n    description: 'small blue diamond',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔺',\n    names: ['small_red_triangle'],\n    tags: [],\n    description: 'red triangle pointed up',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔻',\n    names: ['small_red_triangle_down'],\n    tags: [],\n    description: 'red triangle pointed down',\n    category: 'Symbols'\n  },\n  {\n    emoji: '💠',\n    names: ['diamond_shape_with_a_dot_inside'],\n    tags: [],\n    description: 'diamond with a dot',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔘',\n    names: ['radio_button'],\n    tags: [],\n    description: 'radio button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔳',\n    names: ['white_square_button'],\n    tags: [],\n    description: 'white square button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🔲',\n    names: ['black_square_button'],\n    tags: [],\n    description: 'black square button',\n    category: 'Symbols'\n  },\n  {\n    emoji: '🏁',\n    names: ['checkered_flag'],\n    tags: ['milestone', 'finish'],\n    description: 'chequered flag',\n    category: 'Flags'\n  },\n  {\n    emoji: '🚩',\n    names: ['triangular_flag_on_post'],\n    tags: [],\n    description: 'triangular flag',\n    category: 'Flags'\n  },\n  {\n    emoji: '🎌',\n    names: ['crossed_flags'],\n    tags: [],\n    description: 'crossed flags',\n    category: 'Flags'\n  },\n  {\n    emoji: '🏴',\n    names: ['black_flag'],\n    tags: [],\n    description: 'black flag',\n    category: 'Flags'\n  },\n  {\n    emoji: '🏳️',\n    names: ['white_flag'],\n    tags: [],\n    description: 'white flag',\n    category: 'Flags'\n  },\n  {\n    emoji: '🏳️‍🌈',\n    names: ['rainbow_flag'],\n    tags: ['pride'],\n    description: 'rainbow flag',\n    category: 'Flags'\n  },\n  {\n    emoji: '🏳️‍⚧️',\n    names: ['transgender_flag'],\n    tags: [],\n    description: 'transgender flag',\n    category: 'Flags'\n  },\n  {\n    emoji: '🏴‍☠️',\n    names: ['pirate_flag'],\n    tags: [],\n    description: 'pirate flag',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇨',\n    names: ['ascension_island'],\n    tags: [],\n    description: 'flag: Ascension Island',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇩',\n    names: ['andorra'],\n    tags: [],\n    description: 'flag: Andorra',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇪',\n    names: ['united_arab_emirates'],\n    tags: [],\n    description: 'flag: United Arab Emirates',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇫',\n    names: ['afghanistan'],\n    tags: [],\n    description: 'flag: Afghanistan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇬',\n    names: ['antigua_barbuda'],\n    tags: [],\n    description: 'flag: Antigua & Barbuda',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇮',\n    names: ['anguilla'],\n    tags: [],\n    description: 'flag: Anguilla',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇱',\n    names: ['albania'],\n    tags: [],\n    description: 'flag: Albania',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇲',\n    names: ['armenia'],\n    tags: [],\n    description: 'flag: Armenia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇴',\n    names: ['angola'],\n    tags: [],\n    description: 'flag: Angola',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇶',\n    names: ['antarctica'],\n    tags: [],\n    description: 'flag: Antarctica',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇷',\n    names: ['argentina'],\n    tags: [],\n    description: 'flag: Argentina',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇸',\n    names: ['american_samoa'],\n    tags: [],\n    description: 'flag: American Samoa',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇹',\n    names: ['austria'],\n    tags: [],\n    description: 'flag: Austria',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇺',\n    names: ['australia'],\n    tags: [],\n    description: 'flag: Australia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇼',\n    names: ['aruba'],\n    tags: [],\n    description: 'flag: Aruba',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇽',\n    names: ['aland_islands'],\n    tags: [],\n    description: 'flag: Åland Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇦🇿',\n    names: ['azerbaijan'],\n    tags: [],\n    description: 'flag: Azerbaijan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇦',\n    names: ['bosnia_herzegovina'],\n    tags: [],\n    description: 'flag: Bosnia & Herzegovina',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇧',\n    names: ['barbados'],\n    tags: [],\n    description: 'flag: Barbados',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇩',\n    names: ['bangladesh'],\n    tags: [],\n    description: 'flag: Bangladesh',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇪',\n    names: ['belgium'],\n    tags: [],\n    description: 'flag: Belgium',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇫',\n    names: ['burkina_faso'],\n    tags: [],\n    description: 'flag: Burkina Faso',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇬',\n    names: ['bulgaria'],\n    tags: [],\n    description: 'flag: Bulgaria',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇭',\n    names: ['bahrain'],\n    tags: [],\n    description: 'flag: Bahrain',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇮',\n    names: ['burundi'],\n    tags: [],\n    description: 'flag: Burundi',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇯',\n    names: ['benin'],\n    tags: [],\n    description: 'flag: Benin',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇱',\n    names: ['st_barthelemy'],\n    tags: [],\n    description: 'flag: St. Barthélemy',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇲',\n    names: ['bermuda'],\n    tags: [],\n    description: 'flag: Bermuda',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇳',\n    names: ['brunei'],\n    tags: [],\n    description: 'flag: Brunei',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇴',\n    names: ['bolivia'],\n    tags: [],\n    description: 'flag: Bolivia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇶',\n    names: ['caribbean_netherlands'],\n    tags: [],\n    description: 'flag: Caribbean Netherlands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇷',\n    names: ['brazil'],\n    tags: [],\n    description: 'flag: Brazil',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇸',\n    names: ['bahamas'],\n    tags: [],\n    description: 'flag: Bahamas',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇹',\n    names: ['bhutan'],\n    tags: [],\n    description: 'flag: Bhutan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇻',\n    names: ['bouvet_island'],\n    tags: [],\n    description: 'flag: Bouvet Island',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇼',\n    names: ['botswana'],\n    tags: [],\n    description: 'flag: Botswana',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇾',\n    names: ['belarus'],\n    tags: [],\n    description: 'flag: Belarus',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇧🇿',\n    names: ['belize'],\n    tags: [],\n    description: 'flag: Belize',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇦',\n    names: ['canada'],\n    tags: [],\n    description: 'flag: Canada',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇨',\n    names: ['cocos_islands'],\n    tags: ['keeling'],\n    description: 'flag: Cocos (Keeling) Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇩',\n    names: ['congo_kinshasa'],\n    tags: [],\n    description: 'flag: Congo - Kinshasa',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇫',\n    names: ['central_african_republic'],\n    tags: [],\n    description: 'flag: Central African Republic',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇬',\n    names: ['congo_brazzaville'],\n    tags: [],\n    description: 'flag: Congo - Brazzaville',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇭',\n    names: ['switzerland'],\n    tags: [],\n    description: 'flag: Switzerland',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇮',\n    names: ['cote_divoire'],\n    tags: ['ivory'],\n    description: 'flag: Côte d’Ivoire',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇰',\n    names: ['cook_islands'],\n    tags: [],\n    description: 'flag: Cook Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇱',\n    names: ['chile'],\n    tags: [],\n    description: 'flag: Chile',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇲',\n    names: ['cameroon'],\n    tags: [],\n    description: 'flag: Cameroon',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇳',\n    names: ['cn'],\n    tags: ['china'],\n    description: 'flag: China',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇴',\n    names: ['colombia'],\n    tags: [],\n    description: 'flag: Colombia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇵',\n    names: ['clipperton_island'],\n    tags: [],\n    description: 'flag: Clipperton Island',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇷',\n    names: ['costa_rica'],\n    tags: [],\n    description: 'flag: Costa Rica',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇺',\n    names: ['cuba'],\n    tags: [],\n    description: 'flag: Cuba',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇻',\n    names: ['cape_verde'],\n    tags: [],\n    description: 'flag: Cape Verde',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇼',\n    names: ['curacao'],\n    tags: [],\n    description: 'flag: Curaçao',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇽',\n    names: ['christmas_island'],\n    tags: [],\n    description: 'flag: Christmas Island',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇾',\n    names: ['cyprus'],\n    tags: [],\n    description: 'flag: Cyprus',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇨🇿',\n    names: ['czech_republic'],\n    tags: [],\n    description: 'flag: Czechia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇩🇪',\n    names: ['de'],\n    tags: ['flag', 'germany'],\n    description: 'flag: Germany',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇩🇬',\n    names: ['diego_garcia'],\n    tags: [],\n    description: 'flag: Diego Garcia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇩🇯',\n    names: ['djibouti'],\n    tags: [],\n    description: 'flag: Djibouti',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇩🇰',\n    names: ['denmark'],\n    tags: [],\n    description: 'flag: Denmark',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇩🇲',\n    names: ['dominica'],\n    tags: [],\n    description: 'flag: Dominica',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇩🇴',\n    names: ['dominican_republic'],\n    tags: [],\n    description: 'flag: Dominican Republic',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇩🇿',\n    names: ['algeria'],\n    tags: [],\n    description: 'flag: Algeria',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇪🇦',\n    names: ['ceuta_melilla'],\n    tags: [],\n    description: 'flag: Ceuta & Melilla',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇪🇨',\n    names: ['ecuador'],\n    tags: [],\n    description: 'flag: Ecuador',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇪🇪',\n    names: ['estonia'],\n    tags: [],\n    description: 'flag: Estonia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇪🇬',\n    names: ['egypt'],\n    tags: [],\n    description: 'flag: Egypt',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇪🇭',\n    names: ['western_sahara'],\n    tags: [],\n    description: 'flag: Western Sahara',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇪🇷',\n    names: ['eritrea'],\n    tags: [],\n    description: 'flag: Eritrea',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇪🇸',\n    names: ['es'],\n    tags: ['spain'],\n    description: 'flag: Spain',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇪🇹',\n    names: ['ethiopia'],\n    tags: [],\n    description: 'flag: Ethiopia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇪🇺',\n    names: ['eu', 'european_union'],\n    tags: [],\n    description: 'flag: European Union',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇫🇮',\n    names: ['finland'],\n    tags: [],\n    description: 'flag: Finland',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇫🇯',\n    names: ['fiji'],\n    tags: [],\n    description: 'flag: Fiji',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇫🇰',\n    names: ['falkland_islands'],\n    tags: [],\n    description: 'flag: Falkland Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇫🇲',\n    names: ['micronesia'],\n    tags: [],\n    description: 'flag: Micronesia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇫🇴',\n    names: ['faroe_islands'],\n    tags: [],\n    description: 'flag: Faroe Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇫🇷',\n    names: ['fr'],\n    tags: ['france', 'french'],\n    description: 'flag: France',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇦',\n    names: ['gabon'],\n    tags: [],\n    description: 'flag: Gabon',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇧',\n    names: ['gb', 'uk'],\n    tags: ['flag', 'british'],\n    description: 'flag: United Kingdom',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇩',\n    names: ['grenada'],\n    tags: [],\n    description: 'flag: Grenada',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇪',\n    names: ['georgia'],\n    tags: [],\n    description: 'flag: Georgia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇫',\n    names: ['french_guiana'],\n    tags: [],\n    description: 'flag: French Guiana',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇬',\n    names: ['guernsey'],\n    tags: [],\n    description: 'flag: Guernsey',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇭',\n    names: ['ghana'],\n    tags: [],\n    description: 'flag: Ghana',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇮',\n    names: ['gibraltar'],\n    tags: [],\n    description: 'flag: Gibraltar',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇱',\n    names: ['greenland'],\n    tags: [],\n    description: 'flag: Greenland',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇲',\n    names: ['gambia'],\n    tags: [],\n    description: 'flag: Gambia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇳',\n    names: ['guinea'],\n    tags: [],\n    description: 'flag: Guinea',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇵',\n    names: ['guadeloupe'],\n    tags: [],\n    description: 'flag: Guadeloupe',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇶',\n    names: ['equatorial_guinea'],\n    tags: [],\n    description: 'flag: Equatorial Guinea',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇷',\n    names: ['greece'],\n    tags: [],\n    description: 'flag: Greece',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇸',\n    names: ['south_georgia_south_sandwich_islands'],\n    tags: [],\n    description: 'flag: South Georgia & South Sandwich Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇹',\n    names: ['guatemala'],\n    tags: [],\n    description: 'flag: Guatemala',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇺',\n    names: ['guam'],\n    tags: [],\n    description: 'flag: Guam',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇼',\n    names: ['guinea_bissau'],\n    tags: [],\n    description: 'flag: Guinea-Bissau',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇬🇾',\n    names: ['guyana'],\n    tags: [],\n    description: 'flag: Guyana',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇭🇰',\n    names: ['hong_kong'],\n    tags: [],\n    description: 'flag: Hong Kong SAR China',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇭🇲',\n    names: ['heard_mcdonald_islands'],\n    tags: [],\n    description: 'flag: Heard & McDonald Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇭🇳',\n    names: ['honduras'],\n    tags: [],\n    description: 'flag: Honduras',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇭🇷',\n    names: ['croatia'],\n    tags: [],\n    description: 'flag: Croatia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇭🇹',\n    names: ['haiti'],\n    tags: [],\n    description: 'flag: Haiti',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇭🇺',\n    names: ['hungary'],\n    tags: [],\n    description: 'flag: Hungary',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇨',\n    names: ['canary_islands'],\n    tags: [],\n    description: 'flag: Canary Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇩',\n    names: ['indonesia'],\n    tags: [],\n    description: 'flag: Indonesia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇪',\n    names: ['ireland'],\n    tags: [],\n    description: 'flag: Ireland',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇱',\n    names: ['israel'],\n    tags: [],\n    description: 'flag: Israel',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇲',\n    names: ['isle_of_man'],\n    tags: [],\n    description: 'flag: Isle of Man',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇳',\n    names: ['india'],\n    tags: [],\n    description: 'flag: India',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇴',\n    names: ['british_indian_ocean_territory'],\n    tags: [],\n    description: 'flag: British Indian Ocean Territory',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇶',\n    names: ['iraq'],\n    tags: [],\n    description: 'flag: Iraq',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇷',\n    names: ['iran'],\n    tags: [],\n    description: 'flag: Iran',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇸',\n    names: ['iceland'],\n    tags: [],\n    description: 'flag: Iceland',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇮🇹',\n    names: ['it'],\n    tags: ['italy'],\n    description: 'flag: Italy',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇯🇪',\n    names: ['jersey'],\n    tags: [],\n    description: 'flag: Jersey',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇯🇲',\n    names: ['jamaica'],\n    tags: [],\n    description: 'flag: Jamaica',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇯🇴',\n    names: ['jordan'],\n    tags: [],\n    description: 'flag: Jordan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇯🇵',\n    names: ['jp'],\n    tags: ['japan'],\n    description: 'flag: Japan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇪',\n    names: ['kenya'],\n    tags: [],\n    description: 'flag: Kenya',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇬',\n    names: ['kyrgyzstan'],\n    tags: [],\n    description: 'flag: Kyrgyzstan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇭',\n    names: ['cambodia'],\n    tags: [],\n    description: 'flag: Cambodia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇮',\n    names: ['kiribati'],\n    tags: [],\n    description: 'flag: Kiribati',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇲',\n    names: ['comoros'],\n    tags: [],\n    description: 'flag: Comoros',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇳',\n    names: ['st_kitts_nevis'],\n    tags: [],\n    description: 'flag: St. Kitts & Nevis',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇵',\n    names: ['north_korea'],\n    tags: [],\n    description: 'flag: North Korea',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇷',\n    names: ['kr'],\n    tags: ['korea'],\n    description: 'flag: South Korea',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇼',\n    names: ['kuwait'],\n    tags: [],\n    description: 'flag: Kuwait',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇾',\n    names: ['cayman_islands'],\n    tags: [],\n    description: 'flag: Cayman Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇰🇿',\n    names: ['kazakhstan'],\n    tags: [],\n    description: 'flag: Kazakhstan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇦',\n    names: ['laos'],\n    tags: [],\n    description: 'flag: Laos',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇧',\n    names: ['lebanon'],\n    tags: [],\n    description: 'flag: Lebanon',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇨',\n    names: ['st_lucia'],\n    tags: [],\n    description: 'flag: St. Lucia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇮',\n    names: ['liechtenstein'],\n    tags: [],\n    description: 'flag: Liechtenstein',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇰',\n    names: ['sri_lanka'],\n    tags: [],\n    description: 'flag: Sri Lanka',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇷',\n    names: ['liberia'],\n    tags: [],\n    description: 'flag: Liberia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇸',\n    names: ['lesotho'],\n    tags: [],\n    description: 'flag: Lesotho',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇹',\n    names: ['lithuania'],\n    tags: [],\n    description: 'flag: Lithuania',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇺',\n    names: ['luxembourg'],\n    tags: [],\n    description: 'flag: Luxembourg',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇻',\n    names: ['latvia'],\n    tags: [],\n    description: 'flag: Latvia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇱🇾',\n    names: ['libya'],\n    tags: [],\n    description: 'flag: Libya',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇦',\n    names: ['morocco'],\n    tags: [],\n    description: 'flag: Morocco',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇨',\n    names: ['monaco'],\n    tags: [],\n    description: 'flag: Monaco',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇩',\n    names: ['moldova'],\n    tags: [],\n    description: 'flag: Moldova',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇪',\n    names: ['montenegro'],\n    tags: [],\n    description: 'flag: Montenegro',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇫',\n    names: ['st_martin'],\n    tags: [],\n    description: 'flag: St. Martin',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇬',\n    names: ['madagascar'],\n    tags: [],\n    description: 'flag: Madagascar',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇭',\n    names: ['marshall_islands'],\n    tags: [],\n    description: 'flag: Marshall Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇰',\n    names: ['macedonia'],\n    tags: [],\n    description: 'flag: North Macedonia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇱',\n    names: ['mali'],\n    tags: [],\n    description: 'flag: Mali',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇲',\n    names: ['myanmar'],\n    tags: ['burma'],\n    description: 'flag: Myanmar (Burma)',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇳',\n    names: ['mongolia'],\n    tags: [],\n    description: 'flag: Mongolia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇴',\n    names: ['macau'],\n    tags: [],\n    description: 'flag: Macao SAR China',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇵',\n    names: ['northern_mariana_islands'],\n    tags: [],\n    description: 'flag: Northern Mariana Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇶',\n    names: ['martinique'],\n    tags: [],\n    description: 'flag: Martinique',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇷',\n    names: ['mauritania'],\n    tags: [],\n    description: 'flag: Mauritania',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇸',\n    names: ['montserrat'],\n    tags: [],\n    description: 'flag: Montserrat',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇹',\n    names: ['malta'],\n    tags: [],\n    description: 'flag: Malta',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇺',\n    names: ['mauritius'],\n    tags: [],\n    description: 'flag: Mauritius',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇻',\n    names: ['maldives'],\n    tags: [],\n    description: 'flag: Maldives',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇼',\n    names: ['malawi'],\n    tags: [],\n    description: 'flag: Malawi',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇽',\n    names: ['mexico'],\n    tags: [],\n    description: 'flag: Mexico',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇾',\n    names: ['malaysia'],\n    tags: [],\n    description: 'flag: Malaysia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇲🇿',\n    names: ['mozambique'],\n    tags: [],\n    description: 'flag: Mozambique',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇦',\n    names: ['namibia'],\n    tags: [],\n    description: 'flag: Namibia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇨',\n    names: ['new_caledonia'],\n    tags: [],\n    description: 'flag: New Caledonia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇪',\n    names: ['niger'],\n    tags: [],\n    description: 'flag: Niger',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇫',\n    names: ['norfolk_island'],\n    tags: [],\n    description: 'flag: Norfolk Island',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇬',\n    names: ['nigeria'],\n    tags: [],\n    description: 'flag: Nigeria',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇮',\n    names: ['nicaragua'],\n    tags: [],\n    description: 'flag: Nicaragua',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇱',\n    names: ['netherlands'],\n    tags: [],\n    description: 'flag: Netherlands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇴',\n    names: ['norway'],\n    tags: [],\n    description: 'flag: Norway',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇵',\n    names: ['nepal'],\n    tags: [],\n    description: 'flag: Nepal',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇷',\n    names: ['nauru'],\n    tags: [],\n    description: 'flag: Nauru',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇺',\n    names: ['niue'],\n    tags: [],\n    description: 'flag: Niue',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇳🇿',\n    names: ['new_zealand'],\n    tags: [],\n    description: 'flag: New Zealand',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇴🇲',\n    names: ['oman'],\n    tags: [],\n    description: 'flag: Oman',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇦',\n    names: ['panama'],\n    tags: [],\n    description: 'flag: Panama',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇪',\n    names: ['peru'],\n    tags: [],\n    description: 'flag: Peru',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇫',\n    names: ['french_polynesia'],\n    tags: [],\n    description: 'flag: French Polynesia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇬',\n    names: ['papua_new_guinea'],\n    tags: [],\n    description: 'flag: Papua New Guinea',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇭',\n    names: ['philippines'],\n    tags: [],\n    description: 'flag: Philippines',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇰',\n    names: ['pakistan'],\n    tags: [],\n    description: 'flag: Pakistan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇱',\n    names: ['poland'],\n    tags: [],\n    description: 'flag: Poland',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇲',\n    names: ['st_pierre_miquelon'],\n    tags: [],\n    description: 'flag: St. Pierre & Miquelon',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇳',\n    names: ['pitcairn_islands'],\n    tags: [],\n    description: 'flag: Pitcairn Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇷',\n    names: ['puerto_rico'],\n    tags: [],\n    description: 'flag: Puerto Rico',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇸',\n    names: ['palestinian_territories'],\n    tags: [],\n    description: 'flag: Palestinian Territories',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇹',\n    names: ['portugal'],\n    tags: [],\n    description: 'flag: Portugal',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇼',\n    names: ['palau'],\n    tags: [],\n    description: 'flag: Palau',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇵🇾',\n    names: ['paraguay'],\n    tags: [],\n    description: 'flag: Paraguay',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇶🇦',\n    names: ['qatar'],\n    tags: [],\n    description: 'flag: Qatar',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇷🇪',\n    names: ['reunion'],\n    tags: [],\n    description: 'flag: Réunion',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇷🇴',\n    names: ['romania'],\n    tags: [],\n    description: 'flag: Romania',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇷🇸',\n    names: ['serbia'],\n    tags: [],\n    description: 'flag: Serbia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇷🇺',\n    names: ['ru'],\n    tags: ['russia'],\n    description: 'flag: Russia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇷🇼',\n    names: ['rwanda'],\n    tags: [],\n    description: 'flag: Rwanda',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇦',\n    names: ['saudi_arabia'],\n    tags: [],\n    description: 'flag: Saudi Arabia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇧',\n    names: ['solomon_islands'],\n    tags: [],\n    description: 'flag: Solomon Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇨',\n    names: ['seychelles'],\n    tags: [],\n    description: 'flag: Seychelles',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇩',\n    names: ['sudan'],\n    tags: [],\n    description: 'flag: Sudan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇪',\n    names: ['sweden'],\n    tags: [],\n    description: 'flag: Sweden',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇬',\n    names: ['singapore'],\n    tags: [],\n    description: 'flag: Singapore',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇭',\n    names: ['st_helena'],\n    tags: [],\n    description: 'flag: St. Helena',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇮',\n    names: ['slovenia'],\n    tags: [],\n    description: 'flag: Slovenia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇯',\n    names: ['svalbard_jan_mayen'],\n    tags: [],\n    description: 'flag: Svalbard & Jan Mayen',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇰',\n    names: ['slovakia'],\n    tags: [],\n    description: 'flag: Slovakia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇱',\n    names: ['sierra_leone'],\n    tags: [],\n    description: 'flag: Sierra Leone',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇲',\n    names: ['san_marino'],\n    tags: [],\n    description: 'flag: San Marino',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇳',\n    names: ['senegal'],\n    tags: [],\n    description: 'flag: Senegal',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇴',\n    names: ['somalia'],\n    tags: [],\n    description: 'flag: Somalia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇷',\n    names: ['suriname'],\n    tags: [],\n    description: 'flag: Suriname',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇸',\n    names: ['south_sudan'],\n    tags: [],\n    description: 'flag: South Sudan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇹',\n    names: ['sao_tome_principe'],\n    tags: [],\n    description: 'flag: São Tomé & Príncipe',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇻',\n    names: ['el_salvador'],\n    tags: [],\n    description: 'flag: El Salvador',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇽',\n    names: ['sint_maarten'],\n    tags: [],\n    description: 'flag: Sint Maarten',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇾',\n    names: ['syria'],\n    tags: [],\n    description: 'flag: Syria',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇸🇿',\n    names: ['swaziland'],\n    tags: [],\n    description: 'flag: Eswatini',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇦',\n    names: ['tristan_da_cunha'],\n    tags: [],\n    description: 'flag: Tristan da Cunha',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇨',\n    names: ['turks_caicos_islands'],\n    tags: [],\n    description: 'flag: Turks & Caicos Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇩',\n    names: ['chad'],\n    tags: [],\n    description: 'flag: Chad',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇫',\n    names: ['french_southern_territories'],\n    tags: [],\n    description: 'flag: French Southern Territories',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇬',\n    names: ['togo'],\n    tags: [],\n    description: 'flag: Togo',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇭',\n    names: ['thailand'],\n    tags: [],\n    description: 'flag: Thailand',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇯',\n    names: ['tajikistan'],\n    tags: [],\n    description: 'flag: Tajikistan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇰',\n    names: ['tokelau'],\n    tags: [],\n    description: 'flag: Tokelau',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇱',\n    names: ['timor_leste'],\n    tags: [],\n    description: 'flag: Timor-Leste',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇲',\n    names: ['turkmenistan'],\n    tags: [],\n    description: 'flag: Turkmenistan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇳',\n    names: ['tunisia'],\n    tags: [],\n    description: 'flag: Tunisia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇴',\n    names: ['tonga'],\n    tags: [],\n    description: 'flag: Tonga',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇷',\n    names: ['tr'],\n    tags: ['turkey'],\n    description: 'flag: Turkey',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇹',\n    names: ['trinidad_tobago'],\n    tags: [],\n    description: 'flag: Trinidad & Tobago',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇻',\n    names: ['tuvalu'],\n    tags: [],\n    description: 'flag: Tuvalu',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇼',\n    names: ['taiwan'],\n    tags: [],\n    description: 'flag: Taiwan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇹🇿',\n    names: ['tanzania'],\n    tags: [],\n    description: 'flag: Tanzania',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇺🇦',\n    names: ['ukraine'],\n    tags: [],\n    description: 'flag: Ukraine',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇺🇬',\n    names: ['uganda'],\n    tags: [],\n    description: 'flag: Uganda',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇺🇲',\n    names: ['us_outlying_islands'],\n    tags: [],\n    description: 'flag: U.S. Outlying Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇺🇳',\n    names: ['united_nations'],\n    tags: [],\n    description: 'flag: United Nations',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇺🇸',\n    names: ['us'],\n    tags: ['flag', 'united', 'america'],\n    description: 'flag: United States',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇺🇾',\n    names: ['uruguay'],\n    tags: [],\n    description: 'flag: Uruguay',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇺🇿',\n    names: ['uzbekistan'],\n    tags: [],\n    description: 'flag: Uzbekistan',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇻🇦',\n    names: ['vatican_city'],\n    tags: [],\n    description: 'flag: Vatican City',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇻🇨',\n    names: ['st_vincent_grenadines'],\n    tags: [],\n    description: 'flag: St. Vincent & Grenadines',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇻🇪',\n    names: ['venezuela'],\n    tags: [],\n    description: 'flag: Venezuela',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇻🇬',\n    names: ['british_virgin_islands'],\n    tags: [],\n    description: 'flag: British Virgin Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇻🇮',\n    names: ['us_virgin_islands'],\n    tags: [],\n    description: 'flag: U.S. Virgin Islands',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇻🇳',\n    names: ['vietnam'],\n    tags: [],\n    description: 'flag: Vietnam',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇻🇺',\n    names: ['vanuatu'],\n    tags: [],\n    description: 'flag: Vanuatu',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇼🇫',\n    names: ['wallis_futuna'],\n    tags: [],\n    description: 'flag: Wallis & Futuna',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇼🇸',\n    names: ['samoa'],\n    tags: [],\n    description: 'flag: Samoa',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇽🇰',\n    names: ['kosovo'],\n    tags: [],\n    description: 'flag: Kosovo',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇾🇪',\n    names: ['yemen'],\n    tags: [],\n    description: 'flag: Yemen',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇾🇹',\n    names: ['mayotte'],\n    tags: [],\n    description: 'flag: Mayotte',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇿🇦',\n    names: ['south_africa'],\n    tags: [],\n    description: 'flag: South Africa',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇿🇲',\n    names: ['zambia'],\n    tags: [],\n    description: 'flag: Zambia',\n    category: 'Flags'\n  },\n  {\n    emoji: '🇿🇼',\n    names: ['zimbabwe'],\n    tags: [],\n    description: 'flag: Zimbabwe',\n    category: 'Flags'\n  },\n  {\n    emoji: '🏴󠁧󠁢󠁥󠁮󠁧󠁿',\n    names: ['england'],\n    tags: [],\n    description: 'flag: England',\n    category: 'Flags'\n  },\n  {\n    emoji: '🏴󠁧󠁢󠁳󠁣󠁴󠁿',\n    names: ['scotland'],\n    tags: [],\n    description: 'flag: Scotland',\n    category: 'Flags'\n  },\n  {\n    emoji: '🏴󠁧󠁢󠁷󠁬󠁳󠁿',\n    names: ['wales'],\n    tags: [],\n    description: 'flag: Wales',\n    category: 'Flags'\n  }\n]\n\n/**\n * Map of names to emoji.\n *\n * @type {Record<string, string>}\n */\nconst nameToEmoji = {\n  100: '💯',\n  1234: '🔢',\n  grinning: '😀',\n  smiley: '😃',\n  smile: '😄',\n  grin: '😁',\n  laughing: '😆',\n  satisfied: '😆',\n  sweat_smile: '😅',\n  rofl: '🤣',\n  joy: '😂',\n  slightly_smiling_face: '🙂',\n  upside_down_face: '🙃',\n  melting_face: '🫠',\n  wink: '😉',\n  blush: '😊',\n  innocent: '😇',\n  smiling_face_with_three_hearts: '🥰',\n  heart_eyes: '😍',\n  star_struck: '🤩',\n  kissing_heart: '😘',\n  kissing: '😗',\n  relaxed: '☺️',\n  kissing_closed_eyes: '😚',\n  kissing_smiling_eyes: '😙',\n  smiling_face_with_tear: '🥲',\n  yum: '😋',\n  stuck_out_tongue: '😛',\n  stuck_out_tongue_winking_eye: '😜',\n  zany_face: '🤪',\n  stuck_out_tongue_closed_eyes: '😝',\n  money_mouth_face: '🤑',\n  hugs: '🤗',\n  hand_over_mouth: '🤭',\n  face_with_open_eyes_and_hand_over_mouth: '🫢',\n  face_with_peeking_eye: '🫣',\n  shushing_face: '🤫',\n  thinking: '🤔',\n  saluting_face: '🫡',\n  zipper_mouth_face: '🤐',\n  raised_eyebrow: '🤨',\n  neutral_face: '😐',\n  expressionless: '😑',\n  no_mouth: '😶',\n  dotted_line_face: '🫥',\n  face_in_clouds: '😶‍🌫️',\n  smirk: '😏',\n  unamused: '😒',\n  roll_eyes: '🙄',\n  grimacing: '😬',\n  face_exhaling: '😮‍💨',\n  lying_face: '🤥',\n  shaking_face: '🫨',\n  relieved: '😌',\n  pensive: '😔',\n  sleepy: '😪',\n  drooling_face: '🤤',\n  sleeping: '😴',\n  mask: '😷',\n  face_with_thermometer: '🤒',\n  face_with_head_bandage: '🤕',\n  nauseated_face: '🤢',\n  vomiting_face: '🤮',\n  sneezing_face: '🤧',\n  hot_face: '🥵',\n  cold_face: '🥶',\n  woozy_face: '🥴',\n  dizzy_face: '😵',\n  face_with_spiral_eyes: '😵‍💫',\n  exploding_head: '🤯',\n  cowboy_hat_face: '🤠',\n  partying_face: '🥳',\n  disguised_face: '🥸',\n  sunglasses: '😎',\n  nerd_face: '🤓',\n  monocle_face: '🧐',\n  confused: '😕',\n  face_with_diagonal_mouth: '🫤',\n  worried: '😟',\n  slightly_frowning_face: '🙁',\n  frowning_face: '☹️',\n  open_mouth: '😮',\n  hushed: '😯',\n  astonished: '😲',\n  flushed: '😳',\n  pleading_face: '🥺',\n  face_holding_back_tears: '🥹',\n  frowning: '😦',\n  anguished: '😧',\n  fearful: '😨',\n  cold_sweat: '😰',\n  disappointed_relieved: '😥',\n  cry: '😢',\n  sob: '😭',\n  scream: '😱',\n  confounded: '😖',\n  persevere: '😣',\n  disappointed: '😞',\n  sweat: '😓',\n  weary: '😩',\n  tired_face: '😫',\n  yawning_face: '🥱',\n  triumph: '😤',\n  rage: '😡',\n  pout: '😡',\n  angry: '😠',\n  cursing_face: '🤬',\n  smiling_imp: '😈',\n  imp: '👿',\n  skull: '💀',\n  skull_and_crossbones: '☠️',\n  hankey: '💩',\n  poop: '💩',\n  shit: '💩',\n  clown_face: '🤡',\n  japanese_ogre: '👹',\n  japanese_goblin: '👺',\n  ghost: '👻',\n  alien: '👽',\n  space_invader: '👾',\n  robot: '🤖',\n  smiley_cat: '😺',\n  smile_cat: '😸',\n  joy_cat: '😹',\n  heart_eyes_cat: '😻',\n  smirk_cat: '😼',\n  kissing_cat: '😽',\n  scream_cat: '🙀',\n  crying_cat_face: '😿',\n  pouting_cat: '😾',\n  see_no_evil: '🙈',\n  hear_no_evil: '🙉',\n  speak_no_evil: '🙊',\n  love_letter: '💌',\n  cupid: '💘',\n  gift_heart: '💝',\n  sparkling_heart: '💖',\n  heartpulse: '💗',\n  heartbeat: '💓',\n  revolving_hearts: '💞',\n  two_hearts: '💕',\n  heart_decoration: '💟',\n  heavy_heart_exclamation: '❣️',\n  broken_heart: '💔',\n  heart_on_fire: '❤️‍🔥',\n  mending_heart: '❤️‍🩹',\n  heart: '❤️',\n  pink_heart: '🩷',\n  orange_heart: '🧡',\n  yellow_heart: '💛',\n  green_heart: '💚',\n  blue_heart: '💙',\n  light_blue_heart: '🩵',\n  purple_heart: '💜',\n  brown_heart: '🤎',\n  black_heart: '🖤',\n  grey_heart: '🩶',\n  white_heart: '🤍',\n  kiss: '💋',\n  anger: '💢',\n  boom: '💥',\n  collision: '💥',\n  dizzy: '💫',\n  sweat_drops: '💦',\n  dash: '💨',\n  hole: '🕳️',\n  speech_balloon: '💬',\n  eye_speech_bubble: '👁️‍🗨️',\n  left_speech_bubble: '🗨️',\n  right_anger_bubble: '🗯️',\n  thought_balloon: '💭',\n  zzz: '💤',\n  wave: '👋',\n  raised_back_of_hand: '🤚',\n  raised_hand_with_fingers_splayed: '🖐️',\n  hand: '✋',\n  raised_hand: '✋',\n  vulcan_salute: '🖖',\n  rightwards_hand: '🫱',\n  leftwards_hand: '🫲',\n  palm_down_hand: '🫳',\n  palm_up_hand: '🫴',\n  leftwards_pushing_hand: '🫷',\n  rightwards_pushing_hand: '🫸',\n  ok_hand: '👌',\n  pinched_fingers: '🤌',\n  pinching_hand: '🤏',\n  v: '✌️',\n  crossed_fingers: '🤞',\n  hand_with_index_finger_and_thumb_crossed: '🫰',\n  love_you_gesture: '🤟',\n  metal: '🤘',\n  call_me_hand: '🤙',\n  point_left: '👈',\n  point_right: '👉',\n  point_up_2: '👆',\n  middle_finger: '🖕',\n  fu: '🖕',\n  point_down: '👇',\n  point_up: '☝️',\n  index_pointing_at_the_viewer: '🫵',\n  '+1': '👍',\n  thumbsup: '👍',\n  '-1': '👎',\n  thumbsdown: '👎',\n  fist_raised: '✊',\n  fist: '✊',\n  fist_oncoming: '👊',\n  facepunch: '👊',\n  punch: '👊',\n  fist_left: '🤛',\n  fist_right: '🤜',\n  clap: '👏',\n  raised_hands: '🙌',\n  heart_hands: '🫶',\n  open_hands: '👐',\n  palms_up_together: '🤲',\n  handshake: '🤝',\n  pray: '🙏',\n  writing_hand: '✍️',\n  nail_care: '💅',\n  selfie: '🤳',\n  muscle: '💪',\n  mechanical_arm: '🦾',\n  mechanical_leg: '🦿',\n  leg: '🦵',\n  foot: '🦶',\n  ear: '👂',\n  ear_with_hearing_aid: '🦻',\n  nose: '👃',\n  brain: '🧠',\n  anatomical_heart: '🫀',\n  lungs: '🫁',\n  tooth: '🦷',\n  bone: '🦴',\n  eyes: '👀',\n  eye: '👁️',\n  tongue: '👅',\n  lips: '👄',\n  biting_lip: '🫦',\n  baby: '👶',\n  child: '🧒',\n  boy: '👦',\n  girl: '👧',\n  adult: '🧑',\n  blond_haired_person: '👱',\n  man: '👨',\n  bearded_person: '🧔',\n  man_beard: '🧔‍♂️',\n  woman_beard: '🧔‍♀️',\n  red_haired_man: '👨‍🦰',\n  curly_haired_man: '👨‍🦱',\n  white_haired_man: '👨‍🦳',\n  bald_man: '👨‍🦲',\n  woman: '👩',\n  red_haired_woman: '👩‍🦰',\n  person_red_hair: '🧑‍🦰',\n  curly_haired_woman: '👩‍🦱',\n  person_curly_hair: '🧑‍🦱',\n  white_haired_woman: '👩‍🦳',\n  person_white_hair: '🧑‍🦳',\n  bald_woman: '👩‍🦲',\n  person_bald: '🧑‍🦲',\n  blond_haired_woman: '👱‍♀️',\n  blonde_woman: '👱‍♀️',\n  blond_haired_man: '👱‍♂️',\n  older_adult: '🧓',\n  older_man: '👴',\n  older_woman: '👵',\n  frowning_person: '🙍',\n  frowning_man: '🙍‍♂️',\n  frowning_woman: '🙍‍♀️',\n  pouting_face: '🙎',\n  pouting_man: '🙎‍♂️',\n  pouting_woman: '🙎‍♀️',\n  no_good: '🙅',\n  no_good_man: '🙅‍♂️',\n  ng_man: '🙅‍♂️',\n  no_good_woman: '🙅‍♀️',\n  ng_woman: '🙅‍♀️',\n  ok_person: '🙆',\n  ok_man: '🙆‍♂️',\n  ok_woman: '🙆‍♀️',\n  tipping_hand_person: '💁',\n  information_desk_person: '💁',\n  tipping_hand_man: '💁‍♂️',\n  sassy_man: '💁‍♂️',\n  tipping_hand_woman: '💁‍♀️',\n  sassy_woman: '💁‍♀️',\n  raising_hand: '🙋',\n  raising_hand_man: '🙋‍♂️',\n  raising_hand_woman: '🙋‍♀️',\n  deaf_person: '🧏',\n  deaf_man: '🧏‍♂️',\n  deaf_woman: '🧏‍♀️',\n  bow: '🙇',\n  bowing_man: '🙇‍♂️',\n  bowing_woman: '🙇‍♀️',\n  facepalm: '🤦',\n  man_facepalming: '🤦‍♂️',\n  woman_facepalming: '🤦‍♀️',\n  shrug: '🤷',\n  man_shrugging: '🤷‍♂️',\n  woman_shrugging: '🤷‍♀️',\n  health_worker: '🧑‍⚕️',\n  man_health_worker: '👨‍⚕️',\n  woman_health_worker: '👩‍⚕️',\n  student: '🧑‍🎓',\n  man_student: '👨‍🎓',\n  woman_student: '👩‍🎓',\n  teacher: '🧑‍🏫',\n  man_teacher: '👨‍🏫',\n  woman_teacher: '👩‍🏫',\n  judge: '🧑‍⚖️',\n  man_judge: '👨‍⚖️',\n  woman_judge: '👩‍⚖️',\n  farmer: '🧑‍🌾',\n  man_farmer: '👨‍🌾',\n  woman_farmer: '👩‍🌾',\n  cook: '🧑‍🍳',\n  man_cook: '👨‍🍳',\n  woman_cook: '👩‍🍳',\n  mechanic: '🧑‍🔧',\n  man_mechanic: '👨‍🔧',\n  woman_mechanic: '👩‍🔧',\n  factory_worker: '🧑‍🏭',\n  man_factory_worker: '👨‍🏭',\n  woman_factory_worker: '👩‍🏭',\n  office_worker: '🧑‍💼',\n  man_office_worker: '👨‍💼',\n  woman_office_worker: '👩‍💼',\n  scientist: '🧑‍🔬',\n  man_scientist: '👨‍🔬',\n  woman_scientist: '👩‍🔬',\n  technologist: '🧑‍💻',\n  man_technologist: '👨‍💻',\n  woman_technologist: '👩‍💻',\n  singer: '🧑‍🎤',\n  man_singer: '👨‍🎤',\n  woman_singer: '👩‍🎤',\n  artist: '🧑‍🎨',\n  man_artist: '👨‍🎨',\n  woman_artist: '👩‍🎨',\n  pilot: '🧑‍✈️',\n  man_pilot: '👨‍✈️',\n  woman_pilot: '👩‍✈️',\n  astronaut: '🧑‍🚀',\n  man_astronaut: '👨‍🚀',\n  woman_astronaut: '👩‍🚀',\n  firefighter: '🧑‍🚒',\n  man_firefighter: '👨‍🚒',\n  woman_firefighter: '👩‍🚒',\n  police_officer: '👮',\n  cop: '👮',\n  policeman: '👮‍♂️',\n  policewoman: '👮‍♀️',\n  detective: '🕵️',\n  male_detective: '🕵️‍♂️',\n  female_detective: '🕵️‍♀️',\n  guard: '💂',\n  guardsman: '💂‍♂️',\n  guardswoman: '💂‍♀️',\n  ninja: '🥷',\n  construction_worker: '👷',\n  construction_worker_man: '👷‍♂️',\n  construction_worker_woman: '👷‍♀️',\n  person_with_crown: '🫅',\n  prince: '🤴',\n  princess: '👸',\n  person_with_turban: '👳',\n  man_with_turban: '👳‍♂️',\n  woman_with_turban: '👳‍♀️',\n  man_with_gua_pi_mao: '👲',\n  woman_with_headscarf: '🧕',\n  person_in_tuxedo: '🤵',\n  man_in_tuxedo: '🤵‍♂️',\n  woman_in_tuxedo: '🤵‍♀️',\n  person_with_veil: '👰',\n  man_with_veil: '👰‍♂️',\n  woman_with_veil: '👰‍♀️',\n  bride_with_veil: '👰‍♀️',\n  pregnant_woman: '🤰',\n  pregnant_man: '🫃',\n  pregnant_person: '🫄',\n  breast_feeding: '🤱',\n  woman_feeding_baby: '👩‍🍼',\n  man_feeding_baby: '👨‍🍼',\n  person_feeding_baby: '🧑‍🍼',\n  angel: '👼',\n  santa: '🎅',\n  mrs_claus: '🤶',\n  mx_claus: '🧑‍🎄',\n  superhero: '🦸',\n  superhero_man: '🦸‍♂️',\n  superhero_woman: '🦸‍♀️',\n  supervillain: '🦹',\n  supervillain_man: '🦹‍♂️',\n  supervillain_woman: '🦹‍♀️',\n  mage: '🧙',\n  mage_man: '🧙‍♂️',\n  mage_woman: '🧙‍♀️',\n  fairy: '🧚',\n  fairy_man: '🧚‍♂️',\n  fairy_woman: '🧚‍♀️',\n  vampire: '🧛',\n  vampire_man: '🧛‍♂️',\n  vampire_woman: '🧛‍♀️',\n  merperson: '🧜',\n  merman: '🧜‍♂️',\n  mermaid: '🧜‍♀️',\n  elf: '🧝',\n  elf_man: '🧝‍♂️',\n  elf_woman: '🧝‍♀️',\n  genie: '🧞',\n  genie_man: '🧞‍♂️',\n  genie_woman: '🧞‍♀️',\n  zombie: '🧟',\n  zombie_man: '🧟‍♂️',\n  zombie_woman: '🧟‍♀️',\n  troll: '🧌',\n  massage: '💆',\n  massage_man: '💆‍♂️',\n  massage_woman: '💆‍♀️',\n  haircut: '💇',\n  haircut_man: '💇‍♂️',\n  haircut_woman: '💇‍♀️',\n  walking: '🚶',\n  walking_man: '🚶‍♂️',\n  walking_woman: '🚶‍♀️',\n  standing_person: '🧍',\n  standing_man: '🧍‍♂️',\n  standing_woman: '🧍‍♀️',\n  kneeling_person: '🧎',\n  kneeling_man: '🧎‍♂️',\n  kneeling_woman: '🧎‍♀️',\n  person_with_probing_cane: '🧑‍🦯',\n  man_with_probing_cane: '👨‍🦯',\n  woman_with_probing_cane: '👩‍🦯',\n  person_in_motorized_wheelchair: '🧑‍🦼',\n  man_in_motorized_wheelchair: '👨‍🦼',\n  woman_in_motorized_wheelchair: '👩‍🦼',\n  person_in_manual_wheelchair: '🧑‍🦽',\n  man_in_manual_wheelchair: '👨‍🦽',\n  woman_in_manual_wheelchair: '👩‍🦽',\n  runner: '🏃',\n  running: '🏃',\n  running_man: '🏃‍♂️',\n  running_woman: '🏃‍♀️',\n  woman_dancing: '💃',\n  dancer: '💃',\n  man_dancing: '🕺',\n  business_suit_levitating: '🕴️',\n  dancers: '👯',\n  dancing_men: '👯‍♂️',\n  dancing_women: '👯‍♀️',\n  sauna_person: '🧖',\n  sauna_man: '🧖‍♂️',\n  sauna_woman: '🧖‍♀️',\n  climbing: '🧗',\n  climbing_man: '🧗‍♂️',\n  climbing_woman: '🧗‍♀️',\n  person_fencing: '🤺',\n  horse_racing: '🏇',\n  skier: '⛷️',\n  snowboarder: '🏂',\n  golfing: '🏌️',\n  golfing_man: '🏌️‍♂️',\n  golfing_woman: '🏌️‍♀️',\n  surfer: '🏄',\n  surfing_man: '🏄‍♂️',\n  surfing_woman: '🏄‍♀️',\n  rowboat: '🚣',\n  rowing_man: '🚣‍♂️',\n  rowing_woman: '🚣‍♀️',\n  swimmer: '🏊',\n  swimming_man: '🏊‍♂️',\n  swimming_woman: '🏊‍♀️',\n  bouncing_ball_person: '⛹️',\n  bouncing_ball_man: '⛹️‍♂️',\n  basketball_man: '⛹️‍♂️',\n  bouncing_ball_woman: '⛹️‍♀️',\n  basketball_woman: '⛹️‍♀️',\n  weight_lifting: '🏋️',\n  weight_lifting_man: '🏋️‍♂️',\n  weight_lifting_woman: '🏋️‍♀️',\n  bicyclist: '🚴',\n  biking_man: '🚴‍♂️',\n  biking_woman: '🚴‍♀️',\n  mountain_bicyclist: '🚵',\n  mountain_biking_man: '🚵‍♂️',\n  mountain_biking_woman: '🚵‍♀️',\n  cartwheeling: '🤸',\n  man_cartwheeling: '🤸‍♂️',\n  woman_cartwheeling: '🤸‍♀️',\n  wrestling: '🤼',\n  men_wrestling: '🤼‍♂️',\n  women_wrestling: '🤼‍♀️',\n  water_polo: '🤽',\n  man_playing_water_polo: '🤽‍♂️',\n  woman_playing_water_polo: '🤽‍♀️',\n  handball_person: '🤾',\n  man_playing_handball: '🤾‍♂️',\n  woman_playing_handball: '🤾‍♀️',\n  juggling_person: '🤹',\n  man_juggling: '🤹‍♂️',\n  woman_juggling: '🤹‍♀️',\n  lotus_position: '🧘',\n  lotus_position_man: '🧘‍♂️',\n  lotus_position_woman: '🧘‍♀️',\n  bath: '🛀',\n  sleeping_bed: '🛌',\n  people_holding_hands: '🧑‍🤝‍🧑',\n  two_women_holding_hands: '👭',\n  couple: '👫',\n  two_men_holding_hands: '👬',\n  couplekiss: '💏',\n  couplekiss_man_woman: '👩‍❤️‍💋‍👨',\n  couplekiss_man_man: '👨‍❤️‍💋‍👨',\n  couplekiss_woman_woman: '👩‍❤️‍💋‍👩',\n  couple_with_heart: '💑',\n  couple_with_heart_woman_man: '👩‍❤️‍👨',\n  couple_with_heart_man_man: '👨‍❤️‍👨',\n  couple_with_heart_woman_woman: '👩‍❤️‍👩',\n  family: '👪',\n  family_man_woman_boy: '👨‍👩‍👦',\n  family_man_woman_girl: '👨‍👩‍👧',\n  family_man_woman_girl_boy: '👨‍👩‍👧‍👦',\n  family_man_woman_boy_boy: '👨‍👩‍👦‍👦',\n  family_man_woman_girl_girl: '👨‍👩‍👧‍👧',\n  family_man_man_boy: '👨‍👨‍👦',\n  family_man_man_girl: '👨‍👨‍👧',\n  family_man_man_girl_boy: '👨‍👨‍👧‍👦',\n  family_man_man_boy_boy: '👨‍👨‍👦‍👦',\n  family_man_man_girl_girl: '👨‍👨‍👧‍👧',\n  family_woman_woman_boy: '👩‍👩‍👦',\n  family_woman_woman_girl: '👩‍👩‍👧',\n  family_woman_woman_girl_boy: '👩‍👩‍👧‍👦',\n  family_woman_woman_boy_boy: '👩‍👩‍👦‍👦',\n  family_woman_woman_girl_girl: '👩‍👩‍👧‍👧',\n  family_man_boy: '👨‍👦',\n  family_man_boy_boy: '👨‍👦‍👦',\n  family_man_girl: '👨‍👧',\n  family_man_girl_boy: '👨‍👧‍👦',\n  family_man_girl_girl: '👨‍👧‍👧',\n  family_woman_boy: '👩‍👦',\n  family_woman_boy_boy: '👩‍👦‍👦',\n  family_woman_girl: '👩‍👧',\n  family_woman_girl_boy: '👩‍👧‍👦',\n  family_woman_girl_girl: '👩‍👧‍👧',\n  speaking_head: '🗣️',\n  bust_in_silhouette: '👤',\n  busts_in_silhouette: '👥',\n  people_hugging: '🫂',\n  footprints: '👣',\n  monkey_face: '🐵',\n  monkey: '🐒',\n  gorilla: '🦍',\n  orangutan: '🦧',\n  dog: '🐶',\n  dog2: '🐕',\n  guide_dog: '🦮',\n  service_dog: '🐕‍🦺',\n  poodle: '🐩',\n  wolf: '🐺',\n  fox_face: '🦊',\n  raccoon: '🦝',\n  cat: '🐱',\n  cat2: '🐈',\n  black_cat: '🐈‍⬛',\n  lion: '🦁',\n  tiger: '🐯',\n  tiger2: '🐅',\n  leopard: '🐆',\n  horse: '🐴',\n  moose: '🫎',\n  donkey: '🫏',\n  racehorse: '🐎',\n  unicorn: '🦄',\n  zebra: '🦓',\n  deer: '🦌',\n  bison: '🦬',\n  cow: '🐮',\n  ox: '🐂',\n  water_buffalo: '🐃',\n  cow2: '🐄',\n  pig: '🐷',\n  pig2: '🐖',\n  boar: '🐗',\n  pig_nose: '🐽',\n  ram: '🐏',\n  sheep: '🐑',\n  goat: '🐐',\n  dromedary_camel: '🐪',\n  camel: '🐫',\n  llama: '🦙',\n  giraffe: '🦒',\n  elephant: '🐘',\n  mammoth: '🦣',\n  rhinoceros: '🦏',\n  hippopotamus: '🦛',\n  mouse: '🐭',\n  mouse2: '🐁',\n  rat: '🐀',\n  hamster: '🐹',\n  rabbit: '🐰',\n  rabbit2: '🐇',\n  chipmunk: '🐿️',\n  beaver: '🦫',\n  hedgehog: '🦔',\n  bat: '🦇',\n  bear: '🐻',\n  polar_bear: '🐻‍❄️',\n  koala: '🐨',\n  panda_face: '🐼',\n  sloth: '🦥',\n  otter: '🦦',\n  skunk: '🦨',\n  kangaroo: '🦘',\n  badger: '🦡',\n  feet: '🐾',\n  paw_prints: '🐾',\n  turkey: '🦃',\n  chicken: '🐔',\n  rooster: '🐓',\n  hatching_chick: '🐣',\n  baby_chick: '🐤',\n  hatched_chick: '🐥',\n  bird: '🐦',\n  penguin: '🐧',\n  dove: '🕊️',\n  eagle: '🦅',\n  duck: '🦆',\n  swan: '🦢',\n  owl: '🦉',\n  dodo: '🦤',\n  feather: '🪶',\n  flamingo: '🦩',\n  peacock: '🦚',\n  parrot: '🦜',\n  wing: '🪽',\n  black_bird: '🐦‍⬛',\n  goose: '🪿',\n  frog: '🐸',\n  crocodile: '🐊',\n  turtle: '🐢',\n  lizard: '🦎',\n  snake: '🐍',\n  dragon_face: '🐲',\n  dragon: '🐉',\n  sauropod: '🦕',\n  't-rex': '🦖',\n  whale: '🐳',\n  whale2: '🐋',\n  dolphin: '🐬',\n  flipper: '🐬',\n  seal: '🦭',\n  fish: '🐟',\n  tropical_fish: '🐠',\n  blowfish: '🐡',\n  shark: '🦈',\n  octopus: '🐙',\n  shell: '🐚',\n  coral: '🪸',\n  jellyfish: '🪼',\n  snail: '🐌',\n  butterfly: '🦋',\n  bug: '🐛',\n  ant: '🐜',\n  bee: '🐝',\n  honeybee: '🐝',\n  beetle: '🪲',\n  lady_beetle: '🐞',\n  cricket: '🦗',\n  cockroach: '🪳',\n  spider: '🕷️',\n  spider_web: '🕸️',\n  scorpion: '🦂',\n  mosquito: '🦟',\n  fly: '🪰',\n  worm: '🪱',\n  microbe: '🦠',\n  bouquet: '💐',\n  cherry_blossom: '🌸',\n  white_flower: '💮',\n  lotus: '🪷',\n  rosette: '🏵️',\n  rose: '🌹',\n  wilted_flower: '🥀',\n  hibiscus: '🌺',\n  sunflower: '🌻',\n  blossom: '🌼',\n  tulip: '🌷',\n  hyacinth: '🪻',\n  seedling: '🌱',\n  potted_plant: '🪴',\n  evergreen_tree: '🌲',\n  deciduous_tree: '🌳',\n  palm_tree: '🌴',\n  cactus: '🌵',\n  ear_of_rice: '🌾',\n  herb: '🌿',\n  shamrock: '☘️',\n  four_leaf_clover: '🍀',\n  maple_leaf: '🍁',\n  fallen_leaf: '🍂',\n  leaves: '🍃',\n  empty_nest: '🪹',\n  nest_with_eggs: '🪺',\n  mushroom: '🍄',\n  grapes: '🍇',\n  melon: '🍈',\n  watermelon: '🍉',\n  tangerine: '🍊',\n  orange: '🍊',\n  mandarin: '🍊',\n  lemon: '🍋',\n  banana: '🍌',\n  pineapple: '🍍',\n  mango: '🥭',\n  apple: '🍎',\n  green_apple: '🍏',\n  pear: '🍐',\n  peach: '🍑',\n  cherries: '🍒',\n  strawberry: '🍓',\n  blueberries: '🫐',\n  kiwi_fruit: '🥝',\n  tomato: '🍅',\n  olive: '🫒',\n  coconut: '🥥',\n  avocado: '🥑',\n  eggplant: '🍆',\n  potato: '🥔',\n  carrot: '🥕',\n  corn: '🌽',\n  hot_pepper: '🌶️',\n  bell_pepper: '🫑',\n  cucumber: '🥒',\n  leafy_green: '🥬',\n  broccoli: '🥦',\n  garlic: '🧄',\n  onion: '🧅',\n  peanuts: '🥜',\n  beans: '🫘',\n  chestnut: '🌰',\n  ginger_root: '🫚',\n  pea_pod: '🫛',\n  bread: '🍞',\n  croissant: '🥐',\n  baguette_bread: '🥖',\n  flatbread: '🫓',\n  pretzel: '🥨',\n  bagel: '🥯',\n  pancakes: '🥞',\n  waffle: '🧇',\n  cheese: '🧀',\n  meat_on_bone: '🍖',\n  poultry_leg: '🍗',\n  cut_of_meat: '🥩',\n  bacon: '🥓',\n  hamburger: '🍔',\n  fries: '🍟',\n  pizza: '🍕',\n  hotdog: '🌭',\n  sandwich: '🥪',\n  taco: '🌮',\n  burrito: '🌯',\n  tamale: '🫔',\n  stuffed_flatbread: '🥙',\n  falafel: '🧆',\n  egg: '🥚',\n  fried_egg: '🍳',\n  shallow_pan_of_food: '🥘',\n  stew: '🍲',\n  fondue: '🫕',\n  bowl_with_spoon: '🥣',\n  green_salad: '🥗',\n  popcorn: '🍿',\n  butter: '🧈',\n  salt: '🧂',\n  canned_food: '🥫',\n  bento: '🍱',\n  rice_cracker: '🍘',\n  rice_ball: '🍙',\n  rice: '🍚',\n  curry: '🍛',\n  ramen: '🍜',\n  spaghetti: '🍝',\n  sweet_potato: '🍠',\n  oden: '🍢',\n  sushi: '🍣',\n  fried_shrimp: '🍤',\n  fish_cake: '🍥',\n  moon_cake: '🥮',\n  dango: '🍡',\n  dumpling: '🥟',\n  fortune_cookie: '🥠',\n  takeout_box: '🥡',\n  crab: '🦀',\n  lobster: '🦞',\n  shrimp: '🦐',\n  squid: '🦑',\n  oyster: '🦪',\n  icecream: '🍦',\n  shaved_ice: '🍧',\n  ice_cream: '🍨',\n  doughnut: '🍩',\n  cookie: '🍪',\n  birthday: '🎂',\n  cake: '🍰',\n  cupcake: '🧁',\n  pie: '🥧',\n  chocolate_bar: '🍫',\n  candy: '🍬',\n  lollipop: '🍭',\n  custard: '🍮',\n  honey_pot: '🍯',\n  baby_bottle: '🍼',\n  milk_glass: '🥛',\n  coffee: '☕',\n  teapot: '🫖',\n  tea: '🍵',\n  sake: '🍶',\n  champagne: '🍾',\n  wine_glass: '🍷',\n  cocktail: '🍸',\n  tropical_drink: '🍹',\n  beer: '🍺',\n  beers: '🍻',\n  clinking_glasses: '🥂',\n  tumbler_glass: '🥃',\n  pouring_liquid: '🫗',\n  cup_with_straw: '🥤',\n  bubble_tea: '🧋',\n  beverage_box: '🧃',\n  mate: '🧉',\n  ice_cube: '🧊',\n  chopsticks: '🥢',\n  plate_with_cutlery: '🍽️',\n  fork_and_knife: '🍴',\n  spoon: '🥄',\n  hocho: '🔪',\n  knife: '🔪',\n  jar: '🫙',\n  amphora: '🏺',\n  earth_africa: '🌍',\n  earth_americas: '🌎',\n  earth_asia: '🌏',\n  globe_with_meridians: '🌐',\n  world_map: '🗺️',\n  japan: '🗾',\n  compass: '🧭',\n  mountain_snow: '🏔️',\n  mountain: '⛰️',\n  volcano: '🌋',\n  mount_fuji: '🗻',\n  camping: '🏕️',\n  beach_umbrella: '🏖️',\n  desert: '🏜️',\n  desert_island: '🏝️',\n  national_park: '🏞️',\n  stadium: '🏟️',\n  classical_building: '🏛️',\n  building_construction: '🏗️',\n  bricks: '🧱',\n  rock: '🪨',\n  wood: '🪵',\n  hut: '🛖',\n  houses: '🏘️',\n  derelict_house: '🏚️',\n  house: '🏠',\n  house_with_garden: '🏡',\n  office: '🏢',\n  post_office: '🏣',\n  european_post_office: '🏤',\n  hospital: '🏥',\n  bank: '🏦',\n  hotel: '🏨',\n  love_hotel: '🏩',\n  convenience_store: '🏪',\n  school: '🏫',\n  department_store: '🏬',\n  factory: '🏭',\n  japanese_castle: '🏯',\n  european_castle: '🏰',\n  wedding: '💒',\n  tokyo_tower: '🗼',\n  statue_of_liberty: '🗽',\n  church: '⛪',\n  mosque: '🕌',\n  hindu_temple: '🛕',\n  synagogue: '🕍',\n  shinto_shrine: '⛩️',\n  kaaba: '🕋',\n  fountain: '⛲',\n  tent: '⛺',\n  foggy: '🌁',\n  night_with_stars: '🌃',\n  cityscape: '🏙️',\n  sunrise_over_mountains: '🌄',\n  sunrise: '🌅',\n  city_sunset: '🌆',\n  city_sunrise: '🌇',\n  bridge_at_night: '🌉',\n  hotsprings: '♨️',\n  carousel_horse: '🎠',\n  playground_slide: '🛝',\n  ferris_wheel: '🎡',\n  roller_coaster: '🎢',\n  barber: '💈',\n  circus_tent: '🎪',\n  steam_locomotive: '🚂',\n  railway_car: '🚃',\n  bullettrain_side: '🚄',\n  bullettrain_front: '🚅',\n  train2: '🚆',\n  metro: '🚇',\n  light_rail: '🚈',\n  station: '🚉',\n  tram: '🚊',\n  monorail: '🚝',\n  mountain_railway: '🚞',\n  train: '🚋',\n  bus: '🚌',\n  oncoming_bus: '🚍',\n  trolleybus: '🚎',\n  minibus: '🚐',\n  ambulance: '🚑',\n  fire_engine: '🚒',\n  police_car: '🚓',\n  oncoming_police_car: '🚔',\n  taxi: '🚕',\n  oncoming_taxi: '🚖',\n  car: '🚗',\n  red_car: '🚗',\n  oncoming_automobile: '🚘',\n  blue_car: '🚙',\n  pickup_truck: '🛻',\n  truck: '🚚',\n  articulated_lorry: '🚛',\n  tractor: '🚜',\n  racing_car: '🏎️',\n  motorcycle: '🏍️',\n  motor_scooter: '🛵',\n  manual_wheelchair: '🦽',\n  motorized_wheelchair: '🦼',\n  auto_rickshaw: '🛺',\n  bike: '🚲',\n  kick_scooter: '🛴',\n  skateboard: '🛹',\n  roller_skate: '🛼',\n  busstop: '🚏',\n  motorway: '🛣️',\n  railway_track: '🛤️',\n  oil_drum: '🛢️',\n  fuelpump: '⛽',\n  wheel: '🛞',\n  rotating_light: '🚨',\n  traffic_light: '🚥',\n  vertical_traffic_light: '🚦',\n  stop_sign: '🛑',\n  construction: '🚧',\n  anchor: '⚓',\n  ring_buoy: '🛟',\n  boat: '⛵',\n  sailboat: '⛵',\n  canoe: '🛶',\n  speedboat: '🚤',\n  passenger_ship: '🛳️',\n  ferry: '⛴️',\n  motor_boat: '🛥️',\n  ship: '🚢',\n  airplane: '✈️',\n  small_airplane: '🛩️',\n  flight_departure: '🛫',\n  flight_arrival: '🛬',\n  parachute: '🪂',\n  seat: '💺',\n  helicopter: '🚁',\n  suspension_railway: '🚟',\n  mountain_cableway: '🚠',\n  aerial_tramway: '🚡',\n  artificial_satellite: '🛰️',\n  rocket: '🚀',\n  flying_saucer: '🛸',\n  bellhop_bell: '🛎️',\n  luggage: '🧳',\n  hourglass: '⌛',\n  hourglass_flowing_sand: '⏳',\n  watch: '⌚',\n  alarm_clock: '⏰',\n  stopwatch: '⏱️',\n  timer_clock: '⏲️',\n  mantelpiece_clock: '🕰️',\n  clock12: '🕛',\n  clock1230: '🕧',\n  clock1: '🕐',\n  clock130: '🕜',\n  clock2: '🕑',\n  clock230: '🕝',\n  clock3: '🕒',\n  clock330: '🕞',\n  clock4: '🕓',\n  clock430: '🕟',\n  clock5: '🕔',\n  clock530: '🕠',\n  clock6: '🕕',\n  clock630: '🕡',\n  clock7: '🕖',\n  clock730: '🕢',\n  clock8: '🕗',\n  clock830: '🕣',\n  clock9: '🕘',\n  clock930: '🕤',\n  clock10: '🕙',\n  clock1030: '🕥',\n  clock11: '🕚',\n  clock1130: '🕦',\n  new_moon: '🌑',\n  waxing_crescent_moon: '🌒',\n  first_quarter_moon: '🌓',\n  moon: '🌔',\n  waxing_gibbous_moon: '🌔',\n  full_moon: '🌕',\n  waning_gibbous_moon: '🌖',\n  last_quarter_moon: '🌗',\n  waning_crescent_moon: '🌘',\n  crescent_moon: '🌙',\n  new_moon_with_face: '🌚',\n  first_quarter_moon_with_face: '🌛',\n  last_quarter_moon_with_face: '🌜',\n  thermometer: '🌡️',\n  sunny: '☀️',\n  full_moon_with_face: '🌝',\n  sun_with_face: '🌞',\n  ringed_planet: '🪐',\n  star: '⭐',\n  star2: '🌟',\n  stars: '🌠',\n  milky_way: '🌌',\n  cloud: '☁️',\n  partly_sunny: '⛅',\n  cloud_with_lightning_and_rain: '⛈️',\n  sun_behind_small_cloud: '🌤️',\n  sun_behind_large_cloud: '🌥️',\n  sun_behind_rain_cloud: '🌦️',\n  cloud_with_rain: '🌧️',\n  cloud_with_snow: '🌨️',\n  cloud_with_lightning: '🌩️',\n  tornado: '🌪️',\n  fog: '🌫️',\n  wind_face: '🌬️',\n  cyclone: '🌀',\n  rainbow: '🌈',\n  closed_umbrella: '🌂',\n  open_umbrella: '☂️',\n  umbrella: '☔',\n  parasol_on_ground: '⛱️',\n  zap: '⚡',\n  snowflake: '❄️',\n  snowman_with_snow: '☃️',\n  snowman: '⛄',\n  comet: '☄️',\n  fire: '🔥',\n  droplet: '💧',\n  ocean: '🌊',\n  jack_o_lantern: '🎃',\n  christmas_tree: '🎄',\n  fireworks: '🎆',\n  sparkler: '🎇',\n  firecracker: '🧨',\n  sparkles: '✨',\n  balloon: '🎈',\n  tada: '🎉',\n  confetti_ball: '🎊',\n  tanabata_tree: '🎋',\n  bamboo: '🎍',\n  dolls: '🎎',\n  flags: '🎏',\n  wind_chime: '🎐',\n  rice_scene: '🎑',\n  red_envelope: '🧧',\n  ribbon: '🎀',\n  gift: '🎁',\n  reminder_ribbon: '🎗️',\n  tickets: '🎟️',\n  ticket: '🎫',\n  medal_military: '🎖️',\n  trophy: '🏆',\n  medal_sports: '🏅',\n  '1st_place_medal': '🥇',\n  '2nd_place_medal': '🥈',\n  '3rd_place_medal': '🥉',\n  soccer: '⚽',\n  baseball: '⚾',\n  softball: '🥎',\n  basketball: '🏀',\n  volleyball: '🏐',\n  football: '🏈',\n  rugby_football: '🏉',\n  tennis: '🎾',\n  flying_disc: '🥏',\n  bowling: '🎳',\n  cricket_game: '🏏',\n  field_hockey: '🏑',\n  ice_hockey: '🏒',\n  lacrosse: '🥍',\n  ping_pong: '🏓',\n  badminton: '🏸',\n  boxing_glove: '🥊',\n  martial_arts_uniform: '🥋',\n  goal_net: '🥅',\n  golf: '⛳',\n  ice_skate: '⛸️',\n  fishing_pole_and_fish: '🎣',\n  diving_mask: '🤿',\n  running_shirt_with_sash: '🎽',\n  ski: '🎿',\n  sled: '🛷',\n  curling_stone: '🥌',\n  dart: '🎯',\n  yo_yo: '🪀',\n  kite: '🪁',\n  gun: '🔫',\n  '8ball': '🎱',\n  crystal_ball: '🔮',\n  magic_wand: '🪄',\n  video_game: '🎮',\n  joystick: '🕹️',\n  slot_machine: '🎰',\n  game_die: '🎲',\n  jigsaw: '🧩',\n  teddy_bear: '🧸',\n  pinata: '🪅',\n  mirror_ball: '🪩',\n  nesting_dolls: '🪆',\n  spades: '♠️',\n  hearts: '♥️',\n  diamonds: '♦️',\n  clubs: '♣️',\n  chess_pawn: '♟️',\n  black_joker: '🃏',\n  mahjong: '🀄',\n  flower_playing_cards: '🎴',\n  performing_arts: '🎭',\n  framed_picture: '🖼️',\n  art: '🎨',\n  thread: '🧵',\n  sewing_needle: '🪡',\n  yarn: '🧶',\n  knot: '🪢',\n  eyeglasses: '👓',\n  dark_sunglasses: '🕶️',\n  goggles: '🥽',\n  lab_coat: '🥼',\n  safety_vest: '🦺',\n  necktie: '👔',\n  shirt: '👕',\n  tshirt: '👕',\n  jeans: '👖',\n  scarf: '🧣',\n  gloves: '🧤',\n  coat: '🧥',\n  socks: '🧦',\n  dress: '👗',\n  kimono: '👘',\n  sari: '🥻',\n  one_piece_swimsuit: '🩱',\n  swim_brief: '🩲',\n  shorts: '🩳',\n  bikini: '👙',\n  womans_clothes: '👚',\n  folding_hand_fan: '🪭',\n  purse: '👛',\n  handbag: '👜',\n  pouch: '👝',\n  shopping: '🛍️',\n  school_satchel: '🎒',\n  thong_sandal: '🩴',\n  mans_shoe: '👞',\n  shoe: '👞',\n  athletic_shoe: '👟',\n  hiking_boot: '🥾',\n  flat_shoe: '🥿',\n  high_heel: '👠',\n  sandal: '👡',\n  ballet_shoes: '🩰',\n  boot: '👢',\n  hair_pick: '🪮',\n  crown: '👑',\n  womans_hat: '👒',\n  tophat: '🎩',\n  mortar_board: '🎓',\n  billed_cap: '🧢',\n  military_helmet: '🪖',\n  rescue_worker_helmet: '⛑️',\n  prayer_beads: '📿',\n  lipstick: '💄',\n  ring: '💍',\n  gem: '💎',\n  mute: '🔇',\n  speaker: '🔈',\n  sound: '🔉',\n  loud_sound: '🔊',\n  loudspeaker: '📢',\n  mega: '📣',\n  postal_horn: '📯',\n  bell: '🔔',\n  no_bell: '🔕',\n  musical_score: '🎼',\n  musical_note: '🎵',\n  notes: '🎶',\n  studio_microphone: '🎙️',\n  level_slider: '🎚️',\n  control_knobs: '🎛️',\n  microphone: '🎤',\n  headphones: '🎧',\n  radio: '📻',\n  saxophone: '🎷',\n  accordion: '🪗',\n  guitar: '🎸',\n  musical_keyboard: '🎹',\n  trumpet: '🎺',\n  violin: '🎻',\n  banjo: '🪕',\n  drum: '🥁',\n  long_drum: '🪘',\n  maracas: '🪇',\n  flute: '🪈',\n  iphone: '📱',\n  calling: '📲',\n  phone: '☎️',\n  telephone: '☎️',\n  telephone_receiver: '📞',\n  pager: '📟',\n  fax: '📠',\n  battery: '🔋',\n  low_battery: '🪫',\n  electric_plug: '🔌',\n  computer: '💻',\n  desktop_computer: '🖥️',\n  printer: '🖨️',\n  keyboard: '⌨️',\n  computer_mouse: '🖱️',\n  trackball: '🖲️',\n  minidisc: '💽',\n  floppy_disk: '💾',\n  cd: '💿',\n  dvd: '📀',\n  abacus: '🧮',\n  movie_camera: '🎥',\n  film_strip: '🎞️',\n  film_projector: '📽️',\n  clapper: '🎬',\n  tv: '📺',\n  camera: '📷',\n  camera_flash: '📸',\n  video_camera: '📹',\n  vhs: '📼',\n  mag: '🔍',\n  mag_right: '🔎',\n  candle: '🕯️',\n  bulb: '💡',\n  flashlight: '🔦',\n  izakaya_lantern: '🏮',\n  lantern: '🏮',\n  diya_lamp: '🪔',\n  notebook_with_decorative_cover: '📔',\n  closed_book: '📕',\n  book: '📖',\n  open_book: '📖',\n  green_book: '📗',\n  blue_book: '📘',\n  orange_book: '📙',\n  books: '📚',\n  notebook: '📓',\n  ledger: '📒',\n  page_with_curl: '📃',\n  scroll: '📜',\n  page_facing_up: '📄',\n  newspaper: '📰',\n  newspaper_roll: '🗞️',\n  bookmark_tabs: '📑',\n  bookmark: '🔖',\n  label: '🏷️',\n  moneybag: '💰',\n  coin: '🪙',\n  yen: '💴',\n  dollar: '💵',\n  euro: '💶',\n  pound: '💷',\n  money_with_wings: '💸',\n  credit_card: '💳',\n  receipt: '🧾',\n  chart: '💹',\n  envelope: '✉️',\n  email: '📧',\n  'e-mail': '📧',\n  incoming_envelope: '📨',\n  envelope_with_arrow: '📩',\n  outbox_tray: '📤',\n  inbox_tray: '📥',\n  package: '📦',\n  mailbox: '📫',\n  mailbox_closed: '📪',\n  mailbox_with_mail: '📬',\n  mailbox_with_no_mail: '📭',\n  postbox: '📮',\n  ballot_box: '🗳️',\n  pencil2: '✏️',\n  black_nib: '✒️',\n  fountain_pen: '🖋️',\n  pen: '🖊️',\n  paintbrush: '🖌️',\n  crayon: '🖍️',\n  memo: '📝',\n  pencil: '📝',\n  briefcase: '💼',\n  file_folder: '📁',\n  open_file_folder: '📂',\n  card_index_dividers: '🗂️',\n  date: '📅',\n  calendar: '📆',\n  spiral_notepad: '🗒️',\n  spiral_calendar: '🗓️',\n  card_index: '📇',\n  chart_with_upwards_trend: '📈',\n  chart_with_downwards_trend: '📉',\n  bar_chart: '📊',\n  clipboard: '📋',\n  pushpin: '📌',\n  round_pushpin: '📍',\n  paperclip: '📎',\n  paperclips: '🖇️',\n  straight_ruler: '📏',\n  triangular_ruler: '📐',\n  scissors: '✂️',\n  card_file_box: '🗃️',\n  file_cabinet: '🗄️',\n  wastebasket: '🗑️',\n  lock: '🔒',\n  unlock: '🔓',\n  lock_with_ink_pen: '🔏',\n  closed_lock_with_key: '🔐',\n  key: '🔑',\n  old_key: '🗝️',\n  hammer: '🔨',\n  axe: '🪓',\n  pick: '⛏️',\n  hammer_and_pick: '⚒️',\n  hammer_and_wrench: '🛠️',\n  dagger: '🗡️',\n  crossed_swords: '⚔️',\n  bomb: '💣',\n  boomerang: '🪃',\n  bow_and_arrow: '🏹',\n  shield: '🛡️',\n  carpentry_saw: '🪚',\n  wrench: '🔧',\n  screwdriver: '🪛',\n  nut_and_bolt: '🔩',\n  gear: '⚙️',\n  clamp: '🗜️',\n  balance_scale: '⚖️',\n  probing_cane: '🦯',\n  link: '🔗',\n  chains: '⛓️',\n  hook: '🪝',\n  toolbox: '🧰',\n  magnet: '🧲',\n  ladder: '🪜',\n  alembic: '⚗️',\n  test_tube: '🧪',\n  petri_dish: '🧫',\n  dna: '🧬',\n  microscope: '🔬',\n  telescope: '🔭',\n  satellite: '📡',\n  syringe: '💉',\n  drop_of_blood: '🩸',\n  pill: '💊',\n  adhesive_bandage: '🩹',\n  crutch: '🩼',\n  stethoscope: '🩺',\n  x_ray: '🩻',\n  door: '🚪',\n  elevator: '🛗',\n  mirror: '🪞',\n  window: '🪟',\n  bed: '🛏️',\n  couch_and_lamp: '🛋️',\n  chair: '🪑',\n  toilet: '🚽',\n  plunger: '🪠',\n  shower: '🚿',\n  bathtub: '🛁',\n  mouse_trap: '🪤',\n  razor: '🪒',\n  lotion_bottle: '🧴',\n  safety_pin: '🧷',\n  broom: '🧹',\n  basket: '🧺',\n  roll_of_paper: '🧻',\n  bucket: '🪣',\n  soap: '🧼',\n  bubbles: '🫧',\n  toothbrush: '🪥',\n  sponge: '🧽',\n  fire_extinguisher: '🧯',\n  shopping_cart: '🛒',\n  smoking: '🚬',\n  coffin: '⚰️',\n  headstone: '🪦',\n  funeral_urn: '⚱️',\n  nazar_amulet: '🧿',\n  hamsa: '🪬',\n  moyai: '🗿',\n  placard: '🪧',\n  identification_card: '🪪',\n  atm: '🏧',\n  put_litter_in_its_place: '🚮',\n  potable_water: '🚰',\n  wheelchair: '♿',\n  mens: '🚹',\n  womens: '🚺',\n  restroom: '🚻',\n  baby_symbol: '🚼',\n  wc: '🚾',\n  passport_control: '🛂',\n  customs: '🛃',\n  baggage_claim: '🛄',\n  left_luggage: '🛅',\n  warning: '⚠️',\n  children_crossing: '🚸',\n  no_entry: '⛔',\n  no_entry_sign: '🚫',\n  no_bicycles: '🚳',\n  no_smoking: '🚭',\n  do_not_litter: '🚯',\n  'non-potable_water': '🚱',\n  no_pedestrians: '🚷',\n  no_mobile_phones: '📵',\n  underage: '🔞',\n  radioactive: '☢️',\n  biohazard: '☣️',\n  arrow_up: '⬆️',\n  arrow_upper_right: '↗️',\n  arrow_right: '➡️',\n  arrow_lower_right: '↘️',\n  arrow_down: '⬇️',\n  arrow_lower_left: '↙️',\n  arrow_left: '⬅️',\n  arrow_upper_left: '↖️',\n  arrow_up_down: '↕️',\n  left_right_arrow: '↔️',\n  leftwards_arrow_with_hook: '↩️',\n  arrow_right_hook: '↪️',\n  arrow_heading_up: '⤴️',\n  arrow_heading_down: '⤵️',\n  arrows_clockwise: '🔃',\n  arrows_counterclockwise: '🔄',\n  back: '🔙',\n  end: '🔚',\n  on: '🔛',\n  soon: '🔜',\n  top: '🔝',\n  place_of_worship: '🛐',\n  atom_symbol: '⚛️',\n  om: '🕉️',\n  star_of_david: '✡️',\n  wheel_of_dharma: '☸️',\n  yin_yang: '☯️',\n  latin_cross: '✝️',\n  orthodox_cross: '☦️',\n  star_and_crescent: '☪️',\n  peace_symbol: '☮️',\n  menorah: '🕎',\n  six_pointed_star: '🔯',\n  khanda: '🪯',\n  aries: '♈',\n  taurus: '♉',\n  gemini: '♊',\n  cancer: '♋',\n  leo: '♌',\n  virgo: '♍',\n  libra: '♎',\n  scorpius: '♏',\n  sagittarius: '♐',\n  capricorn: '♑',\n  aquarius: '♒',\n  pisces: '♓',\n  ophiuchus: '⛎',\n  twisted_rightwards_arrows: '🔀',\n  repeat: '🔁',\n  repeat_one: '🔂',\n  arrow_forward: '▶️',\n  fast_forward: '⏩',\n  next_track_button: '⏭️',\n  play_or_pause_button: '⏯️',\n  arrow_backward: '◀️',\n  rewind: '⏪',\n  previous_track_button: '⏮️',\n  arrow_up_small: '🔼',\n  arrow_double_up: '⏫',\n  arrow_down_small: '🔽',\n  arrow_double_down: '⏬',\n  pause_button: '⏸️',\n  stop_button: '⏹️',\n  record_button: '⏺️',\n  eject_button: '⏏️',\n  cinema: '🎦',\n  low_brightness: '🔅',\n  high_brightness: '🔆',\n  signal_strength: '📶',\n  wireless: '🛜',\n  vibration_mode: '📳',\n  mobile_phone_off: '📴',\n  female_sign: '♀️',\n  male_sign: '♂️',\n  transgender_symbol: '⚧️',\n  heavy_multiplication_x: '✖️',\n  heavy_plus_sign: '➕',\n  heavy_minus_sign: '➖',\n  heavy_division_sign: '➗',\n  heavy_equals_sign: '🟰',\n  infinity: '♾️',\n  bangbang: '‼️',\n  interrobang: '⁉️',\n  question: '❓',\n  grey_question: '❔',\n  grey_exclamation: '❕',\n  exclamation: '❗',\n  heavy_exclamation_mark: '❗',\n  wavy_dash: '〰️',\n  currency_exchange: '💱',\n  heavy_dollar_sign: '💲',\n  medical_symbol: '⚕️',\n  recycle: '♻️',\n  fleur_de_lis: '⚜️',\n  trident: '🔱',\n  name_badge: '📛',\n  beginner: '🔰',\n  o: '⭕',\n  white_check_mark: '✅',\n  ballot_box_with_check: '☑️',\n  heavy_check_mark: '✔️',\n  x: '❌',\n  negative_squared_cross_mark: '❎',\n  curly_loop: '➰',\n  loop: '➿',\n  part_alternation_mark: '〽️',\n  eight_spoked_asterisk: '✳️',\n  eight_pointed_black_star: '✴️',\n  sparkle: '❇️',\n  copyright: '©️',\n  registered: '®️',\n  tm: '™️',\n  hash: '#️⃣',\n  asterisk: '*️⃣',\n  zero: '0️⃣',\n  one: '1️⃣',\n  two: '2️⃣',\n  three: '3️⃣',\n  four: '4️⃣',\n  five: '5️⃣',\n  six: '6️⃣',\n  seven: '7️⃣',\n  eight: '8️⃣',\n  nine: '9️⃣',\n  keycap_ten: '🔟',\n  capital_abcd: '🔠',\n  abcd: '🔡',\n  symbols: '🔣',\n  abc: '🔤',\n  a: '🅰️',\n  ab: '🆎',\n  b: '🅱️',\n  cl: '🆑',\n  cool: '🆒',\n  free: '🆓',\n  information_source: 'ℹ️',\n  id: '🆔',\n  m: 'Ⓜ️',\n  new: '🆕',\n  ng: '🆖',\n  o2: '🅾️',\n  ok: '🆗',\n  parking: '🅿️',\n  sos: '🆘',\n  up: '🆙',\n  vs: '🆚',\n  koko: '🈁',\n  sa: '🈂️',\n  u6708: '🈷️',\n  u6709: '🈶',\n  u6307: '🈯',\n  ideograph_advantage: '🉐',\n  u5272: '🈹',\n  u7121: '🈚',\n  u7981: '🈲',\n  accept: '🉑',\n  u7533: '🈸',\n  u5408: '🈴',\n  u7a7a: '🈳',\n  congratulations: '㊗️',\n  secret: '㊙️',\n  u55b6: '🈺',\n  u6e80: '🈵',\n  red_circle: '🔴',\n  orange_circle: '🟠',\n  yellow_circle: '🟡',\n  green_circle: '🟢',\n  large_blue_circle: '🔵',\n  purple_circle: '🟣',\n  brown_circle: '🟤',\n  black_circle: '⚫',\n  white_circle: '⚪',\n  red_square: '🟥',\n  orange_square: '🟧',\n  yellow_square: '🟨',\n  green_square: '🟩',\n  blue_square: '🟦',\n  purple_square: '🟪',\n  brown_square: '🟫',\n  black_large_square: '⬛',\n  white_large_square: '⬜',\n  black_medium_square: '◼️',\n  white_medium_square: '◻️',\n  black_medium_small_square: '◾',\n  white_medium_small_square: '◽',\n  black_small_square: '▪️',\n  white_small_square: '▫️',\n  large_orange_diamond: '🔶',\n  large_blue_diamond: '🔷',\n  small_orange_diamond: '🔸',\n  small_blue_diamond: '🔹',\n  small_red_triangle: '🔺',\n  small_red_triangle_down: '🔻',\n  diamond_shape_with_a_dot_inside: '💠',\n  radio_button: '🔘',\n  white_square_button: '🔳',\n  black_square_button: '🔲',\n  checkered_flag: '🏁',\n  triangular_flag_on_post: '🚩',\n  crossed_flags: '🎌',\n  black_flag: '🏴',\n  white_flag: '🏳️',\n  rainbow_flag: '🏳️‍🌈',\n  transgender_flag: '🏳️‍⚧️',\n  pirate_flag: '🏴‍☠️',\n  ascension_island: '🇦🇨',\n  andorra: '🇦🇩',\n  united_arab_emirates: '🇦🇪',\n  afghanistan: '🇦🇫',\n  antigua_barbuda: '🇦🇬',\n  anguilla: '🇦🇮',\n  albania: '🇦🇱',\n  armenia: '🇦🇲',\n  angola: '🇦🇴',\n  antarctica: '🇦🇶',\n  argentina: '🇦🇷',\n  american_samoa: '🇦🇸',\n  austria: '🇦🇹',\n  australia: '🇦🇺',\n  aruba: '🇦🇼',\n  aland_islands: '🇦🇽',\n  azerbaijan: '🇦🇿',\n  bosnia_herzegovina: '🇧🇦',\n  barbados: '🇧🇧',\n  bangladesh: '🇧🇩',\n  belgium: '🇧🇪',\n  burkina_faso: '🇧🇫',\n  bulgaria: '🇧🇬',\n  bahrain: '🇧🇭',\n  burundi: '🇧🇮',\n  benin: '🇧🇯',\n  st_barthelemy: '🇧🇱',\n  bermuda: '🇧🇲',\n  brunei: '🇧🇳',\n  bolivia: '🇧🇴',\n  caribbean_netherlands: '🇧🇶',\n  brazil: '🇧🇷',\n  bahamas: '🇧🇸',\n  bhutan: '🇧🇹',\n  bouvet_island: '🇧🇻',\n  botswana: '🇧🇼',\n  belarus: '🇧🇾',\n  belize: '🇧🇿',\n  canada: '🇨🇦',\n  cocos_islands: '🇨🇨',\n  congo_kinshasa: '🇨🇩',\n  central_african_republic: '🇨🇫',\n  congo_brazzaville: '🇨🇬',\n  switzerland: '🇨🇭',\n  cote_divoire: '🇨🇮',\n  cook_islands: '🇨🇰',\n  chile: '🇨🇱',\n  cameroon: '🇨🇲',\n  cn: '🇨🇳',\n  colombia: '🇨🇴',\n  clipperton_island: '🇨🇵',\n  costa_rica: '🇨🇷',\n  cuba: '🇨🇺',\n  cape_verde: '🇨🇻',\n  curacao: '🇨🇼',\n  christmas_island: '🇨🇽',\n  cyprus: '🇨🇾',\n  czech_republic: '🇨🇿',\n  de: '🇩🇪',\n  diego_garcia: '🇩🇬',\n  djibouti: '🇩🇯',\n  denmark: '🇩🇰',\n  dominica: '🇩🇲',\n  dominican_republic: '🇩🇴',\n  algeria: '🇩🇿',\n  ceuta_melilla: '🇪🇦',\n  ecuador: '🇪🇨',\n  estonia: '🇪🇪',\n  egypt: '🇪🇬',\n  western_sahara: '🇪🇭',\n  eritrea: '🇪🇷',\n  es: '🇪🇸',\n  ethiopia: '🇪🇹',\n  eu: '🇪🇺',\n  european_union: '🇪🇺',\n  finland: '🇫🇮',\n  fiji: '🇫🇯',\n  falkland_islands: '🇫🇰',\n  micronesia: '🇫🇲',\n  faroe_islands: '🇫🇴',\n  fr: '🇫🇷',\n  gabon: '🇬🇦',\n  gb: '🇬🇧',\n  uk: '🇬🇧',\n  grenada: '🇬🇩',\n  georgia: '🇬🇪',\n  french_guiana: '🇬🇫',\n  guernsey: '🇬🇬',\n  ghana: '🇬🇭',\n  gibraltar: '🇬🇮',\n  greenland: '🇬🇱',\n  gambia: '🇬🇲',\n  guinea: '🇬🇳',\n  guadeloupe: '🇬🇵',\n  equatorial_guinea: '🇬🇶',\n  greece: '🇬🇷',\n  south_georgia_south_sandwich_islands: '🇬🇸',\n  guatemala: '🇬🇹',\n  guam: '🇬🇺',\n  guinea_bissau: '🇬🇼',\n  guyana: '🇬🇾',\n  hong_kong: '🇭🇰',\n  heard_mcdonald_islands: '🇭🇲',\n  honduras: '🇭🇳',\n  croatia: '🇭🇷',\n  haiti: '🇭🇹',\n  hungary: '🇭🇺',\n  canary_islands: '🇮🇨',\n  indonesia: '🇮🇩',\n  ireland: '🇮🇪',\n  israel: '🇮🇱',\n  isle_of_man: '🇮🇲',\n  india: '🇮🇳',\n  british_indian_ocean_territory: '🇮🇴',\n  iraq: '🇮🇶',\n  iran: '🇮🇷',\n  iceland: '🇮🇸',\n  it: '🇮🇹',\n  jersey: '🇯🇪',\n  jamaica: '🇯🇲',\n  jordan: '🇯🇴',\n  jp: '🇯🇵',\n  kenya: '🇰🇪',\n  kyrgyzstan: '🇰🇬',\n  cambodia: '🇰🇭',\n  kiribati: '🇰🇮',\n  comoros: '🇰🇲',\n  st_kitts_nevis: '🇰🇳',\n  north_korea: '🇰🇵',\n  kr: '🇰🇷',\n  kuwait: '🇰🇼',\n  cayman_islands: '🇰🇾',\n  kazakhstan: '🇰🇿',\n  laos: '🇱🇦',\n  lebanon: '🇱🇧',\n  st_lucia: '🇱🇨',\n  liechtenstein: '🇱🇮',\n  sri_lanka: '🇱🇰',\n  liberia: '🇱🇷',\n  lesotho: '🇱🇸',\n  lithuania: '🇱🇹',\n  luxembourg: '🇱🇺',\n  latvia: '🇱🇻',\n  libya: '🇱🇾',\n  morocco: '🇲🇦',\n  monaco: '🇲🇨',\n  moldova: '🇲🇩',\n  montenegro: '🇲🇪',\n  st_martin: '🇲🇫',\n  madagascar: '🇲🇬',\n  marshall_islands: '🇲🇭',\n  macedonia: '🇲🇰',\n  mali: '🇲🇱',\n  myanmar: '🇲🇲',\n  mongolia: '🇲🇳',\n  macau: '🇲🇴',\n  northern_mariana_islands: '🇲🇵',\n  martinique: '🇲🇶',\n  mauritania: '🇲🇷',\n  montserrat: '🇲🇸',\n  malta: '🇲🇹',\n  mauritius: '🇲🇺',\n  maldives: '🇲🇻',\n  malawi: '🇲🇼',\n  mexico: '🇲🇽',\n  malaysia: '🇲🇾',\n  mozambique: '🇲🇿',\n  namibia: '🇳🇦',\n  new_caledonia: '🇳🇨',\n  niger: '🇳🇪',\n  norfolk_island: '🇳🇫',\n  nigeria: '🇳🇬',\n  nicaragua: '🇳🇮',\n  netherlands: '🇳🇱',\n  norway: '🇳🇴',\n  nepal: '🇳🇵',\n  nauru: '🇳🇷',\n  niue: '🇳🇺',\n  new_zealand: '🇳🇿',\n  oman: '🇴🇲',\n  panama: '🇵🇦',\n  peru: '🇵🇪',\n  french_polynesia: '🇵🇫',\n  papua_new_guinea: '🇵🇬',\n  philippines: '🇵🇭',\n  pakistan: '🇵🇰',\n  poland: '🇵🇱',\n  st_pierre_miquelon: '🇵🇲',\n  pitcairn_islands: '🇵🇳',\n  puerto_rico: '🇵🇷',\n  palestinian_territories: '🇵🇸',\n  portugal: '🇵🇹',\n  palau: '🇵🇼',\n  paraguay: '🇵🇾',\n  qatar: '🇶🇦',\n  reunion: '🇷🇪',\n  romania: '🇷🇴',\n  serbia: '🇷🇸',\n  ru: '🇷🇺',\n  rwanda: '🇷🇼',\n  saudi_arabia: '🇸🇦',\n  solomon_islands: '🇸🇧',\n  seychelles: '🇸🇨',\n  sudan: '🇸🇩',\n  sweden: '🇸🇪',\n  singapore: '🇸🇬',\n  st_helena: '🇸🇭',\n  slovenia: '🇸🇮',\n  svalbard_jan_mayen: '🇸🇯',\n  slovakia: '🇸🇰',\n  sierra_leone: '🇸🇱',\n  san_marino: '🇸🇲',\n  senegal: '🇸🇳',\n  somalia: '🇸🇴',\n  suriname: '🇸🇷',\n  south_sudan: '🇸🇸',\n  sao_tome_principe: '🇸🇹',\n  el_salvador: '🇸🇻',\n  sint_maarten: '🇸🇽',\n  syria: '🇸🇾',\n  swaziland: '🇸🇿',\n  tristan_da_cunha: '🇹🇦',\n  turks_caicos_islands: '🇹🇨',\n  chad: '🇹🇩',\n  french_southern_territories: '🇹🇫',\n  togo: '🇹🇬',\n  thailand: '🇹🇭',\n  tajikistan: '🇹🇯',\n  tokelau: '🇹🇰',\n  timor_leste: '🇹🇱',\n  turkmenistan: '🇹🇲',\n  tunisia: '🇹🇳',\n  tonga: '🇹🇴',\n  tr: '🇹🇷',\n  trinidad_tobago: '🇹🇹',\n  tuvalu: '🇹🇻',\n  taiwan: '🇹🇼',\n  tanzania: '🇹🇿',\n  ukraine: '🇺🇦',\n  uganda: '🇺🇬',\n  us_outlying_islands: '🇺🇲',\n  united_nations: '🇺🇳',\n  us: '🇺🇸',\n  uruguay: '🇺🇾',\n  uzbekistan: '🇺🇿',\n  vatican_city: '🇻🇦',\n  st_vincent_grenadines: '🇻🇨',\n  venezuela: '🇻🇪',\n  british_virgin_islands: '🇻🇬',\n  us_virgin_islands: '🇻🇮',\n  vietnam: '🇻🇳',\n  vanuatu: '🇻🇺',\n  wallis_futuna: '🇼🇫',\n  samoa: '🇼🇸',\n  kosovo: '🇽🇰',\n  yemen: '🇾🇪',\n  mayotte: '🇾🇹',\n  south_africa: '🇿🇦',\n  zambia: '🇿🇲',\n  zimbabwe: '🇿🇼',\n  england: '🏴󠁧󠁢󠁥󠁮󠁧󠁿',\n  scotland: '🏴󠁧󠁢󠁳󠁣󠁴󠁿',\n  wales: '🏴󠁧󠁢󠁷󠁬󠁳󠁿'\n}\n\n/**\n * Map of emoji to primary name.\n *\n * @type {Record<string, string>}\n */\nconst emojiToName = {\n  '😀': 'grinning',\n  '😃': 'smiley',\n  '😄': 'smile',\n  '😁': 'grin',\n  '😆': 'laughing',\n  '😅': 'sweat_smile',\n  '🤣': 'rofl',\n  '😂': 'joy',\n  '🙂': 'slightly_smiling_face',\n  '🙃': 'upside_down_face',\n  '🫠': 'melting_face',\n  '😉': 'wink',\n  '😊': 'blush',\n  '😇': 'innocent',\n  '🥰': 'smiling_face_with_three_hearts',\n  '😍': 'heart_eyes',\n  '🤩': 'star_struck',\n  '😘': 'kissing_heart',\n  '😗': 'kissing',\n  '☺️': 'relaxed',\n  '😚': 'kissing_closed_eyes',\n  '😙': 'kissing_smiling_eyes',\n  '🥲': 'smiling_face_with_tear',\n  '😋': 'yum',\n  '😛': 'stuck_out_tongue',\n  '😜': 'stuck_out_tongue_winking_eye',\n  '🤪': 'zany_face',\n  '😝': 'stuck_out_tongue_closed_eyes',\n  '🤑': 'money_mouth_face',\n  '🤗': 'hugs',\n  '🤭': 'hand_over_mouth',\n  '🫢': 'face_with_open_eyes_and_hand_over_mouth',\n  '🫣': 'face_with_peeking_eye',\n  '🤫': 'shushing_face',\n  '🤔': 'thinking',\n  '🫡': 'saluting_face',\n  '🤐': 'zipper_mouth_face',\n  '🤨': 'raised_eyebrow',\n  '😐': 'neutral_face',\n  '😑': 'expressionless',\n  '😶': 'no_mouth',\n  '🫥': 'dotted_line_face',\n  '😶‍🌫️': 'face_in_clouds',\n  '😏': 'smirk',\n  '😒': 'unamused',\n  '🙄': 'roll_eyes',\n  '😬': 'grimacing',\n  '😮‍💨': 'face_exhaling',\n  '🤥': 'lying_face',\n  '🫨': 'shaking_face',\n  '😌': 'relieved',\n  '😔': 'pensive',\n  '😪': 'sleepy',\n  '🤤': 'drooling_face',\n  '😴': 'sleeping',\n  '😷': 'mask',\n  '🤒': 'face_with_thermometer',\n  '🤕': 'face_with_head_bandage',\n  '🤢': 'nauseated_face',\n  '🤮': 'vomiting_face',\n  '🤧': 'sneezing_face',\n  '🥵': 'hot_face',\n  '🥶': 'cold_face',\n  '🥴': 'woozy_face',\n  '😵': 'dizzy_face',\n  '😵‍💫': 'face_with_spiral_eyes',\n  '🤯': 'exploding_head',\n  '🤠': 'cowboy_hat_face',\n  '🥳': 'partying_face',\n  '🥸': 'disguised_face',\n  '😎': 'sunglasses',\n  '🤓': 'nerd_face',\n  '🧐': 'monocle_face',\n  '😕': 'confused',\n  '🫤': 'face_with_diagonal_mouth',\n  '😟': 'worried',\n  '🙁': 'slightly_frowning_face',\n  '☹️': 'frowning_face',\n  '😮': 'open_mouth',\n  '😯': 'hushed',\n  '😲': 'astonished',\n  '😳': 'flushed',\n  '🥺': 'pleading_face',\n  '🥹': 'face_holding_back_tears',\n  '😦': 'frowning',\n  '😧': 'anguished',\n  '😨': 'fearful',\n  '😰': 'cold_sweat',\n  '😥': 'disappointed_relieved',\n  '😢': 'cry',\n  '😭': 'sob',\n  '😱': 'scream',\n  '😖': 'confounded',\n  '😣': 'persevere',\n  '😞': 'disappointed',\n  '😓': 'sweat',\n  '😩': 'weary',\n  '😫': 'tired_face',\n  '🥱': 'yawning_face',\n  '😤': 'triumph',\n  '😡': 'rage',\n  '😠': 'angry',\n  '🤬': 'cursing_face',\n  '😈': 'smiling_imp',\n  '👿': 'imp',\n  '💀': 'skull',\n  '☠️': 'skull_and_crossbones',\n  '💩': 'hankey',\n  '🤡': 'clown_face',\n  '👹': 'japanese_ogre',\n  '👺': 'japanese_goblin',\n  '👻': 'ghost',\n  '👽': 'alien',\n  '👾': 'space_invader',\n  '🤖': 'robot',\n  '😺': 'smiley_cat',\n  '😸': 'smile_cat',\n  '😹': 'joy_cat',\n  '😻': 'heart_eyes_cat',\n  '😼': 'smirk_cat',\n  '😽': 'kissing_cat',\n  '🙀': 'scream_cat',\n  '😿': 'crying_cat_face',\n  '😾': 'pouting_cat',\n  '🙈': 'see_no_evil',\n  '🙉': 'hear_no_evil',\n  '🙊': 'speak_no_evil',\n  '💌': 'love_letter',\n  '💘': 'cupid',\n  '💝': 'gift_heart',\n  '💖': 'sparkling_heart',\n  '💗': 'heartpulse',\n  '💓': 'heartbeat',\n  '💞': 'revolving_hearts',\n  '💕': 'two_hearts',\n  '💟': 'heart_decoration',\n  '❣️': 'heavy_heart_exclamation',\n  '💔': 'broken_heart',\n  '❤️‍🔥': 'heart_on_fire',\n  '❤️‍🩹': 'mending_heart',\n  '❤️': 'heart',\n  '🩷': 'pink_heart',\n  '🧡': 'orange_heart',\n  '💛': 'yellow_heart',\n  '💚': 'green_heart',\n  '💙': 'blue_heart',\n  '🩵': 'light_blue_heart',\n  '💜': 'purple_heart',\n  '🤎': 'brown_heart',\n  '🖤': 'black_heart',\n  '🩶': 'grey_heart',\n  '🤍': 'white_heart',\n  '💋': 'kiss',\n  '💯': '100',\n  '💢': 'anger',\n  '💥': 'boom',\n  '💫': 'dizzy',\n  '💦': 'sweat_drops',\n  '💨': 'dash',\n  '🕳️': 'hole',\n  '💬': 'speech_balloon',\n  '👁️‍🗨️': 'eye_speech_bubble',\n  '🗨️': 'left_speech_bubble',\n  '🗯️': 'right_anger_bubble',\n  '💭': 'thought_balloon',\n  '💤': 'zzz',\n  '👋': 'wave',\n  '🤚': 'raised_back_of_hand',\n  '🖐️': 'raised_hand_with_fingers_splayed',\n  '✋': 'hand',\n  '🖖': 'vulcan_salute',\n  '🫱': 'rightwards_hand',\n  '🫲': 'leftwards_hand',\n  '🫳': 'palm_down_hand',\n  '🫴': 'palm_up_hand',\n  '🫷': 'leftwards_pushing_hand',\n  '🫸': 'rightwards_pushing_hand',\n  '👌': 'ok_hand',\n  '🤌': 'pinched_fingers',\n  '🤏': 'pinching_hand',\n  '✌️': 'v',\n  '🤞': 'crossed_fingers',\n  '🫰': 'hand_with_index_finger_and_thumb_crossed',\n  '🤟': 'love_you_gesture',\n  '🤘': 'metal',\n  '🤙': 'call_me_hand',\n  '👈': 'point_left',\n  '👉': 'point_right',\n  '👆': 'point_up_2',\n  '🖕': 'middle_finger',\n  '👇': 'point_down',\n  '☝️': 'point_up',\n  '🫵': 'index_pointing_at_the_viewer',\n  '👍': '+1',\n  '👎': '-1',\n  '✊': 'fist_raised',\n  '👊': 'fist_oncoming',\n  '🤛': 'fist_left',\n  '🤜': 'fist_right',\n  '👏': 'clap',\n  '🙌': 'raised_hands',\n  '🫶': 'heart_hands',\n  '👐': 'open_hands',\n  '🤲': 'palms_up_together',\n  '🤝': 'handshake',\n  '🙏': 'pray',\n  '✍️': 'writing_hand',\n  '💅': 'nail_care',\n  '🤳': 'selfie',\n  '💪': 'muscle',\n  '🦾': 'mechanical_arm',\n  '🦿': 'mechanical_leg',\n  '🦵': 'leg',\n  '🦶': 'foot',\n  '👂': 'ear',\n  '🦻': 'ear_with_hearing_aid',\n  '👃': 'nose',\n  '🧠': 'brain',\n  '🫀': 'anatomical_heart',\n  '🫁': 'lungs',\n  '🦷': 'tooth',\n  '🦴': 'bone',\n  '👀': 'eyes',\n  '👁️': 'eye',\n  '👅': 'tongue',\n  '👄': 'lips',\n  '🫦': 'biting_lip',\n  '👶': 'baby',\n  '🧒': 'child',\n  '👦': 'boy',\n  '👧': 'girl',\n  '🧑': 'adult',\n  '👱': 'blond_haired_person',\n  '👨': 'man',\n  '🧔': 'bearded_person',\n  '🧔‍♂️': 'man_beard',\n  '🧔‍♀️': 'woman_beard',\n  '👨‍🦰': 'red_haired_man',\n  '👨‍🦱': 'curly_haired_man',\n  '👨‍🦳': 'white_haired_man',\n  '👨‍🦲': 'bald_man',\n  '👩': 'woman',\n  '👩‍🦰': 'red_haired_woman',\n  '🧑‍🦰': 'person_red_hair',\n  '👩‍🦱': 'curly_haired_woman',\n  '🧑‍🦱': 'person_curly_hair',\n  '👩‍🦳': 'white_haired_woman',\n  '🧑‍🦳': 'person_white_hair',\n  '👩‍🦲': 'bald_woman',\n  '🧑‍🦲': 'person_bald',\n  '👱‍♀️': 'blond_haired_woman',\n  '👱‍♂️': 'blond_haired_man',\n  '🧓': 'older_adult',\n  '👴': 'older_man',\n  '👵': 'older_woman',\n  '🙍': 'frowning_person',\n  '🙍‍♂️': 'frowning_man',\n  '🙍‍♀️': 'frowning_woman',\n  '🙎': 'pouting_face',\n  '🙎‍♂️': 'pouting_man',\n  '🙎‍♀️': 'pouting_woman',\n  '🙅': 'no_good',\n  '🙅‍♂️': 'no_good_man',\n  '🙅‍♀️': 'no_good_woman',\n  '🙆': 'ok_person',\n  '🙆‍♂️': 'ok_man',\n  '🙆‍♀️': 'ok_woman',\n  '💁': 'tipping_hand_person',\n  '💁‍♂️': 'tipping_hand_man',\n  '💁‍♀️': 'tipping_hand_woman',\n  '🙋': 'raising_hand',\n  '🙋‍♂️': 'raising_hand_man',\n  '🙋‍♀️': 'raising_hand_woman',\n  '🧏': 'deaf_person',\n  '🧏‍♂️': 'deaf_man',\n  '🧏‍♀️': 'deaf_woman',\n  '🙇': 'bow',\n  '🙇‍♂️': 'bowing_man',\n  '🙇‍♀️': 'bowing_woman',\n  '🤦': 'facepalm',\n  '🤦‍♂️': 'man_facepalming',\n  '🤦‍♀️': 'woman_facepalming',\n  '🤷': 'shrug',\n  '🤷‍♂️': 'man_shrugging',\n  '🤷‍♀️': 'woman_shrugging',\n  '🧑‍⚕️': 'health_worker',\n  '👨‍⚕️': 'man_health_worker',\n  '👩‍⚕️': 'woman_health_worker',\n  '🧑‍🎓': 'student',\n  '👨‍🎓': 'man_student',\n  '👩‍🎓': 'woman_student',\n  '🧑‍🏫': 'teacher',\n  '👨‍🏫': 'man_teacher',\n  '👩‍🏫': 'woman_teacher',\n  '🧑‍⚖️': 'judge',\n  '👨‍⚖️': 'man_judge',\n  '👩‍⚖️': 'woman_judge',\n  '🧑‍🌾': 'farmer',\n  '👨‍🌾': 'man_farmer',\n  '👩‍🌾': 'woman_farmer',\n  '🧑‍🍳': 'cook',\n  '👨‍🍳': 'man_cook',\n  '👩‍🍳': 'woman_cook',\n  '🧑‍🔧': 'mechanic',\n  '👨‍🔧': 'man_mechanic',\n  '👩‍🔧': 'woman_mechanic',\n  '🧑‍🏭': 'factory_worker',\n  '👨‍🏭': 'man_factory_worker',\n  '👩‍🏭': 'woman_factory_worker',\n  '🧑‍💼': 'office_worker',\n  '👨‍💼': 'man_office_worker',\n  '👩‍💼': 'woman_office_worker',\n  '🧑‍🔬': 'scientist',\n  '👨‍🔬': 'man_scientist',\n  '👩‍🔬': 'woman_scientist',\n  '🧑‍💻': 'technologist',\n  '👨‍💻': 'man_technologist',\n  '👩‍💻': 'woman_technologist',\n  '🧑‍🎤': 'singer',\n  '👨‍🎤': 'man_singer',\n  '👩‍🎤': 'woman_singer',\n  '🧑‍🎨': 'artist',\n  '👨‍🎨': 'man_artist',\n  '👩‍🎨': 'woman_artist',\n  '🧑‍✈️': 'pilot',\n  '👨‍✈️': 'man_pilot',\n  '👩‍✈️': 'woman_pilot',\n  '🧑‍🚀': 'astronaut',\n  '👨‍🚀': 'man_astronaut',\n  '👩‍🚀': 'woman_astronaut',\n  '🧑‍🚒': 'firefighter',\n  '👨‍🚒': 'man_firefighter',\n  '👩‍🚒': 'woman_firefighter',\n  '👮': 'police_officer',\n  '👮‍♂️': 'policeman',\n  '👮‍♀️': 'policewoman',\n  '🕵️': 'detective',\n  '🕵️‍♂️': 'male_detective',\n  '🕵️‍♀️': 'female_detective',\n  '💂': 'guard',\n  '💂‍♂️': 'guardsman',\n  '💂‍♀️': 'guardswoman',\n  '🥷': 'ninja',\n  '👷': 'construction_worker',\n  '👷‍♂️': 'construction_worker_man',\n  '👷‍♀️': 'construction_worker_woman',\n  '🫅': 'person_with_crown',\n  '🤴': 'prince',\n  '👸': 'princess',\n  '👳': 'person_with_turban',\n  '👳‍♂️': 'man_with_turban',\n  '👳‍♀️': 'woman_with_turban',\n  '👲': 'man_with_gua_pi_mao',\n  '🧕': 'woman_with_headscarf',\n  '🤵': 'person_in_tuxedo',\n  '🤵‍♂️': 'man_in_tuxedo',\n  '🤵‍♀️': 'woman_in_tuxedo',\n  '👰': 'person_with_veil',\n  '👰‍♂️': 'man_with_veil',\n  '👰‍♀️': 'woman_with_veil',\n  '🤰': 'pregnant_woman',\n  '🫃': 'pregnant_man',\n  '🫄': 'pregnant_person',\n  '🤱': 'breast_feeding',\n  '👩‍🍼': 'woman_feeding_baby',\n  '👨‍🍼': 'man_feeding_baby',\n  '🧑‍🍼': 'person_feeding_baby',\n  '👼': 'angel',\n  '🎅': 'santa',\n  '🤶': 'mrs_claus',\n  '🧑‍🎄': 'mx_claus',\n  '🦸': 'superhero',\n  '🦸‍♂️': 'superhero_man',\n  '🦸‍♀️': 'superhero_woman',\n  '🦹': 'supervillain',\n  '🦹‍♂️': 'supervillain_man',\n  '🦹‍♀️': 'supervillain_woman',\n  '🧙': 'mage',\n  '🧙‍♂️': 'mage_man',\n  '🧙‍♀️': 'mage_woman',\n  '🧚': 'fairy',\n  '🧚‍♂️': 'fairy_man',\n  '🧚‍♀️': 'fairy_woman',\n  '🧛': 'vampire',\n  '🧛‍♂️': 'vampire_man',\n  '🧛‍♀️': 'vampire_woman',\n  '🧜': 'merperson',\n  '🧜‍♂️': 'merman',\n  '🧜‍♀️': 'mermaid',\n  '🧝': 'elf',\n  '🧝‍♂️': 'elf_man',\n  '🧝‍♀️': 'elf_woman',\n  '🧞': 'genie',\n  '🧞‍♂️': 'genie_man',\n  '🧞‍♀️': 'genie_woman',\n  '🧟': 'zombie',\n  '🧟‍♂️': 'zombie_man',\n  '🧟‍♀️': 'zombie_woman',\n  '🧌': 'troll',\n  '💆': 'massage',\n  '💆‍♂️': 'massage_man',\n  '💆‍♀️': 'massage_woman',\n  '💇': 'haircut',\n  '💇‍♂️': 'haircut_man',\n  '💇‍♀️': 'haircut_woman',\n  '🚶': 'walking',\n  '🚶‍♂️': 'walking_man',\n  '🚶‍♀️': 'walking_woman',\n  '🧍': 'standing_person',\n  '🧍‍♂️': 'standing_man',\n  '🧍‍♀️': 'standing_woman',\n  '🧎': 'kneeling_person',\n  '🧎‍♂️': 'kneeling_man',\n  '🧎‍♀️': 'kneeling_woman',\n  '🧑‍🦯': 'person_with_probing_cane',\n  '👨‍🦯': 'man_with_probing_cane',\n  '👩‍🦯': 'woman_with_probing_cane',\n  '🧑‍🦼': 'person_in_motorized_wheelchair',\n  '👨‍🦼': 'man_in_motorized_wheelchair',\n  '👩‍🦼': 'woman_in_motorized_wheelchair',\n  '🧑‍🦽': 'person_in_manual_wheelchair',\n  '👨‍🦽': 'man_in_manual_wheelchair',\n  '👩‍🦽': 'woman_in_manual_wheelchair',\n  '🏃': 'runner',\n  '🏃‍♂️': 'running_man',\n  '🏃‍♀️': 'running_woman',\n  '💃': 'woman_dancing',\n  '🕺': 'man_dancing',\n  '🕴️': 'business_suit_levitating',\n  '👯': 'dancers',\n  '👯‍♂️': 'dancing_men',\n  '👯‍♀️': 'dancing_women',\n  '🧖': 'sauna_person',\n  '🧖‍♂️': 'sauna_man',\n  '🧖‍♀️': 'sauna_woman',\n  '🧗': 'climbing',\n  '🧗‍♂️': 'climbing_man',\n  '🧗‍♀️': 'climbing_woman',\n  '🤺': 'person_fencing',\n  '🏇': 'horse_racing',\n  '⛷️': 'skier',\n  '🏂': 'snowboarder',\n  '🏌️': 'golfing',\n  '🏌️‍♂️': 'golfing_man',\n  '🏌️‍♀️': 'golfing_woman',\n  '🏄': 'surfer',\n  '🏄‍♂️': 'surfing_man',\n  '🏄‍♀️': 'surfing_woman',\n  '🚣': 'rowboat',\n  '🚣‍♂️': 'rowing_man',\n  '🚣‍♀️': 'rowing_woman',\n  '🏊': 'swimmer',\n  '🏊‍♂️': 'swimming_man',\n  '🏊‍♀️': 'swimming_woman',\n  '⛹️': 'bouncing_ball_person',\n  '⛹️‍♂️': 'bouncing_ball_man',\n  '⛹️‍♀️': 'bouncing_ball_woman',\n  '🏋️': 'weight_lifting',\n  '🏋️‍♂️': 'weight_lifting_man',\n  '🏋️‍♀️': 'weight_lifting_woman',\n  '🚴': 'bicyclist',\n  '🚴‍♂️': 'biking_man',\n  '🚴‍♀️': 'biking_woman',\n  '🚵': 'mountain_bicyclist',\n  '🚵‍♂️': 'mountain_biking_man',\n  '🚵‍♀️': 'mountain_biking_woman',\n  '🤸': 'cartwheeling',\n  '🤸‍♂️': 'man_cartwheeling',\n  '🤸‍♀️': 'woman_cartwheeling',\n  '🤼': 'wrestling',\n  '🤼‍♂️': 'men_wrestling',\n  '🤼‍♀️': 'women_wrestling',\n  '🤽': 'water_polo',\n  '🤽‍♂️': 'man_playing_water_polo',\n  '🤽‍♀️': 'woman_playing_water_polo',\n  '🤾': 'handball_person',\n  '🤾‍♂️': 'man_playing_handball',\n  '🤾‍♀️': 'woman_playing_handball',\n  '🤹': 'juggling_person',\n  '🤹‍♂️': 'man_juggling',\n  '🤹‍♀️': 'woman_juggling',\n  '🧘': 'lotus_position',\n  '🧘‍♂️': 'lotus_position_man',\n  '🧘‍♀️': 'lotus_position_woman',\n  '🛀': 'bath',\n  '🛌': 'sleeping_bed',\n  '🧑‍🤝‍🧑': 'people_holding_hands',\n  '👭': 'two_women_holding_hands',\n  '👫': 'couple',\n  '👬': 'two_men_holding_hands',\n  '💏': 'couplekiss',\n  '👩‍❤️‍💋‍👨': 'couplekiss_man_woman',\n  '👨‍❤️‍💋‍👨': 'couplekiss_man_man',\n  '👩‍❤️‍💋‍👩': 'couplekiss_woman_woman',\n  '💑': 'couple_with_heart',\n  '👩‍❤️‍👨': 'couple_with_heart_woman_man',\n  '👨‍❤️‍👨': 'couple_with_heart_man_man',\n  '👩‍❤️‍👩': 'couple_with_heart_woman_woman',\n  '👪': 'family',\n  '👨‍👩‍👦': 'family_man_woman_boy',\n  '👨‍👩‍👧': 'family_man_woman_girl',\n  '👨‍👩‍👧‍👦': 'family_man_woman_girl_boy',\n  '👨‍👩‍👦‍👦': 'family_man_woman_boy_boy',\n  '👨‍👩‍👧‍👧': 'family_man_woman_girl_girl',\n  '👨‍👨‍👦': 'family_man_man_boy',\n  '👨‍👨‍👧': 'family_man_man_girl',\n  '👨‍👨‍👧‍👦': 'family_man_man_girl_boy',\n  '👨‍👨‍👦‍👦': 'family_man_man_boy_boy',\n  '👨‍👨‍👧‍👧': 'family_man_man_girl_girl',\n  '👩‍👩‍👦': 'family_woman_woman_boy',\n  '👩‍👩‍👧': 'family_woman_woman_girl',\n  '👩‍👩‍👧‍👦': 'family_woman_woman_girl_boy',\n  '👩‍👩‍👦‍👦': 'family_woman_woman_boy_boy',\n  '👩‍👩‍👧‍👧': 'family_woman_woman_girl_girl',\n  '👨‍👦': 'family_man_boy',\n  '👨‍👦‍👦': 'family_man_boy_boy',\n  '👨‍👧': 'family_man_girl',\n  '👨‍👧‍👦': 'family_man_girl_boy',\n  '👨‍👧‍👧': 'family_man_girl_girl',\n  '👩‍👦': 'family_woman_boy',\n  '👩‍👦‍👦': 'family_woman_boy_boy',\n  '👩‍👧': 'family_woman_girl',\n  '👩‍👧‍👦': 'family_woman_girl_boy',\n  '👩‍👧‍👧': 'family_woman_girl_girl',\n  '🗣️': 'speaking_head',\n  '👤': 'bust_in_silhouette',\n  '👥': 'busts_in_silhouette',\n  '🫂': 'people_hugging',\n  '👣': 'footprints',\n  '🐵': 'monkey_face',\n  '🐒': 'monkey',\n  '🦍': 'gorilla',\n  '🦧': 'orangutan',\n  '🐶': 'dog',\n  '🐕': 'dog2',\n  '🦮': 'guide_dog',\n  '🐕‍🦺': 'service_dog',\n  '🐩': 'poodle',\n  '🐺': 'wolf',\n  '🦊': 'fox_face',\n  '🦝': 'raccoon',\n  '🐱': 'cat',\n  '🐈': 'cat2',\n  '🐈‍⬛': 'black_cat',\n  '🦁': 'lion',\n  '🐯': 'tiger',\n  '🐅': 'tiger2',\n  '🐆': 'leopard',\n  '🐴': 'horse',\n  '🫎': 'moose',\n  '🫏': 'donkey',\n  '🐎': 'racehorse',\n  '🦄': 'unicorn',\n  '🦓': 'zebra',\n  '🦌': 'deer',\n  '🦬': 'bison',\n  '🐮': 'cow',\n  '🐂': 'ox',\n  '🐃': 'water_buffalo',\n  '🐄': 'cow2',\n  '🐷': 'pig',\n  '🐖': 'pig2',\n  '🐗': 'boar',\n  '🐽': 'pig_nose',\n  '🐏': 'ram',\n  '🐑': 'sheep',\n  '🐐': 'goat',\n  '🐪': 'dromedary_camel',\n  '🐫': 'camel',\n  '🦙': 'llama',\n  '🦒': 'giraffe',\n  '🐘': 'elephant',\n  '🦣': 'mammoth',\n  '🦏': 'rhinoceros',\n  '🦛': 'hippopotamus',\n  '🐭': 'mouse',\n  '🐁': 'mouse2',\n  '🐀': 'rat',\n  '🐹': 'hamster',\n  '🐰': 'rabbit',\n  '🐇': 'rabbit2',\n  '🐿️': 'chipmunk',\n  '🦫': 'beaver',\n  '🦔': 'hedgehog',\n  '🦇': 'bat',\n  '🐻': 'bear',\n  '🐻‍❄️': 'polar_bear',\n  '🐨': 'koala',\n  '🐼': 'panda_face',\n  '🦥': 'sloth',\n  '🦦': 'otter',\n  '🦨': 'skunk',\n  '🦘': 'kangaroo',\n  '🦡': 'badger',\n  '🐾': 'feet',\n  '🦃': 'turkey',\n  '🐔': 'chicken',\n  '🐓': 'rooster',\n  '🐣': 'hatching_chick',\n  '🐤': 'baby_chick',\n  '🐥': 'hatched_chick',\n  '🐦': 'bird',\n  '🐧': 'penguin',\n  '🕊️': 'dove',\n  '🦅': 'eagle',\n  '🦆': 'duck',\n  '🦢': 'swan',\n  '🦉': 'owl',\n  '🦤': 'dodo',\n  '🪶': 'feather',\n  '🦩': 'flamingo',\n  '🦚': 'peacock',\n  '🦜': 'parrot',\n  '🪽': 'wing',\n  '🐦‍⬛': 'black_bird',\n  '🪿': 'goose',\n  '🐸': 'frog',\n  '🐊': 'crocodile',\n  '🐢': 'turtle',\n  '🦎': 'lizard',\n  '🐍': 'snake',\n  '🐲': 'dragon_face',\n  '🐉': 'dragon',\n  '🦕': 'sauropod',\n  '🦖': 't-rex',\n  '🐳': 'whale',\n  '🐋': 'whale2',\n  '🐬': 'dolphin',\n  '🦭': 'seal',\n  '🐟': 'fish',\n  '🐠': 'tropical_fish',\n  '🐡': 'blowfish',\n  '🦈': 'shark',\n  '🐙': 'octopus',\n  '🐚': 'shell',\n  '🪸': 'coral',\n  '🪼': 'jellyfish',\n  '🐌': 'snail',\n  '🦋': 'butterfly',\n  '🐛': 'bug',\n  '🐜': 'ant',\n  '🐝': 'bee',\n  '🪲': 'beetle',\n  '🐞': 'lady_beetle',\n  '🦗': 'cricket',\n  '🪳': 'cockroach',\n  '🕷️': 'spider',\n  '🕸️': 'spider_web',\n  '🦂': 'scorpion',\n  '🦟': 'mosquito',\n  '🪰': 'fly',\n  '🪱': 'worm',\n  '🦠': 'microbe',\n  '💐': 'bouquet',\n  '🌸': 'cherry_blossom',\n  '💮': 'white_flower',\n  '🪷': 'lotus',\n  '🏵️': 'rosette',\n  '🌹': 'rose',\n  '🥀': 'wilted_flower',\n  '🌺': 'hibiscus',\n  '🌻': 'sunflower',\n  '🌼': 'blossom',\n  '🌷': 'tulip',\n  '🪻': 'hyacinth',\n  '🌱': 'seedling',\n  '🪴': 'potted_plant',\n  '🌲': 'evergreen_tree',\n  '🌳': 'deciduous_tree',\n  '🌴': 'palm_tree',\n  '🌵': 'cactus',\n  '🌾': 'ear_of_rice',\n  '🌿': 'herb',\n  '☘️': 'shamrock',\n  '🍀': 'four_leaf_clover',\n  '🍁': 'maple_leaf',\n  '🍂': 'fallen_leaf',\n  '🍃': 'leaves',\n  '🪹': 'empty_nest',\n  '🪺': 'nest_with_eggs',\n  '🍄': 'mushroom',\n  '🍇': 'grapes',\n  '🍈': 'melon',\n  '🍉': 'watermelon',\n  '🍊': 'tangerine',\n  '🍋': 'lemon',\n  '🍌': 'banana',\n  '🍍': 'pineapple',\n  '🥭': 'mango',\n  '🍎': 'apple',\n  '🍏': 'green_apple',\n  '🍐': 'pear',\n  '🍑': 'peach',\n  '🍒': 'cherries',\n  '🍓': 'strawberry',\n  '🫐': 'blueberries',\n  '🥝': 'kiwi_fruit',\n  '🍅': 'tomato',\n  '🫒': 'olive',\n  '🥥': 'coconut',\n  '🥑': 'avocado',\n  '🍆': 'eggplant',\n  '🥔': 'potato',\n  '🥕': 'carrot',\n  '🌽': 'corn',\n  '🌶️': 'hot_pepper',\n  '🫑': 'bell_pepper',\n  '🥒': 'cucumber',\n  '🥬': 'leafy_green',\n  '🥦': 'broccoli',\n  '🧄': 'garlic',\n  '🧅': 'onion',\n  '🥜': 'peanuts',\n  '🫘': 'beans',\n  '🌰': 'chestnut',\n  '🫚': 'ginger_root',\n  '🫛': 'pea_pod',\n  '🍞': 'bread',\n  '🥐': 'croissant',\n  '🥖': 'baguette_bread',\n  '🫓': 'flatbread',\n  '🥨': 'pretzel',\n  '🥯': 'bagel',\n  '🥞': 'pancakes',\n  '🧇': 'waffle',\n  '🧀': 'cheese',\n  '🍖': 'meat_on_bone',\n  '🍗': 'poultry_leg',\n  '🥩': 'cut_of_meat',\n  '🥓': 'bacon',\n  '🍔': 'hamburger',\n  '🍟': 'fries',\n  '🍕': 'pizza',\n  '🌭': 'hotdog',\n  '🥪': 'sandwich',\n  '🌮': 'taco',\n  '🌯': 'burrito',\n  '🫔': 'tamale',\n  '🥙': 'stuffed_flatbread',\n  '🧆': 'falafel',\n  '🥚': 'egg',\n  '🍳': 'fried_egg',\n  '🥘': 'shallow_pan_of_food',\n  '🍲': 'stew',\n  '🫕': 'fondue',\n  '🥣': 'bowl_with_spoon',\n  '🥗': 'green_salad',\n  '🍿': 'popcorn',\n  '🧈': 'butter',\n  '🧂': 'salt',\n  '🥫': 'canned_food',\n  '🍱': 'bento',\n  '🍘': 'rice_cracker',\n  '🍙': 'rice_ball',\n  '🍚': 'rice',\n  '🍛': 'curry',\n  '🍜': 'ramen',\n  '🍝': 'spaghetti',\n  '🍠': 'sweet_potato',\n  '🍢': 'oden',\n  '🍣': 'sushi',\n  '🍤': 'fried_shrimp',\n  '🍥': 'fish_cake',\n  '🥮': 'moon_cake',\n  '🍡': 'dango',\n  '🥟': 'dumpling',\n  '🥠': 'fortune_cookie',\n  '🥡': 'takeout_box',\n  '🦀': 'crab',\n  '🦞': 'lobster',\n  '🦐': 'shrimp',\n  '🦑': 'squid',\n  '🦪': 'oyster',\n  '🍦': 'icecream',\n  '🍧': 'shaved_ice',\n  '🍨': 'ice_cream',\n  '🍩': 'doughnut',\n  '🍪': 'cookie',\n  '🎂': 'birthday',\n  '🍰': 'cake',\n  '🧁': 'cupcake',\n  '🥧': 'pie',\n  '🍫': 'chocolate_bar',\n  '🍬': 'candy',\n  '🍭': 'lollipop',\n  '🍮': 'custard',\n  '🍯': 'honey_pot',\n  '🍼': 'baby_bottle',\n  '🥛': 'milk_glass',\n  '☕': 'coffee',\n  '🫖': 'teapot',\n  '🍵': 'tea',\n  '🍶': 'sake',\n  '🍾': 'champagne',\n  '🍷': 'wine_glass',\n  '🍸': 'cocktail',\n  '🍹': 'tropical_drink',\n  '🍺': 'beer',\n  '🍻': 'beers',\n  '🥂': 'clinking_glasses',\n  '🥃': 'tumbler_glass',\n  '🫗': 'pouring_liquid',\n  '🥤': 'cup_with_straw',\n  '🧋': 'bubble_tea',\n  '🧃': 'beverage_box',\n  '🧉': 'mate',\n  '🧊': 'ice_cube',\n  '🥢': 'chopsticks',\n  '🍽️': 'plate_with_cutlery',\n  '🍴': 'fork_and_knife',\n  '🥄': 'spoon',\n  '🔪': 'hocho',\n  '🫙': 'jar',\n  '🏺': 'amphora',\n  '🌍': 'earth_africa',\n  '🌎': 'earth_americas',\n  '🌏': 'earth_asia',\n  '🌐': 'globe_with_meridians',\n  '🗺️': 'world_map',\n  '🗾': 'japan',\n  '🧭': 'compass',\n  '🏔️': 'mountain_snow',\n  '⛰️': 'mountain',\n  '🌋': 'volcano',\n  '🗻': 'mount_fuji',\n  '🏕️': 'camping',\n  '🏖️': 'beach_umbrella',\n  '🏜️': 'desert',\n  '🏝️': 'desert_island',\n  '🏞️': 'national_park',\n  '🏟️': 'stadium',\n  '🏛️': 'classical_building',\n  '🏗️': 'building_construction',\n  '🧱': 'bricks',\n  '🪨': 'rock',\n  '🪵': 'wood',\n  '🛖': 'hut',\n  '🏘️': 'houses',\n  '🏚️': 'derelict_house',\n  '🏠': 'house',\n  '🏡': 'house_with_garden',\n  '🏢': 'office',\n  '🏣': 'post_office',\n  '🏤': 'european_post_office',\n  '🏥': 'hospital',\n  '🏦': 'bank',\n  '🏨': 'hotel',\n  '🏩': 'love_hotel',\n  '🏪': 'convenience_store',\n  '🏫': 'school',\n  '🏬': 'department_store',\n  '🏭': 'factory',\n  '🏯': 'japanese_castle',\n  '🏰': 'european_castle',\n  '💒': 'wedding',\n  '🗼': 'tokyo_tower',\n  '🗽': 'statue_of_liberty',\n  '⛪': 'church',\n  '🕌': 'mosque',\n  '🛕': 'hindu_temple',\n  '🕍': 'synagogue',\n  '⛩️': 'shinto_shrine',\n  '🕋': 'kaaba',\n  '⛲': 'fountain',\n  '⛺': 'tent',\n  '🌁': 'foggy',\n  '🌃': 'night_with_stars',\n  '🏙️': 'cityscape',\n  '🌄': 'sunrise_over_mountains',\n  '🌅': 'sunrise',\n  '🌆': 'city_sunset',\n  '🌇': 'city_sunrise',\n  '🌉': 'bridge_at_night',\n  '♨️': 'hotsprings',\n  '🎠': 'carousel_horse',\n  '🛝': 'playground_slide',\n  '🎡': 'ferris_wheel',\n  '🎢': 'roller_coaster',\n  '💈': 'barber',\n  '🎪': 'circus_tent',\n  '🚂': 'steam_locomotive',\n  '🚃': 'railway_car',\n  '🚄': 'bullettrain_side',\n  '🚅': 'bullettrain_front',\n  '🚆': 'train2',\n  '🚇': 'metro',\n  '🚈': 'light_rail',\n  '🚉': 'station',\n  '🚊': 'tram',\n  '🚝': 'monorail',\n  '🚞': 'mountain_railway',\n  '🚋': 'train',\n  '🚌': 'bus',\n  '🚍': 'oncoming_bus',\n  '🚎': 'trolleybus',\n  '🚐': 'minibus',\n  '🚑': 'ambulance',\n  '🚒': 'fire_engine',\n  '🚓': 'police_car',\n  '🚔': 'oncoming_police_car',\n  '🚕': 'taxi',\n  '🚖': 'oncoming_taxi',\n  '🚗': 'car',\n  '🚘': 'oncoming_automobile',\n  '🚙': 'blue_car',\n  '🛻': 'pickup_truck',\n  '🚚': 'truck',\n  '🚛': 'articulated_lorry',\n  '🚜': 'tractor',\n  '🏎️': 'racing_car',\n  '🏍️': 'motorcycle',\n  '🛵': 'motor_scooter',\n  '🦽': 'manual_wheelchair',\n  '🦼': 'motorized_wheelchair',\n  '🛺': 'auto_rickshaw',\n  '🚲': 'bike',\n  '🛴': 'kick_scooter',\n  '🛹': 'skateboard',\n  '🛼': 'roller_skate',\n  '🚏': 'busstop',\n  '🛣️': 'motorway',\n  '🛤️': 'railway_track',\n  '🛢️': 'oil_drum',\n  '⛽': 'fuelpump',\n  '🛞': 'wheel',\n  '🚨': 'rotating_light',\n  '🚥': 'traffic_light',\n  '🚦': 'vertical_traffic_light',\n  '🛑': 'stop_sign',\n  '🚧': 'construction',\n  '⚓': 'anchor',\n  '🛟': 'ring_buoy',\n  '⛵': 'boat',\n  '🛶': 'canoe',\n  '🚤': 'speedboat',\n  '🛳️': 'passenger_ship',\n  '⛴️': 'ferry',\n  '🛥️': 'motor_boat',\n  '🚢': 'ship',\n  '✈️': 'airplane',\n  '🛩️': 'small_airplane',\n  '🛫': 'flight_departure',\n  '🛬': 'flight_arrival',\n  '🪂': 'parachute',\n  '💺': 'seat',\n  '🚁': 'helicopter',\n  '🚟': 'suspension_railway',\n  '🚠': 'mountain_cableway',\n  '🚡': 'aerial_tramway',\n  '🛰️': 'artificial_satellite',\n  '🚀': 'rocket',\n  '🛸': 'flying_saucer',\n  '🛎️': 'bellhop_bell',\n  '🧳': 'luggage',\n  '⌛': 'hourglass',\n  '⏳': 'hourglass_flowing_sand',\n  '⌚': 'watch',\n  '⏰': 'alarm_clock',\n  '⏱️': 'stopwatch',\n  '⏲️': 'timer_clock',\n  '🕰️': 'mantelpiece_clock',\n  '🕛': 'clock12',\n  '🕧': 'clock1230',\n  '🕐': 'clock1',\n  '🕜': 'clock130',\n  '🕑': 'clock2',\n  '🕝': 'clock230',\n  '🕒': 'clock3',\n  '🕞': 'clock330',\n  '🕓': 'clock4',\n  '🕟': 'clock430',\n  '🕔': 'clock5',\n  '🕠': 'clock530',\n  '🕕': 'clock6',\n  '🕡': 'clock630',\n  '🕖': 'clock7',\n  '🕢': 'clock730',\n  '🕗': 'clock8',\n  '🕣': 'clock830',\n  '🕘': 'clock9',\n  '🕤': 'clock930',\n  '🕙': 'clock10',\n  '🕥': 'clock1030',\n  '🕚': 'clock11',\n  '🕦': 'clock1130',\n  '🌑': 'new_moon',\n  '🌒': 'waxing_crescent_moon',\n  '🌓': 'first_quarter_moon',\n  '🌔': 'moon',\n  '🌕': 'full_moon',\n  '🌖': 'waning_gibbous_moon',\n  '🌗': 'last_quarter_moon',\n  '🌘': 'waning_crescent_moon',\n  '🌙': 'crescent_moon',\n  '🌚': 'new_moon_with_face',\n  '🌛': 'first_quarter_moon_with_face',\n  '🌜': 'last_quarter_moon_with_face',\n  '🌡️': 'thermometer',\n  '☀️': 'sunny',\n  '🌝': 'full_moon_with_face',\n  '🌞': 'sun_with_face',\n  '🪐': 'ringed_planet',\n  '⭐': 'star',\n  '🌟': 'star2',\n  '🌠': 'stars',\n  '🌌': 'milky_way',\n  '☁️': 'cloud',\n  '⛅': 'partly_sunny',\n  '⛈️': 'cloud_with_lightning_and_rain',\n  '🌤️': 'sun_behind_small_cloud',\n  '🌥️': 'sun_behind_large_cloud',\n  '🌦️': 'sun_behind_rain_cloud',\n  '🌧️': 'cloud_with_rain',\n  '🌨️': 'cloud_with_snow',\n  '🌩️': 'cloud_with_lightning',\n  '🌪️': 'tornado',\n  '🌫️': 'fog',\n  '🌬️': 'wind_face',\n  '🌀': 'cyclone',\n  '🌈': 'rainbow',\n  '🌂': 'closed_umbrella',\n  '☂️': 'open_umbrella',\n  '☔': 'umbrella',\n  '⛱️': 'parasol_on_ground',\n  '⚡': 'zap',\n  '❄️': 'snowflake',\n  '☃️': 'snowman_with_snow',\n  '⛄': 'snowman',\n  '☄️': 'comet',\n  '🔥': 'fire',\n  '💧': 'droplet',\n  '🌊': 'ocean',\n  '🎃': 'jack_o_lantern',\n  '🎄': 'christmas_tree',\n  '🎆': 'fireworks',\n  '🎇': 'sparkler',\n  '🧨': 'firecracker',\n  '✨': 'sparkles',\n  '🎈': 'balloon',\n  '🎉': 'tada',\n  '🎊': 'confetti_ball',\n  '🎋': 'tanabata_tree',\n  '🎍': 'bamboo',\n  '🎎': 'dolls',\n  '🎏': 'flags',\n  '🎐': 'wind_chime',\n  '🎑': 'rice_scene',\n  '🧧': 'red_envelope',\n  '🎀': 'ribbon',\n  '🎁': 'gift',\n  '🎗️': 'reminder_ribbon',\n  '🎟️': 'tickets',\n  '🎫': 'ticket',\n  '🎖️': 'medal_military',\n  '🏆': 'trophy',\n  '🏅': 'medal_sports',\n  '🥇': '1st_place_medal',\n  '🥈': '2nd_place_medal',\n  '🥉': '3rd_place_medal',\n  '⚽': 'soccer',\n  '⚾': 'baseball',\n  '🥎': 'softball',\n  '🏀': 'basketball',\n  '🏐': 'volleyball',\n  '🏈': 'football',\n  '🏉': 'rugby_football',\n  '🎾': 'tennis',\n  '🥏': 'flying_disc',\n  '🎳': 'bowling',\n  '🏏': 'cricket_game',\n  '🏑': 'field_hockey',\n  '🏒': 'ice_hockey',\n  '🥍': 'lacrosse',\n  '🏓': 'ping_pong',\n  '🏸': 'badminton',\n  '🥊': 'boxing_glove',\n  '🥋': 'martial_arts_uniform',\n  '🥅': 'goal_net',\n  '⛳': 'golf',\n  '⛸️': 'ice_skate',\n  '🎣': 'fishing_pole_and_fish',\n  '🤿': 'diving_mask',\n  '🎽': 'running_shirt_with_sash',\n  '🎿': 'ski',\n  '🛷': 'sled',\n  '🥌': 'curling_stone',\n  '🎯': 'dart',\n  '🪀': 'yo_yo',\n  '🪁': 'kite',\n  '🔫': 'gun',\n  '🎱': '8ball',\n  '🔮': 'crystal_ball',\n  '🪄': 'magic_wand',\n  '🎮': 'video_game',\n  '🕹️': 'joystick',\n  '🎰': 'slot_machine',\n  '🎲': 'game_die',\n  '🧩': 'jigsaw',\n  '🧸': 'teddy_bear',\n  '🪅': 'pinata',\n  '🪩': 'mirror_ball',\n  '🪆': 'nesting_dolls',\n  '♠️': 'spades',\n  '♥️': 'hearts',\n  '♦️': 'diamonds',\n  '♣️': 'clubs',\n  '♟️': 'chess_pawn',\n  '🃏': 'black_joker',\n  '🀄': 'mahjong',\n  '🎴': 'flower_playing_cards',\n  '🎭': 'performing_arts',\n  '🖼️': 'framed_picture',\n  '🎨': 'art',\n  '🧵': 'thread',\n  '🪡': 'sewing_needle',\n  '🧶': 'yarn',\n  '🪢': 'knot',\n  '👓': 'eyeglasses',\n  '🕶️': 'dark_sunglasses',\n  '🥽': 'goggles',\n  '🥼': 'lab_coat',\n  '🦺': 'safety_vest',\n  '👔': 'necktie',\n  '👕': 'shirt',\n  '👖': 'jeans',\n  '🧣': 'scarf',\n  '🧤': 'gloves',\n  '🧥': 'coat',\n  '🧦': 'socks',\n  '👗': 'dress',\n  '👘': 'kimono',\n  '🥻': 'sari',\n  '🩱': 'one_piece_swimsuit',\n  '🩲': 'swim_brief',\n  '🩳': 'shorts',\n  '👙': 'bikini',\n  '👚': 'womans_clothes',\n  '🪭': 'folding_hand_fan',\n  '👛': 'purse',\n  '👜': 'handbag',\n  '👝': 'pouch',\n  '🛍️': 'shopping',\n  '🎒': 'school_satchel',\n  '🩴': 'thong_sandal',\n  '👞': 'mans_shoe',\n  '👟': 'athletic_shoe',\n  '🥾': 'hiking_boot',\n  '🥿': 'flat_shoe',\n  '👠': 'high_heel',\n  '👡': 'sandal',\n  '🩰': 'ballet_shoes',\n  '👢': 'boot',\n  '🪮': 'hair_pick',\n  '👑': 'crown',\n  '👒': 'womans_hat',\n  '🎩': 'tophat',\n  '🎓': 'mortar_board',\n  '🧢': 'billed_cap',\n  '🪖': 'military_helmet',\n  '⛑️': 'rescue_worker_helmet',\n  '📿': 'prayer_beads',\n  '💄': 'lipstick',\n  '💍': 'ring',\n  '💎': 'gem',\n  '🔇': 'mute',\n  '🔈': 'speaker',\n  '🔉': 'sound',\n  '🔊': 'loud_sound',\n  '📢': 'loudspeaker',\n  '📣': 'mega',\n  '📯': 'postal_horn',\n  '🔔': 'bell',\n  '🔕': 'no_bell',\n  '🎼': 'musical_score',\n  '🎵': 'musical_note',\n  '🎶': 'notes',\n  '🎙️': 'studio_microphone',\n  '🎚️': 'level_slider',\n  '🎛️': 'control_knobs',\n  '🎤': 'microphone',\n  '🎧': 'headphones',\n  '📻': 'radio',\n  '🎷': 'saxophone',\n  '🪗': 'accordion',\n  '🎸': 'guitar',\n  '🎹': 'musical_keyboard',\n  '🎺': 'trumpet',\n  '🎻': 'violin',\n  '🪕': 'banjo',\n  '🥁': 'drum',\n  '🪘': 'long_drum',\n  '🪇': 'maracas',\n  '🪈': 'flute',\n  '📱': 'iphone',\n  '📲': 'calling',\n  '☎️': 'phone',\n  '📞': 'telephone_receiver',\n  '📟': 'pager',\n  '📠': 'fax',\n  '🔋': 'battery',\n  '🪫': 'low_battery',\n  '🔌': 'electric_plug',\n  '💻': 'computer',\n  '🖥️': 'desktop_computer',\n  '🖨️': 'printer',\n  '⌨️': 'keyboard',\n  '🖱️': 'computer_mouse',\n  '🖲️': 'trackball',\n  '💽': 'minidisc',\n  '💾': 'floppy_disk',\n  '💿': 'cd',\n  '📀': 'dvd',\n  '🧮': 'abacus',\n  '🎥': 'movie_camera',\n  '🎞️': 'film_strip',\n  '📽️': 'film_projector',\n  '🎬': 'clapper',\n  '📺': 'tv',\n  '📷': 'camera',\n  '📸': 'camera_flash',\n  '📹': 'video_camera',\n  '📼': 'vhs',\n  '🔍': 'mag',\n  '🔎': 'mag_right',\n  '🕯️': 'candle',\n  '💡': 'bulb',\n  '🔦': 'flashlight',\n  '🏮': 'izakaya_lantern',\n  '🪔': 'diya_lamp',\n  '📔': 'notebook_with_decorative_cover',\n  '📕': 'closed_book',\n  '📖': 'book',\n  '📗': 'green_book',\n  '📘': 'blue_book',\n  '📙': 'orange_book',\n  '📚': 'books',\n  '📓': 'notebook',\n  '📒': 'ledger',\n  '📃': 'page_with_curl',\n  '📜': 'scroll',\n  '📄': 'page_facing_up',\n  '📰': 'newspaper',\n  '🗞️': 'newspaper_roll',\n  '📑': 'bookmark_tabs',\n  '🔖': 'bookmark',\n  '🏷️': 'label',\n  '💰': 'moneybag',\n  '🪙': 'coin',\n  '💴': 'yen',\n  '💵': 'dollar',\n  '💶': 'euro',\n  '💷': 'pound',\n  '💸': 'money_with_wings',\n  '💳': 'credit_card',\n  '🧾': 'receipt',\n  '💹': 'chart',\n  '✉️': 'envelope',\n  '📧': 'email',\n  '📨': 'incoming_envelope',\n  '📩': 'envelope_with_arrow',\n  '📤': 'outbox_tray',\n  '📥': 'inbox_tray',\n  '📦': 'package',\n  '📫': 'mailbox',\n  '📪': 'mailbox_closed',\n  '📬': 'mailbox_with_mail',\n  '📭': 'mailbox_with_no_mail',\n  '📮': 'postbox',\n  '🗳️': 'ballot_box',\n  '✏️': 'pencil2',\n  '✒️': 'black_nib',\n  '🖋️': 'fountain_pen',\n  '🖊️': 'pen',\n  '🖌️': 'paintbrush',\n  '🖍️': 'crayon',\n  '📝': 'memo',\n  '💼': 'briefcase',\n  '📁': 'file_folder',\n  '📂': 'open_file_folder',\n  '🗂️': 'card_index_dividers',\n  '📅': 'date',\n  '📆': 'calendar',\n  '🗒️': 'spiral_notepad',\n  '🗓️': 'spiral_calendar',\n  '📇': 'card_index',\n  '📈': 'chart_with_upwards_trend',\n  '📉': 'chart_with_downwards_trend',\n  '📊': 'bar_chart',\n  '📋': 'clipboard',\n  '📌': 'pushpin',\n  '📍': 'round_pushpin',\n  '📎': 'paperclip',\n  '🖇️': 'paperclips',\n  '📏': 'straight_ruler',\n  '📐': 'triangular_ruler',\n  '✂️': 'scissors',\n  '🗃️': 'card_file_box',\n  '🗄️': 'file_cabinet',\n  '🗑️': 'wastebasket',\n  '🔒': 'lock',\n  '🔓': 'unlock',\n  '🔏': 'lock_with_ink_pen',\n  '🔐': 'closed_lock_with_key',\n  '🔑': 'key',\n  '🗝️': 'old_key',\n  '🔨': 'hammer',\n  '🪓': 'axe',\n  '⛏️': 'pick',\n  '⚒️': 'hammer_and_pick',\n  '🛠️': 'hammer_and_wrench',\n  '🗡️': 'dagger',\n  '⚔️': 'crossed_swords',\n  '💣': 'bomb',\n  '🪃': 'boomerang',\n  '🏹': 'bow_and_arrow',\n  '🛡️': 'shield',\n  '🪚': 'carpentry_saw',\n  '🔧': 'wrench',\n  '🪛': 'screwdriver',\n  '🔩': 'nut_and_bolt',\n  '⚙️': 'gear',\n  '🗜️': 'clamp',\n  '⚖️': 'balance_scale',\n  '🦯': 'probing_cane',\n  '🔗': 'link',\n  '⛓️': 'chains',\n  '🪝': 'hook',\n  '🧰': 'toolbox',\n  '🧲': 'magnet',\n  '🪜': 'ladder',\n  '⚗️': 'alembic',\n  '🧪': 'test_tube',\n  '🧫': 'petri_dish',\n  '🧬': 'dna',\n  '🔬': 'microscope',\n  '🔭': 'telescope',\n  '📡': 'satellite',\n  '💉': 'syringe',\n  '🩸': 'drop_of_blood',\n  '💊': 'pill',\n  '🩹': 'adhesive_bandage',\n  '🩼': 'crutch',\n  '🩺': 'stethoscope',\n  '🩻': 'x_ray',\n  '🚪': 'door',\n  '🛗': 'elevator',\n  '🪞': 'mirror',\n  '🪟': 'window',\n  '🛏️': 'bed',\n  '🛋️': 'couch_and_lamp',\n  '🪑': 'chair',\n  '🚽': 'toilet',\n  '🪠': 'plunger',\n  '🚿': 'shower',\n  '🛁': 'bathtub',\n  '🪤': 'mouse_trap',\n  '🪒': 'razor',\n  '🧴': 'lotion_bottle',\n  '🧷': 'safety_pin',\n  '🧹': 'broom',\n  '🧺': 'basket',\n  '🧻': 'roll_of_paper',\n  '🪣': 'bucket',\n  '🧼': 'soap',\n  '🫧': 'bubbles',\n  '🪥': 'toothbrush',\n  '🧽': 'sponge',\n  '🧯': 'fire_extinguisher',\n  '🛒': 'shopping_cart',\n  '🚬': 'smoking',\n  '⚰️': 'coffin',\n  '🪦': 'headstone',\n  '⚱️': 'funeral_urn',\n  '🧿': 'nazar_amulet',\n  '🪬': 'hamsa',\n  '🗿': 'moyai',\n  '🪧': 'placard',\n  '🪪': 'identification_card',\n  '🏧': 'atm',\n  '🚮': 'put_litter_in_its_place',\n  '🚰': 'potable_water',\n  '♿': 'wheelchair',\n  '🚹': 'mens',\n  '🚺': 'womens',\n  '🚻': 'restroom',\n  '🚼': 'baby_symbol',\n  '🚾': 'wc',\n  '🛂': 'passport_control',\n  '🛃': 'customs',\n  '🛄': 'baggage_claim',\n  '🛅': 'left_luggage',\n  '⚠️': 'warning',\n  '🚸': 'children_crossing',\n  '⛔': 'no_entry',\n  '🚫': 'no_entry_sign',\n  '🚳': 'no_bicycles',\n  '🚭': 'no_smoking',\n  '🚯': 'do_not_litter',\n  '🚱': 'non-potable_water',\n  '🚷': 'no_pedestrians',\n  '📵': 'no_mobile_phones',\n  '🔞': 'underage',\n  '☢️': 'radioactive',\n  '☣️': 'biohazard',\n  '⬆️': 'arrow_up',\n  '↗️': 'arrow_upper_right',\n  '➡️': 'arrow_right',\n  '↘️': 'arrow_lower_right',\n  '⬇️': 'arrow_down',\n  '↙️': 'arrow_lower_left',\n  '⬅️': 'arrow_left',\n  '↖️': 'arrow_upper_left',\n  '↕️': 'arrow_up_down',\n  '↔️': 'left_right_arrow',\n  '↩️': 'leftwards_arrow_with_hook',\n  '↪️': 'arrow_right_hook',\n  '⤴️': 'arrow_heading_up',\n  '⤵️': 'arrow_heading_down',\n  '🔃': 'arrows_clockwise',\n  '🔄': 'arrows_counterclockwise',\n  '🔙': 'back',\n  '🔚': 'end',\n  '🔛': 'on',\n  '🔜': 'soon',\n  '🔝': 'top',\n  '🛐': 'place_of_worship',\n  '⚛️': 'atom_symbol',\n  '🕉️': 'om',\n  '✡️': 'star_of_david',\n  '☸️': 'wheel_of_dharma',\n  '☯️': 'yin_yang',\n  '✝️': 'latin_cross',\n  '☦️': 'orthodox_cross',\n  '☪️': 'star_and_crescent',\n  '☮️': 'peace_symbol',\n  '🕎': 'menorah',\n  '🔯': 'six_pointed_star',\n  '🪯': 'khanda',\n  '♈': 'aries',\n  '♉': 'taurus',\n  '♊': 'gemini',\n  '♋': 'cancer',\n  '♌': 'leo',\n  '♍': 'virgo',\n  '♎': 'libra',\n  '♏': 'scorpius',\n  '♐': 'sagittarius',\n  '♑': 'capricorn',\n  '♒': 'aquarius',\n  '♓': 'pisces',\n  '⛎': 'ophiuchus',\n  '🔀': 'twisted_rightwards_arrows',\n  '🔁': 'repeat',\n  '🔂': 'repeat_one',\n  '▶️': 'arrow_forward',\n  '⏩': 'fast_forward',\n  '⏭️': 'next_track_button',\n  '⏯️': 'play_or_pause_button',\n  '◀️': 'arrow_backward',\n  '⏪': 'rewind',\n  '⏮️': 'previous_track_button',\n  '🔼': 'arrow_up_small',\n  '⏫': 'arrow_double_up',\n  '🔽': 'arrow_down_small',\n  '⏬': 'arrow_double_down',\n  '⏸️': 'pause_button',\n  '⏹️': 'stop_button',\n  '⏺️': 'record_button',\n  '⏏️': 'eject_button',\n  '🎦': 'cinema',\n  '🔅': 'low_brightness',\n  '🔆': 'high_brightness',\n  '📶': 'signal_strength',\n  '🛜': 'wireless',\n  '📳': 'vibration_mode',\n  '📴': 'mobile_phone_off',\n  '♀️': 'female_sign',\n  '♂️': 'male_sign',\n  '⚧️': 'transgender_symbol',\n  '✖️': 'heavy_multiplication_x',\n  '➕': 'heavy_plus_sign',\n  '➖': 'heavy_minus_sign',\n  '➗': 'heavy_division_sign',\n  '🟰': 'heavy_equals_sign',\n  '♾️': 'infinity',\n  '‼️': 'bangbang',\n  '⁉️': 'interrobang',\n  '❓': 'question',\n  '❔': 'grey_question',\n  '❕': 'grey_exclamation',\n  '❗': 'exclamation',\n  '〰️': 'wavy_dash',\n  '💱': 'currency_exchange',\n  '💲': 'heavy_dollar_sign',\n  '⚕️': 'medical_symbol',\n  '♻️': 'recycle',\n  '⚜️': 'fleur_de_lis',\n  '🔱': 'trident',\n  '📛': 'name_badge',\n  '🔰': 'beginner',\n  '⭕': 'o',\n  '✅': 'white_check_mark',\n  '☑️': 'ballot_box_with_check',\n  '✔️': 'heavy_check_mark',\n  '❌': 'x',\n  '❎': 'negative_squared_cross_mark',\n  '➰': 'curly_loop',\n  '➿': 'loop',\n  '〽️': 'part_alternation_mark',\n  '✳️': 'eight_spoked_asterisk',\n  '✴️': 'eight_pointed_black_star',\n  '❇️': 'sparkle',\n  '©️': 'copyright',\n  '®️': 'registered',\n  '™️': 'tm',\n  '#️⃣': 'hash',\n  '*️⃣': 'asterisk',\n  '0️⃣': 'zero',\n  '1️⃣': 'one',\n  '2️⃣': 'two',\n  '3️⃣': 'three',\n  '4️⃣': 'four',\n  '5️⃣': 'five',\n  '6️⃣': 'six',\n  '7️⃣': 'seven',\n  '8️⃣': 'eight',\n  '9️⃣': 'nine',\n  '🔟': 'keycap_ten',\n  '🔠': 'capital_abcd',\n  '🔡': 'abcd',\n  '🔢': '1234',\n  '🔣': 'symbols',\n  '🔤': 'abc',\n  '🅰️': 'a',\n  '🆎': 'ab',\n  '🅱️': 'b',\n  '🆑': 'cl',\n  '🆒': 'cool',\n  '🆓': 'free',\n  ℹ️: 'information_source',\n  '🆔': 'id',\n  'Ⓜ️': 'm',\n  '🆕': 'new',\n  '🆖': 'ng',\n  '🅾️': 'o2',\n  '🆗': 'ok',\n  '🅿️': 'parking',\n  '🆘': 'sos',\n  '🆙': 'up',\n  '🆚': 'vs',\n  '🈁': 'koko',\n  '🈂️': 'sa',\n  '🈷️': 'u6708',\n  '🈶': 'u6709',\n  '🈯': 'u6307',\n  '🉐': 'ideograph_advantage',\n  '🈹': 'u5272',\n  '🈚': 'u7121',\n  '🈲': 'u7981',\n  '🉑': 'accept',\n  '🈸': 'u7533',\n  '🈴': 'u5408',\n  '🈳': 'u7a7a',\n  '㊗️': 'congratulations',\n  '㊙️': 'secret',\n  '🈺': 'u55b6',\n  '🈵': 'u6e80',\n  '🔴': 'red_circle',\n  '🟠': 'orange_circle',\n  '🟡': 'yellow_circle',\n  '🟢': 'green_circle',\n  '🔵': 'large_blue_circle',\n  '🟣': 'purple_circle',\n  '🟤': 'brown_circle',\n  '⚫': 'black_circle',\n  '⚪': 'white_circle',\n  '🟥': 'red_square',\n  '🟧': 'orange_square',\n  '🟨': 'yellow_square',\n  '🟩': 'green_square',\n  '🟦': 'blue_square',\n  '🟪': 'purple_square',\n  '🟫': 'brown_square',\n  '⬛': 'black_large_square',\n  '⬜': 'white_large_square',\n  '◼️': 'black_medium_square',\n  '◻️': 'white_medium_square',\n  '◾': 'black_medium_small_square',\n  '◽': 'white_medium_small_square',\n  '▪️': 'black_small_square',\n  '▫️': 'white_small_square',\n  '🔶': 'large_orange_diamond',\n  '🔷': 'large_blue_diamond',\n  '🔸': 'small_orange_diamond',\n  '🔹': 'small_blue_diamond',\n  '🔺': 'small_red_triangle',\n  '🔻': 'small_red_triangle_down',\n  '💠': 'diamond_shape_with_a_dot_inside',\n  '🔘': 'radio_button',\n  '🔳': 'white_square_button',\n  '🔲': 'black_square_button',\n  '🏁': 'checkered_flag',\n  '🚩': 'triangular_flag_on_post',\n  '🎌': 'crossed_flags',\n  '🏴': 'black_flag',\n  '🏳️': 'white_flag',\n  '🏳️‍🌈': 'rainbow_flag',\n  '🏳️‍⚧️': 'transgender_flag',\n  '🏴‍☠️': 'pirate_flag',\n  '🇦🇨': 'ascension_island',\n  '🇦🇩': 'andorra',\n  '🇦🇪': 'united_arab_emirates',\n  '🇦🇫': 'afghanistan',\n  '🇦🇬': 'antigua_barbuda',\n  '🇦🇮': 'anguilla',\n  '🇦🇱': 'albania',\n  '🇦🇲': 'armenia',\n  '🇦🇴': 'angola',\n  '🇦🇶': 'antarctica',\n  '🇦🇷': 'argentina',\n  '🇦🇸': 'american_samoa',\n  '🇦🇹': 'austria',\n  '🇦🇺': 'australia',\n  '🇦🇼': 'aruba',\n  '🇦🇽': 'aland_islands',\n  '🇦🇿': 'azerbaijan',\n  '🇧🇦': 'bosnia_herzegovina',\n  '🇧🇧': 'barbados',\n  '🇧🇩': 'bangladesh',\n  '🇧🇪': 'belgium',\n  '🇧🇫': 'burkina_faso',\n  '🇧🇬': 'bulgaria',\n  '🇧🇭': 'bahrain',\n  '🇧🇮': 'burundi',\n  '🇧🇯': 'benin',\n  '🇧🇱': 'st_barthelemy',\n  '🇧🇲': 'bermuda',\n  '🇧🇳': 'brunei',\n  '🇧🇴': 'bolivia',\n  '🇧🇶': 'caribbean_netherlands',\n  '🇧🇷': 'brazil',\n  '🇧🇸': 'bahamas',\n  '🇧🇹': 'bhutan',\n  '🇧🇻': 'bouvet_island',\n  '🇧🇼': 'botswana',\n  '🇧🇾': 'belarus',\n  '🇧🇿': 'belize',\n  '🇨🇦': 'canada',\n  '🇨🇨': 'cocos_islands',\n  '🇨🇩': 'congo_kinshasa',\n  '🇨🇫': 'central_african_republic',\n  '🇨🇬': 'congo_brazzaville',\n  '🇨🇭': 'switzerland',\n  '🇨🇮': 'cote_divoire',\n  '🇨🇰': 'cook_islands',\n  '🇨🇱': 'chile',\n  '🇨🇲': 'cameroon',\n  '🇨🇳': 'cn',\n  '🇨🇴': 'colombia',\n  '🇨🇵': 'clipperton_island',\n  '🇨🇷': 'costa_rica',\n  '🇨🇺': 'cuba',\n  '🇨🇻': 'cape_verde',\n  '🇨🇼': 'curacao',\n  '🇨🇽': 'christmas_island',\n  '🇨🇾': 'cyprus',\n  '🇨🇿': 'czech_republic',\n  '🇩🇪': 'de',\n  '🇩🇬': 'diego_garcia',\n  '🇩🇯': 'djibouti',\n  '🇩🇰': 'denmark',\n  '🇩🇲': 'dominica',\n  '🇩🇴': 'dominican_republic',\n  '🇩🇿': 'algeria',\n  '🇪🇦': 'ceuta_melilla',\n  '🇪🇨': 'ecuador',\n  '🇪🇪': 'estonia',\n  '🇪🇬': 'egypt',\n  '🇪🇭': 'western_sahara',\n  '🇪🇷': 'eritrea',\n  '🇪🇸': 'es',\n  '🇪🇹': 'ethiopia',\n  '🇪🇺': 'eu',\n  '🇫🇮': 'finland',\n  '🇫🇯': 'fiji',\n  '🇫🇰': 'falkland_islands',\n  '🇫🇲': 'micronesia',\n  '🇫🇴': 'faroe_islands',\n  '🇫🇷': 'fr',\n  '🇬🇦': 'gabon',\n  '🇬🇧': 'gb',\n  '🇬🇩': 'grenada',\n  '🇬🇪': 'georgia',\n  '🇬🇫': 'french_guiana',\n  '🇬🇬': 'guernsey',\n  '🇬🇭': 'ghana',\n  '🇬🇮': 'gibraltar',\n  '🇬🇱': 'greenland',\n  '🇬🇲': 'gambia',\n  '🇬🇳': 'guinea',\n  '🇬🇵': 'guadeloupe',\n  '🇬🇶': 'equatorial_guinea',\n  '🇬🇷': 'greece',\n  '🇬🇸': 'south_georgia_south_sandwich_islands',\n  '🇬🇹': 'guatemala',\n  '🇬🇺': 'guam',\n  '🇬🇼': 'guinea_bissau',\n  '🇬🇾': 'guyana',\n  '🇭🇰': 'hong_kong',\n  '🇭🇲': 'heard_mcdonald_islands',\n  '🇭🇳': 'honduras',\n  '🇭🇷': 'croatia',\n  '🇭🇹': 'haiti',\n  '🇭🇺': 'hungary',\n  '🇮🇨': 'canary_islands',\n  '🇮🇩': 'indonesia',\n  '🇮🇪': 'ireland',\n  '🇮🇱': 'israel',\n  '🇮🇲': 'isle_of_man',\n  '🇮🇳': 'india',\n  '🇮🇴': 'british_indian_ocean_territory',\n  '🇮🇶': 'iraq',\n  '🇮🇷': 'iran',\n  '🇮🇸': 'iceland',\n  '🇮🇹': 'it',\n  '🇯🇪': 'jersey',\n  '🇯🇲': 'jamaica',\n  '🇯🇴': 'jordan',\n  '🇯🇵': 'jp',\n  '🇰🇪': 'kenya',\n  '🇰🇬': 'kyrgyzstan',\n  '🇰🇭': 'cambodia',\n  '🇰🇮': 'kiribati',\n  '🇰🇲': 'comoros',\n  '🇰🇳': 'st_kitts_nevis',\n  '🇰🇵': 'north_korea',\n  '🇰🇷': 'kr',\n  '🇰🇼': 'kuwait',\n  '🇰🇾': 'cayman_islands',\n  '🇰🇿': 'kazakhstan',\n  '🇱🇦': 'laos',\n  '🇱🇧': 'lebanon',\n  '🇱🇨': 'st_lucia',\n  '🇱🇮': 'liechtenstein',\n  '🇱🇰': 'sri_lanka',\n  '🇱🇷': 'liberia',\n  '🇱🇸': 'lesotho',\n  '🇱🇹': 'lithuania',\n  '🇱🇺': 'luxembourg',\n  '🇱🇻': 'latvia',\n  '🇱🇾': 'libya',\n  '🇲🇦': 'morocco',\n  '🇲🇨': 'monaco',\n  '🇲🇩': 'moldova',\n  '🇲🇪': 'montenegro',\n  '🇲🇫': 'st_martin',\n  '🇲🇬': 'madagascar',\n  '🇲🇭': 'marshall_islands',\n  '🇲🇰': 'macedonia',\n  '🇲🇱': 'mali',\n  '🇲🇲': 'myanmar',\n  '🇲🇳': 'mongolia',\n  '🇲🇴': 'macau',\n  '🇲🇵': 'northern_mariana_islands',\n  '🇲🇶': 'martinique',\n  '🇲🇷': 'mauritania',\n  '🇲🇸': 'montserrat',\n  '🇲🇹': 'malta',\n  '🇲🇺': 'mauritius',\n  '🇲🇻': 'maldives',\n  '🇲🇼': 'malawi',\n  '🇲🇽': 'mexico',\n  '🇲🇾': 'malaysia',\n  '🇲🇿': 'mozambique',\n  '🇳🇦': 'namibia',\n  '🇳🇨': 'new_caledonia',\n  '🇳🇪': 'niger',\n  '🇳🇫': 'norfolk_island',\n  '🇳🇬': 'nigeria',\n  '🇳🇮': 'nicaragua',\n  '🇳🇱': 'netherlands',\n  '🇳🇴': 'norway',\n  '🇳🇵': 'nepal',\n  '🇳🇷': 'nauru',\n  '🇳🇺': 'niue',\n  '🇳🇿': 'new_zealand',\n  '🇴🇲': 'oman',\n  '🇵🇦': 'panama',\n  '🇵🇪': 'peru',\n  '🇵🇫': 'french_polynesia',\n  '🇵🇬': 'papua_new_guinea',\n  '🇵🇭': 'philippines',\n  '🇵🇰': 'pakistan',\n  '🇵🇱': 'poland',\n  '🇵🇲': 'st_pierre_miquelon',\n  '🇵🇳': 'pitcairn_islands',\n  '🇵🇷': 'puerto_rico',\n  '🇵🇸': 'palestinian_territories',\n  '🇵🇹': 'portugal',\n  '🇵🇼': 'palau',\n  '🇵🇾': 'paraguay',\n  '🇶🇦': 'qatar',\n  '🇷🇪': 'reunion',\n  '🇷🇴': 'romania',\n  '🇷🇸': 'serbia',\n  '🇷🇺': 'ru',\n  '🇷🇼': 'rwanda',\n  '🇸🇦': 'saudi_arabia',\n  '🇸🇧': 'solomon_islands',\n  '🇸🇨': 'seychelles',\n  '🇸🇩': 'sudan',\n  '🇸🇪': 'sweden',\n  '🇸🇬': 'singapore',\n  '🇸🇭': 'st_helena',\n  '🇸🇮': 'slovenia',\n  '🇸🇯': 'svalbard_jan_mayen',\n  '🇸🇰': 'slovakia',\n  '🇸🇱': 'sierra_leone',\n  '🇸🇲': 'san_marino',\n  '🇸🇳': 'senegal',\n  '🇸🇴': 'somalia',\n  '🇸🇷': 'suriname',\n  '🇸🇸': 'south_sudan',\n  '🇸🇹': 'sao_tome_principe',\n  '🇸🇻': 'el_salvador',\n  '🇸🇽': 'sint_maarten',\n  '🇸🇾': 'syria',\n  '🇸🇿': 'swaziland',\n  '🇹🇦': 'tristan_da_cunha',\n  '🇹🇨': 'turks_caicos_islands',\n  '🇹🇩': 'chad',\n  '🇹🇫': 'french_southern_territories',\n  '🇹🇬': 'togo',\n  '🇹🇭': 'thailand',\n  '🇹🇯': 'tajikistan',\n  '🇹🇰': 'tokelau',\n  '🇹🇱': 'timor_leste',\n  '🇹🇲': 'turkmenistan',\n  '🇹🇳': 'tunisia',\n  '🇹🇴': 'tonga',\n  '🇹🇷': 'tr',\n  '🇹🇹': 'trinidad_tobago',\n  '🇹🇻': 'tuvalu',\n  '🇹🇼': 'taiwan',\n  '🇹🇿': 'tanzania',\n  '🇺🇦': 'ukraine',\n  '🇺🇬': 'uganda',\n  '🇺🇲': 'us_outlying_islands',\n  '🇺🇳': 'united_nations',\n  '🇺🇸': 'us',\n  '🇺🇾': 'uruguay',\n  '🇺🇿': 'uzbekistan',\n  '🇻🇦': 'vatican_city',\n  '🇻🇨': 'st_vincent_grenadines',\n  '🇻🇪': 'venezuela',\n  '🇻🇬': 'british_virgin_islands',\n  '🇻🇮': 'us_virgin_islands',\n  '🇻🇳': 'vietnam',\n  '🇻🇺': 'vanuatu',\n  '🇼🇫': 'wallis_futuna',\n  '🇼🇸': 'samoa',\n  '🇽🇰': 'kosovo',\n  '🇾🇪': 'yemen',\n  '🇾🇹': 'mayotte',\n  '🇿🇦': 'south_africa',\n  '🇿🇲': 'zambia',\n  '🇿🇼': 'zimbabwe',\n  '🏴󠁧󠁢󠁥󠁮󠁧󠁿': 'england',\n  '🏴󠁧󠁢󠁳󠁣󠁴󠁿': 'scotland',\n  '🏴󠁧󠁢󠁷󠁬󠁳󠁿': 'wales'\n}\n\n;// ./lib/owlmoji.ts\n\nconst owlmoji = [\n    {\n        emoji: '', // This `emoji` property doesn't get consumed, but is required for type consistency\n        names: ['owlbert'],\n        tags: ['owlbert'],\n        description: 'an owlbert for any occasion',\n        category: 'ReadMe',\n    },\n    {\n        emoji: '',\n        names: ['owlbert-books'],\n        tags: ['owlbert'],\n        description: 'owlbert carrying books',\n        category: 'ReadMe',\n    },\n    {\n        emoji: '',\n        names: ['owlbert-mask'],\n        tags: ['owlbert'],\n        description: 'owlbert with a respirator',\n        category: 'ReadMe',\n    },\n    {\n        emoji: '',\n        names: ['owlbert-reading'],\n        tags: ['owlbert'],\n        description: 'owlbert reading',\n        category: 'ReadMe',\n    },\n    {\n        emoji: '',\n        names: ['owlbert-thinking'],\n        tags: ['owlbert'],\n        description: 'owlbert thinking',\n        category: 'ReadMe',\n    },\n];\nconst owlmojiNames = owlmoji.flatMap(emoji => emoji.names);\nclass Owlmoji {\n    static kind = (name) => {\n        if (name in nameToEmoji)\n            return 'gemoji';\n        else if (name.match(/^fa-/))\n            return 'fontawesome';\n        else if (owlmojiNames.includes(name))\n            return 'owlmoji';\n        return null;\n    };\n    static nameToEmoji = nameToEmoji;\n    static owlmoji = gemoji.concat(owlmoji);\n}\n\n;// ./processor/transform/gemoji+.ts\n\n\n\nconst gemoji_regex = /(?<=^|\\s):(?<name>\\+1|[-\\w]+):/g;\nconst gemojiReplacer = (_, name) => {\n    switch (Owlmoji.kind(name)) {\n        case 'gemoji': {\n            const node = {\n                type: NodeTypes.emoji,\n                value: Owlmoji.nameToEmoji[name],\n                name,\n            };\n            return node;\n        }\n        case 'fontawesome': {\n            const node = {\n                type: NodeTypes.i,\n                value: name,\n                data: {\n                    hName: 'i',\n                    hProperties: {\n                        className: ['fa-regular', name],\n                    },\n                },\n            };\n            return node;\n        }\n        case 'owlmoji': {\n            const node = {\n                type: 'image',\n                title: `:${name}:`,\n                alt: `:${name}:`,\n                url: `/public/img/emojis/${name}.png`,\n                data: {\n                    hProperties: {\n                        className: 'emoji',\n                        align: 'absmiddle',\n                        height: '20',\n                        width: '20',\n                    },\n                },\n            };\n            return node;\n        }\n        default:\n            return false;\n    }\n};\nconst gemojiTransformer = () => (tree) => {\n    findAndReplace(tree, [gemoji_regex, gemojiReplacer]);\n    return tree;\n};\n/* harmony default export */ const gemoji_ = (gemojiTransformer);\n\n;// ./lib/mdast.ts\n\nconst mdast = (text, opts = {}) => {\n    const processor = ast_processor(opts);\n    const tree = processor.parse(text);\n    return processor.runSync(tree);\n};\n/* harmony default export */ const lib_mdast = (mdast);\n\n;// ./processor/utils.ts\n\n\n/**\n * Formats the hProperties of a node as a string, so they can be compiled back into JSX/MDX.\n * This currently sets all the values to a string since we process/compile the MDX on the fly\n * through the editor, and it'll throw errors over malformed JSX. TODO: fix this.\n *\n * @template T\n * @param {Node} node\n * @returns {string} formatted hProperties as JSX attributes\n */\nconst formatHProps = (node) => {\n    const hProps = getHProps(node);\n    return formatProps(hProps);\n};\n/**\n * Formats an object of props as a string.\n *\n * @param {Object} props\n * @returns {string}\n */\nconst formatProps = (props) => {\n    const keys = Object.keys(props);\n    return keys.map(key => `${key}=\"${props[key]}\"`).join(' ');\n};\n/**\n * Returns the hProperties of a node.\n *\n * @template T\n * @param {Node} node\n * @returns {T} hProperties\n */\nconst getHProps = (node) => {\n    const hProps = node.data?.hProperties || {};\n    return hProps;\n};\n/**\n * Returns array of hProperty keys.\n *\n * @template T\n * @param {Node} node\n * @returns {Array} array of hProperty keys\n */\nconst getHPropKeys = (node) => {\n    const hProps = getHProps(node);\n    return Object.keys(hProps) || [];\n};\n/**\n * Gets the attributes of an MDX element and returns them as an object of hProperties.\n *\n * @template T\n * @param {(MdxJsxFlowElement | MdxJsxTextElement)} jsx\n * @returns {T} object of hProperties\n */\nconst getAttrs = (jsx) => jsx.attributes.reduce((memo, attr) => {\n    if ('name' in attr) {\n        if (typeof attr.value === 'string') {\n            memo[attr.name] = attr.value;\n        }\n        else if (attr.value === null) {\n            memo[attr.name] = true;\n        }\n        else if (attr.value.value !== 'undefined') {\n            memo[attr.name] = JSON.parse(attr.value.value);\n        }\n    }\n    return memo;\n}, {});\n/**\n * Gets the children of an MDX element and returns them as an array of Text nodes.\n * Currently only being used by the HTML Block component, which only expects a single text node.\n *\n * @template T\n * @param {(MdxJsxFlowElement | MdxJsxTextElement)} jsx\n * @returns {Array} array of child text nodes\n */\nconst getChildren = (jsx) => jsx.children.reduce((memo, child, i) => {\n    memo[i] = {\n        type: 'text',\n        value: child.value,\n        position: child.position,\n    };\n    return memo;\n}, []);\n/**\n * Tests if a node is an MDX element.\n * TODO: Make this more extensible to all types of nodes. isElement(node, 'type' or ['type1', 'type2']), say\n *\n * @param {Node} node\n * @returns {(node is MdxJsxFlowElement | MdxJsxTextElement | MdxjsEsm)}\n */\nconst isMDXElement = (node) => {\n    return ['mdxJsxFlowElement', 'mdxJsxTextElement'].includes(node.type);\n};\n/**\n * Tests if a node is an MDX ESM element (i.e. import or export).\n *\n * @param {Node} node\n * @returns {boolean}\n */\nconst isMDXEsm = (node) => {\n    return node.type === 'mdxjsEsm';\n};\n/**\n * Takes an HTML string and formats it for display in the editor. Removes leading/trailing newlines\n * and unindents the HTML.\n *\n * @param {string} html - HTML content from template literal\n * @returns {string} processed HTML\n */\nfunction formatHtmlForMdxish(html) {\n    // Remove leading/trailing backticks if present, since they're used to keep the HTML\n    // from being parsed prematurely\n    let processed = html;\n    if (processed.startsWith('`') && processed.endsWith('`')) {\n        processed = processed.slice(1, -1);\n    }\n    // Removes the leading/trailing newlines\n    let cleaned = processed.replace(/^\\s*\\n|\\n\\s*$/g, '');\n    // Convert literal \\n sequences to actual newlines BEFORE processing backticks\n    // This prevents the backtick unescaping regex from incorrectly matching \\n sequences\n    cleaned = cleaned.replace(/\\\\n/g, '\\n');\n    // Unescape backticks: \\` -> ` (users escape backticks in template literals)\n    // Handle both cases: \\` (adjacent) and \\ followed by ` (split by markdown parser)\n    cleaned = cleaned.replace(/\\\\`/g, '`');\n    // Also handle case where backslash and backtick got separated by markdown parsing\n    // Pattern: backslash followed by any characters (but not \\n which we already handled), then a backtick\n    // This handles cases like: \\example` -> `example` (replacing \\ with ` at start)\n    // Exclude \\n sequences to avoid matching them incorrectly\n    cleaned = cleaned.replace(/\\\\([^`\\\\n]*?)`/g, '`$1`');\n    // Fix case where markdown parser consumed one backtick from triple backticks\n    // Pattern: `` followed by a word (like ``javascript) should be ```javascript\n    // This handles cases where code fences were parsed and one backtick was lost\n    cleaned = cleaned.replace(/<(\\w+[^>]*)>``(\\w+)/g, '<$1>```$2');\n    // Unescape dollar signs: \\$ -> $ (users escape $ in template literals to prevent interpolation)\n    cleaned = cleaned.replace(/\\\\\\$/g, '$');\n    return cleaned;\n}\n/**\n * Takes an HTML string and formats it for display in the editor. Removes leading/trailing newlines\n * and unindents the HTML.\n *\n * @param {string} html\n * @returns {string} formatted HTML\n */\nconst formatHTML = (html) => {\n    // Remove leading/trailing backticks if present, since they're used to keep the HTML\n    // from being parsed prematurely\n    if (html.startsWith('`') && html.endsWith('`')) {\n        // eslint-disable-next-line no-param-reassign\n        html = html.slice(1, -1);\n    }\n    // Removes the leading/trailing newlines\n    const cleaned = html.replace(/^\\s*\\n|\\n\\s*$/g, '');\n    // // Get the number of spaces in the first line to determine the tab size\n    // const tab = cleaned.match(/^\\s*/)[0].length;\n    // // Remove the first indentation level from each line\n    // const tabRegex = new RegExp(`^\\\\s{${tab}}`, 'gm');\n    // const unindented = cleaned.replace(tabRegex, '');\n    return cleaned;\n};\n/**\n * Reformat HTML for the markdown/mdx by adding an indentation to each line. This assures that the\n * HTML is indentend properly within the HTMLBlock component when rendered in the markdown/mdx.\n *\n * @param {string} html\n * @param {number} [indent=2]\n * @returns {string} re-formatted HTML\n */\nconst reformatHTML = (html) => {\n    // Remove leading/trailing newlines\n    const cleaned = html.replace(/^\\s*\\n|\\n\\s*$/g, '').replaceAll(/(?<!\\\\(\\\\\\\\)*)`/g, '\\\\`');\n    // // Create a tab/indent with the specified number of spaces\n    // const tab = ' '.repeat(indent);\n    // // Indent each line of the HTML (converts to an array, indents each line, then joins back)\n    // const indented = cleaned.split('\\n').map((line: string) => `${tab}${line}`).join('\\n');\n    return cleaned;\n};\nconst toAttributes = (object, keys = []) => {\n    const attributes = [];\n    Object.entries(object).forEach(([name, v]) => {\n        if (keys.length > 0 && !keys.includes(name))\n            return;\n        let value;\n        if (typeof v === 'undefined' || v === null || v === '' || v === false) {\n            return;\n        }\n        else if (typeof v === 'string') {\n            value = v;\n        }\n        else {\n            /* values can be null, undefined, string, or a expression, eg:\n             *\n             * ```\n             * <Image src=\"...\" border={false} size={width - 20} />\n             * ```\n             *\n             * Parsing the expression seems to only be done by the library\n             * `mdast-util-mdx-jsx`, and so the most straight forward way to parse\n             * the expression and get the appropriate AST is with our `mdast`\n             * function.\n             */\n            const proxy = lib_mdast(`{${v}}`);\n            const data = proxy.children[0].data;\n            value = {\n                type: 'mdxJsxAttributeValueExpression',\n                value: v.toString(),\n                data,\n            };\n        }\n        attributes.push({\n            type: 'mdxJsxAttribute',\n            name,\n            value,\n        });\n    });\n    return attributes;\n};\n/**\n * Checks if a named export exists in the MDX tree. Accepts either an mdast or\n * a hast tree.\n *\n * example:\n * ```\n * const mdx = `export const Foo = 'bar';`\n *\n * hasNamedExport(mdast(mdx), 'Foo') => true\n * ```\n *\n */\nconst hasNamedExport = (tree, name) => {\n    let hasExport = false;\n    // eslint-disable-next-line consistent-return\n    visit(tree, 'mdxjsEsm', node => {\n        if ('declaration' in node.data.estree.body[0] &&\n            node.data.estree.body[0].declaration.type === 'VariableDeclaration') {\n            const { declarations } = node.data.estree.body[0].declaration;\n            hasExport = !!declarations.find(declaration => 'name' in declaration.id && declaration.id.name === name);\n            return hasExport ? EXIT : CONTINUE;\n        }\n    });\n    return hasExport;\n};\n/* Example mdast structures to find first export name in a mdxjsEsm node:\nThere are three types of export declarations that we need to consider:\n1. VARIABLE DECLARATION\n      \"type\": \"mdxjsEsm\",\n      \"value\": \"export const Foo = () => <div>Hello world</div>\\nexport const Bar = () => <div>hello darkness my old friend</div>\",\n      \"data\": {\n        \"estree\": {\n          \"type\": \"Program\",\n          \"body\": [\n            {\n              \"type\": \"ExportNamedDeclaration\",\n              \"declaration\": {\n                \"type\": \"VariableDeclaration\",\n                \"declarations\": [\n                  {\n                    \"type\": \"VariableDeclarator\",\n                    \"id\": {\n                      \"type\": \"Identifier\",\n                      \"name\": \"Foo\" // --------> This is the export name\n                    },\n                    ...\n\n2/3. FUNCTION DECLARATION & CLASS DECLARATION\n      \"estree\": {\n          \"type\": \"Program\",\n          \"body\": [\n            {\n              \"type\": \"ExportNamedDeclaration\",\n              \"declaration\": {\n                \"type\": \"ClassDeclaration\" | \"FunctionDeclaration\",\n                \"id\": {\n                  \"type\": \"Identifier\",\n                  \"name\": \"Foo\" // --------> This is the export name\n                },\n*/\nconst getExports = (tree) => {\n    const set = new Set();\n    visit(tree, isMDXEsm, (node) => {\n        // Once inside an mdxjsEsm node, we need to check for one or more declared exports within data.estree.body\n        // This is because single newlines \\n are not considered as a new block, so there may be more than one export statement in a single mdxjsEsm node\n        const body = node.data?.estree.body;\n        if (!body)\n            return;\n        body.forEach(child => {\n            if (child.type === 'ExportNamedDeclaration') {\n                // There are three types of ExportNamedDeclaration that we need to consider: VariableDeclaration, FunctionDeclaration, ClassDeclaration\n                const declaration = child.declaration;\n                // FunctionDeclaration and ClassDeclaration have the same structure\n                if (declaration.type !== 'VariableDeclaration') {\n                    // Note: declaration.id.type is always 'Identifier' for FunctionDeclarations and ClassDeclarations\n                    set.add(declaration.id.name);\n                }\n                else {\n                    declaration.declarations.forEach(dec => {\n                        const id = dec.id;\n                        if (id.type === 'Identifier') {\n                            set.add(id.name);\n                        }\n                    });\n                }\n            }\n        });\n    });\n    return Array.from(set);\n};\n\n;// ./processor/transform/handle-missing-components.ts\n\n\n\n\nconst handleMissingComponents = ({ components, missingComponents }) => tree => {\n    const allComponents = new Set([\n        ...getExports(tree),\n        ...Object.keys(components_namespaceObject),\n        ...Object.keys(components),\n        ...Object.values(components).flatMap(doc => getExports(lib_mdast(doc))),\n        'Variable',\n        'TutorialTile',\n    ]);\n    visit(tree, isMDXElement, (node, index, parent) => {\n        if (allComponents.has(node.name) || node.name.match(/^[a-z]/))\n            return;\n        if (missingComponents === 'throw') {\n            throw new Error(`Expected component \\`${node.name}\\` to be defined: you likely forgot to import, pass, or provide it.`);\n        }\n        parent.children.splice(index, 1);\n    }, true);\n};\n/* harmony default export */ const handle_missing_components = (handleMissingComponents);\n\n;// ./processor/transform/images.ts\n\n\n\n\nconst isImage = (node) => node.type === 'image';\nconst imageTransformer = ({ isMdxish } = {}) => (tree) => {\n    visit(tree, 'paragraph', (node, i, parent) => {\n        // check if inline\n        if (parent.type !== 'root' || node.children?.length > 1)\n            return;\n        const child = node.children[0];\n        if (!isImage(child))\n            return;\n        const { alt, url, title } = child;\n        const attrs = {\n            alt,\n            title,\n            children: [],\n            src: url,\n            // If we are transforming for mdxish, we want to parse image magic blocks ourselves\n            // which may contain properties such as width, align, etc that affects the visual output\n            // so we need to pass all the original properties to the image node\n            ...(isMdxish ? child.data?.hProperties : {}),\n        };\n        const newNode = {\n            type: NodeTypes.imageBlock,\n            ...attrs,\n            /*\n             * @note: Using data.hName here means that we don't have to transform\n             * this to an MdxJsxFlowElement, and rehype will transform it correctly\n             */\n            data: {\n                hName: 'img',\n                hProperties: attrs,\n            },\n            position: node.position,\n        };\n        parent.children.splice(i, 1, newNode);\n    });\n    const isImageBlock = (node) => node.name === 'Image';\n    visit(tree, isImageBlock, (node) => {\n        const attrs = getAttrs(node);\n        if (attrs.caption) {\n            // @ts-expect-error - @todo: figure out how to coerce RootContent[] to\n            // the correct type\n            node.children = lib_mdast(attrs.caption).children;\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const transform_images = (imageTransformer);\n\n;// ./processor/transform/inject-components.ts\n\n\nconst inject = ({ components } = {}) => (node, index, parent) => {\n    if (!(node.name in components))\n        return;\n    const { children } = components[node.name];\n    parent.children.splice(index, children.length, ...children);\n};\nconst injectComponents = (opts) => () => tree => {\n    visit(tree, isMDXElement, inject(opts));\n    return tree;\n};\n/* harmony default export */ const inject_components = (injectComponents);\n\n;// ./processor/transform/mdx-to-hast.ts\n\n\n\nconst setData = (node, index, parent) => {\n    if (!node.name)\n        return;\n    if (!(node.name in components_namespaceObject))\n        return;\n    parent.children[index] = {\n        ...node,\n        data: {\n            hName: node.name,\n            hProperties: getAttrs(node),\n        },\n    };\n};\nconst mdxToHast = () => tree => {\n    visit(tree, isMDXElement, setData);\n    return tree;\n};\n/* harmony default export */ const mdx_to_hast = (mdxToHast);\n\n;// ./lib/mdast-util/legacy-variable/index.ts\n\nconst contextMap = new WeakMap();\nfunction findlegacyVariableToken() {\n    // tokenStack is micromark's current open token ancestry; find the nearest legacyVariable token.\n    const events = this.tokenStack;\n    for (let i = events.length - 1; i >= 0; i -= 1) {\n        const token = events[i][0];\n        if (token.type === 'legacyVariable')\n            return token;\n    }\n    return undefined;\n}\nfunction enterlegacyVariable(token) {\n    contextMap.set(token, { value: '' });\n}\nfunction exitlegacyVariableValue(token) {\n    const variableToken = findlegacyVariableToken.call(this);\n    if (!variableToken)\n        return;\n    const ctx = contextMap.get(variableToken);\n    // Build up the variable characters\n    if (ctx)\n        ctx.value += this.sliceSerialize(token);\n}\nfunction exitlegacyVariable(token) {\n    const ctx = contextMap.get(token);\n    const serialized = this.sliceSerialize(token);\n    const variableName = serialized.startsWith('<<') && serialized.endsWith('>>')\n        ? serialized.slice(2, -2)\n        : ctx?.value ?? '';\n    const nodePosition = {\n        start: {\n            offset: token.start.offset,\n            line: token.start.line,\n            column: token.start.column,\n        },\n        end: {\n            offset: token.end.offset,\n            line: token.end.line,\n            column: token.end.column,\n        },\n    };\n    if (variableName.startsWith('glossary:')) {\n        const term = variableName.slice('glossary:'.length).trim();\n        this.enter({\n            type: NodeTypes.glossary,\n            data: {\n                hName: 'Glossary',\n                hProperties: { term },\n            },\n            children: [{ type: 'text', value: term }],\n            position: nodePosition,\n        }, token);\n        this.exit(token);\n        contextMap.delete(token);\n        return;\n    }\n    this.enter({\n        type: NodeTypes.variable,\n        data: {\n            hName: 'Variable',\n            hProperties: { name: variableName.trim(), isLegacy: true },\n        },\n        value: `<<${variableName}>>`,\n    }, token);\n    this.exit(token);\n    contextMap.delete(token);\n}\nfunction legacyVariableFromMarkdown() {\n    return {\n        enter: {\n            legacyVariable: enterlegacyVariable,\n        },\n        exit: {\n            legacyVariableValue: exitlegacyVariableValue,\n            legacyVariable: exitlegacyVariable,\n        },\n    };\n}\n\n;// ./node_modules/micromark-util-symbol/lib/codes.js\n/**\n * Character codes.\n *\n * This module is compiled away!\n *\n * micromark works based on character codes.\n * This module contains constants for the ASCII block and the replacement\n * character.\n * A couple of them are handled in a special way, such as the line endings\n * (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal\n * tab) and its expansion based on what column it’s at (virtual space),\n * and the end-of-file (eof) character.\n * As values are preprocessed before handling them, the actual characters LF,\n * CR, HT, and NUL (which is present as the replacement character), are\n * guaranteed to not exist.\n *\n * Unicode basic latin block.\n */\nconst codes = /** @type {const} */ ({\n  carriageReturn: -5,\n  lineFeed: -4,\n  carriageReturnLineFeed: -3,\n  horizontalTab: -2,\n  virtualSpace: -1,\n  eof: null,\n  nul: 0,\n  soh: 1,\n  stx: 2,\n  etx: 3,\n  eot: 4,\n  enq: 5,\n  ack: 6,\n  bel: 7,\n  bs: 8,\n  ht: 9, // `\\t`\n  lf: 10, // `\\n`\n  vt: 11, // `\\v`\n  ff: 12, // `\\f`\n  cr: 13, // `\\r`\n  so: 14,\n  si: 15,\n  dle: 16,\n  dc1: 17,\n  dc2: 18,\n  dc3: 19,\n  dc4: 20,\n  nak: 21,\n  syn: 22,\n  etb: 23,\n  can: 24,\n  em: 25,\n  sub: 26,\n  esc: 27,\n  fs: 28,\n  gs: 29,\n  rs: 30,\n  us: 31,\n  space: 32,\n  exclamationMark: 33, // `!`\n  quotationMark: 34, // `\"`\n  numberSign: 35, // `#`\n  dollarSign: 36, // `$`\n  percentSign: 37, // `%`\n  ampersand: 38, // `&`\n  apostrophe: 39, // `'`\n  leftParenthesis: 40, // `(`\n  rightParenthesis: 41, // `)`\n  asterisk: 42, // `*`\n  plusSign: 43, // `+`\n  comma: 44, // `,`\n  dash: 45, // `-`\n  dot: 46, // `.`\n  slash: 47, // `/`\n  digit0: 48, // `0`\n  digit1: 49, // `1`\n  digit2: 50, // `2`\n  digit3: 51, // `3`\n  digit4: 52, // `4`\n  digit5: 53, // `5`\n  digit6: 54, // `6`\n  digit7: 55, // `7`\n  digit8: 56, // `8`\n  digit9: 57, // `9`\n  colon: 58, // `:`\n  semicolon: 59, // `;`\n  lessThan: 60, // `<`\n  equalsTo: 61, // `=`\n  greaterThan: 62, // `>`\n  questionMark: 63, // `?`\n  atSign: 64, // `@`\n  uppercaseA: 65, // `A`\n  uppercaseB: 66, // `B`\n  uppercaseC: 67, // `C`\n  uppercaseD: 68, // `D`\n  uppercaseE: 69, // `E`\n  uppercaseF: 70, // `F`\n  uppercaseG: 71, // `G`\n  uppercaseH: 72, // `H`\n  uppercaseI: 73, // `I`\n  uppercaseJ: 74, // `J`\n  uppercaseK: 75, // `K`\n  uppercaseL: 76, // `L`\n  uppercaseM: 77, // `M`\n  uppercaseN: 78, // `N`\n  uppercaseO: 79, // `O`\n  uppercaseP: 80, // `P`\n  uppercaseQ: 81, // `Q`\n  uppercaseR: 82, // `R`\n  uppercaseS: 83, // `S`\n  uppercaseT: 84, // `T`\n  uppercaseU: 85, // `U`\n  uppercaseV: 86, // `V`\n  uppercaseW: 87, // `W`\n  uppercaseX: 88, // `X`\n  uppercaseY: 89, // `Y`\n  uppercaseZ: 90, // `Z`\n  leftSquareBracket: 91, // `[`\n  backslash: 92, // `\\`\n  rightSquareBracket: 93, // `]`\n  caret: 94, // `^`\n  underscore: 95, // `_`\n  graveAccent: 96, // `` ` ``\n  lowercaseA: 97, // `a`\n  lowercaseB: 98, // `b`\n  lowercaseC: 99, // `c`\n  lowercaseD: 100, // `d`\n  lowercaseE: 101, // `e`\n  lowercaseF: 102, // `f`\n  lowercaseG: 103, // `g`\n  lowercaseH: 104, // `h`\n  lowercaseI: 105, // `i`\n  lowercaseJ: 106, // `j`\n  lowercaseK: 107, // `k`\n  lowercaseL: 108, // `l`\n  lowercaseM: 109, // `m`\n  lowercaseN: 110, // `n`\n  lowercaseO: 111, // `o`\n  lowercaseP: 112, // `p`\n  lowercaseQ: 113, // `q`\n  lowercaseR: 114, // `r`\n  lowercaseS: 115, // `s`\n  lowercaseT: 116, // `t`\n  lowercaseU: 117, // `u`\n  lowercaseV: 118, // `v`\n  lowercaseW: 119, // `w`\n  lowercaseX: 120, // `x`\n  lowercaseY: 121, // `y`\n  lowercaseZ: 122, // `z`\n  leftCurlyBrace: 123, // `{`\n  verticalBar: 124, // `|`\n  rightCurlyBrace: 125, // `}`\n  tilde: 126, // `~`\n  del: 127,\n  // Unicode Specials block.\n  byteOrderMarker: 65_279,\n  // Unicode Specials block.\n  replacementCharacter: 65_533 // `�`\n})\n\n;// ./lib/micromark/legacy-variable/syntax.ts\n\n\nfunction isAllowedValueChar(code) {\n    return (code !== null &&\n        code !== codes.lessThan &&\n        code !== codes.greaterThan &&\n        !markdownLineEnding(code));\n}\nconst legacyVariableConstruct = {\n    name: 'legacyVariable',\n    tokenize,\n};\nfunction tokenize(effects, ok, nok) {\n    let hasValue = false;\n    const start = (code) => {\n        if (code !== codes.lessThan)\n            return nok(code);\n        effects.enter('legacyVariable');\n        effects.enter('legacyVariableMarkerStart');\n        effects.consume(code); // <\n        return open2;\n    };\n    const open2 = (code) => {\n        if (code !== codes.lessThan)\n            return nok(code);\n        effects.consume(code); // <<\n        effects.exit('legacyVariableMarkerStart');\n        effects.enter('legacyVariableValue');\n        return value;\n    };\n    const value = (code) => {\n        if (code === codes.greaterThan) {\n            if (!hasValue)\n                return nok(code);\n            effects.exit('legacyVariableValue');\n            effects.enter('legacyVariableMarkerEnd');\n            effects.consume(code); // >\n            return close2;\n        }\n        if (!isAllowedValueChar(code))\n            return nok(code);\n        hasValue = true;\n        effects.consume(code);\n        return value;\n    };\n    const close2 = (code) => {\n        if (code !== codes.greaterThan)\n            return nok(code);\n        effects.consume(code); // >>\n        effects.exit('legacyVariableMarkerEnd');\n        effects.exit('legacyVariable');\n        return ok;\n    };\n    return start;\n}\nfunction legacyVariable() {\n    return {\n        text: { [codes.lessThan]: legacyVariableConstruct },\n    };\n}\n\n;// ./lib/micromark/legacy-variable/index.ts\n/**\n * Micromark extension for <<variable>> / <<glossary:term>> inline syntax.\n */\n\n\n;// ./processor/transform/mdxish/mdxish-component-blocks.ts\n\n\n\n\nconst pascalCaseTagPattern = /^<([A-Z][A-Za-z0-9_]*)([^>]*?)(\\/?)>([\\s\\S]*)?$/;\nconst tagAttributePattern = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^\\s\"'>]+))?/g;\n/**\n * Maximum number of siblings to scan forward when looking for a closing tag\n * to avoid scanning too far and degrading performance\n */\nconst MAX_LOOKAHEAD = 30;\n/**\n * Tags that have dedicated transformers and should NOT be handled by this plugin.\n * These components either have special parsing requirements that the generic component\n * block transformer cannot handle correctly, or are inline components that we don't\n * want to convert to mdxJsxFlowElement which is a block level element.\n *\n * Glossary and Anchor are inline components.\n */\nconst EXCLUDED_TAGS = new Set(['HTMLBlock', 'Table', 'Glossary', 'Anchor']);\nconst inlineMdProcessor = unified()\n    .data('micromarkExtensions', [legacyVariable()])\n    .data('fromMarkdownExtensions', [legacyVariableFromMarkdown()])\n    .use(remarkParse);\nconst isClosingTag = (value, tag) => value.trim() === `</${tag}>`;\n/**\n * Parse markdown content into mdast children nodes.\n */\nconst parseMdChildren = (value) => {\n    const parsed = inlineMdProcessor.parse(value);\n    return parsed.children || [];\n};\n/**\n * Convert raw attribute string into mdxJsxAttribute entries.\n * Handles both key-value attributes (theme=\"info\") and boolean attributes (empty).\n */\nconst parseAttributes = (raw) => {\n    const attributes = [];\n    const attrString = raw.trim();\n    if (!attrString)\n        return attributes;\n    tagAttributePattern.lastIndex = 0;\n    let match = tagAttributePattern.exec(attrString);\n    while (match !== null) {\n        const [, attrName, attrValue] = match;\n        const value = attrValue ? attrValue.replace(/^['\"]|['\"]$/g, '') : null;\n        attributes.push({ type: 'mdxJsxAttribute', name: attrName, value });\n        match = tagAttributePattern.exec(attrString);\n    }\n    return attributes;\n};\n/**\n * Parse an HTML tag string into structured data.\n */\nconst parseTag = (value) => {\n    const match = value.match(pascalCaseTagPattern);\n    if (!match)\n        return null;\n    const [, tag, attrString = '', selfClosing = '', contentAfterTag = ''] = match;\n    return {\n        tag,\n        attributes: parseAttributes(attrString),\n        selfClosing: !!selfClosing,\n        contentAfterTag,\n    };\n};\n/**\n * Parse substring content of a node and update the parent's children to include the new nodes.\n */\nconst parseSibling = (stack, parent, index, sibling) => {\n    const siblingNodes = parseMdChildren(sibling);\n    // The new sibling nodes might contain new components to be processed\n    if (siblingNodes.length > 0) {\n        parent.children.splice(index + 1, 0, ...siblingNodes);\n        stack.push(parent);\n    }\n};\n/**\n * Create an MdxJsxFlowElement node from component data.\n */\nconst createComponentNode = ({ tag, attributes, children, startPosition, endPosition }) => ({\n    type: 'mdxJsxFlowElement',\n    name: tag,\n    attributes,\n    children,\n    position: {\n        start: startPosition?.start,\n        end: endPosition?.end ?? startPosition?.end,\n    },\n});\n/**\n * Remove a closing tag from a paragraph's children and return the updated paragraph.\n */\nconst stripClosingTagFromParagraph = (node, tag) => {\n    if (!Array.isArray(node.children))\n        return { paragraph: node, found: false };\n    const children = [...node.children];\n    const closingIndex = children.findIndex(child => child.type === 'html' && isClosingTag(child.value || '', tag));\n    if (closingIndex === -1)\n        return { paragraph: node, found: false };\n    children.splice(closingIndex, 1);\n    return { paragraph: { ...node, children }, found: true };\n};\n/**\n * Scan forward through siblings to find a closing tag.\n * Handles:\n * - Exact match HTML siblings (e.g., `</Tag>`)\n * - HTML siblings with embedded closing tag (e.g., `...\\n</Tag>`)\n * - Paragraph siblings containing the closing tag as a child\n *\n * Returns null if not found within MAX_LOOKAHEAD siblings\n */\nconst scanForClosingTag = (parent, startIndex, tag) => {\n    const closingTagStr = `</${tag}>`;\n    const maxIndex = Math.min(startIndex + MAX_LOOKAHEAD, parent.children.length);\n    let i = startIndex + 1;\n    for (; i < maxIndex; i += 1) {\n        const sibling = parent.children[i];\n        // Check HTML siblings\n        if (sibling.type === 'html') {\n            const siblingValue = sibling.value || '';\n            // Exact match (standalone closing tag)\n            if (isClosingTag(siblingValue, tag)) {\n                return { closingIndex: i, extraClosingChildren: [] };\n            }\n            // Embedded closing tag (closing tag within HTML block content)\n            if (siblingValue.includes(closingTagStr)) {\n                const closeTagPos = siblingValue.indexOf(closingTagStr);\n                const contentBeforeClose = siblingValue.substring(0, closeTagPos).trim();\n                const contentAfterClose = siblingValue.substring(closeTagPos + closingTagStr.length).trim();\n                const extraChildren = contentBeforeClose\n                    ? parseMdChildren(contentBeforeClose)\n                    : [];\n                return { closingIndex: i, extraClosingChildren: extraChildren, contentAfterClose: contentAfterClose || undefined };\n            }\n        }\n        // Check paragraph siblings\n        if (sibling.type === 'paragraph') {\n            const { paragraph, found } = stripClosingTagFromParagraph(sibling, tag);\n            if (found) {\n                return { closingIndex: i, extraClosingChildren: [], strippedParagraph: paragraph };\n            }\n        }\n    }\n    if (i < parent.children.length) {\n        // eslint-disable-next-line no-console\n        console.warn(`Closing tag </${tag}> not found within ${MAX_LOOKAHEAD} siblings, stopping scan`);\n    }\n    return null;\n};\nconst substituteNodeWithMdxNode = (parent, index, mdxNode) => {\n    parent.children.splice(index, 1, mdxNode);\n};\n/**\n * Transform PascalCase HTML nodes into mdxJsxFlowElement nodes.\n *\n * Remark parses unknown/custom component tags as raw HTML nodes.\n * These are the custom readme MDX syntax for components.\n * This transformer identifies these patterns and converts them to proper MDX JSX elements so they\n * can be accurately recognized and rendered later with their component definition code.\n * Though for some tags, we need to handle them specially\n *\n * ## Supported HTML Structures\n *\n * ### 1. Self-closing tags\n * ```\n * <Component />\n * ```\n * Parsed as: `html: \"<Component />\"`\n *\n * ### 2. Self-contained blocks (entire component in single HTML node)\n * ```\n * <Button>Click me</Button>\n * ```\n * ```\n * <Component>\n *   <h2>Title</h2>\n *   <p>Content</p>\n * </Component>\n * ```\n * Parsed as: `html: \"<Component>\\n  <h2>Title</h2>\\n  <p>Content</p>\\n</Component>\"`\n * The opening tag, content, and closing tag are all captured in one HTML node.\n *\n * ### 3. Multi-sibling components (closing tag in a following sibling)\n * Handles various structures where the closing tag is in a later sibling, such as:\n *\n * #### 3a. Block components (closing tag in sibling paragraph)\n * ```\n * <Callout>\n * Some **markdown** content\n * </Callout>\n * ```\n *\n * #### 3b. Multi-paragraph components (closing tag several siblings away)\n * ```\n * <Callout>\n *\n * First paragraph\n *\n * Second paragraph\n * </Callout>\n * ```\n *\n * #### 3c. Nested components split by blank lines (closing tag embedded in HTML sibling)\n * ```\n * <Outer>\n *   <Inner>content</Inner>\n *\n *   <Inner>content</Inner>\n * </Outer>\n * ```\n */\nconst mdxishComponentBlocks = () => tree => {\n    const stack = [tree];\n    const processChildNode = (parent, index) => {\n        const node = parent.children[index];\n        if (!node)\n            return;\n        if ('children' in node && Array.isArray(node.children)) {\n            stack.push(node);\n        }\n        // Only visit HTML nodes with an actual html tag,\n        // which means a potential unparsed MDX component\n        const value = node.value;\n        if (node.type !== 'html' || typeof value !== 'string')\n            return;\n        const parsed = parseTag(value.trim());\n        if (!parsed)\n            return;\n        const { tag, attributes, selfClosing, contentAfterTag = '' } = parsed;\n        // Skip tags that have dedicated transformers\n        if (EXCLUDED_TAGS.has(tag))\n            return;\n        const closingTagStr = `</${tag}>`;\n        // Case 1: Self-closing tag\n        if (selfClosing) {\n            const componentNode = createComponentNode({\n                tag,\n                attributes,\n                children: [],\n                startPosition: node.position,\n            });\n            substituteNodeWithMdxNode(parent, index, componentNode);\n            // Check and parse if there's relevant content after the current closing tag\n            const remainingContent = contentAfterTag.trim();\n            if (remainingContent) {\n                parseSibling(stack, parent, index, remainingContent);\n            }\n            return;\n        }\n        // Case 2: Self-contained block (closing tag in content)\n        if (contentAfterTag.includes(closingTagStr)) {\n            // Find the first closing tag\n            const closingTagIndex = contentAfterTag.indexOf(closingTagStr);\n            const componentInnerContent = contentAfterTag.substring(0, closingTagIndex).trim();\n            const contentAfterClose = contentAfterTag.substring(closingTagIndex + closingTagStr.length).trim();\n            const componentNode = createComponentNode({\n                tag,\n                attributes,\n                children: componentInnerContent ? parseMdChildren(componentInnerContent) : [],\n                startPosition: node.position,\n            });\n            substituteNodeWithMdxNode(parent, index, componentNode);\n            // After the closing tag, there might be more content to be processed\n            if (contentAfterClose) {\n                parseSibling(stack, parent, index, contentAfterClose);\n            }\n            else if (componentNode.children.length > 0) {\n                // The content inside the component block might contain new components to be processed\n                stack.push(componentNode);\n            }\n            return;\n        }\n        // Case 3: Multi-sibling component (closing tag in a following sibling)\n        // Scans forward through siblings to find closing tag in HTML or paragraph nodes\n        const scanResult = scanForClosingTag(parent, index, tag);\n        if (!scanResult)\n            return;\n        const { closingIndex, extraClosingChildren, strippedParagraph, contentAfterClose: remainingAfterClose } = scanResult;\n        const extraChildren = contentAfterTag ? parseMdChildren(contentAfterTag.trimStart()) : [];\n        // Collect all intermediate siblings between opening tag and closing tag\n        const intermediateChildren = parent.children.slice(index + 1, closingIndex);\n        // For paragraph siblings, include the paragraph's children (with closing tag stripped)\n        // For HTML siblings, include any content parsed from before the closing tag\n        const closingChildren = strippedParagraph\n            ? strippedParagraph.children\n            : extraClosingChildren;\n        const componentNode = createComponentNode({\n            tag,\n            attributes,\n            children: [...extraChildren, ...intermediateChildren, ...closingChildren],\n            startPosition: node.position,\n            endPosition: parent.children[closingIndex]?.position,\n        });\n        // Remove all nodes from opening tag to closing tag (inclusive) and replace with component node\n        parent.children.splice(index, closingIndex - index + 1, componentNode);\n        // Since we might be merging sibling nodes together and combining content,\n        // there might be new components to process\n        if (componentNode.children.length > 0) {\n            stack.push(componentNode);\n        }\n        // If the closing tag sibling had content after it (e.g., another component opening tag),\n        // re-insert it as a sibling so it can be processed in subsequent iterations\n        if (remainingAfterClose) {\n            parseSibling(stack, parent, index, remainingAfterClose);\n        }\n    };\n    // Process the nodes with the components depth-first to maintain the correct order of the nodes\n    while (stack.length) {\n        const parent = stack.pop();\n        if (parent?.children) {\n            parent.children.forEach((_child, index) => {\n                processChildNode(parent, index);\n            });\n        }\n    }\n    return tree;\n};\n/* harmony default export */ const mdxish_component_blocks = (mdxishComponentBlocks);\n\n;// ./processor/transform/mdxish/mdxish-tables.ts\n\n\n\n\n\n\n\n\nconst isTableCell = (node) => isMDXElement(node) && ['th', 'td'].includes(node.name);\nconst tableTypes = {\n    tr: 'tableRow',\n    th: 'tableCell',\n    td: 'tableCell',\n};\nconst mdCellProcessor = unified().use(remarkParse).use(remarkGfm);\nconst tableNodeProcessor = unified().use(remarkParse).use(remarkMdx).use(mdxish_component_blocks);\n/**\n * Check if children are only text nodes that might contain markdown\n */\nconst isTextOnly = (children) => {\n    return children.every(child => {\n        if (child && typeof child === 'object' && 'type' in child) {\n            if (child.type === 'text')\n                return true;\n            if (child.type === 'mdxJsxTextElement' && 'children' in child && Array.isArray(child.children)) {\n                return child.children.every((c) => c && typeof c === 'object' && 'type' in c && c.type === 'text');\n            }\n        }\n        return false;\n    });\n};\n/**\n * Convenience wrapper that extracts text content from an array of children nodes.\n */\nconst extractTextFromChildren = (children) => {\n    return children\n        .map(child => {\n        if (child && typeof child === 'object' && 'type' in child) {\n            return extractText(child);\n        }\n        return '';\n    })\n        .join('');\n};\n/**\n * Parse markdown text into MDAST nodes\n */\nconst parseMarkdown = (text) => {\n    const tree = mdCellProcessor.runSync(mdCellProcessor.parse(text));\n    return (tree.children || []);\n};\n/**\n * Process a Table node (either MDX JSX element or parsed from HTML) and convert to markdown table\n */\nconst processTableNode = (node, index, parent) => {\n    if (node.name !== 'Table')\n        return;\n    const { position } = node;\n    const { align: alignAttr } = getAttrs(node);\n    const align = Array.isArray(alignAttr) ? alignAttr : null;\n    const children = [];\n    // Process rows from thead and tbody\n    // The structure is: Table -> thead/tbody -> tr -> td/th\n    const processRow = (row) => {\n        const rowChildren = [];\n        visit(row, isTableCell, ({ name, children: cellChildren, position: cellPosition }) => {\n            let parsedChildren = cellChildren;\n            // If cell contains only text nodes, try to re-parse as markdown\n            if (isTextOnly(cellChildren)) {\n                const textContent = extractTextFromChildren(cellChildren);\n                if (textContent.trim()) {\n                    try {\n                        const parsed = parseMarkdown(textContent);\n                        // If parsing produced nodes, use them; otherwise keep original\n                        if (parsed.length > 0) {\n                            // Flatten paragraphs if they contain only phrasing content\n                            parsedChildren = parsed.flatMap(parsedNode => {\n                                if (parsedNode.type === 'paragraph' && 'children' in parsedNode && parsedNode.children) {\n                                    return parsedNode.children;\n                                }\n                                return [parsedNode];\n                            });\n                        }\n                    }\n                    catch {\n                        // If parsing fails, keep original children\n                    }\n                }\n            }\n            rowChildren.push({\n                type: tableTypes[name],\n                children: parsedChildren,\n                position: cellPosition,\n            });\n        });\n        children.push({\n            type: tableTypes[row.name],\n            children: rowChildren,\n            position: row.position,\n        });\n    };\n    // Visit thead and tbody, then find tr elements within them\n    visit(node, isMDXElement, (child) => {\n        if (child.name === 'thead' || child.name === 'tbody') {\n            visit(child, isMDXElement, (row) => {\n                if (row.name === 'tr' && row.type === 'mdxJsxFlowElement') {\n                    processRow(row);\n                }\n            });\n        }\n    });\n    const firstRow = children[0];\n    const columnCount = firstRow?.children?.length || 0;\n    const alignArray = align && columnCount > 0\n        ? align.slice(0, columnCount).concat(new Array(Math.max(0, columnCount - align.length)).fill(null))\n        : new Array(columnCount).fill(null);\n    const mdNode = {\n        align: alignArray,\n        type: 'table',\n        position,\n        children,\n    };\n    parent.children[index] = mdNode;\n};\n/**\n * Converts JSX Table elements to markdown table nodes and re-parses markdown in cells.\n *\n * Since mdxish doesn't use remarkMdx, we manually parse cell contents through\n * remarkParse and remarkGfm to convert markdown to MDAST nodes.\n */\nconst mdxishTables = () => tree => {\n    // First, handle MDX JSX elements (already converted by mdxishComponentBlocks)\n    visit(tree, isMDXElement, (node, index, parent) => {\n        if (node.name === 'Table') {\n            processTableNode(node, index, parent);\n            return SKIP;\n        }\n    });\n    // Also handle HTML and raw nodes that contain Table tags (in case mdxishComponentBlocks didn't convert them)\n    // This happens when the entire <Table>...</Table> block is in a single HTML node, which mdxishComponentBlocks\n    // doesn't handle (it only handles split nodes: opening tag, content paragraph, closing tag)\n    const handleTableInNode = (node, index, parent) => {\n        if (typeof index !== 'number' || !parent || !('children' in parent))\n            return;\n        if (typeof node.value !== 'string')\n            return;\n        if (!node.value.includes('<Table') || !node.value.includes('</Table>'))\n            return;\n        try {\n            // Parse the HTML content with remarkMdx and mdxishComponentBlocks to convert it to MDX JSX elements\n            // This creates a proper AST that we can then process\n            const parsed = tableNodeProcessor.runSync(tableNodeProcessor.parse(node.value));\n            // Find the Table element in the parsed result and process it\n            visit(parsed, isMDXElement, (tableNode) => {\n                if (tableNode.name === 'Table') {\n                    // Process the table and replace the HTML node with a markdown table node\n                    processTableNode(tableNode, index, parent);\n                }\n            });\n        }\n        catch {\n            // If parsing fails, leave the node as-is\n        }\n    };\n    // Handle HTML nodes (created by remark-parse for HTML blocks)\n    visit(tree, 'html', (node, index, parent) => {\n        if (typeof index === 'number' && parent && 'children' in parent) {\n            handleTableInNode(node, index, parent);\n        }\n    });\n    // Handle raw nodes (created by remark-parse for certain HTML structures)\n    visit(tree, 'raw', (node, index, parent) => {\n        if (typeof index === 'number' && parent && 'children' in parent) {\n            handleTableInNode(node, index, parent);\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const mdxish_tables = (mdxishTables);\n\n;// ./processor/transform/mermaid.ts\n\nconst mermaidTransformer = () => (tree) => {\n    visit(tree, 'element', (node) => {\n        if (node.tagName !== 'pre' || node.children.length !== 1)\n            return;\n        const [child] = node.children;\n        if (child.type === 'element' && child.tagName === 'code' && child.properties.lang === 'mermaid') {\n            node.properties = {\n                ...node.properties,\n                className: ['mermaid-render', ...(node.properties.className || [])],\n            };\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const transform_mermaid = (mermaidTransformer);\n\n;// ./processor/transform/readme-components.ts\n\n\n\n\n\nconst types = {\n    Anchor: 'link',\n    Callout: NodeTypes.callout,\n    Code: 'code',\n    CodeTabs: NodeTypes.codeTabs,\n    EmbedBlock: NodeTypes['embed-block'],\n    ImageBlock: NodeTypes.imageBlock,\n    HTMLBlock: NodeTypes.htmlBlock,\n    Table: 'table',\n    Variable: NodeTypes.variable,\n    Recipe: NodeTypes.recipe,\n    TutorialTile: NodeTypes.recipe, // coerce to recipe for backwards compatibility\n};\n// Node types that are phrasing (inline) content per the mdast spec. Phrasing\n// content at the document root violates the spec and causes mdx() to collapse\n// blank lines, so these must be wrapped in a paragraph when at root level.\nconst phrasingTypes = new Set([NodeTypes.variable]);\nvar TableNames;\n(function (TableNames) {\n    TableNames[\"td\"] = \"td\";\n    TableNames[\"th\"] = \"th\";\n    TableNames[\"tr\"] = \"tr\";\n})(TableNames || (TableNames = {}));\nconst readme_components_tableTypes = {\n    [TableNames.tr]: 'tableRow',\n    [TableNames.th]: 'tableCell',\n    [TableNames.td]: 'tableCell',\n};\nconst readme_components_isTableCell = (node) => isMDXElement(node) && ['th', 'td'].includes(node.name);\nconst coerceJsxToMd = ({ components = {}, html = false } = {}) => (node, index, parent) => {\n    if (node.name in components)\n        return;\n    if (node.name === 'Code') {\n        const { position } = node;\n        const { value, lang = null, meta = null } = getAttrs(node);\n        const mdNode = {\n            lang,\n            meta,\n            position,\n            type: 'code',\n            value,\n            data: {\n                hProperties: { value, lang, meta },\n            },\n        };\n        parent.children[index] = mdNode;\n    }\n    else if (node.name === 'Image') {\n        const { position } = node;\n        const { alt = '', align, border, caption, height, title = null, width, src, } = getAttrs(node);\n        const attrs = {\n            ...(align && { align }),\n            ...(border && { border }),\n            ...(src && { src }),\n            ...(width && { width }),\n            ...(height && { height }),\n            alt,\n            children: caption ? lib_mdast(caption).children : node.children,\n            title,\n        };\n        const mdNode = {\n            ...attrs,\n            position,\n            type: NodeTypes.imageBlock,\n            data: {\n                hName: 'img',\n                // @ts-expect-error - @todo: figure out how to coerce RootContent[]\n                hProperties: attrs,\n            },\n        };\n        parent.children[index] = mdNode;\n    }\n    else if (node.name === 'HTMLBlock') {\n        const { position } = node;\n        const children = getChildren(node);\n        const { runScripts } = getAttrs(node);\n        const htmlString = formatHTML(children.map(({ value }) => value).join(''));\n        const mdNode = {\n            position,\n            children: [{ type: 'text', value: htmlString }],\n            type: NodeTypes.htmlBlock,\n            data: {\n                hName: 'html-block',\n                hProperties: {\n                    ...(runScripts && { runScripts }),\n                    html: htmlString,\n                },\n            },\n        };\n        parent.children[index] = mdNode;\n    }\n    else if (node.name === 'Table') {\n        const { position } = node;\n        const { align = [...new Array(node.children.length)].map(() => null) } = getAttrs(node);\n        const children = [];\n        visit(node, { name: 'tr' }, row => {\n            const rowChildren = [];\n            visit(row, readme_components_isTableCell, ({ name, children: cellChildren, position: cellPosition }) => {\n                rowChildren.push({\n                    type: readme_components_tableTypes[name],\n                    children: cellChildren,\n                    position: cellPosition,\n                });\n            });\n            children.push({\n                type: readme_components_tableTypes[row.name],\n                children: rowChildren,\n                position: row.position,\n            });\n        });\n        const mdNode = {\n            align,\n            type: NodeTypes.tableau,\n            position,\n            children,\n        };\n        visit(mdNode, isMDXElement, coerceJsxToMd({ components, html }));\n        parent.children[index] = mdNode;\n        return SKIP;\n    }\n    else if (node.name === 'Callout') {\n        const attrs = getAttrs(node);\n        const { empty } = attrs;\n        const icon = attrs.icon;\n        const theme = attrs.theme || themes[icon] || 'default';\n        const mdNode = {\n            children: node.children,\n            type: NodeTypes.callout,\n            data: {\n                hName: node.name,\n                hProperties: { icon, ...(empty && { empty }), theme },\n            },\n            position: node.position,\n        };\n        parent.children[index] = mdNode;\n    }\n    else if (node.name === 'Embed') {\n        const hProperties = getAttrs(node);\n        const mdNode = {\n            type: NodeTypes.embedBlock,\n            title: hProperties.title,\n            data: {\n                hName: 'embed',\n                hProperties,\n            },\n            position: node.position,\n        };\n        parent.children[index] = mdNode;\n    }\n    else if (node.name === 'Anchor') {\n        const hProperties = getAttrs(node);\n        if (hProperties.href) {\n            hProperties.url = hProperties.href;\n            delete hProperties.href;\n        }\n        // Unwrap any autolinked children to prevent nested links.\n        // GFM's autolink feature can convert URL-like text inside Anchor children\n        // into link nodes, which would create invalid nested links when Anchor\n        // is converted back to a link node.\n        const children = node.children.flatMap(child => {\n            if (child.type === 'link') {\n                return child.children;\n            }\n            return child;\n        });\n        // @ts-expect-error we don't have a mechanism to enforce the URL attribute type right now\n        const mdNode = {\n            ...hProperties,\n            children,\n            type: types[node.name],\n            position: node.position,\n        };\n        // Wrap in a paragraph if at root level. Links are phrasing content and\n        // root children must all be the same category (per mdast spec). Mixing\n        // phrasing with flow content (headings, paragraphs, etc.) causes mdx()\n        // to collapse blank lines in the document.\n        if (parent.type === 'root') {\n            parent.children[index] = { type: 'paragraph', children: [mdNode], position: node.position };\n        }\n        else {\n            parent.children[index] = mdNode;\n        }\n    }\n    else if (node.name === 'Recipe' || node.name === 'TutorialTile') {\n        const hProperties = getAttrs(node);\n        const mdNode = {\n            ...hProperties,\n            type: types[node.name],\n            data: {\n                hName: node.name,\n                ...(Object.keys(hProperties).length && { hProperties }),\n            },\n            position: node.position,\n        };\n        parent.children[index] = mdNode;\n    }\n    else if (node.name in types) {\n        const hProperties = getAttrs(node);\n        const mdNode = {\n            children: node.children,\n            type: types[node.name],\n            data: {\n                hName: node.name,\n                ...(Object.keys(hProperties).length && { hProperties }),\n            },\n            position: node.position,\n        };\n        if (parent.type === 'root' && phrasingTypes.has(types[node.name])) {\n            // @ts-expect-error mdNode is typed as BlockContent but is actually phrasing content\n            parent.children[index] = { type: 'paragraph', children: [mdNode], position: node.position };\n        }\n        else {\n            parent.children[index] = mdNode;\n        }\n    }\n};\nconst readmeComponents = (opts) => () => tree => {\n    visit(tree, isMDXElement, coerceJsxToMd(opts));\n    visit(tree, 'paragraph', (node, index, parent) => {\n        // @ts-expect-error - the editor can create non-compliant tables!\n        if (parent.type !== 'tableRow')\n            return;\n        // @ts-expect-error - the editor can create non-compliant tables!\n        parent.children.splice(index, 1, ...node.children);\n    });\n    return tree;\n};\n/* harmony default export */ const readme_components = (readmeComponents);\n\n;// ./processor/transform/readme-to-mdx.ts\n\n\n\n\n\nconst imageAttrs = ['align', 'alt', 'caption', 'border', 'height', 'src', 'title', 'width', 'lazy', 'className'];\nconst readmeToMdx = () => tree => {\n    // Unwrap pinned nodes, replace rdme-pin with its child node\n    visit(tree, 'rdme-pin', (node, i, parent) => {\n        const newNode = node.children[0];\n        parent.children.splice(i, 1, newNode);\n    });\n    visit(tree, 'rdme-callout', (node, index, parent) => {\n        const isEmpty = node.data.hProperties?.empty;\n        const isH3 = node.children?.[0] && 'type' in node.children[0] && node.children[0].type === 'heading' && node.children[0].depth === 3;\n        let { icon, theme } = node.data.hProperties;\n        if (!icon)\n            icon = defaultIcons[theme];\n        if (!theme)\n            theme = themes[icon] || 'default';\n        const isEmoji = emoji_regex().test(icon);\n        // return the usual markdown if there is an emoji and the icon theme matches our default theme\n        if ((isEmpty || isH3) && isEmoji && themes[icon] === theme) {\n            if (isH3) {\n                node.children[0] = {\n                    type: 'paragraph',\n                    children: 'children' in node.children[0] ? node.children[0].children : [],\n                };\n            }\n            node.data.hProperties.icon = icon;\n            node.data.hProperties.theme = theme;\n            return;\n        }\n        parent.children.splice(index, 1, {\n            type: 'mdxJsxFlowElement',\n            name: 'Callout',\n            attributes: toAttributes(node.data.hProperties, ['icon', isEmpty && 'empty', 'theme'].filter(Boolean)),\n            children: node.children,\n        });\n    });\n    // Converts tutorial tiles to Recipe components in the migration process\n    // Retaining this for backwards compatibility\n    visit(tree, NodeTypes.tutorialTile, (tile, index, parent) => {\n        const { ...attrs } = tile;\n        parent.children.splice(index, 1, {\n            type: 'mdxJsxFlowElement',\n            name: 'Recipe',\n            attributes: toAttributes(attrs, ['slug', 'title']),\n            children: [],\n        });\n    });\n    visit(tree, NodeTypes.recipe, (tile, index, parent) => {\n        const { ...attrs } = tile;\n        parent.children.splice(index, 1, {\n            type: 'mdxJsxFlowElement',\n            name: 'Recipe',\n            attributes: toAttributes(attrs, ['slug', 'title']),\n            children: [],\n        });\n    });\n    visit(tree, 'figure', (figure, index, parent) => {\n        const [image, caption] = figure.children;\n        const { align, width } = image.data.hProperties;\n        const border = image.data.hProperties.className === 'border';\n        parent.children.splice(index, 1, {\n            type: 'mdxJsxFlowElement',\n            name: 'Image',\n            attributes: toAttributes({ ...image, align, width, ...(border && { border }), src: image.src || image.url }, imageAttrs),\n            children: caption.children,\n        });\n    });\n    const hasExtra = (attributes) => !!attributes.find(attr => !['alt', 'src', 'title'].includes(attr.name));\n    visit(tree, 'image', (image, index, parent) => {\n        if (!('data' in image))\n            return;\n        if ('url' in image)\n            image.data.hProperties.src = image.url;\n        const attributes = toAttributes({ ...image, ...image.data.hProperties }, imageAttrs);\n        if (image.data.hProperties.className === 'emoji') {\n            parent.children.splice(index, 1, {\n                type: NodeTypes.emoji,\n                name: image.title.replace(/^:(.*):$/, '$1'),\n                value: image.title,\n            });\n        }\n        else if (hasExtra(attributes)) {\n            parent.children.splice(index, 1, {\n                type: 'mdxJsxFlowElement',\n                name: 'Image',\n                attributes,\n                children: [],\n            });\n        }\n    });\n    visit(tree, NodeTypes.imageBlock, (image, index, parent) => {\n        const attributes = toAttributes({ ...image, ...image.data.hProperties }, imageAttrs);\n        if (hasExtra(attributes)) {\n            parent.children.splice(index, 1, {\n                type: 'mdxJsxFlowElement',\n                name: 'Image',\n                attributes,\n                children: [],\n            });\n        }\n        else {\n            parent.children.splice(index, 1, {\n                type: 'image',\n                children: [],\n                ...(image.src && { url: image.src }),\n                ...(image.title && { title: image.title }),\n                ...(image.alt && { alt: image.alt }),\n            });\n        }\n    });\n    const hasExtraLinkAttrs = (attributes) => !!attributes.find(attr => !['href', 'label'].includes(attr.name));\n    // converts links with extra attributes to Anchor elements\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    visit(tree, 'link', ({ type, children, position, ...attrs }, index, parent) => {\n        if ('url' in attrs) {\n            attrs.href = attrs.url;\n            delete attrs.url;\n        }\n        const attributes = toAttributes(attrs);\n        if (hasExtraLinkAttrs(attributes)) {\n            parent.children.splice(index, 1, {\n                type: 'mdxJsxTextElement',\n                name: 'Anchor',\n                attributes,\n                children,\n                position,\n            });\n        }\n    });\n    visit(tree, 'html', (node, index, parent) => {\n        const html = node.value;\n        const isScriptOrStyleTag = [!!html.match(/^<(?:style|script)/i), !!html.match(/<\\/(?:style|script)>$/i)];\n        if (!isScriptOrStyleTag.includes(true))\n            return;\n        parent.children.splice(index, 1, {\n            type: 'html-block',\n            children: [{ type: 'text', value: html }],\n            data: {\n                hName: 'html-block',\n                hProperties: { html },\n            },\n        });\n    });\n    const isVariable = (node) => 'type' in node && node.type === NodeTypes.variable;\n    visit(tree, isVariable, (node, index, parent) => {\n        const identifier = (node.data.hProperties.variable || node.data.hProperties.name).toString();\n        const validIdentifier = identifier.match(/^(\\p{Letter}|[$_])(\\p{Letter}|[$_0-9])*$/u);\n        const value = validIdentifier ? `user.${identifier}` : `user[${JSON.stringify(identifier)}]`;\n        const mdxFlowExpression = {\n            type: 'mdxFlowExpression',\n            value,\n            data: {\n                estree: {\n                    type: 'Program',\n                    body: [\n                        {\n                            type: 'ExpressionStatement',\n                            expression: {\n                                type: 'MemberExpression',\n                                object: {\n                                    type: 'Identifier',\n                                    name: 'user',\n                                },\n                                property: {\n                                    type: 'Identifier',\n                                    name: identifier,\n                                },\n                                computed: false,\n                                optional: false,\n                            },\n                        },\n                    ],\n                    sourceType: 'module',\n                    comments: [],\n                },\n            },\n        };\n        parent.children.splice(index, 1, mdxFlowExpression);\n    });\n    return tree;\n};\n/* harmony default export */ const readme_to_mdx = (readmeToMdx);\n\n;// ./processor/transform/tables-to-jsx.ts\n\n\nconst alignToStyle = (align) => {\n    if (!align)\n        return align;\n    return {\n        type: 'mdxJsxAttribute',\n        name: 'style',\n        value: {\n            type: 'mdxJsxAttributeValueExpression',\n            value: `{ textAlign: \"${align}\" }`,\n        },\n    };\n};\nconst tables_to_jsx_isTableCell = (node) => ['tableHead', 'tableCell'].includes(node.type);\nconst isLiteral = (node) => 'value' in node;\nconst visitor = (table, index, parent) => {\n    let hasFlowContent = false;\n    const tableCellVisitor = (cell) => {\n        if (cell.children.length === 0)\n            return EXIT;\n        const content = cell.children.length === 1 && cell.children[0].type === 'paragraph'\n            ? cell.children[0].children[0]\n            : cell.children[0];\n        // If cell is empty there's nothing to visit\n        if (!content)\n            return EXIT;\n        // @note: Compatibility with RDMD. Ideally, I'd put this in a separate\n        // transformer, but then there'd be some duplication.\n        visit(cell, 'break', (_, breakIndex, breakParent) => {\n            breakParent.children.splice(breakIndex, 1, { type: 'text', value: '\\n' });\n        });\n        if (!(phrasing(content) || content.type === 'plain') && content.type !== 'escape') {\n            hasFlowContent = true;\n            return EXIT;\n        }\n        visit(cell, isLiteral, (node) => {\n            if (node.value.match(/\\n/)) {\n                hasFlowContent = true;\n                return EXIT;\n            }\n        });\n    };\n    visit(table, tables_to_jsx_isTableCell, tableCellVisitor);\n    if (!hasFlowContent) {\n        table.type = 'table';\n        return;\n    }\n    const styles = table.align.map(alignToStyle);\n    const head = {\n        attributes: [],\n        type: 'mdxJsxFlowElement',\n        name: 'thead',\n        children: [\n            {\n                attributes: [],\n                type: 'mdxJsxFlowElement',\n                name: 'tr',\n                children: table.children[0].children.map((cell, cellIndex) => {\n                    return {\n                        attributes: [],\n                        type: 'mdxJsxFlowElement',\n                        name: 'th',\n                        children: cell.children,\n                        ...(styles[index] && { attributes: [styles[cellIndex]] }),\n                    };\n                }),\n            },\n        ],\n    };\n    const body = {\n        attributes: [],\n        type: 'mdxJsxFlowElement',\n        name: 'tbody',\n        children: table.children.splice(1).map(row => {\n            return {\n                attributes: [],\n                type: 'mdxJsxFlowElement',\n                name: 'tr',\n                children: row.children.map((cell, cellIndex) => {\n                    return {\n                        type: 'mdxJsxFlowElement',\n                        name: 'td',\n                        children: cell.children,\n                        ...(styles[index] && { attributes: [styles[cellIndex]] }),\n                    };\n                }),\n            };\n        }),\n    };\n    const attributes = [\n        {\n            type: 'mdxJsxAttribute',\n            name: 'align',\n            value: {\n                type: 'mdxJsxAttributeValueExpression',\n                value: JSON.stringify(table.align),\n            },\n        },\n    ];\n    const jsx = {\n        type: 'mdxJsxFlowElement',\n        name: 'Table',\n        attributes: table.align.find(a => a) ? attributes : [],\n        children: [head, body],\n    };\n    parent.children[index] = jsx;\n};\nconst isTable = (node) => ['table', 'tableau'].includes(node.type);\nconst tablesToJsx = () => tree => {\n    visit(tree, isTable, visitor);\n    return tree;\n};\n/* harmony default export */ const tables_to_jsx = (tablesToJsx);\n\n;// ./processor/transform/tailwind.tsx\n\n\nconst injectTailwindRoot = ({ components = {} }) => (node, index, parent) => {\n    if (!('name' in node))\n        return;\n    if (!(node.name in components))\n        return;\n    if (!('children' in parent))\n        return;\n    const attrs = {\n        flow: node.type === 'mdxJsxFlowElement',\n    };\n    const wrapper = {\n        type: node.type,\n        name: 'TailwindRoot',\n        attributes: toAttributes(attrs),\n        children: [node],\n    };\n    parent.children.splice(index, 1, wrapper);\n    // eslint-disable-next-line consistent-return\n    return SKIP;\n};\nconst tailwind = ({ components }) => (tree, vfile) => {\n    const localComponents = getExports(tree).reduce((acc, name) => {\n        acc[name] = String(vfile);\n        return acc;\n    }, {});\n    visit(tree, isMDXElement, injectTailwindRoot({ components: { ...components, ...localComponents } }));\n    return tree;\n};\n/* harmony default export */ const transform_tailwind = (tailwind);\n\n;// ./processor/transform/validate-mcpintro.ts\n\n\n/**\n * Validates that MCPIntro components have a required url attribute.\n * Throws an error during compilation if the attribute is missing.\n */\nconst validateMCPIntro = () => tree => {\n    visit(tree, isMDXElement, (node) => {\n        if (node.name !== 'MCPIntro')\n            return;\n        const hasUrlAttribute = node.attributes?.some(attr => 'name' in attr && attr.name === 'url');\n        if (!hasUrlAttribute) {\n            throw new Error('MCPIntro component requires a \"url\" attribute. Use the component menu in the editor to insert it correctly.');\n        }\n    });\n};\n/* harmony default export */ const validate_mcpintro = (validateMCPIntro);\n\n;// ./processor/transform/variables.ts\n\n\nconst variables = ({ asMdx } = { asMdx: true }) => tree => {\n    visit(tree, (node, index, parent) => {\n        if (!['mdxFlowExpression', 'mdxTextExpression'].includes(node.type) || !('value' in node))\n            return;\n        // @ts-expect-error - estree is not defined on our mdx types?!\n        if (node.data.estree.type !== 'Program')\n            return;\n        // @ts-expect-error - estree is not defined on our mdx types?!\n        const [expression] = node.data.estree.body;\n        if (!expression ||\n            expression.type !== 'ExpressionStatement' ||\n            expression.expression.object?.name !== 'user' ||\n            !['Literal', 'Identifier'].includes(expression.expression.property?.type))\n            return;\n        const name = expression.expression.property.type === 'Identifier'\n            ? expression.expression.property.name\n            : expression.expression.property.value;\n        const position = 'position' in node ? node.position : undefined;\n        const variable = asMdx\n            ? {\n                type: 'mdxJsxTextElement',\n                name: 'Variable',\n                attributes: [\n                    {\n                        type: 'mdxJsxAttribute',\n                        name: 'name',\n                        value: name,\n                    },\n                ],\n                children: [],\n                position,\n            }\n            : {\n                type: NodeTypes.variable,\n                data: {\n                    hName: 'Variable',\n                    hProperties: {\n                        name,\n                    },\n                },\n                value: `{${node.value}}`,\n                position,\n            };\n        parent.children.splice(index, 1, variable);\n    });\n    return tree;\n};\n/* harmony default export */ const transform_variables = (variables);\n\n;// ./processor/transform/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst defaultTransforms = {\n    calloutTransformer: callouts,\n    codeTabsTransformer: code_tabs,\n    embedTransformer: transform_embeds,\n    imageTransformer: transform_images,\n    gemojiTransformer: gemoji_,\n};\nconst mdxishTransformers = [callouts, code_tabs, transform_images, gemoji_];\n/* harmony default export */ const transform = (Object.values(defaultTransforms));\n\n;// ./lib/ast-processor.ts\n\n\n\n\n\n\nconst remarkPlugins = [remarkFrontmatter, remarkGfm, ...transform];\nconst ast_processor_rehypePlugins = [rehypeSlug, transform_mermaid];\nconst astProcessor = (opts = {}) => {\n    const components = opts.components || {};\n    let processor = remark()\n        .use(remarkMdx)\n        .use(remarkPlugins)\n        .use(opts.remarkPlugins)\n        .use(transform_variables, { asMdx: false })\n        .use(readme_components({ components }));\n    if (['ignore', 'throw'].includes(opts.missingComponents)) {\n        processor = processor.use(handle_missing_components, {\n            components,\n            missingComponents: opts.missingComponents,\n        });\n    }\n    return processor;\n};\n/* harmony default export */ const ast_processor = (astProcessor);\n\n;// ./node_modules/markdown-extensions/index.js\n// TODO: Load the JSON file when Node.js supports that.\n\nconst markdownExtension = [\n\t'md',\n\t'markdown',\n\t'mdown',\n\t'mkdn',\n\t'mkd',\n\t'mdwn',\n\t'mkdown',\n\t'ron',\n];\n\n/* harmony default export */ const markdown_extensions = (markdownExtension);\n\n;// ./node_modules/@mdx-js/mdx/lib/util/extnames.js\n\n\nconst md = markdown_extensions.map(function (d) {\n  return '.' + d\n})\nconst mdx = (/* unused pure expression or super */ null && (['.mdx']))\n\n;// ./node_modules/@mdx-js/mdx/lib/util/resolve-file-and-options.js\n/**\n * @import {Compatible} from 'vfile'\n * @import {CompileOptions} from '../compile.js'\n * @import {ProcessorOptions} from '../core.js'\n */\n\n\n\n\n/**\n * Create a file and options from a given `vfileCompatible` and options that\n * might contain `format: 'detect'`.\n *\n * @param {Readonly<Compatible>} vfileCompatible\n *   File.\n * @param {Readonly<CompileOptions> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {{file: VFile, options: ProcessorOptions}}\n *   File and options.\n */\nfunction resolve_file_and_options_resolveFileAndOptions(vfileCompatible, options) {\n  const file = resolve_file_and_options_looksLikeAVFile(vfileCompatible)\n    ? vfileCompatible\n    : new VFile(vfileCompatible)\n  const {format, ...rest} = options || {}\n  return {\n    file,\n    options: {\n      format:\n        format === 'md' || format === 'mdx'\n          ? format\n          : file.extname && (rest.mdExtensions || md).includes(file.extname)\n            ? 'md'\n            : 'mdx',\n      ...rest\n    }\n  }\n}\n\n/**\n * @param {Readonly<Compatible> | null | undefined} [value]\n *   Thing.\n * @returns {value is VFile}\n *   Check.\n */\nfunction resolve_file_and_options_looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n;// ./node_modules/estree-walker/src/walker.js\n/**\n * @typedef { import('estree').Node} Node\n * @typedef {{\n *   skip: () => void;\n *   remove: () => void;\n *   replace: (node: Node) => void;\n * }} WalkerContext\n */\n\nclass WalkerBase {\n\tconstructor() {\n\t\t/** @type {boolean} */\n\t\tthis.should_skip = false;\n\n\t\t/** @type {boolean} */\n\t\tthis.should_remove = false;\n\n\t\t/** @type {Node | null} */\n\t\tthis.replacement = null;\n\n\t\t/** @type {WalkerContext} */\n\t\tthis.context = {\n\t\t\tskip: () => (this.should_skip = true),\n\t\t\tremove: () => (this.should_remove = true),\n\t\t\treplace: (node) => (this.replacement = node)\n\t\t};\n\t}\n\n\t/**\n\t * @template {Node} Parent\n\t * @param {Parent | null | undefined} parent\n\t * @param {keyof Parent | null | undefined} prop\n\t * @param {number | null | undefined} index\n\t * @param {Node} node\n\t */\n\treplace(parent, prop, index, node) {\n\t\tif (parent && prop) {\n\t\t\tif (index != null) {\n\t\t\t\t/** @type {Array<Node>} */ (parent[prop])[index] = node;\n\t\t\t} else {\n\t\t\t\t/** @type {Node} */ (parent[prop]) = node;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @template {Node} Parent\n\t * @param {Parent | null | undefined} parent\n\t * @param {keyof Parent | null | undefined} prop\n\t * @param {number | null | undefined} index\n\t */\n\tremove(parent, prop, index) {\n\t\tif (parent && prop) {\n\t\t\tif (index !== null && index !== undefined) {\n\t\t\t\t/** @type {Array<Node>} */ (parent[prop]).splice(index, 1);\n\t\t\t} else {\n\t\t\t\tdelete parent[prop];\n\t\t\t}\n\t\t}\n\t}\n}\n\n;// ./node_modules/estree-walker/src/sync.js\n\n\n/**\n * @typedef { import('estree').Node} Node\n * @typedef { import('./walker.js').WalkerContext} WalkerContext\n * @typedef {(\n *    this: WalkerContext,\n *    node: Node,\n *    parent: Node | null,\n *    key: string | number | symbol | null | undefined,\n *    index: number | null | undefined\n * ) => void} SyncHandler\n */\n\nclass SyncWalker extends WalkerBase {\n\t/**\n\t *\n\t * @param {SyncHandler} [enter]\n\t * @param {SyncHandler} [leave]\n\t */\n\tconstructor(enter, leave) {\n\t\tsuper();\n\n\t\t/** @type {boolean} */\n\t\tthis.should_skip = false;\n\n\t\t/** @type {boolean} */\n\t\tthis.should_remove = false;\n\n\t\t/** @type {Node | null} */\n\t\tthis.replacement = null;\n\n\t\t/** @type {WalkerContext} */\n\t\tthis.context = {\n\t\t\tskip: () => (this.should_skip = true),\n\t\t\tremove: () => (this.should_remove = true),\n\t\t\treplace: (node) => (this.replacement = node)\n\t\t};\n\n\t\t/** @type {SyncHandler | undefined} */\n\t\tthis.enter = enter;\n\n\t\t/** @type {SyncHandler | undefined} */\n\t\tthis.leave = leave;\n\t}\n\n\t/**\n\t * @template {Node} Parent\n\t * @param {Node} node\n\t * @param {Parent | null} parent\n\t * @param {keyof Parent} [prop]\n\t * @param {number | null} [index]\n\t * @returns {Node | null}\n\t */\n\tvisit(node, parent, prop, index) {\n\t\tif (node) {\n\t\t\tif (this.enter) {\n\t\t\t\tconst _should_skip = this.should_skip;\n\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\tthis.should_skip = false;\n\t\t\t\tthis.should_remove = false;\n\t\t\t\tthis.replacement = null;\n\n\t\t\t\tthis.enter.call(this.context, node, parent, prop, index);\n\n\t\t\t\tif (this.replacement) {\n\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t}\n\n\t\t\t\tif (this.should_remove) {\n\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t}\n\n\t\t\t\tconst skipped = this.should_skip;\n\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\tthis.should_skip = _should_skip;\n\t\t\t\tthis.should_remove = _should_remove;\n\t\t\t\tthis.replacement = _replacement;\n\n\t\t\t\tif (skipped) return node;\n\t\t\t\tif (removed) return null;\n\t\t\t}\n\n\t\t\t/** @type {keyof Node} */\n\t\t\tlet key;\n\n\t\t\tfor (key in node) {\n\t\t\t\t/** @type {unknown} */\n\t\t\t\tconst value = node[key];\n\n\t\t\t\tif (value && typeof value === 'object') {\n\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\tconst nodes = /** @type {Array<unknown>} */ (value);\n\t\t\t\t\t\tfor (let i = 0; i < nodes.length; i += 1) {\n\t\t\t\t\t\t\tconst item = nodes[i];\n\t\t\t\t\t\t\tif (isNode(item)) {\n\t\t\t\t\t\t\t\tif (!this.visit(item, node, key, i)) {\n\t\t\t\t\t\t\t\t\t// removed\n\t\t\t\t\t\t\t\t\ti--;\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\t\t\t\t\t} else if (isNode(value)) {\n\t\t\t\t\t\tthis.visit(value, node, key, null);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.leave) {\n\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\tthis.replacement = null;\n\t\t\t\tthis.should_remove = false;\n\n\t\t\t\tthis.leave.call(this.context, node, parent, prop, index);\n\n\t\t\t\tif (this.replacement) {\n\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t}\n\n\t\t\t\tif (this.should_remove) {\n\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t}\n\n\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\tthis.replacement = _replacement;\n\t\t\t\tthis.should_remove = _should_remove;\n\n\t\t\t\tif (removed) return null;\n\t\t\t}\n\t\t}\n\n\t\treturn node;\n\t}\n}\n\n/**\n * Ducktype a node.\n *\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction isNode(value) {\n\treturn (\n\t\tvalue !== null && typeof value === 'object' && 'type' in value && typeof value.type === 'string'\n\t);\n}\n\n;// ./node_modules/estree-walker/src/async.js\n\n\n/**\n * @typedef { import('estree').Node} Node\n * @typedef { import('./walker.js').WalkerContext} WalkerContext\n * @typedef {(\n *    this: WalkerContext,\n *    node: Node,\n *    parent: Node | null,\n *    key: string | number | symbol | null | undefined,\n *    index: number | null | undefined\n * ) => Promise<void>} AsyncHandler\n */\n\nclass async_AsyncWalker extends WalkerBase {\n\t/**\n\t *\n\t * @param {AsyncHandler} [enter]\n\t * @param {AsyncHandler} [leave]\n\t */\n\tconstructor(enter, leave) {\n\t\tsuper();\n\n\t\t/** @type {boolean} */\n\t\tthis.should_skip = false;\n\n\t\t/** @type {boolean} */\n\t\tthis.should_remove = false;\n\n\t\t/** @type {Node | null} */\n\t\tthis.replacement = null;\n\n\t\t/** @type {WalkerContext} */\n\t\tthis.context = {\n\t\t\tskip: () => (this.should_skip = true),\n\t\t\tremove: () => (this.should_remove = true),\n\t\t\treplace: (node) => (this.replacement = node)\n\t\t};\n\n\t\t/** @type {AsyncHandler | undefined} */\n\t\tthis.enter = enter;\n\n\t\t/** @type {AsyncHandler | undefined} */\n\t\tthis.leave = leave;\n\t}\n\n\t/**\n\t * @template {Node} Parent\n\t * @param {Node} node\n\t * @param {Parent | null} parent\n\t * @param {keyof Parent} [prop]\n\t * @param {number | null} [index]\n\t * @returns {Promise<Node | null>}\n\t */\n\tasync visit(node, parent, prop, index) {\n\t\tif (node) {\n\t\t\tif (this.enter) {\n\t\t\t\tconst _should_skip = this.should_skip;\n\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\tthis.should_skip = false;\n\t\t\t\tthis.should_remove = false;\n\t\t\t\tthis.replacement = null;\n\n\t\t\t\tawait this.enter.call(this.context, node, parent, prop, index);\n\n\t\t\t\tif (this.replacement) {\n\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t}\n\n\t\t\t\tif (this.should_remove) {\n\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t}\n\n\t\t\t\tconst skipped = this.should_skip;\n\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\tthis.should_skip = _should_skip;\n\t\t\t\tthis.should_remove = _should_remove;\n\t\t\t\tthis.replacement = _replacement;\n\n\t\t\t\tif (skipped) return node;\n\t\t\t\tif (removed) return null;\n\t\t\t}\n\n\t\t\t/** @type {keyof Node} */\n\t\t\tlet key;\n\n\t\t\tfor (key in node) {\n\t\t\t\t/** @type {unknown} */\n\t\t\t\tconst value = node[key];\n\n\t\t\t\tif (value && typeof value === 'object') {\n\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\tconst nodes = /** @type {Array<unknown>} */ (value);\n\t\t\t\t\t\tfor (let i = 0; i < nodes.length; i += 1) {\n\t\t\t\t\t\t\tconst item = nodes[i];\n\t\t\t\t\t\t\tif (async_isNode(item)) {\n\t\t\t\t\t\t\t\tif (!(await this.visit(item, node, key, i))) {\n\t\t\t\t\t\t\t\t\t// removed\n\t\t\t\t\t\t\t\t\ti--;\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\t\t\t\t\t} else if (async_isNode(value)) {\n\t\t\t\t\t\tawait this.visit(value, node, key, null);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.leave) {\n\t\t\t\tconst _replacement = this.replacement;\n\t\t\t\tconst _should_remove = this.should_remove;\n\t\t\t\tthis.replacement = null;\n\t\t\t\tthis.should_remove = false;\n\n\t\t\t\tawait this.leave.call(this.context, node, parent, prop, index);\n\n\t\t\t\tif (this.replacement) {\n\t\t\t\t\tnode = this.replacement;\n\t\t\t\t\tthis.replace(parent, prop, index, node);\n\t\t\t\t}\n\n\t\t\t\tif (this.should_remove) {\n\t\t\t\t\tthis.remove(parent, prop, index);\n\t\t\t\t}\n\n\t\t\t\tconst removed = this.should_remove;\n\n\t\t\t\tthis.replacement = _replacement;\n\t\t\t\tthis.should_remove = _should_remove;\n\n\t\t\t\tif (removed) return null;\n\t\t\t}\n\t\t}\n\n\t\treturn node;\n\t}\n}\n\n/**\n * Ducktype a node.\n *\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction async_isNode(value) {\n\treturn (\n\t\tvalue !== null && typeof value === 'object' && 'type' in value && typeof value.type === 'string'\n\t);\n}\n\n;// ./node_modules/estree-walker/src/index.js\n\n\n\n/**\n * @typedef {import('estree').Node} Node\n * @typedef {import('./sync.js').SyncHandler} SyncHandler\n * @typedef {import('./async.js').AsyncHandler} AsyncHandler\n */\n\n/**\n * @param {Node} ast\n * @param {{\n *   enter?: SyncHandler\n *   leave?: SyncHandler\n * }} walker\n * @returns {Node | null}\n */\nfunction walk(ast, { enter, leave }) {\n\tconst instance = new SyncWalker(enter, leave);\n\treturn instance.visit(ast, null);\n}\n\n/**\n * @param {Node} ast\n * @param {{\n *   enter?: AsyncHandler\n *   leave?: AsyncHandler\n * }} walker\n * @returns {Promise<Node | null>}\n */\nasync function asyncWalk(ast, { enter, leave }) {\n\tconst instance = new AsyncWalker(enter, leave);\n\treturn await instance.visit(ast, null);\n}\n\n;// ./node_modules/estree-util-build-jsx/lib/index.js\n/**\n * @typedef {import('estree-jsx').Expression} Expression\n * @typedef {import('estree-jsx').Identifier} Identifier\n * @typedef {import('estree-jsx').ImportSpecifier} ImportSpecifier\n * @typedef {import('estree-jsx').JSXAttribute} JSXAttribute\n * @typedef {import('estree-jsx').JSXIdentifier} JSXIdentifier\n * @typedef {import('estree-jsx').JSXMemberExpression} JSXMemberExpression\n * @typedef {import('estree-jsx').JSXNamespacedName} JSXNamespacedName\n * @typedef {import('estree-jsx').Literal} Literal\n * @typedef {import('estree-jsx').MemberExpression} MemberExpression\n * @typedef {import('estree-jsx').Node} Node\n * @typedef {import('estree-jsx').ObjectExpression} ObjectExpression\n * @typedef {import('estree-jsx').Property} Property\n * @typedef {import('estree-jsx').SpreadElement} SpreadElement\n *\n * @typedef {'automatic' | 'classic'} Runtime\n *   How to transform JSX.\n *\n * @typedef Options\n *   Configuration.\n *\n *   > 👉 **Note**: you can also configure `runtime`, `importSource`, `pragma`,\n *   > and `pragmaFrag` from within files through comments.\n * @property {Runtime | null | undefined} [runtime='classic']\n *   Choose the runtime (default: `'classic'`).\n *\n *   Comment form: `@jsxRuntime theRuntime`.\n * @property {string | null | undefined} [importSource='react']\n *   Place to import `jsx`, `jsxs`, `jsxDEV`, and `Fragment` from, when the\n *   effective runtime is automatic (default: `'react'`).\n *\n *   Comment form: `@jsxImportSource theSource`.\n *\n *   > 👉 **Note**: `/jsx-runtime` or `/jsx-dev-runtime` is appended to this\n *   > provided source.\n *   > In CJS, that can resolve to a file (as in `theSource/jsx-runtime.js`),\n *   > but for ESM an export map needs to be set up to point to files:\n *   >\n *   > ```js\n *   > // …\n *   > \"exports\": {\n *   >   // …\n *   >   \"./jsx-runtime\": \"./path/to/jsx-runtime.js\",\n *   >   \"./jsx-dev-runtime\": \"./path/to/jsx-runtime.js\"\n *   >   // …\n *   > ```\n * @property {string | null | undefined} [pragma='React.createElement']\n *   Identifier or member expression to call when the effective runtime is\n *   classic (default: `'React.createElement'`).\n *\n *   Comment form: `@jsx identifier`.\n * @property {string | null | undefined} [pragmaFrag='React.Fragment']\n *   Identifier or member expression to use as a symbol for fragments when the\n *   effective runtime is classic (default: `'React.Fragment'`).\n *\n *   Comment form: `@jsxFrag identifier`.\n * @property {boolean | null | undefined} [development=false]\n *   When in the automatic runtime, whether to import\n *   `theSource/jsx-dev-runtime.js`, use `jsxDEV`, and pass location info when\n *   available (default: `false`).\n *\n *   This helps debugging but adds a lot of code that you don’t want in\n *   production.\n * @property {string | null | undefined} [filePath]\n *   File path to the original source file (optional).\n *\n *   Passed in location info to `jsxDEV` when using the automatic runtime with\n *   `development: true`.\n *\n * @typedef Annotations\n *   State where info from comments is gathered.\n * @property {string | undefined} [jsx]\n *   JSX identifier (`pragma`).\n * @property {string | undefined} [jsxFrag]\n *   JSX identifier of fragment (`pragmaFrag`).\n * @property {string | undefined} [jsxImportSource]\n *   Where to import an automatic JSX runtime from.\n * @property {Runtime | undefined} [jsxRuntime]\n *   Runtime.\n *\n * @typedef Imports\n *   State of used identifiers from the automatic runtime.\n * @property {boolean | undefined} [fragment]\n *   Symbol of `Fragment`.\n * @property {boolean | undefined} [jsx]\n *   Symbol of `jsx`.\n * @property {boolean | undefined} [jsxs]\n *   Symbol of `jsxs`.\n * @property {boolean | undefined} [jsxDEV]\n *   Symbol of `jsxDEV`.\n */\n\n\n\n\n\nconst lib_regex = /@(jsx|jsxFrag|jsxImportSource|jsxRuntime)\\s+(\\S+)/g\n\n/**\n * Turn JSX in `tree` into function calls: `<x />` -> `h('x')`!\n *\n * ###### Algorithm\n *\n * In almost all cases, this utility is the same as the Babel plugin, except that\n * they work on slightly different syntax trees.\n *\n * Some differences:\n *\n * *   no pure annotations things\n * *   `this` is not a component: `<this>` -> `h('this')`, not `h(this)`\n * *   namespaces are supported: `<a:b c:d>` -> `h('a:b', {'c:d': true})`,\n *     which throws by default in Babel or can be turned on with `throwIfNamespace`\n * *   no `useSpread`, `useBuiltIns`, or `filter` options\n *\n * @param {Node} tree\n *   Tree to transform (typically `Program`).\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction buildJsx(tree, options) {\n  const config = options || {}\n  let automatic = config.runtime === 'automatic'\n  /** @type {Annotations} */\n  const annotations = {}\n  /** @type {Imports} */\n  const imports = {}\n\n  walk(tree, {\n    enter(node) {\n      if (node.type === 'Program') {\n        const comments = node.comments || []\n        let index = -1\n\n        while (++index < comments.length) {\n          lib_regex.lastIndex = 0\n\n          let match = lib_regex.exec(comments[index].value)\n\n          while (match) {\n            // @ts-expect-error: `match[1]` is always a key, `match[2]` when\n            // runtime is checked later.\n            annotations[match[1]] = match[2]\n            match = lib_regex.exec(comments[index].value)\n          }\n        }\n\n        if (annotations.jsxRuntime) {\n          if (annotations.jsxRuntime === 'automatic') {\n            automatic = true\n\n            if (annotations.jsx) {\n              throw new Error('Unexpected `@jsx` pragma w/ automatic runtime')\n            }\n\n            if (annotations.jsxFrag) {\n              throw new Error(\n                'Unexpected `@jsxFrag` pragma w/ automatic runtime'\n              )\n            }\n          } else if (annotations.jsxRuntime === 'classic') {\n            automatic = false\n\n            if (annotations.jsxImportSource) {\n              throw new Error(\n                'Unexpected `@jsxImportSource` w/ classic runtime'\n              )\n            }\n          } else {\n            throw new Error(\n              'Unexpected `jsxRuntime` `' +\n                annotations.jsxRuntime +\n                '`, expected `automatic` or `classic`'\n            )\n          }\n        }\n      }\n    },\n    // eslint-disable-next-line complexity\n    leave(node) {\n      if (node.type === 'Program') {\n        /** @type {Array<ImportSpecifier>} */\n        const specifiers = []\n\n        if (imports.fragment) {\n          specifiers.push({\n            type: 'ImportSpecifier',\n            imported: {type: 'Identifier', name: 'Fragment'},\n            local: {type: 'Identifier', name: '_Fragment'}\n          })\n        }\n\n        if (imports.jsx) {\n          specifiers.push({\n            type: 'ImportSpecifier',\n            imported: {type: 'Identifier', name: 'jsx'},\n            local: {type: 'Identifier', name: '_jsx'}\n          })\n        }\n\n        if (imports.jsxs) {\n          specifiers.push({\n            type: 'ImportSpecifier',\n            imported: {type: 'Identifier', name: 'jsxs'},\n            local: {type: 'Identifier', name: '_jsxs'}\n          })\n        }\n\n        if (imports.jsxDEV) {\n          specifiers.push({\n            type: 'ImportSpecifier',\n            imported: {type: 'Identifier', name: 'jsxDEV'},\n            local: {type: 'Identifier', name: '_jsxDEV'}\n          })\n        }\n\n        if (specifiers.length > 0) {\n          let injectIndex = 0\n\n          while (injectIndex < node.body.length) {\n            const child = node.body[injectIndex]\n\n            if ('directive' in child && child.directive) {\n              injectIndex++\n            } else {\n              break\n            }\n          }\n\n          node.body.splice(injectIndex, 0, {\n            type: 'ImportDeclaration',\n            specifiers,\n            source: {\n              type: 'Literal',\n              value:\n                (annotations.jsxImportSource ||\n                  config.importSource ||\n                  'react') +\n                (config.development ? '/jsx-dev-runtime' : '/jsx-runtime')\n            }\n          })\n        }\n      }\n\n      if (node.type !== 'JSXElement' && node.type !== 'JSXFragment') {\n        return\n      }\n\n      /** @type {Array<Expression>} */\n      const children = []\n      let index = -1\n\n      // Figure out `children`.\n      while (++index < node.children.length) {\n        const child = node.children[index]\n\n        if (child.type === 'JSXExpressionContainer') {\n          // Ignore empty expressions.\n          if (child.expression.type !== 'JSXEmptyExpression') {\n            children.push(child.expression)\n          }\n        } else if (child.type === 'JSXText') {\n          const value = child.value\n            // Replace tabs w/ spaces.\n            .replace(/\\t/g, ' ')\n            // Use line feeds, drop spaces around them.\n            .replace(/ *(\\r?\\n|\\r) */g, '\\n')\n            // Collapse multiple line feeds.\n            .replace(/\\n+/g, '\\n')\n            // Drop final line feeds.\n            .replace(/\\n+$/, '')\n            // Drop first line feeds.\n            .replace(/^\\n+/, '')\n            // Replace line feeds with spaces.\n            .replace(/\\n/g, ' ')\n\n          // Ignore collapsible text.\n          if (value) {\n            /** @type {Node} */\n            const text = {type: 'Literal', value}\n            lib_create(child, text)\n            children.push(text)\n          }\n        } else {\n          default_ok(\n            child.type !== 'JSXElement' &&\n              child.type !== 'JSXFragment' &&\n              child.type !== 'JSXSpreadChild'\n          )\n          children.push(child)\n        }\n      }\n\n      /** @type {Identifier | Literal | MemberExpression} */\n      let name\n      /** @type {Array<Property | SpreadElement>} */\n      const fields = []\n      /** @type {Array<Expression>} */\n      let parameters = []\n      /** @type {Expression | undefined} */\n      let key\n\n      // Do the stuff needed for elements.\n      if (node.type === 'JSXElement') {\n        name = toIdentifier(node.openingElement.name)\n\n        // If the name could be an identifier, but start with a lowercase letter,\n        // it’s not a component.\n        if (name.type === 'Identifier' && /^[a-z]/.test(name.name)) {\n          /** @type {Node} */\n          const next = {type: 'Literal', value: name.name}\n          lib_create(name, next)\n          name = next\n        }\n\n        /** @type {boolean | undefined} */\n        let spread\n        const attributes = node.openingElement.attributes\n        let index = -1\n\n        // Place props in the right order, because we might have duplicates\n        // in them and what’s spread in.\n        while (++index < attributes.length) {\n          const attribute = attributes[index]\n\n          if (attribute.type === 'JSXSpreadAttribute') {\n            if (attribute.argument.type === 'ObjectExpression') {\n              fields.push(...attribute.argument.properties)\n            } else {\n              fields.push({type: 'SpreadElement', argument: attribute.argument})\n            }\n\n            spread = true\n          } else {\n            const prop = toProperty(attribute)\n\n            if (\n              automatic &&\n              prop.key.type === 'Identifier' &&\n              prop.key.name === 'key'\n            ) {\n              if (spread) {\n                throw new Error(\n                  'Expected `key` to come before any spread expressions'\n                )\n              }\n\n              const value = prop.value\n\n              default_ok(\n                value.type !== 'AssignmentPattern' &&\n                  value.type !== 'ArrayPattern' &&\n                  value.type !== 'ObjectPattern' &&\n                  value.type !== 'RestElement'\n              )\n\n              key = value\n            } else {\n              fields.push(prop)\n            }\n          }\n        }\n      }\n      // …and fragments.\n      else if (automatic) {\n        imports.fragment = true\n        name = {type: 'Identifier', name: '_Fragment'}\n      } else {\n        name = toMemberExpression(\n          annotations.jsxFrag || config.pragmaFrag || 'React.Fragment'\n        )\n      }\n\n      if (automatic) {\n        if (children.length > 0) {\n          fields.push({\n            type: 'Property',\n            key: {type: 'Identifier', name: 'children'},\n            value:\n              children.length > 1\n                ? {type: 'ArrayExpression', elements: children}\n                : children[0],\n            kind: 'init',\n            method: false,\n            shorthand: false,\n            computed: false\n          })\n        }\n      } else {\n        parameters = children\n      }\n\n      /** @type {Identifier | Literal | MemberExpression} */\n      let callee\n\n      if (automatic) {\n        parameters.push({type: 'ObjectExpression', properties: fields})\n\n        if (key) {\n          parameters.push(key)\n        } else if (config.development) {\n          parameters.push({type: 'Identifier', name: 'undefined'})\n        }\n\n        const isStaticChildren = children.length > 1\n\n        if (config.development) {\n          imports.jsxDEV = true\n          callee = {\n            type: 'Identifier',\n            name: '_jsxDEV'\n          }\n          parameters.push({type: 'Literal', value: isStaticChildren})\n\n          /** @type {ObjectExpression} */\n          const source = {\n            type: 'ObjectExpression',\n            properties: [\n              {\n                type: 'Property',\n                method: false,\n                shorthand: false,\n                computed: false,\n                kind: 'init',\n                key: {type: 'Identifier', name: 'fileName'},\n                value: {\n                  type: 'Literal',\n                  value: config.filePath || '<source.js>'\n                }\n              }\n            ]\n          }\n\n          if (node.loc) {\n            source.properties.push(\n              {\n                type: 'Property',\n                method: false,\n                shorthand: false,\n                computed: false,\n                kind: 'init',\n                key: {type: 'Identifier', name: 'lineNumber'},\n                value: {type: 'Literal', value: node.loc.start.line}\n              },\n              {\n                type: 'Property',\n                method: false,\n                shorthand: false,\n                computed: false,\n                kind: 'init',\n                key: {type: 'Identifier', name: 'columnNumber'},\n                value: {type: 'Literal', value: node.loc.start.column + 1}\n              }\n            )\n          }\n\n          parameters.push(source, {type: 'ThisExpression'})\n        } else if (isStaticChildren) {\n          imports.jsxs = true\n          callee = {type: 'Identifier', name: '_jsxs'}\n        } else {\n          imports.jsx = true\n          callee = {type: 'Identifier', name: '_jsx'}\n        }\n      }\n      // Classic.\n      else {\n        if (fields.length > 0) {\n          parameters.unshift({type: 'ObjectExpression', properties: fields})\n        } else if (parameters.length > 0) {\n          parameters.unshift({type: 'Literal', value: null})\n        }\n\n        callee = toMemberExpression(\n          annotations.jsx || config.pragma || 'React.createElement'\n        )\n      }\n\n      parameters.unshift(name)\n      /** @type {Node} */\n      const call = {\n        type: 'CallExpression',\n        callee,\n        arguments: parameters,\n        optional: false\n      }\n      lib_create(node, call)\n      this.replace(call)\n    }\n  })\n}\n\n/**\n * Turn a JSX attribute into a JavaScript property.\n *\n * @param {JSXAttribute} node\n *   JSX attribute.\n * @returns {Property}\n *   JS property.\n */\nfunction toProperty(node) {\n  /** @type {Expression} */\n  let value\n\n  if (node.value) {\n    if (node.value.type === 'JSXExpressionContainer') {\n      const valueExpression = node.value.expression\n      default_ok(\n        valueExpression.type !== 'JSXEmptyExpression',\n        '`JSXEmptyExpression` is not allowed in props.'\n      )\n      value = valueExpression\n    }\n    // Literal or call expression.\n    else {\n      const nodeValue = node.value\n      default_ok(\n        nodeValue.type !== 'JSXElement' && nodeValue.type !== 'JSXFragment',\n        'JSX{Element,Fragment} are already compiled to `CallExpression`'\n      )\n      value = nodeValue\n      delete value.raw\n    }\n  }\n  // Boolean prop.\n  else {\n    value = {type: 'Literal', value: true}\n  }\n\n  /** @type {Property} */\n  const replacement = {\n    type: 'Property',\n    key: toIdentifier(node.name),\n    value,\n    kind: 'init',\n    method: false,\n    shorthand: false,\n    computed: false\n  }\n  lib_create(node, replacement)\n  return replacement\n}\n\n/**\n * Turn a JSX identifier into a normal JS identifier.\n *\n * @param {JSXIdentifier | JSXMemberExpression | JSXNamespacedName} node\n *   JSX identifier.\n * @returns {Identifier | Literal | MemberExpression}\n *   JS identifier.\n */\nfunction toIdentifier(node) {\n  /** @type {Identifier | Literal | MemberExpression} */\n  let replace\n\n  if (node.type === 'JSXMemberExpression') {\n    // `property` is always a `JSXIdentifier`, but it could be something that\n    // isn’t an ES identifier name.\n    const id = toIdentifier(node.property)\n    replace = {\n      type: 'MemberExpression',\n      object: toIdentifier(node.object),\n      property: id,\n      computed: id.type === 'Literal',\n      optional: false\n    }\n  } else if (node.type === 'JSXNamespacedName') {\n    replace = {\n      type: 'Literal',\n      value: node.namespace.name + ':' + node.name.name\n    }\n  }\n  // Must be `JSXIdentifier`.\n  else {\n    replace = lib_name(node.name)\n      ? {type: 'Identifier', name: node.name}\n      : {type: 'Literal', value: node.name}\n  }\n\n  lib_create(node, replace)\n  return replace\n}\n\n/**\n * Turn a dotted string into a member expression.\n *\n * @param {string} id\n *   Identifiers.\n * @returns {Identifier | Literal | MemberExpression}\n *   Expression.\n */\nfunction toMemberExpression(id) {\n  const identifiers = id.split('.')\n  let index = -1\n  /** @type {Identifier | Literal | MemberExpression | undefined} */\n  let result\n\n  while (++index < identifiers.length) {\n    /** @type {Identifier | Literal} */\n    const prop = lib_name(identifiers[index])\n      ? {type: 'Identifier', name: identifiers[index]}\n      : {type: 'Literal', value: identifiers[index]}\n    result = result\n      ? {\n          type: 'MemberExpression',\n          object: result,\n          property: prop,\n          computed: Boolean(index && prop.type === 'Literal'),\n          optional: false\n        }\n      : prop\n  }\n\n  default_ok(result, 'always a result')\n  return result\n}\n\n/**\n * Inherit some fields from `from` into `to`.\n *\n * @param {Node} from\n *   Node to inherit from.\n * @param {Node} to\n *   Node to add to.\n * @returns {undefined}\n *   Nothing.\n */\nfunction lib_create(from, to) {\n  const fields = ['start', 'end', 'loc', 'range', 'comments']\n  let index = -1\n\n  while (++index < fields.length) {\n    const field = fields[index]\n    if (field in from) {\n      // @ts-expect-error: indexable.\n      to[field] = from[field]\n    }\n  }\n}\n\n;// ./node_modules/recma-build-jsx/lib/index.js\n/**\n * @import {Program} from 'estree'\n * @import {Options} from 'recma-build-jsx'\n * @import {VFile} from 'vfile'\n */\n\n\n\n/**\n * Plugin to build JSX.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nfunction recmaJsx(options) {\n  /**\n   * @param {Program} tree\n   *   Tree.\n   * @param {VFile} file\n   *   File.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree, file) {\n    buildJsx(tree, {filePath: file.history[0], ...options})\n  }\n}\n\n;// ./node_modules/estree-util-to-js/lib/jsx.js\n/**\n * @typedef {import('estree-jsx').JSXAttribute} JsxAttribute\n * @typedef {import('estree-jsx').JSXClosingElement} JsxClosingElement\n * @typedef {import('estree-jsx').JSXClosingFragment} JsxClosingFragment\n * @typedef {import('estree-jsx').JSXElement} JsxElement\n * @typedef {import('estree-jsx').JSXExpressionContainer} JsxExpressionContainer\n * @typedef {import('estree-jsx').JSXFragment} JsxFragment\n * @typedef {import('estree-jsx').JSXIdentifier} JsxIdentifier\n * @typedef {import('estree-jsx').JSXMemberExpression} JsxMemberExpression\n * @typedef {import('estree-jsx').JSXNamespacedName} JsxNamespacedName\n * @typedef {import('estree-jsx').JSXOpeningElement} JsxOpeningElement\n * @typedef {import('estree-jsx').JSXOpeningFragment} JsxOpeningFragment\n * @typedef {import('estree-jsx').JSXSpreadAttribute} JsxSpreadAttribute\n * @typedef {import('estree-jsx').JSXText} JsxText\n *\n * @typedef {import('./index.js').Generator} Generator\n * @typedef {import('./index.js').State} State\n */\n\nconst jsx = {\n  JSXAttribute: jsxAttribute,\n  JSXClosingElement: jsxClosingElement,\n  JSXClosingFragment: jsxClosingFragment,\n  JSXElement: jsxElement,\n  JSXEmptyExpression: jsxEmptyExpression,\n  JSXExpressionContainer: jsxExpressionContainer,\n  JSXFragment: jsxFragment,\n  JSXIdentifier: jsxIdentifier,\n  JSXMemberExpression: jsxMemberExpression,\n  JSXNamespacedName: jsxNamespacedName,\n  JSXOpeningElement: jsxOpeningElement,\n  JSXOpeningFragment: jsxOpeningFragment,\n  JSXSpreadAttribute: jsxSpreadAttribute,\n  JSXText: jsx_jsxText\n}\n\n/**\n * `attr`\n * `attr=\"something\"`\n * `attr={1}`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxAttribute} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxAttribute(node, state) {\n  this[node.name.type](node.name, state)\n\n  if (node.value !== null && node.value !== undefined) {\n    state.write('=')\n\n    // Encode double quotes in attribute values.\n    if (node.value.type === 'Literal') {\n      state.write(\n        '\"' + encodeJsx(String(node.value.value)).replace(/\"/g, '&quot;') + '\"',\n        node\n      )\n    } else {\n      this[node.value.type](node.value, state)\n    }\n  }\n}\n\n/**\n * `</div>`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxClosingElement} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxClosingElement(node, state) {\n  state.write('</')\n  this[node.name.type](node.name, state)\n  state.write('>')\n}\n\n/**\n * `</>`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxClosingFragment} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxClosingFragment(node, state) {\n  state.write('</>', node)\n}\n\n/**\n * `<div />`\n * `<div></div>`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxElement} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxElement(node, state) {\n  let index = -1\n\n  this[node.openingElement.type](node.openingElement, state)\n\n  if (node.children) {\n    while (++index < node.children.length) {\n      const child = node.children[index]\n\n      // Supported in types but not by Acorn.\n      /* c8 ignore next 3 */\n      if (child.type === 'JSXSpreadChild') {\n        throw new Error('JSX spread children are not supported')\n      }\n\n      this[child.type](child, state)\n    }\n  }\n\n  if (node.closingElement) {\n    this[node.closingElement.type](node.closingElement, state)\n  }\n}\n\n/**\n * `{}` (always in a `JSXExpressionContainer`, which does the curlies)\n *\n * @this {Generator}\n *   `astring` generator.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxEmptyExpression() {}\n\n/**\n * `{expression}`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxExpressionContainer} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxExpressionContainer(node, state) {\n  state.write('{')\n  this[node.expression.type](node.expression, state)\n  state.write('}')\n}\n\n/**\n * `<></>`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxFragment} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxFragment(node, state) {\n  let index = -1\n\n  this[node.openingFragment.type](node.openingFragment, state)\n\n  if (node.children) {\n    while (++index < node.children.length) {\n      const child = node.children[index]\n\n      // Supported in types but not by Acorn.\n      /* c8 ignore next 3 */\n      if (child.type === 'JSXSpreadChild') {\n        throw new Error('JSX spread children are not supported')\n      }\n\n      this[child.type](child, state)\n    }\n  }\n\n  this[node.closingFragment.type](node.closingFragment, state)\n}\n\n/**\n * `div`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxIdentifier} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxIdentifier(node, state) {\n  state.write(node.name, node)\n}\n\n/**\n * `member.expression`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxMemberExpression} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxMemberExpression(node, state) {\n  this[node.object.type](node.object, state)\n  state.write('.')\n  this[node.property.type](node.property, state)\n}\n\n/**\n * `ns:name`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxNamespacedName} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxNamespacedName(node, state) {\n  this[node.namespace.type](node.namespace, state)\n  state.write(':')\n  this[node.name.type](node.name, state)\n}\n\n/**\n * `<div>`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxOpeningElement} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxOpeningElement(node, state) {\n  let index = -1\n\n  state.write('<')\n  this[node.name.type](node.name, state)\n\n  if (node.attributes) {\n    while (++index < node.attributes.length) {\n      state.write(' ')\n      this[node.attributes[index].type](node.attributes[index], state)\n    }\n  }\n\n  state.write(node.selfClosing ? ' />' : '>')\n}\n\n/**\n * `<>`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxOpeningFragment} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxOpeningFragment(node, state) {\n  state.write('<>', node)\n}\n\n/**\n * `{...argument}`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxSpreadAttribute} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsxSpreadAttribute(node, state) {\n  state.write('{')\n  // eslint-disable-next-line new-cap\n  this.SpreadElement(node, state)\n  state.write('}')\n}\n\n/**\n * `!`\n *\n * @this {Generator}\n *   `astring` generator.\n * @param {JsxText} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction jsx_jsxText(node, state) {\n  state.write(encodeJsx(node.value).replace(/[<>{}]/g, replaceJsxChar), node)\n}\n\n/**\n * Make sure that character references don’t pop up.\n *\n * For example, the text `&copy;` should stay that way, and not turn into `©`.\n * We could encode all `&` (easy but verbose) or look for actual valid\n * references (complex but cleanest output).\n * Looking for the 2nd character gives us a middle ground.\n * The `#` is for (decimal and hexadecimal) numeric references, the letters\n * are for the named references.\n *\n * @param {string} value\n *   Value to encode.\n * @returns {string}\n *   Encoded value.\n */\nfunction encodeJsx(value) {\n  return value.replace(/&(?=[#a-z])/gi, '&amp;')\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction replaceJsxChar($0) {\n  return $0 === '<'\n    ? '&lt;'\n    : $0 === '>'\n    ? '&gt;'\n    : $0 === '{'\n    ? '&#123;'\n    : '&#125;'\n}\n\n;// ./node_modules/recma-jsx/lib/index.js\n/**\n * @import {} from 'recma-parse'\n * @import {} from 'recma-stringify'\n * @import {Processor} from 'unified'\n */\n\n\n\n\n/**\n * Plugin to add support for parsing and serializing JSX.\n *\n * @this {Processor}\n *   Processor.\n * @returns {undefined}\n *   Nothing.\n */\nfunction lib_recmaJsx() {\n  const data = this.data()\n  const settings = data.settings || (data.settings = {})\n  const handlers = settings.handlers || (settings.handlers = {})\n  const plugins = settings.plugins || (settings.plugins = [])\n\n  // No useful options yet.\n  plugins.push(acorn_jsx_default()())\n  Object.assign(handlers, jsx)\n}\n\n;// ./node_modules/astring/dist/astring.mjs\n// Astring is a tiny and fast JavaScript code generator from an ESTree-compliant AST.\n//\n// Astring was written by David Bonnet and released under an MIT license.\n//\n// The Git repository for Astring is available at:\n// https://github.com/davidbonnet/astring.git\n//\n// Please use the GitHub bug tracker to report issues:\n// https://github.com/davidbonnet/astring/issues\n\nconst { stringify: astring_stringify } = JSON\n\n/* c8 ignore if */\nif (!String.prototype.repeat) {\n  /* c8 ignore next */\n  throw new Error(\n    'String.prototype.repeat is undefined, see https://github.com/davidbonnet/astring#installation',\n  )\n}\n\n/* c8 ignore if */\nif (!String.prototype.endsWith) {\n  /* c8 ignore next */\n  throw new Error(\n    'String.prototype.endsWith is undefined, see https://github.com/davidbonnet/astring#installation',\n  )\n}\n\nconst OPERATOR_PRECEDENCE = {\n  '||': 2,\n  '??': 3,\n  '&&': 4,\n  '|': 5,\n  '^': 6,\n  '&': 7,\n  '==': 8,\n  '!=': 8,\n  '===': 8,\n  '!==': 8,\n  '<': 9,\n  '>': 9,\n  '<=': 9,\n  '>=': 9,\n  in: 9,\n  instanceof: 9,\n  '<<': 10,\n  '>>': 10,\n  '>>>': 10,\n  '+': 11,\n  '-': 11,\n  '*': 12,\n  '%': 12,\n  '/': 12,\n  '**': 13,\n}\n\n// Enables parenthesis regardless of precedence\nconst NEEDS_PARENTHESES = 17\n\nconst EXPRESSIONS_PRECEDENCE = {\n  // Definitions\n  ArrayExpression: 20,\n  TaggedTemplateExpression: 20,\n  ThisExpression: 20,\n  Identifier: 20,\n  PrivateIdentifier: 20,\n  Literal: 18,\n  TemplateLiteral: 20,\n  Super: 20,\n  SequenceExpression: 20,\n  // Operations\n  MemberExpression: 19,\n  ChainExpression: 19,\n  CallExpression: 19,\n  NewExpression: 19,\n  // Other definitions\n  ArrowFunctionExpression: NEEDS_PARENTHESES,\n  ClassExpression: NEEDS_PARENTHESES,\n  FunctionExpression: NEEDS_PARENTHESES,\n  ObjectExpression: NEEDS_PARENTHESES,\n  // Other operations\n  UpdateExpression: 16,\n  UnaryExpression: 15,\n  AwaitExpression: 15,\n  BinaryExpression: 14,\n  LogicalExpression: 13,\n  ConditionalExpression: 4,\n  AssignmentExpression: 3,\n  YieldExpression: 2,\n  RestElement: 1,\n}\n\nfunction formatSequence(state, nodes) {\n  /*\n  Writes into `state` a sequence of `nodes`.\n  */\n  const { generator } = state\n  state.write('(')\n  if (nodes != null && nodes.length > 0) {\n    generator[nodes[0].type](nodes[0], state)\n    const { length } = nodes\n    for (let i = 1; i < length; i++) {\n      const param = nodes[i]\n      state.write(', ')\n      generator[param.type](param, state)\n    }\n  }\n  state.write(')')\n}\n\nfunction expressionNeedsParenthesis(state, node, parentNode, isRightHand) {\n  const nodePrecedence = state.expressionsPrecedence[node.type]\n  if (nodePrecedence === NEEDS_PARENTHESES) {\n    return true\n  }\n  const parentNodePrecedence = state.expressionsPrecedence[parentNode.type]\n  if (nodePrecedence !== parentNodePrecedence) {\n    // Different node types\n    return (\n      (!isRightHand &&\n        nodePrecedence === 15 &&\n        parentNodePrecedence === 14 &&\n        parentNode.operator === '**') ||\n      nodePrecedence < parentNodePrecedence\n    )\n  }\n  if (nodePrecedence !== 13 && nodePrecedence !== 14) {\n    // Not a `LogicalExpression` or `BinaryExpression`\n    return false\n  }\n  if (node.operator === '**' && parentNode.operator === '**') {\n    // Exponentiation operator has right-to-left associativity\n    return !isRightHand\n  }\n  if (\n    nodePrecedence === 13 &&\n    parentNodePrecedence === 13 &&\n    (node.operator === '??' || parentNode.operator === '??')\n  ) {\n    // Nullish coalescing and boolean operators cannot be combined\n    return true\n  }\n  if (isRightHand) {\n    // Parenthesis are used if both operators have the same precedence\n    return (\n      OPERATOR_PRECEDENCE[node.operator] <=\n      OPERATOR_PRECEDENCE[parentNode.operator]\n    )\n  }\n  return (\n    OPERATOR_PRECEDENCE[node.operator] <\n    OPERATOR_PRECEDENCE[parentNode.operator]\n  )\n}\n\nfunction formatExpression(state, node, parentNode, isRightHand) {\n  /*\n  Writes into `state` the provided `node`, adding parenthesis around if the provided `parentNode` needs it. If `node` is a right-hand argument, the provided `isRightHand` parameter should be `true`.\n  */\n  const { generator } = state\n  if (expressionNeedsParenthesis(state, node, parentNode, isRightHand)) {\n    state.write('(')\n    generator[node.type](node, state)\n    state.write(')')\n  } else {\n    generator[node.type](node, state)\n  }\n}\n\nfunction reindent(state, text, indent, lineEnd) {\n  /*\n  Writes into `state` the `text` string reindented with the provided `indent`.\n  */\n  const lines = text.split('\\n')\n  const end = lines.length - 1\n  state.write(lines[0].trim())\n  if (end > 0) {\n    state.write(lineEnd)\n    for (let i = 1; i < end; i++) {\n      state.write(indent + lines[i].trim() + lineEnd)\n    }\n    state.write(indent + lines[end].trim())\n  }\n}\n\nfunction formatComments(state, comments, indent, lineEnd) {\n  /*\n  Writes into `state` the provided list of `comments`, with the given `indent` and `lineEnd` strings.\n  Line comments will end with `\"\\n\"` regardless of the value of `lineEnd`.\n  Expects to start on a new unindented line.\n  */\n  const { length } = comments\n  for (let i = 0; i < length; i++) {\n    const comment = comments[i]\n    state.write(indent)\n    if (comment.type[0] === 'L') {\n      // Line comment\n      state.write('// ' + comment.value.trim() + '\\n', comment)\n    } else {\n      // Block comment\n      state.write('/*')\n      reindent(state, comment.value, indent, lineEnd)\n      state.write('*/' + lineEnd)\n    }\n  }\n}\n\nfunction hasCallExpression(node) {\n  /*\n  Returns `true` if the provided `node` contains a call expression and `false` otherwise.\n  */\n  let currentNode = node\n  while (currentNode != null) {\n    const { type } = currentNode\n    if (type[0] === 'C' && type[1] === 'a') {\n      // Is CallExpression\n      return true\n    } else if (type[0] === 'M' && type[1] === 'e' && type[2] === 'm') {\n      // Is MemberExpression\n      currentNode = currentNode.object\n    } else {\n      return false\n    }\n  }\n}\n\nfunction formatVariableDeclaration(state, node) {\n  /*\n  Writes into `state` a variable declaration.\n  */\n  const { generator } = state\n  const { declarations } = node\n  state.write(node.kind + ' ')\n  const { length } = declarations\n  if (length > 0) {\n    generator.VariableDeclarator(declarations[0], state)\n    for (let i = 1; i < length; i++) {\n      state.write(', ')\n      generator.VariableDeclarator(declarations[i], state)\n    }\n  }\n}\n\nlet ForInStatement,\n  FunctionDeclaration,\n  RestElement,\n  BinaryExpression,\n  ArrayExpression,\n  BlockStatement\n\nconst GENERATOR = {\n  /*\n  Default generator.\n  */\n  Program(node, state) {\n    const indent = state.indent.repeat(state.indentLevel)\n    const { lineEnd, writeComments } = state\n    if (writeComments && node.comments != null) {\n      formatComments(state, node.comments, indent, lineEnd)\n    }\n    const statements = node.body\n    const { length } = statements\n    for (let i = 0; i < length; i++) {\n      const statement = statements[i]\n      if (writeComments && statement.comments != null) {\n        formatComments(state, statement.comments, indent, lineEnd)\n      }\n      state.write(indent)\n      this[statement.type](statement, state)\n      state.write(lineEnd)\n    }\n    if (writeComments && node.trailingComments != null) {\n      formatComments(state, node.trailingComments, indent, lineEnd)\n    }\n  },\n  BlockStatement: (BlockStatement = function (node, state) {\n    const indent = state.indent.repeat(state.indentLevel++)\n    const { lineEnd, writeComments } = state\n    const statementIndent = indent + state.indent\n    state.write('{')\n    const statements = node.body\n    if (statements != null && statements.length > 0) {\n      state.write(lineEnd)\n      if (writeComments && node.comments != null) {\n        formatComments(state, node.comments, statementIndent, lineEnd)\n      }\n      const { length } = statements\n      for (let i = 0; i < length; i++) {\n        const statement = statements[i]\n        if (writeComments && statement.comments != null) {\n          formatComments(state, statement.comments, statementIndent, lineEnd)\n        }\n        state.write(statementIndent)\n        this[statement.type](statement, state)\n        state.write(lineEnd)\n      }\n      state.write(indent)\n    } else {\n      if (writeComments && node.comments != null) {\n        state.write(lineEnd)\n        formatComments(state, node.comments, statementIndent, lineEnd)\n        state.write(indent)\n      }\n    }\n    if (writeComments && node.trailingComments != null) {\n      formatComments(state, node.trailingComments, statementIndent, lineEnd)\n    }\n    state.write('}')\n    state.indentLevel--\n  }),\n  ClassBody: BlockStatement,\n  StaticBlock(node, state) {\n    state.write('static ')\n    this.BlockStatement(node, state)\n  },\n  EmptyStatement(node, state) {\n    state.write(';')\n  },\n  ExpressionStatement(node, state) {\n    const precedence = state.expressionsPrecedence[node.expression.type]\n    if (\n      precedence === NEEDS_PARENTHESES ||\n      (precedence === 3 && node.expression.left.type[0] === 'O')\n    ) {\n      // Should always have parentheses or is an AssignmentExpression to an ObjectPattern\n      state.write('(')\n      this[node.expression.type](node.expression, state)\n      state.write(')')\n    } else {\n      this[node.expression.type](node.expression, state)\n    }\n    state.write(';')\n  },\n  IfStatement(node, state) {\n    state.write('if (')\n    this[node.test.type](node.test, state)\n    state.write(') ')\n    this[node.consequent.type](node.consequent, state)\n    if (node.alternate != null) {\n      state.write(' else ')\n      this[node.alternate.type](node.alternate, state)\n    }\n  },\n  LabeledStatement(node, state) {\n    this[node.label.type](node.label, state)\n    state.write(': ')\n    this[node.body.type](node.body, state)\n  },\n  BreakStatement(node, state) {\n    state.write('break')\n    if (node.label != null) {\n      state.write(' ')\n      this[node.label.type](node.label, state)\n    }\n    state.write(';')\n  },\n  ContinueStatement(node, state) {\n    state.write('continue')\n    if (node.label != null) {\n      state.write(' ')\n      this[node.label.type](node.label, state)\n    }\n    state.write(';')\n  },\n  WithStatement(node, state) {\n    state.write('with (')\n    this[node.object.type](node.object, state)\n    state.write(') ')\n    this[node.body.type](node.body, state)\n  },\n  SwitchStatement(node, state) {\n    const indent = state.indent.repeat(state.indentLevel++)\n    const { lineEnd, writeComments } = state\n    state.indentLevel++\n    const caseIndent = indent + state.indent\n    const statementIndent = caseIndent + state.indent\n    state.write('switch (')\n    this[node.discriminant.type](node.discriminant, state)\n    state.write(') {' + lineEnd)\n    const { cases: occurences } = node\n    const { length: occurencesCount } = occurences\n    for (let i = 0; i < occurencesCount; i++) {\n      const occurence = occurences[i]\n      if (writeComments && occurence.comments != null) {\n        formatComments(state, occurence.comments, caseIndent, lineEnd)\n      }\n      if (occurence.test) {\n        state.write(caseIndent + 'case ')\n        this[occurence.test.type](occurence.test, state)\n        state.write(':' + lineEnd)\n      } else {\n        state.write(caseIndent + 'default:' + lineEnd)\n      }\n      const { consequent } = occurence\n      const { length: consequentCount } = consequent\n      for (let i = 0; i < consequentCount; i++) {\n        const statement = consequent[i]\n        if (writeComments && statement.comments != null) {\n          formatComments(state, statement.comments, statementIndent, lineEnd)\n        }\n        state.write(statementIndent)\n        this[statement.type](statement, state)\n        state.write(lineEnd)\n      }\n    }\n    state.indentLevel -= 2\n    state.write(indent + '}')\n  },\n  ReturnStatement(node, state) {\n    state.write('return')\n    if (node.argument) {\n      state.write(' ')\n      this[node.argument.type](node.argument, state)\n    }\n    state.write(';')\n  },\n  ThrowStatement(node, state) {\n    state.write('throw ')\n    this[node.argument.type](node.argument, state)\n    state.write(';')\n  },\n  TryStatement(node, state) {\n    state.write('try ')\n    this[node.block.type](node.block, state)\n    if (node.handler) {\n      const { handler } = node\n      if (handler.param == null) {\n        state.write(' catch ')\n      } else {\n        state.write(' catch (')\n        this[handler.param.type](handler.param, state)\n        state.write(') ')\n      }\n      this[handler.body.type](handler.body, state)\n    }\n    if (node.finalizer) {\n      state.write(' finally ')\n      this[node.finalizer.type](node.finalizer, state)\n    }\n  },\n  WhileStatement(node, state) {\n    state.write('while (')\n    this[node.test.type](node.test, state)\n    state.write(') ')\n    this[node.body.type](node.body, state)\n  },\n  DoWhileStatement(node, state) {\n    state.write('do ')\n    this[node.body.type](node.body, state)\n    state.write(' while (')\n    this[node.test.type](node.test, state)\n    state.write(');')\n  },\n  ForStatement(node, state) {\n    state.write('for (')\n    if (node.init != null) {\n      const { init } = node\n      if (init.type[0] === 'V') {\n        formatVariableDeclaration(state, init)\n      } else {\n        this[init.type](init, state)\n      }\n    }\n    state.write('; ')\n    if (node.test) {\n      this[node.test.type](node.test, state)\n    }\n    state.write('; ')\n    if (node.update) {\n      this[node.update.type](node.update, state)\n    }\n    state.write(') ')\n    this[node.body.type](node.body, state)\n  },\n  ForInStatement: (ForInStatement = function (node, state) {\n    state.write(`for ${node.await ? 'await ' : ''}(`)\n    const { left } = node\n    if (left.type[0] === 'V') {\n      formatVariableDeclaration(state, left)\n    } else {\n      this[left.type](left, state)\n    }\n    // Identifying whether node.type is `ForInStatement` or `ForOfStatement`\n    state.write(node.type[3] === 'I' ? ' in ' : ' of ')\n    this[node.right.type](node.right, state)\n    state.write(') ')\n    this[node.body.type](node.body, state)\n  }),\n  ForOfStatement: ForInStatement,\n  DebuggerStatement(node, state) {\n    state.write('debugger;', node)\n  },\n  FunctionDeclaration: (FunctionDeclaration = function (node, state) {\n    state.write(\n      (node.async ? 'async ' : '') +\n        (node.generator ? 'function* ' : 'function ') +\n        (node.id ? node.id.name : ''),\n      node,\n    )\n    formatSequence(state, node.params)\n    state.write(' ')\n    this[node.body.type](node.body, state)\n  }),\n  FunctionExpression: FunctionDeclaration,\n  VariableDeclaration(node, state) {\n    formatVariableDeclaration(state, node)\n    state.write(';')\n  },\n  VariableDeclarator(node, state) {\n    this[node.id.type](node.id, state)\n    if (node.init != null) {\n      state.write(' = ')\n      this[node.init.type](node.init, state)\n    }\n  },\n  ClassDeclaration(node, state) {\n    state.write('class ' + (node.id ? `${node.id.name} ` : ''), node)\n    if (node.superClass) {\n      state.write('extends ')\n      const { superClass } = node\n      const { type } = superClass\n      const precedence = state.expressionsPrecedence[type]\n      if (\n        (type[0] !== 'C' || type[1] !== 'l' || type[5] !== 'E') &&\n        (precedence === NEEDS_PARENTHESES ||\n          precedence < state.expressionsPrecedence.ClassExpression)\n      ) {\n        // Not a ClassExpression that needs parentheses\n        state.write('(')\n        this[node.superClass.type](superClass, state)\n        state.write(')')\n      } else {\n        this[superClass.type](superClass, state)\n      }\n      state.write(' ')\n    }\n    this.ClassBody(node.body, state)\n  },\n  ImportDeclaration(node, state) {\n    state.write('import ')\n    const { specifiers, attributes } = node\n    const { length } = specifiers\n    // TODO: Once babili is fixed, put this after condition\n    // https://github.com/babel/babili/issues/430\n    let i = 0\n    if (length > 0) {\n      for (; i < length; ) {\n        if (i > 0) {\n          state.write(', ')\n        }\n        const specifier = specifiers[i]\n        const type = specifier.type[6]\n        if (type === 'D') {\n          // ImportDefaultSpecifier\n          state.write(specifier.local.name, specifier)\n          i++\n        } else if (type === 'N') {\n          // ImportNamespaceSpecifier\n          state.write('* as ' + specifier.local.name, specifier)\n          i++\n        } else {\n          // ImportSpecifier\n          break\n        }\n      }\n      if (i < length) {\n        state.write('{')\n        for (;;) {\n          const specifier = specifiers[i]\n          const { name } = specifier.imported\n          state.write(name, specifier)\n          if (name !== specifier.local.name) {\n            state.write(' as ' + specifier.local.name)\n          }\n          if (++i < length) {\n            state.write(', ')\n          } else {\n            break\n          }\n        }\n        state.write('}')\n      }\n      state.write(' from ')\n    }\n    this.Literal(node.source, state)\n\n    if (attributes && attributes.length > 0) {\n      state.write(' with { ')\n      for (let i = 0; i < attributes.length; i++) {\n        this.ImportAttribute(attributes[i], state)\n        if (i < attributes.length - 1) state.write(', ')\n      }\n\n      state.write(' }')\n    }\n    state.write(';')\n  },\n  ImportAttribute(node, state) {\n    this.Identifier(node.key, state)\n    state.write(': ')\n    this.Literal(node.value, state)\n  },\n  ImportExpression(node, state) {\n    state.write('import(')\n    this[node.source.type](node.source, state)\n    state.write(')')\n  },\n  ExportDefaultDeclaration(node, state) {\n    state.write('export default ')\n    this[node.declaration.type](node.declaration, state)\n    if (\n      state.expressionsPrecedence[node.declaration.type] != null &&\n      node.declaration.type[0] !== 'F'\n    ) {\n      // All expression nodes except `FunctionExpression`\n      state.write(';')\n    }\n  },\n  ExportNamedDeclaration(node, state) {\n    state.write('export ')\n    if (node.declaration) {\n      this[node.declaration.type](node.declaration, state)\n    } else {\n      state.write('{')\n      const { specifiers } = node,\n        { length } = specifiers\n      if (length > 0) {\n        for (let i = 0; ; ) {\n          const specifier = specifiers[i]\n          const { name } = specifier.local\n          state.write(name, specifier)\n          if (name !== specifier.exported.name) {\n            state.write(' as ' + specifier.exported.name)\n          }\n          if (++i < length) {\n            state.write(', ')\n          } else {\n            break\n          }\n        }\n      }\n      state.write('}')\n      if (node.source) {\n        state.write(' from ')\n        this.Literal(node.source, state)\n      }\n\n      if (node.attributes && node.attributes.length > 0) {\n        state.write(' with { ')\n        for (let i = 0; i < node.attributes.length; i++) {\n          this.ImportAttribute(node.attributes[i], state)\n          if (i < node.attributes.length - 1) state.write(', ')\n        }\n\n        state.write(' }')\n      }\n\n      state.write(';')\n    }\n  },\n  ExportAllDeclaration(node, state) {\n    if (node.exported != null) {\n      state.write('export * as ' + node.exported.name + ' from ')\n    } else {\n      state.write('export * from ')\n    }\n    this.Literal(node.source, state)\n\n    if (node.attributes && node.attributes.length > 0) {\n      state.write(' with { ')\n      for (let i = 0; i < node.attributes.length; i++) {\n        this.ImportAttribute(node.attributes[i], state)\n        if (i < node.attributes.length - 1) state.write(', ')\n      }\n\n      state.write(' }')\n    }\n\n    state.write(';')\n  },\n  MethodDefinition(node, state) {\n    if (node.static) {\n      state.write('static ')\n    }\n    const kind = node.kind[0]\n    if (kind === 'g' || kind === 's') {\n      // Getter or setter\n      state.write(node.kind + ' ')\n    }\n    if (node.value.async) {\n      state.write('async ')\n    }\n    if (node.value.generator) {\n      state.write('*')\n    }\n    if (node.computed) {\n      state.write('[')\n      this[node.key.type](node.key, state)\n      state.write(']')\n    } else {\n      this[node.key.type](node.key, state)\n    }\n    formatSequence(state, node.value.params)\n    state.write(' ')\n    this[node.value.body.type](node.value.body, state)\n  },\n  ClassExpression(node, state) {\n    this.ClassDeclaration(node, state)\n  },\n  ArrowFunctionExpression(node, state) {\n    state.write(node.async ? 'async ' : '', node)\n    const { params } = node\n    if (params != null) {\n      // Omit parenthesis if only one named parameter\n      if (params.length === 1 && params[0].type[0] === 'I') {\n        // If params[0].type[0] starts with 'I', it can't be `ImportDeclaration` nor `IfStatement` and thus is `Identifier`\n        state.write(params[0].name, params[0])\n      } else {\n        formatSequence(state, node.params)\n      }\n    }\n    state.write(' => ')\n    if (node.body.type[0] === 'O') {\n      // Body is an object expression\n      state.write('(')\n      this.ObjectExpression(node.body, state)\n      state.write(')')\n    } else {\n      this[node.body.type](node.body, state)\n    }\n  },\n  ThisExpression(node, state) {\n    state.write('this', node)\n  },\n  Super(node, state) {\n    state.write('super', node)\n  },\n  RestElement: (RestElement = function (node, state) {\n    state.write('...')\n    this[node.argument.type](node.argument, state)\n  }),\n  SpreadElement: RestElement,\n  YieldExpression(node, state) {\n    state.write(node.delegate ? 'yield*' : 'yield')\n    if (node.argument) {\n      state.write(' ')\n      this[node.argument.type](node.argument, state)\n    }\n  },\n  AwaitExpression(node, state) {\n    state.write('await ', node)\n    formatExpression(state, node.argument, node)\n  },\n  TemplateLiteral(node, state) {\n    const { quasis, expressions } = node\n    state.write('`')\n    const { length } = expressions\n    for (let i = 0; i < length; i++) {\n      const expression = expressions[i]\n      const quasi = quasis[i]\n      state.write(quasi.value.raw, quasi)\n      state.write('${')\n      this[expression.type](expression, state)\n      state.write('}')\n    }\n    const quasi = quasis[quasis.length - 1]\n    state.write(quasi.value.raw, quasi)\n    state.write('`')\n  },\n  TemplateElement(node, state) {\n    state.write(node.value.raw, node)\n  },\n  TaggedTemplateExpression(node, state) {\n    formatExpression(state, node.tag, node)\n    this[node.quasi.type](node.quasi, state)\n  },\n  ArrayExpression: (ArrayExpression = function (node, state) {\n    state.write('[')\n    if (node.elements.length > 0) {\n      const { elements } = node,\n        { length } = elements\n      for (let i = 0; ; ) {\n        const element = elements[i]\n        if (element != null) {\n          this[element.type](element, state)\n        }\n        if (++i < length) {\n          state.write(', ')\n        } else {\n          if (element == null) {\n            state.write(', ')\n          }\n          break\n        }\n      }\n    }\n    state.write(']')\n  }),\n  ArrayPattern: ArrayExpression,\n  ObjectExpression(node, state) {\n    const indent = state.indent.repeat(state.indentLevel++)\n    const { lineEnd, writeComments } = state\n    const propertyIndent = indent + state.indent\n    state.write('{')\n    if (node.properties.length > 0) {\n      state.write(lineEnd)\n      if (writeComments && node.comments != null) {\n        formatComments(state, node.comments, propertyIndent, lineEnd)\n      }\n      const comma = ',' + lineEnd\n      const { properties } = node,\n        { length } = properties\n      for (let i = 0; ; ) {\n        const property = properties[i]\n        if (writeComments && property.comments != null) {\n          formatComments(state, property.comments, propertyIndent, lineEnd)\n        }\n        state.write(propertyIndent)\n        this[property.type](property, state)\n        if (++i < length) {\n          state.write(comma)\n        } else {\n          break\n        }\n      }\n      state.write(lineEnd)\n      if (writeComments && node.trailingComments != null) {\n        formatComments(state, node.trailingComments, propertyIndent, lineEnd)\n      }\n      state.write(indent + '}')\n    } else if (writeComments) {\n      if (node.comments != null) {\n        state.write(lineEnd)\n        formatComments(state, node.comments, propertyIndent, lineEnd)\n        if (node.trailingComments != null) {\n          formatComments(state, node.trailingComments, propertyIndent, lineEnd)\n        }\n        state.write(indent + '}')\n      } else if (node.trailingComments != null) {\n        state.write(lineEnd)\n        formatComments(state, node.trailingComments, propertyIndent, lineEnd)\n        state.write(indent + '}')\n      } else {\n        state.write('}')\n      }\n    } else {\n      state.write('}')\n    }\n    state.indentLevel--\n  },\n  Property(node, state) {\n    if (node.method || node.kind[0] !== 'i') {\n      // Either a method or of kind `set` or `get` (not `init`)\n      this.MethodDefinition(node, state)\n    } else {\n      if (!node.shorthand) {\n        if (node.computed) {\n          state.write('[')\n          this[node.key.type](node.key, state)\n          state.write(']')\n        } else {\n          this[node.key.type](node.key, state)\n        }\n        state.write(': ')\n      }\n      this[node.value.type](node.value, state)\n    }\n  },\n  PropertyDefinition(node, state) {\n    if (node.static) {\n      state.write('static ')\n    }\n    if (node.computed) {\n      state.write('[')\n    }\n    this[node.key.type](node.key, state)\n    if (node.computed) {\n      state.write(']')\n    }\n    if (node.value == null) {\n      if (node.key.type[0] !== 'F') {\n        state.write(';')\n      }\n      return\n    }\n    state.write(' = ')\n    this[node.value.type](node.value, state)\n    state.write(';')\n  },\n  ObjectPattern(node, state) {\n    state.write('{')\n    if (node.properties.length > 0) {\n      const { properties } = node,\n        { length } = properties\n      for (let i = 0; ; ) {\n        this[properties[i].type](properties[i], state)\n        if (++i < length) {\n          state.write(', ')\n        } else {\n          break\n        }\n      }\n    }\n    state.write('}')\n  },\n  SequenceExpression(node, state) {\n    formatSequence(state, node.expressions)\n  },\n  UnaryExpression(node, state) {\n    if (node.prefix) {\n      const {\n        operator,\n        argument,\n        argument: { type },\n      } = node\n      state.write(operator)\n      const needsParentheses = expressionNeedsParenthesis(state, argument, node)\n      if (\n        !needsParentheses &&\n        (operator.length > 1 ||\n          (type[0] === 'U' &&\n            (type[1] === 'n' || type[1] === 'p') &&\n            argument.prefix &&\n            argument.operator[0] === operator &&\n            (operator === '+' || operator === '-')))\n      ) {\n        // Large operator or argument is UnaryExpression or UpdateExpression node\n        state.write(' ')\n      }\n      if (needsParentheses) {\n        state.write(operator.length > 1 ? ' (' : '(')\n        this[type](argument, state)\n        state.write(')')\n      } else {\n        this[type](argument, state)\n      }\n    } else {\n      // FIXME: This case never occurs\n      this[node.argument.type](node.argument, state)\n      state.write(node.operator)\n    }\n  },\n  UpdateExpression(node, state) {\n    // Always applied to identifiers or members, no parenthesis check needed\n    if (node.prefix) {\n      state.write(node.operator)\n      this[node.argument.type](node.argument, state)\n    } else {\n      this[node.argument.type](node.argument, state)\n      state.write(node.operator)\n    }\n  },\n  AssignmentExpression(node, state) {\n    this[node.left.type](node.left, state)\n    state.write(' ' + node.operator + ' ')\n    this[node.right.type](node.right, state)\n  },\n  AssignmentPattern(node, state) {\n    this[node.left.type](node.left, state)\n    state.write(' = ')\n    this[node.right.type](node.right, state)\n  },\n  BinaryExpression: (BinaryExpression = function (node, state) {\n    const isIn = node.operator === 'in'\n    if (isIn) {\n      // Avoids confusion in `for` loops initializers\n      state.write('(')\n    }\n    formatExpression(state, node.left, node, false)\n    state.write(' ' + node.operator + ' ')\n    formatExpression(state, node.right, node, true)\n    if (isIn) {\n      state.write(')')\n    }\n  }),\n  LogicalExpression: BinaryExpression,\n  ConditionalExpression(node, state) {\n    const { test } = node\n    const precedence = state.expressionsPrecedence[test.type]\n    if (\n      precedence === NEEDS_PARENTHESES ||\n      precedence <= state.expressionsPrecedence.ConditionalExpression\n    ) {\n      state.write('(')\n      this[test.type](test, state)\n      state.write(')')\n    } else {\n      this[test.type](test, state)\n    }\n    state.write(' ? ')\n    this[node.consequent.type](node.consequent, state)\n    state.write(' : ')\n    this[node.alternate.type](node.alternate, state)\n  },\n  NewExpression(node, state) {\n    state.write('new ')\n    const precedence = state.expressionsPrecedence[node.callee.type]\n    if (\n      precedence === NEEDS_PARENTHESES ||\n      precedence < state.expressionsPrecedence.CallExpression ||\n      hasCallExpression(node.callee)\n    ) {\n      state.write('(')\n      this[node.callee.type](node.callee, state)\n      state.write(')')\n    } else {\n      this[node.callee.type](node.callee, state)\n    }\n    formatSequence(state, node['arguments'])\n  },\n  CallExpression(node, state) {\n    const precedence = state.expressionsPrecedence[node.callee.type]\n    if (\n      precedence === NEEDS_PARENTHESES ||\n      precedence < state.expressionsPrecedence.CallExpression\n    ) {\n      state.write('(')\n      this[node.callee.type](node.callee, state)\n      state.write(')')\n    } else {\n      this[node.callee.type](node.callee, state)\n    }\n    if (node.optional) {\n      state.write('?.')\n    }\n    formatSequence(state, node['arguments'])\n  },\n  ChainExpression(node, state) {\n    this[node.expression.type](node.expression, state)\n  },\n  MemberExpression(node, state) {\n    const precedence = state.expressionsPrecedence[node.object.type]\n    if (\n      precedence === NEEDS_PARENTHESES ||\n      precedence < state.expressionsPrecedence.MemberExpression\n    ) {\n      state.write('(')\n      this[node.object.type](node.object, state)\n      state.write(')')\n    } else {\n      this[node.object.type](node.object, state)\n    }\n    if (node.computed) {\n      if (node.optional) {\n        state.write('?.')\n      }\n      state.write('[')\n      this[node.property.type](node.property, state)\n      state.write(']')\n    } else {\n      if (node.optional) {\n        state.write('?.')\n      } else {\n        state.write('.')\n      }\n      this[node.property.type](node.property, state)\n    }\n  },\n  MetaProperty(node, state) {\n    state.write(node.meta.name + '.' + node.property.name, node)\n  },\n  Identifier(node, state) {\n    state.write(node.name, node)\n  },\n  PrivateIdentifier(node, state) {\n    state.write(`#${node.name}`, node)\n  },\n  Literal(node, state) {\n    if (node.raw != null) {\n      // Non-standard property\n      state.write(node.raw, node)\n    } else if (node.regex != null) {\n      this.RegExpLiteral(node, state)\n    } else if (node.bigint != null) {\n      state.write(node.bigint + 'n', node)\n    } else {\n      state.write(astring_stringify(node.value), node)\n    }\n  },\n  RegExpLiteral(node, state) {\n    const { regex } = node\n    state.write(`/${regex.pattern}/${regex.flags}`, node)\n  },\n}\n\nconst EMPTY_OBJECT = {}\n\n/*\nDEPRECATED: Alternate export of `GENERATOR`.\n*/\nconst baseGenerator = (/* unused pure expression or super */ null && (GENERATOR))\n\nclass astring_State {\n  constructor(options) {\n    const setup = options == null ? EMPTY_OBJECT : options\n    this.output = ''\n    // Functional options\n    if (setup.output != null) {\n      this.output = setup.output\n      this.write = this.writeToStream\n    } else {\n      this.output = ''\n    }\n    this.generator = setup.generator != null ? setup.generator : GENERATOR\n    this.expressionsPrecedence =\n      setup.expressionsPrecedence != null\n        ? setup.expressionsPrecedence\n        : EXPRESSIONS_PRECEDENCE\n    // Formating setup\n    this.indent = setup.indent != null ? setup.indent : '  '\n    this.lineEnd = setup.lineEnd != null ? setup.lineEnd : '\\n'\n    this.indentLevel =\n      setup.startingIndentLevel != null ? setup.startingIndentLevel : 0\n    this.writeComments = setup.comments ? setup.comments : false\n    // Source map\n    if (setup.sourceMap != null) {\n      this.write =\n        setup.output == null ? this.writeAndMap : this.writeToStreamAndMap\n      this.sourceMap = setup.sourceMap\n      this.line = 1\n      this.column = 0\n      this.lineEndSize = this.lineEnd.split('\\n').length - 1\n      this.mapping = {\n        original: null,\n        // Uses the entire state to avoid generating ephemeral objects\n        generated: this,\n        name: undefined,\n        source: setup.sourceMap.file || setup.sourceMap._file,\n      }\n    }\n  }\n\n  write(code) {\n    this.output += code\n  }\n\n  writeToStream(code) {\n    this.output.write(code)\n  }\n\n  writeAndMap(code, node) {\n    this.output += code\n    this.map(code, node)\n  }\n\n  writeToStreamAndMap(code, node) {\n    this.output.write(code)\n    this.map(code, node)\n  }\n\n  map(code, node) {\n    if (node != null) {\n      const { type } = node\n      if (type[0] === 'L' && type[2] === 'n') {\n        // LineComment\n        this.column = 0\n        this.line++\n        return\n      }\n      if (node.loc != null) {\n        const { mapping } = this\n        mapping.original = node.loc.start\n        mapping.name = node.name\n        this.sourceMap.addMapping(mapping)\n      }\n      if (\n        (type[0] === 'T' && type[8] === 'E') ||\n        (type[0] === 'L' && type[1] === 'i' && typeof node.value === 'string')\n      ) {\n        // TemplateElement or Literal string node\n        const { length } = code\n        let { column, line } = this\n        for (let i = 0; i < length; i++) {\n          if (code[i] === '\\n') {\n            column = 0\n            line++\n          } else {\n            column++\n          }\n        }\n        this.column = column\n        this.line = line\n        return\n      }\n    }\n    const { length } = code\n    const { lineEnd } = this\n    if (length > 0) {\n      if (\n        this.lineEndSize > 0 &&\n        (lineEnd.length === 1\n          ? code[length - 1] === lineEnd\n          : code.endsWith(lineEnd))\n      ) {\n        this.line += this.lineEndSize\n        this.column = 0\n      } else {\n        this.column += length\n      }\n    }\n  }\n\n  toString() {\n    return this.output\n  }\n}\n\nfunction generate(node, options) {\n  /*\n  Returns a string representing the rendered code of the provided AST `node`.\n  The `options` are:\n\n  - `indent`: string to use for indentation (defaults to `␣␣`)\n  - `lineEnd`: string to use for line endings (defaults to `\\n`)\n  - `startingIndentLevel`: indent level to start from (defaults to `0`)\n  - `comments`: generate comments if `true` (defaults to `false`)\n  - `output`: output stream to write the rendered code to (defaults to `null`)\n  - `generator`: custom code generator (defaults to `GENERATOR`)\n  - `expressionsPrecedence`: custom map of node types and their precedence level (defaults to `EXPRESSIONS_PRECEDENCE`)\n  */\n  const state = new astring_State(options)\n  // Travel through the AST node and generate the code\n  state.generator[node.type](node, state)\n  return state.output\n}\n\n;// ./node_modules/estree-util-to-js/lib/index.js\n/**\n * @typedef {import('astring').State} State\n * @typedef {import('estree-jsx').Node} Nodes\n * @typedef {import('estree-jsx').Program} Program\n * @typedef {typeof import('source-map').SourceMapGenerator} SourceMapGenerator\n * @typedef {import('source-map').RawSourceMap} Map\n */\n\n/**\n * @typedef {Record<Nodes['type'], Handler>} Generator\n *\n * @callback Handler\n *  Handle a particular node.\n * @param {Generator} this\n *   `astring` generator.\n * @param {any} node\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n *\n * @typedef {Partial<import('astring').Generator>} Handlers\n */\n\n/**\n * @typedef {OptionsWithMaybeMapGenerator} Options\n *   Configuration.\n *\n * @typedef OptionsFieldsBase\n *   Base shared option fields.\n * @property {Handlers | null | undefined} [handlers]\n *   Object mapping node types to functions handling the corresponding nodes.\n *\n * @typedef OptionsFieldsWithoutSourceMapGenerator\n *   Extra option fields where there’s definitely no source map generator.\n * @property {null | undefined} [SourceMapGenerator]\n *   Generate a source map by passing a `SourceMapGenerator` from `source-map`\n *   in; this works if there is positional info on nodes.\n * @property {null | undefined} [filePath]\n *   Path to input file; only used in source map.\n *\n * @typedef OptionsFieldsWithSourceMapGenerator\n *   Extra option fields where there’s definitely a source map generator.\n * @property {SourceMapGenerator} SourceMapGenerator\n *   Generate a source map by passing a `SourceMapGenerator` from `source-map`\n *   in; this works if there is positional info on nodes.\n * @property {string | null | undefined} [filePath]\n *   Path to input file; only used in source map.\n *\n * @typedef OptionsFieldsMaybeSourceMapGenerator\n *   Extra option fields where there may or may not be a source map generator.\n * @property {SourceMapGenerator | null | undefined} [SourceMapGenerator]\n *   Generate a source map by passing a `SourceMapGenerator` from `source-map`\n *   in; this works if there is positional info on nodes.\n * @property {string | null | undefined} [filePath]\n *   Path to input file; only used in source map.\n *\n * @typedef {OptionsFieldsBase & OptionsFieldsWithoutSourceMapGenerator} OptionsWithoutSourceMapGenerator\n *   Options where there’s definitely no source map generator.\n * @typedef {OptionsFieldsBase & OptionsFieldsWithSourceMapGenerator} OptionsWithSourceMapGenerator\n *   Options where there’s definitely a source map generator.\n * @typedef {OptionsFieldsBase & OptionsFieldsMaybeSourceMapGenerator} OptionsWithMaybeMapGenerator\n *   Options where there may or may not be a source map generator.\n *\n * @typedef {ResultWithMaybeSourceMapGenerator} Result\n *   Result.\n *\n * @typedef ResultFieldsBase\n *   Base shared result fields.\n * @property {string} value\n *   Serialized JavaScript.\n *\n * @typedef ResultFieldsWithoutSourceMapGenerator\n *   Extra result fields where there’s definitely no source map generator.\n * @property {undefined} map\n *   Source map as (parsed) JSON, if `SourceMapGenerator` is passed.\n *\n * @typedef ResultFieldsWithSourceMapGenerator\n *   Extra result fields where there’s definitely a source map generator.\n * @property {Map} map\n *   Source map as (parsed) JSON, if `SourceMapGenerator` is not passed.\n *\n * @typedef ResultFieldsMaybeSourceMapGenerator\n *   Extra result fields where there may or may not be a source map generator.\n * @property {Map | undefined} map\n *   Source map as (parsed) JSON, if `SourceMapGenerator` might be passed.\n *\n * @typedef {ResultFieldsBase & ResultFieldsWithoutSourceMapGenerator} ResultWithoutSourceMapGenerator\n *   Result where there’s definitely no source map generator.\n * @typedef {ResultFieldsBase & ResultFieldsWithSourceMapGenerator} ResultWithSourceMapGenerator\n *   Result where there’s definitely a source map generator.\n * @typedef {ResultFieldsBase & ResultFieldsMaybeSourceMapGenerator} ResultWithMaybeSourceMapGenerator\n *   Result where there may or may not be a source map generator.\n */\n\n\n\n/** @type {Options} */\nconst estree_util_to_js_lib_emptyOptions = {}\n\n/**\n * Serialize an estree as JavaScript.\n *\n * @overload\n * @param {Program} tree\n * @param {OptionsWithSourceMapGenerator} options\n * @returns {ResultWithSourceMapGenerator}\n *\n * @overload\n * @param {Program} tree\n * @param {OptionsWithMaybeMapGenerator} options\n * @returns {ResultWithMaybeSourceMapGenerator}\n *\n * @overload\n * @param {Program} tree\n * @param {OptionsWithoutSourceMapGenerator | null | undefined} [options]\n * @returns {ResultWithoutSourceMapGenerator}\n *\n * @param {Program} tree\n *   Estree (esast).\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Result}\n *   Result, optionally with source map.\n */\nfunction toJs(tree, options) {\n  const {SourceMapGenerator, filePath, handlers} = options || estree_util_to_js_lib_emptyOptions\n  const sourceMap = SourceMapGenerator\n    ? new SourceMapGenerator({file: filePath || '<unknown>.js'})\n    : undefined\n\n  const value = generate(\n    tree,\n    // @ts-expect-error: `sourceMap` can be undefined, `astring` types are buggy.\n    {\n      comments: true,\n      generator: {...GENERATOR, ...handlers},\n      sourceMap: sourceMap || undefined\n    }\n  )\n  const map = sourceMap ? sourceMap.toJSON() : undefined\n\n  return {value, map}\n}\n\n;// ./node_modules/recma-stringify/lib/index.js\n/**\n * @import {Program} from 'estree'\n * @import {Options} from 'recma-stringify'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n\n\n/**\n * Plugin to add support for serializing as JavaScript.\n *\n * @this {Processor<undefined, undefined, undefined, Program, string>}\n *   Processor instance.\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction recmaStringify(options) {\n  const self = this\n\n  this.compiler = compiler\n\n  /**\n   * @param {Program} tree\n   *   Tree.\n   * @param {VFile} file\n   *   File.\n   * @returns {string}\n   *   JavaScript.\n   */\n  function compiler(tree, file) {\n    const settings = {...self.data('settings'), ...options}\n    const result = toJs(tree, {\n      SourceMapGenerator: settings.SourceMapGenerator,\n      filePath: file.path || 'unknown.js',\n      handlers: settings.handlers\n    })\n\n    file.map = result.map\n\n    return result.value\n  }\n}\n\n;// ./node_modules/unist-util-position/lib/index.js\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nconst pointEnd = unist_util_position_lib_point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nconst pointStart = unist_util_position_lib_point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n *   Side.\n * @returns\n *   Getter.\n */\nfunction unist_util_position_lib_point(type) {\n  return point\n\n  /**\n   * Get the point info of `node` at a bound side.\n   *\n   * @param {Node | NodeLike | null | undefined} [node]\n   * @returns {Point | undefined}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    if (\n      typeof point.line === 'number' &&\n      point.line > 0 &&\n      typeof point.column === 'number' &&\n      point.column > 0\n    ) {\n      return {\n        line: point.line,\n        column: point.column,\n        offset:\n          typeof point.offset === 'number' && point.offset > -1\n            ? point.offset\n            : undefined\n      }\n    }\n  }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n *   Node.\n * @returns {Position | undefined}\n *   Position.\n */\nfunction unist_util_position_lib_position(node) {\n  const start = pointStart(node)\n  const end = pointEnd(node)\n\n  if (start && end) {\n    return {start, end}\n  }\n}\n\n;// ./node_modules/hast-util-to-estree/lib/handlers/comment.js\n/**\n * @typedef {import('estree').Comment} Comment\n *\n * @typedef {import('estree-jsx').JSXEmptyExpression} JsxEmptyExpression\n * @typedef {import('estree-jsx').JSXExpressionContainer} JsxExpressionContainer\n *\n * @typedef {import('hast').Comment} HastComment\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn a hast comment into an estree node.\n *\n * @param {HastComment} node\n *   hast node to transform.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {JsxExpressionContainer}\n *   estree expression.\n */\nfunction comment_comment(node, state) {\n  /** @type {Comment} */\n  const result = {type: 'Block', value: node.value}\n  state.inherit(node, result)\n  state.comments.push(result)\n\n  /** @type {JsxEmptyExpression} */\n  const expression = {\n    type: 'JSXEmptyExpression',\n    // @ts-expect-error: `comments` is custom.\n    comments: [Object.assign({}, result, {leading: false, trailing: true})]\n  }\n  state.patch(node, expression)\n\n  /** @type {JsxExpressionContainer} */\n  const container = {type: 'JSXExpressionContainer', expression}\n  state.patch(node, container)\n  return container\n}\n\n;// ./node_modules/property-information/lib/hast-to-react.js\n/**\n * `hast` is close to `React`, but differs in a couple of cases.\n *\n * To get a React property from a hast property, check if it is in\n * `hastToReact`, if it is, then use the corresponding value,\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nconst hastToReact = {\n  classId: 'classID',\n  dataType: 'datatype',\n  itemId: 'itemID',\n  strokeDashArray: 'strokeDasharray',\n  strokeDashOffset: 'strokeDashoffset',\n  strokeLineCap: 'strokeLinecap',\n  strokeLineJoin: 'strokeLinejoin',\n  strokeMiterLimit: 'strokeMiterlimit',\n  typeOf: 'typeof',\n  xLinkActuate: 'xlinkActuate',\n  xLinkArcRole: 'xlinkArcrole',\n  xLinkHref: 'xlinkHref',\n  xLinkRole: 'xlinkRole',\n  xLinkShow: 'xlinkShow',\n  xLinkTitle: 'xlinkTitle',\n  xLinkType: 'xlinkType',\n  xmlnsXLink: 'xmlnsXlink'\n}\n\n// EXTERNAL MODULE: ./node_modules/style-to-object/index.js\nvar style_to_object = __webpack_require__(9108);\nvar style_to_object_default = /*#__PURE__*/__webpack_require__.n(style_to_object);\n;// ./node_modules/style-to-object/index.mjs\n\n\n/* harmony default export */ const node_modules_style_to_object = ((style_to_object_default()));\n\n;// ./node_modules/hast-util-to-estree/lib/handlers/element.js\n/**\n * @typedef {import('estree').Property} Property\n *\n * @typedef {import('estree-jsx').JSXAttribute} JsxAttribute\n * @typedef {import('estree-jsx').JSXElement} JsxElement\n * @typedef {import('estree-jsx').JSXSpreadAttribute} JsxSpreadAttribute\n *\n * @typedef {import('hast').Element} HastElement\n *\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Record<string, string>} Style\n */\n\n\n\n\n\n\n\nconst element_own = {}.hasOwnProperty\nconst element_cap = /[A-Z]/g\nconst dashSomething = /-([a-z])/g\n\nconst tableCellElement = new Set(['td', 'th'])\n\n/**\n * Turn a hast element into an estree node.\n *\n * @param {HastElement} node\n *   hast node to transform.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {JsxElement}\n *   estree expression.\n */\n// eslint-disable-next-line complexity\nfunction element_element(node, state) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n  const props = node.properties || {}\n\n  if (parentSchema.space === 'html' && node.tagName.toLowerCase() === 'svg') {\n    schema = property_information_svg\n    state.schema = schema\n  }\n\n  const children = state.all(node)\n\n  /** @type {Array<JsxAttribute | JsxSpreadAttribute>} */\n  const attributes = []\n  /** @type {string} */\n  let prop\n  /** @type {string | undefined} */\n  let alignValue\n  /** @type {Array<Property> | undefined} */\n  let styleProperties\n\n  for (prop in props) {\n    if (element_own.call(props, prop)) {\n      let value = props[prop]\n      const info = find(schema, prop)\n      /** @type {JsxAttribute['value']} */\n      let attributeValue\n\n      // Ignore nullish and `NaN` values.\n      // Ignore `false` and falsey known booleans.\n      if (\n        value === null ||\n        value === undefined ||\n        value === false ||\n        (typeof value === 'number' && Number.isNaN(value)) ||\n        (!value && info.boolean)\n      ) {\n        continue\n      }\n\n      prop =\n        state.elementAttributeNameCase === 'react' && info.space\n          ? hastToReact[info.property] || info.property\n          : info.attribute\n\n      if (Array.isArray(value)) {\n        // Accept `array`.\n        // Most props are space-separated.\n        value = info.commaSeparated ? comma_separated_tokens_stringify(value) : space_separated_tokens_stringify(value)\n      }\n\n      if (prop === 'style') {\n        let styleObject =\n          typeof value === 'object'\n            ? value\n            : parseStyle(String(value), node.tagName)\n\n        if (state.stylePropertyNameCase === 'css') {\n          styleObject = transformStylesToCssCasing(styleObject)\n        }\n\n        /** @type {Array<Property>} */\n        const cssProperties = []\n        /** @type {string} */\n        let cssProp\n\n        for (cssProp in styleObject) {\n          // eslint-disable-next-line max-depth\n          if (element_own.call(styleObject, cssProp)) {\n            cssProperties.push({\n              type: 'Property',\n              method: false,\n              shorthand: false,\n              computed: false,\n              key: lib_name(cssProp)\n                ? {type: 'Identifier', name: cssProp}\n                : {type: 'Literal', value: cssProp},\n              value: {type: 'Literal', value: String(styleObject[cssProp])},\n              kind: 'init'\n            })\n          }\n        }\n\n        styleProperties = cssProperties\n        attributeValue = {\n          type: 'JSXExpressionContainer',\n          expression: {type: 'ObjectExpression', properties: cssProperties}\n        }\n      } else if (value === true) {\n        attributeValue = null\n      } else if (\n        state.tableCellAlignToStyle &&\n        tableCellElement.has(node.tagName) &&\n        prop === 'align'\n      ) {\n        alignValue = String(value)\n        continue\n      } else {\n        attributeValue = {type: 'Literal', value: String(value)}\n      }\n\n      if (lib_name(prop, {jsx: true})) {\n        attributes.push({\n          type: 'JSXAttribute',\n          name: {type: 'JSXIdentifier', name: prop},\n          value: attributeValue\n        })\n      } else {\n        attributes.push({\n          type: 'JSXSpreadAttribute',\n          argument: {\n            type: 'ObjectExpression',\n            properties: [\n              {\n                type: 'Property',\n                method: false,\n                shorthand: false,\n                computed: false,\n                key: {type: 'Literal', value: String(prop)},\n                // @ts-expect-error No need to worry about `style` (which has a\n                // `JSXExpressionContainer` value) because that’s a valid identifier.\n                value: attributeValue || {type: 'Literal', value: true},\n                kind: 'init'\n              }\n            ]\n          }\n        })\n      }\n    }\n  }\n\n  if (alignValue !== undefined) {\n    if (!styleProperties) {\n      styleProperties = []\n      attributes.push({\n        type: 'JSXAttribute',\n        name: {type: 'JSXIdentifier', name: 'style'},\n        value: {\n          type: 'JSXExpressionContainer',\n          expression: {type: 'ObjectExpression', properties: styleProperties}\n        }\n      })\n    }\n\n    const cssProp =\n      state.stylePropertyNameCase === 'css'\n        ? transformStyleToCssCasing('textAlign')\n        : 'textAlign'\n\n    styleProperties.push({\n      type: 'Property',\n      method: false,\n      shorthand: false,\n      computed: false,\n      key: lib_name(cssProp)\n        ? {type: 'Identifier', name: cssProp}\n        : {type: 'Literal', value: cssProp},\n      value: {type: 'Literal', value: alignValue},\n      kind: 'init'\n    })\n  }\n\n  // Restore parent schema.\n  state.schema = parentSchema\n\n  /** @type {JsxElement} */\n  const result = {\n    type: 'JSXElement',\n    openingElement: {\n      type: 'JSXOpeningElement',\n      attributes,\n      name: state.createJsxElementName(node.tagName),\n      selfClosing: children.length === 0\n    },\n    closingElement:\n      children.length > 0\n        ? {\n            type: 'JSXClosingElement',\n            name: state.createJsxElementName(node.tagName)\n          }\n        : null,\n    children\n  }\n  state.inherit(node, result)\n  return result\n}\n\n/**\n * Parse CSS rules as a declaration.\n *\n * @param {string} value\n *   CSS text.\n * @param {string} tagName\n *   Element name.\n * @returns {Style}\n *   Props.\n */\nfunction parseStyle(value, tagName) {\n  /** @type {Style} */\n  const result = {}\n\n  try {\n    node_modules_style_to_object(value, iterator)\n  } catch (error) {\n    const cause = /** @type {Error} */ (error)\n    const exception = new Error(\n      'Could not parse `style` attribute on `' + tagName + '`',\n      {cause}\n    )\n    throw exception\n  }\n\n  return result\n\n  /**\n   * Add `name`, as a CSS prop, to `result`.\n   *\n   * @param {string} name\n   *   Key.\n   * @param {string} value\n   *   Value.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function iterator(name, value) {\n    let key = name\n\n    if (key.slice(0, 2) !== '--') {\n      // See: <https://alanhogan.com/code/vendor-prefixed-css-property-names-in-javascript>\n      if (key.slice(0, 4) === '-ms-') key = 'ms-' + key.slice(4)\n      key = key.replace(dashSomething, toCamel)\n    }\n\n    result[key] = value\n  }\n}\n\n/**\n * Transform a DOM casing style object to a CSS casing style object.\n *\n * @param {Style} domCasing\n * @returns {Style}\n */\nfunction transformStylesToCssCasing(domCasing) {\n  /** @type {Style} */\n  const cssCasing = {}\n  /** @type {string} */\n  let from\n\n  for (from in domCasing) {\n    if (element_own.call(domCasing, from)) {\n      cssCasing[transformStyleToCssCasing(from)] = domCasing[from]\n    }\n  }\n\n  return cssCasing\n}\n\n/**\n * Transform a DOM casing style prop to a CSS casing style prop.\n *\n * @param {string} from\n * @returns {string}\n */\nfunction transformStyleToCssCasing(from) {\n  let to = from.replace(element_cap, toDash)\n  // Handle `ms-xxx` -> `-ms-xxx`.\n  if (to.slice(0, 3) === 'ms-') to = '-' + to\n  return to\n}\n\n/**\n * Make `$1` capitalized.\n *\n * @param {string} _\n *   Whatever.\n * @param {string} $1\n *   Single ASCII alphabetical.\n * @returns {string}\n *   Capitalized `$1`.\n */\nfunction toCamel(_, $1) {\n  return $1.toUpperCase()\n}\n\n/**\n * Make `$0` dash cased.\n *\n * @param {string} $0\n *   Capitalized ASCII leter.\n * @returns {string}\n *   Dash and lower letter.\n */\nfunction toDash($0) {\n  return '-' + $0.toLowerCase()\n}\n\n;// ./node_modules/estree-util-attach-comments/lib/index.js\n/**\n * @typedef {import('estree').Comment} Comment\n * @typedef {import('estree').Node} Nodes\n */\n\n/**\n * @typedef Fields\n *   Fields.\n * @property {boolean} leading\n *   Whether it’s leading.\n * @property {boolean} trailing\n *   Whether it’s trailing.\n *\n * @typedef State\n *   Info passed around.\n * @property {Array<Comment>} comments\n *   Comments.\n * @property {number} index\n *   Index of comment.\n */\n\nconst estree_util_attach_comments_lib_own = {}.hasOwnProperty\n\n/** @type {Array<Comment>} */\nconst emptyComments = []\n\n/**\n * Attach semistandard estree comment nodes to the tree.\n *\n * This mutates the given `tree`.\n * It takes `comments`, walks the tree, and adds comments as close as possible\n * to where they originated.\n *\n * Comment nodes are given two boolean fields: `leading` (`true` for\n * `/* a *\\/ b`) and `trailing` (`true` for `a /* b *\\/`).\n * Both fields are `false` for dangling comments: `[/* a *\\/]`.\n * This is what `recast` uses too, and is somewhat similar to Babel, which is\n * not estree but instead uses `leadingComments`, `trailingComments`, and\n * `innerComments` arrays on nodes.\n *\n * The algorithm checks any node: even recent (or future) proposals or\n * nonstandard syntax such as JSX, because it ducktypes to find nodes instead\n * of having a list of visitor keys.\n *\n * The algorithm supports `loc` fields (line/column), `range` fields (offsets),\n * and direct `start` / `end` fields.\n *\n * @template {Nodes} Tree\n *   Node type.\n * @param {Tree} tree\n *   Tree to attach to.\n * @param {Array<Comment> | null | undefined} [comments]\n *   List of comments (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction attachComments(tree, comments) {\n  const list = comments ? [...comments].sort(compare) : emptyComments\n  if (list.length > 0) lib_walk(tree, {comments: list, index: 0})\n}\n\n/**\n * Attach semistandard estree comment nodes to the tree.\n *\n * @param {Nodes} node\n *   Node.\n * @param {State} state\n *   Info passed around.\n * @returns {undefined}\n *   Nothing.\n */\nfunction lib_walk(node, state) {\n  // Done, we can quit.\n  if (state.index === state.comments.length) {\n    return\n  }\n\n  /** @type {Array<Nodes>} */\n  const children = []\n  /** @type {Array<Comment>} */\n  const comments = []\n  /** @type {string} */\n  let key\n\n  // Find all children of `node`\n  for (key in node) {\n    if (estree_util_attach_comments_lib_own.call(node, key)) {\n      /** @type {Array<Nodes> | Nodes} */\n      // @ts-expect-error: indexable.\n      const value = node[key]\n\n      // Ignore comments.\n      if (value && typeof value === 'object' && key !== 'comments') {\n        if (Array.isArray(value)) {\n          let index = -1\n\n          while (++index < value.length) {\n            if (value[index] && typeof value[index].type === 'string') {\n              children.push(value[index])\n            }\n          }\n        } else if (typeof value.type === 'string') {\n          children.push(value)\n        }\n      }\n    }\n  }\n\n  // Sort the children.\n  children.sort(compare)\n\n  // Initial comments.\n  comments.push(...slice(state, node, false, {leading: true, trailing: false}))\n\n  let index = -1\n\n  while (++index < children.length) {\n    lib_walk(children[index], state)\n  }\n\n  // Dangling or trailing comments.\n  comments.push(\n    ...slice(state, node, true, {\n      leading: false,\n      trailing: children.length > 0\n    })\n  )\n\n  if (comments.length > 0) {\n    // @ts-expect-error, yes, because they’re nonstandard.\n    node.comments = comments\n  }\n}\n\n/**\n * @param {State} state\n *   Info passed around.\n * @param {Nodes} node\n *   Node.\n * @param {boolean} compareEnd\n *   Whether to compare on the end (default is on start).\n * @param {Fields} fields\n *   Fields.\n * @returns {Array<Comment>}\n *   Slice from `state.comments`.\n */\nfunction slice(state, node, compareEnd, fields) {\n  /** @type {Array<Comment>} */\n  const result = []\n\n  while (\n    state.comments[state.index] &&\n    compare(state.comments[state.index], node, compareEnd) < 1\n  ) {\n    result.push(Object.assign({}, state.comments[state.index++], fields))\n  }\n\n  return result\n}\n\n/**\n * Sort two nodes (or comments).\n *\n * @param {Comment | Nodes} left\n *   A node.\n * @param {Comment | Nodes} right\n *   The other node.\n * @param {boolean | undefined} [compareEnd=false]\n *   Compare on `end` of `right`, default is to compare on `start` (default:\n *   `false`).\n * @returns {number}\n *   Sorting.\n */\nfunction compare(left, right, compareEnd) {\n  const field = compareEnd ? 'end' : 'start'\n\n  // Offsets.\n  if (left.range && right.range) {\n    return left.range[0] - right.range[compareEnd ? 1 : 0]\n  }\n\n  // Points.\n  if (left.loc && left.loc.start && right.loc && right.loc[field]) {\n    return (\n      left.loc.start.line - right.loc[field].line ||\n      left.loc.start.column - right.loc[field].column\n    )\n  }\n\n  // Just `start` (and `end`) on nodes.\n  // Default in most parsers.\n  if ('start' in left && field in right) {\n    // @ts-expect-error Added by Acorn\n    return left.start - right[field]\n  }\n\n  return Number.NaN\n}\n\n;// ./node_modules/hast-util-to-estree/lib/handlers/mdx-expression.js\n/**\n * @typedef {import('estree').Expression} Expression\n *\n * @typedef {import('estree-jsx').JSXEmptyExpression} JsxEmptyExpression\n * @typedef {import('estree-jsx').JSXExpressionContainer} JsxExpressionContainer\n *\n * @typedef {import('mdast-util-mdx-expression').MdxFlowExpressionHast} MdxFlowExpression\n * @typedef {import('mdast-util-mdx-expression').MdxTextExpressionHast} MdxTextExpression\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an MDX expression node into an estree node.\n *\n * @param {MdxFlowExpression | MdxTextExpression} node\n *   hast node to transform.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {JsxExpressionContainer}\n *   estree expression.\n */\nfunction mdx_expression_mdxExpression(node, state) {\n  const estree = node.data && node.data.estree\n  const comments = (estree && estree.comments) || []\n  /** @type {Expression | JsxEmptyExpression | undefined} */\n  let expression\n\n  if (estree) {\n    state.comments.push(...comments)\n    attachComments(estree, estree.comments)\n    expression =\n      (estree.body[0] &&\n        estree.body[0].type === 'ExpressionStatement' &&\n        estree.body[0].expression) ||\n      undefined\n  }\n\n  if (!expression) {\n    expression = {type: 'JSXEmptyExpression'}\n    state.patch(node, expression)\n  }\n\n  /** @type {JsxExpressionContainer} */\n  const result = {type: 'JSXExpressionContainer', expression}\n  state.inherit(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-estree/lib/handlers/mdx-jsx-element.js\n/**\n * @typedef {import('estree').Expression} Expression\n *\n * @typedef {import('estree-jsx').JSXAttribute} JsxAttribute\n * @typedef {import('estree-jsx').JSXElement} JsxElement\n * @typedef {import('estree-jsx').JSXFragment} JsxFragment\n * @typedef {import('estree-jsx').JSXSpreadAttribute} JsxSpreadAttribute\n *\n * @typedef {import('mdast-util-mdx-jsx').MdxJsxFlowElementHast} MdxJsxFlowElement\n * @typedef {import('mdast-util-mdx-jsx').MdxJsxTextElementHast} MdxJsxTextElement\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\n/**\n * Turn an MDX JSX element node into an estree node.\n *\n * @param {MdxJsxFlowElement | MdxJsxTextElement} node\n *   hast node to transform.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {JsxElement | JsxFragment}\n *   JSX element or fragment.\n */\n// eslint-disable-next-line complexity\nfunction mdxJsxElement(node, state) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n  const attrs = node.attributes || []\n  let index = -1\n\n  if (\n    node.name &&\n    parentSchema.space === 'html' &&\n    node.name.toLowerCase() === 'svg'\n  ) {\n    schema = property_information_svg\n    state.schema = schema\n  }\n\n  const children = state.all(node)\n  /** @type {Array<JsxAttribute | JsxSpreadAttribute>} */\n  const attributes = []\n\n  while (++index < attrs.length) {\n    const attr = attrs[index]\n    const value = attr.value\n    /** @type {JsxAttribute['value']} */\n    let attributeValue\n\n    if (attr.type === 'mdxJsxAttribute') {\n      if (value === null || value === undefined) {\n        attributeValue = null\n        // Empty.\n      }\n      // `MdxJsxAttributeValueExpression`.\n      else if (typeof value === 'object') {\n        const estree = value.data && value.data.estree\n        const comments = (estree && estree.comments) || []\n        /** @type {Expression | undefined} */\n        let expression\n\n        if (estree) {\n          state.comments.push(...comments)\n          attachComments(estree, estree.comments)\n          // Should exist.\n          /* c8 ignore next 5 */\n          expression =\n            (estree.body[0] &&\n              estree.body[0].type === 'ExpressionStatement' &&\n              estree.body[0].expression) ||\n            undefined\n        }\n\n        attributeValue = {\n          type: 'JSXExpressionContainer',\n          expression: expression || {type: 'JSXEmptyExpression'}\n        }\n        state.inherit(value, attributeValue)\n      }\n      // Anything else.\n      else {\n        attributeValue = {type: 'Literal', value: String(value)}\n      }\n\n      /** @type {JsxAttribute} */\n      const attribute = {\n        type: 'JSXAttribute',\n        name: state.createJsxAttributeName(attr.name),\n        value: attributeValue\n      }\n\n      state.inherit(attr, attribute)\n      attributes.push(attribute)\n    }\n    // MdxJsxExpressionAttribute.\n    else {\n      const estree = attr.data && attr.data.estree\n      const comments = (estree && estree.comments) || []\n      /** @type {JsxSpreadAttribute['argument'] | undefined} */\n      let argumentValue\n\n      if (estree) {\n        state.comments.push(...comments)\n        attachComments(estree, estree.comments)\n        // Should exist.\n        /* c8 ignore next 10 */\n        argumentValue =\n          (estree.body[0] &&\n            estree.body[0].type === 'ExpressionStatement' &&\n            estree.body[0].expression &&\n            estree.body[0].expression.type === 'ObjectExpression' &&\n            estree.body[0].expression.properties &&\n            estree.body[0].expression.properties[0] &&\n            estree.body[0].expression.properties[0].type === 'SpreadElement' &&\n            estree.body[0].expression.properties[0].argument) ||\n          undefined\n      }\n\n      /** @type {JsxSpreadAttribute} */\n      const attribute = {\n        type: 'JSXSpreadAttribute',\n        argument: argumentValue || {type: 'ObjectExpression', properties: []}\n      }\n      state.inherit(attr, attribute)\n      attributes.push(attribute)\n    }\n  }\n\n  // Restore parent schema.\n  state.schema = parentSchema\n\n  /** @type {JsxElement | JsxFragment} */\n  const result = node.name\n    ? {\n        type: 'JSXElement',\n        openingElement: {\n          type: 'JSXOpeningElement',\n          attributes,\n          name: state.createJsxElementName(node.name),\n          selfClosing: children.length === 0\n        },\n        closingElement:\n          children.length > 0\n            ? {\n                type: 'JSXClosingElement',\n                name: state.createJsxElementName(node.name)\n              }\n            : null,\n        children\n      }\n    : {\n        type: 'JSXFragment',\n        openingFragment: {type: 'JSXOpeningFragment'},\n        closingFragment: {type: 'JSXClosingFragment'},\n        children\n      }\n\n  state.inherit(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-estree/lib/handlers/mdxjs-esm.js\n/**\n * @typedef {import('mdast-util-mdxjs-esm').MdxjsEsmHast} MdxjsEsm\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Handle an MDX ESM node.\n *\n * @param {MdxjsEsm} node\n *   hast node to transform.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction mdxjs_esm_mdxjsEsm(node, state) {\n  const estree = node.data && node.data.estree\n  const comments = (estree && estree.comments) || []\n\n  if (estree) {\n    state.comments.push(...comments)\n    attachComments(estree, comments)\n    state.esm.push(...estree.body)\n  }\n}\n\n;// ./node_modules/hast-util-whitespace/lib/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst lib_re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n *   Thing to check (`Node` or `string`).\n * @returns {boolean}\n *   Whether the `value` is inter-element whitespace (`boolean`): consisting of\n *   zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n *   (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n *   whose `value` field is checked.\n */\nfunction whitespace(thing) {\n  return typeof thing === 'object'\n    ? thing.type === 'text'\n      ? lib_empty(thing.value)\n      : false\n    : lib_empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction lib_empty(value) {\n  return value.replace(lib_re, '') === ''\n}\n\n;// ./node_modules/hast-util-to-estree/lib/handlers/root.js\n/**\n * @typedef {import('estree-jsx').JSXFragment} JsxFragment\n *\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {JsxFragment['children'][number]} JsxChild\n */\n\n\n\n/**\n * Turn a hast root node into an estree node.\n *\n * @param {HastRoot} node\n *   hast node to transform.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {JsxFragment}\n *   estree JSX fragment.\n */\nfunction handlers_root_root(node, state) {\n  const children = state.all(node)\n  /** @type {Array<JsxChild>} */\n  const cleanChildren = []\n  let index = -1\n  /** @type {Array<JsxChild> | undefined} */\n  let queue\n\n  // Remove surrounding whitespace nodes from the fragment.\n  while (++index < children.length) {\n    const child = children[index]\n\n    if (\n      child.type === 'JSXExpressionContainer' &&\n      child.expression.type === 'Literal' &&\n      whitespace(String(child.expression.value))\n    ) {\n      if (queue) queue.push(child)\n    } else {\n      if (queue) cleanChildren.push(...queue)\n      cleanChildren.push(child)\n      queue = []\n    }\n  }\n\n  /** @type {JsxFragment} */\n  const result = {\n    type: 'JSXFragment',\n    openingFragment: {type: 'JSXOpeningFragment'},\n    closingFragment: {type: 'JSXClosingFragment'},\n    children: cleanChildren\n  }\n  state.inherit(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-estree/lib/handlers/text.js\n/**\n * @typedef {import('estree').Literal} Literal\n *\n * @typedef {import('estree-jsx').JSXExpressionContainer} JsxExpressionContainer\n *\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn a hast text node into an estree node.\n *\n * @param {HastText} node\n *   hast node to transform.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {JsxExpressionContainer | undefined}\n *   JSX expression.\n */\nfunction handlers_text_text(node, state) {\n  const value = String(node.value || '')\n\n  if (value) {\n    /** @type {Literal} */\n    const result = {type: 'Literal', value}\n    state.inherit(node, result)\n    /** @type {JsxExpressionContainer} */\n    const container = {type: 'JSXExpressionContainer', expression: result}\n    state.patch(node, container)\n    return container\n  }\n}\n\n;// ./node_modules/hast-util-to-estree/lib/handlers/index.js\n\n\n\n\n\n\n\n\nconst handlers = {\n  comment: comment_comment,\n  doctype: ignore,\n  element: element_element,\n  mdxFlowExpression: mdx_expression_mdxExpression,\n  mdxJsxFlowElement: mdxJsxElement,\n  mdxJsxTextElement: mdxJsxElement,\n  mdxTextExpression: mdx_expression_mdxExpression,\n  mdxjsEsm: mdxjs_esm_mdxjsEsm,\n  root: handlers_root_root,\n  text: handlers_text_text\n}\n\n/**\n * Handle a node that is ignored.\n *\n * @returns {undefined}\n *   Nothing.\n */\nfunction ignore() {}\n\n;// ./node_modules/hast-util-to-estree/lib/state.js\n/**\n * @typedef {import('estree').Comment} Comment\n * @typedef {import('estree').Directive} Directive\n * @typedef {import('estree').ModuleDeclaration} ModuleDeclaration\n * @typedef {import('estree').Node} EstreeNode\n * @typedef {import('estree').Statement} Statement\n *\n * @typedef {import('estree-jsx').JSXAttribute} JsxAttribute\n * @typedef {import('estree-jsx').JSXElement} JsxElement\n * @typedef {import('estree-jsx').JSXIdentifier} JsxIdentifier\n * @typedef {import('estree-jsx').JSXMemberExpression} JsxMemberExpression\n * @typedef {import('estree-jsx').JSXNamespacedName} JsxNamespacedName\n *\n * @typedef {import('mdast-util-mdx-jsx').MdxJsxAttribute} MdxJsxAttribute\n * @typedef {import('mdast-util-mdx-jsx').MdxJsxAttributeValueExpression} MdxJsxAttributeValueExpression\n * @typedef {import('mdast-util-mdx-jsx').MdxJsxExpressionAttribute} MdxJsxExpressionAttribute\n *\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Parents} HastParents\n *\n * @typedef {import('property-information').Schema} Schema\n */\n\n/**\n * @typedef {JsxElement['openingElement']['name']} JsxElementName\n * @typedef {JsxAttribute['name']} JsxAttributeName\n * @typedef {JsxElement['children'][number]} JsxChild\n */\n\n/**\n * @typedef {'html' | 'react'} ElementAttributeNameCase\n *   Specify casing to use for attribute names.\n *\n *   HTML casing is for example `class`, `stroke-linecap`, `xml:lang`.\n *   React casing is for example `className`, `strokeLinecap`, `xmlLang`.\n *\n * @callback Handle\n *   Turn a hast node into an estree node.\n * @param {any} node\n *   Expected hast node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {JsxChild | null | undefined}\n *   estree node.\n *\n * @typedef Options\n *   Configuration.\n * @property {ElementAttributeNameCase | null | undefined} [elementAttributeNameCase='react']\n *   Specify casing to use for attribute names (default: `'react'`).\n *\n *   This casing is used for hast elements, not for embedded MDX JSX nodes\n *   (components that someone authored manually).\n * @property {Record<string, Handle | null | undefined> | null | undefined} [handlers={}]\n *   Custom handlers (optional).\n * @property {Space | null | undefined} [space='html']\n *   Which space the document is in (default: `'html'`).\n *\n *   When an `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it.\n * @property {StylePropertyNameCase | null | undefined} [stylePropertyNameCase='dom']\n *   Specify casing to use for property names in `style` objects (default: `'dom'`).\n *\n *   This casing is used for hast elements, not for embedded MDX JSX nodes\n *   (components that someone authored manually).\n * @property {boolean | null | undefined} [tableCellAlignToStyle=true]\n *   Turn obsolete `align` props on `td` and `th` into CSS `style` props\n *   (default: `true`).\n *\n * @typedef {'html' | 'svg'} Space\n *   Namespace.\n *\n * @typedef {'css' | 'dom'} StylePropertyNameCase\n *   Casing to use for property names in `style` objects.\n *\n *   CSS casing is for example `background-color` and `-webkit-line-clamp`.\n *   DOM casing is for example `backgroundColor` and `WebkitLineClamp`.\n *\n * @typedef State\n *   Info passed around about the current state.\n * @property {(parent: HastParents) => Array<JsxChild>} all\n *   Transform children of a hast parent to estree.\n * @property {Array<Comment>} comments\n *   List of estree comments.\n * @property {(name: string) => JsxAttributeName} createJsxAttributeName\n *   Create a JSX attribute name.\n * @property {(name: string) => JsxElementName} createJsxElementName\n *   Create a JSX element name.\n * @property {ElementAttributeNameCase} elementAttributeNameCase\n *   Casing to use for attribute names.\n * @property {Array<Directive | ModuleDeclaration | Statement>} esm\n *   List of top-level estree nodes.\n * @property {(node: any) => JsxChild | null | undefined} handle\n *   Transform a hast node to estree.\n * @property {(from: HastNodes | MdxJsxAttribute | MdxJsxAttributeValueExpression | MdxJsxExpressionAttribute, to: Comment | EstreeNode) => undefined} inherit\n *   Take positional info and data from `from` (use `patch` if you don’t want data).\n * @property {(from: HastNodes, to: Comment | EstreeNode) => undefined} patch\n *   Take positional info from `from` (use `inherit` if you also want data).\n * @property {Schema} schema\n *   Current schema.\n * @property {StylePropertyNameCase} stylePropertyNameCase\n *   Casing to use for property names in `style` objects.\n * @property {boolean} tableCellAlignToStyle\n *   Turn obsolete `align` props on `td` and `th` into CSS `style` props.\n */\n\n\n\n\n\n\n\nconst state_own = {}.hasOwnProperty\n\n// `react-dom` triggers a warning for *any* white space in tables.\n// To follow GFM, `mdast-util-to-hast` injects line endings between elements.\n// Other tools might do so too, but they don’t do here, so we remove all of\n// that.\n//\n// See: <https://github.com/facebook/react/pull/7081>.\n// See: <https://github.com/facebook/react/pull/7515>.\n// See: <https://github.com/remarkjs/remark-react/issues/64>.\n// See: <https://github.com/rehypejs/rehype-react/pull/29>.\n// See: <https://github.com/rehypejs/rehype-react/pull/32>.\n// See: <https://github.com/rehypejs/rehype-react/pull/45>.\n// See: <https://github.com/mdx-js/mdx/issues/2000>\nconst tableElements = new Set(['table', 'tbody', 'thead', 'tfoot', 'tr'])\n\n/**\n * Create a state from options.\n *\n * @param {Options} options\n *   Configuration.\n * @returns {State}\n *   Info passed around about the current state.\n */\n\nfunction createState(options) {\n  /** @type {Handle} */\n  const one = zwitch('type', {\n    invalid: state_invalid,\n    unknown: state_unknown,\n    handlers: {...handlers, ...options.handlers}\n  })\n\n  return {\n    // Current space.\n    elementAttributeNameCase: options.elementAttributeNameCase || 'react',\n    schema: options.space === 'svg' ? property_information_svg : property_information_html,\n    stylePropertyNameCase: options.stylePropertyNameCase || 'dom',\n    tableCellAlignToStyle: options.tableCellAlignToStyle !== false,\n    // Results.\n    comments: [],\n    esm: [],\n    // Useful functions.\n    all: state_all,\n    createJsxAttributeName,\n    createJsxElementName,\n    handle,\n    inherit,\n    patch: state_patch\n  }\n\n  /**\n   * @this {State}\n   * @param {any} node\n   * @returns {JsxChild | null | undefined}\n   */\n  function handle(node) {\n    return one(node, this)\n  }\n}\n\n/**\n * Crash on an invalid value.\n *\n * @param {unknown} value\n *   Non-node.\n * @returns {never}\n *   Nothing (crashes).\n */\nfunction state_invalid(value) {\n  throw new Error('Cannot handle value `' + value + '`, expected node')\n}\n\n/**\n * Crash on an unknown node.\n *\n * @param {unknown} node\n *   Unknown node.\n * @returns {never}\n *   Nothing (crashes).\n */\nfunction state_unknown(node) {\n  default_ok(node && typeof node === 'object')\n  default_ok('type' in node)\n  throw new Error('Cannot handle unknown node `' + node.type + '`')\n}\n\n/**\n * @this {State} state\n *   Info passed around about the current state.\n * @param {HastParents} parent\n *   hast node whose children to transform.\n * @returns {Array<JsxChild>}\n *   estree nodes.\n */\nfunction state_all(parent) {\n  const children = parent.children || []\n  let index = -1\n  /** @type {Array<JsxChild>} */\n  const results = []\n  const ignoreLineBreak =\n    this.schema.space === 'html' &&\n    parent.type === 'element' &&\n    tableElements.has(parent.tagName.toLowerCase())\n\n  while (++index < children.length) {\n    const child = children[index]\n\n    if (ignoreLineBreak && child.type === 'text' && child.value === '\\n') {\n      continue\n    }\n\n    const result = this.handle(child)\n\n    if (Array.isArray(result)) {\n      results.push(...result)\n    } else if (result) {\n      results.push(result)\n    }\n  }\n\n  return results\n}\n\n/**\n * Take positional info and data from `hast`.\n *\n * Use `patch` if you don’t want data.\n *\n * @param {HastNodes | MdxJsxAttribute | MdxJsxAttributeValueExpression | MdxJsxExpressionAttribute} from\n *   hast node to take positional info and data from.\n * @param {Comment | EstreeNode} to\n *   estree node to add positional info and data to.\n * @returns {undefined}\n *   Nothing.\n */\nfunction inherit(from, to) {\n  const left = /** @type {Record<string, unknown> | undefined} */ (from.data)\n  /** @type {Record<string, unknown> | undefined} */\n  let right\n  /** @type {string} */\n  let key\n\n  state_patch(from, to)\n\n  if (left) {\n    for (key in left) {\n      if (state_own.call(left, key) && key !== 'estree') {\n        if (!right) right = {}\n        right[key] = left[key]\n      }\n    }\n\n    if (right) {\n      // @ts-expect-error `esast` extension.\n      to.data = right\n    }\n  }\n}\n\n/**\n * Take positional info from `from`.\n *\n * Use `inherit` if you also want data.\n *\n * @param {HastNodes | MdxJsxAttribute | MdxJsxAttributeValueExpression | MdxJsxExpressionAttribute} from\n *   hast node to take positional info from.\n * @param {Comment | EstreeNode} to\n *   estree node to add positional info to.\n * @returns {undefined}\n *   Nothing.\n */\nfunction state_patch(from, to) {\n  const p = unist_util_position_lib_position(from)\n\n  if (p && p.start.offset !== undefined && p.end.offset !== undefined) {\n    // @ts-expect-error acorn-style.\n    to.start = p.start.offset\n    // @ts-expect-error acorn-style.\n    to.end = p.end.offset\n    to.loc = {\n      start: {line: p.start.line, column: p.start.column - 1},\n      end: {line: p.end.line, column: p.end.column - 1}\n    }\n    to.range = [p.start.offset, p.end.offset]\n  }\n}\n\n/**\n * Create a JSX attribute name.\n *\n * @param {string} name\n * @returns {JsxAttributeName}\n */\nfunction createJsxAttributeName(name) {\n  const node = createJsxNameFromString(name)\n\n  // MDX never generates this.\n  /* c8 ignore next 3 */\n  if (node.type === 'JSXMemberExpression') {\n    throw new Error('Member expressions in attribute names are not supported')\n  }\n\n  return node\n}\n\n/**\n * Create a JSX element name.\n *\n * @param {string} name\n * @returns {JsxElementName}\n */\nfunction createJsxElementName(name) {\n  return createJsxNameFromString(name)\n}\n\n/**\n * Create a JSX name from a string.\n *\n * @param {string} name\n *   Name.\n * @returns {JsxIdentifier | JsxMemberExpression | JsxNamespacedName}\n *   Node.\n */\nfunction createJsxNameFromString(name) {\n  if (name.includes('.')) {\n    const names = name.split('.')\n    let part = names.shift()\n    default_ok(part, 'Expected `part` to be defined')\n    /** @type {JsxIdentifier | JsxMemberExpression} */\n    let node = {type: 'JSXIdentifier', name: part}\n\n    while ((part = names.shift())) {\n      node = {\n        type: 'JSXMemberExpression',\n        object: node,\n        property: {type: 'JSXIdentifier', name: part}\n      }\n    }\n\n    return node\n  }\n\n  if (name.includes(':')) {\n    const parts = name.split(':')\n    return {\n      type: 'JSXNamespacedName',\n      namespace: {type: 'JSXIdentifier', name: parts[0]},\n      name: {type: 'JSXIdentifier', name: parts[1]}\n    }\n  }\n\n  return {type: 'JSXIdentifier', name}\n}\n\n;// ./node_modules/hast-util-to-estree/lib/index.js\n/**\n * Register MDX nodes in tree:\n *\n * @typedef {import('mdast-util-mdx-expression')}\n * @typedef {import('mdast-util-mdx-jsx')}\n * @typedef {import('mdast-util-mdxjs-esm')}\n */\n\n/**\n * @typedef {import('estree').ExpressionStatement} ExpressionStatement\n * @typedef {import('estree').Program} Program\n *\n * @typedef {import('hast').Nodes} HastNodes\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n\n\n/**\n * Transform a hast tree (with embedded MDX nodes) into an estree.\n *\n * ##### Notes\n *\n * ###### Comments\n *\n * Comments are attached to the tree in their neighbouring nodes (`recast`,\n * `babel` style) and also added as a `comments` array on the program node\n * (`espree` style).\n * You may have to do `program.comments = undefined` for certain compilers.\n *\n * ###### Frameworks\n *\n * There are differences between what JSX frameworks accept, such as whether they\n * accept `class` or `className`, or `background-color` or `backgroundColor`.\n *\n * For JSX components written in MDX, the author has to be aware of this\n * difference and write code accordingly.\n * For hast elements transformed by this project, this will be handled through\n * options.\n *\n * | Framework | `elementAttributeNameCase` | `stylePropertyNameCase` |\n * | --------- | -------------------------- | ----------------------- |\n * | Preact    | `'html'`                   | `'dom'`                 |\n * | React     | `'react'`                  | `'dom'`                 |\n * | Solid     | `'html'`                   | `'css'`                 |\n * | Vue       | `'html'`                   | `'dom'`                 |\n *\n * @param {HastNodes} tree\n *   hast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Program}\n *   estree program node.\n *\n *   The program’s last child in `body` is most likely an `ExpressionStatement`,\n *   whose expression is a `JSXFragment` or a `JSXElement`.\n *\n *   Typically, there is only one node in `body`, however, this utility also\n *   supports embedded MDX nodes in the HTML (when `mdast-util-mdx` is used\n *   with mdast to parse markdown before passing its nodes through to hast).\n *   When MDX ESM import/exports are used, those nodes are added before the\n *   fragment or element in body.\n *\n *   There aren’t many great estree serializers out there that support JSX.\n *   To do that, you can use `estree-util-to-js`.\n *   Or, use `estree-util-build-jsx` to turn JSX into function calls, and then\n *   serialize with whatever (`astring`, `escodegen`).\n */\nfunction toEstree(tree, options) {\n  const state = createState(options || {})\n  let result = state.handle(tree)\n  const body = state.esm\n\n  if (result) {\n    if (result.type !== 'JSXFragment' && result.type !== 'JSXElement') {\n      result = {\n        type: 'JSXFragment',\n        openingFragment: {type: 'JSXOpeningFragment'},\n        closingFragment: {type: 'JSXClosingFragment'},\n        children: [result]\n      }\n      state.patch(tree, result)\n    }\n\n    /** @type {ExpressionStatement} */\n    // @ts-expect-error: `estree` types don’t allow JSX.\n    const statement = {type: 'ExpressionStatement', expression: result}\n    state.patch(tree, statement)\n    body.push(statement)\n  }\n\n  /** @type {Program} */\n  const program = {\n    type: 'Program',\n    body,\n    sourceType: 'module',\n    comments: state.comments\n  }\n  state.patch(tree, program)\n  return program\n}\n\n;// ./node_modules/rehype-recma/lib/index.js\n/**\n * @import {Root} from 'hast'\n * @import {Program} from 'estree'\n * @import {Options} from 'rehype-recma'\n */\n\n\n\n/**\n * Plugin to transform HTML (hast) to JS (estree).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nfunction rehypeRecma(options) {\n  /**\n   * @param {Root} tree\n   *   Tree (hast).\n   * @returns {Program}\n   *   Program (esast).\n   */\n  return function (tree) {\n    return toEstree(tree, options)\n  }\n}\n\n;// ./node_modules/@ungap/structured-clone/esm/types.js\nconst VOID       = -1;\nconst PRIMITIVE  = 0;\nconst ARRAY      = 1;\nconst OBJECT     = 2;\nconst DATE       = 3;\nconst REGEXP     = 4;\nconst MAP        = 5;\nconst SET        = 6;\nconst ERROR      = 7;\nconst BIGINT     = 8;\n// export const SYMBOL = 9;\n\n;// ./node_modules/@ungap/structured-clone/esm/deserialize.js\n\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst deserializer = ($, _) => {\n  const as = (out, index) => {\n    $.set(index, out);\n    return out;\n  };\n\n  const unpair = index => {\n    if ($.has(index))\n      return $.get(index);\n\n    const [type, value] = _[index];\n    switch (type) {\n      case PRIMITIVE:\n      case VOID:\n        return as(value, index);\n      case ARRAY: {\n        const arr = as([], index);\n        for (const index of value)\n          arr.push(unpair(index));\n        return arr;\n      }\n      case OBJECT: {\n        const object = as({}, index);\n        for (const [key, index] of value)\n          object[unpair(key)] = unpair(index);\n        return object;\n      }\n      case DATE:\n        return as(new Date(value), index);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as(new RegExp(source, flags), index);\n      }\n      case MAP: {\n        const map = as(new Map, index);\n        for (const [key, index] of value)\n          map.set(unpair(key), unpair(index));\n        return map;\n      }\n      case SET: {\n        const set = as(new Set, index);\n        for (const index of value)\n          set.add(unpair(index));\n        return set;\n      }\n      case ERROR: {\n        const {name, message} = value;\n        return as(new env[name](message), index);\n      }\n      case BIGINT:\n        return as(BigInt(value), index);\n      case 'BigInt':\n        return as(Object(BigInt(value)), index);\n    }\n    return as(new env[type](value), index);\n  };\n\n  return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nconst deserialize = serialized => deserializer(new Map, serialized)(0);\n\n;// ./node_modules/@ungap/structured-clone/esm/serialize.js\n\n\nconst EMPTY = '';\n\nconst {toString: serialize_toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n  const type = typeof value;\n  if (type !== 'object' || !value)\n    return [PRIMITIVE, type];\n\n  const asString = serialize_toString.call(value).slice(8, -1);\n  switch (asString) {\n    case 'Array':\n      return [ARRAY, EMPTY];\n    case 'Object':\n      return [OBJECT, EMPTY];\n    case 'Date':\n      return [DATE, EMPTY];\n    case 'RegExp':\n      return [REGEXP, EMPTY];\n    case 'Map':\n      return [MAP, EMPTY];\n    case 'Set':\n      return [SET, EMPTY];\n  }\n\n  if (asString.includes('Array'))\n    return [ARRAY, asString];\n\n  if (asString.includes('Error'))\n    return [ERROR, asString];\n\n  return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n  TYPE === PRIMITIVE &&\n  (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n  const as = (out, value) => {\n    const index = _.push(out) - 1;\n    $.set(value, index);\n    return index;\n  };\n\n  const pair = value => {\n    if ($.has(value))\n      return $.get(value);\n\n    let [TYPE, type] = typeOf(value);\n    switch (TYPE) {\n      case PRIMITIVE: {\n        let entry = value;\n        switch (type) {\n          case 'bigint':\n            TYPE = BIGINT;\n            entry = value.toString();\n            break;\n          case 'function':\n          case 'symbol':\n            if (strict)\n              throw new TypeError('unable to serialize ' + type);\n            entry = null;\n            break;\n          case 'undefined':\n            return as([VOID], value);\n        }\n        return as([TYPE, entry], value);\n      }\n      case ARRAY: {\n        if (type)\n          return as([type, [...value]], value);\n  \n        const arr = [];\n        const index = as([TYPE, arr], value);\n        for (const entry of value)\n          arr.push(pair(entry));\n        return index;\n      }\n      case OBJECT: {\n        if (type) {\n          switch (type) {\n            case 'BigInt':\n              return as([type, value.toString()], value);\n            case 'Boolean':\n            case 'Number':\n            case 'String':\n              return as([type, value.valueOf()], value);\n          }\n        }\n\n        if (json && ('toJSON' in value))\n          return pair(value.toJSON());\n\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const key of keys(value)) {\n          if (strict || !shouldSkip(typeOf(value[key])))\n            entries.push([pair(key), pair(value[key])]);\n        }\n        return index;\n      }\n      case DATE:\n        return as([TYPE, value.toISOString()], value);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as([TYPE, {source, flags}], value);\n      }\n      case MAP: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const [key, entry] of value) {\n          if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n            entries.push([pair(key), pair(entry)]);\n        }\n        return index;\n      }\n      case SET: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const entry of value) {\n          if (strict || !shouldSkip(typeOf(entry)))\n            entries.push(pair(entry));\n        }\n        return index;\n      }\n    }\n\n    const {message} = value;\n    return as([TYPE, {name: type, message}], value);\n  };\n\n  return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n *  if `true`, will not throw errors on incompatible types, and behave more\n *  like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n const serialize_serialize = (value, {json, lossy} = {}) => {\n  const _ = [];\n  return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n\n;// ./node_modules/@ungap/structured-clone/esm/index.js\n\n\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\n/* harmony default export */ const esm = (typeof structuredClone === \"function\" ?\n  /* c8 ignore start */\n  (any, options) => (\n    options && ('json' in options || 'lossy' in options) ?\n      deserialize(serialize_serialize(any, options)) : structuredClone(any)\n  ) :\n  (any, options) => deserialize(serialize_serialize(any, options)));\n  /* c8 ignore stop */\n\n\n\n;// ./node_modules/micromark-util-sanitize-uri/index.js\n\n\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n *   URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n *   Allowed protocols.\n * @returns {string}\n *   Sanitized URI.\n */\nfunction sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || ''))\n  if (!protocol) {\n    return value\n  }\n  const colon = value.indexOf(':')\n  const questionMark = value.indexOf('?')\n  const numberSign = value.indexOf('#')\n  const slash = value.indexOf('/')\n  if (\n    // If there is no protocol, it’s relative.\n    colon < 0 ||\n    // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n    (slash > -1 && colon > slash) ||\n    (questionMark > -1 && colon > questionMark) ||\n    (numberSign > -1 && colon > numberSign) ||\n    // It is a protocol, it should be allowed.\n    protocol.test(value.slice(0, colon))\n  ) {\n    return value\n  }\n  return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n *   URI to normalize.\n * @returns {string}\n *   Normalized URI.\n */\nfunction normalizeUri(value) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n  let start = 0\n  let skip = 0\n  while (++index < value.length) {\n    const code = value.charCodeAt(index)\n    /** @type {string} */\n    let replace = ''\n\n    // A correct percent encoded value.\n    if (\n      code === 37 &&\n      asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n      asciiAlphanumeric(value.charCodeAt(index + 2))\n    ) {\n      skip = 2\n    }\n    // ASCII.\n    else if (code < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n        replace = String.fromCharCode(code)\n      }\n    }\n    // Astral.\n    else if (code > 55_295 && code < 57_344) {\n      const next = value.charCodeAt(index + 1)\n\n      // A correct surrogate pair.\n      if (code < 56_320 && next > 56_319 && next < 57_344) {\n        replace = String.fromCharCode(code, next)\n        skip = 1\n      }\n      // Lone surrogate.\n      else {\n        replace = '\\uFFFD'\n      }\n    }\n    // Unicode.\n    else {\n      replace = String.fromCharCode(code)\n    }\n    if (replace) {\n      result.push(value.slice(start, index), encodeURIComponent(replace))\n      start = index + skip + 1\n      replace = ''\n    }\n    if (skip) {\n      index += skip\n      skip = 0\n    }\n  }\n  return result.join('') + value.slice(start)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/footer.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n *   Generate content for the backreference dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n *   Content for the backreference when linking back from definitions to their\n *   reference.\n *\n * @callback FootnoteBackLabelTemplate\n *   Generate a back label dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Back label to use when linking back from definitions to their reference.\n */\n\n\n\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n *   Content.\n */\nfunction defaultFootnoteBackContent(_, rereferenceIndex) {\n  /** @type {Array<ElementContent>} */\n  const result = [{type: 'text', value: '↩'}]\n\n  if (rereferenceIndex > 1) {\n    result.push({\n      type: 'element',\n      tagName: 'sup',\n      properties: {},\n      children: [{type: 'text', value: String(rereferenceIndex)}]\n    })\n  }\n\n  return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Label.\n */\nfunction defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n  return (\n    'Back to reference ' +\n    (referenceIndex + 1) +\n    (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n  )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nfunction footer(state) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const footnoteBackContent =\n    state.options.footnoteBackContent || defaultFootnoteBackContent\n  const footnoteBackLabel =\n    state.options.footnoteBackLabel || defaultFootnoteBackLabel\n  const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n  const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n  const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n  let referenceIndex = -1\n\n  while (++referenceIndex < state.footnoteOrder.length) {\n    const def = state.footnoteById.get(state.footnoteOrder[referenceIndex])\n\n    if (!def) {\n      continue\n    }\n\n    const content = state.all(def)\n    const id = String(def.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let rereferenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n    const counts = state.footnoteCounts.get(id)\n\n    // eslint-disable-next-line no-unmodified-loop-condition\n    while (counts !== undefined && ++rereferenceIndex <= counts) {\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      let children =\n        typeof footnoteBackContent === 'string'\n          ? footnoteBackContent\n          : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n      if (typeof children === 'string') {\n        children = {type: 'text', value: children}\n      }\n\n      backReferences.push({\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            clobberPrefix +\n            'fnref-' +\n            safeId +\n            (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n          dataFootnoteBackref: '',\n          ariaLabel:\n            typeof footnoteBackLabel === 'string'\n              ? footnoteBackLabel\n              : footnoteBackLabel(referenceIndex, rereferenceIndex),\n          className: ['data-footnote-backref']\n        },\n        children: Array.isArray(children) ? children : [children]\n      })\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(def, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: footnoteLabelTagName,\n        properties: {\n          ...esm(footnoteLabelProperties),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Blockquote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction blockquote_blockquote(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'blockquote',\n    properties: {},\n    children: state.wrap(state.all(node), true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/break.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Break} node\n *   mdast node.\n * @returns {Array<Element | Text>}\n *   hast element content.\n */\nfunction break_hardBreak(state, node) {\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n  state.patch(node, result)\n  return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/code.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Code} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction code_code(state, node) {\n  const value = node.value ? node.value + '\\n' : ''\n  /** @type {Properties} */\n  const properties = {}\n\n  if (node.lang) {\n    properties.className = ['language-' + node.lang]\n  }\n\n  // Create `<code>`.\n  /** @type {Element} */\n  let result = {\n    type: 'element',\n    tagName: 'code',\n    properties,\n    children: [{type: 'text', value}]\n  }\n\n  if (node.meta) {\n    result.data = {meta: node.meta}\n  }\n\n  state.patch(node, result)\n  result = state.applyData(node, result)\n\n  // Create `<pre>`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/delete.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction emphasis_emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction footnote_reference_footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/heading.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction heading_heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/html.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Html} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nfunction handlers_html_html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/revert.js\n/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Reference} Reference\n *\n * @typedef {import('./state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Extract<Nodes, Reference>} node\n *   Reference node (image, link).\n * @returns {Array<ElementContent>}\n *   hast content.\n */\nfunction revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return [{type: 'text', value: '![' + node.alt + suffix}]\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nfunction image_reference_imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/image.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction handlers_image_image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction inline_code_inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nfunction link_reference_linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const def = state.definitionById.get(id)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/link.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction handlers_link_link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/list-item.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nfunction list_item_listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array<ElementContent>} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === null || spread === undefined\n    ? node.children.length > 1\n    : spread\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/list.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction handlers_list_list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction paragraph_paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/root.js\n/**\n * @typedef {import('hast').Parents} HastParents\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nfunction lib_handlers_root_root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/strong.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction strong_strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/table.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array<Element>} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/table-row.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nfunction tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array<ElementContent>} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/table-cell.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/trim-lines/index.js\nconst tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nfunction trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/text.js\n/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nfunction lib_handlers_text_text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n// Make VS Code show references to the above types.\n''\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nfunction handlers_thematic_break_thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/handlers/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {import('../state.js').Handlers}\n */\nconst handlers_handlers = {\n  blockquote: blockquote_blockquote,\n  break: break_hardBreak,\n  code: code_code,\n  delete: strikethrough,\n  emphasis: emphasis_emphasis,\n  footnoteReference: footnote_reference_footnoteReference,\n  heading: heading_heading,\n  html: handlers_html_html,\n  imageReference: image_reference_imageReference,\n  image: handlers_image_image,\n  inlineCode: inline_code_inlineCode,\n  linkReference: link_reference_linkReference,\n  link: handlers_link_link,\n  listItem: list_item_listItem,\n  list: handlers_list_list,\n  paragraph: paragraph_paragraph,\n  // @ts-expect-error: root is different, but hard to type.\n  root: lib_handlers_root_root,\n  strong: strong_strong,\n  table: table,\n  tableCell: tableCell,\n  tableRow: tableRow,\n  text: lib_handlers_text_text,\n  thematicBreak: handlers_thematic_break_thematicBreak,\n  toml: handlers_ignore,\n  yaml: handlers_ignore,\n  definition: handlers_ignore,\n  footnoteDefinition: handlers_ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction handlers_ignore() {\n  return undefined\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/state.js\n/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').RootContent} HastRootContent\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n *\n * @typedef {import('vfile').VFile} VFile\n *\n * @typedef {import('./footer.js').FootnoteBackContentTemplate} FootnoteBackContentTemplate\n * @typedef {import('./footer.js').FootnoteBackLabelTemplate} FootnoteBackLabelTemplate\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   <p id=\"x\"></p>\n *   <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n *   ```\n *\n *   The above example shows that elements are made available by browsers, by\n *   their ID, on the `window` object.\n *   This is a security risk because you might be expecting some other variable\n *   at that place.\n *   It can also break polyfills.\n *   Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n *   Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n *   Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackContent(_, rereferenceIndex) {\n *     const result = [{type: 'text', value: '↩'}]\n *\n *     if (rereferenceIndex > 1) {\n *       result.push({\n *         type: 'element',\n *         tagName: 'sup',\n *         properties: {},\n *         children: [{type: 'text', value: String(rereferenceIndex)}]\n *       })\n *     }\n *\n *     return result\n *   }\n *   ```\n *\n *   This content is used in the `a` element of each backreference (the `↩`\n *   links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n *   Label to describe the backreference back to references (default:\n *   `defaultFootnoteBackLabel`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n *    return (\n *      'Back to reference ' +\n *      (referenceIndex + 1) +\n *      (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n *    )\n *   }\n *   ```\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is used in the `ariaLabel` property on each backreference\n *   (the `↩` links).\n *   It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (default: `{className:\n *   ['sr-only']}`).\n *\n *   Change it to show the label and add other properties.\n *\n *   This label is typically hidden visually (assuming an `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass an empty string.\n *   You can also add different properties.\n *\n *   > 👉 **Note**: `id: 'footnote-label'` is always added, because footnote\n *   > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n *   Change it to match your document structure.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed)\n *   (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes (optional).\n *\n * @typedef State\n *   Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n *   Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n *   Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n *   Transform an mdast node to hast.\n * @property {Options} options\n *   Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n *   Copy a node’s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\n\n\n\n\n\nconst lib_state_own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst state_emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {State}\n *   `state` function.\n */\nfunction state_createState(tree, options) {\n  const settings = options || state_emptyOptions\n  /** @type {Map<string, MdastDefinition>} */\n  const definitionById = new Map()\n  /** @type {Map<string, MdastFootnoteDefinition>} */\n  const footnoteById = new Map()\n  /** @type {Map<string, number>} */\n  const footnoteCounts = new Map()\n  /** @type {Handlers} */\n  // @ts-expect-error: the root handler returns a root.\n  // Hard to type.\n  const handlers = {...handlers_handlers, ...settings.handlers}\n\n  /** @type {State} */\n  const state = {\n    all,\n    applyData,\n    definitionById,\n    footnoteById,\n    footnoteCounts,\n    footnoteOrder: [],\n    handlers,\n    one,\n    options: settings,\n    patch: lib_state_patch,\n    wrap: state_wrap\n  }\n\n  visit(tree, function (node) {\n    if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n      const map = node.type === 'definition' ? definitionById : footnoteById\n      const id = String(node.identifier).toUpperCase()\n\n      // Mimick CM behavior of link definitions.\n      // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n      if (!map.has(id)) {\n        // @ts-expect-error: node type matches map.\n        map.set(id, node)\n      }\n    }\n  })\n\n  return state\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {Array<HastElementContent> | HastElementContent | undefined}\n   *   Resulting hast node.\n   */\n  function one(node, parent) {\n    const type = node.type\n    const handle = state.handlers[type]\n\n    if (lib_state_own.call(state.handlers, type) && handle) {\n      return handle(state, node, parent)\n    }\n\n    if (state.options.passThrough && state.options.passThrough.includes(type)) {\n      if ('children' in node) {\n        const {children, ...shallow} = node\n        const result = esm(shallow)\n        // @ts-expect-error: TS doesn’t understand…\n        result.children = state.all(node)\n        // @ts-expect-error: TS doesn’t understand…\n        return result\n      }\n\n      // @ts-expect-error: it’s custom.\n      return esm(node)\n    }\n\n    const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n    return unknown(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array<HastElementContent>}\n   *   Resulting hast nodes.\n   */\n  function all(parent) {\n    /** @type {Array<HastElementContent>} */\n    const values = []\n\n    if ('children' in parent) {\n      const nodes = parent.children\n      let index = -1\n      while (++index < nodes.length) {\n        const result = state.one(nodes[index], parent)\n\n        // To do: see if we van clean this? Can we merge texts?\n        if (result) {\n          if (index && nodes[index - 1].type === 'break') {\n            if (!Array.isArray(result) && result.type === 'text') {\n              result.value = trimMarkdownSpaceStart(result.value)\n            }\n\n            if (!Array.isArray(result) && result.type === 'element') {\n              const head = result.children[0]\n\n              if (head && head.type === 'text') {\n                head.value = trimMarkdownSpaceStart(head.value)\n              }\n            }\n          }\n\n          if (Array.isArray(result)) {\n            values.push(...result)\n          } else {\n            values.push(result)\n          }\n        }\n      }\n    }\n\n    return values\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {undefined}\n *   Nothing.\n */\nfunction lib_state_patch(from, to) {\n  if (from.position) to.position = unist_util_position_lib_position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {HastElement | Type}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {HastElement | Type} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent of `hName` is to create an element, but likely also to keep\n      // the content around (otherwise: pass `hChildren`).\n      else {\n        /** @type {Array<HastElementContent>} */\n        // @ts-expect-error: assume no doctypes in `root`.\n        const children = 'children' in result ? result.children : [result]\n        result = {type: 'element', tagName: hName, properties: {}, children}\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      Object.assign(result.properties, esm(hProperties))\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastElement | HastText}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastElement | HastText} */\n  const result =\n    'value' in node &&\n    !(lib_state_own.call(data, 'hProperties') || lib_state_own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: state.all(node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n *   Node type.\n * @param {Array<Type>} nodes\n *   List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n *   Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n *   Wrapped nodes.\n */\nfunction state_wrap(nodes, loose) {\n  /** @type {Array<HastText | Type>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n  let index = 0\n  let code = value.charCodeAt(index)\n\n  while (code === 9 || code === 32) {\n    index++\n    code = value.charCodeAt(index)\n  }\n\n  return value.slice(index)\n}\n\n;// ./node_modules/mdast-util-to-hast/lib/index.js\n/**\n * @typedef {import('hast').Nodes} HastNodes\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('./state.js').Options} Options\n */\n\n\n\n\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn’t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n *   mdast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {HastNodes}\n *   hast tree.\n */\nfunction toHast(tree, options) {\n  const state = state_createState(tree, options)\n  const node = state.one(tree, undefined)\n  const foot = footer(state)\n  /** @type {HastNodes} */\n  const result = Array.isArray(node)\n    ? {type: 'root', children: node}\n    : node || {type: 'root', children: []}\n\n  if (foot) {\n    // If there’s a footer, there were definitions, meaning block\n    // content.\n    // So `result` is a parent node.\n    default_ok('children' in result)\n    result.children.push({type: 'text', value: '\\n'}, foot)\n  }\n\n  return result\n}\n\n;// ./node_modules/remark-rehype/lib/index.js\n// Include `data` fields in mdast and `raw` nodes in hast.\n/// <reference types=\"mdast-util-to-hast\" />\n\n/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit<ToHastOptions, 'file'>} Options\n *\n * @callback TransformBridge\n *   Bridge-mode.\n *\n *   Runs the destination with the new hast tree.\n *   Discards result.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {Promise<undefined>}\n *   Nothing.\n *\n * @callback TransformMutate\n *  Mutate-mode.\n *\n *  Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {HastRoot}\n *   Tree (hast).\n */\n\n\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * *   if a processor is given, runs the (rehype) plugins used on it with a\n *     hast tree, then discards the result (*bridge mode*)\n * *   otherwise, returns a hast tree, the plugins used after `remarkRehype`\n *     are rehype plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don’t:\n *\n * *   `rehype-stringify` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful if\n *     you completely trust authors\n * *   `rehype-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only way\n *     to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn’t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n *   Processor or configuration (optional).\n * @param {Readonly<Options> | null | undefined} [options]\n *   When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n *   Transform.\n */\nfunction remarkRehype(destination, options) {\n  if (destination && 'run' in destination) {\n    /**\n     * @type {TransformBridge}\n     */\n    return async function (tree, file) {\n      // Cast because root in -> root out.\n      const hastTree = /** @type {HastRoot} */ (\n        toHast(tree, {file, ...options})\n      )\n      await destination.run(hastTree, file)\n    }\n  }\n\n  /**\n   * @type {TransformMutate}\n   */\n  return function (tree, file) {\n    // Cast because root in -> root out.\n    // To do: in the future, disallow ` || options` fallback.\n    // With `unified-engine`, `destination` can be `undefined` but\n    // `options` will be the file set.\n    // We should not pass that as `options`.\n    return /** @type {HastRoot} */ (\n      toHast(tree, {file, ...(destination || options)})\n    )\n  }\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/util/estree-util-create.js\n/**\n * @import {Node} from 'estree-jsx'\n */\n\n// Fix to show references to above types in VS Code.\n''\n\n/**\n * @param {Readonly<Node>} from\n *   Node to take from.\n * @param {Node} to\n *   Node to add to.\n * @returns {undefined}\n *   Nothing.\n */\nfunction estree_util_create_create(from, to) {\n  /** @type {Array<keyof Node>} */\n  const fields = ['start', 'end', 'loc', 'range']\n  let index = -1\n\n  while (++index < fields.length) {\n    const field = fields[index]\n\n    if (field in from) {\n      // @ts-expect-error: assume they’re settable.\n      to[field] = from[field]\n    }\n  }\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/util/estree-util-specifiers-to-declarations.js\n/**\n * @import {\n      AssignmentProperty,\n      ExportSpecifier,\n      Expression,\n      Identifier,\n      ImportDefaultSpecifier,\n      ImportNamespaceSpecifier,\n      ImportSpecifier,\n      Literal,\n      VariableDeclarator\n * } from 'estree-jsx'\n */\n\n\n\n\n/**\n * @param {ReadonlyArray<Readonly<ExportSpecifier> | Readonly<ImportDefaultSpecifier> | Readonly<ImportNamespaceSpecifier> | Readonly<ImportSpecifier>>} specifiers\n *   Specifiers.\n * @param {Readonly<Expression>} init\n *   Initializer.\n * @returns {Array<VariableDeclarator>}\n *   Declarations.\n */\nfunction specifiersToDeclarations(specifiers, init) {\n  let index = -1\n  /** @type {Array<VariableDeclarator>} */\n  const declarations = []\n  /** @type {Array<ExportSpecifier | ImportDefaultSpecifier | ImportSpecifier>} */\n  const otherSpecifiers = []\n  // Can only be one according to JS syntax.\n  /** @type {ImportNamespaceSpecifier | undefined} */\n  let importNamespaceSpecifier\n\n  while (++index < specifiers.length) {\n    const specifier = specifiers[index]\n\n    if (specifier.type === 'ImportNamespaceSpecifier') {\n      importNamespaceSpecifier = specifier\n    } else {\n      otherSpecifiers.push(specifier)\n    }\n  }\n\n  if (importNamespaceSpecifier) {\n    /** @type {VariableDeclarator} */\n    const declarator = {\n      type: 'VariableDeclarator',\n      id: importNamespaceSpecifier.local,\n      init\n    }\n    estree_util_create_create(importNamespaceSpecifier, declarator)\n    declarations.push(declarator)\n  }\n\n  declarations.push({\n    type: 'VariableDeclarator',\n    id: {\n      type: 'ObjectPattern',\n      properties: otherSpecifiers.map(function (specifier) {\n        /** @type {Identifier | Literal} */\n        let key =\n          specifier.type === 'ImportSpecifier'\n            ? specifier.imported\n            : specifier.type === 'ExportSpecifier'\n              ? specifier.exported\n              : {type: 'Identifier', name: 'default'}\n        let value = specifier.local\n\n        // Switch them around if we’re exporting.\n        if (specifier.type === 'ExportSpecifier') {\n          value = key\n          key = specifier.local\n        }\n\n        // To do: what to do about literals?\n        // `const { a: 'b' } = c()` does not work?\n        default_ok(value.type === 'Identifier')\n\n        /** @type {AssignmentProperty} */\n        const property = {\n          type: 'Property',\n          kind: 'init',\n          shorthand:\n            key.type === 'Identifier' &&\n            value.type === 'Identifier' &&\n            key.name === value.name,\n          method: false,\n          computed: false,\n          key,\n          value\n        }\n        estree_util_create_create(specifier, property)\n        return property\n      })\n    },\n    init: importNamespaceSpecifier\n      ? {type: 'Identifier', name: importNamespaceSpecifier.local.name}\n      : init\n  })\n\n  return declarations\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/util/estree-util-to-id-or-member-expression.js\n/**\n * @import {\n      Identifier,\n      JSXIdentifier,\n      JSXMemberExpression,\n      Literal,\n      MemberExpression\n * } from 'estree-jsx'\n */\n\n\n\n\n/**\n * @param {ReadonlyArray<number | string>} ids\n *   Identifiers (example: `['list', 0]).\n * @returns {Identifier | MemberExpression}\n *   Identifier or member expression.\n */\nfunction toIdOrMemberExpression(ids) {\n  let index = -1\n  /** @type {Identifier | Literal | MemberExpression | undefined} */\n  let object\n\n  while (++index < ids.length) {\n    const name = ids[index]\n    /** @type {Identifier | Literal} */\n    const id =\n      typeof name === 'string' && lib_name(name)\n        ? {type: 'Identifier', name}\n        : {type: 'Literal', value: name}\n    object = object\n      ? {\n          type: 'MemberExpression',\n          object,\n          property: id,\n          computed: id.type === 'Literal',\n          optional: false\n        }\n      : id\n  }\n\n  default_ok(object, 'expected non-empty `ids` to be passed')\n  default_ok(object.type !== 'Literal', 'expected identifier as left-most value')\n  return object\n}\n\n/**\n * @param {ReadonlyArray<number | string>} ids\n *   Identifiers (example: `['list', 0]).\n * @returns {JSXIdentifier | JSXMemberExpression}\n *   Identifier or member expression.\n */\nfunction toJsxIdOrMemberExpression(ids) {\n  let index = -1\n  /** @type {JSXIdentifier | JSXMemberExpression | undefined} */\n  let object\n\n  while (++index < ids.length) {\n    const name = ids[index]\n    default_ok(\n      typeof name === 'string' && lib_name(name, {jsx: true}),\n      'expected valid jsx identifier, not `' + name + '`'\n    )\n\n    /** @type {JSXIdentifier} */\n    const id = {type: 'JSXIdentifier', name}\n    object = object ? {type: 'JSXMemberExpression', object, property: id} : id\n  }\n\n  default_ok(object, 'expected non-empty `ids` to be passed')\n  return object\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/plugin/recma-build-jsx-transform.js\n/**\n * @import {Program} from 'estree-jsx'\n */\n\n/**\n * @typedef Options\n *   Configuration for internal plugin `recma-build-jsx-transform`.\n * @property {'function-body' | 'program' | null | undefined} [outputFormat='program']\n *   Whether to keep the import of the automatic runtime or get it from\n *   `arguments[0]` instead (default: `'program'`).\n */\n\n\n\n\n/**\n * Plugin to change the tree after compiling JSX away.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nfunction recmaBuildJsxTransform(options) {\n  /* c8 ignore next -- always given in `@mdx-js/mdx` */\n  const {outputFormat} = options || {}\n\n  /**\n   * @param {Program} tree\n   *   Tree.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree) {\n    // Remove the pragma comment that we injected ourselves as it is no longer\n    // needed.\n    if (tree.comments) {\n      tree.comments = tree.comments.filter(function (d) {\n        return !d.data?._mdxIsPragmaComment\n      })\n    }\n\n    // When compiling to a function body, replace the import that was just\n    // generated, and get `jsx`, `jsxs`, and `Fragment` from `arguments[0]`\n    // instead.\n    if (outputFormat === 'function-body') {\n      let index = 0\n\n      // Skip directives: JS currently only has `use strict`, but Acorn allows\n      // arbitrary ones.\n      // Practically things like `use client` could be used?\n      while (index < tree.body.length) {\n        const child = tree.body[index]\n        if ('directive' in child && child.directive) {\n          index++\n        } else {\n          break\n        }\n      }\n\n      const declaration = tree.body[index]\n\n      if (\n        declaration &&\n        declaration.type === 'ImportDeclaration' &&\n        typeof declaration.source.value === 'string' &&\n        /\\/jsx-(dev-)?runtime$/.test(declaration.source.value)\n      ) {\n        tree.body[index] = {\n          type: 'VariableDeclaration',\n          kind: 'const',\n          declarations: specifiersToDeclarations(\n            declaration.specifiers,\n            toIdOrMemberExpression(['arguments', 0])\n          )\n        }\n      }\n    }\n  }\n}\n\n;// ./node_modules/estree-util-scope/lib/index.js\n/**\n * @import {Node, Pattern} from 'estree'\n * @import {Scope, Visitors} from './types.js'\n */\n\n\n\n/**\n * Create state to track what’s defined.\n *\n * @returns {Visitors}\n *   State.\n */\nfunction createVisitors() {\n  /** @type {[topLevel: Scope, ...rest: Array<Scope>]} */\n  const scopes = [{block: false, defined: []}]\n\n  return {enter, exit, scopes}\n\n  /**\n   * @param {Node} node\n   *   Node.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function enter(node) {\n    // On arrow functions, create scope, add parameters.\n    if (node.type === 'ArrowFunctionExpression') {\n      scopes.push({block: false, defined: []})\n\n      for (const parameter of node.params) {\n        definePattern(parameter, false)\n      }\n    }\n    // On block statements, create scope.\n    // Not sure why `periscopic` only does `Block`/`For`/`ForIn`/`ForOf`.\n    // I added `DoWhile`/`While` here just to be sure.\n    else if (\n      node.type === 'BlockStatement' ||\n      node.type === 'DoWhileStatement' ||\n      node.type === 'ForInStatement' ||\n      node.type === 'ForOfStatement' ||\n      node.type === 'ForStatement' ||\n      node.type === 'WhileStatement'\n    ) {\n      scopes.push({block: true, defined: []})\n    }\n\n    // On catch clauses, create scope, add param.\n    else if (node.type === 'CatchClause') {\n      scopes.push({block: true, defined: []})\n      if (node.param) definePattern(node.param, true)\n    }\n\n    // Add identifier of class declaration.\n    else if (node.type === 'ClassDeclaration') {\n      defineIdentifier(node.id.name, false)\n    }\n\n    // On function declarations, add name, create scope, add parameters.\n    else if (node.type === 'FunctionDeclaration') {\n      defineIdentifier(node.id.name, false)\n      scopes.push({block: false, defined: []})\n\n      for (const parameter of node.params) {\n        definePattern(parameter, false)\n      }\n    }\n\n    // On function expressions, add name, create scope, add parameters.\n    else if (node.type === 'FunctionExpression') {\n      if (node.id) defineIdentifier(node.id.name, false)\n      scopes.push({block: false, defined: []})\n\n      for (const parameter of node.params) {\n        definePattern(parameter, false)\n      }\n    }\n\n    // Add specifiers of import declarations.\n    else if (node.type === 'ImportDeclaration') {\n      for (const specifier of node.specifiers) {\n        defineIdentifier(specifier.local.name, false)\n      }\n    }\n\n    // Add patterns of variable declarations.\n    else if (node.type === 'VariableDeclaration') {\n      for (const declaration of node.declarations) {\n        definePattern(declaration.id, node.kind !== 'var')\n      }\n    }\n  }\n\n  /**\n   * @param {Node} node\n   *   Node.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function exit(node) {\n    if (\n      node.type === 'ArrowFunctionExpression' ||\n      node.type === 'FunctionDeclaration' ||\n      node.type === 'FunctionExpression'\n    ) {\n      const scope = scopes.pop()\n      default_ok(scope, 'expected scope')\n      default_ok(!scope.block, 'expected non-block')\n    } else if (\n      node.type === 'BlockStatement' ||\n      node.type === 'CatchClause' ||\n      node.type === 'DoWhileStatement' ||\n      node.type === 'ForInStatement' ||\n      node.type === 'ForOfStatement' ||\n      node.type === 'ForStatement' ||\n      node.type === 'WhileStatement'\n    ) {\n      const scope = scopes.pop()\n      default_ok(scope, 'expected scope')\n      default_ok(scope.block, 'expected block')\n    }\n  }\n\n  /**\n   * Define an identifier in a scope.\n   *\n   * @param {string} id\n   * @param {boolean} block\n   * @returns {undefined}\n   */\n  function defineIdentifier(id, block) {\n    let index = scopes.length\n    /** @type {Scope | undefined} */\n    let scope\n\n    while (index--) {\n      scope = scopes[index]\n\n      if (block || !scope.block) {\n        break\n      }\n    }\n\n    default_ok(scope)\n    scope.defined.push(id)\n  }\n\n  /**\n   * Define a pattern in a scope.\n   *\n   * @param {Pattern} pattern\n   * @param {boolean} block\n   */\n  function definePattern(pattern, block) {\n    // `[, x]`\n    if (pattern.type === 'ArrayPattern') {\n      for (const element of pattern.elements) {\n        if (element) {\n          definePattern(element, block)\n        }\n      }\n    }\n\n    // `{x=y}`\n    else if (pattern.type === 'AssignmentPattern') {\n      definePattern(pattern.left, block)\n    }\n\n    // `x`\n    else if (pattern.type === 'Identifier') {\n      defineIdentifier(pattern.name, block)\n    }\n\n    // `{x}`\n    else if (pattern.type === 'ObjectPattern') {\n      for (const property of pattern.properties) {\n        // `{key}`, `{key = value}`, `{key: value}`\n        if (property.type === 'Property') {\n          definePattern(property.value, block)\n        }\n        // `{...x}`\n        else {\n          default_ok(property.type === 'RestElement')\n          definePattern(property, block)\n        }\n      }\n    }\n\n    // `...x`\n    else {\n      default_ok(pattern.type === 'RestElement')\n      definePattern(pattern.argument, block)\n    }\n  }\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/util/estree-util-declaration-to-expression.js\n/**\n * @import {\n      Declaration,\n      Expression,\n      MaybeNamedClassDeclaration,\n      MaybeNamedFunctionDeclaration\n * } from 'estree-jsx'\n */\n\n\n\n/**\n * Turn a declaration into an expression.\n *\n * Doesn’t work for variable declarations, but that’s fine for our use case\n * because currently we’re using this utility for export default declarations,\n * which can’t contain variable declarations.\n *\n * @param {Readonly<Declaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration>} declaration\n *   Declaration.\n * @returns {Expression}\n *   Expression.\n */\nfunction declarationToExpression(declaration) {\n  if (declaration.type === 'FunctionDeclaration') {\n    return {...declaration, type: 'FunctionExpression'}\n  }\n\n  // This is currently an internal utility so the next shouldn’t happen or a\n  // maintainer is making a mistake.\n  default_ok(declaration.type === 'ClassDeclaration', 'unexpected node type')\n  return {...declaration, type: 'ClassExpression'}\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/util/estree-util-is-declaration.js\n/**\n * @import {\n      Declaration,\n      MaybeNamedClassDeclaration,\n      MaybeNamedFunctionDeclaration,\n      Node\n * } from 'estree-jsx'\n */\n\n// Fix to show references to above types in VS Code.\n''\n\n/**\n * Check if `node` is a declaration.\n *\n * @param {Readonly<MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration | Node>} node\n *   Node to check.\n * @returns {node is Declaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration}\n *   Whether `node` is a declaration.\n */\nfunction isDeclaration(node) {\n  return Boolean(\n    node.type === 'FunctionDeclaration' ||\n      node.type === 'ClassDeclaration' ||\n      node.type === 'VariableDeclaration'\n  )\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/plugin/recma-document.js\n/**\n * @import {\n      CallExpression,\n      Directive,\n      ExportAllDeclaration,\n      ExportDefaultDeclaration,\n      ExportNamedDeclaration,\n      ExportSpecifier,\n      Expression,\n      FunctionDeclaration,\n      Identifier,\n      ImportDeclaration,\n      ImportDefaultSpecifier,\n      ImportExpression,\n      ImportSpecifier,\n      JSXElement,\n      JSXFragment,\n      Literal,\n      ModuleDeclaration,\n      Node,\n      Program,\n      Property,\n      SimpleLiteral,\n      SpreadElement,\n      Statement,\n      VariableDeclarator\n * } from 'estree-jsx'\n * @import {VFile} from 'vfile'\n * @import {ProcessorOptions} from '../core.js'\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Wrap the estree in `MDXContent`.\n *\n * @param {Readonly<ProcessorOptions>} options\n *   Configuration.\n * @returns\n *   Transform.\n */\nfunction recmaDocument(options) {\n  const baseUrl = options.baseUrl || undefined\n  const baseHref = typeof baseUrl === 'object' ? baseUrl.href : baseUrl\n  const outputFormat = options.outputFormat || 'program'\n  const pragma =\n    options.pragma === undefined ? 'React.createElement' : options.pragma\n  const pragmaFrag =\n    options.pragmaFrag === undefined ? 'React.Fragment' : options.pragmaFrag\n  const pragmaImportSource = options.pragmaImportSource || 'react'\n  const jsxImportSource = options.jsxImportSource || 'react'\n  const jsxRuntime = options.jsxRuntime || 'automatic'\n\n  /**\n   * @param {Program} tree\n   *   Tree.\n   * @param {VFile} file\n   *   File.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree, file) {\n    /** @type {Array<[string, string] | string>} */\n    const exportedValues = []\n    /** @type {Array<Directive | ModuleDeclaration | Statement>} */\n    const replacement = []\n    let exportAllCount = 0\n    /** @type {ExportDefaultDeclaration | ExportSpecifier | undefined} */\n    let layout\n    /** @type {boolean | undefined} */\n    let content\n    /** @type {Node} */\n    let child\n\n    if (jsxRuntime === 'classic' && pragmaFrag) {\n      injectPragma(tree, '@jsxFrag', pragmaFrag)\n    }\n\n    if (jsxRuntime === 'classic' && pragma) {\n      injectPragma(tree, '@jsx', pragma)\n    }\n\n    if (jsxRuntime === 'automatic' && jsxImportSource) {\n      injectPragma(tree, '@jsxImportSource', jsxImportSource)\n    }\n\n    if (jsxRuntime) {\n      injectPragma(tree, '@jsxRuntime', jsxRuntime)\n    }\n\n    if (jsxRuntime === 'classic' && pragmaImportSource) {\n      if (!pragma) {\n        throw new Error(\n          'Missing `pragma` in classic runtime with `pragmaImportSource`'\n        )\n      }\n\n      handleEsm({\n        type: 'ImportDeclaration',\n        specifiers: [\n          {\n            type: 'ImportDefaultSpecifier',\n            local: {type: 'Identifier', name: pragma.split('.')[0]}\n          }\n        ],\n        attributes: [],\n        source: {type: 'Literal', value: pragmaImportSource}\n      })\n    }\n\n    // Find the `export default`, the JSX expression, and leave the rest\n    // (import/exports) as they are.\n    for (child of tree.body) {\n      // ```tsx\n      // export default properties => <>{properties.children}</>\n      // ```\n      //\n      // Treat it as an inline layout declaration.\n      if (child.type === 'ExportDefaultDeclaration') {\n        if (layout) {\n          file.fail(\n            'Unexpected duplicate layout, expected a single layout (previous: ' +\n              stringifyPosition(positionFromEstree(layout)) +\n              ')',\n            {\n              ancestors: [tree, child],\n              place: positionFromEstree(child),\n              ruleId: 'duplicate-layout',\n              source: 'recma-document'\n            }\n          )\n        }\n\n        layout = child\n        replacement.push({\n          type: 'VariableDeclaration',\n          kind: 'const',\n          declarations: [\n            {\n              type: 'VariableDeclarator',\n              id: {type: 'Identifier', name: 'MDXLayout'},\n              init: isDeclaration(child.declaration)\n                ? declarationToExpression(child.declaration)\n                : child.declaration\n            }\n          ]\n        })\n      }\n      // ```tsx\n      // export {a, b as c} from 'd'\n      // ```\n      else if (child.type === 'ExportNamedDeclaration' && child.source) {\n        // Cast because always simple.\n        const source = /** @type {SimpleLiteral} */ (child.source)\n\n        // Remove `default` or `as default`, but not `default as`, specifier.\n        child.specifiers = child.specifiers.filter(function (specifier) {\n          if (\n            specifier.exported.type === 'Identifier' &&\n            specifier.exported.name === 'default'\n          ) {\n            if (layout) {\n              file.fail(\n                'Unexpected duplicate layout, expected a single layout (previous: ' +\n                  stringifyPosition(positionFromEstree(layout)) +\n                  ')',\n                {\n                  ancestors: [tree, child, specifier],\n                  place: positionFromEstree(child),\n                  ruleId: 'duplicate-layout',\n                  source: 'recma-document'\n                }\n              )\n            }\n\n            layout = specifier\n\n            // Make it just an import: `import MDXLayout from '…'`.\n            /** @type {Array<ImportDefaultSpecifier | ImportSpecifier>} */\n            const specifiers = []\n\n            // Default as default / something else as default.\n            if (\n              specifier.local.type === 'Identifier' &&\n              specifier.local.name === 'default'\n            ) {\n              specifiers.push({\n                type: 'ImportDefaultSpecifier',\n                local: {type: 'Identifier', name: 'MDXLayout'}\n              })\n            } else {\n              /** @type {ImportSpecifier} */\n              const importSpecifier = {\n                type: 'ImportSpecifier',\n                imported: specifier.local,\n                local: {type: 'Identifier', name: 'MDXLayout'}\n              }\n              estree_util_create_create(specifier.local, importSpecifier)\n              specifiers.push(importSpecifier)\n            }\n\n            /** @type {Literal} */\n            const from = {type: 'Literal', value: source.value}\n            estree_util_create_create(source, from)\n\n            /** @type {ImportDeclaration} */\n            const declaration = {\n              type: 'ImportDeclaration',\n              specifiers,\n              attributes: [],\n              source: from\n            }\n            estree_util_create_create(specifier, declaration)\n            handleEsm(declaration)\n\n            return false\n          }\n\n          return true\n        })\n\n        // If there are other things imported, keep it.\n        if (child.specifiers.length > 0) {\n          handleExport(child)\n        }\n      }\n      // ```tsx\n      // export {a, b as c}\n      // export * from 'a'\n      // ```\n      else if (\n        child.type === 'ExportNamedDeclaration' ||\n        child.type === 'ExportAllDeclaration'\n      ) {\n        handleExport(child)\n      } else if (child.type === 'ImportDeclaration') {\n        handleEsm(child)\n      } else if (\n        child.type === 'ExpressionStatement' &&\n        (child.expression.type === 'JSXElement' ||\n          child.expression.type === 'JSXFragment')\n      ) {\n        content = true\n        replacement.push(\n          ...createMdxContent(child.expression, outputFormat, Boolean(layout))\n        )\n      } else {\n        // This catch-all branch is because plugins might add other things.\n        // Normally, we only have import/export/jsx, but just add whatever’s\n        // there.\n        replacement.push(child)\n      }\n    }\n\n    // If there was no JSX content at all, add an empty function.\n    if (!content) {\n      replacement.push(\n        ...createMdxContent(undefined, outputFormat, Boolean(layout))\n      )\n    }\n\n    exportedValues.push(['MDXContent', 'default'])\n\n    if (outputFormat === 'function-body') {\n      replacement.push({\n        type: 'ReturnStatement',\n        argument: {\n          type: 'ObjectExpression',\n          properties: [\n            ...Array.from({length: exportAllCount}).map(\n              /**\n               * @param {undefined} _\n               *   Nothing.\n               * @param {number} index\n               *   Index.\n               * @returns {SpreadElement}\n               *   Node.\n               */\n              function (_, index) {\n                return {\n                  type: 'SpreadElement',\n                  argument: {\n                    type: 'Identifier',\n                    name: '_exportAll' + (index + 1)\n                  }\n                }\n              }\n            ),\n            ...exportedValues.map(function (d) {\n              /** @type {Property} */\n              const property = {\n                type: 'Property',\n                kind: 'init',\n                method: false,\n                computed: false,\n                shorthand: typeof d === 'string',\n                key: {\n                  type: 'Identifier',\n                  name: typeof d === 'string' ? d : d[1]\n                },\n                value: {\n                  type: 'Identifier',\n                  name: typeof d === 'string' ? d : d[0]\n                }\n              }\n\n              return property\n            })\n          ]\n        }\n      })\n    }\n\n    tree.body = replacement\n\n    let usesImportMetaUrlVariable = false\n    let usesResolveDynamicHelper = false\n\n    if (baseHref || outputFormat === 'function-body') {\n      walk(tree, {\n        enter(node) {\n          if (\n            (node.type === 'ExportAllDeclaration' ||\n              node.type === 'ExportNamedDeclaration' ||\n              node.type === 'ImportDeclaration') &&\n            node.source\n          ) {\n            // We never hit this branch when generating function bodies, as\n            // statements are already compiled away into import expressions.\n            default_ok(baseHref, 'unexpected missing `baseHref` in branch')\n\n            let value = node.source.value\n            // The literal source for statements can only be string.\n            default_ok(typeof value === 'string', 'expected string source')\n\n            // Resolve a specifier.\n            // This is the same as `_resolveDynamicMdxSpecifier`, which has to\n            // be injected to work with expressions at runtime, but as we have\n            // `baseHref` at compile time here and statements are static\n            // strings, we can do it now.\n            try {\n              // To do: next major: use `URL.canParse`.\n              // eslint-disable-next-line no-new\n              new URL(value)\n              // Fine: a full URL.\n            } catch {\n              if (\n                value.startsWith('/') ||\n                value.startsWith('./') ||\n                value.startsWith('../')\n              ) {\n                value = new URL(value, baseHref).href\n              } else {\n                // Fine: are bare specifier.\n              }\n            }\n\n            /** @type {SimpleLiteral} */\n            const replacement = {type: 'Literal', value}\n            estree_util_create_create(node.source, replacement)\n            node.source = replacement\n            return\n          }\n\n          if (node.type === 'ImportExpression') {\n            usesResolveDynamicHelper = true\n            /** @type {CallExpression} */\n            const replacement = {\n              type: 'CallExpression',\n              callee: {type: 'Identifier', name: '_resolveDynamicMdxSpecifier'},\n              arguments: [node.source],\n              optional: false\n            }\n            node.source = replacement\n            return\n          }\n\n          // To do: add support for `import.meta.resolve`.\n\n          if (\n            node.type === 'MemberExpression' &&\n            'object' in node &&\n            node.object.type === 'MetaProperty' &&\n            node.property.type === 'Identifier' &&\n            node.object.meta.name === 'import' &&\n            node.object.property.name === 'meta' &&\n            node.property.name === 'url'\n          ) {\n            usesImportMetaUrlVariable = true\n            /** @type {Identifier} */\n            const replacement = {type: 'Identifier', name: '_importMetaUrl'}\n            estree_util_create_create(node, replacement)\n            this.replace(replacement)\n          }\n        }\n      })\n    }\n\n    if (usesResolveDynamicHelper) {\n      if (!baseHref) {\n        usesImportMetaUrlVariable = true\n      }\n\n      tree.body.push(\n        resolveDynamicMdxSpecifier(\n          baseHref\n            ? {type: 'Literal', value: baseHref}\n            : {type: 'Identifier', name: '_importMetaUrl'}\n        )\n      )\n    }\n\n    if (usesImportMetaUrlVariable) {\n      default_ok(\n        outputFormat === 'function-body',\n        'expected `function-body` when using dynamic url injection'\n      )\n      tree.body.unshift(...createImportMetaUrlVariable())\n    }\n\n    /**\n     * @param {ExportAllDeclaration | ExportNamedDeclaration} node\n     *   Export node.\n     * @returns {undefined}\n     *   Nothing.\n     */\n    function handleExport(node) {\n      if (node.type === 'ExportNamedDeclaration') {\n        // ```tsx\n        // export function a() {}\n        // export class A {}\n        // export var a = 1\n        // ```\n        if (node.declaration) {\n          const visitors = createVisitors()\n          // Walk the top-level scope.\n          walk(node, {\n            enter(node) {\n              visitors.enter(node)\n\n              if (\n                node.type === 'ArrowFunctionExpression' ||\n                node.type === 'FunctionDeclaration' ||\n                node.type === 'FunctionExpression'\n              ) {\n                this.skip()\n                visitors.exit(node)\n              }\n            },\n            leave: visitors.exit\n          })\n          exportedValues.push(...visitors.scopes[0].defined)\n        }\n\n        // ```tsx\n        // export {a, b as c}\n        // export {a, b as c} from 'd'\n        // ```\n        for (child of node.specifiers) {\n          if (child.exported.type === 'Identifier') {\n            exportedValues.push(child.exported.name)\n            /* c8 ignore next 5 -- to do: <https://github.com/mdx-js/mdx/issues/2536> */\n          } else {\n            // Must be string.\n            default_ok(typeof child.exported.value === 'string')\n            exportedValues.push(child.exported.value)\n          }\n        }\n      }\n\n      handleEsm(node)\n    }\n\n    /**\n     * @param {ExportAllDeclaration | ExportNamedDeclaration | ImportDeclaration} node\n     *   Export or import node.\n     * @returns {undefined}\n     *   Nothing.\n     */\n    function handleEsm(node) {\n      /** @type {ModuleDeclaration | Statement | undefined} */\n      let replace\n      /** @type {Expression} */\n      let init\n\n      if (outputFormat === 'function-body') {\n        if (\n          // Always have a source:\n          node.type === 'ImportDeclaration' ||\n          node.type === 'ExportAllDeclaration' ||\n          // Source optional:\n          (node.type === 'ExportNamedDeclaration' && node.source)\n        ) {\n          // We always have a source, but types say they can be missing.\n          default_ok(node.source, 'expected `node.source` to be defined')\n\n          // ```\n          // import 'a'\n          // //=> await import('a')\n          // import a from 'b'\n          // //=> const {default: a} = await import('b')\n          // export {a, b as c} from 'd'\n          // //=> const {a, c: b} = await import('d')\n          // export * from 'a'\n          // //=> const _exportAll0 = await import('a')\n          // ```\n          /** @type {ImportExpression} */\n          const argument = {type: 'ImportExpression', source: node.source}\n          estree_util_create_create(node, argument)\n          init = {type: 'AwaitExpression', argument}\n\n          if (\n            (node.type === 'ImportDeclaration' ||\n              node.type === 'ExportNamedDeclaration') &&\n            node.specifiers.length === 0\n          ) {\n            replace = {type: 'ExpressionStatement', expression: init}\n          } else {\n            replace = {\n              type: 'VariableDeclaration',\n              kind: 'const',\n              declarations:\n                node.type === 'ExportAllDeclaration'\n                  ? [\n                      {\n                        type: 'VariableDeclarator',\n                        id: {\n                          type: 'Identifier',\n                          name: '_exportAll' + ++exportAllCount\n                        },\n                        init\n                      }\n                    ]\n                  : specifiersToDeclarations(node.specifiers, init)\n            }\n          }\n        } else if (node.declaration) {\n          replace = node.declaration\n        } else {\n          /** @type {Array<VariableDeclarator>} */\n          const declarators = []\n\n          for (const specifier of node.specifiers) {\n            // `id` can only be an identifier,\n            // so we ignore literal.\n            if (\n              specifier.exported.type === 'Identifier' &&\n              specifier.local.type === 'Identifier' &&\n              specifier.local.name !== specifier.exported.name\n            ) {\n              declarators.push({\n                type: 'VariableDeclarator',\n                id: specifier.exported,\n                init: specifier.local\n              })\n            }\n          }\n\n          if (declarators.length > 0) {\n            replace = {\n              type: 'VariableDeclaration',\n              kind: 'const',\n              declarations: declarators\n            }\n          }\n        }\n      } else {\n        replace = node\n      }\n\n      if (replace) {\n        replacement.push(replace)\n      }\n    }\n  }\n\n  /**\n   * @param {Readonly<Expression> | undefined} content\n   *   Content.\n   * @param {'function-body' | 'program'} outputFormat\n   *   Output format.\n   * @param {boolean | undefined} [hasInternalLayout=false]\n   *   Whether there’s an internal layout (default: `false`).\n   * @returns {Array<ExportDefaultDeclaration | FunctionDeclaration>}\n   *   Functions.\n   */\n  function createMdxContent(content, outputFormat, hasInternalLayout) {\n    /** @type {JSXElement} */\n    const element = {\n      type: 'JSXElement',\n      openingElement: {\n        type: 'JSXOpeningElement',\n        name: {type: 'JSXIdentifier', name: 'MDXLayout'},\n        attributes: [\n          {\n            type: 'JSXSpreadAttribute',\n            argument: {type: 'Identifier', name: 'props'}\n          }\n        ],\n        selfClosing: false\n      },\n      closingElement: {\n        type: 'JSXClosingElement',\n        name: {type: 'JSXIdentifier', name: 'MDXLayout'}\n      },\n      children: [\n        {\n          type: 'JSXElement',\n          openingElement: {\n            type: 'JSXOpeningElement',\n            name: {type: 'JSXIdentifier', name: '_createMdxContent'},\n            attributes: [\n              {\n                type: 'JSXSpreadAttribute',\n                argument: {type: 'Identifier', name: 'props'}\n              }\n            ],\n            selfClosing: true\n          },\n          closingElement: null,\n          children: []\n        }\n      ]\n    }\n\n    let result = /** @type {Expression} */ (element)\n\n    if (!hasInternalLayout) {\n      result = {\n        type: 'ConditionalExpression',\n        test: {type: 'Identifier', name: 'MDXLayout'},\n        consequent: result,\n        alternate: {\n          type: 'CallExpression',\n          callee: {type: 'Identifier', name: '_createMdxContent'},\n          arguments: [{type: 'Identifier', name: 'props'}],\n          optional: false\n        }\n      }\n    }\n\n    let argument =\n      // Cast because TS otherwise does not think `JSXFragment`s are expressions.\n      /** @type {Readonly<Expression> | Readonly<JSXFragment>} */ (\n        content || {type: 'Identifier', name: 'undefined'}\n      )\n\n    // Unwrap a fragment of a single element.\n    if (\n      argument.type === 'JSXFragment' &&\n      argument.children.length === 1 &&\n      argument.children[0].type === 'JSXElement'\n    ) {\n      argument = argument.children[0]\n    }\n\n    let awaitExpression = false\n\n    walk(argument, {\n      enter(node) {\n        if (\n          node.type === 'ArrowFunctionExpression' ||\n          node.type === 'FunctionDeclaration' ||\n          node.type === 'FunctionExpression'\n        ) {\n          return this.skip()\n        }\n\n        if (\n          node.type === 'AwaitExpression' ||\n          /* c8 ignore next 2 -- can only occur in a function (which then can\n           * only be async, so skipped it) */\n          (node.type === 'ForOfStatement' && node.await)\n        ) {\n          awaitExpression = true\n        }\n      }\n    })\n\n    /** @type {FunctionDeclaration} */\n    const declaration = {\n      type: 'FunctionDeclaration',\n      id: {type: 'Identifier', name: 'MDXContent'},\n      params: [\n        {\n          type: 'AssignmentPattern',\n          left: {type: 'Identifier', name: 'props'},\n          right: {type: 'ObjectExpression', properties: []}\n        }\n      ],\n      body: {\n        type: 'BlockStatement',\n        body: [{type: 'ReturnStatement', argument: result}]\n      }\n    }\n\n    return [\n      {\n        type: 'FunctionDeclaration',\n        async: awaitExpression,\n        id: {type: 'Identifier', name: '_createMdxContent'},\n        params: [{type: 'Identifier', name: 'props'}],\n        body: {\n          type: 'BlockStatement',\n          body: [\n            {\n              type: 'ReturnStatement',\n              // Cast because TS doesn’t think `JSXFragment` is an expression.\n              // eslint-disable-next-line object-shorthand\n              argument: /** @type {Expression} */ (argument)\n            }\n          ]\n        }\n      },\n      outputFormat === 'program'\n        ? {type: 'ExportDefaultDeclaration', declaration}\n        : declaration\n    ]\n  }\n}\n\n/**\n * @param {Program} tree\n * @param {string} name\n * @param {string} value\n * @returns {undefined}\n */\nfunction injectPragma(tree, name, value) {\n  tree.comments?.unshift({\n    type: 'Block',\n    value: name + ' ' + value,\n    data: {_mdxIsPragmaComment: true}\n  })\n}\n\n/**\n * @param {Expression} importMetaUrl\n * @returns {FunctionDeclaration}\n */\nfunction resolveDynamicMdxSpecifier(importMetaUrl) {\n  return {\n    type: 'FunctionDeclaration',\n    id: {type: 'Identifier', name: '_resolveDynamicMdxSpecifier'},\n    generator: false,\n    async: false,\n    params: [{type: 'Identifier', name: 'd'}],\n    body: {\n      type: 'BlockStatement',\n      body: [\n        {\n          type: 'IfStatement',\n          test: {\n            type: 'BinaryExpression',\n            left: {\n              type: 'UnaryExpression',\n              operator: 'typeof',\n              prefix: true,\n              argument: {type: 'Identifier', name: 'd'}\n            },\n            operator: '!==',\n            right: {type: 'Literal', value: 'string'}\n          },\n          consequent: {\n            type: 'ReturnStatement',\n            argument: {type: 'Identifier', name: 'd'}\n          },\n          alternate: null\n        },\n        // To do: use `URL.canParse` when widely supported (see commented\n        // out code below).\n        {\n          type: 'TryStatement',\n          block: {\n            type: 'BlockStatement',\n            body: [\n              {\n                type: 'ExpressionStatement',\n                expression: {\n                  type: 'NewExpression',\n                  callee: {type: 'Identifier', name: 'URL'},\n                  arguments: [{type: 'Identifier', name: 'd'}]\n                }\n              },\n              {\n                type: 'ReturnStatement',\n                argument: {type: 'Identifier', name: 'd'}\n              }\n            ]\n          },\n          handler: {\n            type: 'CatchClause',\n            param: null,\n            body: {type: 'BlockStatement', body: []}\n          },\n          finalizer: null\n        },\n        // To do: use `URL.canParse` when widely supported.\n        // {\n        //   type: 'IfStatement',\n        //   test: {\n        //     type: 'CallExpression',\n        //     callee: toIdOrMemberExpression(['URL', 'canParse']),\n        //     arguments: [{type: 'Identifier', name: 'd'}],\n        //     optional: false\n        //   },\n        //   consequent: {\n        //     type: 'ReturnStatement',\n        //     argument: {type: 'Identifier', name: 'd'}\n        //   },\n        //   alternate: null\n        // },\n        {\n          type: 'IfStatement',\n          test: {\n            type: 'LogicalExpression',\n            left: {\n              type: 'LogicalExpression',\n              left: {\n                type: 'CallExpression',\n                callee: toIdOrMemberExpression(['d', 'startsWith']),\n                arguments: [{type: 'Literal', value: '/'}],\n                optional: false\n              },\n              operator: '||',\n              right: {\n                type: 'CallExpression',\n                callee: toIdOrMemberExpression(['d', 'startsWith']),\n                arguments: [{type: 'Literal', value: './'}],\n                optional: false\n              }\n            },\n            operator: '||',\n            right: {\n              type: 'CallExpression',\n              callee: toIdOrMemberExpression(['d', 'startsWith']),\n              arguments: [{type: 'Literal', value: '../'}],\n              optional: false\n            }\n          },\n          consequent: {\n            type: 'ReturnStatement',\n            argument: {\n              type: 'MemberExpression',\n              object: {\n                type: 'NewExpression',\n                callee: {type: 'Identifier', name: 'URL'},\n                arguments: [{type: 'Identifier', name: 'd'}, importMetaUrl]\n              },\n              property: {type: 'Identifier', name: 'href'},\n              computed: false,\n              optional: false\n            }\n          },\n          alternate: null\n        },\n        {\n          type: 'ReturnStatement',\n          argument: {type: 'Identifier', name: 'd'}\n        }\n      ]\n    }\n  }\n}\n\n/**\n * @returns {Array<Statement>}\n */\nfunction createImportMetaUrlVariable() {\n  return [\n    {\n      type: 'VariableDeclaration',\n      declarations: [\n        {\n          type: 'VariableDeclarator',\n          id: {type: 'Identifier', name: '_importMetaUrl'},\n          init: toIdOrMemberExpression(['arguments', 0, 'baseUrl'])\n        }\n      ],\n      kind: 'const'\n    },\n    {\n      type: 'IfStatement',\n      test: {\n        type: 'UnaryExpression',\n        operator: '!',\n        prefix: true,\n        argument: {type: 'Identifier', name: '_importMetaUrl'}\n      },\n      consequent: {\n        type: 'ThrowStatement',\n        argument: {\n          type: 'NewExpression',\n          callee: {type: 'Identifier', name: 'Error'},\n          arguments: [\n            {\n              type: 'Literal',\n              value:\n                'Unexpected missing `options.baseUrl` needed to support `export … from`, `import`, or `import.meta.url` when generating `function-body`'\n            }\n          ]\n        }\n      },\n      alternate: null\n    }\n  ]\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/util/estree-util-to-binary-addition.js\n/**\n * @import {Expression} from 'estree-jsx'\n */\n\n\n\n/**\n * @param {ReadonlyArray<Expression>} expressions\n *   Expressions.\n * @returns {Expression}\n *   Addition.\n */\nfunction toBinaryAddition(expressions) {\n  let index = -1\n  /** @type {Expression | undefined} */\n  let left\n\n  while (++index < expressions.length) {\n    const right = expressions[index]\n    left = left ? {type: 'BinaryExpression', left, operator: '+', right} : right\n  }\n\n  default_ok(left, 'expected non-empty `expressions` to be passed')\n  return left\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/plugin/recma-jsx-rewrite.js\n/**\n * @import {\n      Expression,\n      Function as EstreeFunction,\n      Identifier,\n      ImportSpecifier,\n      JSXElement,\n      ModuleDeclaration,\n      ObjectPattern,\n      Program,\n      Property,\n      SpreadElement,\n      Statement,\n      VariableDeclarator\n * } from 'estree-jsx'\n * @import {Scope} from 'estree-util-scope'\n * @import {VFile} from 'vfile'\n * @import {ProcessorOptions} from '../core.js'\n */\n\n/**\n * @typedef StackEntry\n *   Entry.\n * @property {Array<string>} components\n *   Used components.\n * @property {Map<string, string>} idToInvalidComponentName\n *   Map of JSX identifiers which cannot be used as JS identifiers, to valid JS identifiers.\n * @property {Readonly<EstreeFunction>} node\n *   Function.\n * @property {Array<string>} objects\n *   Identifiers of used objects (such as `x` in `x.y`).\n * @property {Record<string, {node: Readonly<JSXElement>, component: boolean}>} references\n *   Map of JSX identifiers for components and objects, to where they were first used.\n * @property {Array<string>} tags\n *   Tag names.\n */\n\n\n\n\n\n\n\n\n\n\n/**\n * A plugin that rewrites JSX in functions to accept components as\n * `props.components` (when the function is called `_createMdxContent`), or from\n * a provider (if there is one).\n * It also makes sure that any undefined components are defined: either from\n * received components or as a function that throws an error.\n *\n * @param {Readonly<ProcessorOptions>} options\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nfunction recmaJsxRewrite(options) {\n  const {development, outputFormat, providerImportSource} = options\n\n  /**\n   * @param {Program} tree\n   *   Tree.\n   * @param {VFile} file\n   *   File.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree, file) {\n    const visitors = createVisitors()\n    /** @type {Array<StackEntry>} */\n    const functionStack = []\n    let importProvider = false\n    let createErrorHelper = false\n\n    walk(tree, {\n      enter(node) {\n        visitors.enter(node)\n\n        if (\n          node.type === 'FunctionDeclaration' ||\n          node.type === 'FunctionExpression' ||\n          node.type === 'ArrowFunctionExpression'\n        ) {\n          functionStack.push({\n            components: [],\n            idToInvalidComponentName: new Map(),\n            node,\n            objects: [],\n            references: {},\n            tags: []\n          })\n\n          // `MDXContent` only ever contains `MDXLayout`.\n          if (\n            isNamedFunction(node, 'MDXContent') &&\n            !inScope(visitors.scopes, 'MDXLayout')\n          ) {\n            functionStack[0].components.push('MDXLayout')\n          }\n        }\n\n        const functionInfo = functionStack[0]\n\n        if (\n          !functionInfo ||\n          (!isNamedFunction(functionInfo.node, '_createMdxContent') &&\n            !providerImportSource)\n        ) {\n          return\n        }\n\n        if (node.type === 'JSXElement') {\n          let name = node.openingElement.name\n\n          // `<x.y>`, `<Foo.Bar>`, `<x.y.z>`.\n          if (name.type === 'JSXMemberExpression') {\n            /** @type {Array<string>} */\n            const ids = []\n\n            // Find the left-most identifier.\n            while (name.type === 'JSXMemberExpression') {\n              ids.unshift(name.property.name)\n              name = name.object\n            }\n\n            ids.unshift(name.name)\n            const fullId = ids.join('.')\n            const id = name.name\n            const isInScope = inScope(visitors.scopes, id)\n\n            if (\n              !Object.hasOwn(functionInfo.references, fullId) &&\n              (!isInScope ||\n                // If the parent scope is `_createMdxContent`, then this\n                // references a component we can add a check statement for.\n                (functionStack.length === 1 &&\n                  functionStack[0].node.type === 'FunctionDeclaration' &&\n                  isNamedFunction(functionStack[0].node, '_createMdxContent')))\n            ) {\n              functionInfo.references[fullId] = {component: true, node}\n            }\n\n            if (!functionInfo.objects.includes(id) && !isInScope) {\n              functionInfo.objects.push(id)\n            }\n          }\n          // `<xml:thing>`.\n          else if (name.type === 'JSXNamespacedName') {\n            // Ignore namespaces.\n          }\n          // If the name is a valid ES identifier, and it doesn’t start with a\n          // lowercase letter, it’s a component.\n          // For example, `$foo`, `_bar`, `Baz` are all component names.\n          // But `foo` and `b-ar` are tag names.\n          else if (lib_name(name.name) && !/^[a-z]/.test(name.name)) {\n            const id = name.name\n\n            if (!inScope(visitors.scopes, id)) {\n              // No need to add an error for an undefined layout — we use an\n              // `if` later.\n              if (\n                id !== 'MDXLayout' &&\n                !Object.hasOwn(functionInfo.references, id)\n              ) {\n                functionInfo.references[id] = {component: true, node}\n              }\n\n              if (!functionInfo.components.includes(id)) {\n                functionInfo.components.push(id)\n              }\n            }\n          } else if (node.data && node.data._mdxExplicitJsx) {\n            // Do not turn explicit JSX into components from `_components`.\n            // As in, a given `h1` component is used for `# heading` (next case),\n            // but not for `<h1>heading</h1>`.\n          } else {\n            const id = name.name\n\n            if (!functionInfo.tags.includes(id)) {\n              functionInfo.tags.push(id)\n            }\n\n            /** @type {Array<number | string>} */\n            let jsxIdExpression = ['_components', id]\n            if (lib_name(id) === false) {\n              let invalidComponentName =\n                functionInfo.idToInvalidComponentName.get(id)\n              if (invalidComponentName === undefined) {\n                invalidComponentName = `_component${functionInfo.idToInvalidComponentName.size}`\n                functionInfo.idToInvalidComponentName.set(\n                  id,\n                  invalidComponentName\n                )\n              }\n\n              jsxIdExpression = [invalidComponentName]\n            }\n\n            node.openingElement.name =\n              toJsxIdOrMemberExpression(jsxIdExpression)\n\n            if (node.closingElement) {\n              node.closingElement.name =\n                toJsxIdOrMemberExpression(jsxIdExpression)\n            }\n          }\n        }\n      },\n      leave(node) {\n        visitors.exit(node)\n\n        /** @type {Array<Property | SpreadElement>} */\n        const defaults = []\n        /** @type {Array<string>} */\n        const actual = []\n        /** @type {Array<Expression>} */\n        const parameters = []\n        /** @type {Array<VariableDeclarator>} */\n        const declarations = []\n\n        if (\n          node.type === 'FunctionDeclaration' ||\n          node.type === 'FunctionExpression' ||\n          node.type === 'ArrowFunctionExpression'\n        ) {\n          const functionInfo = functionStack[functionStack.length - 1]\n\n          /** @type {string} */\n          let name\n\n          for (name of functionInfo.tags.sort()) {\n            defaults.push({\n              type: 'Property',\n              kind: 'init',\n              key: lib_name(name)\n                ? {type: 'Identifier', name}\n                : {type: 'Literal', value: name},\n              value: {type: 'Literal', value: name},\n              method: false,\n              shorthand: false,\n              computed: false\n            })\n          }\n\n          actual.push(...functionInfo.components)\n\n          for (name of functionInfo.objects) {\n            // In some cases, a component is used directly (`<X>`) but it’s also\n            // used as an object (`<X.Y>`).\n            if (!actual.includes(name)) {\n              actual.push(name)\n            }\n          }\n\n          actual.sort()\n\n          /** @type {Array<Statement>} */\n          const statements = []\n\n          if (\n            defaults.length > 0 ||\n            actual.length > 0 ||\n            functionInfo.idToInvalidComponentName.size > 0\n          ) {\n            if (providerImportSource) {\n              importProvider = true\n              parameters.push({\n                type: 'CallExpression',\n                callee: {type: 'Identifier', name: '_provideComponents'},\n                arguments: [],\n                optional: false\n              })\n            }\n\n            // Accept `components` as a prop if this is the `MDXContent` or\n            // `_createMdxContent` function.\n            if (\n              isNamedFunction(functionInfo.node, 'MDXContent') ||\n              isNamedFunction(functionInfo.node, '_createMdxContent')\n            ) {\n              parameters.push(toIdOrMemberExpression(['props', 'components']))\n            }\n\n            if (defaults.length > 0 || parameters.length > 1) {\n              for (const parameter of parameters) {\n                defaults.push({type: 'SpreadElement', argument: parameter})\n              }\n            }\n\n            // If we’re getting components from several sources, merge them.\n            /** @type {Expression} */\n            let componentsInit =\n              defaults.length > 0\n                ? {type: 'ObjectExpression', properties: defaults}\n                : // If we’re only getting components from `props.components`,\n                  // make sure it’s defined.\n                  {\n                    type: 'LogicalExpression',\n                    operator: '||',\n                    left: parameters[0],\n                    right: {type: 'ObjectExpression', properties: []}\n                  }\n\n            /** @type {ObjectPattern | undefined} */\n            let componentsPattern\n\n            // Add components to scope.\n            // For `['MyComponent', 'MDXLayout']` this generates:\n            // ```tsx\n            // const {MyComponent, wrapper: MDXLayout} = _components\n            // ```\n            // Note that MDXLayout is special as it’s taken from\n            // `_components.wrapper`.\n            if (actual.length > 0) {\n              componentsPattern = {\n                type: 'ObjectPattern',\n                properties: actual.map(function (name) {\n                  return {\n                    type: 'Property',\n                    kind: 'init',\n                    key: {\n                      type: 'Identifier',\n                      name: name === 'MDXLayout' ? 'wrapper' : name\n                    },\n                    value: {type: 'Identifier', name},\n                    method: false,\n                    shorthand: name !== 'MDXLayout',\n                    computed: false\n                  }\n                })\n              }\n            }\n\n            if (functionInfo.tags.length > 0) {\n              declarations.push({\n                type: 'VariableDeclarator',\n                id: {type: 'Identifier', name: '_components'},\n                init: componentsInit\n              })\n              componentsInit = {type: 'Identifier', name: '_components'}\n            }\n\n            if (isNamedFunction(functionInfo.node, '_createMdxContent')) {\n              for (const [id, componentName] of [\n                ...functionInfo.idToInvalidComponentName\n              ].sort(function ([a], [b]) {\n                return a.localeCompare(b)\n              })) {\n                // For JSX IDs that can’t be represented as JavaScript IDs (as in,\n                // those with dashes, such as `custom-element`), generate a\n                // separate variable that is a valid JS ID (such as `_component0`),\n                // and takes it from components:\n                // `const _component0 = _components['custom-element']`\n                declarations.push({\n                  type: 'VariableDeclarator',\n                  id: {\n                    type: 'Identifier',\n                    name: componentName\n                  },\n                  init: {\n                    type: 'MemberExpression',\n                    object: {type: 'Identifier', name: '_components'},\n                    property: {type: 'Literal', value: id},\n                    computed: true,\n                    optional: false\n                  }\n                })\n              }\n            }\n\n            if (componentsPattern) {\n              declarations.push({\n                type: 'VariableDeclarator',\n                id: componentsPattern,\n                init: componentsInit\n              })\n            }\n\n            if (declarations.length > 0) {\n              statements.push({\n                type: 'VariableDeclaration',\n                kind: 'const',\n                declarations\n              })\n            }\n          }\n\n          /** @type {string} */\n          let key\n\n          // Add partials (so for `x.y.z` it’d generate `x` and `x.y` too).\n          for (key in functionInfo.references) {\n            if (Object.hasOwn(functionInfo.references, key)) {\n              const parts = key.split('.')\n              let index = 0\n              while (++index < parts.length) {\n                const partial = parts.slice(0, index).join('.')\n                if (!Object.hasOwn(functionInfo.references, partial)) {\n                  functionInfo.references[partial] = {\n                    component: false,\n                    node: functionInfo.references[key].node\n                  }\n                }\n              }\n            }\n          }\n\n          const references = Object.keys(functionInfo.references).sort()\n\n          let index = -1\n          while (++index < references.length) {\n            const id = references[index]\n            const info = functionInfo.references[id]\n            const place = stringifyPosition(positionFromEstree(info.node))\n            /** @type {Array<Expression>} */\n            const parameters = [\n              {type: 'Literal', value: id},\n              {type: 'Literal', value: info.component}\n            ]\n\n            createErrorHelper = true\n\n            if (development && place) {\n              parameters.push({type: 'Literal', value: place})\n            }\n\n            statements.push({\n              type: 'IfStatement',\n              test: {\n                type: 'UnaryExpression',\n                operator: '!',\n                prefix: true,\n                argument: toIdOrMemberExpression(id.split('.'))\n              },\n              consequent: {\n                type: 'ExpressionStatement',\n                expression: {\n                  type: 'CallExpression',\n                  callee: {type: 'Identifier', name: '_missingMdxReference'},\n                  arguments: parameters,\n                  optional: false\n                }\n              },\n              alternate: undefined\n            })\n          }\n\n          if (statements.length > 0) {\n            // Arrow functions with an implied return:\n            if (node.body.type !== 'BlockStatement') {\n              node.body = {\n                type: 'BlockStatement',\n                body: [{type: 'ReturnStatement', argument: node.body}]\n              }\n            }\n\n            node.body.body.unshift(...statements)\n          }\n\n          functionStack.pop()\n        }\n      }\n    })\n\n    // If a provider is used (and can be used), import it.\n    if (importProvider && providerImportSource) {\n      tree.body.unshift(\n        createImportProvider(providerImportSource, outputFormat)\n      )\n    }\n\n    // If potentially missing components are used.\n    if (createErrorHelper) {\n      /** @type {Array<Expression>} */\n      const message = [\n        {type: 'Literal', value: 'Expected '},\n        {\n          type: 'ConditionalExpression',\n          test: {type: 'Identifier', name: 'component'},\n          consequent: {type: 'Literal', value: 'component'},\n          alternate: {type: 'Literal', value: 'object'}\n        },\n        {type: 'Literal', value: ' `'},\n        {type: 'Identifier', name: 'id'},\n        {\n          type: 'Literal',\n          value:\n            '` to be defined: you likely forgot to import, pass, or provide it.'\n        }\n      ]\n\n      /** @type {Array<Identifier>} */\n      const parameters = [\n        {type: 'Identifier', name: 'id'},\n        {type: 'Identifier', name: 'component'}\n      ]\n\n      if (development) {\n        message.push({\n          type: 'ConditionalExpression',\n          test: {type: 'Identifier', name: 'place'},\n          consequent: toBinaryAddition([\n            {type: 'Literal', value: '\\nIt’s referenced in your code at `'},\n            {type: 'Identifier', name: 'place'},\n            {\n              type: 'Literal',\n              value: (file.path ? '` in `' + file.path : '') + '`'\n            }\n          ]),\n          alternate: {type: 'Literal', value: ''}\n        })\n\n        parameters.push({type: 'Identifier', name: 'place'})\n      }\n\n      tree.body.push({\n        type: 'FunctionDeclaration',\n        id: {type: 'Identifier', name: '_missingMdxReference'},\n        generator: false,\n        async: false,\n        params: parameters,\n        body: {\n          type: 'BlockStatement',\n          body: [\n            {\n              type: 'ThrowStatement',\n              argument: {\n                type: 'NewExpression',\n                callee: {type: 'Identifier', name: 'Error'},\n                arguments: [toBinaryAddition(message)]\n              }\n            }\n          ]\n        }\n      })\n    }\n\n    if (outputFormat === 'function-body') {\n      tree.body.unshift({\n        type: 'ExpressionStatement',\n        expression: {type: 'Literal', value: 'use strict'},\n        directive: 'use strict'\n      })\n    }\n  }\n}\n\n/**\n * @param {string} providerImportSource\n *   Provider source.\n * @param {'function-body' | 'program' | null | undefined} outputFormat\n *   Format.\n * @returns {ModuleDeclaration | Statement}\n *   Node.\n */\nfunction createImportProvider(providerImportSource, outputFormat) {\n  /** @type {Array<ImportSpecifier>} */\n  const specifiers = [\n    {\n      type: 'ImportSpecifier',\n      imported: {type: 'Identifier', name: 'useMDXComponents'},\n      local: {type: 'Identifier', name: '_provideComponents'}\n    }\n  ]\n\n  return outputFormat === 'function-body'\n    ? {\n        type: 'VariableDeclaration',\n        kind: 'const',\n        declarations: specifiersToDeclarations(\n          specifiers,\n          toIdOrMemberExpression(['arguments', 0])\n        )\n      }\n    : {\n        type: 'ImportDeclaration',\n        specifiers,\n        attributes: [],\n        source: {type: 'Literal', value: providerImportSource}\n      }\n}\n\n/**\n * @param {Readonly<EstreeFunction>} node\n *   Node.\n * @param {string} name\n *   Name.\n * @returns {boolean}\n *   Whether `node` is a named function with `name`.\n */\nfunction isNamedFunction(node, name) {\n  return Boolean(node && 'id' in node && node.id && node.id.name === name)\n}\n\n/**\n * @param {Array<Scope>} scopes\n *   Scope.\n * @param {string} id\n *   Identifier.\n * @returns {boolean}\n *   Whether `id` is in `scope`.\n */\nfunction inScope(scopes, id) {\n  let index = scopes.length\n\n  while (index--) {\n    const scope = scopes[index]\n\n    if (scope.defined.includes(id)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/plugin/rehype-remove-raw.js\n/**\n * @import {Root} from 'hast'\n */\n\n\n\n/**\n * A tiny plugin that removes raw HTML.\n *\n * This is needed if the format is `md` and `rehype-raw` was not used to parse\n * dangerous HTML into nodes.\n *\n * @returns\n *   Transform.\n */\nfunction rehypeRemoveRaw() {\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree) {\n    visit(tree, 'raw', function (_, index, parent) {\n      if (parent && typeof index === 'number') {\n        parent.children.splice(index, 1)\n        return index\n      }\n    })\n  }\n}\n\n;// ./node_modules/collapse-white-space/index.js\n/**\n * @typedef {'html'|'js'} Style\n *\n * @typedef Options\n *   Configuration.\n * @property {Style} [style='js']\n *   Style of white space to support.\n * @property {boolean} [preserveLineEndings=false]\n *   Whether to collapse white space containing a line ending to that line\n *   ending.\n *   The default is to collapse to a single space.\n * @property {boolean} [trim=false]\n *   Whether to drop white space at the start and end of `value`.\n *   The default is to keep it.\n */\n\nconst js = /\\s+/g\nconst collapse_white_space_html = /[\\t\\n\\v\\f\\r ]+/g\n\n/**\n * Collapse white space.\n *\n * @param {string} value\n *   Value to collapse white space in.\n * @param {Style|Options} [options='js']\n *   Configuration.\n * @returns {string}\n *   Value with collapsed white space.\n */\nfunction collapseWhiteSpace(value, options) {\n  if (!options) {\n    options = {}\n  } else if (typeof options === 'string') {\n    options = {style: options}\n  }\n\n  const replace = options.preserveLineEndings ? replaceLineEnding : replaceSpace\n\n  return String(value).replace(\n    options.style === 'html' ? collapse_white_space_html : js,\n    options.trim ? trimFactory(replace) : replace\n  )\n}\n\n/**\n * Replace white space with a line ending as that line ending and otherwise a\n * space.\n *\n * @param {string} value\n * @returns {string}\n */\nfunction replaceLineEnding(value) {\n  const match = /\\r?\\n|\\r/.exec(value)\n  return match ? match[0] : ' '\n}\n\n/**\n * Replace white space with a space.\n *\n * @returns {string}\n */\nfunction replaceSpace() {\n  return ' '\n}\n\n/**\n * @param {(value: string) => string} replace\n */\nfunction trimFactory(replace) {\n  return dropOrReplace\n\n  /**\n   * Replace white space with nothing if it starts or ends the string.\n   * Calls `replace` otherwise.\n   *\n   * @param {string} value\n   * @param {number} index\n   * @param {string} all\n   * @returns {string}\n   */\n  function dropOrReplace(value, index, all) {\n    return index === 0 || index + value.length === all.length\n      ? ''\n      : replace(value)\n  }\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/plugin/remark-mark-and-unravel.js\n/**\n * @import {Root, RootContent} from 'mdast'\n */\n\n\n\n\n\n/**\n * A tiny plugin that unravels `<p><h1>x</h1></p>` but also\n * `<p><Component /></p>` (so it has no knowledge of “HTML”).\n *\n * It also marks JSX as being explicitly JSX, so when a user passes a `h1`\n * component, it is used for `# heading` but not for `<h1>heading</h1>`.\n *\n * @returns\n *   Transform.\n */\nfunction remarkMarkAndUnravel() {\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree) {\n    visit(tree, function (node, index, parent) {\n      let offset = -1\n      let all = true\n      let oneOrMore = false\n\n      if (parent && typeof index === 'number' && node.type === 'paragraph') {\n        const children = node.children\n\n        while (++offset < children.length) {\n          const child = children[offset]\n\n          if (\n            child.type === 'mdxJsxTextElement' ||\n            child.type === 'mdxTextExpression'\n          ) {\n            oneOrMore = true\n          } else if (\n            child.type === 'text' &&\n            collapseWhiteSpace(child.value, {style: 'html', trim: true}) === ''\n          ) {\n            // Empty.\n          } else {\n            all = false\n            break\n          }\n        }\n\n        if (all && oneOrMore) {\n          offset = -1\n\n          /** @type {Array<RootContent>} */\n          const newChildren = []\n\n          while (++offset < children.length) {\n            const child = children[offset]\n\n            if (child.type === 'mdxJsxTextElement') {\n              // @ts-expect-error: mutate because it is faster; content model is fine.\n              child.type = 'mdxJsxFlowElement'\n            }\n\n            if (child.type === 'mdxTextExpression') {\n              // @ts-expect-error: mutate because it is faster; content model is fine.\n              child.type = 'mdxFlowExpression'\n            }\n\n            if (\n              child.type === 'text' &&\n              /^[\\t\\r\\n ]+$/.test(String(child.value))\n            ) {\n              // Empty.\n            } else {\n              newChildren.push(child)\n            }\n          }\n\n          parent.children.splice(index, 1, ...newChildren)\n          return index\n        }\n      }\n\n      if (\n        node.type === 'mdxJsxFlowElement' ||\n        node.type === 'mdxJsxTextElement'\n      ) {\n        const data = node.data || (node.data = {})\n        data._mdxExplicitJsx = true\n      }\n\n      if (\n        (node.type === 'mdxFlowExpression' ||\n          node.type === 'mdxTextExpression' ||\n          node.type === 'mdxjsEsm') &&\n        node.data &&\n        node.data.estree\n      ) {\n        walk(node.data.estree, {\n          enter(node) {\n            if (node.type === 'JSXElement') {\n              const data = node.data || (node.data = {})\n              data._mdxExplicitJsx = true\n            }\n          }\n        })\n      }\n    })\n  }\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/node-types.js\n/**\n * List of node types made by `mdast-util-mdx`, which have to be passed\n * through untouched from the mdast tree to the hast tree.\n */\nconst nodeTypes = /** @type {const} */ ([\n  'mdxFlowExpression',\n  'mdxJsxFlowElement',\n  'mdxJsxTextElement',\n  'mdxTextExpression',\n  'mdxjsEsm'\n])\n\n;// ./node_modules/@mdx-js/mdx/lib/core.js\n/**\n * @import {Program} from 'estree-jsx'\n * @import {Root} from 'mdast'\n * @import {Options as RehypeRecmaOptions} from 'rehype-recma'\n * @import {Options as RemarkRehypeOptions} from 'remark-rehype'\n * @import {SourceMapGenerator} from 'source-map'\n * @import {PluggableList, Processor} from 'unified'\n */\n\n/**\n * @typedef ProcessorOptions\n *   Configuration for `createProcessor`.\n * @property {typeof SourceMapGenerator | null | undefined} [SourceMapGenerator]\n *   Add a source map (object form) as the `map` field on the resulting file\n *   (optional).\n * @property {URL | string | null | undefined} [baseUrl]\n *   Use this URL as `import.meta.url` and resolve `import` and `export … from`\n *   relative to it (optional, example: `import.meta.url`).\n * @property {boolean | null | undefined} [development=false]\n *   Whether to add extra info to error messages in generated code and use the\n *   development automatic JSX runtime (`Fragment` and `jsxDEV` from\n *   `/jsx-dev-runtime`) (default: `false`);\n *   when using the webpack loader (`@mdx-js/loader`) or the Rollup integration\n *   (`@mdx-js/rollup`) through Vite, this is automatically inferred from how\n *   you configure those tools.\n * @property {RehypeRecmaOptions['elementAttributeNameCase']} [elementAttributeNameCase='react']\n *   Casing to use for attribute names (default: `'react'`);\n *   HTML casing is for example `class`, `stroke-linecap`, `xml:lang`;\n *   React casing is for example `className`, `strokeLinecap`, `xmlLang`;\n *   for JSX components written in MDX, the author has to be aware of which\n *   framework they use and write code accordingly;\n *   for AST nodes generated by this project, this option configures it\n * @property {'md' | 'mdx' | null | undefined} [format='mdx']\n *   format of the file (default: `'mdx'`);\n *   `'md'` means treat as markdown and `'mdx'` means treat as MDX.\n * @property {boolean | null | undefined} [jsx=false]\n *   Whether to keep JSX (default: `false`);\n *   the default is to compile JSX away so that the resulting file is\n *   immediately runnable.\n * @property {string | null | undefined} [jsxImportSource='react']\n *   Place to import automatic JSX runtimes from (default: `'react'`);\n *   when in the `automatic` runtime, this is used to define an import for\n *   `Fragment`, `jsx`, `jsxDEV`, and `jsxs`.\n * @property {'automatic' | 'classic' | null | undefined} [jsxRuntime='automatic']\n *   JSX runtime to use (default: `'automatic'`);\n *   the automatic runtime compiles to `import _jsx from\n *   '$importSource/jsx-runtime'\\n_jsx('p')`;\n *   the classic runtime compiles to calls such as `h('p')`.\n *\n *   > 👉 **Note**: support for the classic runtime is deprecated and will\n *   > likely be removed in the next major version.\n * @property {ReadonlyArray<string> | null | undefined} [mdExtensions]\n *   List of markdown extensions, with dot (default: `['.md', '.markdown', …]`);\n *   affects integrations.\n * @property {ReadonlyArray<string> | null | undefined} [mdxExtensions]\n *   List of MDX extensions, with dot (default: `['.mdx']`);\n *   affects integrations.\n * @property {'function-body' | 'program' | null | undefined} [outputFormat='program']\n *   Output format to generate (default: `'program'`);\n *   in most cases `'program'` should be used, it results in a whole program;\n *   internally `evaluate` uses `'function-body'` to compile to\n *   code that can be passed to `run`;\n *   in some cases, you might want what `evaluate` does in separate steps, such\n *   as when compiling on the server and running on the client.\n * @property {string | null | undefined} [pragma='React.createElement']\n *   Pragma for JSX, used in the classic runtime as an identifier for function\n *   calls: `<x />` to `React.createElement('x')` (default:\n *   `'React.createElement'`);\n *   when changing this, you should also define `pragmaFrag` and\n *   `pragmaImportSource` too.\n *\n *   > 👉 **Note**: support for the classic runtime is deprecated and will\n *   > likely be removed in the next major version.\n * @property {string | null | undefined} [pragmaFrag='React.Fragment']\n *   Pragma for fragment symbol, used in the classic runtime as an identifier\n *   for unnamed calls: `<>` to `React.createElement(React.Fragment)` (default:\n *   `'React.Fragment'`);\n *   when changing this, you should also define `pragma` and\n *   `pragmaImportSource` too.\n *\n *   > 👉 **Note**: support for the classic runtime is deprecated and will\n *   > likely be removed in the next major version.\n * @property {string | null | undefined} [pragmaImportSource='react']\n *   Where to import the identifier of `pragma` from, used in the classic\n *   runtime (default: `'react'`);\n *   to illustrate, when `pragma` is `'a.b'` and `pragmaImportSource` is `'c'`\n *   the following will be generated: `import a from 'c'` and things such as\n *   `a.b('h1', {})`.\n *   when changing this, you should also define `pragma` and `pragmaFrag` too.\n *\n *   > 👉 **Note**: support for the classic runtime is deprecated and will\n *   > likely be removed in the next major version.\n * @property {string | null | undefined} [providerImportSource]\n *   Place to import a provider from (optional, example: `'@mdx-js/react'`);\n *   normally it’s used for runtimes that support context (React, Preact), but\n *   it can be used to inject components into the compiled code;\n *   the module must export and identifier `useMDXComponents` which is called\n *   without arguments to get an object of components (`MDXComponents` from\n *   `mdx/types.js`).\n * @property {PluggableList | null | undefined} [recmaPlugins]\n *   List of recma plugins (optional).\n * @property {PluggableList | null | undefined} [remarkPlugins]\n *   List of remark plugins (optional).\n * @property {PluggableList | null | undefined} [rehypePlugins]\n *   List of rehype plugins (optional).\n * @property {Readonly<RemarkRehypeOptions> | null | undefined} [remarkRehypeOptions]\n *   Options to pass to `remark-rehype` (optional);\n *   in particular, you might want to pass configuration for footnotes if your\n *   content is not in English;\n *   the option `allowDangerousHtml` will always be set to `true` and the MDX\n *   nodes (see `nodeTypes`) are passed through.\n * @property {RehypeRecmaOptions['stylePropertyNameCase']} [stylePropertyNameCase='dom']\n *   Casing to use for property names in `style` objects (default: `'dom'`);\n *   CSS casing is for example `background-color` and `-webkit-line-clamp`;\n *   DOM casing is for example `backgroundColor` and `WebkitLineClamp`;\n *   for JSX components written in MDX, the author has to be aware of which\n *   framework they use and write code accordingly;\n *   for AST nodes generated by this project, this option configures it\n * @property {boolean | null | undefined} [tableCellAlignToStyle=true]\n *   Turn obsolete `align` properties on `td` and `th` into CSS `style`\n *   properties (default: `true`).\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst removedOptions = [\n  'compilers',\n  'filepath',\n  'hastPlugins',\n  'mdPlugins',\n  'skipExport',\n  'wrapExport'\n]\n\nlet warned = false\n\n/**\n * Create a processor to compile markdown or MDX to JavaScript.\n *\n * > **Note**: `format: 'detect'` is not allowed in `ProcessorOptions`.\n *\n * @param {Readonly<ProcessorOptions> | null | undefined} [options]\n *   Configuration (optional).\n * @return {Processor<Root, Program, Program, Program, string>}\n *   Processor.\n */\nfunction core_createProcessor(options) {\n  const settings = options || {}\n  let index = -1\n\n  while (++index < removedOptions.length) {\n    const key = removedOptions[index]\n    if (key in settings) {\n      unreachable(\n        'Unexpected removed option `' +\n          key +\n          '`; see <https://mdxjs.com/migrating/v2/> on how to migrate'\n      )\n    }\n  }\n\n  // @ts-expect-error: throw an error for a runtime value which is not allowed\n  // by the types.\n  if (settings.format === 'detect') {\n    unreachable(\n      \"Unexpected `format: 'detect'`, which is not supported by `createProcessor`, expected `'mdx'` or `'md'`\"\n    )\n  }\n\n  if (\n    (settings.jsxRuntime === 'classic' ||\n      settings.pragma ||\n      settings.pragmaFrag ||\n      settings.pragmaImportSource) &&\n    !warned\n  ) {\n    warned = true\n    console.warn(\n      \"Unexpected deprecated option `jsxRuntime: 'classic'`, `pragma`, `pragmaFrag`, or `pragmaImportSource`; see <https://mdxjs.com/migrating/v3/> on how to migrate\"\n    )\n  }\n\n  const pipeline = unified().use(remarkParse)\n\n  if (settings.format !== 'md') {\n    pipeline.use(remarkMdx)\n  }\n\n  const remarkRehypeOptions = settings.remarkRehypeOptions || {}\n\n  pipeline\n    .use(remarkMarkAndUnravel)\n    .use(settings.remarkPlugins || [])\n    .use(remarkRehype, {\n      ...remarkRehypeOptions,\n      allowDangerousHtml: true,\n      passThrough: [...(remarkRehypeOptions.passThrough || []), ...nodeTypes]\n    })\n    .use(settings.rehypePlugins || [])\n\n  if (settings.format === 'md') {\n    pipeline.use(rehypeRemoveRaw)\n  }\n\n  pipeline\n    // @ts-expect-error: `Program` is close enough to a `Node`,\n    // but type inference has trouble with it and bridges.\n    .use(rehypeRecma, settings)\n    .use(recmaDocument, settings)\n    .use(recmaJsxRewrite, settings)\n\n  if (!settings.jsx) {\n    pipeline.use(recmaJsx, settings).use(recmaBuildJsxTransform, settings)\n  }\n\n  pipeline\n    .use(lib_recmaJsx)\n    .use(recmaStringify, settings)\n    .use(settings.recmaPlugins || [])\n\n  // @ts-expect-error: TS doesn’t get the plugins we added with if-statements.\n  return pipeline\n}\n\n;// ./node_modules/@mdx-js/mdx/lib/compile.js\n/**\n * @import {Compatible, VFile} from 'vfile'\n * @import {ProcessorOptions} from './core.js'\n */\n\n/**\n * @typedef {Omit<ProcessorOptions, 'format'>} CoreProcessorOptions\n *   Core configuration.\n *\n * @typedef ExtraOptions\n *   Extra configuration.\n * @property {'detect' | 'md' | 'mdx' | null | undefined} [format='detect']\n *   Format of `file` (default: `'detect'`).\n *\n * @typedef {CoreProcessorOptions & ExtraOptions} CompileOptions\n *   Configuration for `compile`.\n *\n *   `CompileOptions` is the same as `ProcessorOptions` with the exception that\n *   the `format` option supports a `'detect'` value, which is the default.\n *   The `'detect'` format means to use `'md'` for files with an extension in\n *   `mdExtensions` and `'mdx'` otherwise.\n */\n\n\n\n\n/**\n * Compile MDX to JS.\n *\n * @param {Readonly<Compatible>} vfileCompatible\n *   MDX document to parse.\n * @param {Readonly<CompileOptions> | null | undefined} [compileOptions]\n *   Compile configuration (optional).\n * @return {Promise<VFile>}\n *   Promise to compiled file.\n */\nfunction compile(vfileCompatible, compileOptions) {\n  const {file, options} = resolveFileAndOptions(vfileCompatible, compileOptions)\n  return createProcessor(options).process(file)\n}\n\n/**\n * Synchronously compile MDX to JS.\n *\n * When possible please use the async `compile`.\n *\n * @param {Readonly<Compatible>} vfileCompatible\n *   MDX document to parse.\n * @param {Readonly<CompileOptions> | null | undefined} [compileOptions]\n *   Compile configuration (optional).\n * @return {VFile}\n *   Compiled file.\n */\nfunction compileSync(vfileCompatible, compileOptions) {\n  const {file, options} = resolve_file_and_options_resolveFileAndOptions(vfileCompatible, compileOptions)\n  return core_createProcessor(options).processSync(file)\n}\n\n// EXTERNAL MODULE: ./node_modules/deepmerge/dist/cjs.js\nvar cjs = __webpack_require__(4744);\nvar cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);\n;// ./node_modules/hast-util-to-parse5/lib/index.js\n/**\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Doctype} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').RootContent} RootContent\n * @typedef {import('hast').Text} Text\n *\n * @typedef {import('parse5').DefaultTreeAdapterMap['document']} Parse5Document\n * @typedef {import('parse5').DefaultTreeAdapterMap['documentFragment']} Parse5Fragment\n * @typedef {import('parse5').DefaultTreeAdapterMap['element']} Parse5Element\n * @typedef {import('parse5').DefaultTreeAdapterMap['node']} Parse5Nodes\n * @typedef {import('parse5').DefaultTreeAdapterMap['documentType']} Parse5Doctype\n * @typedef {import('parse5').DefaultTreeAdapterMap['commentNode']} Parse5Comment\n * @typedef {import('parse5').DefaultTreeAdapterMap['textNode']} Parse5Text\n * @typedef {import('parse5').DefaultTreeAdapterMap['parentNode']} Parse5Parent\n * @typedef {import('parse5').Token.Attribute} Parse5Attribute\n *\n * @typedef {import('property-information').Schema} Schema\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {Space | null | undefined} [space='html']\n *   Which space the document is in (default: `'html'`).\n *\n *   When an `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it.\n *\n * @typedef {Exclude<Parse5Nodes, Parse5Document | Parse5Fragment>} Parse5Content\n *\n * @typedef {'html' | 'svg'} Space\n */\n\n\n\n\n\n\n\n\n/** @type {Options} */\nconst hast_util_to_parse5_lib_emptyOptions = {}\n\nconst hast_util_to_parse5_lib_own = {}.hasOwnProperty\n\nconst hast_util_to_parse5_lib_one = zwitch('type', {handlers: {root: lib_root, element: hast_util_to_parse5_lib_element, text: lib_text, comment: lib_comment, doctype}})\n\n/**\n * Transform a hast tree to a `parse5` AST.\n *\n * @param {Nodes} tree\n *   Tree to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Parse5Nodes}\n *   `parse5` node.\n */\nfunction toParse5(tree, options) {\n  const settings = options || hast_util_to_parse5_lib_emptyOptions\n  const space = settings.space\n  return hast_util_to_parse5_lib_one(tree, space === 'svg' ? property_information_svg : property_information_html)\n}\n\n/**\n * @param {Root} node\n *   Node (hast) to transform.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Parse5Document}\n *   Parse5 node.\n */\nfunction lib_root(node, schema) {\n  /** @type {Parse5Document} */\n  const result = {\n    nodeName: '#document',\n    // @ts-expect-error: `parse5` uses enums, which are actually strings.\n    mode: (node.data || {}).quirksMode ? 'quirks' : 'no-quirks',\n    childNodes: []\n  }\n  result.childNodes = hast_util_to_parse5_lib_all(node.children, result, schema)\n  lib_patch(node, result)\n  return result\n}\n\n/**\n * @param {Root} node\n *   Node (hast) to transform.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Parse5Fragment}\n *   Parse5 node.\n */\nfunction fragment(node, schema) {\n  /** @type {Parse5Fragment} */\n  const result = {nodeName: '#document-fragment', childNodes: []}\n  result.childNodes = hast_util_to_parse5_lib_all(node.children, result, schema)\n  lib_patch(node, result)\n  return result\n}\n\n/**\n * @param {Doctype} node\n *   Node (hast) to transform.\n * @returns {Parse5Doctype}\n *   Parse5 node.\n */\nfunction doctype(node) {\n  /** @type {Parse5Doctype} */\n  const result = {\n    nodeName: '#documentType',\n    name: 'html',\n    publicId: '',\n    systemId: '',\n    parentNode: null\n  }\n\n  lib_patch(node, result)\n  return result\n}\n\n/**\n * @param {Text} node\n *   Node (hast) to transform.\n * @returns {Parse5Text}\n *   Parse5 node.\n */\nfunction lib_text(node) {\n  /** @type {Parse5Text} */\n  const result = {\n    nodeName: '#text',\n    value: node.value,\n    parentNode: null\n  }\n  lib_patch(node, result)\n  return result\n}\n\n/**\n * @param {Comment} node\n *   Node (hast) to transform.\n * @returns {Parse5Comment}\n *   Parse5 node.\n */\nfunction lib_comment(node) {\n  /** @type {Parse5Comment} */\n  const result = {\n    nodeName: '#comment',\n    data: node.value,\n    parentNode: null\n  }\n\n  lib_patch(node, result)\n\n  return result\n}\n\n/**\n * @param {Element} node\n *   Node (hast) to transform.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Parse5Element}\n *   Parse5 node.\n */\nfunction hast_util_to_parse5_lib_element(node, schema) {\n  const parentSchema = schema\n  let currentSchema = parentSchema\n\n  if (\n    node.type === 'element' &&\n    node.tagName.toLowerCase() === 'svg' &&\n    parentSchema.space === 'html'\n  ) {\n    currentSchema = property_information_svg\n  }\n\n  /** @type {Array<Parse5Attribute>} */\n  const attrs = []\n  /** @type {string} */\n  let prop\n\n  if (node.properties) {\n    for (prop in node.properties) {\n      if (prop !== 'children' && hast_util_to_parse5_lib_own.call(node.properties, prop)) {\n        const result = createProperty(\n          currentSchema,\n          prop,\n          node.properties[prop]\n        )\n\n        if (result) {\n          attrs.push(result)\n        }\n      }\n    }\n  }\n\n  const space = currentSchema.space\n  // `html` and `svg` both have a space.\n  default_ok(space)\n\n  /** @type {Parse5Element} */\n  const result = {\n    nodeName: node.tagName,\n    tagName: node.tagName,\n    attrs,\n    // @ts-expect-error: `parse5` types are wrong.\n    namespaceURI: webNamespaces[space],\n    childNodes: [],\n    parentNode: null\n  }\n  result.childNodes = hast_util_to_parse5_lib_all(node.children, result, currentSchema)\n  lib_patch(node, result)\n\n  if (node.tagName === 'template' && node.content) {\n    // @ts-expect-error: `parse5` types are wrong.\n    result.content = fragment(node.content, currentSchema)\n  }\n\n  return result\n}\n\n/**\n * Handle a property.\n *\n * @param {Schema} schema\n *   Current schema.\n * @param {string} prop\n *   Key.\n * @param {Array<number | string> | boolean | number | string | null | undefined} value\n *   hast property value.\n * @returns {Parse5Attribute | undefined}\n *   Field for runtime, optional.\n */\nfunction createProperty(schema, prop, value) {\n  const info = find(schema, prop)\n\n  // Ignore nullish and `NaN` values.\n  if (\n    value === false ||\n    value === null ||\n    value === undefined ||\n    (typeof value === 'number' && Number.isNaN(value)) ||\n    (!value && info.boolean)\n  ) {\n    return\n  }\n\n  if (Array.isArray(value)) {\n    // Accept `array`.\n    // Most props are space-separated.\n    value = info.commaSeparated ? comma_separated_tokens_stringify(value) : space_separated_tokens_stringify(value)\n  }\n\n  /** @type {Parse5Attribute} */\n  const attribute = {\n    name: info.attribute,\n    value: value === true ? '' : String(value)\n  }\n\n  if (info.space && info.space !== 'html' && info.space !== 'svg') {\n    const index = attribute.name.indexOf(':')\n\n    if (index < 0) {\n      attribute.prefix = ''\n    } else {\n      attribute.name = attribute.name.slice(index + 1)\n      attribute.prefix = info.attribute.slice(0, index)\n    }\n\n    attribute.namespace = webNamespaces[info.space]\n  }\n\n  return attribute\n}\n\n/**\n * Transform all hast nodes.\n *\n * @param {Array<RootContent>} children\n *   List of children.\n * @param {Parse5Parent} parentNode\n *   `parse5` parent node.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Array<Parse5Content>}\n *   Transformed children.\n */\nfunction hast_util_to_parse5_lib_all(children, parentNode, schema) {\n  let index = -1\n  /** @type {Array<Parse5Content>} */\n  const results = []\n\n  if (children) {\n    while (++index < children.length) {\n      /** @type {Parse5Content} */\n      const child = hast_util_to_parse5_lib_one(children[index], schema)\n\n      child.parentNode = parentNode\n\n      results.push(child)\n    }\n  }\n\n  return results\n}\n\n/**\n * Add position info from `from` to `to`.\n *\n * @param {Nodes} from\n *   hast node.\n * @param {Parse5Nodes} to\n *   `parse5` node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction lib_patch(from, to) {\n  const position = from.position\n\n  if (position && position.start && position.end) {\n    default_ok(typeof position.start.offset === 'number')\n    default_ok(typeof position.end.offset === 'number')\n\n    to.sourceCodeLocation = {\n      startLine: position.start.line,\n      startCol: position.start.column,\n      startOffset: position.start.offset,\n      endLine: position.end.line,\n      endCol: position.end.column,\n      endOffset: position.end.offset\n    }\n  }\n}\n\n;// ./node_modules/html-void-elements/index.js\n/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nconst htmlVoidElements = [\n  'area',\n  'base',\n  'basefont',\n  'bgsound',\n  'br',\n  'col',\n  'command',\n  'embed',\n  'frame',\n  'hr',\n  'image',\n  'img',\n  'input',\n  'keygen',\n  'link',\n  'meta',\n  'param',\n  'source',\n  'track',\n  'wbr'\n]\n\n;// ./node_modules/hast-util-raw/lib/index.js\n/**\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Doctype} Doctype\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').RootContent} RootContent\n * @typedef {import('hast').Text} Text\n *\n * @typedef {import('hast-util-raw').Options} Options\n *\n * @typedef {import('mdast-util-to-hast').Raw} Raw\n *\n * @typedef {import('parse5').DefaultTreeAdapterMap} DefaultTreeAdapterMap\n * @typedef {import('parse5').ParserOptions<DefaultTreeAdapterMap>} ParserOptions\n * @typedef {import('parse5').Token.CharacterToken} CharacterToken\n * @typedef {import('parse5').Token.CommentToken} CommentToken\n * @typedef {import('parse5').Token.DoctypeToken} DoctypeToken\n * @typedef {import('parse5').Token.Location} Location\n * @typedef {import('parse5').Token.TagToken} TagToken\n *\n * @typedef {import('unist').Point} Point\n */\n\n/**\n * @typedef State\n *   Info passed around about the current state.\n * @property {(node: Nodes) => undefined} handle\n *   Add a hast node to the parser.\n * @property {Options} options\n *   User configuration.\n * @property {Parser<DefaultTreeAdapterMap>} parser\n *   Current parser.\n * @property {boolean} stitches\n *   Whether there are stitches.\n */\n\n/**\n * @typedef Stitch\n *   Custom comment-like value we pass through parse5, which contains a\n *   replacement node that we’ll swap back in afterwards.\n * @property {'comment'} type\n *   Node type.\n * @property {{stitch: Nodes}} value\n *   Replacement value.\n */\n\n\n\n\n\n\n\n\n\n\n\n// Node types associated with MDX.\n// <https://github.com/mdx-js/mdx/blob/8a56312/packages/mdx/lib/node-types.js>\nconst knownMdxNames = new Set([\n  'mdxFlowExpression',\n  'mdxJsxFlowElement',\n  'mdxJsxTextElement',\n  'mdxTextExpression',\n  'mdxjsEsm'\n])\n\n/** @type {ParserOptions} */\nconst lib_parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\n/**\n * Pass a hast tree through an HTML parser, which will fix nesting, and turn\n * raw nodes into actual nodes.\n *\n * @param {Nodes} tree\n *   Original hast tree to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Nodes}\n *   Parsed again tree.\n */\nfunction raw(tree, options) {\n  const document = documentMode(tree)\n  /** @type {(node: Nodes, state: State) => undefined} */\n  const one = zwitch('type', {\n    handlers: {root: hast_util_raw_lib_root, element: hast_util_raw_lib_element, text: hast_util_raw_lib_text, comment: hast_util_raw_lib_comment, doctype: lib_doctype, raw: handleRaw},\n    unknown: lib_unknown\n  })\n\n  /** @type {State} */\n  const state = {\n    parser: document\n      ? new Parser(lib_parseOptions)\n      : Parser.getFragmentParser(undefined, lib_parseOptions),\n    handle(node) {\n      one(node, state)\n    },\n    stitches: false,\n    options: options || {}\n  }\n\n  one(tree, state)\n  resetTokenizer(state, pointStart())\n\n  const p5 = document ? state.parser.document : state.parser.getFragment()\n  const result = fromParse5(p5, {\n    // To do: support `space`?\n    file: state.options.file\n  })\n\n  if (state.stitches) {\n    visit(result, 'comment', function (node, index, parent) {\n      const stitch = /** @type {Stitch} */ (/** @type {unknown} */ (node))\n      if (stitch.value.stitch && parent && index !== undefined) {\n        /** @type {Array<RootContent>} */\n        const siblings = parent.children\n        // @ts-expect-error: assume the stitch is allowed.\n        siblings[index] = stitch.value.stitch\n        return index\n      }\n    })\n  }\n\n  // Unpack if possible and when not given a `root`.\n  if (\n    result.type === 'root' &&\n    result.children.length === 1 &&\n    result.children[0].type === tree.type\n  ) {\n    return result.children[0]\n  }\n\n  return result\n}\n\n/**\n * Transform all nodes\n *\n * @param {Array<RootContent>} nodes\n *   hast content.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction hast_util_raw_lib_all(nodes, state) {\n  let index = -1\n\n  /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n  if (nodes) {\n    while (++index < nodes.length) {\n      state.handle(nodes[index])\n    }\n  }\n}\n\n/**\n * Transform a root.\n *\n * @param {Root} node\n *   hast root node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction hast_util_raw_lib_root(node, state) {\n  hast_util_raw_lib_all(node.children, state)\n}\n\n/**\n * Transform an element.\n *\n * @param {Element} node\n *   hast element node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction hast_util_raw_lib_element(node, state) {\n  startTag(node, state)\n\n  hast_util_raw_lib_all(node.children, state)\n\n  endTag(node, state)\n}\n\n/**\n * Transform a text.\n *\n * @param {Text} node\n *   hast text node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction hast_util_raw_lib_text(node, state) {\n  /** @type {CharacterToken} */\n  const token = {\n    type: TokenType.CHARACTER,\n    chars: node.value,\n    location: createParse5Location(node)\n  }\n\n  resetTokenizer(state, pointStart(node))\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.currentToken = token\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser._processToken(state.parser.currentToken)\n}\n\n/**\n * Transform a doctype.\n *\n * @param {Doctype} node\n *   hast doctype node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction lib_doctype(node, state) {\n  /** @type {DoctypeToken} */\n  const token = {\n    type: TokenType.DOCTYPE,\n    name: 'html',\n    forceQuirks: false,\n    publicId: '',\n    systemId: '',\n    location: createParse5Location(node)\n  }\n\n  resetTokenizer(state, pointStart(node))\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.currentToken = token\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser._processToken(state.parser.currentToken)\n}\n\n/**\n * Transform a stitch.\n *\n * @param {Nodes} node\n *   unknown node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction stitch(node, state) {\n  // Mark that there are stitches, so we need to walk the tree and revert them.\n  state.stitches = true\n\n  /** @type {Nodes} */\n  const clone = cloneWithoutChildren(node)\n\n  // Recurse, because to somewhat handle `[<x>]</x>` (where `[]` denotes the\n  // passed through node).\n  if ('children' in node && 'children' in clone) {\n    // Root in root out.\n    const fakeRoot = /** @type {Root} */ (\n      raw({type: 'root', children: node.children}, state.options)\n    )\n    clone.children = fakeRoot.children\n  }\n\n  // Hack: `value` is supposed to be a string, but as none of the tools\n  // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n  // through.\n  hast_util_raw_lib_comment({type: 'comment', value: {stitch: clone}}, state)\n}\n\n/**\n * Transform a comment (or stitch).\n *\n * @param {Comment | Stitch} node\n *   hast comment node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction hast_util_raw_lib_comment(node, state) {\n  /** @type {string} */\n  // @ts-expect-error: we pass stitches through.\n  const data = node.value\n\n  /** @type {CommentToken} */\n  const token = {\n    type: TokenType.COMMENT,\n    data,\n    location: createParse5Location(node)\n  }\n  resetTokenizer(state, pointStart(node))\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.currentToken = token\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser._processToken(state.parser.currentToken)\n}\n\n/**\n * Transform a raw node.\n *\n * @param {Raw} node\n *   hast raw node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction handleRaw(node, state) {\n  // Reset preprocessor:\n  // See: <https://github.com/inikulin/parse5/blob/6f7ca60/packages/parse5/lib/tokenizer/preprocessor.ts#L18-L31>.\n  state.parser.tokenizer.preprocessor.html = ''\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.pos = -1\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.lastGapPos = -2\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.gapStack = []\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.skipNextNewLine = false\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.lastChunkWritten = false\n  state.parser.tokenizer.preprocessor.endOfChunkHit = false\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.isEol = false\n\n  // Now pass `node.value`.\n  setPoint(state, pointStart(node))\n  state.parser.tokenizer.write(node.value, false)\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer._runParsingLoop()\n\n  // Character references hang, so if we ended there, we need to flush\n  // those too.\n  // We reset the preprocessor as if the document ends here.\n  // Then one single call to the relevant state does the trick, parse5\n  // consumes the whole token.\n\n  // Note: `State` is not exposed by `parse5`, so these numbers are fragile.\n  // See: <https://github.com/inikulin/parse5/blob/46cba43/packages/parse5/lib/tokenizer/index.ts#L58>\n  // Note: a change to `parse5`, which breaks this, was merged but not released.\n  // Investigate when it is.\n  if (\n    state.parser.tokenizer.state === 72 /* NAMED_CHARACTER_REFERENCE */ ||\n    state.parser.tokenizer.state === 78 /* NUMERIC_CHARACTER_REFERENCE_END */\n  ) {\n    // @ts-expect-error: private.\n    // type-coverage:ignore-next-line\n    state.parser.tokenizer.preprocessor.lastChunkWritten = true\n    /** @type {number} */\n    // @ts-expect-error: private.\n    // type-coverage:ignore-next-line\n    const cp = state.parser.tokenizer._consume()\n    // @ts-expect-error: private.\n    // type-coverage:ignore-next-line\n    state.parser.tokenizer._callState(cp)\n  }\n}\n\n/**\n * Crash on an unknown node.\n *\n * @param {unknown} node_\n *   unknown node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Never.\n */\nfunction lib_unknown(node_, state) {\n  const node = /** @type {Nodes} */ (node_)\n\n  if (\n    state.options.passThrough &&\n    state.options.passThrough.includes(node.type)\n  ) {\n    stitch(node, state)\n  } else {\n    let extra = ''\n\n    if (knownMdxNames.has(node.type)) {\n      extra =\n        \". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax\"\n    }\n\n    throw new Error('Cannot compile `' + node.type + '` node' + extra)\n  }\n}\n\n/**\n * Reset the tokenizer of a parser.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Point | undefined} point\n *   Point.\n * @returns {undefined}\n *   Nothing.\n */\nfunction resetTokenizer(state, point) {\n  setPoint(state, point)\n\n  // Process final characters if they’re still there after hibernating.\n  /** @type {CharacterToken} */\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  const token = state.parser.tokenizer.currentCharacterToken\n\n  if (token && token.location) {\n    token.location.endLine = state.parser.tokenizer.preprocessor.line\n    token.location.endCol = state.parser.tokenizer.preprocessor.col + 1\n    token.location.endOffset = state.parser.tokenizer.preprocessor.offset + 1\n    // @ts-expect-error: private.\n    // type-coverage:ignore-next-line\n    state.parser.currentToken = token\n    // @ts-expect-error: private.\n    // type-coverage:ignore-next-line\n    state.parser._processToken(state.parser.currentToken)\n  }\n\n  // Reset tokenizer:\n  // See: <https://github.com/inikulin/parse5/blob/6f7ca60/packages/parse5/lib/tokenizer/index.ts#L187-L223>.\n  // Especially putting it back in the `data` state is useful: some elements,\n  // like textareas and iframes, change the state.\n  // See GH-7.\n  // But also if broken HTML is in `raw`, and then a correct element is given.\n  // See GH-11.\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.paused = false\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.inLoop = false\n\n  // Note: don’t reset `state`, `inForeignNode`, or `lastStartTagName`, we\n  // manually update those when needed.\n  state.parser.tokenizer.active = false\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.returnState = TokenizerMode.DATA\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.charRefCode = -1\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.consumedAfterSnapshot = -1\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.currentLocation = null\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.currentCharacterToken = null\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.currentToken = null\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.currentAttr = {name: '', value: ''}\n}\n\n/**\n * Set current location.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Point | undefined} point\n *   Point.\n * @returns {undefined}\n *   Nothing.\n */\nfunction setPoint(state, point) {\n  if (point && point.offset !== undefined) {\n    /** @type {Location} */\n    const location = {\n      startLine: point.line,\n      startCol: point.column,\n      startOffset: point.offset,\n      endLine: -1,\n      endCol: -1,\n      endOffset: -1\n    }\n\n    // @ts-expect-error: private.\n    // type-coverage:ignore-next-line\n    state.parser.tokenizer.preprocessor.lineStartPos = -point.column + 1 // Looks weird, but ensures we get correct positional info.\n    state.parser.tokenizer.preprocessor.droppedBufferSize = point.offset\n    state.parser.tokenizer.preprocessor.line = point.line\n    // @ts-expect-error: private.\n    // type-coverage:ignore-next-line\n    state.parser.tokenizer.currentLocation = location\n  }\n}\n\n/**\n * Emit a start tag.\n *\n * @param {Element} node\n *   Element.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction startTag(node, state) {\n  const tagName = node.tagName.toLowerCase()\n\n  // Ignore tags if we’re in plain text.\n  if (state.parser.tokenizer.state === TokenizerMode.PLAINTEXT) return\n\n  resetTokenizer(state, pointStart(node))\n\n  const current = state.parser.openElements.current\n  let ns = 'namespaceURI' in current ? current.namespaceURI : webNamespaces.html\n\n  if (ns === webNamespaces.html && tagName === 'svg') {\n    ns = webNamespaces.svg\n  }\n\n  const result = toParse5(\n    // Shallow clone to not delve into `children`: we only need the attributes.\n    {...node, children: []},\n    {space: ns === webNamespaces.svg ? 'svg' : 'html'}\n  )\n\n  /** @type {TagToken} */\n  const tag = {\n    type: TokenType.START_TAG,\n    tagName,\n    tagID: getTagID(tagName),\n    // We always send start and end tags.\n    selfClosing: false,\n    ackSelfClosing: false,\n    // Always element.\n    /* c8 ignore next */\n    attrs: 'attrs' in result ? result.attrs : [],\n    location: createParse5Location(node)\n  }\n\n  // The HTML parsing algorithm works by doing half of the state management in\n  // the tokenizer and half in the parser.\n  // We can’t use the tokenizer here, as we don’t have strings.\n  // So we act *as if* the tokenizer emits tokens:\n\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.currentToken = tag\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser._processToken(state.parser.currentToken)\n\n  // …but then we still need a bunch of work that the tokenizer would normally\n  // do, such as:\n\n  // Set a tag name, similar to how the tokenizer would do it.\n  state.parser.tokenizer.lastStartTagName = tagName\n\n  // `inForeignNode` is correctly set by the parser.\n}\n\n/**\n * Emit an end tag.\n *\n * @param {Element} node\n *   Element.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction endTag(node, state) {\n  const tagName = node.tagName.toLowerCase()\n  // Do not emit closing tags for HTML void elements.\n  if (\n    !state.parser.tokenizer.inForeignNode &&\n    htmlVoidElements.includes(tagName)\n  ) {\n    return\n  }\n\n  // Ignore tags if we’re in plain text.\n  if (state.parser.tokenizer.state === TokenizerMode.PLAINTEXT) return\n\n  resetTokenizer(state, pointEnd(node))\n\n  /** @type {TagToken} */\n  const tag = {\n    type: TokenType.END_TAG,\n    tagName,\n    tagID: getTagID(tagName),\n    selfClosing: false,\n    ackSelfClosing: false,\n    attrs: [],\n    location: createParse5Location(node)\n  }\n\n  // The HTML parsing algorithm works by doing half of the state management in\n  // the tokenizer and half in the parser.\n  // We can’t use the tokenizer here, as we don’t have strings.\n  // So we act *as if* the tokenizer emits tokens:\n\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.currentToken = tag\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser._processToken(state.parser.currentToken)\n\n  // …but then we still need a bunch of work that the tokenizer would normally\n  // do, such as:\n\n  // Switch back to the data state after alternative states that don’t accept\n  // tags:\n  if (\n    // Current element is closed.\n    tagName === state.parser.tokenizer.lastStartTagName &&\n    // `<textarea>` and `<title>`\n    (state.parser.tokenizer.state === TokenizerMode.RCDATA ||\n      // `<iframe>`, `<noembed>`, `<style>`, `<xmp>`\n      state.parser.tokenizer.state === TokenizerMode.RAWTEXT ||\n      // `<script>`\n      state.parser.tokenizer.state === TokenizerMode.SCRIPT_DATA)\n  ) {\n    state.parser.tokenizer.state = TokenizerMode.DATA\n  }\n}\n\n/**\n * Check if `node` represents a whole document or a fragment.\n *\n * @param {Nodes} node\n *   hast node.\n * @returns {boolean}\n *   Whether this represents a whole document or a fragment.\n */\nfunction documentMode(node) {\n  const head = node.type === 'root' ? node.children[0] : node\n  return Boolean(\n    head &&\n      (head.type === 'doctype' ||\n        (head.type === 'element' && head.tagName.toLowerCase() === 'html'))\n  )\n}\n\n/**\n * Get a `parse5` location from a node.\n *\n * @param {Nodes | Stitch} node\n *   hast node.\n * @returns {Location}\n *   `parse5` location.\n */\nfunction createParse5Location(node) {\n  const start = pointStart(node) || {\n    line: undefined,\n    column: undefined,\n    offset: undefined\n  }\n  const end = pointEnd(node) || {\n    line: undefined,\n    column: undefined,\n    offset: undefined\n  }\n\n  /** @type {Record<keyof Location, number | undefined>} */\n  const location = {\n    startLine: start.line,\n    startCol: start.column,\n    startOffset: start.offset,\n    endLine: end.line,\n    endCol: end.column,\n    endOffset: end.offset\n  }\n\n  // @ts-expect-error: unist point values can be `undefined` in hast, which\n  // `parse5` types don’t want.\n  return location\n}\n\n/**\n * @template {Nodes} NodeType\n *   Node type.\n * @param {NodeType} node\n *   Node to clone.\n * @returns {NodeType}\n *   Cloned node, without children.\n */\nfunction cloneWithoutChildren(node) {\n  return 'children' in node\n    ? esm({...node, children: []})\n    : esm(node)\n}\n\n;// ./node_modules/rehype-raw/lib/index.js\n/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-raw').Options} RawOptions\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit<RawOptions, 'file'>} Options\n *   Configuration.\n */\n\n\n\n/**\n * Parse the tree (and raw nodes) again, keeping positional info okay.\n *\n * @param {Options | null | undefined}  [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nfunction rehypeRaw(options) {\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @param {VFile} file\n   *   File.\n   * @returns {Root}\n   *   New tree.\n   */\n  return function (tree, file) {\n    // Assume root in -> root out.\n    const result = /** @type {Root} */ (raw(tree, {...options, file}))\n    return result\n  }\n}\n\n;// ./node_modules/rehype-sanitize/node_modules/hast-util-sanitize/lib/schema.js\n/**\n * @import {Schema} from 'hast-util-sanitize'\n */\n\n// Couple of ARIA attributes allowed in several, but not all, places.\nconst schema_aria = ['ariaDescribedBy', 'ariaLabel', 'ariaLabelledBy']\n\n/**\n * Default schema.\n *\n * Follows GitHub style sanitation.\n *\n * @type {Schema}\n */\nconst defaultSchema = {\n  ancestors: {\n    tbody: ['table'],\n    td: ['table'],\n    th: ['table'],\n    thead: ['table'],\n    tfoot: ['table'],\n    tr: ['table']\n  },\n  attributes: {\n    a: [\n      ...schema_aria,\n      // Note: these 3 are used by GFM footnotes, they do work on all links.\n      'dataFootnoteBackref',\n      'dataFootnoteRef',\n      ['className', 'data-footnote-backref'],\n      'href'\n    ],\n    blockquote: ['cite'],\n    // Note: this class is not normally allowed by GH, when manually writing\n    // `code` as HTML in markdown, they adds it some other way.\n    // We can’t do that, so we have to allow it.\n    code: [['className', /^language-./]],\n    del: ['cite'],\n    div: ['itemScope', 'itemType'],\n    dl: [...schema_aria],\n    // Note: this is used by GFM footnotes.\n    h2: [['className', 'sr-only']],\n    img: [...schema_aria, 'longDesc', 'src'],\n    // Note: `input` is not normally allowed by GH, when manually writing\n    // it in markdown, they add it from tasklists some other way.\n    // We can’t do that, so we have to allow it.\n    input: [\n      ['disabled', true],\n      ['type', 'checkbox']\n    ],\n    ins: ['cite'],\n    // Note: this class is not normally allowed by GH, when manually writing\n    // `li` as HTML in markdown, they adds it some other way.\n    // We can’t do that, so we have to allow it.\n    li: [['className', 'task-list-item']],\n    // Note: this class is not normally allowed by GH, when manually writing\n    // `ol` as HTML in markdown, they adds it some other way.\n    // We can’t do that, so we have to allow it.\n    ol: [...schema_aria, ['className', 'contains-task-list']],\n    q: ['cite'],\n    section: ['dataFootnotes', ['className', 'footnotes']],\n    source: ['srcSet'],\n    summary: [...schema_aria],\n    table: [...schema_aria],\n    // Note: this class is not normally allowed by GH, when manually writing\n    // `ol` as HTML in markdown, they adds it some other way.\n    // We can’t do that, so we have to allow it.\n    ul: [...schema_aria, ['className', 'contains-task-list']],\n    '*': [\n      'abbr',\n      'accept',\n      'acceptCharset',\n      'accessKey',\n      'action',\n      'align',\n      'alt',\n      'axis',\n      'border',\n      'cellPadding',\n      'cellSpacing',\n      'char',\n      'charOff',\n      'charSet',\n      'checked',\n      'clear',\n      'colSpan',\n      'color',\n      'cols',\n      'compact',\n      'coords',\n      'dateTime',\n      'dir',\n      // Note: `disabled` is technically allowed on all elements by GH.\n      // But it is useless on everything except `input`.\n      // Because `input`s are normally not allowed, but we allow them for\n      // checkboxes due to tasklists, we allow `disabled` only there.\n      'encType',\n      'frame',\n      'hSpace',\n      'headers',\n      'height',\n      'hrefLang',\n      'htmlFor',\n      'id',\n      'isMap',\n      'itemProp',\n      'label',\n      'lang',\n      'maxLength',\n      'media',\n      'method',\n      'multiple',\n      'name',\n      'noHref',\n      'noShade',\n      'noWrap',\n      'open',\n      'prompt',\n      'readOnly',\n      'rev',\n      'rowSpan',\n      'rows',\n      'rules',\n      'scope',\n      'selected',\n      'shape',\n      'size',\n      'span',\n      'start',\n      'summary',\n      'tabIndex',\n      'title',\n      'useMap',\n      'vAlign',\n      'value',\n      'width'\n    ]\n  },\n  clobber: ['ariaDescribedBy', 'ariaLabelledBy', 'id', 'name'],\n  clobberPrefix: 'user-content-',\n  protocols: {\n    cite: ['http', 'https'],\n    href: ['http', 'https', 'irc', 'ircs', 'mailto', 'xmpp'],\n    longDesc: ['http', 'https'],\n    src: ['http', 'https']\n  },\n  required: {\n    input: {disabled: true, type: 'checkbox'}\n  },\n  strip: ['script'],\n  tagNames: [\n    'a',\n    'b',\n    'blockquote',\n    'br',\n    'code',\n    'dd',\n    'del',\n    'details',\n    'div',\n    'dl',\n    'dt',\n    'em',\n    'h1',\n    'h2',\n    'h3',\n    'h4',\n    'h5',\n    'h6',\n    'hr',\n    'i',\n    'img',\n    // Note: `input` is not normally allowed by GH, when manually writing\n    // it in markdown, they add it from tasklists some other way.\n    // We can’t do that, so we have to allow it.\n    'input',\n    'ins',\n    'kbd',\n    'li',\n    'ol',\n    'p',\n    'picture',\n    'pre',\n    'q',\n    'rp',\n    'rt',\n    'ruby',\n    's',\n    'samp',\n    'section',\n    'source',\n    'span',\n    'strike',\n    'strong',\n    'sub',\n    'summary',\n    'sup',\n    'table',\n    'tbody',\n    'td',\n    'tfoot',\n    'th',\n    'thead',\n    'tr',\n    'tt',\n    'ul',\n    'var'\n  ]\n}\n\n;// ./node_modules/rehype-sanitize/node_modules/hast-util-sanitize/lib/index.js\n/**\n * @import {\n *   Comment,\n *   Doctype,\n *   ElementContent,\n *   Element,\n *   Nodes,\n *   Properties,\n *   RootContent,\n *   Root,\n *   Text\n * } from 'hast'\n */\n\n/**\n * @typedef {[string, ...Array<Exclude<Properties[keyof Properties], Array<any>> | RegExp>] | string} PropertyDefinition\n *   Definition for a property.\n *\n * @typedef Schema\n *   Schema that defines what nodes and properties are allowed.\n *\n *   The default schema is `defaultSchema`, which follows how GitHub cleans.\n *   If any top-level key is missing in the given schema, the corresponding\n *   value of the default schema is used.\n *\n *   To extend the standard schema with a few changes, clone `defaultSchema`\n *   like so:\n *\n *   ```js\n *   import deepmerge from 'deepmerge'\n *   import {h} from 'hastscript'\n *   import {defaultSchema, sanitize} from 'hast-util-sanitize'\n *\n *   // This allows `className` on all elements.\n *   const schema = deepmerge(defaultSchema, {attributes: {'*': ['className']}})\n *\n *   const tree = sanitize(h('div', {className: ['foo']}), schema)\n *\n *   // `tree` still has `className`.\n *   console.log(tree)\n *   // {\n *   //   type: 'element',\n *   //   tagName: 'div',\n *   //   properties: {className: ['foo']},\n *   //   children: []\n *   // }\n *   ```\n * @property {boolean | null | undefined} [allowComments=false]\n *   Whether to allow comment nodes (default: `false`).\n *\n *   For example:\n *\n *   ```js\n *   allowComments: true\n *   ```\n * @property {boolean | null | undefined} [allowDoctypes=false]\n *   Whether to allow doctype nodes (default: `false`).\n *\n *   For example:\n *\n *   ```js\n *   allowDoctypes: true\n *   ```\n * @property {Record<string, Array<string>> | null | undefined} [ancestors]\n *   Map of tag names to a list of tag names which are required ancestors\n *   (default: `defaultSchema.ancestors`).\n *\n *   Elements with these tag names will be ignored if they occur outside of one\n *   of their allowed parents.\n *\n *   For example:\n *\n *   ```js\n *   ancestors: {\n *     tbody: ['table'],\n *     // …\n *     tr: ['table']\n *   }\n *   ```\n * @property {Record<string, Array<PropertyDefinition>> | null | undefined} [attributes]\n *   Map of tag names to allowed property names (default:\n *   `defaultSchema.attributes`).\n *\n *   The special key `'*'` as a tag name defines property names allowed on all\n *   elements.\n *\n *   The special value `'data*'` as a property name can be used to allow all\n *   `data` properties.\n *\n *   For example:\n *\n *   ```js\n *   attributes: {\n *     'ariaDescribedBy', 'ariaLabel', 'ariaLabelledBy', …, 'href'\n *     // …\n *     '*': [\n *       'abbr',\n *       'accept',\n *       'acceptCharset',\n *       // …\n *       'vAlign',\n *       'value',\n *       'width'\n *     ]\n *   }\n *   ```\n *\n *   Instead of a single string in the array, which allows any property value\n *   for the field, you can use an array to allow several values.\n *   For example, `input: ['type']` allows `type` set to any value on `input`s.\n *   But `input: [['type', 'checkbox', 'radio']]` allows `type` when set to\n *   `'checkbox'` or `'radio'`.\n *\n *   You can use regexes, so for example `span: [['className', /^hljs-/]]`\n *   allows any class that starts with `hljs-` on `span`s.\n *\n *   When comma- or space-separated values are used (such as `className`), each\n *   value in is checked individually.\n *   For example, to allow certain classes on `span`s for syntax highlighting,\n *   use `span: [['className', 'number', 'operator', 'token']]`.\n *   This will allow `'number'`, `'operator'`, and `'token'` classes, but drop\n *   others.\n * @property {Array<string> | null | undefined} [clobber]\n *   List of property names that clobber (default: `defaultSchema.clobber`).\n *\n *   For example:\n *\n *   ```js\n *   clobber: ['ariaDescribedBy', 'ariaLabelledBy', 'id', 'name']\n *   ```\n * @property {string | null | undefined} [clobberPrefix]\n *   Prefix to use before clobbering properties (default:\n *   `defaultSchema.clobberPrefix`).\n *\n *   For example:\n *\n *   ```js\n *   clobberPrefix: 'user-content-'\n *   ```\n * @property {Record<string, Array<string> | null | undefined> | null | undefined} [protocols]\n *   Map of *property names* to allowed protocols (default:\n *   `defaultSchema.protocols`).\n *\n *   This defines URLs that are always allowed to have local URLs (relative to\n *   the current website, such as `this`, `#this`, `/this`, or `?this`), and\n *   only allowed to have remote URLs (such as `https://example.com`) if they\n *   use a known protocol.\n *\n *   For example:\n *\n *   ```js\n *   protocols: {\n *     cite: ['http', 'https'],\n *     // …\n *     src: ['http', 'https']\n *   }\n *   ```\n * @property {Record<string, Record<string, Properties[keyof Properties]>> | null | undefined} [required]\n *   Map of tag names to required property names with a default value\n *   (default: `defaultSchema.required`).\n *\n *   This defines properties that must be set.\n *   If a field does not exist (after the element was made safe), these will be\n *   added with the given value.\n *\n *   For example:\n *\n *   ```js\n *   required: {\n *     input: {disabled: true, type: 'checkbox'}\n *   }\n *   ```\n *\n *   > 👉 **Note**: properties are first checked based on `schema.attributes`,\n *   > then on `schema.required`.\n *   > That means properties could be removed by `attributes` and then added\n *   > again with `required`.\n * @property {Array<string> | null | undefined} [strip]\n *   List of tag names to strip from the tree (default: `defaultSchema.strip`).\n *\n *   By default, unsafe elements (those not in `schema.tagNames`) are replaced\n *   by what they contain.\n *   This option can drop their contents.\n *\n *   For example:\n *\n *   ```js\n *   strip: ['script']\n *   ```\n * @property {Array<string> | null | undefined} [tagNames]\n *   List of allowed tag names (default: `defaultSchema.tagNames`).\n *\n *   For example:\n *\n *   ```js\n *   tagNames: [\n *     'a',\n *     'b',\n *     // …\n *     'ul',\n *     'var'\n *   ]\n *   ```\n *\n * @typedef State\n *   Info passed around.\n * @property {Readonly<Schema>} schema\n *   Schema.\n * @property {Array<string>} stack\n *   Tag names of ancestors.\n */\n\n\n\n\n\nconst hast_util_sanitize_lib_own = {}.hasOwnProperty\n\n/**\n * Sanitize a tree.\n *\n * @param {Readonly<Nodes>} node\n *   Unsafe tree.\n * @param {Readonly<Schema> | null | undefined} [options]\n *   Configuration (default: `defaultSchema`).\n * @returns {Nodes}\n *   New, safe tree.\n */\nfunction sanitize(node, options) {\n  /** @type {Nodes} */\n  let result = {type: 'root', children: []}\n\n  /** @type {State} */\n  const state = {\n    schema: options ? {...defaultSchema, ...options} : defaultSchema,\n    stack: []\n  }\n  const replace = lib_transform(state, node)\n\n  if (replace) {\n    if (Array.isArray(replace)) {\n      if (replace.length === 1) {\n        result = replace[0]\n      } else {\n        result.children = replace\n      }\n    } else {\n      result = replace\n    }\n  }\n\n  return result\n}\n\n/**\n * Sanitize `node`.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<unknown>} node\n *   Unsafe node.\n * @returns {Array<ElementContent> | Nodes | undefined}\n *   Safe result.\n */\nfunction lib_transform(state, node) {\n  if (node && typeof node === 'object') {\n    const unsafe = /** @type {Record<string, Readonly<unknown>>} */ (node)\n    const type = typeof unsafe.type === 'string' ? unsafe.type : ''\n\n    switch (type) {\n      case 'comment': {\n        return hast_util_sanitize_lib_comment(state, unsafe)\n      }\n\n      case 'doctype': {\n        return hast_util_sanitize_lib_doctype(state, unsafe)\n      }\n\n      case 'element': {\n        return hast_util_sanitize_lib_element(state, unsafe)\n      }\n\n      case 'root': {\n        return hast_util_sanitize_lib_root(state, unsafe)\n      }\n\n      case 'text': {\n        return hast_util_sanitize_lib_text(state, unsafe)\n      }\n\n      default:\n    }\n  }\n}\n\n/**\n * Make a safe comment.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe comment-like value.\n * @returns {Comment | undefined}\n *   Safe comment (if with `allowComments`).\n */\nfunction hast_util_sanitize_lib_comment(state, unsafe) {\n  if (state.schema.allowComments) {\n    // See <https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments>\n    const result = typeof unsafe.value === 'string' ? unsafe.value : ''\n    const index = result.indexOf('-->')\n    const value = index < 0 ? result : result.slice(0, index)\n\n    /** @type {Comment} */\n    const node = {type: 'comment', value}\n\n    hast_util_sanitize_lib_patch(node, unsafe)\n\n    return node\n  }\n}\n\n/**\n * Make a safe doctype.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe doctype-like value.\n * @returns {Doctype | undefined}\n *   Safe doctype (if with `allowDoctypes`).\n */\nfunction hast_util_sanitize_lib_doctype(state, unsafe) {\n  if (state.schema.allowDoctypes) {\n    /** @type {Doctype} */\n    const node = {type: 'doctype'}\n\n    hast_util_sanitize_lib_patch(node, unsafe)\n\n    return node\n  }\n}\n\n/**\n * Make a safe element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe element-like value.\n * @returns {Array<ElementContent> | Element | undefined}\n *   Safe element.\n */\nfunction hast_util_sanitize_lib_element(state, unsafe) {\n  const name = typeof unsafe.tagName === 'string' ? unsafe.tagName : ''\n\n  state.stack.push(name)\n\n  const content = /** @type {Array<ElementContent>} */ (\n    children(state, unsafe.children)\n  )\n  const properties_ = properties(state, unsafe.properties)\n\n  state.stack.pop()\n\n  let safeElement = false\n\n  if (\n    name &&\n    name !== '*' &&\n    (!state.schema.tagNames || state.schema.tagNames.includes(name))\n  ) {\n    safeElement = true\n\n    // Some nodes can break out of their context if they don’t have a certain\n    // ancestor.\n    if (state.schema.ancestors && hast_util_sanitize_lib_own.call(state.schema.ancestors, name)) {\n      const ancestors = state.schema.ancestors[name]\n      let index = -1\n\n      safeElement = false\n\n      while (++index < ancestors.length) {\n        if (state.stack.includes(ancestors[index])) {\n          safeElement = true\n        }\n      }\n    }\n  }\n\n  if (!safeElement) {\n    return state.schema.strip && !state.schema.strip.includes(name)\n      ? content\n      : undefined\n  }\n\n  /** @type {Element} */\n  const node = {\n    type: 'element',\n    tagName: name,\n    properties: properties_,\n    children: content\n  }\n\n  hast_util_sanitize_lib_patch(node, unsafe)\n\n  return node\n}\n\n/**\n * Make a safe root.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe root-like value.\n * @returns {Root}\n *   Safe root.\n */\nfunction hast_util_sanitize_lib_root(state, unsafe) {\n  const content = /** @type {Array<RootContent>} */ (\n    children(state, unsafe.children)\n  )\n\n  /** @type {Root} */\n  const node = {type: 'root', children: content}\n\n  hast_util_sanitize_lib_patch(node, unsafe)\n\n  return node\n}\n\n/**\n * Make a safe text.\n *\n * @param {State} _\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe text-like value.\n * @returns {Text}\n *   Safe text.\n */\nfunction hast_util_sanitize_lib_text(_, unsafe) {\n  const value = typeof unsafe.value === 'string' ? unsafe.value : ''\n  /** @type {Text} */\n  const node = {type: 'text', value}\n\n  hast_util_sanitize_lib_patch(node, unsafe)\n\n  return node\n}\n\n/**\n * Make children safe.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<unknown>} children\n *   Unsafe value.\n * @returns {Array<Nodes>}\n *   Safe children.\n */\nfunction children(state, children) {\n  /** @type {Array<Nodes>} */\n  const results = []\n\n  if (Array.isArray(children)) {\n    const childrenUnknown = /** @type {Array<Readonly<unknown>>} */ (children)\n    let index = -1\n\n    while (++index < childrenUnknown.length) {\n      const value = lib_transform(state, childrenUnknown[index])\n\n      if (value) {\n        if (Array.isArray(value)) {\n          results.push(...value)\n        } else {\n          results.push(value)\n        }\n      }\n    }\n  }\n\n  return results\n}\n\n/**\n * Make element properties safe.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<unknown>} properties\n *   Unsafe value.\n * @returns {Properties}\n *   Safe value.\n */\nfunction properties(state, properties) {\n  const tagName = state.stack[state.stack.length - 1]\n  const attributes = state.schema.attributes\n  const required = state.schema.required\n  const specific =\n    attributes && hast_util_sanitize_lib_own.call(attributes, tagName)\n      ? attributes[tagName]\n      : undefined\n  const defaults =\n    attributes && hast_util_sanitize_lib_own.call(attributes, '*') ? attributes['*'] : undefined\n  const properties_ =\n    /** @type {Readonly<Record<string, Readonly<unknown>>>} */ (\n      properties && typeof properties === 'object' ? properties : {}\n    )\n  /** @type {Properties} */\n  const result = {}\n  /** @type {string} */\n  let key\n\n  for (key in properties_) {\n    if (hast_util_sanitize_lib_own.call(properties_, key)) {\n      const unsafe = properties_[key]\n      let safe = propertyValue(\n        state,\n        findDefinition(specific, key),\n        key,\n        unsafe\n      )\n\n      if (safe === null || safe === undefined) {\n        safe = propertyValue(state, findDefinition(defaults, key), key, unsafe)\n      }\n\n      if (safe !== null && safe !== undefined) {\n        result[key] = safe\n      }\n    }\n  }\n\n  if (required && hast_util_sanitize_lib_own.call(required, tagName)) {\n    const properties = required[tagName]\n\n    for (key in properties) {\n      if (hast_util_sanitize_lib_own.call(properties, key) && !hast_util_sanitize_lib_own.call(result, key)) {\n        result[key] = properties[key]\n      }\n    }\n  }\n\n  return result\n}\n\n/**\n * Sanitize a property value.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<PropertyDefinition> | undefined} definition\n *   Definition.\n * @param {string} key\n *   Field name.\n * @param {Readonly<unknown>} value\n *   Unsafe value (but an array).\n * @returns {Array<number | string> | boolean | number | string | undefined}\n *   Safe value.\n */\nfunction propertyValue(state, definition, key, value) {\n  return definition\n    ? Array.isArray(value)\n      ? propertyValueMany(state, definition, key, value)\n      : propertyValuePrimitive(state, definition, key, value)\n    : undefined\n}\n\n/**\n * Sanitize a property value which is a list.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<PropertyDefinition>} definition\n *   Definition.\n * @param {string} key\n *   Field name.\n * @param {Readonly<Array<Readonly<unknown>>>} values\n *   Unsafe value (but an array).\n * @returns {Array<number | string>}\n *   Safe value.\n */\nfunction propertyValueMany(state, definition, key, values) {\n  let index = -1\n  /** @type {Array<number | string>} */\n  const result = []\n\n  while (++index < values.length) {\n    const value = propertyValuePrimitive(state, definition, key, values[index])\n\n    if (typeof value === 'number' || typeof value === 'string') {\n      result.push(value)\n    }\n  }\n\n  return result\n}\n\n/**\n * Sanitize a property value which is a primitive.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<PropertyDefinition>} definition\n *   Definition.\n * @param {string} key\n *   Field name.\n * @param {Readonly<unknown>} value\n *   Unsafe value (but not an array).\n * @returns {boolean | number | string | undefined}\n *   Safe value.\n */\nfunction propertyValuePrimitive(state, definition, key, value) {\n  if (\n    typeof value !== 'boolean' &&\n    typeof value !== 'number' &&\n    typeof value !== 'string'\n  ) {\n    return\n  }\n\n  if (!safeProtocol(state, key, value)) {\n    return\n  }\n\n  // Just a string, or only one item in an array, means all values are OK.\n  // More than one item means an allow list.\n  if (typeof definition === 'object' && definition.length > 1) {\n    let ok = false\n    let index = 0 // Ignore `key`, which is the first item.\n\n    while (++index < definition.length) {\n      const allowed = definition[index]\n\n      // Expression.\n      if (allowed && typeof allowed === 'object' && 'flags' in allowed) {\n        if (allowed.test(String(value))) {\n          ok = true\n          break\n        }\n      }\n      // Primitive.\n      else if (allowed === value) {\n        ok = true\n        break\n      }\n    }\n\n    if (!ok) return\n  }\n\n  return state.schema.clobber &&\n    state.schema.clobberPrefix &&\n    state.schema.clobber.includes(key)\n    ? state.schema.clobberPrefix + value\n    : value\n}\n\n/**\n * Check whether `value` is a safe URL.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} key\n *   Field name.\n * @param {Readonly<unknown>} value\n *   Unsafe value.\n * @returns {boolean}\n *   Whether it’s a safe value.\n */\nfunction safeProtocol(state, key, value) {\n  const protocols =\n    state.schema.protocols && hast_util_sanitize_lib_own.call(state.schema.protocols, key)\n      ? state.schema.protocols[key]\n      : undefined\n\n  // No protocols defined? Then everything is fine.\n  if (!protocols || protocols.length === 0) {\n    return true\n  }\n\n  const url = String(value)\n  const colon = url.indexOf(':')\n  const questionMark = url.indexOf('?')\n  const numberSign = url.indexOf('#')\n  const slash = url.indexOf('/')\n\n  if (\n    colon < 0 ||\n    // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n    (slash > -1 && colon > slash) ||\n    (questionMark > -1 && colon > questionMark) ||\n    (numberSign > -1 && colon > numberSign)\n  ) {\n    return true\n  }\n\n  let index = -1\n\n  while (++index < protocols.length) {\n    const protocol = protocols[index]\n\n    if (\n      colon === protocol.length &&\n      url.slice(0, protocol.length) === protocol\n    ) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Add data and position.\n *\n * @param {Nodes} node\n *   Node to patch safe data and position on.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe node-like value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction hast_util_sanitize_lib_patch(node, unsafe) {\n  const cleanPosition = unist_util_position_lib_position(\n    // @ts-expect-error: looks like a node.\n    unsafe\n  )\n\n  if (unsafe.data) {\n    node.data = esm(unsafe.data)\n  }\n\n  if (cleanPosition) node.position = cleanPosition\n}\n\n/**\n *\n * @param {Readonly<Array<PropertyDefinition>> | undefined} definitions\n * @param {string} key\n * @returns {Readonly<PropertyDefinition> | undefined}\n */\nfunction findDefinition(definitions, key) {\n  /** @type {PropertyDefinition | undefined} */\n  let dataDefault\n  let index = -1\n\n  if (definitions) {\n    while (++index < definitions.length) {\n      const entry = definitions[index]\n      const name = typeof entry === 'string' ? entry : entry[0]\n\n      if (name === key) {\n        return entry\n      }\n\n      if (name === 'data*') dataDefault = entry\n    }\n  }\n\n  if (key.length > 4 && key.slice(0, 4).toLowerCase() === 'data') {\n    return dataDefault\n  }\n}\n\n;// ./node_modules/rehype-sanitize/lib/index.js\n/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-sanitize').Schema} Schema\n */\n\n\n\n/**\n * Sanitize HTML.\n *\n * @param {Schema | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nfunction rehypeSanitize(options) {\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @returns {Root}\n   *   New tree.\n   */\n  return function (tree) {\n    // Assume root in -> root out.\n    const result = /** @type {Root} */ (sanitize(tree, options))\n    return result\n  }\n}\n\n;// ./errors/mdx-syntax-error.ts\nclass MdxSyntaxError extends SyntaxError {\n    original = null;\n    constructor(error, doc) {\n        const { message, line, column, url } = error;\n        const messages = [\n            `Oh no! We ran into a syntax error at { line: ${line}, column: ${column} }, please see this url for more details: ${url}`,\n        ];\n        if (typeof line !== 'undefined') {\n            messages.push(doc.split('\\n')[line - 1]);\n            if (typeof column !== 'undefined') {\n                const prefix = new Array(column).map(() => '').join(' ');\n                messages.push(`${prefix}↑ ${message}`);\n            }\n        }\n        super(messages.join('\\n'));\n        this.original = error;\n        this.name = 'MdxSyntaxError';\n    }\n}\n\n;// ./node_modules/estree-util-value-to-estree/dist/estree-util-value-to-estree.js\n/**\n * Create an ESTree identifier node for a given name.\n *\n * @param name\n *   The name of the identifier.\n * @returns\n *   The identifier node.\n */\nfunction identifier(name) {\n    return { type: 'Identifier', name };\n}\n/**\n * Create an ESTree literal node for a given value.\n *\n * @param value\n *   The value for which to create a literal.\n * @returns\n *   The literal node.\n */\nfunction literal(value) {\n    return { type: 'Literal', value };\n}\n/**\n * Create an ESTree call expression on an object member.\n *\n * @param object\n *   The object to call the method on.\n * @param name\n *   The name of the method to call.\n * @param args\n *   Arguments to pass to the function call\n * @returns\n *   The call expression node.\n */\nfunction methodCall(object, name, args) {\n    return {\n        type: 'CallExpression',\n        optional: false,\n        callee: {\n            type: 'MemberExpression',\n            computed: false,\n            optional: false,\n            object,\n            property: identifier(name)\n        },\n        arguments: args\n    };\n}\n/**\n * Turn a number or bigint into an ESTree expression. This handles positive and negative numbers and\n * bigints as well as special numbers.\n *\n * @param number\n *   The value to turn into an ESTree expression.\n * @returns\n *   An expression that represents the given value.\n */\nfunction processNumber(number) {\n    if (number < 0 || Object.is(number, -0)) {\n        return {\n            type: 'UnaryExpression',\n            operator: '-',\n            prefix: true,\n            argument: processNumber(-number)\n        };\n    }\n    if (typeof number === 'bigint') {\n        return { type: 'Literal', bigint: String(number) };\n    }\n    if (number === Number.POSITIVE_INFINITY || Number.isNaN(number)) {\n        return identifier(String(number));\n    }\n    return literal(number);\n}\n/**\n * Process an array of numbers. This is a shortcut for iterables whose constructor takes an array of\n * numbers as input.\n *\n * @param numbers\n *   The numbers to add to the array expression.\n * @returns\n *   An ESTree array expression whose elements match the input numbers.\n */\nfunction processNumberArray(numbers) {\n    return { type: 'ArrayExpression', elements: Array.from(numbers, processNumber) };\n}\n/**\n * Check whether a value can be constructed from its string representation.\n *\n * @param value\n *   The value to check\n * @returns\n *   Whether or not the value can be constructed from its string representation.\n */\nfunction isStringReconstructable(value) {\n    return value instanceof URL || value instanceof URLSearchParams;\n}\n/**\n * Check whether a value can be constructed from its `valueOf()` result.\n *\n * @param value\n *   The value to check\n * @returns\n *   Whether or not the value can be constructed from its `valueOf()` result.\n */\nfunction isValueReconstructable(value) {\n    return (value instanceof Boolean ||\n        value instanceof Date ||\n        value instanceof Number ||\n        value instanceof String);\n}\nconst wellKnownSymbols = new Map();\nfor (const name of Reflect.ownKeys(Symbol)) {\n    const value = Symbol[name];\n    if (typeof value === 'symbol') {\n        wellKnownSymbols.set(value, name);\n    }\n}\n/**\n * Check whether a value is a Temporal value.\n *\n * @param value\n *   The value to check\n * @returns\n *   Whether or not the value is a Temporal value.\n */\nfunction isTemporal(value) {\n    return (typeof Temporal !== 'undefined' &&\n        (value instanceof Temporal.Duration ||\n            value instanceof Temporal.Instant ||\n            value instanceof Temporal.PlainDate ||\n            value instanceof Temporal.PlainDateTime ||\n            value instanceof Temporal.PlainYearMonth ||\n            value instanceof Temporal.PlainMonthDay ||\n            value instanceof Temporal.PlainTime ||\n            value instanceof Temporal.ZonedDateTime));\n}\n/**\n * Check whether a value is a typed array.\n *\n * @param value\n *   The value to check\n * @returns\n *   Whether or not the value is a typed array.\n */\nfunction isTypedArray(value) {\n    return (value instanceof BigInt64Array ||\n        value instanceof BigUint64Array ||\n        (typeof Float16Array !== 'undefined' && value instanceof Float16Array) ||\n        value instanceof Float32Array ||\n        value instanceof Float64Array ||\n        value instanceof Int8Array ||\n        value instanceof Int16Array ||\n        value instanceof Int32Array ||\n        value instanceof Uint8Array ||\n        value instanceof Uint8ClampedArray ||\n        value instanceof Uint16Array ||\n        value instanceof Uint32Array);\n}\n/**\n * Compare two value contexts for sorting them based on reference count.\n *\n * @param a\n *   The first context to compare.\n * @param b\n *   The second context to compare.\n * @returns\n *   The count of context a minus the count of context b.\n */\nfunction compareContexts(a, b) {\n    const aReferencedByB = a.referencedBy.has(b.value);\n    const bReferencedByA = b.referencedBy.has(a.value);\n    if (aReferencedByB) {\n        if (bReferencedByA) {\n            return a.count - b.count;\n        }\n        return -1;\n    }\n    if (bReferencedByA) {\n        return 1;\n    }\n    return a.count - b.count;\n}\n/**\n * Replace the assigned right hand expression with the new expression.\n *\n * If there is no assignment expression, the original expression is returned. Otherwise the\n * assignment is modified and returned.\n *\n * @param expression\n *   The expression to use for the assignment.\n * @param assignment\n *   The existing assignmentexpression\n * @returns\n *   The new expression.\n */\nfunction replaceAssignment(expression, assignment) {\n    if (!assignment || assignment.type !== 'AssignmentExpression') {\n        return expression;\n    }\n    let node = assignment;\n    while (node.right.type === 'AssignmentExpression') {\n        node = node.right;\n    }\n    node.right = expression;\n    return assignment;\n}\n/**\n * Create an ESTree epxression to represent a symbol. Global and well-known symbols are supported.\n *\n * @param symbol\n *   The symbol to represent.\n * @returns\n *   An ESTree expression to represent the symbol.\n */\nfunction symbolToEstree(symbol) {\n    const name = wellKnownSymbols.get(symbol);\n    if (name) {\n        return {\n            type: 'MemberExpression',\n            computed: false,\n            optional: false,\n            object: identifier('Symbol'),\n            property: identifier(name)\n        };\n    }\n    if (symbol.description && symbol === Symbol.for(symbol.description)) {\n        return methodCall(identifier('Symbol'), 'for', [literal(symbol.description)]);\n    }\n    throw new TypeError(`Only global symbols are supported, got: ${String(symbol)}`, {\n        cause: symbol\n    });\n}\n/**\n * Create an ESTree property from a key and a value expression.\n *\n * @param key\n *   The property key value\n * @param value\n *   The property value as an ESTree expression.\n * @returns\n *   The ESTree properry node.\n */\nfunction property(key, value) {\n    const isString = typeof key === 'string';\n    return {\n        type: 'Property',\n        method: false,\n        shorthand: false,\n        computed: key === '__proto__' || !isString,\n        kind: 'init',\n        key: isString ? literal(key) : symbolToEstree(key),\n        value\n    };\n}\n/**\n * Convert a value to an ESTree node.\n *\n * @param value\n *   The value to convert.\n * @param options\n *   Additional options to configure the output.\n * @returns\n *   The ESTree node.\n */\nfunction valueToEstree(value, options = {}) {\n    const stack = [];\n    const collectedContexts = new Map();\n    const namedContexts = [];\n    const customTrees = new Map();\n    /**\n     * Analyze a value and collect all reference contexts.\n     *\n     * @param val\n     *   The value to analyze.\n     */\n    function analyze(val) {\n        if (typeof val !== 'object' && typeof val !== 'function') {\n            return;\n        }\n        if (val == null) {\n            return;\n        }\n        const context = collectedContexts.get(val);\n        if (context) {\n            if (options.preserveReferences) {\n                context.count += 1;\n            }\n            for (const ancestor of stack) {\n                context.referencedBy.add(ancestor);\n            }\n            if (stack.includes(val)) {\n                if (!options.preserveReferences) {\n                    throw new Error(`Found circular reference: ${val}`, { cause: val });\n                }\n                const parent = stack.at(-1);\n                const parentContext = collectedContexts.get(parent);\n                parentContext.recursive = true;\n                context.recursive = true;\n            }\n            return;\n        }\n        collectedContexts.set(val, {\n            count: 1,\n            recursive: false,\n            referencedBy: new Set(stack),\n            value: val\n        });\n        const estree = options?.replacer?.(val);\n        if (estree) {\n            customTrees.set(val, estree);\n            return;\n        }\n        if (typeof val === 'function') {\n            throw new TypeError(`Unsupported value: ${val}`, { cause: val });\n        }\n        if (isTypedArray(val)) {\n            return;\n        }\n        if (isStringReconstructable(val)) {\n            return;\n        }\n        if (isValueReconstructable(val)) {\n            return;\n        }\n        if (value instanceof RegExp) {\n            return;\n        }\n        if (isTemporal(value)) {\n            return;\n        }\n        stack.push(val);\n        if (val instanceof Map) {\n            for (const pair of val) {\n                analyze(pair[0]);\n                analyze(pair[1]);\n            }\n        }\n        else if (Array.isArray(val) || val instanceof Set) {\n            for (const entry of val) {\n                analyze(entry);\n            }\n        }\n        else {\n            const proto = Object.getPrototypeOf(val);\n            if (proto != null && proto !== Object.prototype && !options.instanceAsObject) {\n                throw new TypeError(`Unsupported value: ${val}`, { cause: val });\n            }\n            for (const key of Reflect.ownKeys(val)) {\n                analyze(val[key]);\n            }\n        }\n        stack.pop();\n    }\n    /**\n     * Recursively generate the ESTree expression needed to reconstruct the value.\n     *\n     * @param val\n     *   The value to process.\n     * @param isDeclaration\n     *   Whether or not this is for a variable declaration.\n     * @returns\n     *   The ESTree expression to reconstruct the value.\n     */\n    function generate(val, isDeclaration) {\n        if (val === undefined) {\n            return identifier(String(val));\n        }\n        if (val == null || typeof val === 'string' || typeof val === 'boolean') {\n            return literal(val);\n        }\n        if (typeof val === 'bigint' || typeof val === 'number') {\n            return processNumber(val);\n        }\n        if (typeof val === 'symbol') {\n            return symbolToEstree(val);\n        }\n        const context = collectedContexts.get(val);\n        if (!isDeclaration && context?.name) {\n            return identifier(context.name);\n        }\n        const tree = customTrees.get(val);\n        if (tree) {\n            return tree;\n        }\n        if (isValueReconstructable(val)) {\n            return {\n                type: 'NewExpression',\n                callee: identifier(val.constructor.name),\n                arguments: [generate(val.valueOf())]\n            };\n        }\n        if (val instanceof RegExp) {\n            return {\n                type: 'Literal',\n                regex: { pattern: val.source, flags: val.flags }\n            };\n        }\n        if (typeof Buffer !== 'undefined' && Buffer.isBuffer(val)) {\n            return methodCall(identifier('Buffer'), 'from', [processNumberArray(val)]);\n        }\n        if (isTypedArray(val)) {\n            return {\n                type: 'NewExpression',\n                callee: identifier(val.constructor.name),\n                arguments: [processNumberArray(val)]\n            };\n        }\n        if (isStringReconstructable(val)) {\n            return {\n                type: 'NewExpression',\n                callee: identifier(val.constructor.name),\n                arguments: [literal(String(val))]\n            };\n        }\n        if (isTemporal(val)) {\n            return methodCall({\n                type: 'MemberExpression',\n                computed: false,\n                optional: false,\n                object: identifier('Temporal'),\n                property: identifier(val.constructor.name)\n            }, 'from', [literal(String(val))]);\n        }\n        if (Array.isArray(val)) {\n            const elements = Array.from({ length: val.length });\n            let trimmable;\n            for (let index = 0; index < val.length; index += 1) {\n                if (!(index in val)) {\n                    elements[index] = null;\n                    trimmable = undefined;\n                    continue;\n                }\n                const child = val[index];\n                const childContext = collectedContexts.get(child);\n                if (context &&\n                    childContext &&\n                    namedContexts.indexOf(childContext) >= namedContexts.indexOf(context)) {\n                    elements[index] = null;\n                    trimmable ||= index;\n                    childContext.assignment = {\n                        type: 'AssignmentExpression',\n                        operator: '=',\n                        left: {\n                            type: 'MemberExpression',\n                            computed: true,\n                            optional: false,\n                            object: identifier(context.name),\n                            property: literal(index)\n                        },\n                        right: childContext.assignment || identifier(childContext.name)\n                    };\n                }\n                else {\n                    elements[index] = generate(child);\n                    trimmable = undefined;\n                }\n            }\n            if (trimmable != null) {\n                elements.splice(trimmable);\n            }\n            return {\n                type: 'ArrayExpression',\n                elements\n            };\n        }\n        if (val instanceof Set) {\n            const elements = [];\n            let finalizer;\n            for (const child of val) {\n                if (finalizer) {\n                    finalizer = methodCall(finalizer, 'add', [generate(child)]);\n                }\n                else {\n                    const childContext = collectedContexts.get(child);\n                    if (context &&\n                        childContext &&\n                        namedContexts.indexOf(childContext) >= namedContexts.indexOf(context)) {\n                        finalizer = methodCall(identifier(context.name), 'add', [generate(child)]);\n                    }\n                    else {\n                        elements.push(generate(child));\n                    }\n                }\n            }\n            if (context && finalizer) {\n                context.assignment = replaceAssignment(finalizer, context.assignment);\n            }\n            return {\n                type: 'NewExpression',\n                callee: identifier('Set'),\n                arguments: elements.length ? [{ type: 'ArrayExpression', elements }] : []\n            };\n        }\n        if (val instanceof Map) {\n            const elements = [];\n            let finalizer;\n            for (const [key, item] of val) {\n                if (finalizer) {\n                    finalizer = methodCall(finalizer, 'set', [generate(key), generate(item)]);\n                }\n                else {\n                    const keyContext = collectedContexts.get(key);\n                    const itemContext = collectedContexts.get(item);\n                    if (context &&\n                        ((keyContext && namedContexts.indexOf(keyContext) >= namedContexts.indexOf(context)) ||\n                            (itemContext && namedContexts.indexOf(itemContext) >= namedContexts.indexOf(context)))) {\n                        finalizer = methodCall(identifier(context.name), 'set', [\n                            generate(key),\n                            generate(item)\n                        ]);\n                    }\n                    else {\n                        elements.push({\n                            type: 'ArrayExpression',\n                            elements: [generate(key), generate(item)]\n                        });\n                    }\n                }\n            }\n            if (context && finalizer) {\n                context.assignment = replaceAssignment(finalizer, context.assignment);\n            }\n            return {\n                type: 'NewExpression',\n                callee: identifier('Map'),\n                arguments: elements.length ? [{ type: 'ArrayExpression', elements }] : []\n            };\n        }\n        const properties = [];\n        if (Object.getPrototypeOf(val) == null) {\n            properties.push({\n                type: 'Property',\n                method: false,\n                shorthand: false,\n                computed: false,\n                kind: 'init',\n                key: identifier('__proto__'),\n                value: literal(null)\n            });\n        }\n        const object = val;\n        const propertyDescriptors = [];\n        for (const key of Reflect.ownKeys(val)) {\n            // TODO [>=4] Throw an error for getters.\n            const child = object[key];\n            const { configurable, enumerable, writable } = Object.getOwnPropertyDescriptor(val, key);\n            const childContext = collectedContexts.get(child);\n            if (!configurable || !enumerable || !writable) {\n                const propertyDescriptor = [property('value', generate(child))];\n                if (configurable) {\n                    propertyDescriptor.push(property('configurable', literal(true)));\n                }\n                if (enumerable) {\n                    propertyDescriptor.push(property('enumerable', literal(true)));\n                }\n                if (writable) {\n                    propertyDescriptor.push(property('writable', literal(true)));\n                }\n                propertyDescriptors.push([\n                    key,\n                    { type: 'ObjectExpression', properties: propertyDescriptor }\n                ]);\n            }\n            else if (context &&\n                childContext &&\n                namedContexts.indexOf(childContext) >= namedContexts.indexOf(context)) {\n                if (key === '__proto__') {\n                    propertyDescriptors.push([\n                        key,\n                        {\n                            type: 'ObjectExpression',\n                            properties: [\n                                property('value', generate(child)),\n                                property('configurable', literal(true)),\n                                property('enumerable', literal(true)),\n                                property('writable', literal(true))\n                            ]\n                        }\n                    ]);\n                }\n                else {\n                    childContext.assignment = {\n                        type: 'AssignmentExpression',\n                        operator: '=',\n                        left: {\n                            type: 'MemberExpression',\n                            computed: true,\n                            optional: false,\n                            object: identifier(context.name),\n                            property: generate(key)\n                        },\n                        right: childContext.assignment || generate(child)\n                    };\n                }\n            }\n            else {\n                properties.push(property(key, generate(child)));\n            }\n        }\n        const objectExpression = {\n            type: 'ObjectExpression',\n            properties\n        };\n        if (propertyDescriptors.length) {\n            let name;\n            let args;\n            if (propertyDescriptors.length === 1) {\n                const [[key, expression]] = propertyDescriptors;\n                name = 'defineProperty';\n                args = [typeof key === 'string' ? literal(key) : symbolToEstree(key), expression];\n            }\n            else {\n                name = 'defineProperties';\n                args = [\n                    {\n                        type: 'ObjectExpression',\n                        properties: propertyDescriptors.map(([key, expression]) => property(key, expression))\n                    }\n                ];\n            }\n            if (!context) {\n                return methodCall(identifier('Object'), name, [objectExpression, ...args]);\n            }\n            context.assignment = replaceAssignment(methodCall(identifier('Object'), name, [identifier(context.name), ...args]), context.assignment);\n        }\n        return objectExpression;\n    }\n    analyze(value);\n    for (const [val, context] of collectedContexts) {\n        if (context.recursive || context.count > 1) {\n            // Assign reused or recursive references to a variable.\n            context.name = `$${namedContexts.length}`;\n            namedContexts.push(context);\n        }\n        else {\n            // Otherwise don’t treat it as a reference.\n            collectedContexts.delete(val);\n        }\n    }\n    if (!namedContexts.length) {\n        return generate(value);\n    }\n    const params = namedContexts.sort(compareContexts).map((context) => ({\n        type: 'AssignmentPattern',\n        left: identifier(context.name),\n        right: generate(context.value, true)\n    }));\n    const rootContext = collectedContexts.get(value);\n    const finalizers = [];\n    for (const context of collectedContexts.values()) {\n        if (context !== rootContext && context.assignment) {\n            finalizers.push(context.assignment);\n        }\n    }\n    finalizers.push(rootContext ? rootContext.assignment || identifier(rootContext.name) : generate(value));\n    return {\n        type: 'CallExpression',\n        optional: false,\n        arguments: [],\n        callee: {\n            type: 'ArrowFunctionExpression',\n            expression: false,\n            params,\n            body: {\n                type: 'SequenceExpression',\n                expressions: finalizers\n            }\n        }\n    };\n}\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/util/schema.js\n/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nclass schema_Schema {\n  /**\n   * @param {SchemaType['property']} property\n   *   Property.\n   * @param {SchemaType['normal']} normal\n   *   Normal.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Schema.\n   */\n  constructor(property, normal, space) {\n    this.normal = normal\n    this.property = property\n\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\nschema_Schema.prototype.normal = {}\nschema_Schema.prototype.property = {}\nschema_Schema.prototype.space = undefined\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/util/merge.js\n/**\n * @import {Info, Space} from 'property-information'\n */\n\n\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n *   Definitions.\n * @param {Space | undefined} [space]\n *   Space.\n * @returns {Schema}\n *   Schema.\n */\nfunction merge_merge(definitions, space) {\n  /** @type {Record<string, Info>} */\n  const property = {}\n  /** @type {Record<string, string>} */\n  const normal = {}\n\n  for (const definition of definitions) {\n    Object.assign(property, definition.property)\n    Object.assign(normal, definition.normal)\n  }\n\n  return new schema_Schema(property, normal, space)\n}\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/normalize.js\n/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n *   An attribute-like or property-like name.\n * @returns {string}\n *   Value that can be used to look up the properly cased property on a\n *   `Schema`.\n */\nfunction lib_normalize_normalize(value) {\n  return value.toLowerCase()\n}\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/util/info.js\n/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nclass info_Info {\n  /**\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute) {\n    this.attribute = attribute\n    this.property = property\n  }\n}\n\ninfo_Info.prototype.attribute = ''\ninfo_Info.prototype.booleanish = false\ninfo_Info.prototype.boolean = false\ninfo_Info.prototype.commaOrSpaceSeparated = false\ninfo_Info.prototype.commaSeparated = false\ninfo_Info.prototype.defined = false\ninfo_Info.prototype.mustUseProperty = false\ninfo_Info.prototype.number = false\ninfo_Info.prototype.overloadedBoolean = false\ninfo_Info.prototype.property = ''\ninfo_Info.prototype.spaceSeparated = false\ninfo_Info.prototype.space = undefined\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/util/types.js\nlet types_powers = 0\n\nconst util_types_boolean = types_increment()\nconst types_booleanish = types_increment()\nconst types_overloadedBoolean = types_increment()\nconst types_number = types_increment()\nconst types_spaceSeparated = types_increment()\nconst types_commaSeparated = types_increment()\nconst types_commaOrSpaceSeparated = types_increment()\n\nfunction types_increment() {\n  return 2 ** ++types_powers\n}\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/util/defined-info.js\n/**\n * @import {Space} from 'property-information'\n */\n\n\n\n\nconst defined_info_checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n  Object.keys(util_types_namespaceObject)\n)\n\nclass defined_info_DefinedInfo extends info_Info {\n  /**\n   * @constructor\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @param {number | null | undefined} [mask]\n   *   Mask.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    defined_info_mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < defined_info_checks.length) {\n        const check = defined_info_checks[index]\n        defined_info_mark(this, defined_info_checks[index], (mask & util_types_namespaceObject[check]) === util_types_namespaceObject[check])\n      }\n    }\n  }\n}\n\ndefined_info_DefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n *   Key type.\n * @param {DefinedInfo} values\n *   Info.\n * @param {Key} key\n *   Key.\n * @param {DefinedInfo[Key]} value\n *   Value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction defined_info_mark(values, key, value) {\n  if (value) {\n    values[key] = value\n  }\n}\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/util/create.js\n/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n *   Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n *   Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n *   Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n *   Property names to their types.\n * @property {Space | undefined} [space]\n *   Space.\n * @property {Transform} transform\n *   Transform a property name.\n */\n\n/**\n * @callback Transform\n *   Transform.\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Attribute.\n */\n\n\n\n\n\n/**\n * @param {Definition} definition\n *   Definition.\n * @returns {Schema}\n *   Schema.\n */\nfunction util_create_create(definition) {\n  /** @type {Record<string, Info>} */\n  const properties = {}\n  /** @type {Record<string, string>} */\n  const normals = {}\n\n  for (const [property, value] of Object.entries(definition.properties)) {\n    const info = new defined_info_DefinedInfo(\n      property,\n      definition.transform(definition.attributes || {}, property),\n      value,\n      definition.space\n    )\n\n    if (\n      definition.mustUseProperty &&\n      definition.mustUseProperty.includes(property)\n    ) {\n      info.mustUseProperty = true\n    }\n\n    properties[property] = info\n\n    normals[lib_normalize_normalize(property)] = property\n    normals[lib_normalize_normalize(info.attribute)] = property\n  }\n\n  return new schema_Schema(properties, normals, definition.space)\n}\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/aria.js\n\n\n\nconst aria_aria = util_create_create({\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: types_booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: types_booleanish,\n    ariaChecked: types_booleanish,\n    ariaColCount: types_number,\n    ariaColIndex: types_number,\n    ariaColSpan: types_number,\n    ariaControls: types_spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: types_spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: types_booleanish,\n    ariaDropEffect: types_spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: types_booleanish,\n    ariaFlowTo: types_spaceSeparated,\n    ariaGrabbed: types_booleanish,\n    ariaHasPopup: null,\n    ariaHidden: types_booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: types_spaceSeparated,\n    ariaLevel: types_number,\n    ariaLive: null,\n    ariaModal: types_booleanish,\n    ariaMultiLine: types_booleanish,\n    ariaMultiSelectable: types_booleanish,\n    ariaOrientation: null,\n    ariaOwns: types_spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: types_number,\n    ariaPressed: types_booleanish,\n    ariaReadOnly: types_booleanish,\n    ariaRelevant: null,\n    ariaRequired: types_booleanish,\n    ariaRoleDescription: types_spaceSeparated,\n    ariaRowCount: types_number,\n    ariaRowIndex: types_number,\n    ariaRowSpan: types_number,\n    ariaSelected: types_booleanish,\n    ariaSetSize: types_number,\n    ariaSort: null,\n    ariaValueMax: types_number,\n    ariaValueMin: types_number,\n    ariaValueNow: types_number,\n    ariaValueText: null,\n    role: null\n  },\n  transform(_, property) {\n    return property === 'role'\n      ? property\n      : 'aria-' + property.slice(4).toLowerCase()\n  }\n})\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/util/case-sensitive-transform.js\n/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} attribute\n *   Attribute.\n * @returns {string}\n *   Transformed attribute.\n */\nfunction case_sensitive_transform_caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/util/case-insensitive-transform.js\n\n\n/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Transformed property.\n */\nfunction case_insensitive_transform_caseInsensitiveTransform(attributes, property) {\n  return case_sensitive_transform_caseSensitiveTransform(attributes, property.toLowerCase())\n}\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/html.js\n\n\n\n\nconst lib_html_html = util_create_create({\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: types_commaSeparated,\n    acceptCharset: types_spaceSeparated,\n    accessKey: types_spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: util_types_boolean,\n    allowPaymentRequest: util_types_boolean,\n    allowUserMedia: util_types_boolean,\n    alt: null,\n    as: null,\n    async: util_types_boolean,\n    autoCapitalize: null,\n    autoComplete: types_spaceSeparated,\n    autoFocus: util_types_boolean,\n    autoPlay: util_types_boolean,\n    blocking: types_spaceSeparated,\n    capture: null,\n    charSet: null,\n    checked: util_types_boolean,\n    cite: null,\n    className: types_spaceSeparated,\n    cols: types_number,\n    colSpan: null,\n    content: null,\n    contentEditable: types_booleanish,\n    controls: util_types_boolean,\n    controlsList: types_spaceSeparated,\n    coords: types_number | types_commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: util_types_boolean,\n    defer: util_types_boolean,\n    dir: null,\n    dirName: null,\n    disabled: util_types_boolean,\n    download: types_overloadedBoolean,\n    draggable: types_booleanish,\n    encType: null,\n    enterKeyHint: null,\n    fetchPriority: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: util_types_boolean,\n    formTarget: null,\n    headers: types_spaceSeparated,\n    height: types_number,\n    hidden: util_types_boolean,\n    high: types_number,\n    href: null,\n    hrefLang: null,\n    htmlFor: types_spaceSeparated,\n    httpEquiv: types_spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inert: util_types_boolean,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: util_types_boolean,\n    itemId: null,\n    itemProp: types_spaceSeparated,\n    itemRef: types_spaceSeparated,\n    itemScope: util_types_boolean,\n    itemType: types_spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: util_types_boolean,\n    low: types_number,\n    manifest: null,\n    max: null,\n    maxLength: types_number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: types_number,\n    multiple: util_types_boolean,\n    muted: util_types_boolean,\n    name: null,\n    nonce: null,\n    noModule: util_types_boolean,\n    noValidate: util_types_boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: util_types_boolean,\n    optimum: types_number,\n    pattern: null,\n    ping: types_spaceSeparated,\n    placeholder: null,\n    playsInline: util_types_boolean,\n    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\n    poster: null,\n    preload: null,\n    readOnly: util_types_boolean,\n    referrerPolicy: null,\n    rel: types_spaceSeparated,\n    required: util_types_boolean,\n    reversed: util_types_boolean,\n    rows: types_number,\n    rowSpan: types_number,\n    sandbox: types_spaceSeparated,\n    scope: null,\n    scoped: util_types_boolean,\n    seamless: util_types_boolean,\n    selected: util_types_boolean,\n    shadowRootClonable: util_types_boolean,\n    shadowRootDelegatesFocus: util_types_boolean,\n    shadowRootMode: null,\n    shape: null,\n    size: types_number,\n    sizes: null,\n    slot: null,\n    span: types_number,\n    spellCheck: types_booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: types_number,\n    step: null,\n    style: null,\n    tabIndex: types_number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: util_types_boolean,\n    useMap: null,\n    value: types_booleanish,\n    width: types_number,\n    wrap: null,\n    writingSuggestions: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: types_spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: types_number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: types_number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: util_types_boolean, // Lists. Use CSS to reduce space between items instead\n    declare: util_types_boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: types_number, // `<img>` and `<object>`\n    leftMargin: types_number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: types_number, // `<body>`\n    marginWidth: types_number, // `<body>`\n    noResize: util_types_boolean, // `<frame>`\n    noHref: util_types_boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: util_types_boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: util_types_boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: types_number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: types_booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: types_number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: types_number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: util_types_boolean,\n    disableRemotePlayback: util_types_boolean,\n    prefix: null,\n    property: null,\n    results: types_number,\n    security: null,\n    unselectable: null\n  },\n  space: 'html',\n  transform: case_insensitive_transform_caseInsensitiveTransform\n})\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/svg.js\n\n\n\n\nconst svg_svg = util_create_create({\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    transformOrigin: 'transform-origin',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  properties: {\n    about: types_commaOrSpaceSeparated,\n    accentHeight: types_number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: types_number,\n    amplitude: types_number,\n    arabicForm: null,\n    ascent: types_number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: types_number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: types_number,\n    by: null,\n    calcMode: null,\n    capHeight: types_number,\n    className: types_spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: types_number,\n    diffuseConstant: types_number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: types_number,\n    dominantBaseline: null,\n    download: util_types_boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: types_number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: types_number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: types_number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: types_commaSeparated,\n    g2: types_commaSeparated,\n    glyphName: types_commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: types_number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: types_number,\n    horizOriginX: types_number,\n    horizOriginY: types_number,\n    id: null,\n    ideographic: types_number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: types_number,\n    k: types_number,\n    k1: types_number,\n    k2: types_number,\n    k3: types_number,\n    k4: types_number,\n    kernelMatrix: types_commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: types_number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: types_number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: types_number,\n    overlineThickness: types_number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: types_number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: types_spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: types_number,\n    pointsAtY: types_number,\n    pointsAtZ: types_number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: types_commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: types_commaOrSpaceSeparated,\n    rev: types_commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: types_commaOrSpaceSeparated,\n    requiredFeatures: types_commaOrSpaceSeparated,\n    requiredFonts: types_commaOrSpaceSeparated,\n    requiredFormats: types_commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: types_number,\n    specularExponent: types_number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: types_number,\n    strikethroughThickness: types_number,\n    string: null,\n    stroke: null,\n    strokeDashArray: types_commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: types_number,\n    strokeOpacity: types_number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: types_number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: types_commaOrSpaceSeparated,\n    tabIndex: types_number,\n    tableValues: null,\n    target: null,\n    targetX: types_number,\n    targetY: types_number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: types_commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    transformOrigin: null,\n    u1: null,\n    u2: null,\n    underlinePosition: types_number,\n    underlineThickness: types_number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: types_number,\n    values: null,\n    vAlphabetic: types_number,\n    vMathematical: types_number,\n    vectorEffect: null,\n    vHanging: types_number,\n    vIdeographic: types_number,\n    version: null,\n    vertAdvY: types_number,\n    vertOriginX: types_number,\n    vertOriginY: types_number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: types_number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  },\n  space: 'svg',\n  transform: case_sensitive_transform_caseSensitiveTransform\n})\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/xlink.js\n\n\nconst xlink_xlink = util_create_create({\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  },\n  space: 'xlink',\n  transform(_, property) {\n    return 'xlink:' + property.slice(5).toLowerCase()\n  }\n})\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/xmlns.js\n\n\n\nconst xmlns_xmlns = util_create_create({\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  properties: {xmlnsXLink: null, xmlns: null},\n  space: 'xmlns',\n  transform: case_insensitive_transform_caseInsensitiveTransform\n})\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/xml.js\n\n\nconst xml_xml = util_create_create({\n  properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n  space: 'xml',\n  transform(_, property) {\n    return 'xml:' + property.slice(3).toLowerCase()\n  }\n})\n\n;// ./node_modules/hastscript/node_modules/property-information/index.js\n// Note: types exposed from `index.d.ts`.\n\n\n\n\n\n\n\n\n\n\nconst node_modules_property_information_html = merge_merge([aria_aria, lib_html_html, xlink_xlink, xmlns_xmlns, xml_xml], 'html')\n\n\n\n\nconst node_modules_property_information_svg = merge_merge([aria_aria, svg_svg, xlink_xlink, xmlns_xmlns, xml_xml], 'svg')\n\n;// ./node_modules/hastscript/node_modules/property-information/lib/find.js\n/**\n * @import {Schema} from 'property-information'\n */\n\n\n\n\n\nconst find_cap = /[A-Z]/g\nconst find_dash = /-[a-z]/g\nconst find_valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n *   Schema;\n *   either the `html` or `svg` export.\n * @param {string} value\n *   An attribute-like or property-like name;\n *   it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n *   Info.\n */\nfunction find_find(schema, value) {\n  const normal = lib_normalize_normalize(value)\n  let property = value\n  let Type = info_Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && find_valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(find_dash, find_camelcase)\n      property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!find_dash.test(rest)) {\n        let dashes = rest.replace(find_cap, find_kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = defined_info_DefinedInfo\n  }\n\n  return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Kebab.\n */\nfunction find_kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Camel.\n */\nfunction find_camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n\n;// ./node_modules/hastscript/lib/create-h.js\n/**\n * @import {Element, Nodes, RootContent, Root} from 'hast'\n * @import {Info, Schema} from 'property-information'\n */\n\n/**\n * @typedef {Array<Nodes | PrimitiveChild>} ArrayChildNested\n *   List of children (deep).\n */\n\n/**\n * @typedef {Array<ArrayChildNested | Nodes | PrimitiveChild>} ArrayChild\n *   List of children.\n */\n\n/**\n * @typedef {Array<number | string>} ArrayValue\n *   List of property values for space- or comma separated values (such as `className`).\n */\n\n/**\n * @typedef {ArrayChild | Nodes | PrimitiveChild} Child\n *   Acceptable child value.\n */\n\n/**\n * @typedef {number | string | null | undefined} PrimitiveChild\n *   Primitive children, either ignored (nullish), or turned into text nodes.\n */\n\n/**\n * @typedef {boolean | number | string | null | undefined} PrimitiveValue\n *   Primitive property value.\n */\n\n/**\n * @typedef {Record<string, PropertyValue | Style>} Properties\n *   Acceptable value for element properties.\n */\n\n/**\n * @typedef {ArrayValue | PrimitiveValue} PropertyValue\n *   Primitive value or list value.\n */\n\n/**\n * @typedef {Element | Root} Result\n *   Result from a `h` (or `s`) call.\n */\n\n/**\n * @typedef {number | string} StyleValue\n *   Value for a CSS style field.\n */\n\n/**\n * @typedef {Record<string, StyleValue>} Style\n *   Supported value of a `style` prop.\n */\n\n\n\n\n\n\n/**\n * @param {Schema} schema\n *   Schema to use.\n * @param {string} defaultTagName\n *   Default tag name.\n * @param {ReadonlyArray<string> | undefined} [caseSensitive]\n *   Case-sensitive tag names (default: `undefined`).\n * @returns\n *   `h`.\n */\nfunction create_h_createH(schema, defaultTagName, caseSensitive) {\n  const adjust = caseSensitive ? create_h_createAdjustMap(caseSensitive) : undefined\n\n  /**\n   * Hyperscript compatible DSL for creating virtual hast trees.\n   *\n   * @overload\n   * @param {null | undefined} [selector]\n   * @param {...Child} children\n   * @returns {Root}\n   *\n   * @overload\n   * @param {string} selector\n   * @param {Properties} properties\n   * @param {...Child} children\n   * @returns {Element}\n   *\n   * @overload\n   * @param {string} selector\n   * @param {...Child} children\n   * @returns {Element}\n   *\n   * @param {string | null | undefined} [selector]\n   *   Selector.\n   * @param {Child | Properties | null | undefined} [properties]\n   *   Properties (or first child) (default: `undefined`).\n   * @param {...Child} children\n   *   Children.\n   * @returns {Result}\n   *   Result.\n   */\n  function h(selector, properties, ...children) {\n    /** @type {Result} */\n    let node\n\n    if (selector === null || selector === undefined) {\n      node = {type: 'root', children: []}\n      // Properties are not supported for roots.\n      const child = /** @type {Child} */ (properties)\n      children.unshift(child)\n    } else {\n      node = parseSelector(selector, defaultTagName)\n      // Normalize the name.\n      const lower = node.tagName.toLowerCase()\n      const adjusted = adjust ? adjust.get(lower) : undefined\n      node.tagName = adjusted || lower\n\n      // Handle properties.\n      if (isChild(properties)) {\n        children.unshift(properties)\n      } else {\n        for (const [key, value] of Object.entries(properties)) {\n          create_h_addProperty(schema, node.properties, key, value)\n        }\n      }\n    }\n\n    // Handle children.\n    for (const child of children) {\n      create_h_addChild(node.children, child)\n    }\n\n    if (node.type === 'element' && node.tagName === 'template') {\n      node.content = {type: 'root', children: node.children}\n      node.children = []\n    }\n\n    return node\n  }\n\n  return h\n}\n\n/**\n * Check if something is properties or a child.\n *\n * @param {Child | Properties} value\n *   Value to check.\n * @returns {value is Child}\n *   Whether `value` is definitely a child.\n */\nfunction isChild(value) {\n  // Never properties if not an object.\n  if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n    return true\n  }\n\n  // Never node without `type`; that’s the main discriminator.\n  if (typeof value.type !== 'string') return false\n\n  // Slower check: never property value if object or array with\n  // non-number/strings.\n  const record = /** @type {Record<string, unknown>} */ (value)\n  const keys = Object.keys(value)\n\n  for (const key of keys) {\n    const value = record[key]\n\n    if (value && typeof value === 'object') {\n      if (!Array.isArray(value)) return true\n\n      const list = /** @type {ReadonlyArray<unknown>} */ (value)\n\n      for (const item of list) {\n        if (typeof item !== 'number' && typeof item !== 'string') {\n          return true\n        }\n      }\n    }\n  }\n\n  // Also see empty `children` as a node.\n  if ('children' in value && Array.isArray(value.children)) {\n    return true\n  }\n\n  // Default to properties, someone can always pass an empty object,\n  // put `data: {}` in a node,\n  // or wrap it in an array.\n  return false\n}\n\n/**\n * @param {Schema} schema\n *   Schema.\n * @param {Properties} properties\n *   Properties object.\n * @param {string} key\n *   Property name.\n * @param {PropertyValue | Style} value\n *   Property value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction create_h_addProperty(schema, properties, key, value) {\n  const info = find_find(schema, key)\n  /** @type {PropertyValue} */\n  let result\n\n  // Ignore nullish and NaN values.\n  if (value === null || value === undefined) return\n\n  if (typeof value === 'number') {\n    // Ignore NaN.\n    if (Number.isNaN(value)) return\n\n    result = value\n  }\n  // Booleans.\n  else if (typeof value === 'boolean') {\n    result = value\n  }\n  // Handle list values.\n  else if (typeof value === 'string') {\n    if (info.spaceSeparated) {\n      result = space_separated_tokens_parse(value)\n    } else if (info.commaSeparated) {\n      result = comma_separated_tokens_parse(value)\n    } else if (info.commaOrSpaceSeparated) {\n      result = space_separated_tokens_parse(comma_separated_tokens_parse(value).join(' '))\n    } else {\n      result = create_h_parsePrimitive(info, info.property, value)\n    }\n  } else if (Array.isArray(value)) {\n    result = [...value]\n  } else {\n    result = info.property === 'style' ? create_h_style(value) : String(value)\n  }\n\n  if (Array.isArray(result)) {\n    /** @type {Array<number | string>} */\n    const finalResult = []\n\n    for (const item of result) {\n      // Assume no booleans in array.\n      finalResult.push(\n        /** @type {number | string} */ (\n          create_h_parsePrimitive(info, info.property, item)\n        )\n      )\n    }\n\n    result = finalResult\n  }\n\n  // Class names (which can be added both on the `selector` and here).\n  if (info.property === 'className' && Array.isArray(properties.className)) {\n    // Assume no booleans in `className`.\n    result = properties.className.concat(\n      /** @type {Array<number | string> | number | string} */ (result)\n    )\n  }\n\n  properties[info.property] = result\n}\n\n/**\n * @param {Array<RootContent>} nodes\n *   Children.\n * @param {Child} value\n *   Child.\n * @returns {undefined}\n *   Nothing.\n */\nfunction create_h_addChild(nodes, value) {\n  if (value === null || value === undefined) {\n    // Empty.\n  } else if (typeof value === 'number' || typeof value === 'string') {\n    nodes.push({type: 'text', value: String(value)})\n  } else if (Array.isArray(value)) {\n    for (const child of value) {\n      create_h_addChild(nodes, child)\n    }\n  } else if (typeof value === 'object' && 'type' in value) {\n    if (value.type === 'root') {\n      create_h_addChild(nodes, value.children)\n    } else {\n      nodes.push(value)\n    }\n  } else {\n    throw new Error('Expected node, nodes, or string, got `' + value + '`')\n  }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n *   Property information.\n * @param {string} name\n *   Property name.\n * @param {PrimitiveValue} value\n *   Property value.\n * @returns {PrimitiveValue}\n *   Property value.\n */\nfunction create_h_parsePrimitive(info, name, value) {\n  if (typeof value === 'string') {\n    if (info.number && value && !Number.isNaN(Number(value))) {\n      return Number(value)\n    }\n\n    if (\n      (info.boolean || info.overloadedBoolean) &&\n      (value === '' || lib_normalize_normalize(value) === lib_normalize_normalize(name))\n    ) {\n      return true\n    }\n  }\n\n  return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {Style} styles\n *   Style object.\n * @returns {string}\n *   CSS string.\n */\nfunction create_h_style(styles) {\n  /** @type {Array<string>} */\n  const result = []\n\n  for (const [key, value] of Object.entries(styles)) {\n    result.push([key, value].join(': '))\n  }\n\n  return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {ReadonlyArray<string>} values\n *   List of properly cased keys.\n * @returns {Map<string, string>}\n *   Map of lowercase keys to uppercase keys.\n */\nfunction create_h_createAdjustMap(values) {\n  /** @type {Map<string, string>} */\n  const result = new Map()\n\n  for (const value of values) {\n    result.set(value.toLowerCase(), value)\n  }\n\n  return result\n}\n\n;// ./node_modules/hastscript/lib/svg-case-sensitive-tag-names.js\n/**\n * List of case-sensitive SVG tag names.\n *\n * @type {ReadonlyArray<string>}\n */\nconst svg_case_sensitive_tag_names_svgCaseSensitiveTagNames = [\n  'altGlyph',\n  'altGlyphDef',\n  'altGlyphItem',\n  'animateColor',\n  'animateMotion',\n  'animateTransform',\n  'clipPath',\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n  'foreignObject',\n  'glyphRef',\n  'linearGradient',\n  'radialGradient',\n  'solidColor',\n  'textArea',\n  'textPath'\n]\n\n;// ./node_modules/hastscript/lib/index.js\n// Register the JSX namespace on `h`.\n/**\n * @typedef {import('./jsx-classic.js').Element} h.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n */\n\n// Register the JSX namespace on `s`.\n/**\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n */\n\n\n\n\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nconst hastscript_lib_h = create_h_createH(node_modules_property_information_html, 'div')\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nconst lib_s = create_h_createH(node_modules_property_information_svg, 'g', svg_case_sensitive_tag_names_svgCaseSensitiveTagNames)\n\n;// ./node_modules/html-tags/html-tags.json\nconst html_tags_namespaceObject = /*#__PURE__*/JSON.parse('[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"math\",\"menu\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"search\",\"section\",\"select\",\"selectedcontent\",\"slot\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"svg\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"]');\n// EXTERNAL MODULE: ./node_modules/react-html-attributes/dist/index.js\nvar dist = __webpack_require__(3753);\nvar dist_default = /*#__PURE__*/__webpack_require__.n(dist);\n// EXTERNAL MODULE: ./node_modules/react-native-known-styling-properties/dist/index.js\nvar react_native_known_styling_properties_dist = __webpack_require__(1734);\n;// ./utils/common-html-words.ts\n\n\n\n/**\n * Extract word boundaries from camelCase strings (e.g., \"borderWidth\" -> [\"border\", \"width\"])\n */\nfunction extractWordBoundaries(camelCaseStr) {\n    return camelCaseStr\n        .replace(/([A-Z])/g, ' $1')\n        .toLowerCase()\n        .trim()\n        .split(/\\s+/)\n        .filter(word => word.length > 0);\n}\n/**\n * Get all unique word boundaries from an array of camelCase property names.\n * Filters out single-letter words to avoid false matches in smartCamelCase.\n */\nfunction getWordBoundariesFromProps(props) {\n    const boundaries = new Set();\n    props.forEach(prop => {\n        extractWordBoundaries(prop).forEach(word => {\n            // Filter out single-letter words to prevent false matches (e.g., \"d\" matching in \"data\")\n            // Keep meaningful 2+ character words\n            if (word.length >= 2) {\n                boundaries.add(word);\n            }\n        });\n    });\n    return Array.from(boundaries).sort();\n}\n/**\n * React HTML element props word boundaries (e.g., \"on\", \"data\", \"aria\", \"accept\", \"auto\")\n * Extracted from react-html-attributes package\n */\nconst REACT_HTML_PROP_BOUNDARIES = getWordBoundariesFromProps((dist_default())[\"*\"] || []);\n/**\n * CSS style property word boundaries (e.g., \"border\", \"margin\", \"padding\", \"flex\", \"align\")\n * Extracted from react-native-known-styling-properties package\n */\nconst CSS_STYLE_PROP_BOUNDARIES = getWordBoundariesFromProps(react_native_known_styling_properties_dist/* allProps */.q9);\n/**\n * Custom component prop word boundaries not in React HTML or CSS boundaries.\n */\nconst CUSTOM_PROP_BOUNDARIES = [\n    'alt',\n    'attribute',\n    'attributes',\n    'buttons',\n    'caption',\n    'collection',\n    'columns',\n    'copy',\n    'dark',\n    'data',\n    'depth',\n    'download',\n    'embed',\n    'empty',\n    'favicon',\n    'flow',\n    'iframe',\n    'image',\n    'layout',\n    'lazy',\n    'meta',\n    'provider',\n    'run',\n    'safe',\n    'scripts',\n    'tag',\n    'term',\n    'terms',\n    'theme',\n    'url',\n    'value',\n];\n/**\n * Tags that should be passed through and handled at runtime (not by the mdxish plugin)\n */\nconst RUNTIME_COMPONENT_TAGS = new Set(['Variable', 'variable', 'html-block', 'rdme-pin']);\n/**\n * Standard HTML tags that should never be treated as custom components.\n * Uses the html-tags package, converted to a Set<string> for efficient lookups.\n */\nconst STANDARD_HTML_TAGS = new Set(html_tags_namespaceObject);\n\n;// ./processor/plugin/toc.ts\n\n\n\n\n\nconst HEADING_TAGS = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\nconst isHeadingTag = (tag) => (tag ? HEADING_TAGS.includes(tag) : false);\nconst isStandardHtmlElement = (node) => STANDARD_HTML_TAGS.has(node.tagName.toLowerCase());\n/** Extract all heading elements (h1-h6) from a HAST tree, excluding those inside custom components\n * Used to generate toc for mdxish\n */\nfunction extractToc(tree, components = {}) {\n    const headings = [];\n    const componentsByTag = new Map(Object.entries(components).map(([tag, mod]) => [tag.toLowerCase(), mod]));\n    // Recursively walk component TOCs so headings declared inside nested custom components are found.\n    const collectComponentHeadings = (tag, seen) => {\n        const component = componentsByTag.get(tag);\n        if (!component?.toc || seen.has(tag))\n            return [];\n        seen.add(tag);\n        const collected = component.toc.flatMap(entry => {\n            if (entry.type === 'element' && isHeadingTag(entry.tagName)) {\n                return [entry];\n            }\n            if (entry.type === 'mdxJsxFlowElement' && typeof entry.name === 'string') {\n                return collectComponentHeadings(entry.name.toLowerCase(), seen);\n            }\n            return [];\n        });\n        seen.delete(tag);\n        return collected;\n    };\n    // Depth-first traversal over the HAST tree, collecting headings while skipping custom component bodies.\n    const traverse = (node) => {\n        if (node.type === 'element') {\n            const tag = node.tagName.toLowerCase();\n            if (isHeadingTag(node.tagName)) {\n                headings.push(node);\n            }\n            if (componentsByTag.has(tag)) {\n                headings.push(...collectComponentHeadings(tag, new Set()));\n            }\n            // Only traverse into standard HTML elements, skip custom components (like Callout)\n            if (isStandardHtmlElement(node) && node.children) {\n                node.children.forEach(traverse);\n            }\n        }\n        else if ('children' in node && Array.isArray(node.children)) {\n            node.children.forEach(traverse);\n        }\n    };\n    traverse(tree);\n    return headings;\n}\n/** A rehype plugin to generate a flat list of top-level headings or jsx flow elements. */\nconst rehypeToc = ({ components = {} }) => {\n    return (tree) => {\n        if (hasNamedExport(tree, 'toc'))\n            return;\n        const headings = tree.children.filter(child => (child.type === 'element' && HEADING_TAGS.includes(child.tagName)) ||\n            (child.type === 'mdxJsxFlowElement' && child.name in components));\n        tree.children.unshift({\n            type: 'mdxjsEsm',\n            data: {\n                estree: {\n                    type: 'Program',\n                    sourceType: 'module',\n                    body: [\n                        {\n                            type: 'ExportNamedDeclaration',\n                            source: null,\n                            specifiers: [],\n                            declaration: {\n                                type: 'VariableDeclaration',\n                                kind: 'const',\n                                declarations: [\n                                    {\n                                        type: 'VariableDeclarator',\n                                        id: { type: 'Identifier', name: 'toc' },\n                                        init: valueToEstree(headings),\n                                    },\n                                ],\n                            },\n                        },\n                    ],\n                },\n            },\n        });\n    };\n};\nconst MAX_DEPTH = 2;\n/**\n * Get the depth of a heading element based on its tag name.\n *\n * ⚠️ Be extra defensive to non-heading elements somehow making it here. This\n * should not happen, but if it does, we avoid breaking TOC depth calculations\n * by returning `Infinity`, thus removing them from depth considerations.\n * @link https://linear.app/readme-io/issue/CX-2543/tabapay-toc-does-not-respect-headers-nesting\n *\n * @example\n * getDepth({ tagName: 'h1' }) // 1\n * getDepth({ tagName: 'h2' }) // 2\n */\nconst getDepth = (el) => {\n    if (!el.tagName)\n        return Infinity;\n    return parseInt(el.tagName?.match(/^h(\\d)/)[1], 10);\n};\n/**\n * Flatten Variables into a simple key-value map for static resolution.\n * Merges user values with defaults (user values take precedence).\n */\nconst flattenVariables = (variables) => {\n    if (!variables)\n        return {};\n    return {\n        ...variables.user,\n        ...Object.fromEntries((variables.defaults || []).filter(d => !(d.name in variables.user)).map(d => [d.name, d.default])),\n    };\n};\n/*\n * `tocToHast` consumes the list generated by `rehypeToc` and produces a hast\n * of nested lists to be rendered as a table of contents.\n *\n * @param headings - The list of heading elements to render\n * @param variables - Optional user variables for resolving Variable nodes in headings\n */\nconst tocToHast = (headings = [], variables) => {\n    const flatVars = flattenVariables(variables);\n    const headingDepths = headings.map(getDepth);\n    const min = Math.min(...headingDepths);\n    const ast = hastscript_lib_h('ul');\n    const stack = [ast];\n    headings.forEach(heading => {\n        const depth = getDepth(heading) - min + 1;\n        if (depth > MAX_DEPTH)\n            return;\n        while (stack.length < depth) {\n            const ul = hastscript_lib_h('ul');\n            stack[stack.length - 1].children.push(hastscript_lib_h('li', null, ul));\n            stack.push(ul);\n        }\n        while (stack.length > depth) {\n            stack.pop();\n        }\n        if (heading.properties) {\n            const content = lib_plain({ type: 'root', children: heading.children }, { variables: flatVars });\n            stack[stack.length - 1].children.push(hastscript_lib_h('li', null, hastscript_lib_h('a', { href: `#${heading.properties.id}` }, content)));\n        }\n    });\n    return ast;\n};\n/*\n * `tocHastToMdx` is a utility for combining `TocList`s of a root document and\n * any child components it may have. Once combined it will generate a markdown\n * doc representing a table of contents.\n *\n * @param toc - The list of TOC elements\n * @param components - Custom components that may contain headings\n * @param variables - Optional user variables for resolving Variable nodes in headings\n */\nconst tocHastToMdx = (toc, components, variables) => {\n    if (typeof toc === 'undefined')\n        return '';\n    const injected = toc.flatMap(node => {\n        if (node.type === 'mdxJsxFlowElement') {\n            return components[node.name] || [];\n        }\n        return node;\n    });\n    const tocHast = tocToHast(injected, variables);\n    return lib_mdx({ type: 'root', children: [tocHast] }, { hast: true });\n};\n\n;// ./lib/compile.ts\n\n\n\n\n\n\n\n\n\n\nconst sanitizeSchema = cjs_default()(defaultSchema, {\n    protocols: ['doc', 'ref', 'blog', 'changelog', 'page'],\n});\nconst compile_compile = (text, { components = {}, missingComponents, copyButtons, useTailwind, ...opts } = {}) => {\n    // Destructure at runtime to avoid circular dependency issues\n    const { codeTabsTransformer, ...transforms } = defaultTransforms;\n    const remarkPlugins = [\n        remarkFrontmatter,\n        remarkGfm,\n        ...Object.values(transforms),\n        [codeTabsTransformer, { copyButtons }],\n        [\n            handle_missing_components,\n            { components, missingComponents: ['ignore', 'throw'].includes(missingComponents) ? missingComponents : 'ignore' },\n        ],\n        [validate_mcpintro],\n    ];\n    if (useTailwind) {\n        remarkPlugins.push([transform_tailwind, { components }]);\n    }\n    const rehypePlugins = [...ast_processor_rehypePlugins, [rehypeToc, { components }]];\n    if (opts.format === 'md') {\n        /**\n         * When running in `md` format we need to sanitize the content for security reasons.\n         * The `mdxCompileSync` has a very aggressive sanitization process that removes\n         * all HTML elements. The `mdx` internal rendering pipeline processess the plugins\n         * before it's internal sanitization, so parse the raw tree first,\n         * then sanitize it to remove any disallowed attributes. This circumvents the\n         * default sanitization.\n         */\n        rehypePlugins.push([\n            rehypeRaw,\n            {\n                passThrough: ['mdxjsEsm'],\n            },\n        ]);\n        rehypePlugins.push([rehypeSanitize, sanitizeSchema]);\n    }\n    try {\n        const vfile = compileSync(text, {\n            outputFormat: 'function-body',\n            providerImportSource: '#',\n            remarkPlugins,\n            rehypePlugins,\n            ...opts,\n        });\n        const string = String(vfile)\n            .replaceAll(/await import\\(_resolveDynamicMdxSpecifier\\(('react'|\"react\")\\)\\)/g, 'arguments[0].imports.React')\n            .replace('\"use strict\";', '\"use strict\";\\nconst { user } = arguments[0].imports;\\n');\n        return string;\n    }\n    catch (error) {\n        throw error.line ? new MdxSyntaxError(error, text) : error;\n    }\n};\n/* harmony default export */ const lib_compile = (compile_compile);\n\n;// ./lib/exports.ts\n\n\nconst exports_exports = (doc) => {\n    return getExports(lib_mdast(doc));\n};\n/* harmony default export */ const lib_exports = (exports_exports);\n\n;// ./lib/hast.ts\n\n\n\n\nconst hast = (text, opts = {}) => {\n    const components = Object.entries(opts.components || {}).reduce((memo, [name, doc]) => {\n        memo[name] = lib_mdast(doc);\n        return memo;\n    }, {});\n    const processor = ast_processor(opts)\n        .use(inject_components({ components }))\n        .use(mdx_to_hast)\n        .use(remarkRehype)\n        .use(ast_processor_rehypePlugins);\n    return processor.runSync(processor.parse(text));\n};\n/* harmony default export */ const lib_hast = (hast);\n\n;// ./processor/migration/emphasis.ts\n\nconst emphasis_strongTest = (node) => ['emphasis', 'strong'].includes(node.type);\nconst addSpaceBefore = (index, parent) => {\n    if (!(index > 0 && parent.children[index - 1]))\n        return;\n    const prev = parent.children[index - 1];\n    if (!('value' in prev) || prev.value.endsWith(' ') || prev.type === 'escape')\n        return;\n    parent.children.splice(index, 0, { type: 'text', value: ' ' });\n};\nconst addSpaceAfter = (index, parent) => {\n    if (!(index < parent.children.length - 1 && parent.children[index + 1]))\n        return;\n    const nextChild = parent.children[index + 1];\n    if (!('value' in nextChild) || nextChild.value.startsWith(' '))\n        return;\n    parent.children.splice(index + 1, 0, { type: 'text', value: ' ' });\n};\nconst trimEmphasis = (node, index, parent) => {\n    let trimmed = false;\n    visit(node, 'text', (child) => {\n        const newValue = child.value.trimStart();\n        if (newValue !== child.value) {\n            trimmed = true;\n            child.value = newValue;\n        }\n        return EXIT;\n    });\n    visit(node, 'text', (child) => {\n        const newValue = child.value.trimEnd();\n        if (newValue !== child.value) {\n            trimmed = true;\n            child.value = newValue;\n        }\n        return EXIT;\n    }, true);\n    if (trimmed) {\n        addSpaceBefore(index, parent);\n        addSpaceAfter(index, parent);\n    }\n};\nconst emphasisTransfomer = () => (tree) => {\n    visit(tree, emphasis_strongTest, trimEmphasis);\n    return tree;\n};\n/* harmony default export */ const migration_emphasis = (emphasisTransfomer);\n\n;// ./processor/migration/images.ts\n\nconst images_imageTransformer = () => tree => {\n    visit(tree, 'image', (image) => {\n        if (image.data?.hProperties?.className === 'border') {\n            image.data.hProperties.border = true;\n        }\n    });\n};\n/* harmony default export */ const migration_images = (images_imageTransformer);\n\n;// ./processor/migration/linkReference.ts\n\nconst linkReferenceTransformer = () => (tree) => {\n    visit(tree, 'linkReference', (node, index, parent) => {\n        const definitions = {};\n        visit(tree, 'definition', (def) => {\n            definitions[def.identifier] = def;\n        });\n        if (node.label === node.identifier && parent) {\n            if (!(node.identifier in definitions)) {\n                parent.children[index] = {\n                    type: 'text',\n                    value: `[${node.label}]`,\n                    position: node.position,\n                };\n            }\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const migration_linkReference = (linkReferenceTransformer);\n\n;// ./processor/migration/table-cell.ts\n\nconst magicIndex = (i, j) => `${i === 0 ? 'h' : `${i - 1}`}-${j}`;\nconst isInlineHtml = node => node.type === 'html' && !node.block;\n// @note: This regex is detect malformed lists that were created by the\n// markdown editor. Consider the following markdown:\n//\n// ```\n// * item 1\n// * item 2\n// * item 3\n// ```\n//\n// This is a perfectly valid list. But when you put that text into a table\n// cell, the editor does **bad** things. After a save and load cycle, it gets\n// converted to this:\n//\n// ```\n// \\_ item 1\n// \\_ item 2\n// \\* item 3\n// ```\n//\n// The following regex attempts to detect this pattern, and we'll convert it to\n// something more standard.\nconst psuedoListRegex = /^(?![ \\t]*([*_]+).*\\1[ \\t]*$)(?<ws>[ \\t]*)\\\\?([*_])\\s*(?<item>.*)$/gm;\nconst migrateTableCells = (vfile, rdmd) => (table) => {\n    let json;\n    try {\n        const { position } = table;\n        if (position) {\n            json = JSON.parse(vfile\n                .toString()\n                .slice(position.start.offset, position.end.offset)\n                .replace(/.*\\[block:parameters\\](.*)\\[\\/block\\].*/s, '$1'));\n        }\n    }\n    catch (err) {\n        /**\n         * This failure case is already handled by the following logic. Plus,\n         * because it's being handled internally, there's no way for our\n         * migration script to catch the error or keep track of it, and it just\n         * ends up blowing up the output logs.\n         */\n        // console.error(err);\n    }\n    visit(table, 'tableRow', (row, i) => {\n        visit(row, 'tableCell', (cell, j) => {\n            let children = cell.children;\n            if (json && json.data[magicIndex(i, j)]) {\n                const string = json.data[magicIndex(i, j)].replace(psuedoListRegex, '$<ws>- $<item>');\n                children = rdmd.mdast(string).children;\n            }\n            cell.children =\n                children.length > 1 && !children.some(isInlineHtml)\n                    ? children\n                    : [{ type: 'paragraph', children }];\n            return SKIP;\n        });\n        return SKIP;\n    });\n    visit(table, 'inlineCode', (code) => {\n        if (code.value.includes('\\n')) {\n            code.type = 'code';\n        }\n    });\n};\nfunction tableCellTransformer() {\n    const rdmd = this.data('rdmd');\n    return (tree, vfile) => {\n        visit(tree, 'table', migrateTableCells(vfile, rdmd));\n        return tree;\n    };\n}\n/* harmony default export */ const table_cell = (tableCellTransformer);\n\n;// ./processor/migration/index.ts\n\n\n\n\nconst transformers = [migration_emphasis, migration_images, migration_linkReference, table_cell];\n/* harmony default export */ const migration = (transformers);\n\n;// ./lib/mdastV6.ts\n\nconst migrationNormalize = (doc) => {\n    return doc.replaceAll(/^(<!--.*?)\\\\-->$/gms, '$1-->');\n};\nconst mdastV6 = (doc, { rdmd }) => {\n    const [_normalizedDoc] = rdmd.setup(doc);\n    const normalizedDoc = migrationNormalize(_normalizedDoc);\n    const proc = rdmd.processor().use(migration).data('rdmd', rdmd);\n    const tree = proc.parse(normalizedDoc);\n    proc.runSync(tree, normalizedDoc);\n    return tree;\n};\n/* harmony default export */ const lib_mdastV6 = (mdastV6);\n\n;// ./node_modules/hast-util-is-element/lib/index.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is an element.\n * @param {unknown} this\n *   Context object (`this`) to call `test` with\n * @param {unknown} [element]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   Position of `element` in its parent.\n * @param {Parents | null | undefined} [parent]\n *   Parent of `element`.\n * @returns {boolean}\n *   Whether this is an element and passes a test.\n *\n * @typedef {Array<TestFunction | string> | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary element.\n *\n *   * when `string`, checks that the element has that tag name\n *   * when `function`, see `TestFunction`\n *   * when `Array`, checks if one of the subtests pass\n *\n * @callback TestFunction\n *   Check if an element passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Element} element\n *   An element.\n * @param {number | undefined} [index]\n *   Position of `element` in its parent.\n * @param {Parents | undefined} [parent]\n *   Parent of `element`.\n * @returns {boolean | undefined | void}\n *   Whether this element passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `element` is an `Element` and whether it passes the given test.\n *\n * @param element\n *   Thing to check, typically `element`.\n * @param test\n *   Check for a specific element.\n * @param index\n *   Position of `element` in its parent.\n * @param parent\n *   Parent of `element`.\n * @param context\n *   Context object (`this`) to call `test` with.\n * @returns\n *   Whether `element` is an `Element` and passes a test.\n * @throws\n *   When an incorrect `test`, `index`, or `parent` is given; there is no error\n *   thrown when `element` is not a node or not an element.\n */\nconst isElement =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends TestFunction>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n   *   (<Condition extends string>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n   *   ((element?: null | undefined) => false) &\n   *   ((element: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n   *   ((element: unknown, test?: Test, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [element]\n     * @param {Test | undefined} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parents | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (element, test, index, parent, context) {\n      const check = convertElement(test)\n\n      if (\n        index !== null &&\n        index !== undefined &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite `index`')\n      }\n\n      if (\n        parent !== null &&\n        parent !== undefined &&\n        (!parent.type || !parent.children)\n      ) {\n        throw new Error('Expected valid `parent`')\n      }\n\n      if (\n        (index === null || index === undefined) !==\n        (parent === null || parent === undefined)\n      ) {\n        throw new Error('Expected both `index` and `parent`')\n      }\n\n      return looksLikeAnElement(element)\n        ? check.call(context, element, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate a check from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * an `element`, `index`, and `parent`.\n *\n * @param test\n *   A test for a specific element.\n * @returns\n *   A check.\n */\nconst convertElement =\n  // Note: overloads in JSDoc can’t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends TestFunction>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n   *   (<Condition extends string>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n   *   ((test?: null | undefined) => (element?: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test | null | undefined} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return hast_util_is_element_lib_element\n      }\n\n      if (typeof test === 'string') {\n        return tagNameFactory(test)\n      }\n\n      // Assume array.\n      if (typeof test === 'object') {\n        return lib_anyFactory(test)\n      }\n\n      if (typeof test === 'function') {\n        return lib_castFactory(test)\n      }\n\n      throw new Error('Expected function, string, or array as `test`')\n    }\n  )\n\n/**\n * Handle multiple tests.\n *\n * @param {Array<TestFunction | string>} tests\n * @returns {Check}\n */\nfunction lib_anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convertElement(tests[index])\n  }\n\n  return lib_castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn a string into a test for an element with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction tagNameFactory(check) {\n  return lib_castFactory(tagName)\n\n  /**\n   * @param {Element} element\n   * @returns {boolean}\n   */\n  function tagName(element) {\n    return element.tagName === check\n  }\n}\n\n/**\n * Turn a custom test into a test for an element that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction lib_castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeAnElement(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\n/**\n * Make sure something is an element.\n *\n * @param {unknown} element\n * @returns {element is Element}\n */\nfunction hast_util_is_element_lib_element(element) {\n  return Boolean(\n    element &&\n      typeof element === 'object' &&\n      'type' in element &&\n      element.type === 'element' &&\n      'tagName' in element &&\n      typeof element.tagName === 'string'\n  )\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Element}\n */\nfunction looksLikeAnElement(value) {\n  return (\n    value !== null &&\n    typeof value === 'object' &&\n    'type' in value &&\n    'tagName' in value\n  )\n}\n\n;// ./node_modules/hast-util-embedded/lib/index.js\n\n\n/**\n * Check if a node is a *embedded content*.\n *\n * @param value\n *   Thing to check (typically `Node`).\n * @returns\n *   Whether `value` is an element considered embedded content.\n *\n *   The elements `audio`, `canvas`, `embed`, `iframe`, `img`, `math`,\n *   `object`, `picture`, `svg`, and `video` are embedded content.\n */\nconst embedded = convertElement(\n  /**\n   * @param element\n   * @returns {element is {tagName: 'audio' | 'canvas' | 'embed' | 'iframe' | 'img' | 'math' | 'object' | 'picture' | 'svg' | 'video'}}\n   */\n  function (element) {\n    return (\n      element.tagName === 'audio' ||\n      element.tagName === 'canvas' ||\n      element.tagName === 'embed' ||\n      element.tagName === 'iframe' ||\n      element.tagName === 'img' ||\n      element.tagName === 'math' ||\n      element.tagName === 'object' ||\n      element.tagName === 'picture' ||\n      element.tagName === 'svg' ||\n      element.tagName === 'video'\n    )\n  }\n)\n\n;// ./node_modules/rehype-minify-whitespace/lib/block.js\n// See: <https://html.spec.whatwg.org/#the-css-user-agent-style-sheet-and-presentational-hints>\nconst block_blocks = [\n  'address', // Flow content.\n  'article', // Sections and headings.\n  'aside', // Sections and headings.\n  'blockquote', // Flow content.\n  'body', // Page.\n  'br', // Contribute whitespace intrinsically.\n  'caption', // Similar to block.\n  'center', // Flow content, legacy.\n  'col', // Similar to block.\n  'colgroup', // Similar to block.\n  'dd', // Lists.\n  'dialog', // Flow content.\n  'dir', // Lists, legacy.\n  'div', // Flow content.\n  'dl', // Lists.\n  'dt', // Lists.\n  'figcaption', // Flow content.\n  'figure', // Flow content.\n  'footer', // Flow content.\n  'form', // Flow content.\n  'h1', // Sections and headings.\n  'h2', // Sections and headings.\n  'h3', // Sections and headings.\n  'h4', // Sections and headings.\n  'h5', // Sections and headings.\n  'h6', // Sections and headings.\n  'head', // Page.\n  'header', // Flow content.\n  'hgroup', // Sections and headings.\n  'hr', // Flow content.\n  'html', // Page.\n  'legend', // Flow content.\n  'li', // Block-like.\n  'li', // Similar to block.\n  'listing', // Flow content, legacy\n  'main', // Flow content.\n  'menu', // Lists.\n  'nav', // Sections and headings.\n  'ol', // Lists.\n  'optgroup', // Similar to block.\n  'option', // Similar to block.\n  'p', // Flow content.\n  'plaintext', // Flow content, legacy\n  'pre', // Flow content.\n  'section', // Sections and headings.\n  'summary', // Similar to block.\n  'table', // Similar to block.\n  'tbody', // Similar to block.\n  'td', // Block-like.\n  'td', // Similar to block.\n  'tfoot', // Similar to block.\n  'th', // Block-like.\n  'th', // Similar to block.\n  'thead', // Similar to block.\n  'tr', // Similar to block.\n  'ul', // Lists.\n  'wbr', // Contribute whitespace intrinsically.\n  'xmp' // Flow content, legacy\n]\n\n;// ./node_modules/rehype-minify-whitespace/lib/content.js\nconst lib_content_content = [\n  // Form.\n  'button',\n  'input',\n  'select',\n  'textarea'\n]\n\n;// ./node_modules/rehype-minify-whitespace/lib/skippable.js\nconst skippable = [\n  'area',\n  'base',\n  'basefont',\n  'dialog',\n  'datalist',\n  'head',\n  'link',\n  'meta',\n  'noembed',\n  'noframes',\n  'param',\n  'rp',\n  'script',\n  'source',\n  'style',\n  'template',\n  'track',\n  'title'\n]\n\n;// ./node_modules/rehype-minify-whitespace/lib/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n */\n\n/**\n * @callback Collapse\n *   Collapse a string.\n * @param {string} value\n *   Value to collapse.\n * @returns {string}\n *   Collapsed value.\n *\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [newlines=false]\n *   Collapse whitespace containing newlines to `'\\n'` instead of `' '`\n *   (default: `false`); the default is to collapse to a single space.\n *\n * @typedef Result\n *   Result.\n * @property {boolean} remove\n *   Whether to remove.\n * @property {boolean} ignore\n *   Whether to ignore.\n * @property {boolean} stripAtStart\n *   Whether to strip at the start.\n *\n * @typedef State\n *   Info passed around.\n * @property {Collapse} collapse\n *   Collapse.\n * @property {Whitespace} whitespace\n *   Current whitespace.\n * @property {boolean | undefined} [before]\n *   Whether there is a break before (default: `false`).\n * @property {boolean | undefined} [after]\n *   Whether there is a break after (default: `false`).\n *\n * @typedef {'normal' | 'nowrap' | 'pre' | 'pre-wrap'} Whitespace\n *   Whitespace setting.\n */\n\n\n\n\n\n\n\n\n\n/** @type {Options} */\nconst rehype_minify_whitespace_lib_emptyOptions = {}\nconst ignorableNode = convert(['doctype', 'comment'])\n\n/**\n * Minify whitespace.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nfunction rehypeMinifyWhitespace(options) {\n  const settings = options || rehype_minify_whitespace_lib_emptyOptions\n  const collapse = collapseFactory(\n    settings.newlines ? replaceNewlines : replaceWhitespace\n  )\n\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree) {\n    minify(tree, {collapse, whitespace: 'normal'})\n  }\n}\n\n/**\n * @param {Nodes} node\n *   Node.\n * @param {State} state\n *   Info passed around.\n * @returns {Result}\n *   Result.\n */\nfunction minify(node, state) {\n  if ('children' in node) {\n    const settings = {...state}\n\n    if (node.type === 'root' || blocklike(node)) {\n      settings.before = true\n      settings.after = true\n    }\n\n    settings.whitespace = inferWhiteSpace(node, state)\n\n    return rehype_minify_whitespace_lib_all(node, settings)\n  }\n\n  if (node.type === 'text') {\n    if (state.whitespace === 'normal') {\n      return minifyText(node, state)\n    }\n\n    // Naïve collapse, but no trimming:\n    if (state.whitespace === 'nowrap') {\n      node.value = state.collapse(node.value)\n    }\n\n    // The `pre-wrap` or `pre` whitespace settings are neither collapsed nor\n    // trimmed.\n  }\n\n  return {ignore: ignorableNode(node), stripAtStart: false, remove: false}\n}\n\n/**\n * @param {Text} node\n *   Node.\n * @param {State} state\n *   Info passed around.\n * @returns {Result}\n *   Result.\n */\nfunction minifyText(node, state) {\n  const value = state.collapse(node.value)\n  const result = {ignore: false, stripAtStart: false, remove: false}\n  let start = 0\n  let end = value.length\n\n  if (state.before && removable(value.charAt(0))) {\n    start++\n  }\n\n  if (start !== end && removable(value.charAt(end - 1))) {\n    if (state.after) {\n      end--\n    } else {\n      result.stripAtStart = true\n    }\n  }\n\n  if (start === end) {\n    result.remove = true\n  } else {\n    node.value = value.slice(start, end)\n  }\n\n  return result\n}\n\n/**\n * @param {Parents} parent\n *   Node.\n * @param {State} state\n *   Info passed around.\n * @returns {Result}\n *   Result.\n */\nfunction rehype_minify_whitespace_lib_all(parent, state) {\n  let before = state.before\n  const after = state.after\n  const children = parent.children\n  let length = children.length\n  let index = -1\n\n  while (++index < length) {\n    const result = minify(children[index], {\n      ...state,\n      after: collapsableAfter(children, index, after),\n      before\n    })\n\n    if (result.remove) {\n      children.splice(index, 1)\n      index--\n      length--\n    } else if (!result.ignore) {\n      before = result.stripAtStart\n    }\n\n    // If this element, such as a `<select>` or `<img>`, contributes content\n    // somehow, allow whitespace again.\n    if (lib_content(children[index])) {\n      before = false\n    }\n  }\n\n  return {ignore: false, stripAtStart: Boolean(before || after), remove: false}\n}\n\n/**\n * @param {Array<Nodes>} nodes\n *   Nodes.\n * @param {number} index\n *   Index.\n * @param {boolean | undefined} [after]\n *   Whether there is a break after `nodes` (default: `false`).\n * @returns {boolean | undefined}\n *   Whether there is a break after the node at `index`.\n */\nfunction collapsableAfter(nodes, index, after) {\n  while (++index < nodes.length) {\n    const node = nodes[index]\n    let result = inferBoundary(node)\n\n    if (result === undefined && 'children' in node && !lib_skippable(node)) {\n      result = collapsableAfter(node.children, -1)\n    }\n\n    if (typeof result === 'boolean') {\n      return result\n    }\n  }\n\n  return after\n}\n\n/**\n * Infer two types of boundaries:\n *\n * 1. `true` — boundary for which whitespace around it does not contribute\n *    anything\n * 2. `false` — boundary for which whitespace around it *does* contribute\n *\n * No result (`undefined`) is returned if it is unknown.\n *\n * @param {Nodes} node\n *   Node.\n * @returns {boolean | undefined}\n *   Boundary.\n */\nfunction inferBoundary(node) {\n  if (node.type === 'element') {\n    if (lib_content(node)) {\n      return false\n    }\n\n    if (blocklike(node)) {\n      return true\n    }\n\n    // Unknown: either depends on siblings if embedded or metadata, or on\n    // children.\n  } else if (node.type === 'text') {\n    if (!whitespace(node)) {\n      return false\n    }\n  } else if (!ignorableNode(node)) {\n    return false\n  }\n}\n\n/**\n * Infer whether a node is skippable.\n *\n * @param {Nodes} node\n *   Node.\n * @returns {boolean}\n *   Whether `node` is skippable.\n */\nfunction lib_content(node) {\n  return embedded(node) || isElement(node, lib_content_content)\n}\n\n/**\n * See: <https://html.spec.whatwg.org/#the-css-user-agent-style-sheet-and-presentational-hints>\n *\n * @param {Nodes} node\n *   Node.\n * @returns {boolean}\n *   Whether `node` is block-like.\n */\nfunction blocklike(node) {\n  return isElement(node, block_blocks)\n}\n\n/**\n * @param {Parents} node\n *   Node.\n * @returns {boolean}\n *   Whether `node` is skippable.\n */\nfunction lib_skippable(node) {\n  return (\n    Boolean(node.type === 'element' && node.properties.hidden) ||\n    ignorableNode(node) ||\n    isElement(node, skippable)\n  )\n}\n\n/**\n * @param {string} character\n *   Character.\n * @returns {boolean}\n *   Whether `character` is removable.\n */\nfunction removable(character) {\n  return character === ' ' || character === '\\n'\n}\n\n/**\n * @type {Collapse}\n */\nfunction replaceNewlines(value) {\n  const match = /\\r?\\n|\\r/.exec(value)\n  return match ? match[0] : ' '\n}\n\n/**\n * @type {Collapse}\n */\nfunction replaceWhitespace() {\n  return ' '\n}\n\n/**\n * @param {Collapse} replace\n * @returns {Collapse}\n *   Collapse.\n */\nfunction collapseFactory(replace) {\n  return collapse\n\n  /**\n   * @type {Collapse}\n   */\n  function collapse(value) {\n    return String(value).replace(/[\\t\\n\\v\\f\\r ]+/g, replace)\n  }\n}\n\n/**\n * We don’t need to support void elements here (so `nobr wbr` -> `normal` is\n * ignored).\n *\n * @param {Parents} node\n *   Node.\n * @param {State} state\n *   Info passed around.\n * @returns {Whitespace}\n *   Whitespace.\n */\nfunction inferWhiteSpace(node, state) {\n  if ('tagName' in node && node.properties) {\n    switch (node.tagName) {\n      // Whitespace in script/style, while not displayed by CSS as significant,\n      // could have some meaning in JS/CSS, so we can’t touch them.\n      case 'listing':\n      case 'plaintext':\n      case 'script':\n      case 'style':\n      case 'xmp': {\n        return 'pre'\n      }\n\n      case 'nobr': {\n        return 'nowrap'\n      }\n\n      case 'pre': {\n        return node.properties.wrap ? 'pre-wrap' : 'pre'\n      }\n\n      case 'td':\n      case 'th': {\n        return node.properties.noWrap ? 'nowrap' : state.whitespace\n      }\n\n      case 'textarea': {\n        return 'pre-wrap'\n      }\n\n      default:\n    }\n  }\n\n  return state.whitespace\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/a.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Link}\n *   mdast node.\n */\nfunction a(state, node) {\n  const properties = node.properties || {}\n  // Allow potentially “invalid” nodes, they might be unknown.\n  // We also support straddling later.\n  const children = /** @type {Array<PhrasingContent>} */ (state.all(node))\n\n  /** @type {Link} */\n  const result = {\n    type: 'link',\n    url: state.resolve(String(properties.href || '') || null),\n    title: properties.title ? String(properties.title) : null,\n    children\n  }\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/base.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {undefined}\n *   Nothing.\n */\nfunction base_base(state, node) {\n  if (!state.baseFound) {\n    state.frozenBaseUrl =\n      String((node.properties && node.properties.href) || '') || undefined\n    state.baseFound = true\n  }\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/blockquote.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Blockquote} Blockquote\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Blockquote}\n *   mdast node.\n */\nfunction handlers_blockquote_blockquote(state, node) {\n  /** @type {Blockquote} */\n  const result = {type: 'blockquote', children: state.toFlow(state.all(node))}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/br.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Break} Break\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Break}\n *   mdast node.\n */\nfunction br_br(state, node) {\n  /** @type {Break} */\n  const result = {type: 'break'}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/unist-util-find-after/lib/index.js\n/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {(\n *   Kind extends {children: Array<infer Child>}\n *   ? Child\n *   : never\n * )} Child\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Kind\n *   All node types.\n */\n\n\n\n/**\n * Find the first node in `parent` after another `node` or after an index,\n * that passes `test`.\n *\n * @param parent\n *   Parent node.\n * @param index\n *   Child node or index.\n * @param [test=undefined]\n *   Test for child to look for (optional).\n * @returns\n *   A child (matching `test`, if given) or `undefined`.\n */\nconst findAfter =\n  // Note: overloads like this are needed to support optional generics.\n  /**\n   * @type {(\n   *   (<Kind extends UnistParent, Check extends Test>(parent: Kind, index: Child<Kind> | number, test: Check) => Matches<Child<Kind>, Check> | undefined) &\n   *   (<Kind extends UnistParent>(parent: Kind, index: Child<Kind> | number, test?: null | undefined) => Child<Kind> | undefined)\n   * )}\n   */\n  (\n    /**\n     * @param {UnistParent} parent\n     * @param {UnistNode | number} index\n     * @param {Test} [test]\n     * @returns {UnistNode | undefined}\n     */\n    function (parent, index, test) {\n      const is = convert(test)\n\n      if (!parent || !parent.type || !parent.children) {\n        throw new Error('Expected parent node')\n      }\n\n      if (typeof index === 'number') {\n        if (index < 0 || index === Number.POSITIVE_INFINITY) {\n          throw new Error('Expected positive finite number as index')\n        }\n      } else {\n        index = parent.children.indexOf(index)\n\n        if (index < 0) {\n          throw new Error('Expected child node or index')\n        }\n      }\n\n      while (++index < parent.children.length) {\n        if (is(parent.children[index], index, parent)) {\n          return parent.children[index]\n        }\n      }\n\n      return undefined\n    }\n  )\n\n;// ./node_modules/hast-util-to-text/lib/index.js\n/**\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast-util-is-element').TestFunction} TestFunction\n */\n\n/**\n * @typedef {'normal' | 'nowrap' | 'pre' | 'pre-wrap'} Whitespace\n *   Valid and useful whitespace values (from CSS).\n *\n * @typedef {0 | 1 | 2} BreakNumber\n *   Specific break:\n *\n *   *   `0` — space\n *   *   `1` — line ending\n *   *   `2` — blank line\n *\n * @typedef {'\\n'} BreakForce\n *   Forced break.\n *\n * @typedef {boolean} BreakValue\n *   Whether there was a break.\n *\n * @typedef {BreakNumber | BreakValue | undefined} BreakBefore\n *   Any value for a break before.\n *\n * @typedef {BreakForce | BreakNumber | BreakValue | undefined} BreakAfter\n *   Any value for a break after.\n *\n * @typedef CollectionInfo\n *   Info on current collection.\n * @property {BreakAfter} breakAfter\n *   Whether there was a break after.\n * @property {BreakBefore} breakBefore\n *   Whether there was a break before.\n * @property {Whitespace} whitespace\n *   Current whitespace setting.\n *\n * @typedef Options\n *   Configuration.\n * @property {Whitespace | null | undefined} [whitespace='normal']\n *   Initial CSS whitespace setting to use (default: `'normal'`).\n */\n\n\n\n\nconst searchLineFeeds = /\\n/g\nconst searchTabOrSpaces = /[\\t ]+/g\n\nconst lib_br = convertElement('br')\nconst cell = convertElement(isCell)\nconst p = convertElement('p')\nconst row = convertElement('tr')\n\n// Note that we don’t need to include void elements here as they don’t have text.\n// See: <https://github.com/wooorm/html-void-elements>\nconst notRendered = convertElement([\n  // List from: <https://html.spec.whatwg.org/multipage/rendering.html#hidden-elements>\n  'datalist',\n  'head',\n  'noembed',\n  'noframes',\n  'noscript', // Act as if we support scripting.\n  'rp',\n  'script',\n  'style',\n  'template',\n  'title',\n  // Hidden attribute.\n  lib_hidden,\n  // From: <https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3>\n  closedDialog\n])\n\n// See: <https://html.spec.whatwg.org/multipage/rendering.html#the-css-user-agent-style-sheet-and-presentational-hints>\nconst blockOrCaption = convertElement([\n  'address', // Flow content\n  'article', // Sections and headings\n  'aside', // Sections and headings\n  'blockquote', // Flow content\n  'body', // Page\n  'caption', // `table-caption`\n  'center', // Flow content (legacy)\n  'dd', // Lists\n  'dialog', // Flow content\n  'dir', // Lists (legacy)\n  'dl', // Lists\n  'dt', // Lists\n  'div', // Flow content\n  'figure', // Flow content\n  'figcaption', // Flow content\n  'footer', // Flow content\n  'form,', // Flow content\n  'h1', // Sections and headings\n  'h2', // Sections and headings\n  'h3', // Sections and headings\n  'h4', // Sections and headings\n  'h5', // Sections and headings\n  'h6', // Sections and headings\n  'header', // Flow content\n  'hgroup', // Sections and headings\n  'hr', // Flow content\n  'html', // Page\n  'legend', // Flow content\n  'li', // Lists (as `display: list-item`)\n  'listing', // Flow content (legacy)\n  'main', // Flow content\n  'menu', // Lists\n  'nav', // Sections and headings\n  'ol', // Lists\n  'p', // Flow content\n  'plaintext', // Flow content (legacy)\n  'pre', // Flow content\n  'section', // Sections and headings\n  'ul', // Lists\n  'xmp' // Flow content (legacy)\n])\n\n/**\n * Get the plain-text value of a node.\n *\n * ###### Algorithm\n *\n * *   if `tree` is a comment, returns its `value`\n * *   if `tree` is a text, applies normal whitespace collapsing to its\n *     `value`, as defined by the CSS Text spec\n * *   if `tree` is a root or element, applies an algorithm similar to the\n *     `innerText` getter as defined by HTML\n *\n * ###### Notes\n *\n * > 👉 **Note**: the algorithm acts as if `tree` is being rendered, and as if\n * > we’re a CSS-supporting user agent, with scripting enabled.\n *\n * *   if `tree` is an element that is not displayed (such as a `head`), we’ll\n *     still use the `innerText` algorithm instead of switching to `textContent`\n * *   if descendants of `tree` are elements that are not displayed, they are\n *     ignored\n * *   CSS is not considered, except for the default user agent style sheet\n * *   a line feed is collapsed instead of ignored in cases where Fullwidth, Wide,\n *     or Halfwidth East Asian Width characters are used, the same goes for a case\n *     with Chinese, Japanese, or Yi writing systems\n * *   replaced elements (such as `audio`) are treated like non-replaced elements\n *\n * @param {Nodes} tree\n *   Tree to turn into text.\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `tree`.\n */\nfunction toText(tree, options) {\n  const options_ = options || {}\n  const children = 'children' in tree ? tree.children : []\n  const block = blockOrCaption(tree)\n  const whitespace = inferWhitespace(tree, {\n    whitespace: options_.whitespace || 'normal',\n    breakBefore: false,\n    breakAfter: false\n  })\n\n  /** @type {Array<BreakNumber | string>} */\n  const results = []\n\n  // Treat `text` and `comment` as having normal white-space.\n  // This deviates from the spec as in the DOM the node’s `.data` has to be\n  // returned.\n  // If you want that behavior use `hast-util-to-string`.\n  // All other nodes are later handled as if they are `element`s (so the\n  // algorithm also works on a `root`).\n  // Nodes without children are treated as a void element, so `doctype` is thus\n  // ignored.\n  if (tree.type === 'text' || tree.type === 'comment') {\n    results.push(\n      ...collectText(tree, {\n        whitespace,\n        breakBefore: true,\n        breakAfter: true\n      })\n    )\n  }\n\n  // 1.  If this element is not being rendered, or if the user agent is a\n  //     non-CSS user agent, then return the same value as the textContent IDL\n  //     attribute on this element.\n  //\n  //     Note: we’re not supporting stylesheets so we’re acting as if the node\n  //     is rendered.\n  //\n  //     If you want that behavior use `hast-util-to-string`.\n  //     Important: we’ll have to account for this later though.\n\n  // 2.  Let results be a new empty list.\n  let index = -1\n\n  // 3.  For each child node node of this element:\n  while (++index < children.length) {\n    // 3.1. Let current be the list resulting in running the inner text\n    //      collection steps with node.\n    //      Each item in results will either be a JavaScript string or a\n    //      positive integer (a required line break count).\n    // 3.2. For each item item in current, append item to results.\n    results.push(\n      ...renderedTextCollection(\n        children[index],\n        // @ts-expect-error: `tree` is a parent if we’re here.\n        tree,\n        {\n          whitespace,\n          breakBefore: index ? undefined : block,\n          breakAfter:\n            index < children.length - 1 ? lib_br(children[index + 1]) : block\n        }\n      )\n    )\n  }\n\n  // 4.  Remove any items from results that are the empty string.\n  // 5.  Remove any runs of consecutive required line break count items at the\n  //     start or end of results.\n  // 6.  Replace each remaining run of consecutive required line break count\n  //     items with a string consisting of as many U+000A LINE FEED (LF)\n  //     characters as the maximum of the values in the required line break\n  //     count items.\n  /** @type {Array<string>} */\n  const result = []\n  /** @type {number | undefined} */\n  let count\n\n  index = -1\n\n  while (++index < results.length) {\n    const value = results[index]\n\n    if (typeof value === 'number') {\n      if (count !== undefined && value > count) count = value\n    } else if (value) {\n      if (count !== undefined && count > -1) {\n        result.push('\\n'.repeat(count) || ' ')\n      }\n\n      count = -1\n      result.push(value)\n    }\n  }\n\n  // 7.  Return the concatenation of the string items in results.\n  return result.join('')\n}\n\n/**\n * <https://html.spec.whatwg.org/multipage/dom.html#rendered-text-collection-steps>\n *\n * @param {Nodes} node\n * @param {Parents} parent\n * @param {CollectionInfo} info\n * @returns {Array<BreakNumber | string>}\n */\nfunction renderedTextCollection(node, parent, info) {\n  if (node.type === 'element') {\n    return collectElement(node, parent, info)\n  }\n\n  if (node.type === 'text') {\n    return info.whitespace === 'normal'\n      ? collectText(node, info)\n      : collectPreText(node)\n  }\n\n  return []\n}\n\n/**\n * Collect an element.\n *\n * @param {Element} node\n *   Element node.\n * @param {Parents} parent\n * @param {CollectionInfo} info\n *   Info on current collection.\n * @returns {Array<BreakNumber | string>}\n */\nfunction collectElement(node, parent, info) {\n  // First we infer the `white-space` property.\n  const whitespace = inferWhitespace(node, info)\n  const children = node.children || []\n  let index = -1\n  /** @type {Array<BreakNumber | string>} */\n  let items = []\n\n  // We’re ignoring point 3, and exiting without any content here, because we\n  // deviated from the spec in `toText` at step 3.\n  if (notRendered(node)) {\n    return items\n  }\n\n  /** @type {BreakNumber | undefined} */\n  let prefix\n  /** @type {BreakForce | BreakNumber | undefined} */\n  let suffix\n  // Note: we first detect if there is going to be a break before or after the\n  // contents, as that changes the white-space handling.\n\n  // 2.  If node’s computed value of `visibility` is not `visible`, then return\n  //     items.\n  //\n  //     Note: Ignored, as everything is visible by default user agent styles.\n\n  // 3.  If node is not being rendered, then return items. [...]\n  //\n  //     Note: We already did this above.\n\n  // See `collectText` for step 4.\n\n  // 5.  If node is a `<br>` element, then append a string containing a single\n  //     U+000A LINE FEED (LF) character to items.\n  if (lib_br(node)) {\n    suffix = '\\n'\n  }\n\n  // 7.  If node’s computed value of `display` is `table-row`, and node’s CSS\n  //     box is not the last `table-row` box of the nearest ancestor `table`\n  //     box, then append a string containing a single U+000A LINE FEED (LF)\n  //     character to items.\n  //\n  //     See: <https://html.spec.whatwg.org/multipage/rendering.html#tables-2>\n  //     Note: needs further investigation as this does not account for implicit\n  //     rows.\n  else if (\n    row(node) &&\n    // @ts-expect-error: something up with types of parents.\n    findAfter(parent, node, row)\n  ) {\n    suffix = '\\n'\n  }\n\n  // 8.  If node is a `<p>` element, then append 2 (a required line break count)\n  //     at the beginning and end of items.\n  else if (p(node)) {\n    prefix = 2\n    suffix = 2\n  }\n\n  // 9.  If node’s used value of `display` is block-level or `table-caption`,\n  //     then append 1 (a required line break count) at the beginning and end of\n  //     items.\n  else if (blockOrCaption(node)) {\n    prefix = 1\n    suffix = 1\n  }\n\n  // 1.  Let items be the result of running the inner text collection steps with\n  //     each child node of node in tree order, and then concatenating the\n  //     results to a single list.\n  while (++index < children.length) {\n    items = items.concat(\n      renderedTextCollection(children[index], node, {\n        whitespace,\n        breakBefore: index ? undefined : prefix,\n        breakAfter:\n          index < children.length - 1 ? lib_br(children[index + 1]) : suffix\n      })\n    )\n  }\n\n  // 6.  If node’s computed value of `display` is `table-cell`, and node’s CSS\n  //     box is not the last `table-cell` box of its enclosing `table-row` box,\n  //     then append a string containing a single U+0009 CHARACTER TABULATION\n  //     (tab) character to items.\n  //\n  //     See: <https://html.spec.whatwg.org/multipage/rendering.html#tables-2>\n  if (\n    cell(node) &&\n    // @ts-expect-error: something up with types of parents.\n    findAfter(parent, node, cell)\n  ) {\n    items.push('\\t')\n  }\n\n  // Add the pre- and suffix.\n  if (prefix) items.unshift(prefix)\n  if (suffix) items.push(suffix)\n\n  return items\n}\n\n/**\n * 4.  If node is a Text node, then for each CSS text box produced by node,\n *     in content order, compute the text of the box after application of the\n *     CSS `white-space` processing rules and `text-transform` rules, set\n *     items to the list of the resulting strings, and return items.\n *     The CSS `white-space` processing rules are slightly modified:\n *     collapsible spaces at the end of lines are always collapsed, but they\n *     are only removed if the line is the last line of the block, or it ends\n *     with a br element.\n *     Soft hyphens should be preserved.\n *\n *     Note: See `collectText` and `collectPreText`.\n *     Note: we don’t deal with `text-transform`, no element has that by\n *     default.\n *\n * See: <https://drafts.csswg.org/css-text/#white-space-phase-1>\n *\n * @param {Comment | Text} node\n *   Text node.\n * @param {CollectionInfo} info\n *   Info on current collection.\n * @returns {Array<BreakNumber | string>}\n *   Result.\n */\nfunction collectText(node, info) {\n  const value = String(node.value)\n  /** @type {Array<string>} */\n  const lines = []\n  /** @type {Array<BreakNumber | string>} */\n  const result = []\n  let start = 0\n\n  while (start <= value.length) {\n    searchLineFeeds.lastIndex = start\n\n    const match = searchLineFeeds.exec(value)\n    const end = match && 'index' in match ? match.index : value.length\n\n    lines.push(\n      // Any sequence of collapsible spaces and tabs immediately preceding or\n      // following a segment break is removed.\n      trimAndCollapseSpacesAndTabs(\n        // […] ignoring bidi formatting characters (characters with the\n        // Bidi_Control property [UAX9]: ALM, LTR, RTL, LRE-RLO, LRI-PDI) as if\n        // they were not there.\n        value\n          .slice(start, end)\n          .replace(/[\\u061C\\u200E\\u200F\\u202A-\\u202E\\u2066-\\u2069]/g, ''),\n        start === 0 ? info.breakBefore : true,\n        end === value.length ? info.breakAfter : true\n      )\n    )\n\n    start = end + 1\n  }\n\n  // Collapsible segment breaks are transformed for rendering according to the\n  // segment break transformation rules.\n  // So here we jump to 4.1.2 of [CSSTEXT]:\n  // Any collapsible segment break immediately following another collapsible\n  // segment break is removed\n  let index = -1\n  /** @type {BreakNumber | undefined} */\n  let join\n\n  while (++index < lines.length) {\n    // *   If the character immediately before or immediately after the segment\n    //     break is the zero-width space character (U+200B), then the break is\n    //     removed, leaving behind the zero-width space.\n    if (\n      lines[index].charCodeAt(lines[index].length - 1) === 0x20_0b /* ZWSP */ ||\n      (index < lines.length - 1 &&\n        lines[index + 1].charCodeAt(0) === 0x20_0b) /* ZWSP */\n    ) {\n      result.push(lines[index])\n      join = undefined\n    }\n\n    // *   Otherwise, if the East Asian Width property [UAX11] of both the\n    //     character before and after the segment break is Fullwidth, Wide, or\n    //     Halfwidth (not Ambiguous), and neither side is Hangul, then the\n    //     segment break is removed.\n    //\n    //     Note: ignored.\n    // *   Otherwise, if the writing system of the segment break is Chinese,\n    //     Japanese, or Yi, and the character before or after the segment break\n    //     is punctuation or a symbol (Unicode general category P* or S*) and\n    //     has an East Asian Width property of Ambiguous, and the character on\n    //     the other side of the segment break is Fullwidth, Wide, or Halfwidth,\n    //     and not Hangul, then the segment break is removed.\n    //\n    //     Note: ignored.\n\n    // *   Otherwise, the segment break is converted to a space (U+0020).\n    else if (lines[index]) {\n      if (typeof join === 'number') result.push(join)\n      result.push(lines[index])\n      join = 0\n    } else if (index === 0 || index === lines.length - 1) {\n      // If this line is empty, and it’s the first or last, add a space.\n      // Note that this function is only called in normal whitespace, so we\n      // don’t worry about `pre`.\n      result.push(0)\n    }\n  }\n\n  return result\n}\n\n/**\n * Collect a text node as “pre” whitespace.\n *\n * @param {Text} node\n *   Text node.\n * @returns {Array<BreakNumber | string>}\n *   Result.\n */\nfunction collectPreText(node) {\n  return [String(node.value)]\n}\n\n/**\n * 3.  Every collapsible tab is converted to a collapsible space (U+0020).\n * 4.  Any collapsible space immediately following another collapsible\n *     space—even one outside the boundary of the inline containing that\n *     space, provided both spaces are within the same inline formatting\n *     context—is collapsed to have zero advance width. (It is invisible,\n *     but retains its soft wrap opportunity, if any.)\n *\n * @param {string} value\n *   Value to collapse.\n * @param {BreakBefore} breakBefore\n *   Whether there was a break before.\n * @param {BreakAfter} breakAfter\n *   Whether there was a break after.\n * @returns {string}\n *   Result.\n */\nfunction trimAndCollapseSpacesAndTabs(value, breakBefore, breakAfter) {\n  /** @type {Array<string>} */\n  const result = []\n  let start = 0\n  /** @type {number | undefined} */\n  let end\n\n  while (start < value.length) {\n    searchTabOrSpaces.lastIndex = start\n    const match = searchTabOrSpaces.exec(value)\n    end = match ? match.index : value.length\n\n    // If we’re not directly after a segment break, but there was white space,\n    // add an empty value that will be turned into a space.\n    if (!start && !end && match && !breakBefore) {\n      result.push('')\n    }\n\n    if (start !== end) {\n      result.push(value.slice(start, end))\n    }\n\n    start = match ? end + match[0].length : end\n  }\n\n  // If we reached the end, there was trailing white space, and there’s no\n  // segment break after this node, add an empty value that will be turned\n  // into a space.\n  if (start !== end && !breakAfter) {\n    result.push('')\n  }\n\n  return result.join(' ')\n}\n\n/**\n * Figure out the whitespace of a node.\n *\n * We don’t support void elements here (so `nobr wbr` -> `normal` is ignored).\n *\n * @param {Nodes} node\n *   Node (typically `Element`).\n * @param {CollectionInfo} info\n *   Info on current collection.\n * @returns {Whitespace}\n *   Applied whitespace.\n */\nfunction inferWhitespace(node, info) {\n  if (node.type === 'element') {\n    const properties = node.properties || {}\n    switch (node.tagName) {\n      case 'listing':\n      case 'plaintext':\n      case 'xmp': {\n        return 'pre'\n      }\n\n      case 'nobr': {\n        return 'nowrap'\n      }\n\n      case 'pre': {\n        return properties.wrap ? 'pre-wrap' : 'pre'\n      }\n\n      case 'td':\n      case 'th': {\n        return properties.noWrap ? 'nowrap' : info.whitespace\n      }\n\n      case 'textarea': {\n        return 'pre-wrap'\n      }\n\n      default:\n    }\n  }\n\n  return info.whitespace\n}\n\n/**\n * @type {TestFunction}\n * @param {Element} node\n * @returns {node is {properties: {hidden: true}}}\n */\nfunction lib_hidden(node) {\n  return Boolean((node.properties || {}).hidden)\n}\n\n/**\n * @type {TestFunction}\n * @param {Element} node\n * @returns {node is {tagName: 'td' | 'th'}}\n */\nfunction isCell(node) {\n  return node.tagName === 'td' || node.tagName === 'th'\n}\n\n/**\n * @type {TestFunction}\n */\nfunction closedDialog(node) {\n  return node.tagName === 'dialog' && !(node.properties || {}).open\n}\n\n;// ./node_modules/trim-trailing-lines/index.js\n/**\n * Remove final line endings from `value`\n *\n * @param {unknown} value\n *   Value with trailing line endings, coerced to string.\n * @return {string}\n *   Value without trailing line endings.\n */\nfunction trimTrailingLines(value) {\n  const input = String(value)\n  let end = input.length\n\n  while (end > 0) {\n    const code = input.codePointAt(end - 1)\n    if (code !== undefined && (code === 10 || code === 13)) {\n      end--\n    } else {\n      break\n    }\n  }\n\n  return input.slice(0, end)\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/code.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Code} Code\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\nconst prefix = 'language-'\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Code}\n *   mdast node.\n */\nfunction handlers_code_code(state, node) {\n  const children = node.children\n  let index = -1\n  /** @type {Array<number | string> | undefined} */\n  let classList\n  /** @type {string | undefined} */\n  let lang\n\n  if (node.tagName === 'pre') {\n    while (++index < children.length) {\n      const child = children[index]\n\n      if (\n        child.type === 'element' &&\n        child.tagName === 'code' &&\n        child.properties &&\n        child.properties.className &&\n        Array.isArray(child.properties.className)\n      ) {\n        classList = child.properties.className\n        break\n      }\n    }\n  }\n\n  if (classList) {\n    index = -1\n\n    while (++index < classList.length) {\n      if (String(classList[index]).slice(0, prefix.length) === prefix) {\n        lang = String(classList[index]).slice(prefix.length)\n        break\n      }\n    }\n  }\n\n  /** @type {Code} */\n  const result = {\n    type: 'code',\n    lang: lang || null,\n    meta: null,\n    value: trimTrailingLines(toText(node))\n  }\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/comment.js\n/**\n * @typedef {import('hast').Comment} Comment\n *\n * @typedef {import('mdast').Html} Html\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Comment>} node\n *   hast element to transform.\n * @returns {Html}\n *   mdast node.\n */\nfunction handlers_comment_comment(state, node) {\n  /** @type {Html} */\n  const result = {\n    type: 'html',\n    value: '<!--' + node.value + '-->'\n  }\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/del.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Delete}\n *   mdast node.\n */\nfunction del(state, node) {\n  // Allow potentially “invalid” nodes, they might be unknown.\n  // We also support straddling later.\n  const children = /** @type {Array<PhrasingContent>} */ (state.all(node))\n  /** @type {Delete} */\n  const result = {type: 'delete', children}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/util/list-items-spread.js\n/**\n * @typedef {import('mdast').ListContent} ListContent\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * Infer whether list items are spread.\n *\n * @param {Readonly<Array<Readonly<ListContent>>>} children\n *   List items.\n * @returns {boolean}\n *   Whether one or more list items are spread.\n */\nfunction listItemsSpread(children) {\n  let index = -1\n\n  if (children.length > 1) {\n    while (++index < children.length) {\n      if (children[index].spread) {\n        return true\n      }\n    }\n  }\n\n  return false\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/dl.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').BlockContent} BlockContent\n * @typedef {import('mdast').DefinitionContent} DefinitionContent\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListContent} ListContent\n * @typedef {import('mdast').ListItem} ListItem\n *\n * @typedef {import('../state.js').State} State\n *\n */\n\n/**\n * @typedef Group\n *   Title/definition group.\n * @property {Array<Element>} titles\n *   One or more titles.\n * @property {Array<ElementContent>} definitions\n *   One or more definitions.\n */\n\n\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {List | undefined}\n *   mdast node.\n */\nfunction dl(state, node) {\n  /** @type {Array<ElementContent>} */\n  const clean = []\n  /** @type {Array<Group>} */\n  const groups = []\n  let index = -1\n\n  // Unwrap `<div>`s\n  while (++index < node.children.length) {\n    const child = node.children[index]\n\n    if (child.type === 'element' && child.tagName === 'div') {\n      clean.push(...child.children)\n    } else {\n      clean.push(child)\n    }\n  }\n\n  /** @type {Group} */\n  let group = {definitions: [], titles: []}\n  index = -1\n\n  // Group titles and definitions.\n  while (++index < clean.length) {\n    const child = clean[index]\n\n    if (child.type === 'element' && child.tagName === 'dt') {\n      const previous = clean[index - 1]\n\n      if (\n        previous &&\n        previous.type === 'element' &&\n        previous.tagName === 'dd'\n      ) {\n        groups.push(group)\n        group = {definitions: [], titles: []}\n      }\n\n      group.titles.push(child)\n    } else {\n      group.definitions.push(child)\n    }\n  }\n\n  groups.push(group)\n\n  // Create items.\n  index = -1\n  /** @type {Array<ListContent>} */\n  const content = []\n\n  while (++index < groups.length) {\n    const result = [\n      ...dl_handle(state, groups[index].titles),\n      ...dl_handle(state, groups[index].definitions)\n    ]\n\n    if (result.length > 0) {\n      content.push({\n        type: 'listItem',\n        spread: result.length > 1,\n        checked: null,\n        children: result\n      })\n    }\n  }\n\n  // Create a list if there are items.\n  if (content.length > 0) {\n    /** @type {List} */\n    const result = {\n      type: 'list',\n      ordered: false,\n      start: null,\n      spread: listItemsSpread(content),\n      children: content\n    }\n    state.patch(node, result)\n    return result\n  }\n}\n\n/**\n * @param {State} state\n *   State.\n * @param {Array<ElementContent>} children\n *   hast element children to transform.\n * @returns {Array<BlockContent | DefinitionContent>}\n *   mdast nodes.\n */\nfunction dl_handle(state, children) {\n  const nodes = state.all({type: 'root', children})\n  const listItems = state.toSpecificContent(nodes, dl_create)\n\n  if (listItems.length === 0) {\n    return []\n  }\n\n  if (listItems.length === 1) {\n    return listItems[0].children\n  }\n\n  return [\n    {\n      type: 'list',\n      ordered: false,\n      start: null,\n      spread: listItemsSpread(listItems),\n      children: listItems\n    }\n  ]\n}\n\n/**\n * @returns {ListItem}\n */\nfunction dl_create() {\n  return {type: 'listItem', spread: false, checked: null, children: []}\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/em.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Emphasis}\n *   mdast node.\n */\nfunction em(state, node) {\n  // Allow potentially “invalid” nodes, they might be unknown.\n  // We also support straddling later.\n  const children = /** @type {Array<PhrasingContent>} */ (state.all(node))\n\n  /** @type {Emphasis} */\n  const result = {type: 'emphasis', children}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/heading.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Heading}\n *   mdast node.\n */\nfunction handlers_heading_heading(state, node) {\n  const depth = /** @type {Heading['depth']} */ (\n    /* c8 ignore next */\n    Number(node.tagName.charAt(1)) || 1\n  )\n  const children = /** @type {Array<PhrasingContent>} */ (state.all(node))\n\n  /** @type {Heading} */\n  const result = {type: 'heading', depth, children}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/hr.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {ThematicBreak}\n *   mdast node.\n */\nfunction hr_hr(state, node) {\n  /** @type {ThematicBreak} */\n  const result = {type: 'thematicBreak'}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/iframe.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Link} Link\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Link | undefined}\n *   mdast node.\n */\nfunction iframe(state, node) {\n  const properties = node.properties || {}\n  const src = String(properties.src || '')\n  const title = String(properties.title || '')\n\n  // Only create a link if there is a title.\n  // We can’t use the content of the frame because conforming HTML parsers treat\n  // it as text, whereas legacy parsers treat it as HTML, so it will likely\n  // contain tags that will show up in text.\n  if (src && title) {\n    /** @type {Link} */\n    const result = {\n      type: 'link',\n      title: null,\n      url: state.resolve(src),\n      children: [{type: 'text', value: title}]\n    }\n    state.patch(node, result)\n    return result\n  }\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/img.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Image} Image\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Image}\n *   mdast node.\n */\nfunction img(state, node) {\n  const properties = node.properties || {}\n\n  /** @type {Image} */\n  const result = {\n    type: 'image',\n    url: state.resolve(String(properties.src || '') || null),\n    title: properties.title ? String(properties.title) : null,\n    alt: properties.alt ? String(properties.alt) : ''\n  }\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/inline-code.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').InlineCode} InlineCode\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {InlineCode}\n *   mdast node.\n */\nfunction handlers_inline_code_inlineCode(state, node) {\n  /** @type {InlineCode} */\n  const result = {type: 'inlineCode', value: toText(node)}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/util/find-selected-options.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n *\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {[string, Value]} Option\n *   Option, where the item at `0` is the label, the item at `1` the value.\n *\n * @typedef {Array<Option>} Options\n *   List of options.\n *\n * @typedef {string | undefined} Value\n *   `value` field of option.\n */\n\n\n\n/**\n * @param {Readonly<Element>} node\n *   hast element to inspect.\n * @param {Properties | undefined} [properties]\n *   Properties to use, normally taken from `node`, but can be changed.\n * @returns {Options}\n *   Options.\n */\nfunction findSelectedOptions(node, properties) {\n  /** @type {Array<Element>} */\n  const selectedOptions = []\n  /** @type {Options} */\n  const values = []\n  const props = properties || node.properties || {}\n  const options = findOptions(node)\n  const size =\n    Math.min(Number.parseInt(String(props.size), 10), 0) ||\n    (props.multiple ? 4 : 1)\n  let index = -1\n\n  while (++index < options.length) {\n    const option = options[index]\n\n    if (option && option.properties && option.properties.selected) {\n      selectedOptions.push(option)\n    }\n  }\n\n  const list = selectedOptions.length > 0 ? selectedOptions : options\n  const max = list.length > size ? size : list.length\n  index = -1\n\n  while (++index < max) {\n    const option = list[index]\n    const props = option.properties || {}\n    const content = toText(option)\n    const label = content || String(props.label || '')\n    const value = String(props.value || '') || content\n    values.push([value, label === value ? undefined : label])\n  }\n\n  return values\n}\n\n/**\n * @param {Element} node\n *   Parent to find in.\n * @returns {Array<Element>}\n *   Option elements.\n */\nfunction findOptions(node) {\n  /** @type {Array<Element>} */\n  const results = []\n  let index = -1\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n\n    if ('children' in child && Array.isArray(child.children)) {\n      results.push(...findOptions(child))\n    }\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'option' &&\n      (!child.properties || !child.properties.disabled)\n    ) {\n      results.push(child)\n    }\n  }\n\n  return results\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/input.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').Text} Text\n *\n * @typedef {import('../util/find-selected-options.js').Options} Options\n * @typedef {import('../state.js').State} State\n */\n\n\n\nconst defaultChecked = '[x]'\nconst defaultUnchecked = '[ ]'\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Array<Link | Text> | Image | Text | undefined}\n *   mdast node.\n */\n// eslint-disable-next-line complexity\nfunction input(state, node) {\n  const properties = node.properties || {}\n  const value = String(properties.value || properties.placeholder || '')\n\n  if (\n    properties.disabled ||\n    properties.type === 'hidden' ||\n    properties.type === 'file'\n  ) {\n    return\n  }\n\n  if (properties.type === 'checkbox' || properties.type === 'radio') {\n    /** @type {Text} */\n    const result = {\n      type: 'text',\n      value: properties.checked\n        ? state.options.checked || defaultChecked\n        : state.options.unchecked || defaultUnchecked\n    }\n    state.patch(node, result)\n    return result\n  }\n\n  if (properties.type === 'image') {\n    const alt = properties.alt || value\n\n    if (alt) {\n      /** @type {Image} */\n      const result = {\n        type: 'image',\n        url: state.resolve(String(properties.src || '') || null),\n        title: String(properties.title || '') || null,\n        alt: String(alt)\n      }\n      state.patch(node, result)\n      return result\n    }\n\n    return\n  }\n\n  /** @type {Options} */\n  let values = []\n\n  if (value) {\n    values = [[value, undefined]]\n  } else if (\n    // `list` is not supported on these types:\n    properties.type !== 'button' &&\n    properties.type !== 'file' &&\n    properties.type !== 'password' &&\n    properties.type !== 'reset' &&\n    properties.type !== 'submit' &&\n    properties.list\n  ) {\n    const list = String(properties.list)\n    const datalist = state.elementById.get(list)\n\n    if (datalist && datalist.tagName === 'datalist') {\n      values = findSelectedOptions(datalist, properties)\n    }\n  }\n\n  if (values.length === 0) {\n    return\n  }\n\n  // Hide password value.\n  if (properties.type === 'password') {\n    // Passwords don’t support `list`.\n    values[0] = ['•'.repeat(values[0][0].length), undefined]\n  }\n\n  if (properties.type === 'email' || properties.type === 'url') {\n    /** @type {Array<Link | Text>} */\n    const results = []\n    let index = -1\n\n    while (++index < values.length) {\n      const value = state.resolve(values[index][0])\n      /** @type {Link} */\n      const result = {\n        type: 'link',\n        title: null,\n        url: properties.type === 'email' ? 'mailto:' + value : value,\n        children: [{type: 'text', value: values[index][1] || value}]\n      }\n\n      results.push(result)\n\n      if (index !== values.length - 1) {\n        results.push({type: 'text', value: ', '})\n      }\n    }\n\n    return results\n  }\n\n  /** @type {Array<string>} */\n  const texts = []\n  let index = -1\n\n  while (++index < values.length) {\n    texts.push(\n      values[index][1]\n        ? values[index][1] + ' (' + values[index][0] + ')'\n        : values[index][0]\n    )\n  }\n\n  /** @type {Text} */\n  const result = {type: 'text', value: texts.join(', ')}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-has-property/lib/index.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n */\n\nconst hast_util_has_property_lib_own = {}.hasOwnProperty\n\n/**\n * Check if `node` is an element and has a `name` property.\n *\n * @template {string} Key\n *   Type of key.\n * @param {Nodes} node\n *   Node to check (typically `Element`).\n * @param {Key} name\n *   Property name to check.\n * @returns {node is Element & {properties: Record<Key, Array<number | string> | number | string | true>}}}\n *   Whether `node` is an element that has a `name` property.\n *\n *   Note: see <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/27c9274/types/hast/index.d.ts#L37C29-L37C98>.\n */\nfunction hasProperty(node, name) {\n  const value =\n    node.type === 'element' &&\n    hast_util_has_property_lib_own.call(node.properties, name) &&\n    node.properties[name]\n\n  return value !== null && value !== undefined && value !== false\n}\n\n;// ./node_modules/hast-util-is-body-ok-link/lib/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\nconst lib_list = new Set(['pingback', 'prefetch', 'stylesheet'])\n\n/**\n * Checks whether a node is a “body OK” link.\n *\n * @param {Nodes} node\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is a “body OK” link.\n */\nfunction isBodyOkLink(node) {\n  if (node.type !== 'element' || node.tagName !== 'link') {\n    return false\n  }\n\n  if (node.properties.itemProp) {\n    return true\n  }\n\n  const rel = node.properties.rel\n  let index = -1\n\n  if (!Array.isArray(rel) || rel.length === 0) {\n    return false\n  }\n\n  while (++index < rel.length) {\n    if (!lib_list.has(String(rel[index]))) {\n      return false\n    }\n  }\n\n  return true\n}\n\n;// ./node_modules/hast-util-phrasing/lib/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n\n\n\n\n\nconst basic = convertElement([\n  'a',\n  'abbr',\n  // `area` is in fact only phrasing if it is inside a `map` element.\n  // However, since `area`s are required to be inside a `map` element, and it’s\n  // a rather involved check, it’s ignored here for now.\n  'area',\n  'b',\n  'bdi',\n  'bdo',\n  'br',\n  'button',\n  'cite',\n  'code',\n  'data',\n  'datalist',\n  'del',\n  'dfn',\n  'em',\n  'i',\n  'input',\n  'ins',\n  'kbd',\n  'keygen',\n  'label',\n  'map',\n  'mark',\n  'meter',\n  'noscript',\n  'output',\n  'progress',\n  'q',\n  'ruby',\n  's',\n  'samp',\n  'script',\n  'select',\n  'small',\n  'span',\n  'strong',\n  'sub',\n  'sup',\n  'template',\n  'textarea',\n  'time',\n  'u',\n  'var',\n  'wbr'\n])\n\nconst meta = convertElement('meta')\n\n/**\n * Check if the given value is *phrasing* content.\n *\n * @param {Nodes} value\n *   Node to check.\n * @returns {boolean}\n *   Whether `value` is phrasing content.\n */\nfunction lib_phrasing(value) {\n  return Boolean(\n    value.type === 'text' ||\n      basic(value) ||\n      embedded(value) ||\n      isBodyOkLink(value) ||\n      (meta(value) && hasProperty(value, 'itemProp'))\n  )\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/li.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').ListItem} ListItem\n *\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef ExtractResult\n *   Result of extracting a leading checkbox.\n * @property {Element | undefined} checkbox\n *   The checkbox that was removed, if any.\n * @property {Element} rest\n *   If there was a leading checkbox, a deep clone of the node w/o the leading\n *   checkbox; otherwise a reference to the given, untouched, node.\n */\n\n\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {ListItem}\n *   mdast node.\n */\nfunction li_li(state, node) {\n  // If the list item starts with a checkbox, remove the checkbox and mark the\n  // list item as a GFM task list item.\n  const {rest, checkbox} = extractLeadingCheckbox(node)\n  const checked = checkbox ? Boolean(checkbox.properties.checked) : null\n  const spread = spreadout(rest)\n  const children = state.toFlow(state.all(rest))\n\n  /** @type {ListItem} */\n  const result = {type: 'listItem', spread, checked, children}\n  state.patch(node, result)\n  return result\n}\n\n/**\n * Check if an element should spread out.\n *\n * The reason to spread out a markdown list item is primarily whether writing\n * the equivalent in markdown, would yield a spread out item.\n *\n * A spread out item results in `<p>` and `</p>` tags.\n * Otherwise, the phrasing would be output directly.\n * We can check for that: if there’s a `<p>` element, spread it out.\n *\n * But what if there are no paragraphs?\n * In that case, we can also assume that if two “block” things were written in\n * an item, that it is spread out, because blocks are typically joined by blank\n * lines, which also means a spread item.\n *\n * Lastly, because in HTML things can be wrapped in a `<div>` or similar, we\n * delve into non-phrasing elements here to figure out if they themselves\n * contain paragraphs or 2 or more flow non-phrasing elements.\n *\n * @param {Readonly<Element>} node\n * @returns {boolean}\n */\nfunction spreadout(node) {\n  let index = -1\n  let seenFlow = false\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n\n    if (child.type === 'element') {\n      if (lib_phrasing(child)) continue\n\n      if (child.tagName === 'p' || seenFlow || spreadout(child)) {\n        return true\n      }\n\n      seenFlow = true\n    }\n  }\n\n  return false\n}\n\n/**\n * Extract a leading checkbox from a list item.\n *\n * If there was a leading checkbox, makes a deep clone of the node w/o the\n * leading checkbox; otherwise a reference to the given, untouched, node is\n * given back.\n *\n * So for example:\n *\n * ```html\n * <li><input type=\"checkbox\">Text</li>\n * ```\n *\n * …becomes:\n *\n * ```html\n * <li>Text</li>\n * ```\n *\n * ```html\n * <li><p><input type=\"checkbox\">Text</p></li>\n * ```\n *\n * …becomes:\n *\n * ```html\n * <li><p>Text</p></li>\n * ```\n *\n * @param {Readonly<Element>} node\n * @returns {ExtractResult}\n */\nfunction extractLeadingCheckbox(node) {\n  const head = node.children[0]\n\n  if (\n    head &&\n    head.type === 'element' &&\n    head.tagName === 'input' &&\n    head.properties &&\n    (head.properties.type === 'checkbox' || head.properties.type === 'radio')\n  ) {\n    const rest = {...node, children: node.children.slice(1)}\n    return {checkbox: head, rest}\n  }\n\n  // The checkbox may be nested in another element.\n  // If the first element has children, look for a leading checkbox inside it.\n  //\n  // This only handles nesting in `<p>` elements, which is most common.\n  // It’s possible a leading checkbox might be nested in other types of flow or\n  // phrasing elements (and *deeply* nested, which is not possible with `<p>`).\n  // Limiting things to `<p>` elements keeps this simpler for now.\n  if (head && head.type === 'element' && head.tagName === 'p') {\n    const {checkbox, rest: restHead} = extractLeadingCheckbox(head)\n\n    if (checkbox) {\n      const rest = {...node, children: [restHead, ...node.children.slice(1)]}\n      return {checkbox, rest}\n    }\n  }\n\n  return {checkbox: undefined, rest: node}\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/list.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListContent} ListContent\n * @typedef {import('mdast').ListItem} ListItem\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {List}\n *   mdast node.\n */\nfunction lib_handlers_list_list(state, node) {\n  const ordered = node.tagName === 'ol'\n  const children = state.toSpecificContent(state.all(node), list_create)\n  /** @type {number | null} */\n  let start = null\n\n  if (ordered) {\n    start =\n      node.properties && node.properties.start\n        ? Number.parseInt(String(node.properties.start), 10)\n        : 1\n  }\n\n  /** @type {List} */\n  const result = {\n    type: 'list',\n    ordered,\n    start,\n    spread: listItemsSpread(children),\n    children\n  }\n  state.patch(node, result)\n  return result\n}\n\n/**\n * @returns {ListItem}\n */\nfunction list_create() {\n  return {type: 'listItem', spread: false, checked: null, children: []}\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/util/wrap.js\n/**\n * @typedef {import('mdast').BlockContent} BlockContent\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Parents} Parents\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').RootContent} RootContent\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchItRegistersDataFields\n */\n\n\n\n\n\n\n/**\n * Check if there are phrasing mdast nodes.\n *\n * This is needed if a fragment is given, which could just be a sentence, and\n * doesn’t need a wrapper paragraph.\n *\n * @param {Array<Nodes>} nodes\n * @returns {boolean}\n */\nfunction wrapNeeded(nodes) {\n  let index = -1\n\n  while (++index < nodes.length) {\n    const node = nodes[index]\n\n    if (!wrap_phrasing(node) || ('children' in node && wrapNeeded(node.children))) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Wrap runs of phrasing content into paragraphs, leaving the non-phrasing\n * content as-is.\n *\n * @param {Array<RootContent>} nodes\n *   Content.\n * @returns {Array<BlockContent>}\n *   Content where phrasing is wrapped in paragraphs.\n */\nfunction wrap_wrap(nodes) {\n  return runs(nodes, onphrasing, function (d) {\n    return d\n  })\n\n  /**\n   * @param {Array<PhrasingContent>} nodes\n   * @returns {Array<Paragraph>}\n   */\n  function onphrasing(nodes) {\n    return nodes.every(function (d) {\n      return d.type === 'text' ? whitespace(d.value) : false\n    })\n      ? []\n      : [{type: 'paragraph', children: nodes}]\n  }\n}\n\n/**\n * @param {Delete | Link} node\n * @returns {Array<BlockContent>}\n */\nfunction split(node) {\n  return runs(node.children, onphrasing, onnonphrasing)\n\n  /**\n   * Use `parent`, put the phrasing run inside it.\n   *\n   * @param {Array<PhrasingContent>} nodes\n   * @returns {Array<BlockContent>}\n   */\n  function onphrasing(nodes) {\n    const newParent = wrap_cloneWithoutChildren(node)\n    newParent.children = nodes\n    // @ts-expect-error Assume fine.\n    return [newParent]\n  }\n\n  /**\n   * Use `child`, add `parent` as its first child, put the original children\n   * into `parent`.\n   * If `child` is not a parent, `parent` will not be added.\n   *\n   * @param {BlockContent} child\n   * @returns {BlockContent}\n   */\n  function onnonphrasing(child) {\n    if ('children' in child && 'children' in node) {\n      const newParent = wrap_cloneWithoutChildren(node)\n      const newChild = wrap_cloneWithoutChildren(child)\n      // @ts-expect-error Assume fine.\n      newParent.children = child.children\n      // @ts-expect-error Assume fine.\n      newChild.children.push(newParent)\n      return newChild\n    }\n\n    return {...child}\n  }\n}\n\n/**\n * Wrap all runs of mdast phrasing content in `paragraph` nodes.\n *\n * @param {Array<RootContent>} nodes\n *   List of input nodes.\n * @param {(nodes: Array<PhrasingContent>) => Array<BlockContent>} onphrasing\n *   Turn phrasing content into block content.\n * @param {(node: BlockContent) => BlockContent} onnonphrasing\n *   Map block content (defaults to keeping them as-is).\n * @returns {Array<BlockContent>}\n */\nfunction runs(nodes, onphrasing, onnonphrasing) {\n  const flattened = flatten(nodes)\n  /** @type {Array<BlockContent>} */\n  const result = []\n  /** @type {Array<PhrasingContent>} */\n  let queue = []\n  let index = -1\n\n  while (++index < flattened.length) {\n    const node = flattened[index]\n\n    if (wrap_phrasing(node)) {\n      queue.push(node)\n    } else {\n      if (queue.length > 0) {\n        result.push(...onphrasing(queue))\n        queue = []\n      }\n\n      // @ts-expect-error Assume non-phrasing.\n      result.push(onnonphrasing(node))\n    }\n  }\n\n  if (queue.length > 0) {\n    result.push(...onphrasing(queue))\n    queue = []\n  }\n\n  return result\n}\n\n/**\n * Flatten a list of nodes.\n *\n * @param {Array<RootContent>} nodes\n *   List of nodes, will unravel `delete` and `link`.\n * @returns {Array<RootContent>}\n *   Unraveled nodes.\n */\nfunction flatten(nodes) {\n  /** @type {Array<RootContent>} */\n  const flattened = []\n  let index = -1\n\n  while (++index < nodes.length) {\n    const node = nodes[index]\n\n    // Straddling: some elements are *weird*.\n    // Namely: `map`, `ins`, `del`, and `a`, as they are hybrid elements.\n    // See: <https://html.spec.whatwg.org/#paragraphs>.\n    // Paragraphs are the weirdest of them all.\n    // See the straddling fixture for more info!\n    // `ins` is ignored in mdast, so we don’t need to worry about that.\n    // `map` maps to its content, so we don’t need to worry about that either.\n    // `del` maps to `delete` and `a` to `link`, so we do handle those.\n    // What we’ll do is split `node` over each of its children.\n    if (\n      (node.type === 'delete' || node.type === 'link') &&\n      wrapNeeded(node.children)\n    ) {\n      flattened.push(...split(node))\n    } else {\n      flattened.push(node)\n    }\n  }\n\n  return flattened\n}\n\n/**\n * Check if an mdast node is phrasing.\n *\n * Also supports checking embedded hast fields.\n *\n * @param {Nodes} node\n *   mdast node to check.\n * @returns {node is PhrasingContent}\n *   Whether `node` is phrasing content (includes nodes with `hName` fields\n *   set to phrasing hast element names).\n */\nfunction wrap_phrasing(node) {\n  const tagName = node.data && node.data.hName\n  return tagName\n    ? lib_phrasing({type: 'element', tagName, properties: {}, children: []})\n    : phrasing(node)\n}\n\n/**\n * @template {Parents} ParentType\n *   Parent type.\n * @param {ParentType} node\n *   Node to clone.\n * @returns {ParentType}\n *   Cloned node, without children.\n */\nfunction wrap_cloneWithoutChildren(node) {\n  return esm({...node, children: []})\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/media.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').RootContent} MdastRootContent\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Array<MdastRootContent> | Link}\n *   mdast node.\n */\nfunction media(state, node) {\n  const properties = node.properties || {}\n  const poster = node.tagName === 'video' ? String(properties.poster || '') : ''\n  let src = String(properties.src || '')\n  let index = -1\n  let linkInFallbackContent = false\n  let nodes = state.all(node)\n\n  /** @type {Root} */\n  const fragment = {type: 'root', children: nodes}\n\n  visit(fragment, function (node) {\n    if (node.type === 'link') {\n      linkInFallbackContent = true\n      return EXIT\n    }\n  })\n\n  // If the content links to something, or if it’s not phrasing…\n  if (linkInFallbackContent || wrapNeeded(nodes)) {\n    return nodes\n  }\n\n  // Find the source.\n  while (!src && ++index < node.children.length) {\n    const child = node.children[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'source' &&\n      child.properties\n    ) {\n      src = String(child.properties.src || '')\n    }\n  }\n\n  // If there’s a poster defined on the video, create an image.\n  if (poster) {\n    /** @type {Image} */\n    const image = {\n      type: 'image',\n      title: null,\n      url: state.resolve(poster),\n      alt: mdast_util_to_string_lib_toString(nodes)\n    }\n    state.patch(node, image)\n    nodes = [image]\n  }\n\n  // Allow potentially “invalid” nodes, they might be unknown.\n  // We also support straddling later.\n  const children = /** @type {Array<PhrasingContent>} */ (nodes)\n\n  // Link to the media resource.\n  /** @type {Link} */\n  const result = {\n    type: 'link',\n    title: properties.title ? String(properties.title) : null,\n    url: state.resolve(src),\n    children\n  }\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/p.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Paragraph | undefined}\n *   mdast node.\n */\nfunction p_p(state, node) {\n  // Allow potentially “invalid” nodes, they might be unknown.\n  // We also support straddling later.\n  const children = /** @type {Array<PhrasingContent>} */ (state.all(node))\n\n  if (children.length > 0) {\n    /** @type {Paragraph} */\n    const result = {type: 'paragraph', children}\n    state.patch(node, result)\n    return result\n  }\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/q.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').RootContent} MdastRootContent\n *\n * @typedef {import('../state.js').State} State\n */\n\nconst defaultQuotes = ['\"']\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Array<MdastRootContent>}\n *   mdast nodes.\n */\nfunction q_q(state, node) {\n  const quotes = state.options.quotes || defaultQuotes\n\n  state.qNesting++\n  const contents = state.all(node)\n  state.qNesting--\n\n  const quote = quotes[state.qNesting % quotes.length]\n  const head = contents[0]\n  const tail = contents[contents.length - 1]\n  const open = quote.charAt(0)\n  const close = quote.length > 1 ? quote.charAt(1) : quote\n\n  if (head && head.type === 'text') {\n    head.value = open + head.value\n  } else {\n    contents.unshift({type: 'text', value: open})\n  }\n\n  if (tail && tail.type === 'text') {\n    tail.value += close\n  } else {\n    contents.push({type: 'text', value: close})\n  }\n\n  return contents\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/root.js\n/**\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<HastRoot>} node\n *   hast root to transform.\n * @returns {MdastRoot}\n *   mdast node.\n */\nfunction hast_util_to_mdast_lib_handlers_root_root(state, node) {\n  let children = state.all(node)\n\n  if (state.options.document || wrapNeeded(children)) {\n    children = wrap_wrap(children)\n  }\n\n  /** @type {MdastRoot} */\n  const result = {type: 'root', children}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/select.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Text} Text\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Text | undefined}\n *   mdast node.\n */\nfunction select_select(state, node) {\n  const values = findSelectedOptions(node)\n  let index = -1\n  /** @type {Array<string>} */\n  const results = []\n\n  while (++index < values.length) {\n    const value = values[index]\n    results.push(value[1] ? value[1] + ' (' + value[0] + ')' : value[0])\n  }\n\n  if (results.length > 0) {\n    /** @type {Text} */\n    const result = {type: 'text', value: results.join(', ')}\n    state.patch(node, result)\n    return result\n  }\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/strong.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Strong}\n *   mdast node.\n */\nfunction handlers_strong_strong(state, node) {\n  // Allow potentially “invalid” nodes, they might be unknown.\n  // We also support straddling later.\n  const children = /** @type {Array<PhrasingContent>} */ (state.all(node))\n\n  /** @type {Strong} */\n  const result = {type: 'strong', children}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/table-cell.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').TableCell} TableCell\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {TableCell}\n *   mdast node.\n */\nfunction table_cell_tableCell(state, node) {\n  // Allow potentially “invalid” nodes, they might be unknown.\n  // We also support straddling later.\n  const children = /** @type {Array<PhrasingContent>} */ (state.all(node))\n\n  /** @type {TableCell} */\n  const result = {type: 'tableCell', children}\n  state.patch(node, result)\n\n  if (node.properties) {\n    const rowSpan = node.properties.rowSpan\n    const colSpan = node.properties.colSpan\n\n    if (rowSpan || colSpan) {\n      const data = /** @type {Record<string, unknown>} */ (\n        result.data || (result.data = {})\n      )\n      if (rowSpan) data.hastUtilToMdastTemporaryRowSpan = rowSpan\n      if (colSpan) data.hastUtilToMdastTemporaryColSpan = colSpan\n    }\n  }\n\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/table-row.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').RowContent} RowContent\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {TableRow}\n *   mdast node.\n */\nfunction table_row_tableRow(state, node) {\n  const children = state.toSpecificContent(state.all(node), table_row_create)\n\n  /** @type {TableRow} */\n  const result = {type: 'tableRow', children}\n  state.patch(node, result)\n  return result\n}\n\n/**\n * @returns {RowContent}\n */\nfunction table_row_create() {\n  return {type: 'tableCell', children: []}\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/table.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').AlignType} AlignType\n * @typedef {import('mdast').RowContent} RowContent\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableContent} TableContent\n * @typedef {import('mdast').Text} Text\n *\n * @typedef {import('../state.js').State} State\n *\n * @typedef Info\n *   Inferred info on a table.\n * @property {Array<AlignType>} align\n *   Alignment.\n * @property {boolean} headless\n *   Whether a `thead` is missing.\n */\n\n\n\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Table | Text}\n *   mdast node.\n */\n// eslint-disable-next-line complexity\nfunction table_table(state, node) {\n  // Ignore nested tables.\n  if (state.inTable) {\n    /** @type {Text} */\n    const result = {type: 'text', value: toText(node)}\n    state.patch(node, result)\n    return result\n  }\n\n  state.inTable = true\n\n  const {align, headless} = inspect(node)\n  const rows = state.toSpecificContent(state.all(node), createRow)\n\n  // Add an empty header row.\n  if (headless) {\n    rows.unshift(createRow())\n  }\n\n  let rowIndex = -1\n\n  while (++rowIndex < rows.length) {\n    const row = rows[rowIndex]\n    const cells = state.toSpecificContent(row.children, createCell)\n    row.children = cells\n  }\n\n  let columns = 1\n  rowIndex = -1\n\n  while (++rowIndex < rows.length) {\n    const cells = rows[rowIndex].children\n    let cellIndex = -1\n\n    while (++cellIndex < cells.length) {\n      const cell = cells[cellIndex]\n\n      if (cell.data) {\n        const data = /** @type {Record<string, unknown>} */ (cell.data)\n        const colSpan =\n          Number.parseInt(String(data.hastUtilToMdastTemporaryColSpan), 10) || 1\n        const rowSpan =\n          Number.parseInt(String(data.hastUtilToMdastTemporaryRowSpan), 10) || 1\n\n        if (colSpan > 1 || rowSpan > 1) {\n          let otherRowIndex = rowIndex - 1\n\n          while (++otherRowIndex < rowIndex + rowSpan) {\n            let colIndex = cellIndex - 1\n\n            while (++colIndex < cellIndex + colSpan) {\n              if (!rows[otherRowIndex]) {\n                // Don’t add rows that don’t exist.\n                // Browsers don’t render them either.\n                break\n              }\n\n              /** @type {Array<RowContent>} */\n              const newCells = []\n\n              if (otherRowIndex !== rowIndex || colIndex !== cellIndex) {\n                newCells.push({type: 'tableCell', children: []})\n              }\n\n              rows[otherRowIndex].children.splice(colIndex, 0, ...newCells)\n            }\n          }\n        }\n\n        // Clean the data fields.\n        if ('hastUtilToMdastTemporaryColSpan' in cell.data)\n          delete cell.data.hastUtilToMdastTemporaryColSpan\n        if ('hastUtilToMdastTemporaryRowSpan' in cell.data)\n          delete cell.data.hastUtilToMdastTemporaryRowSpan\n        if (Object.keys(cell.data).length === 0) delete cell.data\n      }\n    }\n\n    if (cells.length > columns) columns = cells.length\n  }\n\n  // Add extra empty cells.\n  rowIndex = -1\n\n  while (++rowIndex < rows.length) {\n    const cells = rows[rowIndex].children\n    let cellIndex = cells.length - 1\n    while (++cellIndex < columns) {\n      cells.push({type: 'tableCell', children: []})\n    }\n  }\n\n  let alignIndex = align.length - 1\n  while (++alignIndex < columns) {\n    align.push(null)\n  }\n\n  state.inTable = false\n\n  /** @type {Table} */\n  const result = {type: 'table', align, children: rows}\n  state.patch(node, result)\n  return result\n}\n\n/**\n * Infer whether the HTML table has a head and how it aligns.\n *\n * @param {Readonly<Element>} node\n *   Table element to check.\n * @returns {Info}\n *   Info.\n */\nfunction inspect(node) {\n  /** @type {Info} */\n  const info = {align: [null], headless: true}\n  let rowIndex = 0\n  let cellIndex = 0\n\n  visit(node, function (child) {\n    if (child.type === 'element') {\n      // Don’t enter nested tables.\n      if (child.tagName === 'table' && node !== child) {\n        return SKIP\n      }\n\n      if (\n        (child.tagName === 'th' || child.tagName === 'td') &&\n        child.properties\n      ) {\n        if (!info.align[cellIndex]) {\n          const value = String(child.properties.align || '') || null\n\n          if (\n            value === 'center' ||\n            value === 'left' ||\n            value === 'right' ||\n            value === null\n          ) {\n            info.align[cellIndex] = value\n          }\n        }\n\n        // If there is a `th` in the first row, assume there is a header row.\n        if (info.headless && rowIndex < 2 && child.tagName === 'th') {\n          info.headless = false\n        }\n\n        cellIndex++\n      }\n      // If there is a `thead`, assume there is a header row.\n      else if (child.tagName === 'thead') {\n        info.headless = false\n      } else if (child.tagName === 'tr') {\n        rowIndex++\n        cellIndex = 0\n      }\n    }\n  })\n\n  return info\n}\n\n/**\n * @returns {RowContent}\n */\nfunction createCell() {\n  return {type: 'tableCell', children: []}\n}\n\n/**\n * @returns {TableContent}\n */\nfunction createRow() {\n  return {type: 'tableRow', children: []}\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/text.js\n/**\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Text} MdastText\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<HastText>} node\n *   hast element to transform.\n * @returns {MdastText}\n *   mdast node.\n */\nfunction hast_util_to_mdast_lib_handlers_text_text(state, node) {\n  /** @type {MdastText} */\n  const result = {type: 'text', value: node.value}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/textarea.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Text} Text\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Text}\n *   mdast node.\n */\nfunction textarea_textarea(state, node) {\n  /** @type {Text} */\n  const result = {type: 'text', value: toText(node)}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/wbr.js\n/**\n * @typedef {import('hast').Element} Element\n *\n * @typedef {import('mdast').Text} Text\n *\n * @typedef {import('../state.js').State} State\n */\n\n// Fix to let VS Code see references to the above types.\n''\n\n/**\n * @param {State} state\n *   State.\n * @param {Readonly<Element>} node\n *   hast element to transform.\n * @returns {Text}\n *   mdast node.\n */\nfunction wbr(state, node) {\n  /** @type {Text} */\n  const result = {type: 'text', value: '\\u200B'}\n  state.patch(node, result)\n  return result\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/handlers/index.js\n/**\n * @typedef {import('hast').Parents} Parents\n *\n * @typedef {import('../state.js').State} State\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Default handlers for nodes.\n *\n * Each key is a node type, each value is a `NodeHandler`.\n */\nconst nodeHandlers = {\n  comment: handlers_comment_comment,\n  doctype: lib_handlers_ignore,\n  root: hast_util_to_mdast_lib_handlers_root_root,\n  text: hast_util_to_mdast_lib_handlers_text_text\n}\n\n/**\n * Default handlers for elements.\n *\n * Each key is an element name, each value is a `Handler`.\n */\nconst lib_handlers_handlers = {\n  // Ignore:\n  applet: lib_handlers_ignore,\n  area: lib_handlers_ignore,\n  basefont: lib_handlers_ignore,\n  bgsound: lib_handlers_ignore,\n  caption: lib_handlers_ignore,\n  col: lib_handlers_ignore,\n  colgroup: lib_handlers_ignore,\n  command: lib_handlers_ignore,\n  content: lib_handlers_ignore,\n  datalist: lib_handlers_ignore,\n  dialog: lib_handlers_ignore,\n  element: lib_handlers_ignore,\n  embed: lib_handlers_ignore,\n  frame: lib_handlers_ignore,\n  frameset: lib_handlers_ignore,\n  isindex: lib_handlers_ignore,\n  keygen: lib_handlers_ignore,\n  link: lib_handlers_ignore,\n  math: lib_handlers_ignore,\n  menu: lib_handlers_ignore,\n  menuitem: lib_handlers_ignore,\n  meta: lib_handlers_ignore,\n  nextid: lib_handlers_ignore,\n  noembed: lib_handlers_ignore,\n  noframes: lib_handlers_ignore,\n  optgroup: lib_handlers_ignore,\n  option: lib_handlers_ignore,\n  param: lib_handlers_ignore,\n  script: lib_handlers_ignore,\n  shadow: lib_handlers_ignore,\n  source: lib_handlers_ignore,\n  spacer: lib_handlers_ignore,\n  style: lib_handlers_ignore,\n  svg: lib_handlers_ignore,\n  template: lib_handlers_ignore,\n  title: lib_handlers_ignore,\n  track: lib_handlers_ignore,\n\n  // Use children:\n  abbr: handlers_all,\n  acronym: handlers_all,\n  bdi: handlers_all,\n  bdo: handlers_all,\n  big: handlers_all,\n  blink: handlers_all,\n  button: handlers_all,\n  canvas: handlers_all,\n  cite: handlers_all,\n  data: handlers_all,\n  details: handlers_all,\n  dfn: handlers_all,\n  font: handlers_all,\n  ins: handlers_all,\n  label: handlers_all,\n  map: handlers_all,\n  marquee: handlers_all,\n  meter: handlers_all,\n  nobr: handlers_all,\n  noscript: handlers_all,\n  object: handlers_all,\n  output: handlers_all,\n  progress: handlers_all,\n  rb: handlers_all,\n  rbc: handlers_all,\n  rp: handlers_all,\n  rt: handlers_all,\n  rtc: handlers_all,\n  ruby: handlers_all,\n  slot: handlers_all,\n  small: handlers_all,\n  span: handlers_all,\n  sup: handlers_all,\n  sub: handlers_all,\n  tbody: handlers_all,\n  tfoot: handlers_all,\n  thead: handlers_all,\n  time: handlers_all,\n\n  // Use children as flow.\n  address: handlers_flow,\n  article: handlers_flow,\n  aside: handlers_flow,\n  body: handlers_flow,\n  center: handlers_flow,\n  div: handlers_flow,\n  fieldset: handlers_flow,\n  figcaption: handlers_flow,\n  figure: handlers_flow,\n  form: handlers_flow,\n  footer: handlers_flow,\n  header: handlers_flow,\n  hgroup: handlers_flow,\n  html: handlers_flow,\n  legend: handlers_flow,\n  main: handlers_flow,\n  multicol: handlers_flow,\n  nav: handlers_flow,\n  picture: handlers_flow,\n  section: handlers_flow,\n\n  // Handle.\n  a: a,\n  audio: media,\n  b: handlers_strong_strong,\n  base: base_base,\n  blockquote: handlers_blockquote_blockquote,\n  br: br_br,\n  code: handlers_inline_code_inlineCode,\n  dir: lib_handlers_list_list,\n  dl: dl,\n  dt: li_li,\n  dd: li_li,\n  del: del,\n  em: em,\n  h1: handlers_heading_heading,\n  h2: handlers_heading_heading,\n  h3: handlers_heading_heading,\n  h4: handlers_heading_heading,\n  h5: handlers_heading_heading,\n  h6: handlers_heading_heading,\n  hr: hr_hr,\n  i: em,\n  iframe: iframe,\n  img: img,\n  image: img,\n  input: input,\n  kbd: handlers_inline_code_inlineCode,\n  li: li_li,\n  listing: handlers_code_code,\n  mark: em,\n  ol: lib_handlers_list_list,\n  p: p_p,\n  plaintext: handlers_code_code,\n  pre: handlers_code_code,\n  q: q_q,\n  s: del,\n  samp: handlers_inline_code_inlineCode,\n  select: select_select,\n  strike: del,\n  strong: handlers_strong_strong,\n  summary: p_p,\n  table: table_table,\n  td: table_cell_tableCell,\n  textarea: textarea_textarea,\n  th: table_cell_tableCell,\n  tr: table_row_tableRow,\n  tt: handlers_inline_code_inlineCode,\n  u: em,\n  ul: lib_handlers_list_list,\n  var: handlers_inline_code_inlineCode,\n  video: media,\n  wbr: wbr,\n  xmp: handlers_code_code\n}\n\n/**\n * @param {State} state\n *   State.\n * @param {Parents} node\n *   Parent to transform.\n */\nfunction handlers_all(state, node) {\n  return state.all(node)\n}\n\n/**\n * @param {State} state\n *   State.\n * @param {Parents} node\n *   Parent to transform.\n */\nfunction handlers_flow(state, node) {\n  return state.toFlow(state.all(node))\n}\n\n/**\n * @returns {undefined}\n */\nfunction lib_handlers_ignore() {}\n\n;// ./node_modules/hast-util-to-mdast/lib/state.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n *\n * @typedef {import('mdast').BlockContent} MdastBlockContent\n * @typedef {import('mdast').DefinitionContent} MdastDefinitionContent\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').Parents} MdastParents\n * @typedef {import('mdast').RootContent} MdastRootContent\n */\n\n/**\n * @typedef {MdastBlockContent | MdastDefinitionContent} MdastFlowContent\n */\n\n/**\n * @callback All\n *   Transform the children of a hast parent to mdast.\n * @param {Parents} parent\n *   Parent.\n * @returns {Array<MdastRootContent>}\n *   mdast children.\n *\n * @callback Handle\n *   Handle a particular element.\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Element} element\n *   Element to transform.\n * @param {Parents | undefined} parent\n *   Parent of `element`.\n * @returns {Array<MdastNodes> | MdastNodes | undefined | void}\n *   mdast node or nodes.\n *\n *   Note: `void` is included until TS nicely infers `undefined`.\n *\n * @callback NodeHandle\n *   Handle a particular node.\n * @param {State} state\n *   Info passed around about the current state.\n * @param {any} node\n *   Node to transform.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Array<MdastNodes> | MdastNodes | undefined | void}\n *   mdast node or nodes.\n *\n *   Note: `void` is included until TS nicely infers `undefined`.\n *\n * @callback One\n *   Transform a hast node to mdast.\n * @param {Nodes} node\n *   Expected hast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Array<MdastNodes> | MdastNodes | undefined}\n *   mdast result.\n *\n * @typedef Options\n *   Configuration.\n * @property {string | null | undefined} [checked='[x]']\n *   Value to use for a checked checkbox or radio input (default: `'[x]'`)\n * @property {boolean | null | undefined} [document]\n *   Whether the given tree represents a complete document (optional).\n *\n *   Applies when the `tree` is a `root` node.\n *   When the tree represents a complete document, then things are wrapped in\n *   paragraphs when needed, and otherwise they’re left as-is.\n *   The default checks for whether there’s mixed content: some phrasing nodes\n *   *and* some non-phrasing nodes.\n * @property {Record<string, Handle | null | undefined> | null | undefined} [handlers]\n *   Object mapping tag names to functions handling the corresponding elements\n *   (optional).\n *\n *   Merged into the defaults.\n * @property {boolean | null | undefined} [newlines=false]\n *   Keep line endings when collapsing whitespace (default: `false`).\n *\n *   The default collapses to a single space.\n * @property {Record<string, NodeHandle | null | undefined> | null | undefined} [nodeHandlers]\n *   Object mapping node types to functions handling the corresponding nodes\n *   (optional).\n *\n *   Merged into the defaults.\n * @property {Array<string> | null | undefined} [quotes=['\"']]\n *   List of quotes to use (default: `['\"']`).\n *\n *   Each value can be one or two characters.\n *   When two, the first character determines the opening quote and the second\n *   the closing quote at that level.\n *   When one, both the opening and closing quote are that character.\n *\n *   The order in which the preferred quotes appear determines which quotes to\n *   use at which level of nesting.\n *   So, to prefer `‘’` at the first level of nesting, and `“”` at the second,\n *   pass `['‘’', '“”']`.\n *   If `<q>`s are nested deeper than the given amount of quotes, the markers\n *   wrap around: a third level of nesting when using `['«»', '‹›']` should\n *   have double guillemets, a fourth single, a fifth double again, etc.\n * @property {string | null | undefined} [unchecked='[ ]']\n *   Value to use for an unchecked checkbox or radio input (default: `'[ ]'`).\n *\n * @callback Patch\n *   Copy a node’s positional info.\n * @param {Nodes} from\n *   hast node to copy from.\n * @param {MdastNodes} to\n *   mdast node to copy into.\n * @returns {undefined}\n *   Nothing.\n *\n * @callback Resolve\n *   Resolve a URL relative to a base.\n * @param {string | null | undefined} url\n *   Possible URL value.\n * @returns {string}\n *   URL, resolved to a `base` element, if any.\n *\n * @typedef State\n *   Info passed around about the current state.\n * @property {All} all\n *   Transform the children of a hast parent to mdast.\n * @property {boolean} baseFound\n *   Whether a `<base>` element was seen.\n * @property {Map<string, Element>} elementById\n *   Elements by their `id`.\n * @property {string | undefined} frozenBaseUrl\n *   `href` of `<base>`, if any.\n * @property {Record<string, Handle>} handlers\n *   Applied element handlers.\n * @property {boolean} inTable\n *   Whether we’re in a table.\n * @property {Record<string, NodeHandle>} nodeHandlers\n *   Applied node handlers.\n * @property {One} one\n *   Transform a hast node to mdast.\n * @property {Options} options\n *   User configuration.\n * @property {Patch} patch\n *   Copy a node’s positional info.\n * @property {number} qNesting\n *   Non-negative finite integer representing how deep we’re in `<q>`s.\n * @property {Resolve} resolve\n *   Resolve a URL relative to a base.\n * @property {ToFlow} toFlow\n *   Transform a list of mdast nodes to flow.\n * @property {<ChildType extends MdastNodes, ParentType extends MdastParents & {'children': Array<ChildType>}>(nodes: Array<MdastRootContent>, build: (() => ParentType)) => Array<ParentType>} toSpecificContent\n *   Turn arbitrary content into a list of a particular node type.\n *\n *   This is useful for example for lists, which must have list items as\n *   content.\n *   in this example, when non-items are found, they will be queued, and\n *   inserted into an adjacent item.\n *   When no actual items exist, one will be made with `build`.\n *\n * @callback ToFlow\n *   Transform a list of mdast nodes to flow.\n * @param {Array<MdastRootContent>} nodes\n *   mdast nodes.\n * @returns {Array<MdastFlowContent>}\n *   mdast flow children.\n */\n\n\n\n\n\nconst hast_util_to_mdast_lib_state_own = {}.hasOwnProperty\n\n/**\n * Create a state.\n *\n * @param {Readonly<Options>} options\n *   User configuration.\n * @returns {State}\n *   State.\n */\nfunction lib_state_createState(options) {\n  return {\n    all: lib_state_all,\n    baseFound: false,\n    elementById: new Map(),\n    frozenBaseUrl: undefined,\n    handlers: {...lib_handlers_handlers, ...options.handlers},\n    inTable: false,\n    nodeHandlers: {...nodeHandlers, ...options.nodeHandlers},\n    one: state_one,\n    options,\n    patch: hast_util_to_mdast_lib_state_patch,\n    qNesting: 0,\n    resolve,\n    toFlow,\n    toSpecificContent\n  }\n}\n\n/**\n * Transform the children of a hast parent to mdast.\n *\n * You might want to combine this with `toFlow` or `toSpecificContent`.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Parents} parent\n *   Parent.\n * @returns {Array<MdastRootContent>}\n *   mdast children.\n */\nfunction lib_state_all(parent) {\n  const children = parent.children || []\n  /** @type {Array<MdastRootContent>} */\n  const results = []\n  let index = -1\n\n  while (++index < children.length) {\n    const child = children[index]\n    // Content -> content.\n    const result =\n      /** @type {Array<MdastRootContent> | MdastRootContent | undefined} */ (\n        this.one(child, parent)\n      )\n\n    if (Array.isArray(result)) {\n      results.push(...result)\n    } else if (result) {\n      results.push(result)\n    }\n  }\n\n  let start = 0\n  let end = results.length\n\n  while (start < end && results[start].type === 'break') {\n    start++\n  }\n\n  while (end > start && results[end - 1].type === 'break') {\n    end--\n  }\n\n  return start === 0 && end === results.length\n    ? results\n    : results.slice(start, end)\n}\n\n/**\n * Transform a hast node to mdast.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Nodes} node\n *   hast node to transform.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Array<MdastNodes> | MdastNodes | undefined}\n *   mdast result.\n */\nfunction state_one(node, parent) {\n  if (node.type === 'element') {\n    if (node.properties && node.properties.dataMdast === 'ignore') {\n      return\n    }\n\n    if (hast_util_to_mdast_lib_state_own.call(this.handlers, node.tagName)) {\n      return this.handlers[node.tagName](this, node, parent) || undefined\n    }\n  } else if (hast_util_to_mdast_lib_state_own.call(this.nodeHandlers, node.type)) {\n    return this.nodeHandlers[node.type](this, node, parent) || undefined\n  }\n\n  // Unknown literal.\n  if ('value' in node && typeof node.value === 'string') {\n    /** @type {MdastRootContent} */\n    const result = {type: 'text', value: node.value}\n    this.patch(node, result)\n    return result\n  }\n\n  // Unknown parent.\n  if ('children' in node) {\n    return this.all(node)\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {Nodes} origin\n *   hast node to copy from.\n * @param {MdastNodes} node\n *   mdast node to copy into.\n * @returns {undefined}\n *   Nothing.\n */\nfunction hast_util_to_mdast_lib_state_patch(origin, node) {\n  if (origin.position) node.position = unist_util_position_lib_position(origin)\n}\n\n/**\n * @this {State}\n *   Info passed around about the current state.\n * @param {string | null | undefined} url\n *   Possible URL value.\n * @returns {string}\n *   URL, resolved to a `base` element, if any.\n */\nfunction resolve(url) {\n  const base = this.frozenBaseUrl\n\n  if (url === null || url === undefined) {\n    return ''\n  }\n\n  if (base) {\n    return String(new URL(url, base))\n  }\n\n  return url\n}\n\n/**\n * Transform a list of mdast nodes to flow.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Array<MdastRootContent>} nodes\n *   Parent.\n * @returns {Array<MdastFlowContent>}\n *   mdast flow children.\n */\nfunction toFlow(nodes) {\n  return wrap_wrap(nodes)\n}\n\n/**\n * Turn arbitrary content into a particular node type.\n *\n * This is useful for example for lists, which must have list items as content.\n * in this example, when non-items are found, they will be queued, and\n * inserted into an adjacent item.\n * When no actual items exist, one will be made with `build`.\n *\n * @template {MdastNodes} ChildType\n *   Node type of children.\n * @template {MdastParents & {'children': Array<ChildType>}} ParentType\n *   Node type of parent.\n * @param {Array<MdastRootContent>} nodes\n *   Nodes, which are either `ParentType`, or will be wrapped in one.\n * @param {() => ParentType} build\n *   Build a parent if needed (must have empty `children`).\n * @returns {Array<ParentType>}\n *   List of parents.\n */\nfunction toSpecificContent(nodes, build) {\n  const reference = build()\n  /** @type {Array<ParentType>} */\n  const results = []\n  /** @type {Array<ChildType>} */\n  let queue = []\n  let index = -1\n\n  while (++index < nodes.length) {\n    const node = nodes[index]\n\n    if (expectedParent(node)) {\n      if (queue.length > 0) {\n        node.children.unshift(...queue)\n        queue = []\n      }\n\n      results.push(node)\n    } else {\n      // Assume `node` can be a child of `ParentType`.\n      // If we start checking nodes, we’d run into problems with unknown nodes,\n      // which we do want to support.\n      const child = /** @type {ChildType} */ (node)\n      queue.push(child)\n    }\n  }\n\n  if (queue.length > 0) {\n    let node = results[results.length - 1]\n\n    if (!node) {\n      node = build()\n      results.push(node)\n    }\n\n    node.children.push(...queue)\n    queue = []\n  }\n\n  return results\n\n  /**\n   * @param {MdastNodes} node\n   * @returns {node is ParentType}\n   */\n  function expectedParent(node) {\n    return node.type === reference.type\n  }\n}\n\n;// ./node_modules/hast-util-to-mdast/lib/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n *\n * @typedef {import('mdast').Nodes} MdastNodes\n * @typedef {import('mdast').RootContent} MdastRootContent\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n\n\n\n\n\n/** @type {Readonly<Options>} */\nconst hast_util_to_mdast_lib_emptyOptions = {}\n\n/**\n * Transform hast to mdast.\n *\n * @param {Readonly<Nodes>} tree\n *   hast tree to transform.\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {MdastNodes}\n *   mdast tree.\n */\nfunction toMdast(tree, options) {\n  // We have to clone, cause we’ll use `rehype-minify-whitespace` on the tree,\n  // which modifies.\n  const cleanTree = esm(tree)\n  const settings = options || hast_util_to_mdast_lib_emptyOptions\n  const transformWhitespace = rehypeMinifyWhitespace({\n    newlines: settings.newlines === true\n  })\n  const state = lib_state_createState(settings)\n  /** @type {MdastNodes} */\n  let mdast\n\n  // @ts-expect-error: fine to pass an arbitrary node.\n  transformWhitespace(cleanTree)\n\n  visit(cleanTree, function (node) {\n    if (node && node.type === 'element' && node.properties) {\n      const id = String(node.properties.id || '') || undefined\n\n      if (id && !state.elementById.has(id)) {\n        state.elementById.set(id, node)\n      }\n    }\n  })\n\n  const result = state.one(cleanTree, undefined)\n\n  if (!result) {\n    mdast = {type: 'root', children: []}\n  } else if (Array.isArray(result)) {\n    // Assume content.\n    const children = /** @type {Array<MdastRootContent>} */ (result)\n    mdast = {type: 'root', children}\n  } else {\n    mdast = result\n  }\n\n  // Collapse text nodes, and fix whitespace.\n  //\n  // Most of this is taken care of by `rehype-minify-whitespace`, but\n  // we’re generating some whitespace too, and some nodes are in the end\n  // ignored.\n  // So clean up.\n  visit(mdast, function (node, index, parent) {\n    if (node.type === 'text' && index !== undefined && parent) {\n      const previous = parent.children[index - 1]\n\n      if (previous && previous.type === node.type) {\n        previous.value += node.value\n        parent.children.splice(index, 1)\n\n        if (previous.position && node.position) {\n          previous.position.end = node.position.end\n        }\n\n        // Iterate over the previous node again, to handle its total value.\n        return index - 1\n      }\n\n      node.value = node.value.replace(/[\\t ]*(\\r?\\n|\\r)[\\t ]*/, '$1')\n\n      // We don’t care about other phrasing nodes in between (e.g., `[ asd ]()`),\n      // as there the whitespace matters.\n      if (\n        parent &&\n        (parent.type === 'heading' ||\n          parent.type === 'paragraph' ||\n          parent.type === 'root')\n      ) {\n        if (!index) {\n          node.value = node.value.replace(/^[\\t ]+/, '')\n        }\n\n        if (index === parent.children.length - 1) {\n          node.value = node.value.replace(/[\\t ]+$/, '')\n        }\n      }\n\n      if (!node.value) {\n        parent.children.splice(index, 1)\n        return index\n      }\n    }\n  })\n\n  return mdast\n}\n\n;// ./node_modules/rehype-remark/lib/index.js\n/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Options} from 'hast-util-to-mdast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @callback TransformBridge\n *   Bridge-mode.\n *\n *   Runs the destination with the new mdast tree.\n *   Discards result.\n * @param {HastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {Promise<undefined>}\n *   Nothing.\n *\n * @callback TransformMutate\n *  Mutate-mode.\n *\n *  Further transformers run on the mdast tree.\n * @param {HastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {MdastRoot}\n *   Tree (mdast).\n */\n\n\n\n/** @satisfies {Options} */\nconst defaults = {document: true}\n\n/**\n * Turn HTML into markdown.\n *\n * ###### Notes\n *\n * *   if a processor is given, runs the (remark) plugins used on it with an\n *     mdast tree, then discards the result (*bridge mode*)\n * *   otherwise, returns an mdast tree, the plugins used after `rehypeRemark`\n *     are remark plugins (*mutate mode*)\n *\n * > 👉 **Note**: It’s highly unlikely that you want to pass a `processor`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Options | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Options | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @overload\n * @param {Options | Processor | null | undefined} [destination]\n * @param {Options | null | undefined} [options]\n * @returns {TransformBridge | TransformMutate}\n *\n * @param {Options | Processor | null | undefined} [destination]\n *   Processor or configuration (optional).\n * @param {Options | null | undefined} [options]\n *   When a processor was given, configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n *   Transform.\n */\nfunction rehypeRemark(destination, options) {\n  if (destination && 'run' in destination) {\n    /**\n     * @type {TransformBridge}\n     */\n    return async function (tree, file) {\n      const mdastTree = toMdast(tree, {...defaults, ...options})\n      await destination.run(mdastTree, file)\n    }\n  }\n\n  /**\n   * @type {TransformMutate}\n   */\n  return function (tree) {\n    return /** @type {MdastRoot} */ (\n      toMdast(tree, {...defaults, ...destination})\n    )\n  }\n}\n\n;// ./processor/compile/callout.ts\n\nconst callout = (node, _, state, info) => {\n    const exit = state.enter(NodeTypes.callout);\n    const tracker = state.createTracker(info);\n    tracker.move('> ');\n    tracker.shift(2);\n    // @note: compatability\n    if (node.data.hProperties.title === '') {\n        node.children.unshift({ type: 'paragraph', children: [{ type: 'text', value: '' }] });\n    }\n    const map = (line, index, blank) => {\n        return `>${index === 0 ? ` ${node.data.hProperties.icon}` : ''}${blank ? '' : ' '}${line}`;\n    };\n    const value = state.indentLines(state.containerFlow(node, tracker.current()), map);\n    exit();\n    return value;\n};\n/* harmony default export */ const compile_callout = (callout);\n\n;// ./processor/compile/code-tabs.ts\n\nconst codeTabs = (node, _, state, info) => {\n    const exit = state.enter(NodeTypes.codeTabs);\n    const tracker = state.createTracker(info);\n    state.join.push(() => 0);\n    const value = state.containerFlow(node, tracker.current());\n    state.join.pop();\n    exit();\n    return value;\n};\n/* harmony default export */ const compile_code_tabs = (codeTabs);\n\n;// ./processor/compile/compatibility.ts\n\n\n\n/*\n * Converts a (remark < v9) html node to a JSX string.\n *\n * First we replace html comments with the JSX equivalent. Then, we parse that\n * as html, and serialize it back as xml!\n *\n */\nconst compileHtml = (node) => {\n    const string = node.value.replaceAll(/<!--(.*)-->/gms, '{/*$1*/}');\n    return string;\n};\nconst figureToImageBlock = (node) => {\n    const { align, border, width, src, url, alt, title, ...image } = node.children.find((child) => child.type === 'image');\n    const { className } = image.data.hProperties;\n    const figcaption = node.children.find((child) => child.type === 'figcaption');\n    const caption = figcaption ? toMarkdown(figcaption.children).trim() : null;\n    const attributes = {\n        ...(align && { align }),\n        ...(alt && { alt }),\n        ...(className && { border: className === 'border' }),\n        ...(border && { border }),\n        ...(caption && { caption }),\n        ...(title && { title }),\n        ...(width && { width }),\n        src: src || url,\n    };\n    return `<Image ${formatProps(attributes)} />`;\n};\nconst embedToEmbedBlock = (node) => {\n    const { html, ...embed } = node.data.hProperties;\n    const attributes = {\n        ...embed,\n        ...(html && { html: encodeURIComponent(html) }),\n    };\n    return `<Embed ${formatProps(attributes)} />`;\n};\nconst compatibility = (node) => {\n    switch (node.type) {\n        case NodeTypes.glossary: {\n            // Glossary terms will no longer be serialized as special node types in the Editor but we want to ensure that we compile historical\n            // data correctly\n            const term = node.data?.hProperties?.term || node.children[0].value;\n            return `<Glossary>${term}</Glossary>`;\n        }\n        case NodeTypes.reusableContent:\n            return `<${node.tag} />`;\n        case 'html':\n            return compileHtml(node);\n        case 'escape':\n            return `\\\\${node.value}`;\n        case 'figure':\n            return figureToImageBlock(node);\n        case 'embed':\n            return embedToEmbedBlock(node);\n        case 'i':\n            return `:${node.data.hProperties.className[1]}:`;\n        case 'yaml':\n            return `---\\n${node.value}\\n---`;\n        default:\n            throw new Error('Unhandled node type!');\n    }\n};\n/* harmony default export */ const compile_compatibility = (compatibility);\n\n;// ./processor/compile/embed.ts\n\nconst embed_embed = (node) => {\n    const attributes = formatHProps(node);\n    const props = getHProps(node);\n    if (node.title !== '@embed') {\n        return `<Embed ${attributes} />`;\n    }\n    return `[${node.label || ''}](${props.url} \"${node.title}\")`;\n};\n/* harmony default export */ const compile_embed = (embed_embed);\n\n;// ./processor/compile/gemoji.ts\nconst gemoji_gemoji = (node) => `:${node.name}:`;\n/* harmony default export */ const compile_gemoji = (gemoji_gemoji);\n\n;// ./processor/compile/html-block.ts\n\nconst htmlBlock = (node) => {\n    const { runScripts, html } = getHProps(node);\n    return `<HTMLBlock${runScripts != null ? ` runScripts=\"${runScripts}\"` : ''}>{\\`\n${reformatHTML(html)}\n\\`}</HTMLBlock>`;\n};\n/* harmony default export */ const html_block = (htmlBlock);\n\n;// ./processor/compile/plain.ts\nconst plain_plain = (node) => node.value;\n/* harmony default export */ const compile_plain = (plain_plain);\n\n;// ./processor/compile/variable.ts\nconst variable = (node) => `{user.${node.data?.hProperties?.name || ''}}`;\n/* harmony default export */ const compile_variable = (variable);\n\n;// ./processor/compile/index.ts\n\n\n\n\n\n\n\n\n\nfunction compilers(mdxish = false) {\n    const data = this.data();\n    const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);\n    const handlers = {\n        [NodeTypes.callout]: compile_callout,\n        [NodeTypes.codeTabs]: compile_code_tabs,\n        [NodeTypes.embedBlock]: compile_embed,\n        [NodeTypes.emoji]: compile_gemoji,\n        [NodeTypes.glossary]: compile_compatibility,\n        [NodeTypes.htmlBlock]: html_block,\n        [NodeTypes.reusableContent]: compile_compatibility,\n        ...(mdxish && { [NodeTypes.variable]: compile_variable }),\n        embed: compile_compatibility,\n        escape: compile_compatibility,\n        figure: compile_compatibility,\n        html: compile_compatibility,\n        i: compile_compatibility,\n        plain: compile_plain,\n        yaml: compile_compatibility,\n    };\n    toMarkdownExtensions.push({ extensions: [{ handlers }] });\n}\nfunction mdxishCompilers() {\n    return compilers.call(this, true);\n}\n/* harmony default export */ const processor_compile = (compilers);\n\n;// ./processor/transform/escape-pipes-in-tables.ts\n\nconst escapePipesInTables = () => tree => {\n    visit(tree, 'table', tableNode => {\n        visit(tableNode, leaf => {\n            if (!('value' in leaf))\n                return;\n            if (leaf.value.match(/|/g)) {\n                // escape only unescaped pipes\n                leaf.value = leaf.value.replaceAll(/(?<!\\\\(\\\\\\\\)*)\\|/g, '\\\\|');\n            }\n        });\n        return SKIP;\n    });\n};\n\n;// ./lib/mdx.ts\n\n\n\n\n\n\n\n\nconst mdx_mdx = (tree, { hast = false, remarkTransformers = [], file, ...opts } = {}) => {\n    const processor = unified()\n        .use(hast ? rehypeRemark : undefined)\n        .use(remarkMdx)\n        .use(remarkGfm)\n        .use(remarkTransformers)\n        .use(div)\n        .use(readme_to_mdx)\n        .use(tables_to_jsx)\n        .use(compatability)\n        .use(escapePipesInTables)\n        .use(processor_compile)\n        .use(remarkStringify, opts);\n    // @ts-expect-error - @todo: coerce the processor and tree to the correct\n    // type depending on the value of hast\n    return processor.stringify(processor.runSync(tree, file));\n};\n/* harmony default export */ const lib_mdx = (mdx_mdx);\n\n;// ./node_modules/hast-util-to-html/lib/handle/comment.js\n/**\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').Parents} Parents\n *\n * @typedef {import('../index.js').State} State\n */\n\n\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n *   Node to handle.\n * @param {number | undefined} _1\n *   Index of `node` in `parent.\n * @param {Parents | undefined} _2\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nfunction handle_comment_comment(node, _1, _2, state) {\n  // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n  return state.settings.bogusComments\n    ? '<?' +\n        stringifyEntities(\n          node.value,\n          Object.assign({}, state.settings.characterReferences, {\n            subset: bogusCommentEntitySubset\n          })\n        ) +\n        '>'\n    : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n  /**\n   * @param {string} $0\n   */\n  function encode($0) {\n    return stringifyEntities(\n      $0,\n      Object.assign({}, state.settings.characterReferences, {\n        subset: commentEntitySubset\n      })\n    )\n  }\n}\n\n;// ./node_modules/hast-util-to-html/lib/handle/doctype.js\n/**\n * @typedef {import('hast').Doctype} Doctype\n * @typedef {import('hast').Parents} Parents\n *\n * @typedef {import('../index.js').State} State\n */\n\n// Make VS code see references to the above types.\n''\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n *   Node to handle.\n * @param {number | undefined} _2\n *   Index of `node` in `parent.\n * @param {Parents | undefined} _3\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nfunction doctype_doctype(_1, _2, _3, state) {\n  return (\n    '<!' +\n    (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n    (state.settings.tightDoctype ? '' : ' ') +\n    'html>'\n  )\n}\n\n;// ./node_modules/hast-util-to-html/lib/omission/util/siblings.js\n/**\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').RootContent} RootContent\n */\n\n\n\nconst siblingAfter = siblings(1)\nconst siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n  return sibling\n\n  /**\n   * Find applicable siblings in a direction.\n   *\n   * @template {Parents} Parent\n   *   Parent type.\n   * @param {Parent | undefined} parent\n   *   Parent.\n   * @param {number | undefined} index\n   *   Index of child in `parent`.\n   * @param {boolean | undefined} [includeWhitespace=false]\n   *   Whether to include whitespace (default: `false`).\n   * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n   *   Child of parent.\n   */\n  function sibling(parent, index, includeWhitespace) {\n    const siblings = parent ? parent.children : emptyChildren\n    let offset = (index || 0) + increment\n    let next = siblings[offset]\n\n    if (!includeWhitespace) {\n      while (next && whitespace(next)) {\n        offset += increment\n        next = siblings[offset]\n      }\n    }\n\n    // @ts-expect-error: it’s a correct child.\n    return next\n  }\n}\n\n;// ./node_modules/hast-util-to-html/lib/omission/omission.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n */\n\n/**\n * @callback OmitHandle\n *   Check if a tag can be omitted.\n * @param {Element} element\n *   Element to check.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether to omit a tag.\n *\n */\n\nconst omission_own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n *   Omission handlers, where each key is a tag name, and each value is the\n *   corresponding handler.\n * @returns {OmitHandle}\n *   Whether to omit a tag of an element.\n */\nfunction omission(handlers) {\n  return omit\n\n  /**\n   * Check if a given node can have a tag omitted.\n   *\n   * @type {OmitHandle}\n   */\n  function omit(node, index, parent) {\n    return (\n      omission_own.call(handlers, node.tagName) &&\n      handlers[node.tagName](node, index, parent)\n    )\n  }\n}\n\n;// ./node_modules/hast-util-to-html/lib/omission/closing.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n */\n\n\n\n\n\nconst closing = omission({\n  body,\n  caption: headOrColgroupOrCaption,\n  colgroup: headOrColgroupOrCaption,\n  dd,\n  dt: closing_dt,\n  head: headOrColgroupOrCaption,\n  html: closing_html,\n  li: closing_li,\n  optgroup,\n  option: closing_option,\n  p: closing_p,\n  rp: rubyElement,\n  rt: rubyElement,\n  tbody,\n  td: cells,\n  tfoot,\n  th: cells,\n  thead,\n  tr: closing_tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n  const next = siblingAfter(parent, index, true)\n  return (\n    !next ||\n    (next.type !== 'comment' &&\n      !(next.type === 'text' && whitespace(next.value.charAt(0))))\n  )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction closing_html(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction closing_p(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return next\n    ? next.type === 'element' &&\n        (next.tagName === 'address' ||\n          next.tagName === 'article' ||\n          next.tagName === 'aside' ||\n          next.tagName === 'blockquote' ||\n          next.tagName === 'details' ||\n          next.tagName === 'div' ||\n          next.tagName === 'dl' ||\n          next.tagName === 'fieldset' ||\n          next.tagName === 'figcaption' ||\n          next.tagName === 'figure' ||\n          next.tagName === 'footer' ||\n          next.tagName === 'form' ||\n          next.tagName === 'h1' ||\n          next.tagName === 'h2' ||\n          next.tagName === 'h3' ||\n          next.tagName === 'h4' ||\n          next.tagName === 'h5' ||\n          next.tagName === 'h6' ||\n          next.tagName === 'header' ||\n          next.tagName === 'hgroup' ||\n          next.tagName === 'hr' ||\n          next.tagName === 'main' ||\n          next.tagName === 'menu' ||\n          next.tagName === 'nav' ||\n          next.tagName === 'ol' ||\n          next.tagName === 'p' ||\n          next.tagName === 'pre' ||\n          next.tagName === 'section' ||\n          next.tagName === 'table' ||\n          next.tagName === 'ul')\n    : !parent ||\n        // Confusing parent.\n        !(\n          parent.type === 'element' &&\n          (parent.tagName === 'a' ||\n            parent.tagName === 'audio' ||\n            parent.tagName === 'del' ||\n            parent.tagName === 'ins' ||\n            parent.tagName === 'map' ||\n            parent.tagName === 'noscript' ||\n            parent.tagName === 'video')\n        )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction closing_li(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction closing_dt(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return Boolean(\n    next &&\n      next.type === 'element' &&\n      (next.tagName === 'dt' || next.tagName === 'dd')\n  )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'dt' || next.tagName === 'dd'))\n  )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'rp' || next.tagName === 'rt'))\n  )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction closing_option(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'option' || next.tagName === 'optgroup'))\n  )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return Boolean(\n    next &&\n      next.type === 'element' &&\n      (next.tagName === 'tbody' || next.tagName === 'tfoot')\n  )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n  )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n  return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction closing_tr(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'td' || next.tagName === 'th'))\n  )\n}\n\n;// ./node_modules/hast-util-to-html/lib/omission/opening.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n */\n\n\n\n\n\n\nconst opening = omission({\n  body: opening_body,\n  colgroup,\n  head,\n  html: opening_html,\n  tbody: opening_tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction opening_html(node) {\n  const head = siblingAfter(node, -1)\n  return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction head(node) {\n  const children = node.children\n  /** @type {Array<string>} */\n  const seen = []\n  let index = -1\n\n  while (++index < children.length) {\n    const child = children[index]\n    if (\n      child.type === 'element' &&\n      (child.tagName === 'title' || child.tagName === 'base')\n    ) {\n      if (seen.includes(child.tagName)) return false\n      seen.push(child.tagName)\n    }\n  }\n\n  return children.length > 0\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction opening_body(node) {\n  const head = siblingAfter(node, -1, true)\n\n  return (\n    !head ||\n    (head.type !== 'comment' &&\n      !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n      !(\n        head.type === 'element' &&\n        (head.tagName === 'meta' ||\n          head.tagName === 'link' ||\n          head.tagName === 'script' ||\n          head.tagName === 'style' ||\n          head.tagName === 'template')\n      ))\n  )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it’s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n  const previous = siblingBefore(parent, index)\n  const head = siblingAfter(node, -1, true)\n\n  // Previous colgroup was already omitted.\n  if (\n    parent &&\n    previous &&\n    previous.type === 'element' &&\n    previous.tagName === 'colgroup' &&\n    closing(previous, parent.children.indexOf(previous), parent)\n  ) {\n    return false\n  }\n\n  return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction opening_tbody(node, index, parent) {\n  const previous = siblingBefore(parent, index)\n  const head = siblingAfter(node, -1)\n\n  // Previous table section was already omitted.\n  if (\n    parent &&\n    previous &&\n    previous.type === 'element' &&\n    (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n    closing(previous, parent.children.indexOf(previous), parent)\n  ) {\n    return false\n  }\n\n  return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n\n;// ./node_modules/hast-util-to-html/lib/handle/element.js\n/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Properties} Properties\n *\n * @typedef {import('../index.js').State} State\n */\n\n\n\n\n\n\n\n\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n  // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n  name: [\n    ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n    ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n  unquoted: [\n    ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n    ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n  single: [\n    [\"&'\".split(''), '\"&\\'`'.split('')],\n    [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n  double: [\n    ['\"&'.split(''), '\"&\\'`'.split('')],\n    ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n  ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nfunction handle_element_element(node, index, parent, state) {\n  const schema = state.schema\n  const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n  let selfClosing =\n    schema.space === 'svg'\n      ? state.settings.closeEmptyElements\n      : state.settings.voids.includes(node.tagName.toLowerCase())\n  /** @type {Array<string>} */\n  const parts = []\n  /** @type {string} */\n  let last\n\n  if (schema.space === 'html' && node.tagName === 'svg') {\n    state.schema = property_information_svg\n  }\n\n  const attributes = element_serializeAttributes(state, node.properties)\n\n  const content = state.all(\n    schema.space === 'html' && node.tagName === 'template' ? node.content : node\n  )\n\n  state.schema = schema\n\n  // If the node is categorised as void, but it has children, remove the\n  // categorisation.\n  // This enables for example `menuitem`s, which are void in W3C HTML but not\n  // void in WHATWG HTML, to be stringified properly.\n  // Note: `menuitem` has since been removed from the HTML spec, and so is no\n  // longer void.\n  if (content) selfClosing = false\n\n  if (attributes || !omit || !opening(node, index, parent)) {\n    parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n    if (\n      selfClosing &&\n      (schema.space === 'svg' || state.settings.closeSelfClosing)\n    ) {\n      last = attributes.charAt(attributes.length - 1)\n      if (\n        !state.settings.tightSelfClosing ||\n        last === '/' ||\n        (last && last !== '\"' && last !== \"'\")\n      ) {\n        parts.push(' ')\n      }\n\n      parts.push('/')\n    }\n\n    parts.push('>')\n  }\n\n  parts.push(content)\n\n  if (!selfClosing && (!omit || !closing(node, index, parent))) {\n    parts.push('</' + node.tagName + '>')\n  }\n\n  return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction element_serializeAttributes(state, properties) {\n  /** @type {Array<string>} */\n  const values = []\n  let index = -1\n  /** @type {string} */\n  let key\n\n  if (properties) {\n    for (key in properties) {\n      if (properties[key] !== null && properties[key] !== undefined) {\n        const value = serializeAttribute(state, key, properties[key])\n        if (value) values.push(value)\n      }\n    }\n  }\n\n  while (++index < values.length) {\n    const last = state.settings.tightAttributes\n      ? values[index].charAt(values[index].length - 1)\n      : undefined\n\n    // In tight mode, don’t add a space after quoted attributes.\n    if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n      values[index] += ' '\n    }\n  }\n\n  return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n  const info = find(state.schema, key)\n  const x =\n    state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n  const y = state.settings.allowDangerousCharacters ? 0 : 1\n  let quote = state.quote\n  /** @type {string | undefined} */\n  let result\n\n  if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n    value = true\n  } else if (\n    info.boolean ||\n    (info.overloadedBoolean && typeof value !== 'string')\n  ) {\n    value = Boolean(value)\n  }\n\n  if (\n    value === null ||\n    value === undefined ||\n    value === false ||\n    (typeof value === 'number' && Number.isNaN(value))\n  ) {\n    return ''\n  }\n\n  const name = stringifyEntities(\n    info.attribute,\n    Object.assign({}, state.settings.characterReferences, {\n      // Always encode without parse errors in non-HTML.\n      subset: constants.name[x][y]\n    })\n  )\n\n  // No value.\n  // There is currently only one boolean property in SVG: `[download]` on\n  // `<a>`.\n  // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n  // so I can’t test if dropping the value works.\n  // But I assume that it should:\n  //\n  // ```html\n  // <!doctype html>\n  // <svg viewBox=\"0 0 100 100\">\n  //   <a href=https://example.com download>\n  //     <circle cx=50 cy=40 r=35 />\n  //   </a>\n  // </svg>\n  // ```\n  //\n  // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n  if (value === true) return name\n\n  // `spaces` doesn’t accept a second argument, but it’s given here just to\n  // keep the code cleaner.\n  value = Array.isArray(value)\n    ? (info.commaSeparated ? comma_separated_tokens_stringify : space_separated_tokens_stringify)(value, {\n        padLeft: !state.settings.tightCommaSeparatedLists\n      })\n    : String(value)\n\n  if (state.settings.collapseEmptyAttributes && !value) return name\n\n  // Check unquoted value.\n  if (state.settings.preferUnquoted) {\n    result = stringifyEntities(\n      value,\n      Object.assign({}, state.settings.characterReferences, {\n        attribute: true,\n        subset: constants.unquoted[x][y]\n      })\n    )\n  }\n\n  // If we don’t want unquoted, or if `value` contains character references when\n  // unquoted…\n  if (result !== value) {\n    // If the alternative is less common than `quote`, switch.\n    if (\n      state.settings.quoteSmart &&\n      ccount(value, quote) > ccount(value, state.alternative)\n    ) {\n      quote = state.alternative\n    }\n\n    result =\n      quote +\n      stringifyEntities(\n        value,\n        Object.assign({}, state.settings.characterReferences, {\n          // Always encode without parse errors in non-HTML.\n          subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n          attribute: true\n        })\n      ) +\n      quote\n  }\n\n  // Don’t add a `=` for unquoted empties.\n  return name + (result ? '=' + result : result)\n}\n\n;// ./node_modules/hast-util-to-html/lib/handle/text.js\n/**\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Text} Text\n *\n * @typedef {import('mdast-util-to-hast').Raw} Raw\n *\n * @typedef {import('../index.js').State} State\n */\n\n\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n *   Node to handle.\n * @param {number | undefined} _\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nfunction lib_handle_text_text(node, _, parent, state) {\n  // Check if content of `node` should be escaped.\n  return parent &&\n    parent.type === 'element' &&\n    (parent.tagName === 'script' || parent.tagName === 'style')\n    ? node.value\n    : stringifyEntities(\n        node.value,\n        Object.assign({}, state.settings.characterReferences, {\n          subset: textEntitySubset\n        })\n      )\n}\n\n;// ./node_modules/hast-util-to-html/lib/handle/raw.js\n/**\n * @typedef {import('hast').Parents} Parents\n *\n * @typedef {import('mdast-util-to-hast').Raw} Raw\n *\n * @typedef {import('../index.js').State} State\n */\n\n\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nfunction raw_raw(node, index, parent, state) {\n  return state.settings.allowDangerousHtml\n    ? node.value\n    : lib_handle_text_text(node, index, parent, state)\n}\n\n;// ./node_modules/hast-util-to-html/lib/handle/root.js\n/**\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').Root} Root\n *\n * @typedef {import('../index.js').State} State\n */\n\n// Make VS code see references to the above types.\n''\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n *   Node to handle.\n * @param {number | undefined} _1\n *   Index of `node` in `parent.\n * @param {Parents | undefined} _2\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nfunction handle_root_root(node, _1, _2, state) {\n  return state.all(node)\n}\n\n;// ./node_modules/hast-util-to-html/lib/handle/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n *\n * @typedef {import('../index.js').State} State\n */\n\n\n\n\n\n\n\n\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nconst handle_handle = zwitch('type', {\n  invalid: handle_invalid,\n  unknown: handle_unknown,\n  handlers: {comment: handle_comment_comment, doctype: doctype_doctype, element: handle_element_element, raw: raw_raw, root: handle_root_root, text: lib_handle_text_text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n *   Unknown value.\n * @returns {never}\n *   Never.\n */\nfunction handle_invalid(node) {\n  throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n *  Unknown node.\n * @returns {never}\n *   Never.\n */\nfunction handle_unknown(node_) {\n  // `type` is guaranteed by runtime JS.\n  const node = /** @type {Nodes} */ (node_)\n  throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n\n;// ./node_modules/hast-util-to-html/lib/index.js\n/**\n * @typedef {import('hast').Nodes} Nodes\n * @typedef {import('hast').Parents} Parents\n * @typedef {import('hast').RootContent} RootContent\n *\n * @typedef {import('property-information').Schema} Schema\n *\n * @typedef {import('stringify-entities').Options} StringifyEntitiesOptions\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n *   Do not encode some characters which cause XSS vulnerabilities in older\n *   browsers (default: `false`).\n *\n *   > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n *   When `false`, `Raw` nodes are encoded.\n *\n *   > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n *   Do not encode characters which cause parse errors (even though they work),\n *   to save bytes (default: `false`).\n *\n *   Not used in the SVG space.\n *\n *   > 👉 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n *   Use “bogus comments” instead of comments to save byes: `<?charlie>`\n *   instead of `<!--charlie-->` (default: `false`).\n *\n *   > 👉 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn’t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n *   Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n *   Close SVG elements without any content with slash (`/`) on the opening tag\n *   instead of an end tag: `<circle />` instead of `<circle></circle>`\n *   (default: `false`).\n *\n *   See `tightSelfClosing` to control whether a space is used before the\n *   slash.\n *\n *   Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n *   Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n *   `<img>` (default: `false`).\n *\n *   See `tightSelfClosing` to control whether a space is used before the\n *   slash.\n *\n *   Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n *   Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n *   `false`).\n *\n *   Not used in the SVG space.\n *\n *   > 👉 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n *   Omit optional opening and closing tags (default: `false`).\n *\n *   For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n *   tags can be omitted.\n *   The first because it’s followed by another `li`, the last because it’s\n *   followed by nothing.\n *\n *   Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n *   Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n *   Not used in the SVG space.\n * @property {Quote | null | undefined} [quote='\"']\n *   Preferred quote to use (default: `'\"'`).\n * @property {boolean | null | undefined} [quoteSmart=false]\n *   Use the other quote if that results in less bytes (default: `false`).\n * @property {Space | null | undefined} [space='html']\n *   When an `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it (default: `'html'`).\n *\n *   > 👉 **Note**: hast is not XML.\n *   > It supports SVG as embedded in HTML.\n *   > It does not support the features available in XML.\n *   > Passing SVG might break but fragments of modern SVG should be fine.\n *   > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n *   Join attributes together, without whitespace, if possible: get\n *   `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n *   bytes (default: `false`).\n *\n *   Not used in the SVG space.\n *\n *   > 👉 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n *   Join known comma-separated attribute values with just a comma (`,`),\n *   instead of padding them on the right as well (`,␠`, where `␠` represents a\n *   space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n *   Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n *   `<!doctype html>` to save bytes (default: `false`).\n *\n *   > 👉 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n *   Do not use an extra space when closing self-closing elements: `<img/>`\n *   instead of `<img />` (default: `false`).\n *\n *   > 👉 **Note**: only used if `closeSelfClosing: true` or\n *   > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n *   Use a `<!DOCTYPE…` instead of `<!doctype…` (default: `false`).\n *\n *   Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n *   Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n *   Not used in the SVG space.\n *\n *   > 👉 **Note**: It’s highly unlikely that you want to pass this, because\n *   > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n *   HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n *   Namespace.\n *\n * @typedef State\n *   Info passed around about the current state.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n *   Serialize one node.\n * @property {(node: Parents | undefined) => string} all\n *   Serialize the children of a parent node.\n * @property {Settings} settings\n *   User configuration.\n * @property {Schema} schema\n *   Current schema.\n * @property {Quote} quote\n *   Preferred quote.\n * @property {Quote} alternative\n *   Alternative quote.\n */\n\n\n\n\n\n/** @type {Options} */\nconst hast_util_to_html_lib_emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst lib_emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n *   Tree to serialize.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized HTML.\n */\nfunction toHtml(tree, options) {\n  const options_ = options || hast_util_to_html_lib_emptyOptions\n  const quote = options_.quote || '\"'\n  const alternative = quote === '\"' ? \"'\" : '\"'\n\n  if (quote !== '\"' && quote !== \"'\") {\n    throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n  }\n\n  /** @type {State} */\n  const state = {\n    one: hast_util_to_html_lib_one,\n    all: hast_util_to_html_lib_all,\n    settings: {\n      omitOptionalTags: options_.omitOptionalTags || false,\n      allowParseErrors: options_.allowParseErrors || false,\n      allowDangerousCharacters: options_.allowDangerousCharacters || false,\n      quoteSmart: options_.quoteSmart || false,\n      preferUnquoted: options_.preferUnquoted || false,\n      tightAttributes: options_.tightAttributes || false,\n      upperDoctype: options_.upperDoctype || false,\n      tightDoctype: options_.tightDoctype || false,\n      bogusComments: options_.bogusComments || false,\n      tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n      tightSelfClosing: options_.tightSelfClosing || false,\n      collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n      allowDangerousHtml: options_.allowDangerousHtml || false,\n      voids: options_.voids || htmlVoidElements,\n      characterReferences:\n        options_.characterReferences || emptyCharacterReferences,\n      closeSelfClosing: options_.closeSelfClosing || false,\n      closeEmptyElements: options_.closeEmptyElements || false\n    },\n    schema: options_.space === 'svg' ? property_information_svg : property_information_html,\n    quote,\n    alternative\n  }\n\n  return state.one(\n    Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n    undefined,\n    undefined\n  )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Nodes} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {string}\n *   Serialized node.\n */\nfunction hast_util_to_html_lib_one(node, index, parent) {\n  return handle_handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Parents | undefined} parent\n *   Parent whose children to serialize.\n * @returns {string}\n */\nfunction hast_util_to_html_lib_all(parent) {\n  /** @type {Array<string>} */\n  const results = []\n  const children = (parent && parent.children) || lib_emptyChildren\n  let index = -1\n\n  while (++index < children.length) {\n    results[index] = this.one(children[index], index, parent)\n  }\n\n  return results.join('')\n}\n\n;// ./node_modules/rehype-stringify/lib/index.js\n/**\n * @import {Root} from 'hast'\n * @import {Options} from 'hast-util-to-html'\n * @import {Compiler, Processor} from 'unified'\n */\n\n\n\n/**\n * Plugin to add support for serializing as HTML.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction rehypeStringify(options) {\n  /** @type {Processor<undefined, undefined, undefined, Root, string>} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n  const settings = {...self.data('settings'), ...options}\n\n  self.compiler = compiler\n\n  /**\n   * @type {Compiler<Root, string>}\n   */\n  function compiler(tree) {\n    return toHtml(tree, settings)\n  }\n}\n\n;// ./node_modules/mdast-util-newline-to-break/lib/index.js\n/**\n * @typedef {import('mdast').Nodes} Nodes\n * @typedef {import('mdast-util-find-and-replace').ReplaceFunction} ReplaceFunction\n */\n\n\n\n/**\n * Turn normal line endings into hard breaks.\n *\n * @param {Nodes} tree\n *   Tree to change.\n * @returns {undefined}\n *   Nothing.\n */\nfunction newlineToBreak(tree) {\n  findAndReplace(tree, [/\\r?\\n|\\r/g, lib_replace])\n}\n\n/**\n * Replace line endings.\n *\n * @type {ReplaceFunction}\n */\nfunction lib_replace() {\n  return {type: 'break'}\n}\n\n;// ./node_modules/remark-breaks/lib/index.js\n/**\n * @typedef {import('mdast').Root} Root\n */\n\n\n\n/**\n * Support hard breaks without needing spaces or escapes (turns enters into\n * `<br>`s).\n *\n * @returns\n *   Transform.\n */\nfunction remarkBreaks() {\n  /**\n   * Transform.\n   *\n   * @param {Root} tree\n   *   Tree.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree) {\n    newlineToBreak(tree)\n  }\n}\n\n;// ./lib/utils/mdxish/mdxish-get-component-name.ts\n/** Convert a string to PascalCase */\nfunction toPascalCase(str) {\n    return str\n        .split(/[-_]/)\n        .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n        .join('');\n}\n/**\n * Find a component in the components hash using case-insensitive matching.\n * Returns the actual key from the map, or null if not found.\n *\n * Matching priority:\n * 1. Exact match\n * 2. PascalCase version\n * 3. Case-insensitive match\n */\nfunction getComponentName(componentName, components) {\n    // 1. Try exact match\n    if (componentName in components)\n        return componentName;\n    // 2. Try PascalCase version\n    const pascalCase = toPascalCase(componentName);\n    if (pascalCase in components)\n        return pascalCase;\n    // 3. Try case-insensitive match\n    const lowerName = componentName.toLowerCase();\n    const lowerPascal = pascalCase.toLowerCase();\n    return (Object.keys(components).find(key => {\n        const lowerKey = key.toLowerCase();\n        return lowerKey === lowerName || lowerKey === lowerPascal;\n    }) ?? null);\n}\n\n;// ./processor/plugin/mdxish-components.ts\n\n\n\nconst INLINE_COMPONENT_TAGS = new Set(['anchor', 'glossary']);\nfunction isElementContentNode(node) {\n    return node.type === 'element' || node.type === 'text' || node.type === 'comment';\n}\n/**\n * Components are assumed to be block-level, so whitespace between them can be removed\n * We want to remove them because it can be treated as actual children of the component\n * when it doesn't need to.\n *\n * It can be a problem because it can be passed as args to the components, like the ones\n * defined in /components, which can break the type assumptions of the components and cause\n * type errors, accessing properties that don't exist.\n */\nfunction areAllChildrenComponents(children) {\n    return children.every(child => {\n        // Whitespace-only text nodes don't affect the check\n        if (child.type === 'text' && !child.value.trim())\n            return true;\n        // Text with actual content means we have mixed content\n        if (child.type === 'text')\n            return false;\n        // Comments don't affect the check\n        if (child.type === 'comment')\n            return true;\n        // Standard HTML tags are not considered components\n        if (child.type === 'element' && 'tagName' in child) {\n            return !STANDARD_HTML_TAGS.has(child.tagName.toLowerCase());\n        }\n        return false;\n    });\n}\n/** Check if nodes represent a single paragraph with only text (no markdown formatting) */\nfunction isSingleParagraphTextNode(nodes) {\n    return (nodes.length === 1 &&\n        nodes[0].type === 'element' &&\n        nodes[0].tagName === 'p' &&\n        nodes[0].children?.every(child => child.type === 'text'));\n}\n/**\n * Convert lowercase compound words to camelCase using known word boundaries.\n * e.g., \"iconcolor\" → \"iconColor\", \"background-color\" → \"backgroundColor\"\n */\nfunction smartCamelCase(str) {\n    if (str.includes('-')) {\n        return str.replace(/-([a-z])/g, (_, char) => char.toUpperCase());\n    }\n    const allBoundaries = [...REACT_HTML_PROP_BOUNDARIES, ...CSS_STYLE_PROP_BOUNDARIES, ...CUSTOM_PROP_BOUNDARIES];\n    // Return as-is if already a boundary word to avoid incorrect splitting\n    if (allBoundaries.includes(str.toLowerCase())) {\n        return str;\n    }\n    // Sort by length (longest first) to prevent shorter matches (e.g., \"column\" in \"columns\")\n    const sortedBoundaries = [...allBoundaries].sort((a, b) => b.length - a.length);\n    // Use case-sensitive matching ('g' not 'gi') so that once a letter is\n    // capitalized by a longer boundary, shorter boundaries won't re-match it.\n    // This prevents issues like 'iconcolor' becoming 'iconColOr' instead of 'iconColor'.\n    return sortedBoundaries.reduce((res, word) => {\n        const regex = new RegExp(`(${word})([a-z])`, 'g');\n        return res.replace(regex, (_, prefix, nextChar) => prefix.toLowerCase() + nextChar.toUpperCase());\n    }, str);\n}\n/** Check if a tag name represents actual HTML (not a custom component) */\nfunction isActualHtmlTag(tagName, originalExcerpt) {\n    if (STANDARD_HTML_TAGS.has(tagName.toLowerCase()))\n        return true;\n    if (originalExcerpt.startsWith(`<${tagName}>`))\n        return true;\n    if (tagName === 'code' && originalExcerpt.startsWith('`'))\n        return true;\n    return false;\n}\n/** Parse and replace text children with processed markdown */\nfunction parseTextChildren(node, processMarkdown, components) {\n    if (!node.children?.length)\n        return;\n    // First pass: Recursively process text children as they may contain stringified markdown / mdx content\n    node.children = node.children.flatMap(child => {\n        if (child.type !== 'text' || !child.value.trim())\n            return [child];\n        const hast = processMarkdown(child.value.trim());\n        const children = (hast.children ?? []).filter(isElementContentNode);\n        // For inline components, preserve plain text instead of wrapping in <p>\n        if (INLINE_COMPONENT_TAGS.has(node.tagName.toLowerCase()) && isSingleParagraphTextNode(children)) {\n            return [child];\n        }\n        return children;\n    });\n    // Unwrap <p> elements whose meaningful children are ALL components.\n    // The markdown parser wraps inline content in <p> tags, but when that content\n    // is actually component children (e.g., <Tab> inside <Tabs>), the wrapper\n    // should be removed so components appear as direct children.\n    // Only unwrap when every non-whitespace, non-br child is a known component\n    // to avoid breaking paragraphs with mixed content (text + inline HTML like <code>).\n    node.children = node.children.flatMap(child => {\n        if (child.type !== 'element' || child.tagName !== 'p')\n            return [child];\n        const meaningfulChildren = child.children.filter(gc => {\n            if (gc.type === 'text' && !gc.value.trim())\n                return false;\n            if (gc.type === 'element' && gc.tagName === 'br')\n                return false;\n            return true;\n        });\n        const allComponents = meaningfulChildren.length > 0 && meaningfulChildren.every(gc => gc.type === 'element' && getComponentName(gc.tagName, components));\n        if (!allComponents)\n            return [child];\n        return meaningfulChildren;\n    });\n    // Post-processing: remove whitespace-only text nodes if all siblings are components\n    // This prevents whitespace between component children from being counted as extra children\n    if (areAllChildrenComponents(node.children)) {\n        node.children = node.children.filter(child => {\n            if (child.type === 'text' && !child.value.trim())\n                return false;\n            return true;\n        });\n    }\n}\n/** Convert node properties from kebab-case/lowercase to camelCase */\nfunction normalizeProperties(node) {\n    if (!node.properties)\n        return;\n    const normalized = {};\n    Object.entries(node.properties).forEach(([key, value]) => {\n        normalized[smartCamelCase(key)] = value;\n    });\n    node.properties = normalized;\n}\n/**\n * Identifies custom MDX components and recursively parses markdown children.\n * Replaces tagName with PascalCase component name for React component resolution.\n *\n * @see {@link https://github.com/readmeio/rmdx/blob/main/docs/mdxish-flow.md}\n * @param {Options} options - Configuration options\n * @param {CustomComponents} options.components - Available custom components\n * @param {Function} options.processMarkdown - Function to process markdown content\n * @returns {Transformer<Root, Root>} The transformer function\n */\nconst rehypeMdxishComponents = ({ components, processMarkdown }) => {\n    return (tree, vfile) => {\n        const nodesToRemove = [];\n        visit(tree, 'element', (node, index, parent) => {\n            if (index === undefined || !parent)\n                return;\n            // Skip runtime components and standard HTML tags\n            if (RUNTIME_COMPONENT_TAGS.has(node.tagName))\n                return;\n            if (STANDARD_HTML_TAGS.has(node.tagName.toLowerCase()))\n                return;\n            // Check original source for PascalCase tags (parser normalizes to lowercase)\n            if (node.position?.start && node.position?.end) {\n                const original = vfile.toString().substring(node.position.start.offset, node.position.end.offset);\n                if (isActualHtmlTag(node.tagName, original))\n                    return;\n            }\n            const componentName = getComponentName(node.tagName, components);\n            if (!componentName) {\n                nodesToRemove.push({ index, parent });\n                return;\n            }\n            node.tagName = componentName;\n            normalizeProperties(node);\n            parseTextChildren(node, processMarkdown, components);\n        });\n        // Remove unknown components in reverse order to preserve indices\n        for (let i = nodesToRemove.length - 1; i >= 0; i -= 1) {\n            const { parent, index } = nodesToRemove[i];\n            parent.children.splice(index, 1);\n        }\n    };\n};\n\n;// ./processor/plugin/mdxish-handlers.ts\n\n// Convert MDX expressions to text nodes (evaluation happens earlier in pipeline)\nconst mdxExpressionHandler = (_state, node) => ({\n    type: 'text',\n    value: node.value || '',\n});\n// Since we serialize component / html tag attributes\nfunction decodeHtmlEntities(value) {\n    return value\n        .replace(/&quot;/g, '\"')\n        .replace(/&lt;/g, '<')\n        .replace(/&gt;/g, '>')\n        .replace(/&#10;/g, '\\n')\n        .replace(/&amp;/g, '&');\n}\n// Convert MDX JSX elements to HAST elements, preserving attributes and children\nconst mdxJsxElementHandler = (state, node) => {\n    const { attributes = [], name } = node;\n    const properties = {};\n    attributes.forEach(attribute => {\n        if (attribute.type !== 'mdxJsxAttribute' || !attribute.name)\n            return;\n        if (attribute.value === null) {\n            properties[attribute.name] = true;\n        }\n        else if (typeof attribute.value === 'string') {\n            properties[attribute.name] = decodeHtmlEntities(attribute.value);\n        }\n        else {\n            properties[attribute.name] = attribute.value.value;\n        }\n    });\n    return {\n        type: 'element',\n        tagName: name || '',\n        properties,\n        children: state.all(node),\n    };\n};\n// Convert html-block MDAST nodes to HAST elements, preserving hProperties\nconst htmlBlockHandler = (_state, node) => {\n    const htmlBlockNode = node;\n    const hProperties = htmlBlockNode.data?.hProperties || {};\n    return {\n        type: 'element',\n        tagName: 'html-block',\n        properties: hProperties,\n        children: [],\n    };\n};\n// Convert embed magic blocks to Embed components\nconst embedHandler = (state, node) => {\n    // Assert to get the minimum properties we need\n    const { data } = node;\n    // Magic block embeds (hName === 'embed-block') render as Embed component\n    // which doesn't use children - it renders based on props only\n    const isMagicBlockEmbed = data?.hName === NodeTypes.embedBlock;\n    return {\n        type: 'element',\n        // To differentiate between regular embeds and magic block embeds,\n        // magic block embeds have a certain hName\n        tagName: isMagicBlockEmbed ? 'Embed' : 'embed',\n        properties: data?.hProperties,\n        // Don't include children for magic block embeds - Embed component renders based on props\n        children: isMagicBlockEmbed ? [] : state.all(node),\n    };\n};\nconst mdxComponentHandlers = {\n    embed: embedHandler,\n    mdxFlowExpression: mdxExpressionHandler,\n    mdxJsxFlowElement: mdxJsxElementHandler,\n    mdxJsxTextElement: mdxJsxElementHandler,\n    mdxTextExpression: mdxExpressionHandler,\n    mdxjsEsm: () => undefined,\n    [NodeTypes.htmlBlock]: htmlBlockHandler,\n};\n\n;// ./lib/utils/mdxish/protect-code-blocks.ts\n/**\n * Replaces code blocks and inline code with placeholders to protect them from preprocessing.\n *\n * @param content - The markdown content to process\n * @returns Object containing protected content and arrays of original code blocks\n * @example\n * ```typescript\n * const input = 'Text with `inline code` and ```fenced block```';\n * protectCodeBlocks(input)\n * // Returns: {\n * //   protectedCode: {\n * //     codeBlocks: ['```fenced block```'],\n * //     inlineCode: ['`inline code`']\n * //   },\n * //   protectedContent: 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___'\n * // }\n * ```\n */\nfunction protectCodeBlocks(content) {\n    const codeBlocks = [];\n    const inlineCode = [];\n    let protectedContent = '';\n    let remaining = content;\n    let codeBlockStart = remaining.indexOf('```');\n    while (codeBlockStart !== -1) {\n        protectedContent += remaining.slice(0, codeBlockStart);\n        remaining = remaining.slice(codeBlockStart);\n        const codeBlockEnd = remaining.indexOf('```', 3);\n        if (codeBlockEnd === -1) {\n            break;\n        }\n        const match = remaining.slice(0, codeBlockEnd + 3);\n        const index = codeBlocks.length;\n        codeBlocks.push(match);\n        protectedContent += `___CODE_BLOCK_${index}___`;\n        remaining = remaining.slice(codeBlockEnd + 3);\n        codeBlockStart = remaining.indexOf('```');\n    }\n    protectedContent += remaining;\n    protectedContent = protectedContent.replace(/`([^`\\n]+)`/g, match => {\n        const index = inlineCode.length;\n        inlineCode.push(match);\n        return `___INLINE_CODE_${index}___`;\n    });\n    return { protectedCode: { codeBlocks, inlineCode }, protectedContent };\n}\n/**\n * Restores inline code by replacing placeholders with original content.\n *\n * @param content - Content with inline code placeholders\n * @param protectedCode - The protected code arrays\n * @returns Content with inline code restored\n */\nfunction restoreInlineCode(content, protectedCode) {\n    return content.replace(/___INLINE_CODE_(\\d+)___/g, (_m, idx) => {\n        return protectedCode.inlineCode[parseInt(idx, 10)];\n    });\n}\n/**\n * Restores fenced code blocks by replacing placeholders with original content.\n *\n * @param content - Content with code block placeholders\n * @param protectedCode - The protected code arrays\n * @returns Content with code blocks restored\n */\nfunction restoreFencedCodeBlocks(content, protectedCode) {\n    return content.replace(/___CODE_BLOCK_(\\d+)___/g, (_m, idx) => {\n        return protectedCode.codeBlocks[parseInt(idx, 10)];\n    });\n}\n/**\n * Restores all code blocks and inline code by replacing placeholders with original content.\n *\n * @param content - Content with code placeholders\n * @param protectedCode - The protected code arrays\n * @returns Content with all code blocks and inline code restored\n * @example\n * ```typescript\n * const content = 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___';\n * const protectedCode = {\n *   codeBlocks: ['```js\\ncode\\n```'],\n *   inlineCode: ['`inline`']\n * };\n * restoreCodeBlocks(content, protectedCode)\n * // Returns: 'Text with `inline` and ```js\\ncode\\n```'\n * ```\n */\nfunction restoreCodeBlocks(content, protectedCode) {\n    let restored = restoreFencedCodeBlocks(content, protectedCode);\n    restored = restoreInlineCode(restored, protectedCode);\n    return restored;\n}\n\n;// ./processor/transform/mdxish/preprocess-jsx-expressions.ts\n\n// Base64 encode (Node.js + browser compatible)\nfunction base64Encode(str) {\n    if (typeof Buffer !== 'undefined') {\n        return Buffer.from(str, 'utf-8').toString('base64');\n    }\n    return btoa(unescape(encodeURIComponent(str)));\n}\n// Base64 decode (Node.js + browser compatible)\nfunction base64Decode(str) {\n    if (typeof Buffer !== 'undefined') {\n        return Buffer.from(str, 'base64').toString('utf-8');\n    }\n    return decodeURIComponent(escape(atob(str)));\n}\nfunction escapeHtmlAttribute(value) {\n    return value\n        .replace(/&/g, '&amp;')\n        .replace(/\"/g, '&quot;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\\n/g, '&#10;');\n}\n// Marker prefix for JSON-serialized complex values (arrays/objects)\n// Using a prefix that won't conflict with regular string values\nconst JSON_VALUE_MARKER = '__MDXISH_JSON__';\n// Markers for protected HTMLBlock content (HTML comments avoid markdown parsing issues)\nconst HTML_BLOCK_CONTENT_START = '<!--RDMX_HTMLBLOCK:';\nconst HTML_BLOCK_CONTENT_END = ':RDMX_HTMLBLOCK-->';\n/**\n * Evaluates a JavaScript expression using context variables.\n *\n * @param expression\n * @param context\n * @returns The evaluated result\n * @example\n * ```typescript\n * const context = { baseUrl: 'https://example.com', path: '/api' };\n * evaluateExpression('baseUrl + path', context)\n * // Returns: 'https://example.com/api'\n * ```\n */\nfunction evaluateExpression(expression, context) {\n    const contextKeys = Object.keys(context);\n    const contextValues = Object.values(context);\n    // eslint-disable-next-line no-new-func\n    const func = new Function(...contextKeys, `return ${expression}`);\n    return func(...contextValues);\n}\n/**\n * Base64 encodes HTMLBlock template literal content to prevent markdown parser from consuming <script>/<style> tags.\n *\n * @param content\n * @returns Content with HTMLBlock template literals base64 encoded in HTML comments\n * @example\n * ```typescript\n * const input = '<HTMLBlock>{`<script>alert(\"xss\")</script>`}</HTMLBlock>';\n * protectHTMLBlockContent(input)\n * // Returns: '<HTMLBlock><!--RDMX_HTMLBLOCK:PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=:RDMX_HTMLBLOCK--></HTMLBlock>'\n * ```\n */\nfunction protectHTMLBlockContent(content) {\n    return content.replace(/(<HTMLBlock[^>]*>)\\{\\s*`((?:[^`\\\\]|\\\\.)*)`\\s*\\}(<\\/HTMLBlock>)/g, (_match, openTag, templateContent, closeTag) => {\n        const encoded = base64Encode(templateContent);\n        return `${openTag}${HTML_BLOCK_CONTENT_START}${encoded}${HTML_BLOCK_CONTENT_END}${closeTag}`;\n    });\n}\n/**\n * Removes JSX-style comments (e.g., { /* comment *\\/ }) from content.\n *\n * @param content\n * @returns Content with JSX comments removed\n * @example\n * ```typescript\n * removeJSXComments('Text { /* comment *\\/ } more text')\n * // Returns: 'Text  more text'\n * ```\n */\nfunction removeJSXComments(content) {\n    return content.replace(/\\{\\s*\\/\\*[^*]*(?:\\*(?!\\/)[^*]*)*\\*\\/\\s*\\}/g, '');\n}\n/**\n * Extracts content between balanced braces, handling nested braces.\n *\n * @param content\n * @param start\n * @returns Object with extracted content and end position, or null if braces are unbalanced\n * @example\n * ```typescript\n * const input = 'foo{bar{baz}qux}end';\n * extractBalancedBraces(input, 3) // start at position 3 (after '{')\n * // Returns: { content: 'bar{baz}qux', end: 16 }\n * ```\n */\nfunction extractBalancedBraces(content, start) {\n    let depth = 1;\n    let pos = start;\n    while (pos < content.length && depth > 0) {\n        const char = content[pos];\n        if (char === '{')\n            depth += 1;\n        else if (char === '}')\n            depth -= 1;\n        pos += 1;\n    }\n    if (depth !== 0)\n        return null;\n    return { content: content.slice(start, pos - 1), end: pos };\n}\n/**\n * Escapes unbalanced braces in content to prevent MDX expression parsing errors.\n * Handles: already-escaped braces, string literals inside expressions, nested balanced braces.\n */\nfunction escapeUnbalancedBraces(content) {\n    const opens = [];\n    const unbalanced = new Set();\n    let strDelim = null;\n    let strEscaped = false;\n    // Convert to array of Unicode code points to handle emojis and multi-byte characters correctly\n    const chars = Array.from(content);\n    for (let i = 0; i < chars.length; i += 1) {\n        const ch = chars[i];\n        // Track strings inside expressions to ignore braces within them\n        if (opens.length > 0) {\n            if (strDelim) {\n                if (strEscaped)\n                    strEscaped = false;\n                else if (ch === '\\\\')\n                    strEscaped = true;\n                else if (ch === strDelim)\n                    strDelim = null;\n                // eslint-disable-next-line no-continue\n                continue;\n            }\n            if (ch === '\"' || ch === \"'\" || ch === '`') {\n                strDelim = ch;\n                // eslint-disable-next-line no-continue\n                continue;\n            }\n        }\n        // Skip already-escaped braces (count preceding backslashes)\n        if (ch === '{' || ch === '}') {\n            let bs = 0;\n            for (let j = i - 1; j >= 0 && chars[j] === '\\\\'; j -= 1)\n                bs += 1;\n            if (bs % 2 === 1) {\n                // eslint-disable-next-line no-continue\n                continue;\n            }\n        }\n        if (ch === '{')\n            opens.push(i);\n        else if (ch === '}') {\n            if (opens.length > 0)\n                opens.pop();\n            else\n                unbalanced.add(i);\n        }\n    }\n    opens.forEach(pos => unbalanced.add(pos));\n    if (unbalanced.size === 0)\n        return content;\n    return chars\n        .map((ch, i) => (unbalanced.has(i) ? `\\\\${ch}` : ch))\n        .join('');\n}\n/**\n * Converts JSX attribute expressions (attribute={expression}) to HTML attributes (attribute=\"value\").\n * Handles style objects (camelCase → kebab-case), className → class, and JSON stringifies objects.\n *\n * @param content\n * @param context\n * @returns Content with attribute expressions evaluated and converted to HTML attributes\n * @example\n * ```typescript\n * const context = { baseUrl: 'https://example.com' };\n * const input = '<a href={baseUrl}>Link</a>';\n * evaluateAttributeExpressions(input, context)\n * // Returns: '<a href=\"https://example.com\">Link</a>'\n * ```\n */\nfunction evaluateAttributeExpressions(content, context, protectedCode) {\n    const attrStartRegex = /(\\w+)=\\{/g;\n    let result = '';\n    let lastEnd = 0;\n    let match = attrStartRegex.exec(content);\n    while (match !== null) {\n        const attributeName = match[1];\n        const braceStart = match.index + match[0].length;\n        const extracted = extractBalancedBraces(content, braceStart);\n        if (extracted) {\n            // The expression might contain template literals in MDX component tag props\n            // E.g. <Component greeting={`Hello World!`} />\n            // that is marked as inline code. So we need to restore the inline codes\n            // in the expression to evaluate it\n            let expression = extracted.content;\n            if (protectedCode) {\n                expression = restoreInlineCode(expression, protectedCode);\n            }\n            const fullMatchEnd = extracted.end;\n            result += content.slice(lastEnd, match.index);\n            try {\n                const evalResult = evaluateExpression(expression, context);\n                if (typeof evalResult === 'object' && evalResult !== null) {\n                    if (attributeName === 'style') {\n                        const cssString = Object.entries(evalResult)\n                            .map(([key, value]) => {\n                            const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();\n                            return `${cssKey}: ${value}`;\n                        })\n                            .join('; ');\n                        result += `style=\"${cssString}\"`;\n                    }\n                    else {\n                        // These are arrays / objects attribute values\n                        // Mark JSON-serialized values with a prefix so they can be parsed back correctly\n                        const jsonValue = escapeHtmlAttribute(JSON_VALUE_MARKER + JSON.stringify(evalResult));\n                        // Use double quotes so that multi-paragraph values are not split into multiple attributes by the processors\n                        result += `${attributeName}=\"${jsonValue}\"`;\n                    }\n                }\n                else if (attributeName === 'className') {\n                    // Escape special characters so that it doesn't break and split the attribute value to nodes\n                    // This will be restored later in the pipeline\n                    result += `class=\"${escapeHtmlAttribute(String(evalResult))}\"`;\n                }\n                else {\n                    result += `${attributeName}=\"${escapeHtmlAttribute(String(evalResult))}\"`;\n                }\n            }\n            catch (_error) {\n                result += content.slice(match.index, fullMatchEnd);\n            }\n            lastEnd = fullMatchEnd;\n            attrStartRegex.lastIndex = fullMatchEnd;\n        }\n        match = attrStartRegex.exec(content);\n    }\n    result += content.slice(lastEnd);\n    return result;\n}\n/**\n * Preprocesses JSX-like expressions in markdown before parsing.\n * Inline expressions are handled separately; attribute expressions are processed here.\n *\n * @param content\n * @param context\n * @returns Preprocessed content ready for markdown parsing\n */\nfunction preprocessJSXExpressions(content, context = {}) {\n    // Step 0: Base64 encode HTMLBlock content\n    let processed = protectHTMLBlockContent(content);\n    // Step 1: Protect code blocks and inline code\n    const { protectedCode, protectedContent } = protectCodeBlocks(processed);\n    // Step 2: Evaluate attribute expressions (JSX attribute syntax: href={baseUrl})\n    // For inline expressions, we use a library to parse the expression & evaluate it later\n    // For attribute expressions, it was difficult to use a library to parse them, so do it manually\n    processed = evaluateAttributeExpressions(protectedContent, context, protectedCode);\n    // Step 3: Escape unbalanced braces to prevent MDX expression parsing errors\n    processed = escapeUnbalancedBraces(processed);\n    // Step 4: Restore protected code blocks\n    processed = restoreCodeBlocks(processed, protectedCode);\n    return processed;\n}\n\n;// ./processor/transform/mdxish/evaluate-expressions.ts\n\n\n/**\n * AST transformer to evaluate MDX expressions using the provided context.\n * Replaces mdxFlowExpression and mdxTextExpression nodes with their evaluated values.\n */\nconst evaluateExpressions = ({ context = {} } = {}) => tree => {\n    visit(tree, ['mdxFlowExpression', 'mdxTextExpression'], (node, index, parent) => {\n        if (!parent || index === null || index === undefined)\n            return;\n        const expressionNode = node;\n        if (!('value' in expressionNode))\n            return;\n        const expression = expressionNode.value.trim();\n        // Skip if expression is empty (shouldn't happen, but defensive)\n        if (!expression)\n            return;\n        try {\n            const result = evaluateExpression(expression, context);\n            // Extract evaluated value text\n            let textValue;\n            if (result === null || result === undefined) {\n                textValue = '';\n            }\n            else if (typeof result === 'object') {\n                textValue = JSON.stringify(result);\n            }\n            else {\n                textValue = String(result).replace(/\\s+/g, ' ').trim();\n            }\n            // Replace expression node with text node since the expression is conceptually a text\n            parent.children.splice(index, 1, {\n                type: 'text',\n                value: textValue,\n                position: expressionNode.position,\n            });\n        }\n        catch (_error) {\n            // If evaluation fails, leave the expression as-is (fallback to text)\n            // we still need to manually escape escaped characters because the expression\n            // parser treats the contents as code instead of text, skipping the backslash escapes\n            const processed = expression.replace(/\\\\([!-/:-@[-`{-~])/g, '$1');\n            parent.children.splice(index, 1, {\n                type: 'text',\n                value: `{${processed}}`,\n                position: expressionNode.position,\n            });\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const evaluate_expressions = (evaluateExpressions);\n\n;// ./processor/transform/mdxish/heading-slugs.ts\n\n\nfunction isHeading(node) {\n    return /^h[1-6]$/.test(node.tagName);\n}\nfunction textContent(node) {\n    if (node.type === 'text')\n        return node.value;\n    // Process variable nodes by using their variable name for the id generation\n    if (node.type === 'element' && node.tagName === 'variable' && node.properties?.name) {\n        if (node.properties.isLegacy) {\n            return node.properties.name;\n        }\n        return `user.${node.properties.name}`;\n    }\n    if ('children' in node)\n        return node.children.map(textContent).join('');\n    return '';\n}\n/**\n * Rehype plugin that constructs ids for headings\n * Id's are used to construct slug anchor links & Table of Contents during rendering\n * Use the text / nodes that make up the heading to generate the id\n */\nconst generateSlugForHeadings = () => (tree) => {\n    const slugger = new BananaSlug();\n    visit(tree, 'element', (node) => {\n        if (isHeading(node) && !node.properties.id) {\n            const text = node.children.map(textContent).join('');\n            node.properties.id = slugger.slug(text);\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const heading_slugs = (generateSlugForHeadings);\n\n;// ./node_modules/rehype-parse/lib/index.js\n/**\n * @import {Root} from 'hast'\n * @import {Options as FromHtmlOptions} from 'hast-util-from-html'\n * @import {Parser, Processor} from 'unified'\n */\n\n/**\n * @typedef {Omit<FromHtmlOptions, 'onerror'> & RehypeParseFields} Options\n *   Configuration.\n *\n * @typedef RehypeParseFields\n *   Extra fields.\n * @property {boolean | null | undefined} [emitParseErrors=false]\n *   Whether to emit parse errors while parsing (default: `false`).\n *\n *   > 👉 **Note**: parse errors are currently being added to HTML.\n *   > Not all errors emitted by parse5 (or us) are specced yet.\n *   > Some documentation may still be missing.\n */\n\n\n\n/**\n * Plugin to add support for parsing from HTML.\n *\n * > 👉 **Note**: this is not an XML parser.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG files might break but fragments of modern SVG should be fine.\n * > Use [`xast-util-from-xml`][xast-util-from-xml] to parse XML.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nfunction rehypeParse(options) {\n  /** @type {Processor<Root>} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n  const {emitParseErrors, ...settings} = {...self.data('settings'), ...options}\n\n  self.parser = parser\n\n  /**\n   * @type {Parser<Root>}\n   */\n  function parser(document, file) {\n    return fromHtml(document, {\n      ...settings,\n      onerror: emitParseErrors\n        ? function (message) {\n            if (file.path) {\n              message.name = file.path + ':' + message.name\n              message.file = file.path\n            }\n\n            file.messages.push(message)\n          }\n        : undefined\n    })\n  }\n}\n\n;// ./processor/transform/mdxish/normalize-malformed-md-syntax.ts\n\n// Marker patterns for multi-node emphasis detection\nconst MARKER_PATTERNS = [\n    { isBold: true, marker: '**' },\n    { isBold: true, marker: '__' },\n    { isBold: false, marker: '*' },\n    { isBold: false, marker: '_' },\n];\n// Patterns to detect for bold (** and __) and italic (* and _) syntax:\n// Bold: ** text**, **text **, word** text**, ** text **\n// Italic: * text*, *text *, word* text*, * text *\n// Same patterns for underscore variants\n// We use separate patterns for each marker type to allow this flexibility.\n// Pattern for ** bold **\n// Groups: 1=wordBefore, 2=marker, 3=contentWithSpaceAfter, 4=trailingSpace1, 5=contentWithSpaceBefore, 6=trailingSpace2, 7=afterChar\n// trailingSpace1 is for \"** text **\" pattern, trailingSpace2 is for \"**text **\" pattern\nconst asteriskBoldRegex = /([^*\\s]+)?\\s*(\\*\\*)(?:\\s+((?:[^*\\n]|\\*(?!\\*))+?)(\\s*)\\2|((?:[^*\\n]|\\*(?!\\*))+?)(\\s+)\\2)(\\S|$)?/g;\n// Pattern for __ bold __\nconst underscoreBoldRegex = /([^_\\s]+)?\\s*(__)(?:\\s+((?:__(?! )|_(?!_)|[^_\\n])+?)(\\s*)\\2|((?:__(?! )|_(?!_)|[^_\\n])+?)(\\s+)\\2)(\\S|$)?/g;\n// Pattern for * italic *\nconst asteriskItalicRegex = /([^*\\s]+)?\\s*(\\*)(?!\\*)(?:\\s+([^*\\n]+?)(\\s*)\\2|([^*\\n]+?)(\\s+)\\2)(\\S|$)?/g;\n// Pattern for _ italic _\nconst underscoreItalicRegex = /([^_\\s]+)?\\s*(_)(?!_)(?:\\s+((?:[^_\\n]|_(?! ))+?)(\\s*)\\2|((?:[^_\\n]|_(?! ))+?)(\\s+)\\2)(\\S|$)?/g;\n// CommonMark ignores intraword underscores or asteriks, but we want to italicize/bold the inner part\n// Pattern for intraword _word_ in words like hello_world_\nconst intrawordUnderscoreItalicRegex = /(\\w)_(?!_)([a-zA-Z0-9]+)_(?![\\w_])/g;\n// Pattern for intraword __word__ in words like hello__world__\nconst intrawordUnderscoreBoldRegex = /(\\w)__([a-zA-Z0-9]+)__(?![\\w_])/g;\n// Pattern for intraword *word* in words like hello*world*\nconst intrawordAsteriskItalicRegex = /(\\w)\\*(?!\\*)([a-zA-Z0-9]+)\\*(?![\\w*])/g;\n// Pattern for intraword **word** in words like hello**world**\nconst intrawordAsteriskBoldRegex = /(\\w)\\*\\*([a-zA-Z0-9]+)\\*\\*(?![\\w*])/g;\n/**\n * Finds opening emphasis marker in a text value.\n * Returns marker info if found, null otherwise.\n */\nfunction findOpeningMarker(text) {\n    const results = MARKER_PATTERNS.map(({ isBold, marker }) => {\n        if (marker === '*' && text.startsWith('**'))\n            return null;\n        if (marker === '_' && text.startsWith('__'))\n            return null;\n        if (text.startsWith(marker) && text.length > marker.length) {\n            return { isBold, marker, textAfter: text.slice(marker.length), textBefore: '' };\n        }\n        const idx = text.indexOf(marker);\n        if (idx > 0 && !/\\s/.test(text[idx - 1])) {\n            if (marker === '*' && text.slice(idx).startsWith('**'))\n                return null;\n            if (marker === '_' && text.slice(idx).startsWith('__'))\n                return null;\n            const after = text.slice(idx + marker.length);\n            if (after.length > 0) {\n                return { isBold, marker, textAfter: after, textBefore: text.slice(0, idx) };\n            }\n        }\n        return null;\n    });\n    return results.find(r => r !== null) ?? null;\n}\n/**\n * Finds the end/closing marker in a text node for multi-node emphasis.\n */\nfunction findEndMarker(text, marker) {\n    const spacePattern = ` ${marker}`;\n    const spaceIdx = text.indexOf(spacePattern);\n    if (spaceIdx >= 0) {\n        if (marker === '*' && text.slice(spaceIdx + 1).startsWith('**'))\n            return null;\n        if (marker === '_' && text.slice(spaceIdx + 1).startsWith('__'))\n            return null;\n        return {\n            textAfter: text.slice(spaceIdx + spacePattern.length),\n            textBefore: text.slice(0, spaceIdx),\n        };\n    }\n    if (text.startsWith(marker)) {\n        if (marker === '*' && text.startsWith('**'))\n            return null;\n        if (marker === '_' && text.startsWith('__'))\n            return null;\n        return {\n            textAfter: text.slice(marker.length),\n            textBefore: '',\n        };\n    }\n    return null;\n}\n/**\n * Scan children for an opening emphasis marker in a text node.\n */\nfunction findOpeningInChildren(children) {\n    let result = null;\n    children.some((child, idx) => {\n        if (child.type !== 'text')\n            return false;\n        const found = findOpeningMarker(child.value);\n        if (found) {\n            result = { idx, opening: found };\n            return true;\n        }\n        return false;\n    });\n    return result;\n}\n/**\n * Scan children (after openingIdx) for a closing emphasis marker.\n */\nfunction findClosingInChildren(children, openingIdx, marker) {\n    let result = null;\n    children.slice(openingIdx + 1).some((child, relativeIdx) => {\n        if (child.type !== 'text')\n            return false;\n        const found = findEndMarker(child.value, marker);\n        if (found) {\n            result = { closingIdx: openingIdx + 1 + relativeIdx, closing: found };\n            return true;\n        }\n        return false;\n    });\n    return result;\n}\n/**\n * Build the replacement nodes for a matched emphasis pair.\n */\nfunction buildReplacementNodes(container, { opening, openingIdx, closing, closingIdx }) {\n    const newNodes = [];\n    if (opening.textBefore) {\n        newNodes.push({ type: 'text', value: `${opening.textBefore} ` });\n    }\n    const emphasisChildren = [];\n    const openingText = opening.textAfter.replace(/^\\s+/, '');\n    if (openingText) {\n        emphasisChildren.push({ type: 'text', value: openingText });\n    }\n    container.children.slice(openingIdx + 1, closingIdx).forEach(child => {\n        emphasisChildren.push(child);\n    });\n    const closingText = closing.textBefore.replace(/\\s+$/, '');\n    if (closingText) {\n        emphasisChildren.push({ type: 'text', value: closingText });\n    }\n    if (emphasisChildren.length > 0) {\n        const emphasisNode = opening.isBold\n            ? { type: 'strong', children: emphasisChildren }\n            : { type: 'emphasis', children: emphasisChildren };\n        newNodes.push(emphasisNode);\n    }\n    if (closing.textAfter) {\n        newNodes.push({ type: 'text', value: closing.textAfter });\n    }\n    return newNodes;\n}\n/**\n * Find and transform one multi-node emphasis pair in the container.\n * Returns true if a pair was found and transformed, false otherwise.\n */\nfunction processOneEmphasisPair(container) {\n    const openingResult = findOpeningInChildren(container.children);\n    if (!openingResult)\n        return false;\n    const { idx: openingIdx, opening } = openingResult;\n    const closingResult = findClosingInChildren(container.children, openingIdx, opening.marker);\n    if (!closingResult)\n        return false;\n    const { closingIdx, closing } = closingResult;\n    const newNodes = buildReplacementNodes(container, { opening, openingIdx, closing, closingIdx });\n    const deleteCount = closingIdx - openingIdx + 1;\n    container.children.splice(openingIdx, deleteCount, ...newNodes);\n    return true;\n}\n/**\n * Handle malformed emphasis that spans multiple AST nodes.\n * E.g., \"**bold [link](url)**\" where markers are in different text nodes.\n */\nfunction visitMultiNodeEmphasis(tree) {\n    const containerTypes = ['paragraph', 'heading', 'tableCell', 'listItem', 'blockquote'];\n    visit(tree, node => {\n        if (!containerTypes.includes(node.type))\n            return;\n        if (!('children' in node) || !Array.isArray(node.children))\n            return;\n        const container = node;\n        let foundPair = true;\n        while (foundPair) {\n            foundPair = processOneEmphasisPair(container);\n        }\n    });\n}\n/**\n * A remark plugin that normalizes malformed bold and italic markers in text nodes.\n * Detects patterns like `** bold**`, `Hello** Wrong Bold**`, `__ bold__`, `Hello__ Wrong Bold__`,\n * `* italic*`, `Hello* Wrong Italic*`, `_ italic_`, or `Hello_ Wrong Italic_`\n * and converts them to proper strong/emphasis nodes, matching the behavior of the legacy rdmd engine.\n *\n * Supports both asterisk (`**bold**`, `*italic*`) and underscore (`__bold__`, `_italic_`) syntax.\n * Also supports snake_case content like `** some_snake_case**`.\n *\n * This runs after remark-parse, which (in v11+) is strict and doesn't parse\n * malformed emphasis syntax. This plugin post-processes the AST to handle these cases.\n */\nconst normalizeEmphasisAST = () => (tree) => {\n    visit(tree, 'text', function visitor(node, index, parent) {\n        if (index === undefined || !parent)\n            return undefined;\n        // Skip if inside code blocks or inline code\n        if (parent.type === 'inlineCode' || parent.type === 'code') {\n            return undefined;\n        }\n        const text = node.value;\n        const allMatches = [];\n        [...text.matchAll(asteriskBoldRegex)].forEach(match => {\n            allMatches.push({ isBold: true, marker: '**', match });\n        });\n        [...text.matchAll(underscoreBoldRegex)].forEach(match => {\n            allMatches.push({ isBold: true, marker: '__', match });\n        });\n        [...text.matchAll(asteriskItalicRegex)].forEach(match => {\n            allMatches.push({ isBold: false, marker: '*', match });\n        });\n        [...text.matchAll(underscoreItalicRegex)].forEach(match => {\n            allMatches.push({ isBold: false, marker: '_', match });\n        });\n        [...text.matchAll(intrawordUnderscoreItalicRegex)].forEach(match => {\n            allMatches.push({ isBold: false, isIntraword: true, marker: '_', match });\n        });\n        [...text.matchAll(intrawordUnderscoreBoldRegex)].forEach(match => {\n            allMatches.push({ isBold: true, isIntraword: true, marker: '__', match });\n        });\n        [...text.matchAll(intrawordAsteriskItalicRegex)].forEach(match => {\n            allMatches.push({ isBold: false, isIntraword: true, marker: '*', match });\n        });\n        [...text.matchAll(intrawordAsteriskBoldRegex)].forEach(match => {\n            allMatches.push({ isBold: true, isIntraword: true, marker: '**', match });\n        });\n        if (allMatches.length === 0)\n            return undefined;\n        allMatches.sort((a, b) => (a.match.index ?? 0) - (b.match.index ?? 0));\n        const filteredMatches = [];\n        let lastEnd = 0;\n        allMatches.forEach(info => {\n            const start = info.match.index ?? 0;\n            const end = start + info.match[0].length;\n            if (start >= lastEnd) {\n                filteredMatches.push(info);\n                lastEnd = end;\n            }\n        });\n        if (filteredMatches.length === 0)\n            return undefined;\n        const parts = [];\n        let lastIndex = 0;\n        filteredMatches.forEach(({ isBold, isIntraword, marker, match }) => {\n            const matchIndex = match.index ?? 0;\n            const fullMatch = match[0];\n            if (isIntraword) {\n                // handles cases like hello_world_ where we only want to italicize 'world'\n                const charBefore = match[1] || ''; // e.g., \"l\" in \"hello_world_\"\n                const content = match[2]; // e.g., \"world\"\n                const combinedBefore = text.slice(lastIndex, matchIndex) + charBefore;\n                if (combinedBefore) {\n                    parts.push({ type: 'text', value: combinedBefore });\n                }\n                if (isBold) {\n                    parts.push({\n                        type: 'strong',\n                        children: [{ type: 'text', value: content }],\n                    });\n                }\n                else {\n                    parts.push({\n                        type: 'emphasis',\n                        children: [{ type: 'text', value: content }],\n                    });\n                }\n                lastIndex = matchIndex + fullMatch.length;\n                return;\n            }\n            if (matchIndex > lastIndex) {\n                const beforeText = text.slice(lastIndex, matchIndex);\n                if (beforeText) {\n                    parts.push({ type: 'text', value: beforeText });\n                }\n            }\n            const wordBefore = match[1]; // e.g., \"Hello\" in \"Hello** Wrong Bold**\"\n            const contentWithSpaceAfter = match[3]; // Content when there's a space after opening markers\n            const trailingSpace1 = match[4] || ''; // Space before closing markers (for \"** text **\" pattern)\n            const contentWithSpaceBefore = match[5]; // Content when there's only a space before closing markers\n            const trailingSpace2 = match[6] || ''; // Space before closing markers (for \"**text **\" pattern)\n            const trailingSpace = trailingSpace1 || trailingSpace2; // Combined trailing space\n            const content = (contentWithSpaceAfter || contentWithSpaceBefore || '').trim();\n            const afterChar = match[7]; // Character after closing markers (if any)\n            const markerPos = fullMatch.indexOf(marker);\n            const spacesBeforeMarkers = wordBefore\n                ? fullMatch.slice(wordBefore.length, markerPos)\n                : fullMatch.slice(0, markerPos);\n            const shouldAddSpace = !!contentWithSpaceAfter && !!wordBefore && !spacesBeforeMarkers;\n            if (wordBefore) {\n                const spacing = spacesBeforeMarkers + (shouldAddSpace ? ' ' : '');\n                parts.push({ type: 'text', value: wordBefore + spacing });\n            }\n            else if (spacesBeforeMarkers) {\n                parts.push({ type: 'text', value: spacesBeforeMarkers });\n            }\n            if (content) {\n                if (isBold) {\n                    parts.push({\n                        type: 'strong',\n                        children: [{ type: 'text', value: content }],\n                    });\n                }\n                else {\n                    parts.push({\n                        type: 'emphasis',\n                        children: [{ type: 'text', value: content }],\n                    });\n                }\n            }\n            if (afterChar) {\n                const prefix = trailingSpace ? ' ' : '';\n                parts.push({ type: 'text', value: prefix + afterChar });\n            }\n            lastIndex = matchIndex + fullMatch.length;\n        });\n        if (lastIndex < text.length) {\n            const remainingText = text.slice(lastIndex);\n            if (remainingText) {\n                parts.push({ type: 'text', value: remainingText });\n            }\n        }\n        if (parts.length > 0) {\n            parent.children.splice(index, 1, ...parts);\n            return [SKIP, index + parts.length];\n        }\n        return undefined;\n    });\n    // Handle malformed emphasis spanning multiple nodes (e.g., **text [link](url) **)\n    visitMultiNodeEmphasis(tree);\n    return tree;\n};\n/* harmony default export */ const normalize_malformed_md_syntax = (normalizeEmphasisAST);\n\n;// ./processor/transform/mdxish/magic-blocks/patterns.ts\n/** Matches HTML tags (open, close, self-closing) with optional attributes. */\nconst HTML_TAG_RE = /<\\/?([a-zA-Z][a-zA-Z0-9-]*)((?:[^>\"']*(?:\"[^\"]*\"|'[^']*'))*[^>\"']*)>/g;\n/** Matches an HTML element from its opening tag to the matching closing tag. */\nconst HTML_ELEMENT_BLOCK_RE = /<([a-zA-Z][a-zA-Z0-9-]*)[\\s>][\\s\\S]*?<\\/\\1>/g;\n/** Matches a newline with surrounding horizontal whitespace. */\nconst NEWLINE_WITH_WHITESPACE_RE = /[^\\S\\n]*\\n[^\\S\\n]*/g;\n/** Matches a closing block-level tag followed by non-tag text or by a newline then non-blank content. */\nconst CLOSE_BLOCK_TAG_BOUNDARY_RE = /<\\/([a-zA-Z][a-zA-Z0-9-]*)>\\s*(?:(?!<)(\\S)|\\n([^\\n]))/g;\n/** Tests whether a string contains a complete HTML element (open + close tag). */\nconst COMPLETE_HTML_ELEMENT_RE = /<[a-zA-Z][^>]*>[\\s\\S]*<\\/[a-zA-Z]/;\n\n;// ./processor/transform/mdxish/magic-blocks/placeholder.ts\nconst EMPTY_IMAGE_PLACEHOLDER = {\n    type: 'image',\n    url: '',\n    alt: '',\n    title: '',\n    data: { hProperties: {} },\n};\nconst EMPTY_EMBED_PLACEHOLDER = {\n    type: 'embed',\n    children: [{ type: 'link', url: '', title: '', children: [{ type: 'text', value: '' }] }],\n    data: { hName: 'embed-block', hProperties: { url: '', href: '', title: '' } },\n};\nconst EMPTY_RECIPE_PLACEHOLDER = {\n    type: 'mdxJsxFlowElement',\n    name: 'Recipe',\n    attributes: [],\n    children: [],\n};\nconst EMPTY_CALLOUT_PLACEHOLDER = {\n    type: 'mdxJsxFlowElement',\n    name: 'Callout',\n    attributes: [\n        { type: 'mdxJsxAttribute', name: 'icon', value: '📘' },\n        { type: 'mdxJsxAttribute', name: 'theme', value: 'info' },\n        { type: 'mdxJsxAttribute', name: 'type', value: 'info' },\n        { type: 'mdxJsxAttribute', name: 'empty', value: 'true' },\n    ],\n    children: [{ type: 'heading', depth: 3, children: [{ type: 'text', value: '' }] }],\n};\nconst EMPTY_TABLE_PLACEHOLDER = {\n    type: 'table',\n    align: ['left', 'left'],\n    children: [\n        { type: 'tableRow', children: [{ type: 'tableCell', children: [{ type: 'text', value: '' }] }] },\n        { type: 'tableRow', children: [{ type: 'tableCell', children: [{ type: 'text', value: '' }] }] },\n    ],\n};\nconst EMPTY_CODE_PLACEHOLDER = {\n    type: 'code',\n    value: '',\n    lang: null,\n    meta: null,\n};\n\n;// ./processor/transform/mdxish/magic-blocks/magic-block-transformer.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Wraps a node in a \"pinned\" container if sidebar: true is set.\n */\nconst wrapPinnedBlocks = (node, data) => {\n    if (!data.sidebar)\n        return node;\n    return {\n        children: [node],\n        data: { hName: 'rdme-pin', hProperties: { className: 'pin' } },\n        type: 'rdme-pin',\n    };\n};\n/**\n * Named size presets for image widths.\n */\nconst imgSizeValues = {\n    full: '100%',\n    original: 'auto',\n};\n/**\n * Proxy that resolves image sizing values.\n */\nconst imgWidthBySize = new Proxy(imgSizeValues, {\n    get: (widths, size) => (size?.match(/^\\d+$/) ? `${size}%` : size in widths ? widths[size] : size),\n});\nconst textToInline = (text) => [{ type: 'text', value: text }];\nconst textToBlock = (text) => [{ children: textToInline(text), type: 'paragraph' }];\n/**\n * Converts leading newlines in magic block content to `<br>` tags.\n * Leading newlines are stripped by remark-parse before they become soft break nodes,\n * so remark-breaks cannot handle them. We convert them to HTML `<br>` tags instead.\n */\nconst ensureLeadingBreaks = (text) => text.replace(/^\\n+/, match => '<br>'.repeat(match.length));\n/** Preprocesses magic block body content before parsing. */\nconst preprocessBody = (text) => {\n    return ensureLeadingBreaks(text);\n};\n/** Markdown parser */\nconst contentParser = unified()\n    .data('micromarkExtensions', [legacyVariable()])\n    .data('fromMarkdownExtensions', [legacyVariableFromMarkdown()])\n    .use(remarkParse)\n    .use(remarkBreaks)\n    .use(remarkGfm)\n    .use(normalize_malformed_md_syntax);\n/** Markdown to HTML processor (mdast → hast → HTML string) */\nconst markdownToHtml = unified()\n    .data('micromarkExtensions', [legacyVariable()])\n    .data('fromMarkdownExtensions', [legacyVariableFromMarkdown()])\n    .use(remarkParse)\n    .use(remarkGfm)\n    .use(normalize_malformed_md_syntax)\n    .use(remarkRehype)\n    .use(rehypeStringify);\n/** HTML parser (HTML string → hast) */\nconst htmlParser = unified().use(rehypeParse, { fragment: true });\n/** HTML stringifier (hast → HTML string) */\nconst htmlStringifier = unified().use(rehypeStringify);\n/** Process \\|, \\<, \\> backslash escapes. Only < is entity-escaped; > is left literal to avoid double-encoding by rehype. */\nconst processBackslashEscapes = (text) => text.replace(/\\\\<([^>]*)>/g, '&lt;$1>').replace(/\\\\([<>|])/g, (_, c) => (c === '<' ? '&lt;' : c === '>' ? '>' : c));\n/** Block-level HTML tags that trigger CommonMark type 6 HTML blocks (condition 6). */\nconst BLOCK_LEVEL_TAGS = new Set(htmlBlockNames);\nconst escapeInvalidTags = (str) => str.replace(HTML_TAG_RE, (match, tag, rest) => {\n    const tagName = tag.replace(/^\\//, '');\n    if (STANDARD_HTML_TAGS.has(tagName.toLowerCase()))\n        return match;\n    // Preserve PascalCase tags (custom components like <Glossary>) for the main pipeline\n    if (/^[A-Z]/.test(tagName))\n        return match;\n    return `&lt;${tag}${rest}&gt;`;\n});\n/**\n * Process markdown within HTML string.\n * 1. Parse HTML to HAST\n * 2. Find text nodes, parse as markdown, convert to HAST\n * 3. Stringify back to HTML\n *\n * PascalCase component tags (e.g. `<Glossary>`) are temporarily replaced with\n * placeholders before HTML parsing so `rehype-parse` doesn't mangle them\n * (it treats unknown tags as void elements, stripping their children).\n */\nconst processMarkdownInHtmlString = (html) => {\n    const placeholders = [];\n    let counter = 0;\n    const safened = escapeInvalidTags(html).replace(HTML_TAG_RE, match => {\n        if (!/^<\\/?[A-Z]/.test(match))\n            return match;\n        const id = `<!--PC${(counter += 1)}-->`;\n        placeholders.push([id, match]);\n        return id;\n    });\n    const hast = htmlParser.parse(safened);\n    const textToHast = (text) => {\n        if (!text.trim())\n            return [{ type: 'text', value: text }];\n        const parsed = markdownToHtml.runSync(markdownToHtml.parse(escapeInvalidTags(text)));\n        const nodes = parsed.children.flatMap(n => n.type === 'element' && n.tagName === 'p' ? n.children : [n]);\n        const leading = text.match(/^\\s+/)?.[0];\n        const trailing = text.match(/\\s+$/)?.[0];\n        if (leading)\n            nodes.unshift({ type: 'text', value: leading });\n        if (trailing)\n            nodes.push({ type: 'text', value: trailing });\n        return nodes;\n    };\n    const processChildren = (children) => children.flatMap(child => (child.type === 'text' ? textToHast(child.value) : [child]));\n    hast.children = processChildren(hast.children);\n    visit(hast, 'element', (node) => {\n        node.children = processChildren(node.children);\n    });\n    return placeholders.reduce((res, [id, original]) => res.replace(id, original), htmlStringifier.stringify(hast));\n};\n/**\n * Separate a closing block-level tag from the content that follows it.\n *\n * Each \\n in the original text becomes a <br> tag to preserve spacing, then a\n * blank line (\\n\\n) is appended so CommonMark ends the HTML block and parses\n * the following content as markdown.\n */\nconst separateBlockTagFromContent = (match, tag, inlineChar, nextLineChar) => {\n    if (!BLOCK_LEVEL_TAGS.has(tag.toLowerCase()))\n        return match;\n    const newlineCount = (match.match(/\\n/g) ?? []).length;\n    const breaks = '<br>'.repeat(newlineCount);\n    return `</${tag}>${breaks}\\n\\n${inlineChar || nextLineChar}`;\n};\n/**\n * CommonMark doesn't process markdown inside HTML blocks -\n * so `<ul><li>_text_</li></ul>` won't convert underscores to emphasis.\n * We parse first, then visit html nodes and process their text content.\n */\nconst parseTableCell = (text) => {\n    if (!text.trim())\n        return [{ type: 'text', value: '' }];\n    // Convert \\n (and surrounding whitespace) to <br> inside HTML blocks so\n    // CommonMark doesn't split them on blank lines.\n    // Then strip leading whitespace to prevent indented code blocks.\n    const escaped = processBackslashEscapes(text);\n    const normalized = escaped\n        .replace(HTML_ELEMENT_BLOCK_RE, match => match.replace(NEWLINE_WITH_WHITESPACE_RE, '<br>'))\n        .replace(CLOSE_BLOCK_TAG_BOUNDARY_RE, separateBlockTagFromContent);\n    const trimmedLines = normalized.split('\\n').map(line => line.trimStart());\n    const processed = trimmedLines.join('\\n');\n    const tree = contentParser.runSync(contentParser.parse(processed));\n    // Process markdown inside complete HTML elements (e.g. _emphasis_ within <li>).\n    // Bare tags like \"<i>\" are left for rehypeRaw since rehype-parse would mangle them.\n    visit(tree, 'html', (node) => {\n        if (COMPLETE_HTML_ELEMENT_RE.test(node.value)) {\n            node.value = processMarkdownInHtmlString(node.value);\n        }\n        else {\n            node.value = escapeInvalidTags(node.value);\n        }\n    });\n    if (tree.children.length > 1) {\n        return tree.children;\n    }\n    return tree.children.flatMap(n => n.type === 'paragraph' && 'children' in n ? n.children : [n]);\n};\nconst parseBlock = (text) => {\n    if (!text.trim())\n        return textToBlock('');\n    const tree = contentParser.runSync(contentParser.parse(text));\n    return tree.children;\n};\nconst parseInline = (text) => {\n    if (!text.trim())\n        return textToInline(text);\n    const tree = contentParser.runSync(contentParser.parse(text));\n    return tree.children;\n};\n/**\n * Transform a magicBlock node into final MDAST nodes.\n */\nfunction transformMagicBlock(blockType, data, rawValue, options = {}) {\n    const { compatibilityMode = false, safeMode = false } = options;\n    // Handle empty data by returning placeholder nodes for known block types\n    // This allows the editor to show appropriate placeholder UI instead of nothing\n    if (Object.keys(data).length < 1) {\n        switch (blockType) {\n            case 'image':\n                return [EMPTY_IMAGE_PLACEHOLDER];\n            case 'embed':\n                return [EMPTY_EMBED_PLACEHOLDER];\n            case 'code':\n                return [EMPTY_CODE_PLACEHOLDER];\n            case 'callout':\n                return [EMPTY_CALLOUT_PLACEHOLDER];\n            case 'parameters':\n            case 'table':\n                return [EMPTY_TABLE_PLACEHOLDER];\n            case 'recipe':\n            case 'tutorial-tile':\n                return [EMPTY_RECIPE_PLACEHOLDER];\n            default:\n                return [{ type: 'paragraph', children: [{ type: 'text', value: rawValue }] }];\n        }\n    }\n    switch (blockType) {\n        case 'code': {\n            const codeJson = data;\n            if (!codeJson.codes || !Array.isArray(codeJson.codes)) {\n                return [wrapPinnedBlocks(EMPTY_CODE_PLACEHOLDER, data)];\n            }\n            const children = codeJson.codes.map(obj => ({\n                className: 'tab-panel',\n                data: { hName: 'code', hProperties: { lang: obj.language, meta: obj.name || null } },\n                lang: obj.language,\n                meta: obj.name || null,\n                type: 'code',\n                value: obj.code.trim(),\n            }));\n            // Single code block without a tab name (meta or language) renders as a plain code block\n            // Otherwise, we want to render it as a code tabs block\n            if (children.length === 1) {\n                if (!children[0].value)\n                    return [];\n                if (!(children[0].meta || children[0].lang))\n                    return [wrapPinnedBlocks(children[0], data)];\n            }\n            // Multiple code blocks or a single code block with a tab name (meta or language) renders as a code tabs block\n            return [wrapPinnedBlocks({ children, className: 'tabs', data: { hName: 'CodeTabs' }, type: 'code-tabs' }, data)];\n        }\n        case 'api-header': {\n            const headerJson = data;\n            const depth = headerJson.level || (compatibilityMode ? 1 : 2);\n            return [\n                wrapPinnedBlocks({\n                    children: 'title' in headerJson ? parseInline(headerJson.title || '') : [],\n                    depth,\n                    type: 'heading',\n                }, data),\n            ];\n        }\n        case 'image': {\n            const imageJson = data;\n            if (!imageJson.images || !Array.isArray(imageJson.images)) {\n                return [wrapPinnedBlocks(EMPTY_IMAGE_PLACEHOLDER, data)];\n            }\n            const imgData = imageJson.images.find(i => i.image);\n            if (!imgData?.image) {\n                return [wrapPinnedBlocks(EMPTY_IMAGE_PLACEHOLDER, data)];\n            }\n            const [url, title, alt] = imgData.image;\n            const block = {\n                alt: alt || imgData.caption || '',\n                data: {\n                    hProperties: {\n                        ...(imgData.align && { align: imgData.align }),\n                        ...(imgData.border && { border: imgData.border.toString() }),\n                        ...(imgData.sizing && { width: imgWidthBySize[imgData.sizing] }),\n                    },\n                },\n                title,\n                type: 'image',\n                url,\n            };\n            const img = imgData.caption\n                ? {\n                    children: [\n                        block,\n                        { children: parseBlock(imgData.caption), data: { hName: 'figcaption' }, type: 'figcaption' },\n                    ],\n                    data: { hName: 'figure' },\n                    type: 'figure',\n                    url,\n                }\n                : block;\n            return [wrapPinnedBlocks(img, data)];\n        }\n        case 'callout': {\n            const calloutJson = data;\n            const types = {\n                danger: ['❗️', 'error'],\n                info: ['📘', 'info'],\n                success: ['👍', 'okay'],\n                warning: ['🚧', 'warn'],\n            };\n            const resolvedType = typeof calloutJson.type === 'string' && calloutJson.type in types\n                ? types[calloutJson.type]\n                : [calloutJson.icon || '👍', typeof calloutJson.type === 'string' ? calloutJson.type : 'default'];\n            const [icon, theme] = Array.isArray(resolvedType) ? resolvedType : ['👍', 'default'];\n            if (!(calloutJson.title || calloutJson.body))\n                return [];\n            const hasTitle = !!calloutJson.title?.trim();\n            const hasBody = !!calloutJson.body?.trim();\n            const empty = !hasTitle;\n            const children = [];\n            if (hasTitle) {\n                const titleBlocks = parseBlock(calloutJson.title || '');\n                if (titleBlocks.length > 0 && titleBlocks[0].type === 'paragraph') {\n                    const firstTitle = titleBlocks[0];\n                    const heading = {\n                        type: 'heading',\n                        depth: 3,\n                        children: (firstTitle.children || []),\n                    };\n                    children.push(heading);\n                    children.push(...titleBlocks.slice(1));\n                }\n                else {\n                    children.push(...titleBlocks);\n                }\n            }\n            else {\n                // Add empty heading placeholder so body goes to children.slice(1)\n                // The Callout component expects children[0] to be the heading\n                children.push({\n                    type: 'heading',\n                    depth: 3,\n                    children: [{ type: 'text', value: '' }],\n                });\n            }\n            if (hasBody) {\n                const bodyBlocks = parseBlock(preprocessBody(calloutJson.body || ''));\n                children.push(...bodyBlocks);\n            }\n            const calloutElement = {\n                type: 'mdxJsxFlowElement',\n                name: 'Callout',\n                attributes: toAttributes({ icon, theme: theme || 'default', type: theme || 'default', empty }, [\n                    'icon',\n                    'theme',\n                    'type',\n                    'empty',\n                ]),\n                children: children,\n            };\n            return [wrapPinnedBlocks(calloutElement, data)];\n        }\n        case 'parameters': {\n            const paramsJson = data;\n            const { cols, data: tableData, rows } = paramsJson;\n            if (!tableData || !Object.keys(tableData).length)\n                return [];\n            if (typeof cols !== 'number' || typeof rows !== 'number' || cols < 1 || rows < 0)\n                return [];\n            const sparseData = Object.entries(tableData).reduce((mapped, [key, v]) => {\n                const [row, col] = key.split('-');\n                const rowIndex = row === 'h' ? 0 : parseInt(row, 10) + 1;\n                const colIndex = parseInt(col, 10);\n                if (!mapped[rowIndex])\n                    mapped[rowIndex] = [];\n                mapped[rowIndex][colIndex] = v;\n                return mapped;\n            }, []);\n            const tokenizeCell = compatibilityMode ? textToBlock : parseTableCell;\n            const tableChildren = Array.from({ length: rows + 1 }, (_, y) => ({\n                children: Array.from({ length: cols }, (__, x) => ({\n                    children: sparseData[y]?.[x] ? tokenizeCell(preprocessBody(sparseData[y][x])) : [{ type: 'text', value: '' }],\n                    type: y === 0 ? 'tableHead' : 'tableCell',\n                })),\n                type: 'tableRow',\n            }));\n            return [\n                wrapPinnedBlocks({ align: paramsJson.align ?? new Array(cols).fill('left'), children: tableChildren, type: 'table' }, data),\n            ];\n        }\n        case 'embed': {\n            const embedJson = data;\n            if (!embedJson.url) {\n                return [wrapPinnedBlocks(EMPTY_EMBED_PLACEHOLDER, data)];\n            }\n            const { html, title, url } = embedJson;\n            try {\n                embedJson.provider = new URL(url).hostname\n                    .split(/(?:www)?\\./)\n                    .filter(i => i)\n                    .join('.');\n            }\n            catch {\n                embedJson.provider = url;\n            }\n            return [\n                wrapPinnedBlocks({\n                    children: [\n                        { children: [{ type: 'text', value: title || '' }], title: embedJson.provider, type: 'link', url },\n                    ],\n                    data: { hName: 'embed-block', hProperties: { ...embedJson, href: url, html, title, url } },\n                    type: 'embed',\n                }, data),\n            ];\n        }\n        case 'html': {\n            const htmlJson = data;\n            if (typeof htmlJson.html !== 'string')\n                return [];\n            return [\n                wrapPinnedBlocks({\n                    data: {\n                        hName: 'html-block',\n                        hProperties: { html: htmlJson.html, runScripts: compatibilityMode, safeMode },\n                    },\n                    type: 'html-block',\n                }, data),\n            ];\n        }\n        case 'recipe':\n        case 'tutorial-tile': {\n            const recipeJson = data;\n            if (!recipeJson.slug || !recipeJson.title)\n                return [];\n            const recipeNode = {\n                type: 'mdxJsxFlowElement',\n                name: 'Recipe',\n                attributes: toAttributes(recipeJson, ['slug', 'title']),\n                children: [],\n                position: undefined,\n            };\n            return [recipeNode];\n        }\n        default: {\n            const text = data.text || data.html || '';\n            return [\n                wrapPinnedBlocks({ children: textToBlock(text), data: { hName: blockType || 'div', hProperties: data, ...data }, type: 'div' }, data),\n            ];\n        }\n    }\n}\n/**\n * Check if a child node is a flow element that needs unwrapping.\n */\nconst blockTypes = [\n    'heading',\n    'code',\n    'code-tabs',\n    'paragraph',\n    'blockquote',\n    'list',\n    'table',\n    'thematicBreak',\n    'html',\n    'yaml',\n    'toml',\n    'rdme-pin',\n    'rdme-callout',\n    'html-block',\n    'embed',\n    'figure',\n    'mdxJsxFlowElement',\n];\n/**\n * Check if a node is a block-level node (cannot be inside a paragraph)\n */\nconst isBlockNode = (node) => blockTypes.includes(node.type);\n/**\n * Unified plugin that transforms magicBlock nodes into final MDAST nodes.\n */\nconst magicBlockTransformer = (options = {}) => tree => {\n    const replacements = [];\n    visitParents(tree, 'magicBlock', (node, ancestors) => {\n        const parent = ancestors[ancestors.length - 1]; // direct parent of the current node\n        const index = parent.children.indexOf(node);\n        if (index === -1)\n            return;\n        const children = transformMagicBlock(node.blockType, node.data, node.value, options);\n        if (!children.length) {\n            // `visitParents` doesn't support [Action, Index] returns like `visit` does;\n            // a bare return after splicing is sufficient since `visitParents` walks by\n            // tree structure rather than index.\n            parent.children.splice(index, 1);\n            return;\n        }\n        // If parent is a paragraph and we're inserting block nodes (which must not be in paragraphs), lift them out\n        if (parent.type === 'paragraph' && children.some(child => isBlockNode(child))) {\n            const blockNodes = [];\n            const inlineNodes = [];\n            children.forEach(child => {\n                (isBlockNode(child) ? blockNodes : inlineNodes).push(child);\n            });\n            replacements.push({\n                container: ancestors[ancestors.length - 2] || tree, // grandparent of the current node\n                parent,\n                blockNodes,\n                inlineNodes,\n                before: parent.children.slice(0, index),\n                after: parent.children.slice(index + 1),\n            });\n        }\n        else {\n            parent.children.splice(index, 1, ...children);\n        }\n    });\n    // Second pass: apply replacements that require lifting block nodes out of paragraphs\n    // Process in reverse order to maintain correct indices\n    for (let i = replacements.length - 1; i >= 0; i -= 1) {\n        const { after, before, blockNodes, container, inlineNodes, parent } = replacements[i];\n        const containerChildren = container.children;\n        const paraIndex = containerChildren.indexOf(parent);\n        if (paraIndex === -1) {\n            parent.children.splice(before.length, 1, ...blockNodes, ...inlineNodes);\n            // eslint-disable-next-line no-continue\n            continue;\n        }\n        if (inlineNodes.length > 0) {\n            parent.children = [...before, ...inlineNodes, ...after];\n            if (blockNodes.length > 0) {\n                containerChildren.splice(paraIndex + 1, 0, ...blockNodes);\n            }\n        }\n        else if (before.length === 0 && after.length === 0) {\n            containerChildren.splice(paraIndex, 1, ...blockNodes);\n        }\n        else {\n            parent.children = [...before, ...after];\n            if (blockNodes.length > 0) {\n                containerChildren.splice(paraIndex + 1, 0, ...blockNodes);\n            }\n        }\n    }\n};\n/* harmony default export */ const magic_block_transformer = (magicBlockTransformer);\n\n;// ./processor/transform/mdxish/mdxish-html-blocks.ts\n\n\n\n\n/**\n * Decodes HTMLBlock content that was protected during preprocessing.\n * Content is wrapped in <!--RDMX_HTMLBLOCK:base64:RDMX_HTMLBLOCK-->\n */\nfunction decodeProtectedContent(content) {\n    // Escape special regex characters in the markers\n    const startEscaped = HTML_BLOCK_CONTENT_START.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n    const endEscaped = HTML_BLOCK_CONTENT_END.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n    const markerRegex = new RegExp(`${startEscaped}([A-Za-z0-9+/=]+)${endEscaped}`, 'g');\n    return content.replace(markerRegex, (_match, encoded) => {\n        try {\n            return base64Decode(encoded);\n        }\n        catch {\n            return encoded;\n        }\n    });\n}\n/**\n * Collects text content from a node and its children recursively\n */\nfunction collectTextContent(node) {\n    const parts = [];\n    if (node.type === 'text' && node.value) {\n        parts.push(node.value);\n    }\n    else if (node.type === 'html' && node.value) {\n        parts.push(node.value);\n    }\n    else if (node.type === 'inlineCode' && node.value) {\n        parts.push(node.value);\n    }\n    else if (node.type === 'code' && node.value) {\n        // Reconstruct code fence syntax (markdown parser consumes opening ```)\n        const lang = node.lang || '';\n        const fence = `\\`\\`\\`${lang ? `${lang}\\n` : ''}`;\n        parts.push(fence);\n        parts.push(node.value);\n        // Add newline before closing fence if missing\n        const closingFence = node.value.endsWith('\\n') ? '```' : '\\n```';\n        parts.push(closingFence);\n    }\n    else if (node.children && Array.isArray(node.children)) {\n        node.children.forEach(child => {\n            if (typeof child === 'object' && child !== null) {\n                parts.push(collectTextContent(child));\n            }\n        });\n    }\n    return parts.join('');\n}\n/**\n * Extracts boolean attribute from HTML tag. Handles JSX (safeMode={true}) and string (safeMode=\"true\") syntax.\n * Returns \"true\"/\"false\" string to survive rehypeRaw serialization.\n */\nfunction extractBooleanAttr(attrs, name) {\n    // Try JSX syntax: name={true|false}\n    const jsxMatch = attrs.match(new RegExp(`${name}=\\\\{(true|false)\\\\}`));\n    if (jsxMatch) {\n        return jsxMatch[1];\n    }\n    // Try string syntax: name=\"true\"|true\n    const stringMatch = attrs.match(new RegExp(`${name}=\"?(true|false)\"?`));\n    if (stringMatch) {\n        return stringMatch[1];\n    }\n    return undefined;\n}\n/**\n * Extracts runScripts attribute from HTML tag. Returns boolean for \"true\"/\"false\", string for other values, or undefined if not found.\n */\nfunction extractRunScriptsAttr(attrs) {\n    const runScriptsMatch = attrs.match(/runScripts=\"?([^\">\\s]+)\"?/);\n    if (!runScriptsMatch) {\n        return undefined;\n    }\n    const value = runScriptsMatch[1];\n    if (value === 'true') {\n        return true;\n    }\n    if (value === 'false') {\n        return false;\n    }\n    return value;\n}\n/**\n * Creates an HTMLBlock node from HTML string and optional attributes\n */\nfunction createHTMLBlockNode(htmlString, position, runScripts, safeMode) {\n    return {\n        position,\n        children: [{ type: 'text', value: htmlString }],\n        type: NodeTypes.htmlBlock,\n        data: {\n            hName: 'html-block',\n            hProperties: {\n                html: htmlString,\n                ...(runScripts !== undefined && { runScripts }),\n                ...(safeMode !== undefined && { safeMode }),\n            },\n        },\n    };\n}\n/**\n * Checks for opening tag only (for split detection)\n */\nfunction hasOpeningTagOnly(node) {\n    let hasOpening = false;\n    let hasClosed = false;\n    let attrs = '';\n    const check = (n) => {\n        if (n.type === 'html' && n.value) {\n            if (n.value === '<HTMLBlock>') {\n                hasOpening = true;\n            }\n            else {\n                const match = n.value.match(/^<HTMLBlock(\\s[^>]*)?>$/);\n                if (match) {\n                    hasOpening = true;\n                    attrs = match[1] || '';\n                }\n            }\n            if (n.value === '</HTMLBlock>' || n.value.includes('</HTMLBlock>')) {\n                hasClosed = true;\n            }\n        }\n        if (n.children && Array.isArray(n.children)) {\n            n.children.forEach(child => {\n                check(child);\n            });\n        }\n    };\n    check(node);\n    // Return true only if opening without closing (split case)\n    return { attrs, found: hasOpening && !hasClosed };\n}\n/**\n * Checks if a node contains an HTMLBlock closing tag\n */\nfunction hasClosingTag(node) {\n    if (node.type === 'html' && node.value) {\n        if (node.value === '</HTMLBlock>' || node.value.includes('</HTMLBlock>'))\n            return true;\n    }\n    if (node.children && Array.isArray(node.children)) {\n        return node.children.some(child => hasClosingTag(child));\n    }\n    return false;\n}\n/**\n * Transforms HTMLBlock MDX JSX to html-block nodes. Handles <HTMLBlock>{`...`}</HTMLBlock> syntax.\n */\nconst mdxishHtmlBlocks = () => tree => {\n    // Handle HTMLBlock split across root children (caused by newlines)\n    visit(tree, 'root', (root) => {\n        const children = root.children;\n        let i = 0;\n        while (i < children.length) {\n            const child = children[i];\n            const { attrs, found: hasOpening } = hasOpeningTagOnly(child);\n            if (hasOpening) {\n                // Find closing tag in subsequent siblings\n                let closingIdx = -1;\n                for (let j = i + 1; j < children.length; j += 1) {\n                    if (hasClosingTag(children[j])) {\n                        closingIdx = j;\n                        break;\n                    }\n                }\n                if (closingIdx !== -1) {\n                    // Collect inner content between tags\n                    const contentParts = [];\n                    for (let j = i; j <= closingIdx; j += 1) {\n                        const node = children[j];\n                        contentParts.push(collectTextContent(node));\n                    }\n                    // Remove the opening/closing tags and template literal syntax from content\n                    let content = contentParts.join('');\n                    content = content.replace(/^<HTMLBlock[^>]*>\\s*\\{?\\s*`?/, '').replace(/`?\\s*\\}?\\s*<\\/HTMLBlock>$/, '');\n                    // Decode protected content that was base64 encoded during preprocessing\n                    content = decodeProtectedContent(content);\n                    const htmlString = formatHtmlForMdxish(content);\n                    const runScripts = extractRunScriptsAttr(attrs);\n                    const safeMode = extractBooleanAttr(attrs, 'safeMode');\n                    // Replace range with single HTMLBlock node\n                    const mdNode = createHTMLBlockNode(htmlString, children[i].position, runScripts, safeMode);\n                    root.children.splice(i, closingIdx - i + 1, mdNode);\n                }\n            }\n            i += 1;\n        }\n    });\n    // Handle HTMLBlock parsed as HTML elements (when template literal contains block-level HTML tags)\n    visit(tree, 'html', (node, index, parent) => {\n        if (!parent || index === undefined)\n            return;\n        const value = node.value;\n        if (!value)\n            return;\n        // Case 1: Full HTMLBlock in single node\n        const fullMatch = value.match(/^<HTMLBlock(\\s[^>]*)?>([\\s\\S]*)<\\/HTMLBlock>$/);\n        if (fullMatch) {\n            const attrs = fullMatch[1] || '';\n            let content = fullMatch[2] || '';\n            // Remove template literal syntax if present: {`...`}\n            content = content.replace(/^\\s*\\{\\s*`/, '').replace(/`\\s*\\}\\s*$/, '');\n            // Decode protected content that was base64 encoded during preprocessing\n            content = decodeProtectedContent(content);\n            const htmlString = formatHtmlForMdxish(content);\n            const runScripts = extractRunScriptsAttr(attrs);\n            const safeMode = extractBooleanAttr(attrs, 'safeMode');\n            parent.children[index] = createHTMLBlockNode(htmlString, node.position, runScripts, safeMode);\n            return;\n        }\n        // Case 2: Opening tag only (split by blank lines)\n        if (value === '<HTMLBlock>' || value.match(/^<HTMLBlock\\s[^>]*>$/)) {\n            const siblings = parent.children;\n            let closingIdx = -1;\n            // Find closing tag in siblings\n            for (let i = index + 1; i < siblings.length; i += 1) {\n                const sibling = siblings[i];\n                if (sibling.type === 'html') {\n                    const sibVal = sibling.value;\n                    if (sibVal === '</HTMLBlock>' || sibVal?.includes('</HTMLBlock>')) {\n                        closingIdx = i;\n                        break;\n                    }\n                }\n            }\n            if (closingIdx === -1)\n                return;\n            // Collect content between tags, skipping template literal delimiters\n            const contentParts = [];\n            for (let i = index + 1; i < closingIdx; i += 1) {\n                const sibling = siblings[i];\n                // Skip template literal delimiters\n                if (sibling.type === 'text') {\n                    const textVal = sibling.value;\n                    if (textVal === '{' || textVal === '}' || textVal === '{`' || textVal === '`}') {\n                        // eslint-disable-next-line no-continue\n                        continue;\n                    }\n                }\n                contentParts.push(collectTextContent(sibling));\n            }\n            // Decode protected content that was base64 encoded during preprocessing\n            const decodedContent = decodeProtectedContent(contentParts.join(''));\n            const htmlString = formatHtmlForMdxish(decodedContent);\n            const runScripts = extractRunScriptsAttr(value);\n            const safeMode = extractBooleanAttr(value, 'safeMode');\n            // Replace opening tag with HTMLBlock node, remove consumed siblings\n            parent.children[index] = createHTMLBlockNode(htmlString, node.position, runScripts, safeMode);\n            parent.children.splice(index + 1, closingIdx - index);\n        }\n    });\n    // Handle HTMLBlock inside paragraphs (parsed as inline elements)\n    visit(tree, 'paragraph', (node, index, parent) => {\n        if (!parent || index === undefined)\n            return;\n        const children = node.children || [];\n        let htmlBlockStartIdx = -1;\n        let htmlBlockEndIdx = -1;\n        let templateLiteralStartIdx = -1;\n        let templateLiteralEndIdx = -1;\n        for (let i = 0; i < children.length; i += 1) {\n            const child = children[i];\n            if (child.type === 'html' && typeof child.value === 'string') {\n                const value = child.value;\n                if (value === '<HTMLBlock>' || value.match(/^<HTMLBlock\\s[^>]*>$/)) {\n                    htmlBlockStartIdx = i;\n                }\n                else if (value === '</HTMLBlock>') {\n                    htmlBlockEndIdx = i;\n                }\n            }\n            // Find opening brace after HTMLBlock start\n            if (htmlBlockStartIdx !== -1 && templateLiteralStartIdx === -1 && child.type === 'text') {\n                const value = child.value;\n                if (value === '{') {\n                    templateLiteralStartIdx = i;\n                }\n            }\n            // Find closing brace before HTMLBlock end\n            if (htmlBlockStartIdx !== -1 && htmlBlockEndIdx === -1 && child.type === 'text') {\n                const value = child.value;\n                if (value === '}') {\n                    templateLiteralEndIdx = i;\n                }\n            }\n        }\n        if (htmlBlockStartIdx !== -1 &&\n            htmlBlockEndIdx !== -1 &&\n            templateLiteralStartIdx !== -1 &&\n            templateLiteralEndIdx !== -1 &&\n            templateLiteralStartIdx < templateLiteralEndIdx) {\n            const openingTag = children[htmlBlockStartIdx];\n            // Collect content between braces (handles code blocks)\n            const templateContent = [];\n            for (let i = templateLiteralStartIdx + 1; i < templateLiteralEndIdx; i += 1) {\n                const child = children[i];\n                templateContent.push(collectTextContent(child));\n            }\n            // Decode protected content that was base64 encoded during preprocessing\n            const decodedContent = decodeProtectedContent(templateContent.join(''));\n            const htmlString = formatHtmlForMdxish(decodedContent);\n            const runScripts = openingTag.value ? extractRunScriptsAttr(openingTag.value) : undefined;\n            const safeMode = openingTag.value ? extractBooleanAttr(openingTag.value, 'safeMode') : undefined;\n            const mdNode = createHTMLBlockNode(htmlString, node.position, runScripts, safeMode);\n            parent.children[index] = mdNode;\n        }\n    });\n    // Ensure html-block nodes have HTML in children as text node\n    visit(tree, 'html-block', (node) => {\n        const html = node.data?.hProperties?.html;\n        if (html &&\n            (!node.children ||\n                node.children.length === 0 ||\n                (node.children.length === 1 && node.children[0].type === 'text' && node.children[0].value !== html))) {\n            node.children = [\n                {\n                    type: 'text',\n                    value: html,\n                },\n            ];\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const mdxish_html_blocks = (mdxishHtmlBlocks);\n\n;// ./processor/transform/mdxish/mdxish-jsx-to-mdast.ts\n\n\n\nconst transformImage = (jsx) => {\n    const attrs = getAttrs(jsx);\n    const { align, alt = '', border, caption, className, height, lazy, src = '', title = '', width } = attrs;\n    const hProperties = {\n        alt,\n        src,\n        title,\n        ...(align && { align }),\n        ...(border !== undefined && { border: String(border) }),\n        ...(caption && { caption }),\n        ...(className && { className }),\n        ...(height !== undefined && { height: String(height) }),\n        ...(lazy !== undefined && { lazy }),\n        ...(width !== undefined && { width: String(width) }),\n    };\n    return {\n        type: NodeTypes.imageBlock,\n        align,\n        alt,\n        border: border !== undefined ? String(border) : undefined,\n        caption,\n        className,\n        height: height !== undefined ? String(height) : undefined,\n        lazy,\n        src,\n        title,\n        width: width !== undefined ? String(width) : undefined,\n        data: {\n            hName: 'img',\n            hProperties,\n        },\n        position: jsx.position,\n    };\n};\nconst transformCallout = (jsx) => {\n    const attrs = getAttrs(jsx);\n    const { empty = false, icon = '', theme = '' } = attrs;\n    return {\n        type: NodeTypes.callout,\n        children: jsx.children,\n        data: {\n            hName: 'Callout',\n            hProperties: {\n                empty,\n                icon,\n                theme,\n            },\n        },\n        position: jsx.position,\n    };\n};\nconst transformEmbed = (jsx) => {\n    const attrs = getAttrs(jsx);\n    const { favicon, html, iframe, image, providerName, providerUrl, title = '', url = '' } = attrs;\n    return {\n        type: NodeTypes.embedBlock,\n        title,\n        url,\n        data: {\n            hName: 'embed',\n            hProperties: {\n                title,\n                url,\n                ...(favicon && { favicon }),\n                ...(html && { html }),\n                ...(iframe !== undefined && { iframe }),\n                ...(image && { image }),\n                ...(providerName && { providerName }),\n                ...(providerUrl && { providerUrl }),\n            },\n        },\n        position: jsx.position,\n    };\n};\nconst transformRecipe = (jsx) => {\n    const attrs = getAttrs(jsx);\n    const { backgroundColor = '', emoji = '', id = '', link = '', slug = '', title = '' } = attrs;\n    return {\n        type: NodeTypes.recipe,\n        backgroundColor,\n        emoji,\n        id,\n        link,\n        slug,\n        title,\n        position: jsx.position,\n    };\n};\n/**\n * Transform a magic block image node into an ImageBlock.\n * Magic block images have structure: { type: 'image', url, title, alt, data.hProperties }\n */\nconst transformMagicBlockImage = (node) => {\n    const { alt = '', data, position, title = '', url = '' } = node;\n    const hProps = data?.hProperties || {};\n    const { align, border, width } = hProps;\n    const hProperties = {\n        alt,\n        src: url,\n        title,\n        ...(align && { align }),\n        ...(border && { border }),\n        ...(width && { width }),\n    };\n    return {\n        type: NodeTypes.imageBlock,\n        align,\n        alt,\n        border,\n        src: url,\n        title,\n        width,\n        data: {\n            hName: 'img',\n            hProperties,\n        },\n        position,\n    };\n};\n/**\n * Transform a magic block embed node into an EmbedBlock.\n * Magic block embeds have structure: { type: 'embed', children, data.hProperties }\n */\nconst transformMagicBlockEmbed = (node) => {\n    const { data, position } = node;\n    const hProps = data?.hProperties || {};\n    const { favicon, html, image, providerName, providerUrl, title = '', url = '' } = hProps;\n    return {\n        type: NodeTypes.embedBlock,\n        title,\n        url,\n        data: {\n            hName: 'embed',\n            hProperties: {\n                title,\n                url,\n                ...(favicon && { favicon }),\n                ...(html && { html }),\n                ...(image && { image }),\n                ...(providerName && { providerName }),\n                ...(providerUrl && { providerUrl }),\n            },\n        },\n        position,\n    };\n};\nconst COMPONENT_MAP = {\n    Callout: transformCallout,\n    Embed: transformEmbed,\n    Image: transformImage,\n    Recipe: transformRecipe,\n};\n/**\n * Transform mdxJsxFlowElement nodes and magic block nodes into proper MDAST node types.\n *\n * This transformer runs after mdxishComponentBlocks and converts:\n * - JSX component elements (Image, Callout, Embed, Recipe) into their corresponding MDAST types\n * - Magic block image nodes (type: 'image') into image-block\n * - Magic block embed nodes (type: 'embed') into embed-block\n * - Figure nodes containing images (from magic blocks with captions) - transforms the inner image\n *\n * This is controlled by the `newEditorTypes` flag to maintain backwards compatibility.\n */\nconst mdxishJsxToMdast = () => tree => {\n    // Transform JSX components (Image, Callout, Embed, Recipe)\n    visit(tree, 'mdxJsxFlowElement', (node, index, parent) => {\n        if (!parent || index === undefined || !node.name)\n            return;\n        const transformer = COMPONENT_MAP[node.name];\n        if (!transformer)\n            return;\n        const newNode = transformer(node);\n        // Replace the JSX node with the MDAST node\n        parent.children[index] = newNode;\n    });\n    // Transform magic block images (type: 'image') to image-block\n    // Note: Standard markdown images are wrapped in paragraphs and handled by imageTransformer\n    // Magic block images are direct children of root, so we handle them here\n    visit(tree, 'image', (node, index, parent) => {\n        if (!parent || index === undefined)\n            return SKIP;\n        // Skip images inside paragraphs (those are standard markdown images handled by imageTransformer)\n        if (parent.type === 'paragraph')\n            return SKIP;\n        const newNode = transformMagicBlockImage(node);\n        parent.children[index] = newNode;\n        return SKIP;\n    });\n    // Transform magic block embeds (type: 'embed') to embed-block\n    visit(tree, 'embed', (node, index, parent) => {\n        if (!parent || index === undefined)\n            return SKIP;\n        const newNode = transformMagicBlockEmbed(node);\n        parent.children[index] = newNode;\n        return SKIP;\n    });\n    // Transform images inside figure nodes (magic blocks with captions)\n    const isFigure = (node) => node.type === 'figure';\n    visit(tree, isFigure, node => {\n        // Find and transform the image child\n        node.children = node.children.map(child => {\n            if (child.type === 'image') {\n                return transformMagicBlockImage(child);\n            }\n            return child;\n        });\n    });\n    return tree;\n};\n/* harmony default export */ const mdxish_jsx_to_mdast = (mdxishJsxToMdast);\n\n;// ./processor/transform/mdxish/mdxish-mermaid.ts\n\n/**\n * Rehype plugin for mdxish pipeline to add mermaid-render className to mermaid code blocks.\n * The mermaid-render class is used to identify the mermaid diagrams elements for the\n * mermaid library to transform. See components/CodeTabs/index.tsx for context\n */\nconst mdxishMermaidTransformer = () => (tree) => {\n    visit(tree, 'element', (node) => {\n        if (node.tagName !== 'pre' || node.children.length !== 1)\n            return;\n        const [child] = node.children;\n        if (child.type === 'element' &&\n            child.tagName === 'code' &&\n            child.properties?.lang === 'mermaid') {\n            // Combine existing className with the new mermaid-render class\n            const existingClassName = node.properties?.className;\n            const classNameArray = Array.isArray(existingClassName)\n                ? existingClassName.filter(c => typeof c === 'string' || typeof c === 'number')\n                : existingClassName && (typeof existingClassName === 'string' || typeof existingClassName === 'number')\n                    ? [existingClassName]\n                    : [];\n            node.properties = {\n                ...node.properties,\n                className: ['mermaid-render', ...classNameArray],\n            };\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const mdxish_mermaid = (mdxishMermaidTransformer);\n\n;// ./lib/constants.ts\n/**\n * Pattern to match component tags (PascalCase or snake_case)\n */\nconst componentTagPattern = /<(\\/?[A-Z][A-Za-z0-9_]*)([^>]*?)(\\/?)>/g;\n\n;// ./processor/transform/mdxish/mdxish-snake-case-components.ts\n\n\n/**\n * Replaces snake_case component names with valid HTML placeholders.\n * Required because remark-parse rejects tags with underscores.\n * Example: `<Snake_case />` → `<MDXishSnakeCase0 />`\n *\n * Code blocks and inline code are protected and will not be transformed.\n *\n * @param content - The markdown content to process\n * @param options - Options including knownComponents to filter by\n */\nfunction processSnakeCaseComponent(content, options = {}) {\n    const { knownComponents } = options;\n    // Early exit if no potential snake_case components\n    if (!/[A-Z][A-Za-z0-9]*_[A-Za-z0-9_]*/.test(content)) {\n        return { content, mapping: {} };\n    }\n    // Step 1: Extract code blocks to protect them from transformation\n    const { protectedCode, protectedContent } = protectCodeBlocks(content);\n    // Find the highest existing placeholder number to avoid collisions\n    // e.g., if content has <MDXishSnakeCase0 />, start counter from 1\n    const placeholderPattern = /MDXishSnakeCase(\\d+)/g;\n    let startCounter = 0;\n    let placeholderMatch;\n    while ((placeholderMatch = placeholderPattern.exec(content)) !== null) {\n        const num = parseInt(placeholderMatch[1], 10);\n        if (num >= startCounter) {\n            startCounter = num + 1;\n        }\n    }\n    const mapping = {};\n    const reverseMap = new Map();\n    let counter = startCounter;\n    // Step 2: Transform snake_case components in non-code content\n    const processedContent = protectedContent.replace(componentTagPattern, (match, tagName, attrs, selfClosing) => {\n        if (!tagName.includes('_')) {\n            return match;\n        }\n        const isClosing = tagName.startsWith('/');\n        const cleanTagName = isClosing ? tagName.slice(1) : tagName;\n        // Only transform if it's a known component (or if no filter is provided)\n        if (knownComponents && !knownComponents.has(cleanTagName)) {\n            return match;\n        }\n        let placeholder = reverseMap.get(cleanTagName);\n        if (!placeholder) {\n            // eslint-disable-next-line no-plusplus\n            placeholder = `MDXishSnakeCase${counter++}`;\n            mapping[placeholder] = cleanTagName;\n            reverseMap.set(cleanTagName, placeholder);\n        }\n        const processedTagName = isClosing ? `/${placeholder}` : placeholder;\n        return `<${processedTagName}${attrs}${selfClosing}>`;\n    });\n    // Step 3: Restore code blocks (untouched)\n    const finalContent = restoreCodeBlocks(processedContent, protectedCode);\n    return {\n        content: finalContent,\n        mapping,\n    };\n}\n/**\n * Restores placeholder name to original snake_case name.\n * Uses case-insensitive matching since HTML parsers normalize to lowercase.\n */\nfunction restoreSnakeCase(placeholderName, mapping) {\n    if (mapping[placeholderName]) {\n        return mapping[placeholderName];\n    }\n    const lowerName = placeholderName.toLowerCase();\n    const matchingKey = Object.keys(mapping).find(key => key.toLowerCase() === lowerName);\n    return matchingKey ? mapping[matchingKey] : placeholderName;\n}\n\n;// ./processor/transform/mdxish/normalize-table-separator.ts\n/**\n * Preprocessor to normalize malformed GFM table separator syntax.\n *\n * Fixes the common mistake where the alignment colon is placed after the pipe\n * instead of before the dashes:\n *\n * Invalid: `|: ---` or `|:---` (colon after pipe)\n * Valid:   `| :---` (colon before dashes)\n *\n * Also handles right alignment:\n * Invalid: `| ---:| ` with space before pipe\n * Valid:   `| ---:|` (no space before closing pipe)\n *\n * This runs before remark-parse to ensure the table is recognized as a valid GFM table.\n */\n/**\n * Pattern to match a table separator row.\n * A separator row consists of cells that contain only dashes, colons (for alignment), and spaces.\n *\n * Valid GFM separator formats:\n * - `---` or `----` (no alignment, defaults to left)\n * - `:---` (left aligned)\n * - `---:` (right aligned)\n * - `:---:` (center aligned)\n *\n * Invalid formats this fixes:\n * - `|: ---` → `| :---` (colon wrongly placed after pipe)\n * - `|:---` → `| :---` (colon directly after pipe, missing space)\n * - `|::---` or `| ::---` → `| :---` (double colon typo)\n */\n// Match a line that looks like a table separator row\n// This regex captures the whole line if it contains only pipe-separated cells with dashes/colons\nconst TABLE_SEPARATOR_LINE_REGEX = /^(\\|[:\\s-]+)+\\|?\\s*$/;\n// Match malformed left-alignment: `|: ` or `|:` followed by dashes\n// Captures: group 1 = pipe, group 2 = spaces after colon, group 3 = dashes\nconst MALFORMED_LEFT_ALIGN_REGEX = /\\|:(\\s*)(-+)/g;\n// Match malformed double colon: `|::---` or `| ::---` → `| :---`\nconst MALFORMED_DOUBLE_COLON_REGEX = /\\|\\s*::(\\s*)(-+)/g;\n// Match malformed patterns with spaces before closing colons: `| --- : |` → `| ---: |`\nconst MALFORMED_RIGHT_ALIGN_SPACE_REGEX = /(-+)\\s+:(\\s*\\|)/g;\n// Match malformed center alignment with spaces: `| : --- : |` → `| :---: |`\nconst MALFORMED_CENTER_ALIGN_REGEX = /\\|:(\\s+)(-+)(\\s+):/g;\n/**\n * Normalizes a single table separator line.\n */\nfunction normalizeTableSeparatorLine(line) {\n    // Check if this line looks like a table separator\n    if (!TABLE_SEPARATOR_LINE_REGEX.test(line)) {\n        return line;\n    }\n    let normalized = line;\n    // Fix `|::---` → `| :---` (double colon typo)\n    // Must run before single colon fix to avoid partial replacement\n    normalized = normalized.replace(MALFORMED_DOUBLE_COLON_REGEX, '| :$2');\n    // Fix `|: ---` or `|:---` → `| :---`\n    // The colon should be adjacent to the dashes, not the pipe\n    normalized = normalized.replace(MALFORMED_LEFT_ALIGN_REGEX, '| :$2');\n    // Fix `| --- : |` → `| ---: |`\n    // Remove space before right-alignment colon\n    normalized = normalized.replace(MALFORMED_RIGHT_ALIGN_SPACE_REGEX, '$1:$2');\n    // Fix `| : --- : |` → `| :---: |`\n    // Remove spaces around center-aligned dashes\n    normalized = normalized.replace(MALFORMED_CENTER_ALIGN_REGEX, '| :$2:');\n    return normalized;\n}\n/**\n * Preprocesses markdown content to normalize malformed table separator syntax.\n *\n * @param content - The raw markdown content\n * @returns The content with normalized table separators\n */\nfunction normalizeTableSeparator(content) {\n    const lines = content.split('\\n');\n    const normalizedLines = lines.map((line, index) => {\n        const prevLine = index > 0 ? lines[index - 1] : '';\n        const isPrevLineTableRow = prevLine.trim().startsWith('|');\n        if (isPrevLineTableRow) {\n            return normalizeTableSeparatorLine(line);\n        }\n        return line;\n    });\n    return normalizedLines.join('\\n');\n}\n/* harmony default export */ const normalize_table_separator = ((/* unused pure expression or super */ null && (normalizeTableSeparator)));\n\n;// ./processor/transform/mdxish/restore-snake-case-component-name.ts\n\n\n/**\n * Restores snake_case component names from placeholders after parsing.\n * Runs after mdxishComponentBlocks converts HTML nodes to mdxJsxFlowElement.\n */\nconst restoreSnakeCaseComponentNames = (options) => {\n    const { mapping } = options;\n    return tree => {\n        if (!mapping || Object.keys(mapping).length === 0) {\n            return tree;\n        }\n        visit(tree, 'mdxJsxFlowElement', (node) => {\n            if (node.name) {\n                node.name = restoreSnakeCase(node.name, mapping);\n            }\n        });\n        // Pre-compile regex patterns for better performance\n        const regexPatterns = Object.entries(mapping).map(([placeholder, original]) => ({\n            regex: new RegExp(`(<\\\\/?)(${placeholder})(\\\\s|\\\\/?>)`, 'gi'),\n            original,\n        }));\n        visit(tree, 'html', (node) => {\n            if (node.value) {\n                let newValue = node.value;\n                regexPatterns.forEach(({ regex, original }) => {\n                    newValue = newValue.replace(regex, `$1${original}$3`);\n                });\n                if (newValue !== node.value) {\n                    node.value = newValue;\n                }\n            }\n        });\n        return tree;\n    };\n};\n/* harmony default export */ const restore_snake_case_component_name = (restoreSnakeCaseComponentNames);\n\n;// ./processor/transform/mdxish/retain-boolean-attributes.ts\n\n// Private Use Area character (U+E000) which is extremely unlikely to appear in real content.\nconst TEMP_TRUE_BOOLEAN_VALUE = 'readme-this-is-a-temporary-boolean-attribute-\\uE000';\nconst TEMP_FALSE_BOOLEAN_VALUE = 'readme-this-is-a-temporary-boolean-attribute-\\uE001';\n/**\n * Preserves boolean properties when passed to rehypeRaw because\n * rehypeRaw converts boolean properties in nodes to strings (e.g. true -> \"\"),\n * which can change the truthiness of the property. Hence we need to preserve the boolean properties.\n */\nconst preserveBooleanProperties = () => tree => {\n    visit(tree, 'element', (node) => {\n        if (!node.properties)\n            return;\n        Object.entries(node.properties).forEach(([key, value]) => {\n            if (typeof value === 'boolean') {\n                node.properties[key] = value ? TEMP_TRUE_BOOLEAN_VALUE : TEMP_FALSE_BOOLEAN_VALUE;\n            }\n        });\n    });\n    return tree;\n};\nconst restoreBooleanProperties = () => tree => {\n    visit(tree, 'element', (node) => {\n        if (!node.properties)\n            return;\n        Object.entries(node.properties).forEach(([key, value]) => {\n            if (value === TEMP_TRUE_BOOLEAN_VALUE) {\n                node.properties[key] = true;\n            }\n            else if (value === TEMP_FALSE_BOOLEAN_VALUE) {\n                node.properties[key] = false;\n            }\n        });\n    });\n    return tree;\n};\n\n\n;// ./processor/transform/mdxish/terminate-html-flow-blocks.ts\n\nconst STANDALONE_HTML_LINE_REGEX = /^(<[a-z][^<>]*>|<\\/[a-z][^<>]*>)+\\s*$/;\nconst HTML_LINE_WITH_CONTENT_REGEX = /^<[a-z][^<>]*>.*<\\/[a-z][^<>]*>(?:[^<]*)$/;\nfunction isLineHtml(line) {\n    return STANDALONE_HTML_LINE_REGEX.test(line) || HTML_LINE_WITH_CONTENT_REGEX.test(line);\n}\n/**\n * Preprocessor to terminate HTML flow blocks.\n *\n * In CommonMark, HTML blocks (types 6 and 7) only terminate on a blank line.\n * Without one, any content on the next line is consumed as part of the HTML block\n * and never parsed as its own construct. For example, a `[block:callout]` immediately\n * following `<div><p></p></div>` gets swallowed into the HTML flow token.\n *\n * @link https://spec.commonmark.org/0.29/#html-blocks\n *\n * This preprocessor inserts a blank line after standalone HTML lines when the\n * next line is non-blank and not an HTML construct (because they still might be part of the HTML flow),\n * ensuring micromark's HTML flow tokenizer terminates and subsequent content is parsed independently.\n *\n * Conditions:\n * 1. Only targets non-indented lines with lowercase tag names. Uppercase tags\n * (e.g., `<Table>`, `<MyComponent>`) are JSX custom components and don't\n * trigger CommonMark HTML blocks, so they are left untouched.\n * 2. Lines inside protected blocks (e.g., code blocks) should be left untouched.\n */\nfunction terminateHtmlFlowBlocks(content) {\n    const { protectedContent, protectedCode } = protectCodeBlocks(content);\n    const lines = protectedContent.split('\\n');\n    const result = [];\n    for (let i = 0; i < lines.length; i += 1) {\n        result.push(lines[i]);\n        // Skip blank & indented lines\n        if (i >= lines.length - 1 || lines[i + 1].trim().length === 0 || lines[i + 1].startsWith(' ') || lines[i + 1].startsWith('\\t')) {\n            // eslint-disable-next-line no-continue\n            continue;\n        }\n        const isCurrentLineHtml = isLineHtml(lines[i]);\n        const isNextLineHtml = isLineHtml(lines[i + 1]);\n        if (isCurrentLineHtml && !isNextLineHtml) {\n            result.push('');\n        }\n    }\n    return restoreCodeBlocks(result.join('\\n'), protectedCode);\n}\n\n// EXTERNAL MODULE: external \"@readme/variable\"\nvar variable_ = __webpack_require__(8167);\nvar variable_default = /*#__PURE__*/__webpack_require__.n(variable_);\n;// ./processor/transform/mdxish/variables-code.ts\n\n\n// Single combined regex so that resolved values from one pattern are never re-scanned by the other.\nconst COMBINED_VARIABLE_REGEX = new RegExp(`${variable_.VARIABLE_REGEXP}|${variable_.MDX_VARIABLE_REGEXP}`, 'giu');\n// Flatten variables into a single object for easy lookup\nfunction variables_code_flattenVariables(variables) {\n    if (!variables)\n        return {};\n    return {\n        ...Object.fromEntries((variables.defaults || []).map(d => [d.name, d.default])),\n        ...variables.user,\n    };\n}\nfunction resolveCodeVariables(value, resolvedVariables) {\n    return value.replace(COMBINED_VARIABLE_REGEX, (match, legacyName, mdxEscapePrefix, mdxVarName, mdxEscapeSuffix) => {\n        // Legacy variable: <<...>>\n        if (legacyName !== undefined) {\n            if (match.startsWith('\\\\<<') || match.endsWith('\\\\>>'))\n                return match;\n            const name = legacyName.trim();\n            if (name.startsWith('glossary:'))\n                return name.toUpperCase();\n            return name in resolvedVariables ? resolvedVariables[name] : name.toUpperCase();\n        }\n        // MDX variable: {user.*}\n        if (mdxEscapePrefix || mdxEscapeSuffix)\n            return match;\n        if (mdxVarName in resolvedVariables)\n            return resolvedVariables[mdxVarName];\n        const fullPath = match.slice(1, -1);\n        return fullPath.toUpperCase();\n    });\n}\n/**\n * A remark mdast plugin that resolves legacy variables <<...>> and MDX variables {user.*} inside code and inline code nodes\n * to their values. Uses regexes from the readme variable to search for variables in the code string.\n *\n * This is needed because variables in code blocks and inline cannot be tokenized, and also we need to maintain the code string\n * in the code nodes. This enables engine side variable resolution in codes which improves UX\n */\nconst variablesCodeResolver = ({ variables } = {}) => tree => {\n    const resolvedVariables = variables_code_flattenVariables(variables);\n    visit(tree, 'inlineCode', (node) => {\n        if (!node.value)\n            return;\n        node.value = resolveCodeVariables(node.value, resolvedVariables);\n    });\n    visit(tree, 'code', (node) => {\n        if (!node.value)\n            return;\n        const nextValue = resolveCodeVariables(node.value, resolvedVariables);\n        node.value = nextValue;\n        // Keep code-tabs/readme-components hProperties in sync with node.value\n        // because renderers read `value` from hProperties.\n        if (node.data?.hProperties && typeof node.data.hProperties === 'object') {\n            node.data.hProperties.value = nextValue;\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const variables_code = (variablesCodeResolver);\n\n;// ./processor/transform/mdxish/variables-text.ts\n\n\n/**\n * Matches {user.<field>} patterns:\n * - {user.name}\n * - {user.email}\n * - {user['field']}\n * - {user[\"field\"]}\n *\n * Captures the field name in group 1 (dot notation) or group 2 (bracket notation)\n */\nconst USER_VAR_REGEX = /\\{user\\.(\\w+)\\}|\\{user\\[['\"](\\w+)['\"]\\]\\}/g;\nfunction makeVariableNode(varName, rawValue) {\n    return {\n        type: NodeTypes.variable,\n        data: {\n            hName: 'Variable',\n            hProperties: { name: varName },\n        },\n        value: rawValue,\n    };\n}\n/**\n * A remark plugin that parses {user.<field>} patterns from text nodes and\n * mdxTextExpression nodes, creating Variable nodes for runtime resolution.\n *\n * Handles both:\n * - `text` nodes: when safeMode is true or after expression evaluation\n * - `mdxTextExpression` nodes: when mdxExpression has parsed {user.*} before evaluation\n *\n * Supports any user field: name, email, email_verified, exp, iat, etc.\n */\nconst variablesTextTransformer = () => tree => {\n    // Handle mdxTextExpression nodes (e.g. {user.name} parsed by mdxExpression)\n    visit(tree, 'mdxTextExpression', (node, index, parent) => {\n        if (index === undefined || !parent)\n            return;\n        const wrapped = `{${(node.value ?? '').trim()}}`; // Wrap the expression value in {} to match the USER_VAR_REGEX pattern\n        const matches = [...wrapped.matchAll(USER_VAR_REGEX)];\n        if (matches.length !== 1)\n            return;\n        const varName = matches[0][1] || matches[0][2];\n        parent.children.splice(index, 1, makeVariableNode(varName, wrapped));\n    });\n    visit(tree, 'text', (node, index, parent) => {\n        if (index === undefined || !parent)\n            return;\n        // Skip if inside inline code\n        if (parent.type === 'inlineCode')\n            return;\n        const text = node.value;\n        if (typeof text !== 'string' || !text.trim())\n            return;\n        if (!text.includes('{user.') && !text.includes('{user['))\n            return;\n        const matches = [...text.matchAll(USER_VAR_REGEX)];\n        if (matches.length === 0)\n            return;\n        const parts = [];\n        let lastIndex = 0;\n        matches.forEach(match => {\n            const matchIndex = match.index ?? 0;\n            // Add text before the match\n            if (matchIndex > lastIndex) {\n                parts.push({ type: 'text', value: text.slice(lastIndex, matchIndex) });\n            }\n            // Extract variable name from either capture group (dot or bracket notation)\n            const varName = match[1] || match[2];\n            parts.push(makeVariableNode(varName, match[0]));\n            lastIndex = matchIndex + match[0].length;\n        });\n        // Add remaining text after last match\n        if (lastIndex < text.length) {\n            parts.push({ type: 'text', value: text.slice(lastIndex) });\n        }\n        // Replace node with parts\n        if (parts.length > 1 || (parts.length === 1 && parts[0].type !== 'text')) {\n            parent.children.splice(index, 1, ...parts);\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const variables_text = (variablesTextTransformer);\n\n;// ./lib/mdast-util/magic-block/index.ts\nconst magic_block_contextMap = new WeakMap();\n/**\n * Find the magicBlock token in the token ancestry.\n */\nfunction findMagicBlockToken() {\n    // Walk up the token stack to find the magicBlock token\n    const events = this.tokenStack;\n    for (let i = events.length - 1; i >= 0; i -= 1) {\n        const token = events[i][0];\n        if (token.type === 'magicBlock') {\n            return token;\n        }\n    }\n    return undefined;\n}\n/**\n * Enter handler: Create a new magicBlock node.\n */\nfunction enterMagicBlock(token) {\n    // Initialize context for this magic block\n    magic_block_contextMap.set(token, { blockType: '', dataChunks: [] });\n    this.enter({\n        type: 'magicBlock',\n        blockType: '',\n        data: {},\n        value: '',\n    }, token);\n}\n/**\n * Exit handler for block type: Extract the block type from the token.\n */\nfunction exitMagicBlockType(token) {\n    const blockToken = findMagicBlockToken.call(this);\n    if (!blockToken)\n        return;\n    const context = magic_block_contextMap.get(blockToken);\n    if (context) {\n        context.blockType = this.sliceSerialize(token);\n    }\n}\n/**\n * Exit handler for block data: Accumulate JSON content chunks.\n */\nfunction exitMagicBlockData(token) {\n    const blockToken = findMagicBlockToken.call(this);\n    if (!blockToken)\n        return;\n    const context = magic_block_contextMap.get(blockToken);\n    if (context) {\n        context.dataChunks.push(this.sliceSerialize(token));\n    }\n}\n/**\n * Exit handler for line endings: Preserve newlines in multiline blocks.\n */\nfunction exitMagicBlockLineEnding(token) {\n    const blockToken = findMagicBlockToken.call(this);\n    if (!blockToken)\n        return;\n    const context = magic_block_contextMap.get(blockToken);\n    if (context) {\n        context.dataChunks.push(this.sliceSerialize(token));\n    }\n}\n/**\n * Exit handler for end marker: If this is a failed end marker check (not the final marker),\n * add its content to the data chunks so we don't lose characters like '['.\n */\nfunction exitMagicBlockMarkerEnd(token) {\n    const blockToken = findMagicBlockToken.call(this);\n    if (!blockToken)\n        return;\n    // Get the content of the marker\n    const markerContent = this.sliceSerialize(token);\n    // If this marker doesn't end with ']', it's a failed check and content belongs to data\n    // The successful end marker would be \"[/block]\"\n    if (!markerContent.endsWith(']') || markerContent !== '[/block]') {\n        const context = magic_block_contextMap.get(blockToken);\n        if (context) {\n            context.dataChunks.push(markerContent);\n        }\n    }\n}\n/**\n * Exit handler: Finalize the magicBlock node with parsed JSON data.\n */\nfunction exitMagicBlock(token) {\n    const context = magic_block_contextMap.get(token);\n    const node = this.stack[this.stack.length - 1];\n    if (context) {\n        const rawJson = context.dataChunks.join('');\n        node.blockType = context.blockType;\n        node.value = `[block:${context.blockType}]${rawJson}[/block]`;\n        // Parse JSON data\n        try {\n            node.data = JSON.parse(rawJson.trim());\n        }\n        catch {\n            // Invalid JSON - store empty object but keep the raw value\n            node.data = {};\n        }\n        // Clean up context\n        magic_block_contextMap.delete(token);\n    }\n    this.exit(token);\n}\n/**\n * Handler to serialize magicBlock nodes back to markdown.\n */\nconst handleMagicBlock = (node) => {\n    const magicNode = node;\n    // If we have the original raw value, use it\n    if (magicNode.value) {\n        return magicNode.value;\n    }\n    // Otherwise reconstruct from parsed data\n    const json = JSON.stringify(magicNode.data, null, 2);\n    return `[block:${magicNode.blockType}]\\n${json}\\n[/block]`;\n};\n/**\n * Create an extension for `mdast-util-from-markdown` to enable magic blocks.\n *\n * Converts micromark magic block tokens into `magicBlock` MDAST nodes.\n *\n * @returns Extension for `mdast-util-from-markdown`\n */\nfunction magicBlockFromMarkdown() {\n    return {\n        enter: {\n            magicBlock: enterMagicBlock,\n        },\n        exit: {\n            magicBlockType: exitMagicBlockType,\n            magicBlockData: exitMagicBlockData,\n            magicBlockLineEnding: exitMagicBlockLineEnding,\n            magicBlockMarkerEnd: exitMagicBlockMarkerEnd,\n            magicBlock: exitMagicBlock,\n        },\n    };\n}\n/**\n * Create an extension for `mdast-util-to-markdown` to serialize magic blocks.\n *\n * Converts `magicBlock` MDAST nodes back to `[block:TYPE]JSON[/block]` syntax.\n *\n * @returns Extension for `mdast-util-to-markdown`\n */\nfunction magicBlockToMarkdown() {\n    return {\n        handlers: {\n            magicBlock: handleMagicBlock,\n        },\n    };\n}\n\n;// ./lib/micromark/magic-block/syntax.ts\n\n\n/**\n * Known magic block types that the tokenizer will recognize.\n * Unknown types will not be tokenized as magic blocks.\n */\nconst KNOWN_BLOCK_TYPES = new Set([\n    'code',\n    'api-header',\n    'image',\n    'callout',\n    'parameters',\n    'table',\n    'embed',\n    'html',\n    'recipe',\n    'tutorial-tile',\n]);\n/**\n * Check if a character is valid for a magic block type identifier.\n * Types can contain alphanumeric characters and hyphens (e.g., \"api-header\", \"tutorial-tile\")\n */\nfunction isTypeChar(code) {\n    return asciiAlphanumeric(code) || code === codes.dash;\n}\n/**\n * Creates the opening marker state machine: [block:\n * Returns the first state function to start parsing.\n */\nfunction createOpeningMarkerParser(effects, nok, onComplete) {\n    const expectB = (code) => {\n        if (code !== codes.lowercaseB)\n            return nok(code);\n        effects.consume(code);\n        return expectL;\n    };\n    const expectL = (code) => {\n        if (code !== codes.lowercaseL)\n            return nok(code);\n        effects.consume(code);\n        return expectO;\n    };\n    const expectO = (code) => {\n        if (code !== codes.lowercaseO)\n            return nok(code);\n        effects.consume(code);\n        return expectC;\n    };\n    const expectC = (code) => {\n        if (code !== codes.lowercaseC)\n            return nok(code);\n        effects.consume(code);\n        return expectK;\n    };\n    const expectK = (code) => {\n        if (code !== codes.lowercaseK)\n            return nok(code);\n        effects.consume(code);\n        return expectColon;\n    };\n    const expectColon = (code) => {\n        if (code !== codes.colon)\n            return nok(code);\n        effects.consume(code);\n        effects.exit('magicBlockMarkerStart');\n        effects.enter('magicBlockType');\n        return onComplete;\n    };\n    return expectB;\n}\n/**\n * Creates the type capture state machine.\n * Captures type characters until ] and validates against known types.\n */\nfunction createTypeCaptureParser(effects, nok, onComplete, blockTypeRef) {\n    const captureTypeFirst = (code) => {\n        // Reject empty type name [block:]\n        if (code === codes.rightSquareBracket) {\n            return nok(code);\n        }\n        if (isTypeChar(code)) {\n            blockTypeRef.value += String.fromCharCode(code);\n            effects.consume(code);\n            return captureType;\n        }\n        return nok(code);\n    };\n    const captureType = (code) => {\n        if (code === codes.rightSquareBracket) {\n            if (!KNOWN_BLOCK_TYPES.has(blockTypeRef.value)) {\n                return nok(code);\n            }\n            effects.exit('magicBlockType');\n            effects.enter('magicBlockMarkerTypeEnd');\n            effects.consume(code);\n            effects.exit('magicBlockMarkerTypeEnd');\n            return onComplete;\n        }\n        if (isTypeChar(code)) {\n            blockTypeRef.value += String.fromCharCode(code);\n            effects.consume(code);\n            return captureType;\n        }\n        return nok(code);\n    };\n    return { first: captureTypeFirst, remaining: captureType };\n}\n/**\n * Creates the closing marker state machine: /block]\n * Handles partial matches by calling onMismatch to fall back to data capture.\n */\nfunction createClosingMarkerParser(effects, onSuccess, onMismatch, onEof, jsonState) {\n    const handleMismatch = (code) => {\n        if (jsonState && code === codes.quotationMark) {\n            jsonState.inString = true;\n        }\n        return onMismatch(code);\n    };\n    const expectSlash = (code) => {\n        if (code === null)\n            return onEof(code);\n        if (code !== codes.slash)\n            return handleMismatch(code);\n        effects.consume(code);\n        return expectB;\n    };\n    const expectB = (code) => {\n        if (code === null)\n            return onEof(code);\n        if (code !== codes.lowercaseB)\n            return handleMismatch(code);\n        effects.consume(code);\n        return expectL;\n    };\n    const expectL = (code) => {\n        if (code === null)\n            return onEof(code);\n        if (code !== codes.lowercaseL)\n            return handleMismatch(code);\n        effects.consume(code);\n        return expectO;\n    };\n    const expectO = (code) => {\n        if (code === null)\n            return onEof(code);\n        if (code !== codes.lowercaseO)\n            return handleMismatch(code);\n        effects.consume(code);\n        return expectC;\n    };\n    const expectC = (code) => {\n        if (code === null)\n            return onEof(code);\n        if (code !== codes.lowercaseC)\n            return handleMismatch(code);\n        effects.consume(code);\n        return expectK;\n    };\n    const expectK = (code) => {\n        if (code === null)\n            return onEof(code);\n        if (code !== codes.lowercaseK)\n            return handleMismatch(code);\n        effects.consume(code);\n        return expectBracket;\n    };\n    const expectBracket = (code) => {\n        if (code === null)\n            return onEof(code);\n        if (code !== codes.rightSquareBracket)\n            return handleMismatch(code);\n        effects.consume(code);\n        return onSuccess;\n    };\n    return { expectSlash };\n}\n/**\n * Partial construct for checking non-lazy continuation.\n * This is used by the flow tokenizer to check if we can continue\n * parsing on the next line.\n */\nconst syntax_nonLazyContinuation = {\n    partial: true,\n    tokenize: syntax_tokenizeNonLazyContinuation,\n};\n/**\n * Tokenizer for non-lazy continuation checking.\n * Returns ok if the next line is non-lazy (can continue), nok if lazy.\n */\nfunction syntax_tokenizeNonLazyContinuation(effects, ok, nok) {\n    const lineStart = (code) => {\n        // `this` here refers to the micromark parser\n        // since we are just passing functions as references and not actually calling them\n        // micromarks's internal parser will call this automatically with appropriate arguments\n        return this.parser.lazy[this.now().line] ? nok(code) : ok(code);\n    };\n    const start = (code) => {\n        if (code === null) {\n            return nok(code);\n        }\n        if (!markdownLineEnding(code)) {\n            return nok(code);\n        }\n        effects.enter('magicBlockLineEnding');\n        effects.consume(code);\n        effects.exit('magicBlockLineEnding');\n        return lineStart;\n    };\n    return start;\n}\n/**\n * Create a micromark extension for magic block syntax.\n *\n * This extension handles both single-line and multiline magic blocks:\n * - Flow construct (concrete): Handles block-level multiline magic blocks at document level\n * - Text construct: Handles inline magic blocks in lists, paragraphs, etc.\n *\n * The flow construct is marked as \"concrete\" which prevents it from being\n * interrupted by container markers (like `>` for blockquotes or `-` for lists).\n */\nfunction magicBlock() {\n    return {\n        // Flow construct - handles block-level magic blocks at document root\n        // Marked as concrete to prevent interruption by containers\n        flow: {\n            [codes.leftSquareBracket]: {\n                name: 'magicBlock',\n                concrete: true,\n                tokenize: tokenizeMagicBlockFlow,\n            },\n        },\n        // Text construct - handles magic blocks in inline contexts (lists, paragraphs)\n        text: {\n            [codes.leftSquareBracket]: {\n                name: 'magicBlock',\n                tokenize: tokenizeMagicBlockText,\n            },\n        },\n    };\n}\n/**\n * Flow tokenizer for block-level magic blocks (multiline).\n * Uses the continuation checking pattern from code fences.\n */\nfunction tokenizeMagicBlockFlow(effects, ok, nok) {\n    // State for tracking JSON content\n    const jsonState = { escapeNext: false, inString: false };\n    const blockTypeRef = { value: '' };\n    let seenOpenBrace = false;\n    // Create shared parsers for opening marker and type capture\n    const typeParser = createTypeCaptureParser(effects, nok, beforeData, blockTypeRef);\n    const openingMarkerParser = createOpeningMarkerParser(effects, nok, typeParser.first);\n    return start;\n    function start(code) {\n        if (code !== codes.leftSquareBracket)\n            return nok(code);\n        effects.enter('magicBlock');\n        effects.enter('magicBlockMarkerStart');\n        effects.consume(code);\n        return openingMarkerParser;\n    }\n    /**\n     * State before data content - handles line endings or starts data capture.\n     */\n    function beforeData(code) {\n        // EOF - magic block must be closed\n        if (code === null) {\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        // Line ending before any data - check continuation\n        if (markdownLineEnding(code)) {\n            return effects.check(syntax_nonLazyContinuation, continuationOkBeforeData, after)(code);\n        }\n        // Check for closing marker directly (without entering data)\n        // This handles cases like [block:type]\\n{}\\n\\n[/block] where there are\n        // newlines after the data object\n        if (code === codes.leftSquareBracket) {\n            effects.enter('magicBlockMarkerEnd');\n            effects.consume(code);\n            return expectSlashFromContinuation;\n        }\n        // If we've already seen the opening brace, just continue capturing data\n        if (seenOpenBrace) {\n            effects.enter('magicBlockData');\n            return captureData(code);\n        }\n        // Skip whitespace (spaces/tabs) before the data - stay in beforeData\n        // Don't enter magicBlockData token yet until we confirm there's a '{'\n        if (code === codes.space || code === codes.horizontalTab) {\n            return beforeDataWhitespace(code);\n        }\n        // Data must start with '{' for valid JSON\n        if (code !== codes.leftCurlyBrace) {\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        // We have '{' - enter data token and start capturing\n        seenOpenBrace = true;\n        effects.enter('magicBlockData');\n        return captureData(code);\n    }\n    /**\n     * Consume whitespace before the data without creating a token.\n     * Uses a temporary token to satisfy micromark's requirement.\n     */\n    function beforeDataWhitespace(code) {\n        if (code === null) {\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (markdownLineEnding(code)) {\n            return effects.check(syntax_nonLazyContinuation, continuationOkBeforeData, after)(code);\n        }\n        if (code === codes.space || code === codes.horizontalTab) {\n            // We need to consume this but can't without a token - use magicBlockData\n            // and track that we haven't seen '{' yet\n            effects.enter('magicBlockData');\n            effects.consume(code);\n            return beforeDataWhitespaceContinue;\n        }\n        if (code === codes.leftCurlyBrace) {\n            seenOpenBrace = true;\n            effects.enter('magicBlockData');\n            return captureData(code);\n        }\n        effects.exit('magicBlock');\n        return nok(code);\n    }\n    /**\n     * Continue consuming whitespace or validate the opening brace.\n     */\n    function beforeDataWhitespaceContinue(code) {\n        if (code === null) {\n            effects.exit('magicBlockData');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (markdownLineEnding(code)) {\n            effects.exit('magicBlockData');\n            return effects.check(syntax_nonLazyContinuation, continuationOk, after)(code);\n        }\n        if (code === codes.space || code === codes.horizontalTab) {\n            effects.consume(code);\n            return beforeDataWhitespaceContinue;\n        }\n        if (code === codes.leftCurlyBrace) {\n            seenOpenBrace = true;\n            return captureData(code);\n        }\n        effects.exit('magicBlockData');\n        effects.exit('magicBlock');\n        return nok(code);\n    }\n    /**\n     * Continuation OK before we've entered data token.\n     */\n    function continuationOkBeforeData(code) {\n        effects.enter('magicBlockLineEnding');\n        effects.consume(code);\n        effects.exit('magicBlockLineEnding');\n        return beforeData; // Stay in beforeData state - don't enter magicBlockData yet\n    }\n    function captureData(code) {\n        // EOF - magic block must be closed\n        if (code === null) {\n            effects.exit('magicBlockData');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        // At line ending, check if we can continue on the next line\n        if (markdownLineEnding(code)) {\n            effects.exit('magicBlockData');\n            return effects.check(syntax_nonLazyContinuation, continuationOk, after)(code);\n        }\n        if (jsonState.escapeNext) {\n            jsonState.escapeNext = false;\n            effects.consume(code);\n            return captureData;\n        }\n        if (jsonState.inString) {\n            if (code === codes.backslash) {\n                jsonState.escapeNext = true;\n                effects.consume(code);\n                return captureData;\n            }\n            if (code === codes.quotationMark) {\n                jsonState.inString = false;\n            }\n            effects.consume(code);\n            return captureData;\n        }\n        if (code === codes.quotationMark) {\n            jsonState.inString = true;\n            effects.consume(code);\n            return captureData;\n        }\n        if (code === codes.leftSquareBracket) {\n            effects.exit('magicBlockData');\n            effects.enter('magicBlockMarkerEnd');\n            effects.consume(code);\n            return expectSlash;\n        }\n        effects.consume(code);\n        return captureData;\n    }\n    /**\n     * Called when non-lazy continuation check passes - we can continue parsing.\n     */\n    function continuationOk(code) {\n        // Consume the line ending\n        effects.enter('magicBlockLineEnding');\n        effects.consume(code);\n        effects.exit('magicBlockLineEnding');\n        return continuationStart;\n    }\n    /**\n     * Start of continuation line - check for more line endings, closing marker, or start capturing data.\n     */\n    function continuationStart(code) {\n        // Handle consecutive line endings\n        if (code === null) {\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (markdownLineEnding(code)) {\n            return effects.check(syntax_nonLazyContinuation, continuationOkBeforeData, after)(code);\n        }\n        // Check if this is the start of the closing marker [/block]\n        // If so, handle it directly without entering magicBlockData\n        if (code === codes.leftSquareBracket) {\n            effects.enter('magicBlockMarkerEnd');\n            effects.consume(code);\n            return expectSlashFromContinuation;\n        }\n        effects.enter('magicBlockData');\n        return captureData(code);\n    }\n    /**\n     * Check for closing marker slash when coming from continuation.\n     * If not a closing marker, create an empty data token and continue.\n     */\n    function expectSlashFromContinuation(code) {\n        if (code === null) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (markdownLineEnding(code)) {\n            effects.exit('magicBlockMarkerEnd');\n            return effects.check(syntax_nonLazyContinuation, continuationOkBeforeData, after)(code);\n        }\n        if (code === codes.slash) {\n            effects.consume(code);\n            return expectClosingB;\n        }\n        // Not a closing marker - this is data content\n        // Exit marker and enter data\n        effects.exit('magicBlockMarkerEnd');\n        effects.enter('magicBlockData');\n        // The [ was consumed by the marker, so we need to conceptually \"have it\" in our data\n        // But since we already consumed it into the marker, we need a different approach\n        // Re-classify: consume this character as data and continue\n        if (code === codes.quotationMark)\n            jsonState.inString = true;\n        effects.consume(code);\n        return captureData;\n    }\n    function expectSlash(code) {\n        if (code === null) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        // At line ending during marker parsing\n        if (markdownLineEnding(code)) {\n            effects.exit('magicBlockMarkerEnd');\n            return effects.check(syntax_nonLazyContinuation, continuationOk, after)(code);\n        }\n        if (code !== codes.slash) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.enter('magicBlockData');\n            if (code === codes.quotationMark)\n                jsonState.inString = true;\n            effects.consume(code);\n            return captureData;\n        }\n        effects.consume(code);\n        return expectClosingB;\n    }\n    function expectClosingB(code) {\n        if (code === null) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (code !== codes.lowercaseB) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.enter('magicBlockData');\n            if (code === codes.quotationMark)\n                jsonState.inString = true;\n            effects.consume(code);\n            return captureData;\n        }\n        effects.consume(code);\n        return expectClosingL;\n    }\n    function expectClosingL(code) {\n        if (code === null) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (code !== codes.lowercaseL) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.enter('magicBlockData');\n            if (code === codes.quotationMark)\n                jsonState.inString = true;\n            effects.consume(code);\n            return captureData;\n        }\n        effects.consume(code);\n        return expectClosingO;\n    }\n    function expectClosingO(code) {\n        if (code === null) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (code !== codes.lowercaseO) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.enter('magicBlockData');\n            if (code === codes.quotationMark)\n                jsonState.inString = true;\n            effects.consume(code);\n            return captureData;\n        }\n        effects.consume(code);\n        return expectClosingC;\n    }\n    function expectClosingC(code) {\n        if (code === null) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (code !== codes.lowercaseC) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.enter('magicBlockData');\n            if (code === codes.quotationMark)\n                jsonState.inString = true;\n            effects.consume(code);\n            return captureData;\n        }\n        effects.consume(code);\n        return expectClosingK;\n    }\n    function expectClosingK(code) {\n        if (code === null) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (code !== codes.lowercaseK) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.enter('magicBlockData');\n            if (code === codes.quotationMark)\n                jsonState.inString = true;\n            effects.consume(code);\n            return captureData;\n        }\n        effects.consume(code);\n        return expectClosingBracket;\n    }\n    function expectClosingBracket(code) {\n        if (code === null) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.exit('magicBlock');\n            return nok(code);\n        }\n        if (code !== codes.rightSquareBracket) {\n            effects.exit('magicBlockMarkerEnd');\n            effects.enter('magicBlockData');\n            if (code === codes.quotationMark)\n                jsonState.inString = true;\n            effects.consume(code);\n            return captureData;\n        }\n        effects.consume(code);\n        effects.exit('magicBlockMarkerEnd');\n        // Check for trailing whitespace on the same line\n        return consumeTrailing;\n    }\n    /**\n     * Consume trailing whitespace (spaces/tabs) on the same line after [/block].\n     * For concrete flow constructs, we must end at eol/eof or fail.\n     * Trailing whitespace is consumed; other content causes nok (text tokenizer handles it).\n     */\n    function consumeTrailing(code) {\n        // End of file - done\n        if (code === null) {\n            effects.exit('magicBlock');\n            return ok(code);\n        }\n        // Line ending - done\n        if (markdownLineEnding(code)) {\n            effects.exit('magicBlock');\n            return ok(code);\n        }\n        // Space or tab - consume as trailing whitespace\n        if (code === codes.space || code === codes.horizontalTab) {\n            effects.enter('magicBlockTrailing');\n            effects.consume(code);\n            return consumeTrailingContinue;\n        }\n        // Any other character - fail flow tokenizer, let text tokenizer handle it\n        effects.exit('magicBlock');\n        return nok(code);\n    }\n    /**\n     * Continue consuming trailing whitespace.\n     */\n    function consumeTrailingContinue(code) {\n        // End of file - done\n        if (code === null) {\n            effects.exit('magicBlockTrailing');\n            effects.exit('magicBlock');\n            return ok(code);\n        }\n        // Line ending - done\n        if (markdownLineEnding(code)) {\n            effects.exit('magicBlockTrailing');\n            effects.exit('magicBlock');\n            return ok(code);\n        }\n        // More space or tab - keep consuming\n        if (code === codes.space || code === codes.horizontalTab) {\n            effects.consume(code);\n            return consumeTrailingContinue;\n        }\n        // Non-whitespace after whitespace - fail flow tokenizer\n        effects.exit('magicBlockTrailing');\n        effects.exit('magicBlock');\n        return nok(code);\n    }\n    /**\n     * Called when we can't continue (lazy line or EOF) - exit the construct.\n     */\n    function after(code) {\n        effects.exit('magicBlock');\n        return nok(code);\n    }\n}\n/**\n * Text tokenizer for single-line magic blocks only.\n * Used in inline contexts like list items and paragraphs.\n * Multiline blocks are handled by the flow tokenizer.\n */\nfunction tokenizeMagicBlockText(effects, ok, nok) {\n    // State for tracking JSON content\n    const jsonState = { escapeNext: false, inString: false };\n    const blockTypeRef = { value: '' };\n    let seenOpenBrace = false;\n    // Create shared parsers for opening marker and type capture\n    const typeParser = createTypeCaptureParser(effects, nok, beforeData, blockTypeRef);\n    const openingMarkerParser = createOpeningMarkerParser(effects, nok, typeParser.first);\n    // Success handler for closing marker - exits tokens and returns ok\n    const closingSuccess = (code) => {\n        effects.exit('magicBlockMarkerEnd');\n        effects.exit('magicBlock');\n        return ok(code);\n    };\n    // Mismatch handler - falls back to data capture\n    const closingMismatch = (code) => {\n        effects.exit('magicBlockMarkerEnd');\n        effects.enter('magicBlockData');\n        if (code === codes.quotationMark)\n            jsonState.inString = true;\n        effects.consume(code);\n        return captureData;\n    };\n    // EOF handler\n    const closingEof = (_code) => nok(_code);\n    // Create closing marker parsers\n    const closingFromBeforeData = createClosingMarkerParser(effects, closingSuccess, closingMismatch, closingEof, jsonState);\n    const closingFromData = createClosingMarkerParser(effects, closingSuccess, closingMismatch, closingEof, jsonState);\n    return start;\n    function start(code) {\n        if (code !== codes.leftSquareBracket)\n            return nok(code);\n        effects.enter('magicBlock');\n        effects.enter('magicBlockMarkerStart');\n        effects.consume(code);\n        return openingMarkerParser;\n    }\n    /**\n     * State before data content - handles line endings before entering data token.\n     * Whitespace before '{' is allowed.\n     */\n    function beforeData(code) {\n        // Fail on EOF - magic block must be closed\n        if (code === null) {\n            return nok(code);\n        }\n        // Handle line endings before any data - consume them without entering data token\n        if (markdownLineEnding(code)) {\n            effects.enter('magicBlockLineEnding');\n            effects.consume(code);\n            effects.exit('magicBlockLineEnding');\n            return beforeData;\n        }\n        // Check for closing marker directly (without entering data)\n        if (code === codes.leftSquareBracket) {\n            effects.enter('magicBlockMarkerEnd');\n            effects.consume(code);\n            return closingFromBeforeData.expectSlash;\n        }\n        // If we've already seen the opening brace, just continue capturing data\n        if (seenOpenBrace) {\n            effects.enter('magicBlockData');\n            return captureData(code);\n        }\n        // Skip whitespace (spaces/tabs) before the data\n        if (code === codes.space || code === codes.horizontalTab) {\n            return beforeDataWhitespace(code);\n        }\n        // Data must start with '{' for valid JSON\n        if (code !== codes.leftCurlyBrace) {\n            return nok(code);\n        }\n        // We have '{' - enter data token and start capturing\n        seenOpenBrace = true;\n        effects.enter('magicBlockData');\n        return captureData(code);\n    }\n    /**\n     * Consume whitespace before the data.\n     */\n    function beforeDataWhitespace(code) {\n        if (code === null) {\n            return nok(code);\n        }\n        if (markdownLineEnding(code)) {\n            effects.enter('magicBlockLineEnding');\n            effects.consume(code);\n            effects.exit('magicBlockLineEnding');\n            return beforeData;\n        }\n        if (code === codes.space || code === codes.horizontalTab) {\n            effects.enter('magicBlockData');\n            effects.consume(code);\n            return beforeDataWhitespaceContinue;\n        }\n        if (code === codes.leftCurlyBrace) {\n            seenOpenBrace = true;\n            effects.enter('magicBlockData');\n            return captureData(code);\n        }\n        return nok(code);\n    }\n    /**\n     * Continue consuming whitespace or validate the opening brace.\n     */\n    function beforeDataWhitespaceContinue(code) {\n        if (code === null) {\n            effects.exit('magicBlockData');\n            return nok(code);\n        }\n        if (markdownLineEnding(code)) {\n            effects.exit('magicBlockData');\n            effects.enter('magicBlockLineEnding');\n            effects.consume(code);\n            effects.exit('magicBlockLineEnding');\n            return beforeData;\n        }\n        if (code === codes.space || code === codes.horizontalTab) {\n            effects.consume(code);\n            return beforeDataWhitespaceContinue;\n        }\n        if (code === codes.leftCurlyBrace) {\n            seenOpenBrace = true;\n            return captureData(code);\n        }\n        effects.exit('magicBlockData');\n        return nok(code);\n    }\n    function captureData(code) {\n        // Fail on EOF - magic block must be closed\n        if (code === null) {\n            effects.exit('magicBlockData');\n            return nok(code);\n        }\n        // Handle multiline magic blocks within text/paragraphs\n        // Exit data, consume line ending with proper token, then re-enter data\n        if (markdownLineEnding(code)) {\n            effects.exit('magicBlockData');\n            effects.enter('magicBlockLineEnding');\n            effects.consume(code);\n            effects.exit('magicBlockLineEnding');\n            return beforeData; // Go back to beforeData to handle potential empty lines\n        }\n        if (jsonState.escapeNext) {\n            jsonState.escapeNext = false;\n            effects.consume(code);\n            return captureData;\n        }\n        if (jsonState.inString) {\n            if (code === codes.backslash) {\n                jsonState.escapeNext = true;\n                effects.consume(code);\n                return captureData;\n            }\n            if (code === codes.quotationMark) {\n                jsonState.inString = false;\n            }\n            effects.consume(code);\n            return captureData;\n        }\n        if (code === codes.quotationMark) {\n            jsonState.inString = true;\n            effects.consume(code);\n            return captureData;\n        }\n        if (code === codes.leftSquareBracket) {\n            effects.exit('magicBlockData');\n            effects.enter('magicBlockMarkerEnd');\n            effects.consume(code);\n            return closingFromData.expectSlash;\n        }\n        effects.consume(code);\n        return captureData;\n    }\n}\n/* harmony default export */ const syntax = ((/* unused pure expression or super */ null && (magicBlock)));\n\n;// ./lib/micromark/magic-block/index.ts\n/**\n * Micromark extension for magic block syntax.\n *\n * Usage:\n * ```ts\n * import { magicBlock } from './lib/micromark/magic-block';\n *\n * const processor = unified()\n *   .data('micromarkExtensions', [magicBlock()])\n * ```\n */\n\n\n;// ./lib/utils/mdxish/mdxish-load-components.ts\n\n\n/**\n * Load components from the components directory and wrap them in RMDXModule format\n * Similar to prototype.js getAvailableComponents, but for React components instead of MDX files\n * This allows mix to use React components directly without MDX compilation\n */\nfunction loadComponents() {\n    const components = {};\n    // Iterate through all exported components from components/index.ts\n    // This mirrors prototype.js approach of getting all available components\n    Object.entries(components_namespaceObject).forEach(([name, Component]) => {\n        // Skip non-component exports (React components are functions or objects)\n        // Also skip falsy values (null, undefined, etc.) since typeof null === 'object'\n        if (!Component || (typeof Component !== 'function' && typeof Component !== 'object')) {\n            return;\n        }\n        // Wrap the component in RMDXModule format\n        // RMDXModule expects: { default: Component, Toc: null, toc: [] }\n        // getComponent looks for mod.default, so we wrap each component\n        // MDXContent must be a function (props: MDXProps) => Element\n        const wrappedModule = {\n            default: (props) => external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Component, props),\n            Toc: null,\n            toc: [],\n        };\n        components[name] = wrappedModule;\n    });\n    return components;\n}\n\n;// ./lib/mdxish.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst defaultTransformers = [callouts, code_tabs, gemoji_, transform_embeds];\n/**\n * Preprocessing pipeline: applies string-level transformations to work around\n * CommonMark/remark limitations and reach parity with legacy (rdmd) rendering.\n *\n * Runs a series of string-level transformations before micromark/remark parsing:\n * 1. Normalize malformed table separator syntax (e.g., `|: ---` → `| :---`)\n * 2. Terminate HTML flow blocks so subsequent content isn't swallowed\n * 3. Evaluate JSX expressions in attributes (unless safeMode)\n * 4. Replace snake_case component names with parser-safe placeholders\n */\nfunction preprocessContent(content, opts) {\n    const { safeMode, jsxContext, knownComponents } = opts;\n    let result = normalizeTableSeparator(content);\n    result = terminateHtmlFlowBlocks(result);\n    result = safeMode ? result : preprocessJSXExpressions(result, jsxContext);\n    return processSnakeCaseComponent(result, { knownComponents });\n}\nfunction mdxishAstProcessor(mdContent, opts = {}) {\n    const { components: userComponents = {}, jsxContext = {}, newEditorTypes = false, safeMode = false, useTailwind, } = opts;\n    const components = {\n        ...loadComponents(),\n        ...userComponents,\n    };\n    // Build set of known component names for snake_case filtering\n    const knownComponents = new Set(Object.keys(components));\n    const { content: parserReadyContent, mapping: snakeCaseMapping } = preprocessContent(mdContent, {\n        safeMode,\n        jsxContext,\n        knownComponents,\n    });\n    // Create string map for tailwind transformer\n    const tempComponentsMap = Object.entries(components).reduce((acc, [key, value]) => {\n        acc[key] = String(value);\n        return acc;\n    }, {});\n    // Get mdxExpression extension and remove its flow construct to prevent\n    // `{...}` from interrupting paragraphs (which breaks multiline magic blocks)\n    const mdxExprExt = mdxExpression({ allowEmpty: true });\n    const mdxExprTextOnly = {\n        text: mdxExprExt.text,\n    };\n    const processor = unified()\n        .data('micromarkExtensions', safeMode ? [magicBlock(), legacyVariable()] : [magicBlock(), mdxExprTextOnly, legacyVariable()])\n        .data('fromMarkdownExtensions', safeMode\n        ? [magicBlockFromMarkdown(), legacyVariableFromMarkdown()]\n        : [magicBlockFromMarkdown(), mdxExpressionFromMarkdown(), legacyVariableFromMarkdown()])\n        .use(remarkParse)\n        .use(remarkFrontmatter)\n        .use(normalize_malformed_md_syntax)\n        .use(magic_block_transformer)\n        .use(transform_images, { isMdxish: true })\n        .use(defaultTransformers)\n        .use(mdxish_component_blocks)\n        .use(restore_snake_case_component_name, { mapping: snakeCaseMapping })\n        .use(mdxish_tables)\n        .use(mdxish_html_blocks)\n        .use(newEditorTypes ? mdxish_jsx_to_mdast : undefined) // Convert JSX elements to MDAST types\n        .use(variables_text) // Parse {user.*} patterns from text nodes\n        .use(useTailwind ? transform_tailwind : undefined, { components: tempComponentsMap })\n        .use(remarkGfm);\n    return {\n        processor,\n        /**\n         * @todo we need to return this transformed content for now\n         * but ultimately need to properly tokenize our special markdown syntax\n         * into hast nodes instead of relying on transformed content\n         */\n        parserReadyContent,\n    };\n}\n/**\n * Converts an Mdast to a Markdown string.\n */\nfunction mdxishMdastToMd(mdast) {\n    const md = unified()\n        .use(remarkGfm)\n        .use(mdxishCompilers)\n        .use(remarkStringify, {\n        bullet: '-',\n        emphasis: '_',\n    })\n        .stringify(mdast);\n    return md;\n}\n/**\n * Processes markdown content with MDX syntax support and returns a HAST.\n * Detects and renders custom component tags from the components hash.\n *\n * @see {@link https://github.com/readmeio/rmdx/blob/main/docs/mdxish-flow.md}\n */\nfunction mdxish(mdContent, opts = {}) {\n    const { components: userComponents = {}, jsxContext = {}, safeMode = false, variables } = opts;\n    const components = {\n        ...loadComponents(),\n        ...userComponents,\n    };\n    // Remove JSX comments before processing (protect code blocks first)\n    const { protectedCode, protectedContent } = protectCodeBlocks(mdContent);\n    const withoutComments = removeJSXComments(protectedContent);\n    const contentWithoutComments = restoreCodeBlocks(withoutComments, protectedCode);\n    const { processor, parserReadyContent } = mdxishAstProcessor(contentWithoutComments, opts);\n    processor\n        .use(safeMode ? undefined : evaluate_expressions, { context: jsxContext }) // Evaluate MDX expressions using jsxContext\n        .use(remarkBreaks)\n        .use(variables_code, { variables }) // Resolve <<...>> and {user.*} inside code and inline code nodes\n        .use(remarkRehype, { allowDangerousHtml: true, handlers: mdxComponentHandlers })\n        .use(preserveBooleanProperties) // RehypeRaw converts boolean properties to empty strings\n        .use(rehypeRaw, { passThrough: ['html-block'] })\n        .use(restoreBooleanProperties)\n        .use(mdxish_mermaid) // Add mermaid-render className to pre wrappers\n        .use(heading_slugs)\n        .use(rehypeMdxishComponents, {\n        components,\n        processMarkdown: (markdown) => mdxish(markdown, opts),\n    });\n    const vfile = new VFile({ value: parserReadyContent });\n    const hast = processor.runSync(processor.parse(parserReadyContent), vfile);\n    if (!hast) {\n        throw new Error('Markdown pipeline did not produce a HAST tree.');\n    }\n    return hast;\n}\n/* harmony default export */ const lib_mdxish = (mdxish);\n\n;// ./lib/mix.ts\n\n\n\n/** Wrapper around mdxish that returns an HTML string instead of a HAST tree. */\nconst mix = (text, opts = {}) => {\n    const hast = mdxish(text, opts);\n    return String(unified().use(rehypeStringify).stringify(hast));\n};\n/* harmony default export */ const lib_mix = (mix);\n\n;// ./processor/transform/migrate-callouts.ts\n\n\nconst migrateCallouts = () => (tree) => {\n    visit(tree, 'rdme-callout', callout => {\n        const firstChild = callout.children?.[0];\n        // This will retain the value of the node if it is not a paragraph, e.g. an HTML node\n        if (firstChild && firstChild.type === 'paragraph') {\n            callout.children[0] = wrapHeading(callout);\n        }\n    });\n    return tree;\n};\n/* harmony default export */ const migrate_callouts = (migrateCallouts);\n\n;// ./processor/transform/migrate-html-blocks.ts\n\nconst MigrateHtmlBlocks = () => tree => {\n    visit(tree, 'html-block', (node) => {\n        const { html, runScripts } = node.data?.hProperties || {};\n        const escaped = html.replaceAll(/\\\\/g, '\\\\\\\\');\n        node.data.hProperties = {\n            ...(runScripts && { runScripts }),\n            html: escaped,\n        };\n    });\n    return tree;\n};\n/* harmony default export */ const migrate_html_blocks = (MigrateHtmlBlocks);\n\n;// ./processor/transform/migrate-html-tags.ts\n\n// Add more visits to migrate other HTML tags here\nconst migrateHtmlTags = () => (tree) => {\n    // A common issue is that <br> tags are not properly closed\n    visit(tree, 'html', htmlNode => {\n        htmlNode.value = htmlNode.value.replaceAll(/<br(?!\\s*\\/>)([^>]*?)>/g, '<br$1 />');\n    });\n};\n/* harmony default export */ const migrate_html_tags = (migrateHtmlTags);\n\n;// ./processor/transform/migrate-link-references.ts\n\n\nconst migrateLinkReferences = ({ rdmd }) => {\n    return (tree) => {\n        visit(tree, 'linkReference', (node, index, parent) => {\n            if (!('children' in parent))\n                return;\n            parent.children.splice(index, 1, {\n                type: NodeTypes.plain,\n                value: rdmd.md(node).trim(),\n            });\n        });\n    };\n};\n/* harmony default export */ const migrate_link_references = (migrateLinkReferences);\n\n;// ./lib/utils/migrateComments.ts\nconst COMMENT_BLOCK_REGEX = /{\\/\\*([\\s\\S]*?)\\*\\/}/g;\nconst migrateComments = (doc, migrateDoc, opts) => {\n    return doc.replace(COMMENT_BLOCK_REGEX, (match, contents) => {\n        // Preserve leading and trailing whitespace\n        const leadingWhitespace = contents.match(/^\\s*/)?.[0] ?? '';\n        const trailingWhitespace = contents.match(/\\s*$/)?.[0] ?? '';\n        const inner = contents.slice(leadingWhitespace.length, contents.length - trailingWhitespace.length);\n        // Skip empty comments\n        if (!inner.trim())\n            return match;\n        // Compile the inner content through the migration pipeline\n        let compiled;\n        try {\n            compiled = migrateDoc(inner, opts);\n            // Trim trailing whitespace only if inner content had no newlines\n            if (!/\\r|\\n/.test(inner)) {\n                compiled = compiled.trimEnd();\n            }\n        }\n        catch {\n            return match;\n        }\n        // Recursively process any nested comments\n        const processed = migrateComments(compiled, migrateDoc, opts);\n        return `{/*${leadingWhitespace}${processed}${trailingWhitespace}*/}`;\n    });\n};\n/* harmony default export */ const utils_migrateComments = (migrateComments);\n\n;// ./lib/migrate.ts\n\n\n\n\n\n\n\nconst migrateDoc = (doc, { rdmd }) => {\n    const ast = lib_mdastV6(doc, { rdmd });\n    return (lib_mdx(ast, {\n        remarkTransformers: [migrate_callouts, [migrate_link_references, { rdmd }], migrate_html_tags, migrate_html_blocks],\n        file: doc,\n    })\n        .replaceAll(/&#x20;/g, ' ')\n        // @note: I'm not sure what's happening, but I think mdx is converting an\n        // 'a' to '&#x61;' as a means of escaping it. I think this helps with\n        // parsing weird cases.\n        .replaceAll(/&#x61;/g, 'a'));\n};\nconst migrate = (doc, opts) => {\n    const migratedDoc = migrateDoc(doc, opts);\n    const migratedDocAndComments = utils_migrateComments(migratedDoc, migrateDoc, opts);\n    return migratedDocAndComments;\n};\n/* harmony default export */ const lib_migrate = (migrate);\n\n// EXTERNAL MODULE: ./node_modules/rehype-react/index.js\nvar rehype_react = __webpack_require__(26);\nvar rehype_react_default = /*#__PURE__*/__webpack_require__.n(rehype_react);\n;// ./contexts/index.tsx\n\n\n\n\n\n\nconst compose = (children, ...contexts) => {\n    return contexts.reduce((content, [Context, value]) => {\n        return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Context.Provider, { value: value }, content);\n    }, children);\n};\nconst Contexts = ({ children, terms = [], variables = { user: {}, defaults: [] }, baseUrl = '/', theme, copyButtons }) => {\n    return compose(children, [GlossaryTerms, terms], [variable_.VariablesContext, variables], [BaseUrl, baseUrl], [Theme, theme], [CodeOpts, copyButtons]);\n};\n/* harmony default export */ const contexts = (Contexts);\n\n;// ./lib/utils/makeUseMdxComponents.ts\n\n\nconst makeUseMDXComponents = (more = {}) => {\n    const headings = Array.from({ length: 6 }).reduce((map, _, index) => {\n        map[`h${index + 1}`] = components_Heading((index + 1));\n        return map;\n    }, {});\n    const components = {\n        ...components_namespaceObject,\n        Variable: (variable_default()),\n        code: components_Code,\n        embed: components_Embed,\n        img: components_Image,\n        table: components_Table,\n        'code-tabs': components_CodeTabs,\n        'embed-block': components_Embed,\n        'html-block': components_HTMLBlock,\n        'image-block': components_Image,\n        'table-of-contents': components_TableOfContents,\n        // Ensures backwards compatibility with historical TutorialTile component\n        TutorialTile: components_Recipe,\n        ...headings,\n        ...more,\n    };\n    return (() => components);\n};\n/* harmony default export */ const makeUseMdxComponents = (makeUseMDXComponents);\n\n;// ./lib/utils/mdxish/mdxish-render-utils.tsx\n\n\n\n\n\n\n\n\n/**\n * Parse JSON-marked string values in props back to their original types.\n * This handles arrays and objects that were serialized during JSX preprocessing.\n */\nfunction parseJsonProps(props) {\n    if (!props)\n        return props;\n    const parsed = {};\n    Object.entries(props).forEach(([key, value]) => {\n        if (typeof value === 'string' && value.startsWith(JSON_VALUE_MARKER)) {\n            try {\n                parsed[key] = JSON.parse(value.slice(JSON_VALUE_MARKER.length));\n            }\n            catch {\n                // If parsing fails, use the value without the marker\n                parsed[key] = value.slice(JSON_VALUE_MARKER.length);\n            }\n        }\n        else {\n            parsed[key] = value;\n        }\n    });\n    return parsed;\n}\n/**\n * Custom createElement wrapper that parses JSON-marked string props.\n * This is needed because rehype-react converts HAST to React, but complex\n * types (arrays/objects) get serialized to strings during markdown parsing.\n */\nfunction createElementWithJsonProps(type, props, ...children) {\n    const parsedProps = parseJsonProps(props);\n    return external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(type, parsedProps, ...children);\n}\n/** Flatten CustomComponents into a component map for rehype-react */\nfunction exportComponentsForRehype(components) {\n    const exported = Object.entries(components).reduce((memo, [tag, mod]) => {\n        const { default: Content, ...rest } = mod;\n        memo[tag] = Content;\n        // Add lowercase version for case-insensitive matching\n        const lowerTag = tag.toLowerCase();\n        if (lowerTag !== tag)\n            memo[lowerTag] = Content;\n        // Add sub-components if any\n        Object.entries(rest).forEach(([subTag, component]) => {\n            if (typeof component === 'function') {\n                memo[subTag] = component;\n                const lowerSubTag = subTag.toLowerCase();\n                if (lowerSubTag !== subTag)\n                    memo[lowerSubTag] = component;\n            }\n        });\n        return memo;\n    }, {});\n    const componentMap = makeUseMdxComponents(exported);\n    const result = componentMap();\n    // Add Variable component for runtime user variable resolution\n    result.Variable = (variable_default());\n    result.variable = (variable_default());\n    return result;\n}\n/** Create a rehype-react processor */\nfunction createRehypeReactProcessor(components) {\n    // @ts-expect-error - rehype-react types are incompatible with React.Fragment return type\n    return unified().use((rehype_react_default()), {\n        createElement: createElementWithJsonProps,\n        Fragment: (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default()).Fragment,\n        components,\n    });\n}\n/** Create a TOC React component from headings */\nfunction createTocComponent(tocHast) {\n    // @ts-expect-error - rehype-react types are incompatible with React.Fragment return type\n    const tocProcessor = unified().use((rehype_react_default()), {\n        createElement: (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default()).createElement,\n        Fragment: (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default()).Fragment,\n        components: { p: (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default()).Fragment },\n    });\n    const tocReactElement = tocProcessor.stringify(tocHast);\n    const TocComponent = (props) => tocReactElement ? (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(components_TableOfContents, { heading: props.heading }, tocReactElement)) : null;\n    TocComponent.displayName = 'Toc';\n    return TocComponent;\n}\n/** Create the default wrapper component with contexts */\nfunction createDefaultComponent(content, opts) {\n    const { baseUrl, copyButtons, terms, theme, variables } = opts;\n    const DefaultComponent = () => (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(contexts, { baseUrl: baseUrl, copyButtons: copyButtons, terms: terms, theme: theme, variables: variables }, content));\n    DefaultComponent.displayName = 'DefaultComponent';\n    return DefaultComponent;\n}\n/** Build the RMDXModule result object */\nfunction buildRMDXModule(content, headings, tocHast, opts) {\n    const DefaultComponent = createDefaultComponent(content, opts);\n    const Toc = tocHast ? createTocComponent(tocHast) : () => null;\n    return {\n        default: DefaultComponent,\n        toc: headings,\n        Toc,\n        stylesheet: undefined,\n    };\n}\n\n;// ./lib/renderMdxish.tsx\n\n\n\n/**\n * Converts a HAST tree to a React component.\n * @param tree - The HAST tree to convert\n * @param opts - The options for the render\n * @returns The React component\n *\n * @see {@link https://github.com/readmeio/rmdx/blob/main/docs/mdxish-flow.md}\n */\nconst renderMdxish = (tree, opts = {}) => {\n    const { components: userComponents = {}, variables, ...contextOpts } = opts;\n    const components = {\n        ...loadComponents(),\n        ...userComponents,\n    };\n    const headings = extractToc(tree, components);\n    const componentsForRehype = exportComponentsForRehype(components);\n    const processor = createRehypeReactProcessor(componentsForRehype);\n    const content = processor.stringify(tree);\n    const tocHast = headings.length > 0 ? tocToHast(headings, variables) : null;\n    return buildRMDXModule(content, headings, tocHast, { ...contextOpts, variables });\n};\n/* harmony default export */ const lib_renderMdxish = (renderMdxish);\n\n;// ./node_modules/@mdx-js/mdx/lib/run.js\n/**\n * @import {MDXModule} from 'mdx/types.js'\n * @import {RunOptions} from './util/resolve-evaluate-options.js'\n */\n\n/** @type {new (code: string, ...args: Array<unknown>) => Function} **/\nconst AsyncFunction = Object.getPrototypeOf(run).constructor\n\n/**\n * Run code compiled with `outputFormat: 'function-body'`.\n *\n * > ☢️ **Danger**: this `eval`s JavaScript.\n *\n * @param {{toString(): string}} code\n *   JavaScript function body to run.\n * @param {RunOptions} options\n *   Configuration (**required**).\n * @return {Promise<MDXModule>}\n *   Promise to a module;\n *   the result is an object with a `default` field set to the component;\n *   anything else that was exported is available too.\n */\nasync function run(code, options) {\n  return new AsyncFunction(String(code))(options)\n}\n\n/**\n * Run code, synchronously.\n *\n * When possible please use the async `run`.\n *\n * > ☢️ **Danger**: this `eval`s JavaScript.\n *\n * @param {{toString(): string}} code\n *   JavaScript function body to run.\n * @param {RunOptions} options\n *   Configuration (**required**).\n * @return {MDXModule}\n *   Module.\n */\nfunction runSync(code, options) {\n  // eslint-disable-next-line no-new-func\n  return new Function(String(code))(options)\n}\n\n// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js\nvar jsx_runtime = __webpack_require__(2467);\nvar jsx_runtime_namespaceObject = /*#__PURE__*/__webpack_require__.t(jsx_runtime, 2);\n;// ./utils/user.ts\nconst User = (variables) => {\n    const { user = {}, defaults = [] } = variables || {};\n    return new Proxy(user, {\n        get(target, attribute) {\n            if (typeof attribute === 'symbol') {\n                return '';\n            }\n            if (attribute in target) {\n                return target[attribute];\n            }\n            const def = defaults.find((d) => d.name === attribute);\n            return def ? def.default : attribute.toUpperCase();\n        },\n    });\n};\n/* harmony default export */ const user = (User);\n\n;// ./lib/run.tsx\n\n\n\n\n\n\n\n\n\nconst run_run = (string, _opts = {}) => {\n    const { Fragment } = jsx_runtime_namespaceObject;\n    const { components = {}, terms, variables, baseUrl, imports = {}, theme, copyButtons, ...opts } = _opts;\n    const tocsByTag = {};\n    const exportedComponents = Object.entries(components).reduce((memo, [tag, mod]) => {\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        const { default: Content, toc, Toc, ...rest } = mod;\n        memo[tag] = Content;\n        tocsByTag[tag] = toc;\n        if (rest) {\n            Object.entries(rest).forEach(([subTag, component]) => {\n                memo[subTag] = component;\n            });\n        }\n        return memo;\n    }, {});\n    const exec = (text, { useMDXComponents = makeUseMdxComponents(exportedComponents) } = {}) => {\n        return runSync(text, {\n            ...jsx_runtime_namespaceObject,\n            Fragment,\n            baseUrl: \"file:///home/runner/work/markdown/markdown/lib/run.tsx\",\n            imports: { React: (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default()), user: user(variables), ...imports },\n            useMDXComponents,\n            ...opts,\n        });\n    };\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const { Toc: _Toc, toc, default: Content, stylesheet, ...exports } = exec(string);\n    let Toc;\n    const tocMdx = tocHastToMdx(toc, tocsByTag, variables);\n    if (tocMdx) {\n        const compiledToc = lib_compile(tocMdx);\n        const tocModule = exec(compiledToc, { useMDXComponents: () => ({ p: Fragment }) });\n        Toc = tocModule.default;\n    }\n    return {\n        default: (props) => (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(contexts, { baseUrl: baseUrl, copyButtons: copyButtons, terms: terms, theme: theme, variables: variables },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Content, { ...props }))),\n        toc,\n        Toc: (props) => Toc ? (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(components_TableOfContents, { heading: props.heading },\n            external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(Toc, null))) : null,\n        stylesheet,\n        ...exports,\n    };\n};\n/* harmony default export */ const lib_run = (run_run);\n\n;// ./lib/tags.ts\n\n\n\nconst tags = (doc) => {\n    const set = new Set();\n    visit(lib_mdast(doc), isMDXElement, (node) => {\n        if (node.name?.match(/^[A-Z]/)) {\n            set.add(node.name);\n        }\n    });\n    return Array.from(set);\n};\n/* harmony default export */ const lib_tags = (tags);\n\n;// ./lib/mdxishTags.ts\n\n\n\n\n\n\nconst mdxishTags_tags = (doc) => {\n    const set = new Set();\n    const processor = remark()\n        .data('micromarkExtensions', [magicBlock()])\n        .data('fromMarkdownExtensions', [magicBlockFromMarkdown()])\n        .use(mdxish_component_blocks);\n    const tree = processor.parse(doc);\n    visit(processor.runSync(tree), isMDXElement, (node) => {\n        if (node.name?.match(/^[A-Z]/)) {\n            set.add(node.name);\n        }\n    });\n    return Array.from(set);\n};\n/* harmony default export */ const mdxishTags = (mdxishTags_tags);\n\n;// ./lib/utils/extractMagicBlocks.ts\n/**\n * The content matching in this regex captures everything between `[block:TYPE]`\n * and `[/block]`, including new lines. Negative lookahead for the closing\n * `[/block]` tag is required to prevent greedy matching to ensure it stops at\n * the first closing tag it encounters preventing vulnerability to polynomial\n * backtracking issues.\n */\nconst MAGIC_BLOCK_REGEX = /\\[block:[^\\]]{1,100}\\](?:(?!\\[block:)(?!\\[\\/block\\])[\\s\\S])*\\[\\/block\\]/g;\n/**\n * Extract legacy magic block syntax from a markdown string.\n * Returns the modified markdown and an array of extracted blocks.\n */\nfunction extractMagicBlocks(markdown) {\n    const blocks = [];\n    let index = 0;\n    const replaced = markdown.replace(MAGIC_BLOCK_REGEX, match => {\n        /**\n         * Key is the unique identifier for the magic block\n         */\n        const key = `__MAGIC_BLOCK_${index}__`;\n        /**\n         * Token is a wrapper around the `key` to serialize & influence how the\n         * magic block is parsed in the remark pipeline.\n         * - Use backticks so it becomes a code span, preventing `remarkParse` from\n         *   parsing special characters in the token as markdown syntax\n         * - Prepend a newline to ensure it is parsed as a block level node\n         * - Append a newline to ensure it is separated from following content\n         */\n        const token = `\\n\\`${key}\\`\\n`;\n        blocks.push({ key, raw: match, token });\n        index += 1;\n        return token;\n    });\n    return { replaced, blocks };\n}\n/**\n * Restore extracted magic blocks back into a markdown string.\n */\nfunction restoreMagicBlocks(replaced, blocks) {\n    // If a magic block is at the start or end of the document, the extraction\n    // token's newlines will have been trimmed during processing. We need to\n    // account for that here to ensure the token is found and replaced correctly.\n    // These extra newlines will be removed again when the final string is trimmed.\n    const content = `\\n${replaced}\\n`;\n    const restoredContent = blocks.reduce((acc, { token, raw }) => {\n        // Ensure each magic block is separated by newlines when restored.\n        return acc.split(token).join(`\\n${raw}\\n`);\n    }, content);\n    return restoredContent.trim();\n}\n\n;// ./lib/stripComments.ts\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Removes Markdown and MDX comments.\n */\nasync function stripComments(doc, { mdx, mdxish } = {}) {\n    const { replaced, blocks } = extractMagicBlocks(doc);\n    const processor = unified();\n    // we still require these two extensions because:\n    // 1. we can rely on remarkMdx to parse MDXish\n    // 2. we need to parse JSX comments into mdxTextExpression nodes so that the transformers can pick them up\n    if (mdxish) {\n        processor\n            .data('micromarkExtensions', [mdxExpression({ allowEmpty: true })])\n            .data('fromMarkdownExtensions', [mdxExpressionFromMarkdown()])\n            .data('toMarkdownExtensions', [mdxExpressionToMarkdown()]);\n    }\n    processor\n        .use(remarkParse)\n        .use(normalize_malformed_md_syntax)\n        .use(mdx ? remarkMdx : undefined)\n        .use(stripCommentsTransformer)\n        .use(remarkGfm)\n        .use(remarkStringify, mdx\n        ? {}\n        : {\n            handlers: {\n                // Preserve <<...>> variables without escaping any angle brackets.\n                text(node, _, state, info) {\n                    // If text contains <<...>> pattern, return as is.\n                    if (new RegExp(variable_.VARIABLE_REGEXP).test(node.value))\n                        return node.value;\n                    // Otherwise, handle each text node normally.\n                    return state.safe(node.value, info);\n                },\n            },\n            join: [\n                // Preserve tight sibling code blocks without adding extra newlines between them.\n                // Our markdown renderer uses this to group these code blocks into a tabbed interface.\n                (left, right) => {\n                    if (left.type === 'code' && right.type === 'code') {\n                        const isTight = left.position && right.position && right.position.start.line - left.position.end.line === 1; // Are the blocks on adjacent lines?\n                        // 0 = no newline between blocks\n                        return isTight ? 0 : undefined;\n                    }\n                    return undefined;\n                },\n            ],\n        });\n    const file = await processor.process(replaced);\n    const stringified = String(file).trim();\n    const restored = restoreMagicBlocks(stringified, blocks);\n    return restored;\n}\n/* harmony default export */ const lib_stripComments = (stripComments);\n\n;// ./lib/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n;// ./index.tsx\n\n\n\n\nconst utils = {\n    get options() {\n        return { ...options };\n    },\n    getHref: getHref,\n    calloutIcons: {},\n};\n\n\n\n\n\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"]}