import CJS_COMPAT_NODE_URL_xdyj2ntbeef from 'node:url';
import CJS_COMPAT_NODE_PATH_xdyj2ntbeef from 'node:path';
import CJS_COMPAT_NODE_MODULE_xdyj2ntbeef from "node:module";

var __filename = CJS_COMPAT_NODE_URL_xdyj2ntbeef.fileURLToPath(import.meta.url);
var __dirname = CJS_COMPAT_NODE_PATH_xdyj2ntbeef.dirname(__filename);
var require = CJS_COMPAT_NODE_MODULE_xdyj2ntbeef.createRequire(import.meta.url);

// ------------------------------------------------------------
// end of CJS compatibility banner, injected by Storybook's esbuild configuration
// ------------------------------------------------------------
import {
  esm_default,
  stringify
} from "./chunk-MK3UV7SU.js";
import {
  visit
} from "./chunk-XAHV36T5.js";
import {
  __commonJS,
  __export,
  __toESM
} from "./chunk-3MKFR4CL.js";

// ../../../node_modules/@mdx-js/mdx/node_modules/acorn-jsx/xhtml.js
var require_xhtml = __commonJS({
  "../../../node_modules/@mdx-js/mdx/node_modules/acorn-jsx/xhtml.js"(exports, module) {
    module.exports = {
      quot: '"',
      amp: "&",
      apos: "'",
      lt: "<",
      gt: ">",
      nbsp: "\xA0",
      iexcl: "\xA1",
      cent: "\xA2",
      pound: "\xA3",
      curren: "\xA4",
      yen: "\xA5",
      brvbar: "\xA6",
      sect: "\xA7",
      uml: "\xA8",
      copy: "\xA9",
      ordf: "\xAA",
      laquo: "\xAB",
      not: "\xAC",
      shy: "\xAD",
      reg: "\xAE",
      macr: "\xAF",
      deg: "\xB0",
      plusmn: "\xB1",
      sup2: "\xB2",
      sup3: "\xB3",
      acute: "\xB4",
      micro: "\xB5",
      para: "\xB6",
      middot: "\xB7",
      cedil: "\xB8",
      sup1: "\xB9",
      ordm: "\xBA",
      raquo: "\xBB",
      frac14: "\xBC",
      frac12: "\xBD",
      frac34: "\xBE",
      iquest: "\xBF",
      Agrave: "\xC0",
      Aacute: "\xC1",
      Acirc: "\xC2",
      Atilde: "\xC3",
      Auml: "\xC4",
      Aring: "\xC5",
      AElig: "\xC6",
      Ccedil: "\xC7",
      Egrave: "\xC8",
      Eacute: "\xC9",
      Ecirc: "\xCA",
      Euml: "\xCB",
      Igrave: "\xCC",
      Iacute: "\xCD",
      Icirc: "\xCE",
      Iuml: "\xCF",
      ETH: "\xD0",
      Ntilde: "\xD1",
      Ograve: "\xD2",
      Oacute: "\xD3",
      Ocirc: "\xD4",
      Otilde: "\xD5",
      Ouml: "\xD6",
      times: "\xD7",
      Oslash: "\xD8",
      Ugrave: "\xD9",
      Uacute: "\xDA",
      Ucirc: "\xDB",
      Uuml: "\xDC",
      Yacute: "\xDD",
      THORN: "\xDE",
      szlig: "\xDF",
      agrave: "\xE0",
      aacute: "\xE1",
      acirc: "\xE2",
      atilde: "\xE3",
      auml: "\xE4",
      aring: "\xE5",
      aelig: "\xE6",
      ccedil: "\xE7",
      egrave: "\xE8",
      eacute: "\xE9",
      ecirc: "\xEA",
      euml: "\xEB",
      igrave: "\xEC",
      iacute: "\xED",
      icirc: "\xEE",
      iuml: "\xEF",
      eth: "\xF0",
      ntilde: "\xF1",
      ograve: "\xF2",
      oacute: "\xF3",
      ocirc: "\xF4",
      otilde: "\xF5",
      ouml: "\xF6",
      divide: "\xF7",
      oslash: "\xF8",
      ugrave: "\xF9",
      uacute: "\xFA",
      ucirc: "\xFB",
      uuml: "\xFC",
      yacute: "\xFD",
      thorn: "\xFE",
      yuml: "\xFF",
      OElig: "\u0152",
      oelig: "\u0153",
      Scaron: "\u0160",
      scaron: "\u0161",
      Yuml: "\u0178",
      fnof: "\u0192",
      circ: "\u02C6",
      tilde: "\u02DC",
      Alpha: "\u0391",
      Beta: "\u0392",
      Gamma: "\u0393",
      Delta: "\u0394",
      Epsilon: "\u0395",
      Zeta: "\u0396",
      Eta: "\u0397",
      Theta: "\u0398",
      Iota: "\u0399",
      Kappa: "\u039A",
      Lambda: "\u039B",
      Mu: "\u039C",
      Nu: "\u039D",
      Xi: "\u039E",
      Omicron: "\u039F",
      Pi: "\u03A0",
      Rho: "\u03A1",
      Sigma: "\u03A3",
      Tau: "\u03A4",
      Upsilon: "\u03A5",
      Phi: "\u03A6",
      Chi: "\u03A7",
      Psi: "\u03A8",
      Omega: "\u03A9",
      alpha: "\u03B1",
      beta: "\u03B2",
      gamma: "\u03B3",
      delta: "\u03B4",
      epsilon: "\u03B5",
      zeta: "\u03B6",
      eta: "\u03B7",
      theta: "\u03B8",
      iota: "\u03B9",
      kappa: "\u03BA",
      lambda: "\u03BB",
      mu: "\u03BC",
      nu: "\u03BD",
      xi: "\u03BE",
      omicron: "\u03BF",
      pi: "\u03C0",
      rho: "\u03C1",
      sigmaf: "\u03C2",
      sigma: "\u03C3",
      tau: "\u03C4",
      upsilon: "\u03C5",
      phi: "\u03C6",
      chi: "\u03C7",
      psi: "\u03C8",
      omega: "\u03C9",
      thetasym: "\u03D1",
      upsih: "\u03D2",
      piv: "\u03D6",
      ensp: "\u2002",
      emsp: "\u2003",
      thinsp: "\u2009",
      zwnj: "\u200C",
      zwj: "\u200D",
      lrm: "\u200E",
      rlm: "\u200F",
      ndash: "\u2013",
      mdash: "\u2014",
      lsquo: "\u2018",
      rsquo: "\u2019",
      sbquo: "\u201A",
      ldquo: "\u201C",
      rdquo: "\u201D",
      bdquo: "\u201E",
      dagger: "\u2020",
      Dagger: "\u2021",
      bull: "\u2022",
      hellip: "\u2026",
      permil: "\u2030",
      prime: "\u2032",
      Prime: "\u2033",
      lsaquo: "\u2039",
      rsaquo: "\u203A",
      oline: "\u203E",
      frasl: "\u2044",
      euro: "\u20AC",
      image: "\u2111",
      weierp: "\u2118",
      real: "\u211C",
      trade: "\u2122",
      alefsym: "\u2135",
      larr: "\u2190",
      uarr: "\u2191",
      rarr: "\u2192",
      darr: "\u2193",
      harr: "\u2194",
      crarr: "\u21B5",
      lArr: "\u21D0",
      uArr: "\u21D1",
      rArr: "\u21D2",
      dArr: "\u21D3",
      hArr: "\u21D4",
      forall: "\u2200",
      part: "\u2202",
      exist: "\u2203",
      empty: "\u2205",
      nabla: "\u2207",
      isin: "\u2208",
      notin: "\u2209",
      ni: "\u220B",
      prod: "\u220F",
      sum: "\u2211",
      minus: "\u2212",
      lowast: "\u2217",
      radic: "\u221A",
      prop: "\u221D",
      infin: "\u221E",
      ang: "\u2220",
      and: "\u2227",
      or: "\u2228",
      cap: "\u2229",
      cup: "\u222A",
      int: "\u222B",
      there4: "\u2234",
      sim: "\u223C",
      cong: "\u2245",
      asymp: "\u2248",
      ne: "\u2260",
      equiv: "\u2261",
      le: "\u2264",
      ge: "\u2265",
      sub: "\u2282",
      sup: "\u2283",
      nsub: "\u2284",
      sube: "\u2286",
      supe: "\u2287",
      oplus: "\u2295",
      otimes: "\u2297",
      perp: "\u22A5",
      sdot: "\u22C5",
      lceil: "\u2308",
      rceil: "\u2309",
      lfloor: "\u230A",
      rfloor: "\u230B",
      lang: "\u2329",
      rang: "\u232A",
      loz: "\u25CA",
      spades: "\u2660",
      clubs: "\u2663",
      hearts: "\u2665",
      diams: "\u2666"
    };
  }
});

// ../../../node_modules/@mdx-js/mdx/node_modules/acorn/dist/acorn.js
var require_acorn = __commonJS({
  "../../../node_modules/@mdx-js/mdx/node_modules/acorn/dist/acorn.js"(exports, module) {
    (function(global, factory) {
      typeof exports == "object" && typeof module < "u" ? factory(exports) : typeof define == "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis < "u" ? globalThis : global || self, factory(global.acorn = {}));
    })(exports, (function(exports2) {
      "use strict";
      var astralIdentifierCodes2 = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239], astralIdentifierStartCodes2 = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191], nonASCIIidentifierChars2 = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0897-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\u30FB\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F\uFF65", nonASCIIidentifierStartChars2 = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC", reservedWords2 = {
        3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",
        5: "class enum extends super const export import",
        6: "enum",
        strict: "implements interface let package private protected public static yield",
        strictBind: "eval arguments"
      }, ecma5AndLessKeywords2 = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this", keywords$12 = {
        5: ecma5AndLessKeywords2,
        "5module": ecma5AndLessKeywords2 + " export import",
        6: ecma5AndLessKeywords2 + " const class extends export import super"
      }, keywordRelationalOperator2 = /^in(stanceof)?$/, nonASCIIidentifierStart2 = new RegExp("[" + nonASCIIidentifierStartChars2 + "]"), nonASCIIidentifier2 = new RegExp("[" + nonASCIIidentifierStartChars2 + nonASCIIidentifierChars2 + "]");
      function isInAstralSet2(code2, set) {
        for (var pos = 65536, i2 = 0; i2 < set.length; i2 += 2) {
          if (pos += set[i2], pos > code2)
            return !1;
          if (pos += set[i2 + 1], pos >= code2)
            return !0;
        }
        return !1;
      }
      function isIdentifierStart2(code2, astral) {
        return code2 < 65 ? code2 === 36 : code2 < 91 ? !0 : code2 < 97 ? code2 === 95 : code2 < 123 ? !0 : code2 <= 65535 ? code2 >= 170 && nonASCIIidentifierStart2.test(String.fromCharCode(code2)) : astral === !1 ? !1 : isInAstralSet2(code2, astralIdentifierStartCodes2);
      }
      function isIdentifierChar2(code2, astral) {
        return code2 < 48 ? code2 === 36 : code2 < 58 ? !0 : code2 < 65 ? !1 : code2 < 91 ? !0 : code2 < 97 ? code2 === 95 : code2 < 123 ? !0 : code2 <= 65535 ? code2 >= 170 && nonASCIIidentifier2.test(String.fromCharCode(code2)) : astral === !1 ? !1 : isInAstralSet2(code2, astralIdentifierStartCodes2) || isInAstralSet2(code2, astralIdentifierCodes2);
      }
      var TokenType3 = function(label, conf) {
        conf === void 0 && (conf = {}), this.label = label, this.keyword = conf.keyword, this.beforeExpr = !!conf.beforeExpr, this.startsExpr = !!conf.startsExpr, this.isLoop = !!conf.isLoop, this.isAssign = !!conf.isAssign, this.prefix = !!conf.prefix, this.postfix = !!conf.postfix, this.binop = conf.binop || null, this.updateContext = null;
      };
      function binop2(name2, prec) {
        return new TokenType3(name2, { beforeExpr: !0, binop: prec });
      }
      var beforeExpr2 = { beforeExpr: !0 }, startsExpr2 = { startsExpr: !0 }, keywords2 = {};
      function kw2(name2, options) {
        return options === void 0 && (options = {}), options.keyword = name2, keywords2[name2] = new TokenType3(name2, options);
      }
      var types$12 = {
        num: new TokenType3("num", startsExpr2),
        regexp: new TokenType3("regexp", startsExpr2),
        string: new TokenType3("string", startsExpr2),
        name: new TokenType3("name", startsExpr2),
        privateId: new TokenType3("privateId", startsExpr2),
        eof: new TokenType3("eof"),
        // Punctuation token types.
        bracketL: new TokenType3("[", { beforeExpr: !0, startsExpr: !0 }),
        bracketR: new TokenType3("]"),
        braceL: new TokenType3("{", { beforeExpr: !0, startsExpr: !0 }),
        braceR: new TokenType3("}"),
        parenL: new TokenType3("(", { beforeExpr: !0, startsExpr: !0 }),
        parenR: new TokenType3(")"),
        comma: new TokenType3(",", beforeExpr2),
        semi: new TokenType3(";", beforeExpr2),
        colon: new TokenType3(":", beforeExpr2),
        dot: new TokenType3("."),
        question: new TokenType3("?", beforeExpr2),
        questionDot: new TokenType3("?."),
        arrow: new TokenType3("=>", beforeExpr2),
        template: new TokenType3("template"),
        invalidTemplate: new TokenType3("invalidTemplate"),
        ellipsis: new TokenType3("...", beforeExpr2),
        backQuote: new TokenType3("`", startsExpr2),
        dollarBraceL: new TokenType3("${", { beforeExpr: !0, startsExpr: !0 }),
        // Operators. These carry several kinds of properties to help the
        // parser use them properly (the presence of these properties is
        // what categorizes them as operators).
        //
        // `binop`, when present, specifies that this operator is a binary
        // operator, and will refer to its precedence.
        //
        // `prefix` and `postfix` mark the operator as a prefix or postfix
        // unary operator.
        //
        // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as
        // binary operators with a very low precedence, that should result
        // in AssignmentExpression nodes.
        eq: new TokenType3("=", { beforeExpr: !0, isAssign: !0 }),
        assign: new TokenType3("_=", { beforeExpr: !0, isAssign: !0 }),
        incDec: new TokenType3("++/--", { prefix: !0, postfix: !0, startsExpr: !0 }),
        prefix: new TokenType3("!/~", { beforeExpr: !0, prefix: !0, startsExpr: !0 }),
        logicalOR: binop2("||", 1),
        logicalAND: binop2("&&", 2),
        bitwiseOR: binop2("|", 3),
        bitwiseXOR: binop2("^", 4),
        bitwiseAND: binop2("&", 5),
        equality: binop2("==/!=/===/!==", 6),
        relational: binop2("</>/<=/>=", 7),
        bitShift: binop2("<</>>/>>>", 8),
        plusMin: new TokenType3("+/-", { beforeExpr: !0, binop: 9, prefix: !0, startsExpr: !0 }),
        modulo: binop2("%", 10),
        star: binop2("*", 10),
        slash: binop2("/", 10),
        starstar: new TokenType3("**", { beforeExpr: !0 }),
        coalesce: binop2("??", 1),
        // Keyword token types.
        _break: kw2("break"),
        _case: kw2("case", beforeExpr2),
        _catch: kw2("catch"),
        _continue: kw2("continue"),
        _debugger: kw2("debugger"),
        _default: kw2("default", beforeExpr2),
        _do: kw2("do", { isLoop: !0, beforeExpr: !0 }),
        _else: kw2("else", beforeExpr2),
        _finally: kw2("finally"),
        _for: kw2("for", { isLoop: !0 }),
        _function: kw2("function", startsExpr2),
        _if: kw2("if"),
        _return: kw2("return", beforeExpr2),
        _switch: kw2("switch"),
        _throw: kw2("throw", beforeExpr2),
        _try: kw2("try"),
        _var: kw2("var"),
        _const: kw2("const"),
        _while: kw2("while", { isLoop: !0 }),
        _with: kw2("with"),
        _new: kw2("new", { beforeExpr: !0, startsExpr: !0 }),
        _this: kw2("this", startsExpr2),
        _super: kw2("super", startsExpr2),
        _class: kw2("class", startsExpr2),
        _extends: kw2("extends", beforeExpr2),
        _export: kw2("export"),
        _import: kw2("import", startsExpr2),
        _null: kw2("null", startsExpr2),
        _true: kw2("true", startsExpr2),
        _false: kw2("false", startsExpr2),
        _in: kw2("in", { beforeExpr: !0, binop: 7 }),
        _instanceof: kw2("instanceof", { beforeExpr: !0, binop: 7 }),
        _typeof: kw2("typeof", { beforeExpr: !0, prefix: !0, startsExpr: !0 }),
        _void: kw2("void", { beforeExpr: !0, prefix: !0, startsExpr: !0 }),
        _delete: kw2("delete", { beforeExpr: !0, prefix: !0, startsExpr: !0 })
      }, lineBreak2 = /\r\n?|\n|\u2028|\u2029/, lineBreakG2 = new RegExp(lineBreak2.source, "g");
      function isNewLine2(code2) {
        return code2 === 10 || code2 === 13 || code2 === 8232 || code2 === 8233;
      }
      function nextLineBreak2(code2, from, end) {
        end === void 0 && (end = code2.length);
        for (var i2 = from; i2 < end; i2++) {
          var next = code2.charCodeAt(i2);
          if (isNewLine2(next))
            return i2 < end - 1 && next === 13 && code2.charCodeAt(i2 + 1) === 10 ? i2 + 2 : i2 + 1;
        }
        return -1;
      }
      var nonASCIIwhitespace2 = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/, skipWhiteSpace2 = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g, ref2 = Object.prototype, hasOwnProperty4 = ref2.hasOwnProperty, toString3 = ref2.toString, hasOwn2 = Object.hasOwn || (function(obj, propName) {
        return hasOwnProperty4.call(obj, propName);
      }), isArray2 = Array.isArray || (function(obj) {
        return toString3.call(obj) === "[object Array]";
      }), regexpCache2 = /* @__PURE__ */ Object.create(null);
      function wordsRegexp2(words) {
        return regexpCache2[words] || (regexpCache2[words] = new RegExp("^(?:" + words.replace(/ /g, "|") + ")$"));
      }
      function codePointToString2(code2) {
        return code2 <= 65535 ? String.fromCharCode(code2) : (code2 -= 65536, String.fromCharCode((code2 >> 10) + 55296, (code2 & 1023) + 56320));
      }
      var loneSurrogate2 = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/, Position3 = function(line, col) {
        this.line = line, this.column = col;
      };
      Position3.prototype.offset = function(n) {
        return new Position3(this.line, this.column + n);
      };
      var SourceLocation3 = function(p, start2, end) {
        this.start = start2, this.end = end, p.sourceFile !== null && (this.source = p.sourceFile);
      };
      function getLineInfo2(input, offset2) {
        for (var line = 1, cur = 0; ; ) {
          var nextBreak = nextLineBreak2(input, cur, offset2);
          if (nextBreak < 0)
            return new Position3(line, offset2 - cur);
          ++line, cur = nextBreak;
        }
      }
      var defaultOptions2 = {
        // `ecmaVersion` indicates the ECMAScript version to parse. Must be
        // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10
        // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"`
        // (the latest version the library supports). This influences
        // support for strict mode, the set of reserved words, and support
        // for new syntax features.
        ecmaVersion: null,
        // `sourceType` indicates the mode the code should be parsed in.
        // Can be either `"script"` or `"module"`. This influences global
        // strict mode and parsing of `import` and `export` declarations.
        sourceType: "script",
        // `onInsertedSemicolon` can be a callback that will be called when
        // a semicolon is automatically inserted. It will be passed the
        // position of the inserted semicolon as an offset, and if
        // `locations` is enabled, it is given the location as a `{line,
        // column}` object as second argument.
        onInsertedSemicolon: null,
        // `onTrailingComma` is similar to `onInsertedSemicolon`, but for
        // trailing commas.
        onTrailingComma: null,
        // By default, reserved words are only enforced if ecmaVersion >= 5.
        // Set `allowReserved` to a boolean value to explicitly turn this on
        // an off. When this option has the value "never", reserved words
        // and keywords can also not be used as property names.
        allowReserved: null,
        // When enabled, a return at the top level is not considered an
        // error.
        allowReturnOutsideFunction: !1,
        // When enabled, import/export statements are not constrained to
        // appearing at the top of the program, and an import.meta expression
        // in a script isn't considered an error.
        allowImportExportEverywhere: !1,
        // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.
        // When enabled, await identifiers are allowed to appear at the top-level scope,
        // but they are still not allowed in non-async functions.
        allowAwaitOutsideFunction: null,
        // When enabled, super identifiers are not constrained to
        // appearing in methods and do not raise an error when they appear elsewhere.
        allowSuperOutsideMethod: null,
        // When enabled, hashbang directive in the beginning of file is
        // allowed and treated as a line comment. Enabled by default when
        // `ecmaVersion` >= 2023.
        allowHashBang: !1,
        // By default, the parser will verify that private properties are
        // only used in places where they are valid and have been declared.
        // Set this to false to turn such checks off.
        checkPrivateFields: !0,
        // When `locations` is on, `loc` properties holding objects with
        // `start` and `end` properties in `{line, column}` form (with
        // line being 1-based and column 0-based) will be attached to the
        // nodes.
        locations: !1,
        // A function can be passed as `onToken` option, which will
        // cause Acorn to call that function with object in the same
        // format as tokens returned from `tokenizer().getToken()`. Note
        // that you are not allowed to call the parser from the
        // callback—that will corrupt its internal state.
        onToken: null,
        // A function can be passed as `onComment` option, which will
        // cause Acorn to call that function with `(block, text, start,
        // end)` parameters whenever a comment is skipped. `block` is a
        // boolean indicating whether this is a block (`/* */`) comment,
        // `text` is the content of the comment, and `start` and `end` are
        // character offsets that denote the start and end of the comment.
        // When the `locations` option is on, two more parameters are
        // passed, the full `{line, column}` locations of the start and
        // end of the comments. Note that you are not allowed to call the
        // parser from the callback—that will corrupt its internal state.
        // When this option has an array as value, objects representing the
        // comments are pushed to it.
        onComment: null,
        // Nodes have their start and end characters offsets recorded in
        // `start` and `end` properties (directly on the node, rather than
        // the `loc` object, which holds line/column data. To also add a
        // [semi-standardized][range] `range` property holding a `[start,
        // end]` array with the same numbers, set the `ranges` option to
        // `true`.
        //
        // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678
        ranges: !1,
        // It is possible to parse multiple files into a single AST by
        // passing the tree produced by parsing the first file as
        // `program` option in subsequent parses. This will add the
        // toplevel forms of the parsed file to the `Program` (top) node
        // of an existing parse tree.
        program: null,
        // When `locations` is on, you can pass this to record the source
        // file in every node's `loc` object.
        sourceFile: null,
        // This value, if given, is stored in every node, whether
        // `locations` is on or off.
        directSourceFile: null,
        // When enabled, parenthesized expressions are represented by
        // (non-standard) ParenthesizedExpression nodes
        preserveParens: !1
      }, warnedAboutEcmaVersion2 = !1;
      function getOptions2(opts) {
        var options = {};
        for (var opt in defaultOptions2)
          options[opt] = opts && hasOwn2(opts, opt) ? opts[opt] : defaultOptions2[opt];
        if (options.ecmaVersion === "latest" ? options.ecmaVersion = 1e8 : options.ecmaVersion == null ? (!warnedAboutEcmaVersion2 && typeof console == "object" && console.warn && (warnedAboutEcmaVersion2 = !0, console.warn(`Since Acorn 8.0.0, options.ecmaVersion is required.
Defaulting to 2020, but this will stop working in the future.`)), options.ecmaVersion = 11) : options.ecmaVersion >= 2015 && (options.ecmaVersion -= 2009), options.allowReserved == null && (options.allowReserved = options.ecmaVersion < 5), (!opts || opts.allowHashBang == null) && (options.allowHashBang = options.ecmaVersion >= 14), isArray2(options.onToken)) {
          var tokens = options.onToken;
          options.onToken = function(token) {
            return tokens.push(token);
          };
        }
        return isArray2(options.onComment) && (options.onComment = pushComment2(options, options.onComment)), options;
      }
      function pushComment2(options, array) {
        return function(block, text5, start2, end, startLoc, endLoc) {
          var comment2 = {
            type: block ? "Block" : "Line",
            value: text5,
            start: start2,
            end
          };
          options.locations && (comment2.loc = new SourceLocation3(this, startLoc, endLoc)), options.ranges && (comment2.range = [start2, end]), array.push(comment2);
        };
      }
      var SCOPE_TOP2 = 1, SCOPE_FUNCTION2 = 2, SCOPE_ASYNC2 = 4, SCOPE_GENERATOR2 = 8, SCOPE_ARROW2 = 16, SCOPE_SIMPLE_CATCH2 = 32, SCOPE_SUPER2 = 64, SCOPE_DIRECT_SUPER2 = 128, SCOPE_CLASS_STATIC_BLOCK2 = 256, SCOPE_CLASS_FIELD_INIT2 = 512, SCOPE_VAR2 = SCOPE_TOP2 | SCOPE_FUNCTION2 | SCOPE_CLASS_STATIC_BLOCK2;
      function functionFlags2(async, generator) {
        return SCOPE_FUNCTION2 | (async ? SCOPE_ASYNC2 : 0) | (generator ? SCOPE_GENERATOR2 : 0);
      }
      var BIND_NONE2 = 0, BIND_VAR2 = 1, BIND_LEXICAL2 = 2, BIND_FUNCTION2 = 3, BIND_SIMPLE_CATCH2 = 4, BIND_OUTSIDE2 = 5, Parser3 = function(options, input, startPos) {
        this.options = options = getOptions2(options), this.sourceFile = options.sourceFile, this.keywords = wordsRegexp2(keywords$12[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]);
        var reserved = "";
        options.allowReserved !== !0 && (reserved = reservedWords2[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3], options.sourceType === "module" && (reserved += " await")), this.reservedWords = wordsRegexp2(reserved);
        var reservedStrict = (reserved ? reserved + " " : "") + reservedWords2.strict;
        this.reservedWordsStrict = wordsRegexp2(reservedStrict), this.reservedWordsStrictBind = wordsRegexp2(reservedStrict + " " + reservedWords2.strictBind), this.input = String(input), this.containsEsc = !1, startPos ? (this.pos = startPos, this.lineStart = this.input.lastIndexOf(`
`, startPos - 1) + 1, this.curLine = this.input.slice(0, this.lineStart).split(lineBreak2).length) : (this.pos = this.lineStart = 0, this.curLine = 1), this.type = types$12.eof, this.value = null, this.start = this.end = this.pos, this.startLoc = this.endLoc = this.curPosition(), this.lastTokEndLoc = this.lastTokStartLoc = null, this.lastTokStart = this.lastTokEnd = this.pos, this.context = this.initialContext(), this.exprAllowed = !0, this.inModule = options.sourceType === "module", this.strict = this.inModule || this.strictDirective(this.pos), this.potentialArrowAt = -1, this.potentialArrowInForAwait = !1, this.yieldPos = this.awaitPos = this.awaitIdentPos = 0, this.labels = [], this.undefinedExports = /* @__PURE__ */ Object.create(null), this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!" && this.skipLineComment(2), this.scopeStack = [], this.enterScope(SCOPE_TOP2), this.regexpState = null, this.privateNameStack = [];
      }, prototypeAccessors2 = { inFunction: { configurable: !0 }, inGenerator: { configurable: !0 }, inAsync: { configurable: !0 }, canAwait: { configurable: !0 }, allowSuper: { configurable: !0 }, allowDirectSuper: { configurable: !0 }, treatFunctionsAsVar: { configurable: !0 }, allowNewDotTarget: { configurable: !0 }, inClassStaticBlock: { configurable: !0 } };
      Parser3.prototype.parse = function() {
        var node2 = this.options.program || this.startNode();
        return this.nextToken(), this.parseTopLevel(node2);
      }, prototypeAccessors2.inFunction.get = function() {
        return (this.currentVarScope().flags & SCOPE_FUNCTION2) > 0;
      }, prototypeAccessors2.inGenerator.get = function() {
        return (this.currentVarScope().flags & SCOPE_GENERATOR2) > 0;
      }, prototypeAccessors2.inAsync.get = function() {
        return (this.currentVarScope().flags & SCOPE_ASYNC2) > 0;
      }, prototypeAccessors2.canAwait.get = function() {
        for (var i2 = this.scopeStack.length - 1; i2 >= 0; i2--) {
          var ref3 = this.scopeStack[i2], flags = ref3.flags;
          if (flags & (SCOPE_CLASS_STATIC_BLOCK2 | SCOPE_CLASS_FIELD_INIT2))
            return !1;
          if (flags & SCOPE_FUNCTION2)
            return (flags & SCOPE_ASYNC2) > 0;
        }
        return this.inModule && this.options.ecmaVersion >= 13 || this.options.allowAwaitOutsideFunction;
      }, prototypeAccessors2.allowSuper.get = function() {
        var ref3 = this.currentThisScope(), flags = ref3.flags;
        return (flags & SCOPE_SUPER2) > 0 || this.options.allowSuperOutsideMethod;
      }, prototypeAccessors2.allowDirectSuper.get = function() {
        return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER2) > 0;
      }, prototypeAccessors2.treatFunctionsAsVar.get = function() {
        return this.treatFunctionsAsVarInScope(this.currentScope());
      }, prototypeAccessors2.allowNewDotTarget.get = function() {
        for (var i2 = this.scopeStack.length - 1; i2 >= 0; i2--) {
          var ref3 = this.scopeStack[i2], flags = ref3.flags;
          if (flags & (SCOPE_CLASS_STATIC_BLOCK2 | SCOPE_CLASS_FIELD_INIT2) || flags & SCOPE_FUNCTION2 && !(flags & SCOPE_ARROW2))
            return !0;
        }
        return !1;
      }, prototypeAccessors2.inClassStaticBlock.get = function() {
        return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK2) > 0;
      }, Parser3.extend = function() {
        for (var plugins = [], len = arguments.length; len--; ) plugins[len] = arguments[len];
        for (var cls = this, i2 = 0; i2 < plugins.length; i2++)
          cls = plugins[i2](cls);
        return cls;
      }, Parser3.parse = function(input, options) {
        return new this(options, input).parse();
      }, Parser3.parseExpressionAt = function(input, pos, options) {
        var parser = new this(options, input, pos);
        return parser.nextToken(), parser.parseExpression();
      }, Parser3.tokenizer = function(input, options) {
        return new this(options, input);
      }, Object.defineProperties(Parser3.prototype, prototypeAccessors2);
      var pp$92 = Parser3.prototype, literal2 = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/;
      pp$92.strictDirective = function(start2) {
        if (this.options.ecmaVersion < 5)
          return !1;
        for (; ; ) {
          skipWhiteSpace2.lastIndex = start2, start2 += skipWhiteSpace2.exec(this.input)[0].length;
          var match = literal2.exec(this.input.slice(start2));
          if (!match)
            return !1;
          if ((match[1] || match[2]) === "use strict") {
            skipWhiteSpace2.lastIndex = start2 + match[0].length;
            var spaceAfter = skipWhiteSpace2.exec(this.input), end = spaceAfter.index + spaceAfter[0].length, next = this.input.charAt(end);
            return next === ";" || next === "}" || lineBreak2.test(spaceAfter[0]) && !(/[(`.[+\-/*%<>=,?^&]/.test(next) || next === "!" && this.input.charAt(end + 1) === "=");
          }
          start2 += match[0].length, skipWhiteSpace2.lastIndex = start2, start2 += skipWhiteSpace2.exec(this.input)[0].length, this.input[start2] === ";" && start2++;
        }
      }, pp$92.eat = function(type) {
        return this.type === type ? (this.next(), !0) : !1;
      }, pp$92.isContextual = function(name2) {
        return this.type === types$12.name && this.value === name2 && !this.containsEsc;
      }, pp$92.eatContextual = function(name2) {
        return this.isContextual(name2) ? (this.next(), !0) : !1;
      }, pp$92.expectContextual = function(name2) {
        this.eatContextual(name2) || this.unexpected();
      }, pp$92.canInsertSemicolon = function() {
        return this.type === types$12.eof || this.type === types$12.braceR || lineBreak2.test(this.input.slice(this.lastTokEnd, this.start));
      }, pp$92.insertSemicolon = function() {
        if (this.canInsertSemicolon())
          return this.options.onInsertedSemicolon && this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc), !0;
      }, pp$92.semicolon = function() {
        !this.eat(types$12.semi) && !this.insertSemicolon() && this.unexpected();
      }, pp$92.afterTrailingComma = function(tokType, notNext) {
        if (this.type === tokType)
          return this.options.onTrailingComma && this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc), notNext || this.next(), !0;
      }, pp$92.expect = function(type) {
        this.eat(type) || this.unexpected();
      }, pp$92.unexpected = function(pos) {
        this.raise(pos ?? this.start, "Unexpected token");
      };
      var DestructuringErrors3 = function() {
        this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = this.doubleProto = -1;
      };
      pp$92.checkPatternErrors = function(refDestructuringErrors, isAssign) {
        if (refDestructuringErrors) {
          refDestructuringErrors.trailingComma > -1 && this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element");
          var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;
          parens > -1 && this.raiseRecoverable(parens, isAssign ? "Assigning to rvalue" : "Parenthesized pattern");
        }
      }, pp$92.checkExpressionErrors = function(refDestructuringErrors, andThrow) {
        if (!refDestructuringErrors)
          return !1;
        var shorthandAssign = refDestructuringErrors.shorthandAssign, doubleProto = refDestructuringErrors.doubleProto;
        if (!andThrow)
          return shorthandAssign >= 0 || doubleProto >= 0;
        shorthandAssign >= 0 && this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"), doubleProto >= 0 && this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property");
      }, pp$92.checkYieldAwaitInDefaultParams = function() {
        this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos) && this.raise(this.yieldPos, "Yield expression cannot be a default value"), this.awaitPos && this.raise(this.awaitPos, "Await expression cannot be a default value");
      }, pp$92.isSimpleAssignTarget = function(expr) {
        return expr.type === "ParenthesizedExpression" ? this.isSimpleAssignTarget(expr.expression) : expr.type === "Identifier" || expr.type === "MemberExpression";
      };
      var pp$82 = Parser3.prototype;
      pp$82.parseTopLevel = function(node2) {
        var exports3 = /* @__PURE__ */ Object.create(null);
        for (node2.body || (node2.body = []); this.type !== types$12.eof; ) {
          var stmt = this.parseStatement(null, !0, exports3);
          node2.body.push(stmt);
        }
        if (this.inModule)
          for (var i2 = 0, list4 = Object.keys(this.undefinedExports); i2 < list4.length; i2 += 1) {
            var name2 = list4[i2];
            this.raiseRecoverable(this.undefinedExports[name2].start, "Export '" + name2 + "' is not defined");
          }
        return this.adaptDirectivePrologue(node2.body), this.next(), node2.sourceType = this.options.sourceType, this.finishNode(node2, "Program");
      };
      var loopLabel2 = { kind: "loop" }, switchLabel2 = { kind: "switch" };
      pp$82.isLet = function(context) {
        if (this.options.ecmaVersion < 6 || !this.isContextual("let"))
          return !1;
        skipWhiteSpace2.lastIndex = this.pos;
        var skip = skipWhiteSpace2.exec(this.input), next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);
        if (nextCh === 91 || nextCh === 92)
          return !0;
        if (context)
          return !1;
        if (nextCh === 123 || nextCh > 55295 && nextCh < 56320)
          return !0;
        if (isIdentifierStart2(nextCh, !0)) {
          for (var pos = next + 1; isIdentifierChar2(nextCh = this.input.charCodeAt(pos), !0); )
            ++pos;
          if (nextCh === 92 || nextCh > 55295 && nextCh < 56320)
            return !0;
          var ident = this.input.slice(next, pos);
          if (!keywordRelationalOperator2.test(ident))
            return !0;
        }
        return !1;
      }, pp$82.isAsyncFunction = function() {
        if (this.options.ecmaVersion < 8 || !this.isContextual("async"))
          return !1;
        skipWhiteSpace2.lastIndex = this.pos;
        var skip = skipWhiteSpace2.exec(this.input), next = this.pos + skip[0].length, after;
        return !lineBreak2.test(this.input.slice(this.pos, next)) && this.input.slice(next, next + 8) === "function" && (next + 8 === this.input.length || !(isIdentifierChar2(after = this.input.charCodeAt(next + 8)) || after > 55295 && after < 56320));
      }, pp$82.isUsingKeyword = function(isAwaitUsing, isFor) {
        if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? "await" : "using"))
          return !1;
        skipWhiteSpace2.lastIndex = this.pos;
        var skip = skipWhiteSpace2.exec(this.input), next = this.pos + skip[0].length;
        if (lineBreak2.test(this.input.slice(this.pos, next)))
          return !1;
        if (isAwaitUsing) {
          var awaitEndPos = next + 5, after;
          if (this.input.slice(next, awaitEndPos) !== "using" || awaitEndPos === this.input.length || isIdentifierChar2(after = this.input.charCodeAt(awaitEndPos)) || after > 55295 && after < 56320)
            return !1;
          skipWhiteSpace2.lastIndex = awaitEndPos;
          var skipAfterUsing = skipWhiteSpace2.exec(this.input);
          if (skipAfterUsing && lineBreak2.test(this.input.slice(awaitEndPos, awaitEndPos + skipAfterUsing[0].length)))
            return !1;
        }
        if (isFor) {
          var ofEndPos = next + 2, after$1;
          if (this.input.slice(next, ofEndPos) === "of" && (ofEndPos === this.input.length || !isIdentifierChar2(after$1 = this.input.charCodeAt(ofEndPos)) && !(after$1 > 55295 && after$1 < 56320)))
            return !1;
        }
        var ch = this.input.charCodeAt(next);
        return isIdentifierStart2(ch, !0) || ch === 92;
      }, pp$82.isAwaitUsing = function(isFor) {
        return this.isUsingKeyword(!0, isFor);
      }, pp$82.isUsing = function(isFor) {
        return this.isUsingKeyword(!1, isFor);
      }, pp$82.parseStatement = function(context, topLevel, exports3) {
        var starttype = this.type, node2 = this.startNode(), kind;
        switch (this.isLet(context) && (starttype = types$12._var, kind = "let"), starttype) {
          case types$12._break:
          case types$12._continue:
            return this.parseBreakContinueStatement(node2, starttype.keyword);
          case types$12._debugger:
            return this.parseDebuggerStatement(node2);
          case types$12._do:
            return this.parseDoStatement(node2);
          case types$12._for:
            return this.parseForStatement(node2);
          case types$12._function:
            return context && (this.strict || context !== "if" && context !== "label") && this.options.ecmaVersion >= 6 && this.unexpected(), this.parseFunctionStatement(node2, !1, !context);
          case types$12._class:
            return context && this.unexpected(), this.parseClass(node2, !0);
          case types$12._if:
            return this.parseIfStatement(node2);
          case types$12._return:
            return this.parseReturnStatement(node2);
          case types$12._switch:
            return this.parseSwitchStatement(node2);
          case types$12._throw:
            return this.parseThrowStatement(node2);
          case types$12._try:
            return this.parseTryStatement(node2);
          case types$12._const:
          case types$12._var:
            return kind = kind || this.value, context && kind !== "var" && this.unexpected(), this.parseVarStatement(node2, kind);
          case types$12._while:
            return this.parseWhileStatement(node2);
          case types$12._with:
            return this.parseWithStatement(node2);
          case types$12.braceL:
            return this.parseBlock(!0, node2);
          case types$12.semi:
            return this.parseEmptyStatement(node2);
          case types$12._export:
          case types$12._import:
            if (this.options.ecmaVersion > 10 && starttype === types$12._import) {
              skipWhiteSpace2.lastIndex = this.pos;
              var skip = skipWhiteSpace2.exec(this.input), next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);
              if (nextCh === 40 || nextCh === 46)
                return this.parseExpressionStatement(node2, this.parseExpression());
            }
            return this.options.allowImportExportEverywhere || (topLevel || this.raise(this.start, "'import' and 'export' may only appear at the top level"), this.inModule || this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'")), starttype === types$12._import ? this.parseImport(node2) : this.parseExport(node2, exports3);
          // If the statement does not start with a statement keyword or a
          // brace, it's an ExpressionStatement or LabeledStatement. We
          // simply start parsing an expression, and afterwards, if the
          // next token is a colon and the expression was a simple
          // Identifier node, we switch to interpreting it as a label.
          default:
            if (this.isAsyncFunction())
              return context && this.unexpected(), this.next(), this.parseFunctionStatement(node2, !0, !context);
            var usingKind = this.isAwaitUsing(!1) ? "await using" : this.isUsing(!1) ? "using" : null;
            if (usingKind)
              return topLevel && this.options.sourceType === "script" && this.raise(this.start, "Using declaration cannot appear in the top level when source type is `script`"), usingKind === "await using" && (this.canAwait || this.raise(this.start, "Await using cannot appear outside of async function"), this.next()), this.next(), this.parseVar(node2, !1, usingKind), this.semicolon(), this.finishNode(node2, "VariableDeclaration");
            var maybeName = this.value, expr = this.parseExpression();
            return starttype === types$12.name && expr.type === "Identifier" && this.eat(types$12.colon) ? this.parseLabeledStatement(node2, maybeName, expr, context) : this.parseExpressionStatement(node2, expr);
        }
      }, pp$82.parseBreakContinueStatement = function(node2, keyword) {
        var isBreak = keyword === "break";
        this.next(), this.eat(types$12.semi) || this.insertSemicolon() ? node2.label = null : this.type !== types$12.name ? this.unexpected() : (node2.label = this.parseIdent(), this.semicolon());
        for (var i2 = 0; i2 < this.labels.length; ++i2) {
          var lab = this.labels[i2];
          if ((node2.label == null || lab.name === node2.label.name) && (lab.kind != null && (isBreak || lab.kind === "loop") || node2.label && isBreak))
            break;
        }
        return i2 === this.labels.length && this.raise(node2.start, "Unsyntactic " + keyword), this.finishNode(node2, isBreak ? "BreakStatement" : "ContinueStatement");
      }, pp$82.parseDebuggerStatement = function(node2) {
        return this.next(), this.semicolon(), this.finishNode(node2, "DebuggerStatement");
      }, pp$82.parseDoStatement = function(node2) {
        return this.next(), this.labels.push(loopLabel2), node2.body = this.parseStatement("do"), this.labels.pop(), this.expect(types$12._while), node2.test = this.parseParenExpression(), this.options.ecmaVersion >= 6 ? this.eat(types$12.semi) : this.semicolon(), this.finishNode(node2, "DoWhileStatement");
      }, pp$82.parseForStatement = function(node2) {
        this.next();
        var awaitAt = this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual("await") ? this.lastTokStart : -1;
        if (this.labels.push(loopLabel2), this.enterScope(0), this.expect(types$12.parenL), this.type === types$12.semi)
          return awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node2, null);
        var isLet = this.isLet();
        if (this.type === types$12._var || this.type === types$12._const || isLet) {
          var init$1 = this.startNode(), kind = isLet ? "let" : this.value;
          return this.next(), this.parseVar(init$1, !0, kind), this.finishNode(init$1, "VariableDeclaration"), this.parseForAfterInit(node2, init$1, awaitAt);
        }
        var startsWithLet = this.isContextual("let"), isForOf = !1, usingKind = this.isUsing(!0) ? "using" : this.isAwaitUsing(!0) ? "await using" : null;
        if (usingKind) {
          var init$2 = this.startNode();
          return this.next(), usingKind === "await using" && this.next(), this.parseVar(init$2, !0, usingKind), this.finishNode(init$2, "VariableDeclaration"), this.parseForAfterInit(node2, init$2, awaitAt);
        }
        var containsEsc = this.containsEsc, refDestructuringErrors = new DestructuringErrors3(), initPos = this.start, init = awaitAt > -1 ? this.parseExprSubscripts(refDestructuringErrors, "await") : this.parseExpression(!0, refDestructuringErrors);
        return this.type === types$12._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of")) ? (awaitAt > -1 ? (this.type === types$12._in && this.unexpected(awaitAt), node2.await = !0) : isForOf && this.options.ecmaVersion >= 8 && (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async" ? this.unexpected() : this.options.ecmaVersion >= 9 && (node2.await = !1)), startsWithLet && isForOf && this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."), this.toAssignable(init, !1, refDestructuringErrors), this.checkLValPattern(init), this.parseForIn(node2, init)) : (this.checkExpressionErrors(refDestructuringErrors, !0), awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node2, init));
      }, pp$82.parseForAfterInit = function(node2, init, awaitAt) {
        return (this.type === types$12._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) && init.declarations.length === 1 ? (this.options.ecmaVersion >= 9 && (this.type === types$12._in ? awaitAt > -1 && this.unexpected(awaitAt) : node2.await = awaitAt > -1), this.parseForIn(node2, init)) : (awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node2, init));
      }, pp$82.parseFunctionStatement = function(node2, isAsync, declarationPosition) {
        return this.next(), this.parseFunction(node2, FUNC_STATEMENT2 | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT2), !1, isAsync);
      }, pp$82.parseIfStatement = function(node2) {
        return this.next(), node2.test = this.parseParenExpression(), node2.consequent = this.parseStatement("if"), node2.alternate = this.eat(types$12._else) ? this.parseStatement("if") : null, this.finishNode(node2, "IfStatement");
      }, pp$82.parseReturnStatement = function(node2) {
        return !this.inFunction && !this.options.allowReturnOutsideFunction && this.raise(this.start, "'return' outside of function"), this.next(), this.eat(types$12.semi) || this.insertSemicolon() ? node2.argument = null : (node2.argument = this.parseExpression(), this.semicolon()), this.finishNode(node2, "ReturnStatement");
      }, pp$82.parseSwitchStatement = function(node2) {
        this.next(), node2.discriminant = this.parseParenExpression(), node2.cases = [], this.expect(types$12.braceL), this.labels.push(switchLabel2), this.enterScope(0);
        for (var cur, sawDefault = !1; this.type !== types$12.braceR; )
          if (this.type === types$12._case || this.type === types$12._default) {
            var isCase = this.type === types$12._case;
            cur && this.finishNode(cur, "SwitchCase"), node2.cases.push(cur = this.startNode()), cur.consequent = [], this.next(), isCase ? cur.test = this.parseExpression() : (sawDefault && this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"), sawDefault = !0, cur.test = null), this.expect(types$12.colon);
          } else
            cur || this.unexpected(), cur.consequent.push(this.parseStatement(null));
        return this.exitScope(), cur && this.finishNode(cur, "SwitchCase"), this.next(), this.labels.pop(), this.finishNode(node2, "SwitchStatement");
      }, pp$82.parseThrowStatement = function(node2) {
        return this.next(), lineBreak2.test(this.input.slice(this.lastTokEnd, this.start)) && this.raise(this.lastTokEnd, "Illegal newline after throw"), node2.argument = this.parseExpression(), this.semicolon(), this.finishNode(node2, "ThrowStatement");
      };
      var empty$12 = [];
      pp$82.parseCatchClauseParam = function() {
        var param = this.parseBindingAtom(), simple = param.type === "Identifier";
        return this.enterScope(simple ? SCOPE_SIMPLE_CATCH2 : 0), this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH2 : BIND_LEXICAL2), this.expect(types$12.parenR), param;
      }, pp$82.parseTryStatement = function(node2) {
        if (this.next(), node2.block = this.parseBlock(), node2.handler = null, this.type === types$12._catch) {
          var clause = this.startNode();
          this.next(), this.eat(types$12.parenL) ? clause.param = this.parseCatchClauseParam() : (this.options.ecmaVersion < 10 && this.unexpected(), clause.param = null, this.enterScope(0)), clause.body = this.parseBlock(!1), this.exitScope(), node2.handler = this.finishNode(clause, "CatchClause");
        }
        return node2.finalizer = this.eat(types$12._finally) ? this.parseBlock() : null, !node2.handler && !node2.finalizer && this.raise(node2.start, "Missing catch or finally clause"), this.finishNode(node2, "TryStatement");
      }, pp$82.parseVarStatement = function(node2, kind, allowMissingInitializer) {
        return this.next(), this.parseVar(node2, !1, kind, allowMissingInitializer), this.semicolon(), this.finishNode(node2, "VariableDeclaration");
      }, pp$82.parseWhileStatement = function(node2) {
        return this.next(), node2.test = this.parseParenExpression(), this.labels.push(loopLabel2), node2.body = this.parseStatement("while"), this.labels.pop(), this.finishNode(node2, "WhileStatement");
      }, pp$82.parseWithStatement = function(node2) {
        return this.strict && this.raise(this.start, "'with' in strict mode"), this.next(), node2.object = this.parseParenExpression(), node2.body = this.parseStatement("with"), this.finishNode(node2, "WithStatement");
      }, pp$82.parseEmptyStatement = function(node2) {
        return this.next(), this.finishNode(node2, "EmptyStatement");
      }, pp$82.parseLabeledStatement = function(node2, maybeName, expr, context) {
        for (var i$1 = 0, list4 = this.labels; i$1 < list4.length; i$1 += 1) {
          var label = list4[i$1];
          label.name === maybeName && this.raise(expr.start, "Label '" + maybeName + "' is already declared");
        }
        for (var kind = this.type.isLoop ? "loop" : this.type === types$12._switch ? "switch" : null, i2 = this.labels.length - 1; i2 >= 0; i2--) {
          var label$1 = this.labels[i2];
          if (label$1.statementStart === node2.start)
            label$1.statementStart = this.start, label$1.kind = kind;
          else
            break;
        }
        return this.labels.push({ name: maybeName, kind, statementStart: this.start }), node2.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"), this.labels.pop(), node2.label = expr, this.finishNode(node2, "LabeledStatement");
      }, pp$82.parseExpressionStatement = function(node2, expr) {
        return node2.expression = expr, this.semicolon(), this.finishNode(node2, "ExpressionStatement");
      }, pp$82.parseBlock = function(createNewLexicalScope, node2, exitStrict) {
        for (createNewLexicalScope === void 0 && (createNewLexicalScope = !0), node2 === void 0 && (node2 = this.startNode()), node2.body = [], this.expect(types$12.braceL), createNewLexicalScope && this.enterScope(0); this.type !== types$12.braceR; ) {
          var stmt = this.parseStatement(null);
          node2.body.push(stmt);
        }
        return exitStrict && (this.strict = !1), this.next(), createNewLexicalScope && this.exitScope(), this.finishNode(node2, "BlockStatement");
      }, pp$82.parseFor = function(node2, init) {
        return node2.init = init, this.expect(types$12.semi), node2.test = this.type === types$12.semi ? null : this.parseExpression(), this.expect(types$12.semi), node2.update = this.type === types$12.parenR ? null : this.parseExpression(), this.expect(types$12.parenR), node2.body = this.parseStatement("for"), this.exitScope(), this.labels.pop(), this.finishNode(node2, "ForStatement");
      }, pp$82.parseForIn = function(node2, init) {
        var isForIn = this.type === types$12._in;
        return this.next(), init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.options.ecmaVersion < 8 || this.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier") && this.raise(
          init.start,
          (isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer"
        ), node2.left = init, node2.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(), this.expect(types$12.parenR), node2.body = this.parseStatement("for"), this.exitScope(), this.labels.pop(), this.finishNode(node2, isForIn ? "ForInStatement" : "ForOfStatement");
      }, pp$82.parseVar = function(node2, isFor, kind, allowMissingInitializer) {
        for (node2.declarations = [], node2.kind = kind; ; ) {
          var decl = this.startNode();
          if (this.parseVarId(decl, kind), this.eat(types$12.eq) ? decl.init = this.parseMaybeAssign(isFor) : !allowMissingInitializer && kind === "const" && !(this.type === types$12._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) ? this.unexpected() : !allowMissingInitializer && (kind === "using" || kind === "await using") && this.options.ecmaVersion >= 17 && this.type !== types$12._in && !this.isContextual("of") ? this.raise(this.lastTokEnd, "Missing initializer in " + kind + " declaration") : !allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$12._in || this.isContextual("of"))) ? this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value") : decl.init = null, node2.declarations.push(this.finishNode(decl, "VariableDeclarator")), !this.eat(types$12.comma))
            break;
        }
        return node2;
      }, pp$82.parseVarId = function(decl, kind) {
        decl.id = kind === "using" || kind === "await using" ? this.parseIdent() : this.parseBindingAtom(), this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR2 : BIND_LEXICAL2, !1);
      };
      var FUNC_STATEMENT2 = 1, FUNC_HANGING_STATEMENT2 = 2, FUNC_NULLABLE_ID2 = 4;
      pp$82.parseFunction = function(node2, statement, allowExpressionBody, isAsync, forInit) {
        this.initFunction(node2), (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) && (this.type === types$12.star && statement & FUNC_HANGING_STATEMENT2 && this.unexpected(), node2.generator = this.eat(types$12.star)), this.options.ecmaVersion >= 8 && (node2.async = !!isAsync), statement & FUNC_STATEMENT2 && (node2.id = statement & FUNC_NULLABLE_ID2 && this.type !== types$12.name ? null : this.parseIdent(), node2.id && !(statement & FUNC_HANGING_STATEMENT2) && this.checkLValSimple(node2.id, this.strict || node2.generator || node2.async ? this.treatFunctionsAsVar ? BIND_VAR2 : BIND_LEXICAL2 : BIND_FUNCTION2));
        var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
        return this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, this.enterScope(functionFlags2(node2.async, node2.generator)), statement & FUNC_STATEMENT2 || (node2.id = this.type === types$12.name ? this.parseIdent() : null), this.parseFunctionParams(node2), this.parseFunctionBody(node2, allowExpressionBody, !1, forInit), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.finishNode(node2, statement & FUNC_STATEMENT2 ? "FunctionDeclaration" : "FunctionExpression");
      }, pp$82.parseFunctionParams = function(node2) {
        this.expect(types$12.parenL), node2.params = this.parseBindingList(types$12.parenR, !1, this.options.ecmaVersion >= 8), this.checkYieldAwaitInDefaultParams();
      }, pp$82.parseClass = function(node2, isStatement) {
        this.next();
        var oldStrict = this.strict;
        this.strict = !0, this.parseClassId(node2, isStatement), this.parseClassSuper(node2);
        var privateNameMap = this.enterClassBody(), classBody = this.startNode(), hadConstructor = !1;
        for (classBody.body = [], this.expect(types$12.braceL); this.type !== types$12.braceR; ) {
          var element2 = this.parseClassElement(node2.superClass !== null);
          element2 && (classBody.body.push(element2), element2.type === "MethodDefinition" && element2.kind === "constructor" ? (hadConstructor && this.raiseRecoverable(element2.start, "Duplicate constructor in the same class"), hadConstructor = !0) : element2.key && element2.key.type === "PrivateIdentifier" && isPrivateNameConflicted2(privateNameMap, element2) && this.raiseRecoverable(element2.key.start, "Identifier '#" + element2.key.name + "' has already been declared"));
        }
        return this.strict = oldStrict, this.next(), node2.body = this.finishNode(classBody, "ClassBody"), this.exitClassBody(), this.finishNode(node2, isStatement ? "ClassDeclaration" : "ClassExpression");
      }, pp$82.parseClassElement = function(constructorAllowsSuper) {
        if (this.eat(types$12.semi))
          return null;
        var ecmaVersion2 = this.options.ecmaVersion, node2 = this.startNode(), keyName = "", isGenerator = !1, isAsync = !1, kind = "method", isStatic = !1;
        if (this.eatContextual("static")) {
          if (ecmaVersion2 >= 13 && this.eat(types$12.braceL))
            return this.parseClassStaticBlock(node2), node2;
          this.isClassElementNameStart() || this.type === types$12.star ? isStatic = !0 : keyName = "static";
        }
        if (node2.static = isStatic, !keyName && ecmaVersion2 >= 8 && this.eatContextual("async") && ((this.isClassElementNameStart() || this.type === types$12.star) && !this.canInsertSemicolon() ? isAsync = !0 : keyName = "async"), !keyName && (ecmaVersion2 >= 9 || !isAsync) && this.eat(types$12.star) && (isGenerator = !0), !keyName && !isAsync && !isGenerator) {
          var lastValue = this.value;
          (this.eatContextual("get") || this.eatContextual("set")) && (this.isClassElementNameStart() ? kind = lastValue : keyName = lastValue);
        }
        if (keyName ? (node2.computed = !1, node2.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc), node2.key.name = keyName, this.finishNode(node2.key, "Identifier")) : this.parseClassElementName(node2), ecmaVersion2 < 13 || this.type === types$12.parenL || kind !== "method" || isGenerator || isAsync) {
          var isConstructor = !node2.static && checkKeyName2(node2, "constructor"), allowsDirectSuper = isConstructor && constructorAllowsSuper;
          isConstructor && kind !== "method" && this.raise(node2.key.start, "Constructor can't have get/set modifier"), node2.kind = isConstructor ? "constructor" : kind, this.parseClassMethod(node2, isGenerator, isAsync, allowsDirectSuper);
        } else
          this.parseClassField(node2);
        return node2;
      }, pp$82.isClassElementNameStart = function() {
        return this.type === types$12.name || this.type === types$12.privateId || this.type === types$12.num || this.type === types$12.string || this.type === types$12.bracketL || this.type.keyword;
      }, pp$82.parseClassElementName = function(element2) {
        this.type === types$12.privateId ? (this.value === "constructor" && this.raise(this.start, "Classes can't have an element named '#constructor'"), element2.computed = !1, element2.key = this.parsePrivateIdent()) : this.parsePropertyName(element2);
      }, pp$82.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {
        var key2 = method.key;
        method.kind === "constructor" ? (isGenerator && this.raise(key2.start, "Constructor can't be a generator"), isAsync && this.raise(key2.start, "Constructor can't be an async method")) : method.static && checkKeyName2(method, "prototype") && this.raise(key2.start, "Classes may not have a static property named prototype");
        var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);
        return method.kind === "get" && value.params.length !== 0 && this.raiseRecoverable(value.start, "getter should have no params"), method.kind === "set" && value.params.length !== 1 && this.raiseRecoverable(value.start, "setter should have exactly one param"), method.kind === "set" && value.params[0].type === "RestElement" && this.raiseRecoverable(value.params[0].start, "Setter cannot use rest params"), this.finishNode(method, "MethodDefinition");
      }, pp$82.parseClassField = function(field) {
        return checkKeyName2(field, "constructor") ? this.raise(field.key.start, "Classes can't have a field named 'constructor'") : field.static && checkKeyName2(field, "prototype") && this.raise(field.key.start, "Classes can't have a static field named 'prototype'"), this.eat(types$12.eq) ? (this.enterScope(SCOPE_CLASS_FIELD_INIT2 | SCOPE_SUPER2), field.value = this.parseMaybeAssign(), this.exitScope()) : field.value = null, this.semicolon(), this.finishNode(field, "PropertyDefinition");
      }, pp$82.parseClassStaticBlock = function(node2) {
        node2.body = [];
        var oldLabels = this.labels;
        for (this.labels = [], this.enterScope(SCOPE_CLASS_STATIC_BLOCK2 | SCOPE_SUPER2); this.type !== types$12.braceR; ) {
          var stmt = this.parseStatement(null);
          node2.body.push(stmt);
        }
        return this.next(), this.exitScope(), this.labels = oldLabels, this.finishNode(node2, "StaticBlock");
      }, pp$82.parseClassId = function(node2, isStatement) {
        this.type === types$12.name ? (node2.id = this.parseIdent(), isStatement && this.checkLValSimple(node2.id, BIND_LEXICAL2, !1)) : (isStatement === !0 && this.unexpected(), node2.id = null);
      }, pp$82.parseClassSuper = function(node2) {
        node2.superClass = this.eat(types$12._extends) ? this.parseExprSubscripts(null, !1) : null;
      }, pp$82.enterClassBody = function() {
        var element2 = { declared: /* @__PURE__ */ Object.create(null), used: [] };
        return this.privateNameStack.push(element2), element2.declared;
      }, pp$82.exitClassBody = function() {
        var ref3 = this.privateNameStack.pop(), declared = ref3.declared, used = ref3.used;
        if (this.options.checkPrivateFields)
          for (var len = this.privateNameStack.length, parent = len === 0 ? null : this.privateNameStack[len - 1], i2 = 0; i2 < used.length; ++i2) {
            var id = used[i2];
            hasOwn2(declared, id.name) || (parent ? parent.used.push(id) : this.raiseRecoverable(id.start, "Private field '#" + id.name + "' must be declared in an enclosing class"));
          }
      };
      function isPrivateNameConflicted2(privateNameMap, element2) {
        var name2 = element2.key.name, curr = privateNameMap[name2], next = "true";
        return element2.type === "MethodDefinition" && (element2.kind === "get" || element2.kind === "set") && (next = (element2.static ? "s" : "i") + element2.kind), curr === "iget" && next === "iset" || curr === "iset" && next === "iget" || curr === "sget" && next === "sset" || curr === "sset" && next === "sget" ? (privateNameMap[name2] = "true", !1) : curr ? !0 : (privateNameMap[name2] = next, !1);
      }
      function checkKeyName2(node2, name2) {
        var computed = node2.computed, key2 = node2.key;
        return !computed && (key2.type === "Identifier" && key2.name === name2 || key2.type === "Literal" && key2.value === name2);
      }
      pp$82.parseExportAllDeclaration = function(node2, exports3) {
        return this.options.ecmaVersion >= 11 && (this.eatContextual("as") ? (node2.exported = this.parseModuleExportName(), this.checkExport(exports3, node2.exported, this.lastTokStart)) : node2.exported = null), this.expectContextual("from"), this.type !== types$12.string && this.unexpected(), node2.source = this.parseExprAtom(), this.options.ecmaVersion >= 16 && (node2.attributes = this.parseWithClause()), this.semicolon(), this.finishNode(node2, "ExportAllDeclaration");
      }, pp$82.parseExport = function(node2, exports3) {
        if (this.next(), this.eat(types$12.star))
          return this.parseExportAllDeclaration(node2, exports3);
        if (this.eat(types$12._default))
          return this.checkExport(exports3, "default", this.lastTokStart), node2.declaration = this.parseExportDefaultDeclaration(), this.finishNode(node2, "ExportDefaultDeclaration");
        if (this.shouldParseExportStatement())
          node2.declaration = this.parseExportDeclaration(node2), node2.declaration.type === "VariableDeclaration" ? this.checkVariableExport(exports3, node2.declaration.declarations) : this.checkExport(exports3, node2.declaration.id, node2.declaration.id.start), node2.specifiers = [], node2.source = null, this.options.ecmaVersion >= 16 && (node2.attributes = []);
        else {
          if (node2.declaration = null, node2.specifiers = this.parseExportSpecifiers(exports3), this.eatContextual("from"))
            this.type !== types$12.string && this.unexpected(), node2.source = this.parseExprAtom(), this.options.ecmaVersion >= 16 && (node2.attributes = this.parseWithClause());
          else {
            for (var i2 = 0, list4 = node2.specifiers; i2 < list4.length; i2 += 1) {
              var spec = list4[i2];
              this.checkUnreserved(spec.local), this.checkLocalExport(spec.local), spec.local.type === "Literal" && this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`.");
            }
            node2.source = null, this.options.ecmaVersion >= 16 && (node2.attributes = []);
          }
          this.semicolon();
        }
        return this.finishNode(node2, "ExportNamedDeclaration");
      }, pp$82.parseExportDeclaration = function(node2) {
        return this.parseStatement(null);
      }, pp$82.parseExportDefaultDeclaration = function() {
        var isAsync;
        if (this.type === types$12._function || (isAsync = this.isAsyncFunction())) {
          var fNode = this.startNode();
          return this.next(), isAsync && this.next(), this.parseFunction(fNode, FUNC_STATEMENT2 | FUNC_NULLABLE_ID2, !1, isAsync);
        } else if (this.type === types$12._class) {
          var cNode = this.startNode();
          return this.parseClass(cNode, "nullableID");
        } else {
          var declaration = this.parseMaybeAssign();
          return this.semicolon(), declaration;
        }
      }, pp$82.checkExport = function(exports3, name2, pos) {
        exports3 && (typeof name2 != "string" && (name2 = name2.type === "Identifier" ? name2.name : name2.value), hasOwn2(exports3, name2) && this.raiseRecoverable(pos, "Duplicate export '" + name2 + "'"), exports3[name2] = !0);
      }, pp$82.checkPatternExport = function(exports3, pat) {
        var type = pat.type;
        if (type === "Identifier")
          this.checkExport(exports3, pat, pat.start);
        else if (type === "ObjectPattern")
          for (var i2 = 0, list4 = pat.properties; i2 < list4.length; i2 += 1) {
            var prop = list4[i2];
            this.checkPatternExport(exports3, prop);
          }
        else if (type === "ArrayPattern")
          for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {
            var elt = list$1[i$1];
            elt && this.checkPatternExport(exports3, elt);
          }
        else type === "Property" ? this.checkPatternExport(exports3, pat.value) : type === "AssignmentPattern" ? this.checkPatternExport(exports3, pat.left) : type === "RestElement" && this.checkPatternExport(exports3, pat.argument);
      }, pp$82.checkVariableExport = function(exports3, decls) {
        if (exports3)
          for (var i2 = 0, list4 = decls; i2 < list4.length; i2 += 1) {
            var decl = list4[i2];
            this.checkPatternExport(exports3, decl.id);
          }
      }, pp$82.shouldParseExportStatement = function() {
        return this.type.keyword === "var" || this.type.keyword === "const" || this.type.keyword === "class" || this.type.keyword === "function" || this.isLet() || this.isAsyncFunction();
      }, pp$82.parseExportSpecifier = function(exports3) {
        var node2 = this.startNode();
        return node2.local = this.parseModuleExportName(), node2.exported = this.eatContextual("as") ? this.parseModuleExportName() : node2.local, this.checkExport(
          exports3,
          node2.exported,
          node2.exported.start
        ), this.finishNode(node2, "ExportSpecifier");
      }, pp$82.parseExportSpecifiers = function(exports3) {
        var nodes = [], first = !0;
        for (this.expect(types$12.braceL); !this.eat(types$12.braceR); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), this.afterTrailingComma(types$12.braceR))
            break;
          nodes.push(this.parseExportSpecifier(exports3));
        }
        return nodes;
      }, pp$82.parseImport = function(node2) {
        return this.next(), this.type === types$12.string ? (node2.specifiers = empty$12, node2.source = this.parseExprAtom()) : (node2.specifiers = this.parseImportSpecifiers(), this.expectContextual("from"), node2.source = this.type === types$12.string ? this.parseExprAtom() : this.unexpected()), this.options.ecmaVersion >= 16 && (node2.attributes = this.parseWithClause()), this.semicolon(), this.finishNode(node2, "ImportDeclaration");
      }, pp$82.parseImportSpecifier = function() {
        var node2 = this.startNode();
        return node2.imported = this.parseModuleExportName(), this.eatContextual("as") ? node2.local = this.parseIdent() : (this.checkUnreserved(node2.imported), node2.local = node2.imported), this.checkLValSimple(node2.local, BIND_LEXICAL2), this.finishNode(node2, "ImportSpecifier");
      }, pp$82.parseImportDefaultSpecifier = function() {
        var node2 = this.startNode();
        return node2.local = this.parseIdent(), this.checkLValSimple(node2.local, BIND_LEXICAL2), this.finishNode(node2, "ImportDefaultSpecifier");
      }, pp$82.parseImportNamespaceSpecifier = function() {
        var node2 = this.startNode();
        return this.next(), this.expectContextual("as"), node2.local = this.parseIdent(), this.checkLValSimple(node2.local, BIND_LEXICAL2), this.finishNode(node2, "ImportNamespaceSpecifier");
      }, pp$82.parseImportSpecifiers = function() {
        var nodes = [], first = !0;
        if (this.type === types$12.name && (nodes.push(this.parseImportDefaultSpecifier()), !this.eat(types$12.comma)))
          return nodes;
        if (this.type === types$12.star)
          return nodes.push(this.parseImportNamespaceSpecifier()), nodes;
        for (this.expect(types$12.braceL); !this.eat(types$12.braceR); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), this.afterTrailingComma(types$12.braceR))
            break;
          nodes.push(this.parseImportSpecifier());
        }
        return nodes;
      }, pp$82.parseWithClause = function() {
        var nodes = [];
        if (!this.eat(types$12._with))
          return nodes;
        this.expect(types$12.braceL);
        for (var attributeKeys = {}, first = !0; !this.eat(types$12.braceR); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), this.afterTrailingComma(types$12.braceR))
            break;
          var attr = this.parseImportAttribute(), keyName = attr.key.type === "Identifier" ? attr.key.name : attr.key.value;
          hasOwn2(attributeKeys, keyName) && this.raiseRecoverable(attr.key.start, "Duplicate attribute key '" + keyName + "'"), attributeKeys[keyName] = !0, nodes.push(attr);
        }
        return nodes;
      }, pp$82.parseImportAttribute = function() {
        var node2 = this.startNode();
        return node2.key = this.type === types$12.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never"), this.expect(types$12.colon), this.type !== types$12.string && this.unexpected(), node2.value = this.parseExprAtom(), this.finishNode(node2, "ImportAttribute");
      }, pp$82.parseModuleExportName = function() {
        if (this.options.ecmaVersion >= 13 && this.type === types$12.string) {
          var stringLiteral = this.parseLiteral(this.value);
          return loneSurrogate2.test(stringLiteral.value) && this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."), stringLiteral;
        }
        return this.parseIdent(!0);
      }, pp$82.adaptDirectivePrologue = function(statements) {
        for (var i2 = 0; i2 < statements.length && this.isDirectiveCandidate(statements[i2]); ++i2)
          statements[i2].directive = statements[i2].expression.raw.slice(1, -1);
      }, pp$82.isDirectiveCandidate = function(statement) {
        return this.options.ecmaVersion >= 5 && statement.type === "ExpressionStatement" && statement.expression.type === "Literal" && typeof statement.expression.value == "string" && // Reject parenthesized strings.
        (this.input[statement.start] === '"' || this.input[statement.start] === "'");
      };
      var pp$72 = Parser3.prototype;
      pp$72.toAssignable = function(node2, isBinding, refDestructuringErrors) {
        if (this.options.ecmaVersion >= 6 && node2)
          switch (node2.type) {
            case "Identifier":
              this.inAsync && node2.name === "await" && this.raise(node2.start, "Cannot use 'await' as identifier inside an async function");
              break;
            case "ObjectPattern":
            case "ArrayPattern":
            case "AssignmentPattern":
            case "RestElement":
              break;
            case "ObjectExpression":
              node2.type = "ObjectPattern", refDestructuringErrors && this.checkPatternErrors(refDestructuringErrors, !0);
              for (var i2 = 0, list4 = node2.properties; i2 < list4.length; i2 += 1) {
                var prop = list4[i2];
                this.toAssignable(prop, isBinding), prop.type === "RestElement" && (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") && this.raise(prop.argument.start, "Unexpected token");
              }
              break;
            case "Property":
              node2.kind !== "init" && this.raise(node2.key.start, "Object pattern can't contain getter or setter"), this.toAssignable(node2.value, isBinding);
              break;
            case "ArrayExpression":
              node2.type = "ArrayPattern", refDestructuringErrors && this.checkPatternErrors(refDestructuringErrors, !0), this.toAssignableList(node2.elements, isBinding);
              break;
            case "SpreadElement":
              node2.type = "RestElement", this.toAssignable(node2.argument, isBinding), node2.argument.type === "AssignmentPattern" && this.raise(node2.argument.start, "Rest elements cannot have a default value");
              break;
            case "AssignmentExpression":
              node2.operator !== "=" && this.raise(node2.left.end, "Only '=' operator can be used for specifying default value."), node2.type = "AssignmentPattern", delete node2.operator, this.toAssignable(node2.left, isBinding);
              break;
            case "ParenthesizedExpression":
              this.toAssignable(node2.expression, isBinding, refDestructuringErrors);
              break;
            case "ChainExpression":
              this.raiseRecoverable(node2.start, "Optional chaining cannot appear in left-hand side");
              break;
            case "MemberExpression":
              if (!isBinding)
                break;
            default:
              this.raise(node2.start, "Assigning to rvalue");
          }
        else refDestructuringErrors && this.checkPatternErrors(refDestructuringErrors, !0);
        return node2;
      }, pp$72.toAssignableList = function(exprList, isBinding) {
        for (var end = exprList.length, i2 = 0; i2 < end; i2++) {
          var elt = exprList[i2];
          elt && this.toAssignable(elt, isBinding);
        }
        if (end) {
          var last = exprList[end - 1];
          this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier" && this.unexpected(last.argument.start);
        }
        return exprList;
      }, pp$72.parseSpread = function(refDestructuringErrors) {
        var node2 = this.startNode();
        return this.next(), node2.argument = this.parseMaybeAssign(!1, refDestructuringErrors), this.finishNode(node2, "SpreadElement");
      }, pp$72.parseRestBinding = function() {
        var node2 = this.startNode();
        return this.next(), this.options.ecmaVersion === 6 && this.type !== types$12.name && this.unexpected(), node2.argument = this.parseBindingAtom(), this.finishNode(node2, "RestElement");
      }, pp$72.parseBindingAtom = function() {
        if (this.options.ecmaVersion >= 6)
          switch (this.type) {
            case types$12.bracketL:
              var node2 = this.startNode();
              return this.next(), node2.elements = this.parseBindingList(types$12.bracketR, !0, !0), this.finishNode(node2, "ArrayPattern");
            case types$12.braceL:
              return this.parseObj(!0);
          }
        return this.parseIdent();
      }, pp$72.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {
        for (var elts = [], first = !0; !this.eat(close); )
          if (first ? first = !1 : this.expect(types$12.comma), allowEmpty && this.type === types$12.comma)
            elts.push(null);
          else {
            if (allowTrailingComma && this.afterTrailingComma(close))
              break;
            if (this.type === types$12.ellipsis) {
              var rest = this.parseRestBinding();
              this.parseBindingListItem(rest), elts.push(rest), this.type === types$12.comma && this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"), this.expect(close);
              break;
            } else
              elts.push(this.parseAssignableListItem(allowModifiers));
          }
        return elts;
      }, pp$72.parseAssignableListItem = function(allowModifiers) {
        var elem = this.parseMaybeDefault(this.start, this.startLoc);
        return this.parseBindingListItem(elem), elem;
      }, pp$72.parseBindingListItem = function(param) {
        return param;
      }, pp$72.parseMaybeDefault = function(startPos, startLoc, left) {
        if (left = left || this.parseBindingAtom(), this.options.ecmaVersion < 6 || !this.eat(types$12.eq))
          return left;
        var node2 = this.startNodeAt(startPos, startLoc);
        return node2.left = left, node2.right = this.parseMaybeAssign(), this.finishNode(node2, "AssignmentPattern");
      }, pp$72.checkLValSimple = function(expr, bindingType, checkClashes) {
        bindingType === void 0 && (bindingType = BIND_NONE2);
        var isBind = bindingType !== BIND_NONE2;
        switch (expr.type) {
          case "Identifier":
            this.strict && this.reservedWordsStrictBind.test(expr.name) && this.raiseRecoverable(expr.start, (isBind ? "Binding " : "Assigning to ") + expr.name + " in strict mode"), isBind && (bindingType === BIND_LEXICAL2 && expr.name === "let" && this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"), checkClashes && (hasOwn2(checkClashes, expr.name) && this.raiseRecoverable(expr.start, "Argument name clash"), checkClashes[expr.name] = !0), bindingType !== BIND_OUTSIDE2 && this.declareName(expr.name, bindingType, expr.start));
            break;
          case "ChainExpression":
            this.raiseRecoverable(expr.start, "Optional chaining cannot appear in left-hand side");
            break;
          case "MemberExpression":
            isBind && this.raiseRecoverable(expr.start, "Binding member expression");
            break;
          case "ParenthesizedExpression":
            return isBind && this.raiseRecoverable(expr.start, "Binding parenthesized expression"), this.checkLValSimple(expr.expression, bindingType, checkClashes);
          default:
            this.raise(expr.start, (isBind ? "Binding" : "Assigning to") + " rvalue");
        }
      }, pp$72.checkLValPattern = function(expr, bindingType, checkClashes) {
        switch (bindingType === void 0 && (bindingType = BIND_NONE2), expr.type) {
          case "ObjectPattern":
            for (var i2 = 0, list4 = expr.properties; i2 < list4.length; i2 += 1) {
              var prop = list4[i2];
              this.checkLValInnerPattern(prop, bindingType, checkClashes);
            }
            break;
          case "ArrayPattern":
            for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {
              var elem = list$1[i$1];
              elem && this.checkLValInnerPattern(elem, bindingType, checkClashes);
            }
            break;
          default:
            this.checkLValSimple(expr, bindingType, checkClashes);
        }
      }, pp$72.checkLValInnerPattern = function(expr, bindingType, checkClashes) {
        switch (bindingType === void 0 && (bindingType = BIND_NONE2), expr.type) {
          case "Property":
            this.checkLValInnerPattern(expr.value, bindingType, checkClashes);
            break;
          case "AssignmentPattern":
            this.checkLValPattern(expr.left, bindingType, checkClashes);
            break;
          case "RestElement":
            this.checkLValPattern(expr.argument, bindingType, checkClashes);
            break;
          default:
            this.checkLValPattern(expr, bindingType, checkClashes);
        }
      };
      var TokContext3 = function(token, isExpr, preserveSpace, override, generator) {
        this.token = token, this.isExpr = !!isExpr, this.preserveSpace = !!preserveSpace, this.override = override, this.generator = !!generator;
      }, types2 = {
        b_stat: new TokContext3("{", !1),
        b_expr: new TokContext3("{", !0),
        b_tmpl: new TokContext3("${", !1),
        p_stat: new TokContext3("(", !1),
        p_expr: new TokContext3("(", !0),
        q_tmpl: new TokContext3("`", !0, !0, function(p) {
          return p.tryReadTemplateToken();
        }),
        f_stat: new TokContext3("function", !1),
        f_expr: new TokContext3("function", !0),
        f_expr_gen: new TokContext3("function", !0, !1, null, !0),
        f_gen: new TokContext3("function", !1, !1, null, !0)
      }, pp$62 = Parser3.prototype;
      pp$62.initialContext = function() {
        return [types2.b_stat];
      }, pp$62.curContext = function() {
        return this.context[this.context.length - 1];
      }, pp$62.braceIsBlock = function(prevType) {
        var parent = this.curContext();
        return parent === types2.f_expr || parent === types2.f_stat ? !0 : prevType === types$12.colon && (parent === types2.b_stat || parent === types2.b_expr) ? !parent.isExpr : prevType === types$12._return || prevType === types$12.name && this.exprAllowed ? lineBreak2.test(this.input.slice(this.lastTokEnd, this.start)) : prevType === types$12._else || prevType === types$12.semi || prevType === types$12.eof || prevType === types$12.parenR || prevType === types$12.arrow ? !0 : prevType === types$12.braceL ? parent === types2.b_stat : prevType === types$12._var || prevType === types$12._const || prevType === types$12.name ? !1 : !this.exprAllowed;
      }, pp$62.inGeneratorContext = function() {
        for (var i2 = this.context.length - 1; i2 >= 1; i2--) {
          var context = this.context[i2];
          if (context.token === "function")
            return context.generator;
        }
        return !1;
      }, pp$62.updateContext = function(prevType) {
        var update, type = this.type;
        type.keyword && prevType === types$12.dot ? this.exprAllowed = !1 : (update = type.updateContext) ? update.call(this, prevType) : this.exprAllowed = type.beforeExpr;
      }, pp$62.overrideContext = function(tokenCtx) {
        this.curContext() !== tokenCtx && (this.context[this.context.length - 1] = tokenCtx);
      }, types$12.parenR.updateContext = types$12.braceR.updateContext = function() {
        if (this.context.length === 1) {
          this.exprAllowed = !0;
          return;
        }
        var out = this.context.pop();
        out === types2.b_stat && this.curContext().token === "function" && (out = this.context.pop()), this.exprAllowed = !out.isExpr;
      }, types$12.braceL.updateContext = function(prevType) {
        this.context.push(this.braceIsBlock(prevType) ? types2.b_stat : types2.b_expr), this.exprAllowed = !0;
      }, types$12.dollarBraceL.updateContext = function() {
        this.context.push(types2.b_tmpl), this.exprAllowed = !0;
      }, types$12.parenL.updateContext = function(prevType) {
        var statementParens = prevType === types$12._if || prevType === types$12._for || prevType === types$12._with || prevType === types$12._while;
        this.context.push(statementParens ? types2.p_stat : types2.p_expr), this.exprAllowed = !0;
      }, types$12.incDec.updateContext = function() {
      }, types$12._function.updateContext = types$12._class.updateContext = function(prevType) {
        prevType.beforeExpr && prevType !== types$12._else && !(prevType === types$12.semi && this.curContext() !== types2.p_stat) && !(prevType === types$12._return && lineBreak2.test(this.input.slice(this.lastTokEnd, this.start))) && !((prevType === types$12.colon || prevType === types$12.braceL) && this.curContext() === types2.b_stat) ? this.context.push(types2.f_expr) : this.context.push(types2.f_stat), this.exprAllowed = !1;
      }, types$12.colon.updateContext = function() {
        this.curContext().token === "function" && this.context.pop(), this.exprAllowed = !0;
      }, types$12.backQuote.updateContext = function() {
        this.curContext() === types2.q_tmpl ? this.context.pop() : this.context.push(types2.q_tmpl), this.exprAllowed = !1;
      }, types$12.star.updateContext = function(prevType) {
        if (prevType === types$12._function) {
          var index2 = this.context.length - 1;
          this.context[index2] === types2.f_expr ? this.context[index2] = types2.f_expr_gen : this.context[index2] = types2.f_gen;
        }
        this.exprAllowed = !0;
      }, types$12.name.updateContext = function(prevType) {
        var allowed = !1;
        this.options.ecmaVersion >= 6 && prevType !== types$12.dot && (this.value === "of" && !this.exprAllowed || this.value === "yield" && this.inGeneratorContext()) && (allowed = !0), this.exprAllowed = allowed;
      };
      var pp$52 = Parser3.prototype;
      pp$52.checkPropClash = function(prop, propHash, refDestructuringErrors) {
        if (!(this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") && !(this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))) {
          var key2 = prop.key, name2;
          switch (key2.type) {
            case "Identifier":
              name2 = key2.name;
              break;
            case "Literal":
              name2 = String(key2.value);
              break;
            default:
              return;
          }
          var kind = prop.kind;
          if (this.options.ecmaVersion >= 6) {
            name2 === "__proto__" && kind === "init" && (propHash.proto && (refDestructuringErrors ? refDestructuringErrors.doubleProto < 0 && (refDestructuringErrors.doubleProto = key2.start) : this.raiseRecoverable(key2.start, "Redefinition of __proto__ property")), propHash.proto = !0);
            return;
          }
          name2 = "$" + name2;
          var other = propHash[name2];
          if (other) {
            var redefinition;
            kind === "init" ? redefinition = this.strict && other.init || other.get || other.set : redefinition = other.init || other[kind], redefinition && this.raiseRecoverable(key2.start, "Redefinition of property");
          } else
            other = propHash[name2] = {
              init: !1,
              get: !1,
              set: !1
            };
          other[kind] = !0;
        }
      }, pp$52.parseExpression = function(forInit, refDestructuringErrors) {
        var startPos = this.start, startLoc = this.startLoc, expr = this.parseMaybeAssign(forInit, refDestructuringErrors);
        if (this.type === types$12.comma) {
          var node2 = this.startNodeAt(startPos, startLoc);
          for (node2.expressions = [expr]; this.eat(types$12.comma); )
            node2.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors));
          return this.finishNode(node2, "SequenceExpression");
        }
        return expr;
      }, pp$52.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {
        if (this.isContextual("yield")) {
          if (this.inGenerator)
            return this.parseYield(forInit);
          this.exprAllowed = !1;
        }
        var ownDestructuringErrors = !1, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;
        refDestructuringErrors ? (oldParenAssign = refDestructuringErrors.parenthesizedAssign, oldTrailingComma = refDestructuringErrors.trailingComma, oldDoubleProto = refDestructuringErrors.doubleProto, refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1) : (refDestructuringErrors = new DestructuringErrors3(), ownDestructuringErrors = !0);
        var startPos = this.start, startLoc = this.startLoc;
        (this.type === types$12.parenL || this.type === types$12.name) && (this.potentialArrowAt = this.start, this.potentialArrowInForAwait = forInit === "await");
        var left = this.parseMaybeConditional(forInit, refDestructuringErrors);
        if (afterLeftParse && (left = afterLeftParse.call(this, left, startPos, startLoc)), this.type.isAssign) {
          var node2 = this.startNodeAt(startPos, startLoc);
          return node2.operator = this.value, this.type === types$12.eq && (left = this.toAssignable(left, !1, refDestructuringErrors)), ownDestructuringErrors || (refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1), refDestructuringErrors.shorthandAssign >= left.start && (refDestructuringErrors.shorthandAssign = -1), this.type === types$12.eq ? this.checkLValPattern(left) : this.checkLValSimple(left), node2.left = left, this.next(), node2.right = this.parseMaybeAssign(forInit), oldDoubleProto > -1 && (refDestructuringErrors.doubleProto = oldDoubleProto), this.finishNode(node2, "AssignmentExpression");
        } else
          ownDestructuringErrors && this.checkExpressionErrors(refDestructuringErrors, !0);
        return oldParenAssign > -1 && (refDestructuringErrors.parenthesizedAssign = oldParenAssign), oldTrailingComma > -1 && (refDestructuringErrors.trailingComma = oldTrailingComma), left;
      }, pp$52.parseMaybeConditional = function(forInit, refDestructuringErrors) {
        var startPos = this.start, startLoc = this.startLoc, expr = this.parseExprOps(forInit, refDestructuringErrors);
        if (this.checkExpressionErrors(refDestructuringErrors))
          return expr;
        if (this.eat(types$12.question)) {
          var node2 = this.startNodeAt(startPos, startLoc);
          return node2.test = expr, node2.consequent = this.parseMaybeAssign(), this.expect(types$12.colon), node2.alternate = this.parseMaybeAssign(forInit), this.finishNode(node2, "ConditionalExpression");
        }
        return expr;
      }, pp$52.parseExprOps = function(forInit, refDestructuringErrors) {
        var startPos = this.start, startLoc = this.startLoc, expr = this.parseMaybeUnary(refDestructuringErrors, !1, !1, forInit);
        return this.checkExpressionErrors(refDestructuringErrors) || expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit);
      }, pp$52.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {
        var prec = this.type.binop;
        if (prec != null && (!forInit || this.type !== types$12._in) && prec > minPrec) {
          var logical = this.type === types$12.logicalOR || this.type === types$12.logicalAND, coalesce = this.type === types$12.coalesce;
          coalesce && (prec = types$12.logicalAND.binop);
          var op = this.value;
          this.next();
          var startPos = this.start, startLoc = this.startLoc, right = this.parseExprOp(this.parseMaybeUnary(null, !1, !1, forInit), startPos, startLoc, prec, forInit), node2 = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);
          return (logical && this.type === types$12.coalesce || coalesce && (this.type === types$12.logicalOR || this.type === types$12.logicalAND)) && this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"), this.parseExprOp(node2, leftStartPos, leftStartLoc, minPrec, forInit);
        }
        return left;
      }, pp$52.buildBinary = function(startPos, startLoc, left, right, op, logical) {
        right.type === "PrivateIdentifier" && this.raise(right.start, "Private identifier can only be left side of binary expression");
        var node2 = this.startNodeAt(startPos, startLoc);
        return node2.left = left, node2.operator = op, node2.right = right, this.finishNode(node2, logical ? "LogicalExpression" : "BinaryExpression");
      }, pp$52.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {
        var startPos = this.start, startLoc = this.startLoc, expr;
        if (this.isContextual("await") && this.canAwait)
          expr = this.parseAwait(forInit), sawUnary = !0;
        else if (this.type.prefix) {
          var node2 = this.startNode(), update = this.type === types$12.incDec;
          node2.operator = this.value, node2.prefix = !0, this.next(), node2.argument = this.parseMaybeUnary(null, !0, update, forInit), this.checkExpressionErrors(refDestructuringErrors, !0), update ? this.checkLValSimple(node2.argument) : this.strict && node2.operator === "delete" && isLocalVariableAccess2(node2.argument) ? this.raiseRecoverable(node2.start, "Deleting local variable in strict mode") : node2.operator === "delete" && isPrivateFieldAccess2(node2.argument) ? this.raiseRecoverable(node2.start, "Private fields can not be deleted") : sawUnary = !0, expr = this.finishNode(node2, update ? "UpdateExpression" : "UnaryExpression");
        } else if (!sawUnary && this.type === types$12.privateId)
          (forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields && this.unexpected(), expr = this.parsePrivateIdent(), this.type !== types$12._in && this.unexpected();
        else {
          if (expr = this.parseExprSubscripts(refDestructuringErrors, forInit), this.checkExpressionErrors(refDestructuringErrors))
            return expr;
          for (; this.type.postfix && !this.canInsertSemicolon(); ) {
            var node$1 = this.startNodeAt(startPos, startLoc);
            node$1.operator = this.value, node$1.prefix = !1, node$1.argument = expr, this.checkLValSimple(expr), this.next(), expr = this.finishNode(node$1, "UpdateExpression");
          }
        }
        if (!incDec && this.eat(types$12.starstar))
          if (sawUnary)
            this.unexpected(this.lastTokStart);
          else
            return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, !1, !1, forInit), "**", !1);
        else
          return expr;
      };
      function isLocalVariableAccess2(node2) {
        return node2.type === "Identifier" || node2.type === "ParenthesizedExpression" && isLocalVariableAccess2(node2.expression);
      }
      function isPrivateFieldAccess2(node2) {
        return node2.type === "MemberExpression" && node2.property.type === "PrivateIdentifier" || node2.type === "ChainExpression" && isPrivateFieldAccess2(node2.expression) || node2.type === "ParenthesizedExpression" && isPrivateFieldAccess2(node2.expression);
      }
      pp$52.parseExprSubscripts = function(refDestructuringErrors, forInit) {
        var startPos = this.start, startLoc = this.startLoc, expr = this.parseExprAtom(refDestructuringErrors, forInit);
        if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")")
          return expr;
        var result = this.parseSubscripts(expr, startPos, startLoc, !1, forInit);
        return refDestructuringErrors && result.type === "MemberExpression" && (refDestructuringErrors.parenthesizedAssign >= result.start && (refDestructuringErrors.parenthesizedAssign = -1), refDestructuringErrors.parenthesizedBind >= result.start && (refDestructuringErrors.parenthesizedBind = -1), refDestructuringErrors.trailingComma >= result.start && (refDestructuringErrors.trailingComma = -1)), result;
      }, pp$52.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {
        for (var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.potentialArrowAt === base.start, optionalChained = !1; ; ) {
          var element2 = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);
          if (element2.optional && (optionalChained = !0), element2 === base || element2.type === "ArrowFunctionExpression") {
            if (optionalChained) {
              var chainNode = this.startNodeAt(startPos, startLoc);
              chainNode.expression = element2, element2 = this.finishNode(chainNode, "ChainExpression");
            }
            return element2;
          }
          base = element2;
        }
      }, pp$52.shouldParseAsyncArrow = function() {
        return !this.canInsertSemicolon() && this.eat(types$12.arrow);
      }, pp$52.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {
        return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, !0, forInit);
      }, pp$52.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {
        var optionalSupported = this.options.ecmaVersion >= 11, optional = optionalSupported && this.eat(types$12.questionDot);
        noCalls && optional && this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions");
        var computed = this.eat(types$12.bracketL);
        if (computed || optional && this.type !== types$12.parenL && this.type !== types$12.backQuote || this.eat(types$12.dot)) {
          var node2 = this.startNodeAt(startPos, startLoc);
          node2.object = base, computed ? (node2.property = this.parseExpression(), this.expect(types$12.bracketR)) : this.type === types$12.privateId && base.type !== "Super" ? node2.property = this.parsePrivateIdent() : node2.property = this.parseIdent(this.options.allowReserved !== "never"), node2.computed = !!computed, optionalSupported && (node2.optional = optional), base = this.finishNode(node2, "MemberExpression");
        } else if (!noCalls && this.eat(types$12.parenL)) {
          var refDestructuringErrors = new DestructuringErrors3(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
          this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0;
          var exprList = this.parseExprList(types$12.parenR, this.options.ecmaVersion >= 8, !1, refDestructuringErrors);
          if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow())
            return this.checkPatternErrors(refDestructuringErrors, !1), this.checkYieldAwaitInDefaultParams(), this.awaitIdentPos > 0 && this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit);
          this.checkExpressionErrors(refDestructuringErrors, !0), this.yieldPos = oldYieldPos || this.yieldPos, this.awaitPos = oldAwaitPos || this.awaitPos, this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;
          var node$1 = this.startNodeAt(startPos, startLoc);
          node$1.callee = base, node$1.arguments = exprList, optionalSupported && (node$1.optional = optional), base = this.finishNode(node$1, "CallExpression");
        } else if (this.type === types$12.backQuote) {
          (optional || optionalChained) && this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions");
          var node$2 = this.startNodeAt(startPos, startLoc);
          node$2.tag = base, node$2.quasi = this.parseTemplate({ isTagged: !0 }), base = this.finishNode(node$2, "TaggedTemplateExpression");
        }
        return base;
      }, pp$52.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {
        this.type === types$12.slash && this.readRegexp();
        var node2, canBeArrow = this.potentialArrowAt === this.start;
        switch (this.type) {
          case types$12._super:
            return this.allowSuper || this.raise(this.start, "'super' keyword outside a method"), node2 = this.startNode(), this.next(), this.type === types$12.parenL && !this.allowDirectSuper && this.raise(node2.start, "super() call outside constructor of a subclass"), this.type !== types$12.dot && this.type !== types$12.bracketL && this.type !== types$12.parenL && this.unexpected(), this.finishNode(node2, "Super");
          case types$12._this:
            return node2 = this.startNode(), this.next(), this.finishNode(node2, "ThisExpression");
          case types$12.name:
            var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc, id = this.parseIdent(!1);
            if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types$12._function))
              return this.overrideContext(types2.f_expr), this.parseFunction(this.startNodeAt(startPos, startLoc), 0, !1, !0, forInit);
            if (canBeArrow && !this.canInsertSemicolon()) {
              if (this.eat(types$12.arrow))
                return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], !1, forInit);
              if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types$12.name && !containsEsc && (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc))
                return id = this.parseIdent(!1), (this.canInsertSemicolon() || !this.eat(types$12.arrow)) && this.unexpected(), this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], !0, forInit);
            }
            return id;
          case types$12.regexp:
            var value = this.value;
            return node2 = this.parseLiteral(value.value), node2.regex = { pattern: value.pattern, flags: value.flags }, node2;
          case types$12.num:
          case types$12.string:
            return this.parseLiteral(this.value);
          case types$12._null:
          case types$12._true:
          case types$12._false:
            return node2 = this.startNode(), node2.value = this.type === types$12._null ? null : this.type === types$12._true, node2.raw = this.type.keyword, this.next(), this.finishNode(node2, "Literal");
          case types$12.parenL:
            var start2 = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);
            return refDestructuringErrors && (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr) && (refDestructuringErrors.parenthesizedAssign = start2), refDestructuringErrors.parenthesizedBind < 0 && (refDestructuringErrors.parenthesizedBind = start2)), expr;
          case types$12.bracketL:
            return node2 = this.startNode(), this.next(), node2.elements = this.parseExprList(types$12.bracketR, !0, !0, refDestructuringErrors), this.finishNode(node2, "ArrayExpression");
          case types$12.braceL:
            return this.overrideContext(types2.b_expr), this.parseObj(!1, refDestructuringErrors);
          case types$12._function:
            return node2 = this.startNode(), this.next(), this.parseFunction(node2, 0);
          case types$12._class:
            return this.parseClass(this.startNode(), !1);
          case types$12._new:
            return this.parseNew();
          case types$12.backQuote:
            return this.parseTemplate();
          case types$12._import:
            return this.options.ecmaVersion >= 11 ? this.parseExprImport(forNew) : this.unexpected();
          default:
            return this.parseExprAtomDefault();
        }
      }, pp$52.parseExprAtomDefault = function() {
        this.unexpected();
      }, pp$52.parseExprImport = function(forNew) {
        var node2 = this.startNode();
        if (this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword import"), this.next(), this.type === types$12.parenL && !forNew)
          return this.parseDynamicImport(node2);
        if (this.type === types$12.dot) {
          var meta = this.startNodeAt(node2.start, node2.loc && node2.loc.start);
          return meta.name = "import", node2.meta = this.finishNode(meta, "Identifier"), this.parseImportMeta(node2);
        } else
          this.unexpected();
      }, pp$52.parseDynamicImport = function(node2) {
        if (this.next(), node2.source = this.parseMaybeAssign(), this.options.ecmaVersion >= 16)
          this.eat(types$12.parenR) ? node2.options = null : (this.expect(types$12.comma), this.afterTrailingComma(types$12.parenR) ? node2.options = null : (node2.options = this.parseMaybeAssign(), this.eat(types$12.parenR) || (this.expect(types$12.comma), this.afterTrailingComma(types$12.parenR) || this.unexpected())));
        else if (!this.eat(types$12.parenR)) {
          var errorPos = this.start;
          this.eat(types$12.comma) && this.eat(types$12.parenR) ? this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()") : this.unexpected(errorPos);
        }
        return this.finishNode(node2, "ImportExpression");
      }, pp$52.parseImportMeta = function(node2) {
        this.next();
        var containsEsc = this.containsEsc;
        return node2.property = this.parseIdent(!0), node2.property.name !== "meta" && this.raiseRecoverable(node2.property.start, "The only valid meta property for import is 'import.meta'"), containsEsc && this.raiseRecoverable(node2.start, "'import.meta' must not contain escaped characters"), this.options.sourceType !== "module" && !this.options.allowImportExportEverywhere && this.raiseRecoverable(node2.start, "Cannot use 'import.meta' outside a module"), this.finishNode(node2, "MetaProperty");
      }, pp$52.parseLiteral = function(value) {
        var node2 = this.startNode();
        return node2.value = value, node2.raw = this.input.slice(this.start, this.end), node2.raw.charCodeAt(node2.raw.length - 1) === 110 && (node2.bigint = node2.value != null ? node2.value.toString() : node2.raw.slice(0, -1).replace(/_/g, "")), this.next(), this.finishNode(node2, "Literal");
      }, pp$52.parseParenExpression = function() {
        this.expect(types$12.parenL);
        var val = this.parseExpression();
        return this.expect(types$12.parenR), val;
      }, pp$52.shouldParseArrow = function(exprList) {
        return !this.canInsertSemicolon();
      }, pp$52.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {
        var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;
        if (this.options.ecmaVersion >= 6) {
          this.next();
          var innerStartPos = this.start, innerStartLoc = this.startLoc, exprList = [], first = !0, lastIsComma = !1, refDestructuringErrors = new DestructuringErrors3(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;
          for (this.yieldPos = 0, this.awaitPos = 0; this.type !== types$12.parenR; )
            if (first ? first = !1 : this.expect(types$12.comma), allowTrailingComma && this.afterTrailingComma(types$12.parenR, !0)) {
              lastIsComma = !0;
              break;
            } else if (this.type === types$12.ellipsis) {
              spreadStart = this.start, exprList.push(this.parseParenItem(this.parseRestBinding())), this.type === types$12.comma && this.raiseRecoverable(
                this.start,
                "Comma is not permitted after the rest element"
              );
              break;
            } else
              exprList.push(this.parseMaybeAssign(!1, refDestructuringErrors, this.parseParenItem));
          var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;
          if (this.expect(types$12.parenR), canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$12.arrow))
            return this.checkPatternErrors(refDestructuringErrors, !1), this.checkYieldAwaitInDefaultParams(), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.parseParenArrowList(startPos, startLoc, exprList, forInit);
          (!exprList.length || lastIsComma) && this.unexpected(this.lastTokStart), spreadStart && this.unexpected(spreadStart), this.checkExpressionErrors(refDestructuringErrors, !0), this.yieldPos = oldYieldPos || this.yieldPos, this.awaitPos = oldAwaitPos || this.awaitPos, exprList.length > 1 ? (val = this.startNodeAt(innerStartPos, innerStartLoc), val.expressions = exprList, this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc)) : val = exprList[0];
        } else
          val = this.parseParenExpression();
        if (this.options.preserveParens) {
          var par = this.startNodeAt(startPos, startLoc);
          return par.expression = val, this.finishNode(par, "ParenthesizedExpression");
        } else
          return val;
      }, pp$52.parseParenItem = function(item) {
        return item;
      }, pp$52.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {
        return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, !1, forInit);
      };
      var empty4 = [];
      pp$52.parseNew = function() {
        this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword new");
        var node2 = this.startNode();
        if (this.next(), this.options.ecmaVersion >= 6 && this.type === types$12.dot) {
          var meta = this.startNodeAt(node2.start, node2.loc && node2.loc.start);
          meta.name = "new", node2.meta = this.finishNode(meta, "Identifier"), this.next();
          var containsEsc = this.containsEsc;
          return node2.property = this.parseIdent(!0), node2.property.name !== "target" && this.raiseRecoverable(node2.property.start, "The only valid meta property for new is 'new.target'"), containsEsc && this.raiseRecoverable(node2.start, "'new.target' must not contain escaped characters"), this.allowNewDotTarget || this.raiseRecoverable(node2.start, "'new.target' can only be used in functions and class static block"), this.finishNode(node2, "MetaProperty");
        }
        var startPos = this.start, startLoc = this.startLoc;
        return node2.callee = this.parseSubscripts(this.parseExprAtom(null, !1, !0), startPos, startLoc, !0, !1), this.eat(types$12.parenL) ? node2.arguments = this.parseExprList(types$12.parenR, this.options.ecmaVersion >= 8, !1) : node2.arguments = empty4, this.finishNode(node2, "NewExpression");
      }, pp$52.parseTemplateElement = function(ref3) {
        var isTagged = ref3.isTagged, elem = this.startNode();
        return this.type === types$12.invalidTemplate ? (isTagged || this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"), elem.value = {
          raw: this.value.replace(/\r\n?/g, `
`),
          cooked: null
        }) : elem.value = {
          raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, `
`),
          cooked: this.value
        }, this.next(), elem.tail = this.type === types$12.backQuote, this.finishNode(elem, "TemplateElement");
      }, pp$52.parseTemplate = function(ref3) {
        ref3 === void 0 && (ref3 = {});
        var isTagged = ref3.isTagged;
        isTagged === void 0 && (isTagged = !1);
        var node2 = this.startNode();
        this.next(), node2.expressions = [];
        var curElt = this.parseTemplateElement({ isTagged });
        for (node2.quasis = [curElt]; !curElt.tail; )
          this.type === types$12.eof && this.raise(this.pos, "Unterminated template literal"), this.expect(types$12.dollarBraceL), node2.expressions.push(this.parseExpression()), this.expect(types$12.braceR), node2.quasis.push(curElt = this.parseTemplateElement({ isTagged }));
        return this.next(), this.finishNode(node2, "TemplateLiteral");
      }, pp$52.isAsyncProp = function(prop) {
        return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && (this.type === types$12.name || this.type === types$12.num || this.type === types$12.string || this.type === types$12.bracketL || this.type.keyword || this.options.ecmaVersion >= 9 && this.type === types$12.star) && !lineBreak2.test(this.input.slice(this.lastTokEnd, this.start));
      }, pp$52.parseObj = function(isPattern, refDestructuringErrors) {
        var node2 = this.startNode(), first = !0, propHash = {};
        for (node2.properties = [], this.next(); !this.eat(types$12.braceR); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$12.braceR))
            break;
          var prop = this.parseProperty(isPattern, refDestructuringErrors);
          isPattern || this.checkPropClash(prop, propHash, refDestructuringErrors), node2.properties.push(prop);
        }
        return this.finishNode(node2, isPattern ? "ObjectPattern" : "ObjectExpression");
      }, pp$52.parseProperty = function(isPattern, refDestructuringErrors) {
        var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;
        if (this.options.ecmaVersion >= 9 && this.eat(types$12.ellipsis))
          return isPattern ? (prop.argument = this.parseIdent(!1), this.type === types$12.comma && this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"), this.finishNode(prop, "RestElement")) : (prop.argument = this.parseMaybeAssign(!1, refDestructuringErrors), this.type === types$12.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0 && (refDestructuringErrors.trailingComma = this.start), this.finishNode(prop, "SpreadElement"));
        this.options.ecmaVersion >= 6 && (prop.method = !1, prop.shorthand = !1, (isPattern || refDestructuringErrors) && (startPos = this.start, startLoc = this.startLoc), isPattern || (isGenerator = this.eat(types$12.star)));
        var containsEsc = this.containsEsc;
        return this.parsePropertyName(prop), !isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop) ? (isAsync = !0, isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$12.star), this.parsePropertyName(prop)) : isAsync = !1, this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc), this.finishNode(prop, "Property");
      }, pp$52.parseGetterSetter = function(prop) {
        var kind = prop.key.name;
        this.parsePropertyName(prop), prop.value = this.parseMethod(!1), prop.kind = kind;
        var paramCount = prop.kind === "get" ? 0 : 1;
        if (prop.value.params.length !== paramCount) {
          var start2 = prop.value.start;
          prop.kind === "get" ? this.raiseRecoverable(start2, "getter should have no params") : this.raiseRecoverable(start2, "setter should have exactly one param");
        } else
          prop.kind === "set" && prop.value.params[0].type === "RestElement" && this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params");
      }, pp$52.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {
        (isGenerator || isAsync) && this.type === types$12.colon && this.unexpected(), this.eat(types$12.colon) ? (prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(!1, refDestructuringErrors), prop.kind = "init") : this.options.ecmaVersion >= 6 && this.type === types$12.parenL ? (isPattern && this.unexpected(), prop.method = !0, prop.value = this.parseMethod(isGenerator, isAsync), prop.kind = "init") : !isPattern && !containsEsc && this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && this.type !== types$12.comma && this.type !== types$12.braceR && this.type !== types$12.eq ? ((isGenerator || isAsync) && this.unexpected(), this.parseGetterSetter(prop)) : this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier" ? ((isGenerator || isAsync) && this.unexpected(), this.checkUnreserved(prop.key), prop.key.name === "await" && !this.awaitIdentPos && (this.awaitIdentPos = startPos), isPattern ? prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)) : this.type === types$12.eq && refDestructuringErrors ? (refDestructuringErrors.shorthandAssign < 0 && (refDestructuringErrors.shorthandAssign = this.start), prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key))) : prop.value = this.copyNode(prop.key), prop.kind = "init", prop.shorthand = !0) : this.unexpected();
      }, pp$52.parsePropertyName = function(prop) {
        if (this.options.ecmaVersion >= 6) {
          if (this.eat(types$12.bracketL))
            return prop.computed = !0, prop.key = this.parseMaybeAssign(), this.expect(types$12.bracketR), prop.key;
          prop.computed = !1;
        }
        return prop.key = this.type === types$12.num || this.type === types$12.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never");
      }, pp$52.initFunction = function(node2) {
        node2.id = null, this.options.ecmaVersion >= 6 && (node2.generator = node2.expression = !1), this.options.ecmaVersion >= 8 && (node2.async = !1);
      }, pp$52.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {
        var node2 = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
        return this.initFunction(node2), this.options.ecmaVersion >= 6 && (node2.generator = isGenerator), this.options.ecmaVersion >= 8 && (node2.async = !!isAsync), this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, this.enterScope(functionFlags2(isAsync, node2.generator) | SCOPE_SUPER2 | (allowDirectSuper ? SCOPE_DIRECT_SUPER2 : 0)), this.expect(types$12.parenL), node2.params = this.parseBindingList(types$12.parenR, !1, this.options.ecmaVersion >= 8), this.checkYieldAwaitInDefaultParams(), this.parseFunctionBody(node2, !1, !0, !1), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.finishNode(node2, "FunctionExpression");
      }, pp$52.parseArrowExpression = function(node2, params, isAsync, forInit) {
        var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
        return this.enterScope(functionFlags2(isAsync, !1) | SCOPE_ARROW2), this.initFunction(node2), this.options.ecmaVersion >= 8 && (node2.async = !!isAsync), this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, node2.params = this.toAssignableList(params, !0), this.parseFunctionBody(node2, !0, !1, forInit), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.finishNode(node2, "ArrowFunctionExpression");
      }, pp$52.parseFunctionBody = function(node2, isArrowFunction, isMethod, forInit) {
        var isExpression = isArrowFunction && this.type !== types$12.braceL, oldStrict = this.strict, useStrict = !1;
        if (isExpression)
          node2.body = this.parseMaybeAssign(forInit), node2.expression = !0, this.checkParams(node2, !1);
        else {
          var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node2.params);
          (!oldStrict || nonSimple) && (useStrict = this.strictDirective(this.end), useStrict && nonSimple && this.raiseRecoverable(node2.start, "Illegal 'use strict' directive in function with non-simple parameter list"));
          var oldLabels = this.labels;
          this.labels = [], useStrict && (this.strict = !0), this.checkParams(node2, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node2.params)), this.strict && node2.id && this.checkLValSimple(node2.id, BIND_OUTSIDE2), node2.body = this.parseBlock(!1, void 0, useStrict && !oldStrict), node2.expression = !1, this.adaptDirectivePrologue(node2.body.body), this.labels = oldLabels;
        }
        this.exitScope();
      }, pp$52.isSimpleParamList = function(params) {
        for (var i2 = 0, list4 = params; i2 < list4.length; i2 += 1) {
          var param = list4[i2];
          if (param.type !== "Identifier")
            return !1;
        }
        return !0;
      }, pp$52.checkParams = function(node2, allowDuplicates) {
        for (var nameHash = /* @__PURE__ */ Object.create(null), i2 = 0, list4 = node2.params; i2 < list4.length; i2 += 1) {
          var param = list4[i2];
          this.checkLValInnerPattern(param, BIND_VAR2, allowDuplicates ? null : nameHash);
        }
      }, pp$52.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {
        for (var elts = [], first = !0; !this.eat(close); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), allowTrailingComma && this.afterTrailingComma(close))
            break;
          var elt = void 0;
          allowEmpty && this.type === types$12.comma ? elt = null : this.type === types$12.ellipsis ? (elt = this.parseSpread(refDestructuringErrors), refDestructuringErrors && this.type === types$12.comma && refDestructuringErrors.trailingComma < 0 && (refDestructuringErrors.trailingComma = this.start)) : elt = this.parseMaybeAssign(!1, refDestructuringErrors), elts.push(elt);
        }
        return elts;
      }, pp$52.checkUnreserved = function(ref3) {
        var start2 = ref3.start, end = ref3.end, name2 = ref3.name;
        if (this.inGenerator && name2 === "yield" && this.raiseRecoverable(start2, "Cannot use 'yield' as identifier inside a generator"), this.inAsync && name2 === "await" && this.raiseRecoverable(start2, "Cannot use 'await' as identifier inside an async function"), !(this.currentThisScope().flags & SCOPE_VAR2) && name2 === "arguments" && this.raiseRecoverable(start2, "Cannot use 'arguments' in class field initializer"), this.inClassStaticBlock && (name2 === "arguments" || name2 === "await") && this.raise(start2, "Cannot use " + name2 + " in class static initialization block"), this.keywords.test(name2) && this.raise(start2, "Unexpected keyword '" + name2 + "'"), !(this.options.ecmaVersion < 6 && this.input.slice(start2, end).indexOf("\\") !== -1)) {
          var re2 = this.strict ? this.reservedWordsStrict : this.reservedWords;
          re2.test(name2) && (!this.inAsync && name2 === "await" && this.raiseRecoverable(start2, "Cannot use keyword 'await' outside an async function"), this.raiseRecoverable(start2, "The keyword '" + name2 + "' is reserved"));
        }
      }, pp$52.parseIdent = function(liberal) {
        var node2 = this.parseIdentNode();
        return this.next(!!liberal), this.finishNode(node2, "Identifier"), liberal || (this.checkUnreserved(node2), node2.name === "await" && !this.awaitIdentPos && (this.awaitIdentPos = node2.start)), node2;
      }, pp$52.parseIdentNode = function() {
        var node2 = this.startNode();
        return this.type === types$12.name ? node2.name = this.value : this.type.keyword ? (node2.name = this.type.keyword, (node2.name === "class" || node2.name === "function") && (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46) && this.context.pop(), this.type = types$12.name) : this.unexpected(), node2;
      }, pp$52.parsePrivateIdent = function() {
        var node2 = this.startNode();
        return this.type === types$12.privateId ? node2.name = this.value : this.unexpected(), this.next(), this.finishNode(node2, "PrivateIdentifier"), this.options.checkPrivateFields && (this.privateNameStack.length === 0 ? this.raise(node2.start, "Private field '#" + node2.name + "' must be declared in an enclosing class") : this.privateNameStack[this.privateNameStack.length - 1].used.push(node2)), node2;
      }, pp$52.parseYield = function(forInit) {
        this.yieldPos || (this.yieldPos = this.start);
        var node2 = this.startNode();
        return this.next(), this.type === types$12.semi || this.canInsertSemicolon() || this.type !== types$12.star && !this.type.startsExpr ? (node2.delegate = !1, node2.argument = null) : (node2.delegate = this.eat(types$12.star), node2.argument = this.parseMaybeAssign(forInit)), this.finishNode(node2, "YieldExpression");
      }, pp$52.parseAwait = function(forInit) {
        this.awaitPos || (this.awaitPos = this.start);
        var node2 = this.startNode();
        return this.next(), node2.argument = this.parseMaybeUnary(null, !0, !1, forInit), this.finishNode(node2, "AwaitExpression");
      };
      var pp$42 = Parser3.prototype;
      pp$42.raise = function(pos, message) {
        var loc = getLineInfo2(this.input, pos);
        message += " (" + loc.line + ":" + loc.column + ")", this.sourceFile && (message += " in " + this.sourceFile);
        var err = new SyntaxError(message);
        throw err.pos = pos, err.loc = loc, err.raisedAt = this.pos, err;
      }, pp$42.raiseRecoverable = pp$42.raise, pp$42.curPosition = function() {
        if (this.options.locations)
          return new Position3(this.curLine, this.pos - this.lineStart);
      };
      var pp$32 = Parser3.prototype, Scope3 = function(flags) {
        this.flags = flags, this.var = [], this.lexical = [], this.functions = [];
      };
      pp$32.enterScope = function(flags) {
        this.scopeStack.push(new Scope3(flags));
      }, pp$32.exitScope = function() {
        this.scopeStack.pop();
      }, pp$32.treatFunctionsAsVarInScope = function(scope) {
        return scope.flags & SCOPE_FUNCTION2 || !this.inModule && scope.flags & SCOPE_TOP2;
      }, pp$32.declareName = function(name2, bindingType, pos) {
        var redeclared = !1;
        if (bindingType === BIND_LEXICAL2) {
          var scope = this.currentScope();
          redeclared = scope.lexical.indexOf(name2) > -1 || scope.functions.indexOf(name2) > -1 || scope.var.indexOf(name2) > -1, scope.lexical.push(name2), this.inModule && scope.flags & SCOPE_TOP2 && delete this.undefinedExports[name2];
        } else if (bindingType === BIND_SIMPLE_CATCH2) {
          var scope$1 = this.currentScope();
          scope$1.lexical.push(name2);
        } else if (bindingType === BIND_FUNCTION2) {
          var scope$2 = this.currentScope();
          this.treatFunctionsAsVar ? redeclared = scope$2.lexical.indexOf(name2) > -1 : redeclared = scope$2.lexical.indexOf(name2) > -1 || scope$2.var.indexOf(name2) > -1, scope$2.functions.push(name2);
        } else
          for (var i2 = this.scopeStack.length - 1; i2 >= 0; --i2) {
            var scope$3 = this.scopeStack[i2];
            if (scope$3.lexical.indexOf(name2) > -1 && !(scope$3.flags & SCOPE_SIMPLE_CATCH2 && scope$3.lexical[0] === name2) || !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name2) > -1) {
              redeclared = !0;
              break;
            }
            if (scope$3.var.push(name2), this.inModule && scope$3.flags & SCOPE_TOP2 && delete this.undefinedExports[name2], scope$3.flags & SCOPE_VAR2)
              break;
          }
        redeclared && this.raiseRecoverable(pos, "Identifier '" + name2 + "' has already been declared");
      }, pp$32.checkLocalExport = function(id) {
        this.scopeStack[0].lexical.indexOf(id.name) === -1 && this.scopeStack[0].var.indexOf(id.name) === -1 && (this.undefinedExports[id.name] = id);
      }, pp$32.currentScope = function() {
        return this.scopeStack[this.scopeStack.length - 1];
      }, pp$32.currentVarScope = function() {
        for (var i2 = this.scopeStack.length - 1; ; i2--) {
          var scope = this.scopeStack[i2];
          if (scope.flags & (SCOPE_VAR2 | SCOPE_CLASS_FIELD_INIT2 | SCOPE_CLASS_STATIC_BLOCK2))
            return scope;
        }
      }, pp$32.currentThisScope = function() {
        for (var i2 = this.scopeStack.length - 1; ; i2--) {
          var scope = this.scopeStack[i2];
          if (scope.flags & (SCOPE_VAR2 | SCOPE_CLASS_FIELD_INIT2 | SCOPE_CLASS_STATIC_BLOCK2) && !(scope.flags & SCOPE_ARROW2))
            return scope;
        }
      };
      var Node3 = function(parser, pos, loc) {
        this.type = "", this.start = pos, this.end = 0, parser.options.locations && (this.loc = new SourceLocation3(parser, loc)), parser.options.directSourceFile && (this.sourceFile = parser.options.directSourceFile), parser.options.ranges && (this.range = [pos, 0]);
      }, pp$22 = Parser3.prototype;
      pp$22.startNode = function() {
        return new Node3(this, this.start, this.startLoc);
      }, pp$22.startNodeAt = function(pos, loc) {
        return new Node3(this, pos, loc);
      };
      function finishNodeAt2(node2, type, pos, loc) {
        return node2.type = type, node2.end = pos, this.options.locations && (node2.loc.end = loc), this.options.ranges && (node2.range[1] = pos), node2;
      }
      pp$22.finishNode = function(node2, type) {
        return finishNodeAt2.call(this, node2, type, this.lastTokEnd, this.lastTokEndLoc);
      }, pp$22.finishNodeAt = function(node2, type, pos, loc) {
        return finishNodeAt2.call(this, node2, type, pos, loc);
      }, pp$22.copyNode = function(node2) {
        var newNode = new Node3(this, node2.start, this.startLoc);
        for (var prop in node2)
          newNode[prop] = node2[prop];
        return newNode;
      };
      var scriptValuesAddedInUnicode2 = "Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz", ecma9BinaryProperties2 = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS", ecma10BinaryProperties2 = ecma9BinaryProperties2 + " Extended_Pictographic", ecma11BinaryProperties2 = ecma10BinaryProperties2, ecma12BinaryProperties2 = ecma11BinaryProperties2 + " EBase EComp EMod EPres ExtPict", ecma13BinaryProperties2 = ecma12BinaryProperties2, ecma14BinaryProperties2 = ecma13BinaryProperties2, unicodeBinaryProperties2 = {
        9: ecma9BinaryProperties2,
        10: ecma10BinaryProperties2,
        11: ecma11BinaryProperties2,
        12: ecma12BinaryProperties2,
        13: ecma13BinaryProperties2,
        14: ecma14BinaryProperties2
      }, ecma14BinaryPropertiesOfStrings2 = "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji", unicodeBinaryPropertiesOfStrings2 = {
        9: "",
        10: "",
        11: "",
        12: "",
        13: "",
        14: ecma14BinaryPropertiesOfStrings2
      }, unicodeGeneralCategoryValues2 = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu", ecma9ScriptValues2 = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb", ecma10ScriptValues2 = ecma9ScriptValues2 + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd", ecma11ScriptValues2 = ecma10ScriptValues2 + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho", ecma12ScriptValues2 = ecma11ScriptValues2 + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", ecma13ScriptValues2 = ecma12ScriptValues2 + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith", ecma14ScriptValues2 = ecma13ScriptValues2 + " " + scriptValuesAddedInUnicode2, unicodeScriptValues2 = {
        9: ecma9ScriptValues2,
        10: ecma10ScriptValues2,
        11: ecma11ScriptValues2,
        12: ecma12ScriptValues2,
        13: ecma13ScriptValues2,
        14: ecma14ScriptValues2
      }, data2 = {};
      function buildUnicodeData2(ecmaVersion2) {
        var d = data2[ecmaVersion2] = {
          binary: wordsRegexp2(unicodeBinaryProperties2[ecmaVersion2] + " " + unicodeGeneralCategoryValues2),
          binaryOfStrings: wordsRegexp2(unicodeBinaryPropertiesOfStrings2[ecmaVersion2]),
          nonBinary: {
            General_Category: wordsRegexp2(unicodeGeneralCategoryValues2),
            Script: wordsRegexp2(unicodeScriptValues2[ecmaVersion2])
          }
        };
        d.nonBinary.Script_Extensions = d.nonBinary.Script, d.nonBinary.gc = d.nonBinary.General_Category, d.nonBinary.sc = d.nonBinary.Script, d.nonBinary.scx = d.nonBinary.Script_Extensions;
      }
      for (var i = 0, list3 = [9, 10, 11, 12, 13, 14]; i < list3.length; i += 1) {
        var ecmaVersion = list3[i];
        buildUnicodeData2(ecmaVersion);
      }
      var pp$12 = Parser3.prototype, BranchID3 = function(parent, base) {
        this.parent = parent, this.base = base || this;
      };
      BranchID3.prototype.separatedFrom = function(alt) {
        for (var self2 = this; self2; self2 = self2.parent)
          for (var other = alt; other; other = other.parent)
            if (self2.base === other.base && self2 !== other)
              return !0;
        return !1;
      }, BranchID3.prototype.sibling = function() {
        return new BranchID3(this.parent, this.base);
      };
      var RegExpValidationState3 = function(parser) {
        this.parser = parser, this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""), this.unicodeProperties = data2[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion], this.source = "", this.flags = "", this.start = 0, this.switchU = !1, this.switchV = !1, this.switchN = !1, this.pos = 0, this.lastIntValue = 0, this.lastStringValue = "", this.lastAssertionIsQuantifiable = !1, this.numCapturingParens = 0, this.maxBackReference = 0, this.groupNames = /* @__PURE__ */ Object.create(null), this.backReferenceNames = [], this.branchID = null;
      };
      RegExpValidationState3.prototype.reset = function(start2, pattern, flags) {
        var unicodeSets = flags.indexOf("v") !== -1, unicode = flags.indexOf("u") !== -1;
        this.start = start2 | 0, this.source = pattern + "", this.flags = flags, unicodeSets && this.parser.options.ecmaVersion >= 15 ? (this.switchU = !0, this.switchV = !0, this.switchN = !0) : (this.switchU = unicode && this.parser.options.ecmaVersion >= 6, this.switchV = !1, this.switchN = unicode && this.parser.options.ecmaVersion >= 9);
      }, RegExpValidationState3.prototype.raise = function(message) {
        this.parser.raiseRecoverable(this.start, "Invalid regular expression: /" + this.source + "/: " + message);
      }, RegExpValidationState3.prototype.at = function(i2, forceU) {
        forceU === void 0 && (forceU = !1);
        var s = this.source, l = s.length;
        if (i2 >= l)
          return -1;
        var c = s.charCodeAt(i2);
        if (!(forceU || this.switchU) || c <= 55295 || c >= 57344 || i2 + 1 >= l)
          return c;
        var next = s.charCodeAt(i2 + 1);
        return next >= 56320 && next <= 57343 ? (c << 10) + next - 56613888 : c;
      }, RegExpValidationState3.prototype.nextIndex = function(i2, forceU) {
        forceU === void 0 && (forceU = !1);
        var s = this.source, l = s.length;
        if (i2 >= l)
          return l;
        var c = s.charCodeAt(i2), next;
        return !(forceU || this.switchU) || c <= 55295 || c >= 57344 || i2 + 1 >= l || (next = s.charCodeAt(i2 + 1)) < 56320 || next > 57343 ? i2 + 1 : i2 + 2;
      }, RegExpValidationState3.prototype.current = function(forceU) {
        return forceU === void 0 && (forceU = !1), this.at(this.pos, forceU);
      }, RegExpValidationState3.prototype.lookahead = function(forceU) {
        return forceU === void 0 && (forceU = !1), this.at(this.nextIndex(this.pos, forceU), forceU);
      }, RegExpValidationState3.prototype.advance = function(forceU) {
        forceU === void 0 && (forceU = !1), this.pos = this.nextIndex(this.pos, forceU);
      }, RegExpValidationState3.prototype.eat = function(ch, forceU) {
        return forceU === void 0 && (forceU = !1), this.current(forceU) === ch ? (this.advance(forceU), !0) : !1;
      }, RegExpValidationState3.prototype.eatChars = function(chs, forceU) {
        forceU === void 0 && (forceU = !1);
        for (var pos = this.pos, i2 = 0, list4 = chs; i2 < list4.length; i2 += 1) {
          var ch = list4[i2], current2 = this.at(pos, forceU);
          if (current2 === -1 || current2 !== ch)
            return !1;
          pos = this.nextIndex(pos, forceU);
        }
        return this.pos = pos, !0;
      }, pp$12.validateRegExpFlags = function(state) {
        for (var validFlags = state.validFlags, flags = state.flags, u = !1, v = !1, i2 = 0; i2 < flags.length; i2++) {
          var flag = flags.charAt(i2);
          validFlags.indexOf(flag) === -1 && this.raise(state.start, "Invalid regular expression flag"), flags.indexOf(flag, i2 + 1) > -1 && this.raise(state.start, "Duplicate regular expression flag"), flag === "u" && (u = !0), flag === "v" && (v = !0);
        }
        this.options.ecmaVersion >= 15 && u && v && this.raise(state.start, "Invalid regular expression flag");
      };
      function hasProp2(obj) {
        for (var _ in obj)
          return !0;
        return !1;
      }
      pp$12.validateRegExpPattern = function(state) {
        this.regexp_pattern(state), !state.switchN && this.options.ecmaVersion >= 9 && hasProp2(state.groupNames) && (state.switchN = !0, this.regexp_pattern(state));
      }, pp$12.regexp_pattern = function(state) {
        state.pos = 0, state.lastIntValue = 0, state.lastStringValue = "", state.lastAssertionIsQuantifiable = !1, state.numCapturingParens = 0, state.maxBackReference = 0, state.groupNames = /* @__PURE__ */ Object.create(null), state.backReferenceNames.length = 0, state.branchID = null, this.regexp_disjunction(state), state.pos !== state.source.length && (state.eat(
          41
          /* ) */
        ) && state.raise("Unmatched ')'"), (state.eat(
          93
          /* ] */
        ) || state.eat(
          125
          /* } */
        )) && state.raise("Lone quantifier brackets")), state.maxBackReference > state.numCapturingParens && state.raise("Invalid escape");
        for (var i2 = 0, list4 = state.backReferenceNames; i2 < list4.length; i2 += 1) {
          var name2 = list4[i2];
          state.groupNames[name2] || state.raise("Invalid named capture referenced");
        }
      }, pp$12.regexp_disjunction = function(state) {
        var trackDisjunction = this.options.ecmaVersion >= 16;
        for (trackDisjunction && (state.branchID = new BranchID3(state.branchID, null)), this.regexp_alternative(state); state.eat(
          124
          /* | */
        ); )
          trackDisjunction && (state.branchID = state.branchID.sibling()), this.regexp_alternative(state);
        trackDisjunction && (state.branchID = state.branchID.parent), this.regexp_eatQuantifier(state, !0) && state.raise("Nothing to repeat"), state.eat(
          123
          /* { */
        ) && state.raise("Lone quantifier brackets");
      }, pp$12.regexp_alternative = function(state) {
        for (; state.pos < state.source.length && this.regexp_eatTerm(state); )
          ;
      }, pp$12.regexp_eatTerm = function(state) {
        return this.regexp_eatAssertion(state) ? (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state) && state.switchU && state.raise("Invalid quantifier"), !0) : (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) ? (this.regexp_eatQuantifier(state), !0) : !1;
      }, pp$12.regexp_eatAssertion = function(state) {
        var start2 = state.pos;
        if (state.lastAssertionIsQuantifiable = !1, state.eat(
          94
          /* ^ */
        ) || state.eat(
          36
          /* $ */
        ))
          return !0;
        if (state.eat(
          92
          /* \ */
        )) {
          if (state.eat(
            66
            /* B */
          ) || state.eat(
            98
            /* b */
          ))
            return !0;
          state.pos = start2;
        }
        if (state.eat(
          40
          /* ( */
        ) && state.eat(
          63
          /* ? */
        )) {
          var lookbehind = !1;
          if (this.options.ecmaVersion >= 9 && (lookbehind = state.eat(
            60
            /* < */
          )), state.eat(
            61
            /* = */
          ) || state.eat(
            33
            /* ! */
          ))
            return this.regexp_disjunction(state), state.eat(
              41
              /* ) */
            ) || state.raise("Unterminated group"), state.lastAssertionIsQuantifiable = !lookbehind, !0;
        }
        return state.pos = start2, !1;
      }, pp$12.regexp_eatQuantifier = function(state, noError) {
        return noError === void 0 && (noError = !1), this.regexp_eatQuantifierPrefix(state, noError) ? (state.eat(
          63
          /* ? */
        ), !0) : !1;
      }, pp$12.regexp_eatQuantifierPrefix = function(state, noError) {
        return state.eat(
          42
          /* * */
        ) || state.eat(
          43
          /* + */
        ) || state.eat(
          63
          /* ? */
        ) || this.regexp_eatBracedQuantifier(state, noError);
      }, pp$12.regexp_eatBracedQuantifier = function(state, noError) {
        var start2 = state.pos;
        if (state.eat(
          123
          /* { */
        )) {
          var min = 0, max = -1;
          if (this.regexp_eatDecimalDigits(state) && (min = state.lastIntValue, state.eat(
            44
            /* , */
          ) && this.regexp_eatDecimalDigits(state) && (max = state.lastIntValue), state.eat(
            125
            /* } */
          )))
            return max !== -1 && max < min && !noError && state.raise("numbers out of order in {} quantifier"), !0;
          state.switchU && !noError && state.raise("Incomplete quantifier"), state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatAtom = function(state) {
        return this.regexp_eatPatternCharacters(state) || state.eat(
          46
          /* . */
        ) || this.regexp_eatReverseSolidusAtomEscape(state) || this.regexp_eatCharacterClass(state) || this.regexp_eatUncapturingGroup(state) || this.regexp_eatCapturingGroup(state);
      }, pp$12.regexp_eatReverseSolidusAtomEscape = function(state) {
        var start2 = state.pos;
        if (state.eat(
          92
          /* \ */
        )) {
          if (this.regexp_eatAtomEscape(state))
            return !0;
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatUncapturingGroup = function(state) {
        var start2 = state.pos;
        if (state.eat(
          40
          /* ( */
        )) {
          if (state.eat(
            63
            /* ? */
          )) {
            if (this.options.ecmaVersion >= 16) {
              var addModifiers = this.regexp_eatModifiers(state), hasHyphen = state.eat(
                45
                /* - */
              );
              if (addModifiers || hasHyphen) {
                for (var i2 = 0; i2 < addModifiers.length; i2++) {
                  var modifier = addModifiers.charAt(i2);
                  addModifiers.indexOf(modifier, i2 + 1) > -1 && state.raise("Duplicate regular expression modifiers");
                }
                if (hasHyphen) {
                  var removeModifiers = this.regexp_eatModifiers(state);
                  !addModifiers && !removeModifiers && state.current() === 58 && state.raise("Invalid regular expression modifiers");
                  for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {
                    var modifier$1 = removeModifiers.charAt(i$1);
                    (removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 || addModifiers.indexOf(modifier$1) > -1) && state.raise("Duplicate regular expression modifiers");
                  }
                }
              }
            }
            if (state.eat(
              58
              /* : */
            )) {
              if (this.regexp_disjunction(state), state.eat(
                41
                /* ) */
              ))
                return !0;
              state.raise("Unterminated group");
            }
          }
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatCapturingGroup = function(state) {
        if (state.eat(
          40
          /* ( */
        )) {
          if (this.options.ecmaVersion >= 9 ? this.regexp_groupSpecifier(state) : state.current() === 63 && state.raise("Invalid group"), this.regexp_disjunction(state), state.eat(
            41
            /* ) */
          ))
            return state.numCapturingParens += 1, !0;
          state.raise("Unterminated group");
        }
        return !1;
      }, pp$12.regexp_eatModifiers = function(state) {
        for (var modifiers = "", ch = 0; (ch = state.current()) !== -1 && isRegularExpressionModifier2(ch); )
          modifiers += codePointToString2(ch), state.advance();
        return modifiers;
      };
      function isRegularExpressionModifier2(ch) {
        return ch === 105 || ch === 109 || ch === 115;
      }
      pp$12.regexp_eatExtendedAtom = function(state) {
        return state.eat(
          46
          /* . */
        ) || this.regexp_eatReverseSolidusAtomEscape(state) || this.regexp_eatCharacterClass(state) || this.regexp_eatUncapturingGroup(state) || this.regexp_eatCapturingGroup(state) || this.regexp_eatInvalidBracedQuantifier(state) || this.regexp_eatExtendedPatternCharacter(state);
      }, pp$12.regexp_eatInvalidBracedQuantifier = function(state) {
        return this.regexp_eatBracedQuantifier(state, !0) && state.raise("Nothing to repeat"), !1;
      }, pp$12.regexp_eatSyntaxCharacter = function(state) {
        var ch = state.current();
        return isSyntaxCharacter2(ch) ? (state.lastIntValue = ch, state.advance(), !0) : !1;
      };
      function isSyntaxCharacter2(ch) {
        return ch === 36 || ch >= 40 && ch <= 43 || ch === 46 || ch === 63 || ch >= 91 && ch <= 94 || ch >= 123 && ch <= 125;
      }
      pp$12.regexp_eatPatternCharacters = function(state) {
        for (var start2 = state.pos, ch = 0; (ch = state.current()) !== -1 && !isSyntaxCharacter2(ch); )
          state.advance();
        return state.pos !== start2;
      }, pp$12.regexp_eatExtendedPatternCharacter = function(state) {
        var ch = state.current();
        return ch !== -1 && ch !== 36 && !(ch >= 40 && ch <= 43) && ch !== 46 && ch !== 63 && ch !== 91 && ch !== 94 && ch !== 124 ? (state.advance(), !0) : !1;
      }, pp$12.regexp_groupSpecifier = function(state) {
        if (state.eat(
          63
          /* ? */
        )) {
          this.regexp_eatGroupName(state) || state.raise("Invalid group");
          var trackDisjunction = this.options.ecmaVersion >= 16, known = state.groupNames[state.lastStringValue];
          if (known)
            if (trackDisjunction)
              for (var i2 = 0, list4 = known; i2 < list4.length; i2 += 1) {
                var altID = list4[i2];
                altID.separatedFrom(state.branchID) || state.raise("Duplicate capture group name");
              }
            else
              state.raise("Duplicate capture group name");
          trackDisjunction ? (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID) : state.groupNames[state.lastStringValue] = !0;
        }
      }, pp$12.regexp_eatGroupName = function(state) {
        if (state.lastStringValue = "", state.eat(
          60
          /* < */
        )) {
          if (this.regexp_eatRegExpIdentifierName(state) && state.eat(
            62
            /* > */
          ))
            return !0;
          state.raise("Invalid capture group name");
        }
        return !1;
      }, pp$12.regexp_eatRegExpIdentifierName = function(state) {
        if (state.lastStringValue = "", this.regexp_eatRegExpIdentifierStart(state)) {
          for (state.lastStringValue += codePointToString2(state.lastIntValue); this.regexp_eatRegExpIdentifierPart(state); )
            state.lastStringValue += codePointToString2(state.lastIntValue);
          return !0;
        }
        return !1;
      }, pp$12.regexp_eatRegExpIdentifierStart = function(state) {
        var start2 = state.pos, forceU = this.options.ecmaVersion >= 11, ch = state.current(forceU);
        return state.advance(forceU), ch === 92 && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU) && (ch = state.lastIntValue), isRegExpIdentifierStart2(ch) ? (state.lastIntValue = ch, !0) : (state.pos = start2, !1);
      };
      function isRegExpIdentifierStart2(ch) {
        return isIdentifierStart2(ch, !0) || ch === 36 || ch === 95;
      }
      pp$12.regexp_eatRegExpIdentifierPart = function(state) {
        var start2 = state.pos, forceU = this.options.ecmaVersion >= 11, ch = state.current(forceU);
        return state.advance(forceU), ch === 92 && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU) && (ch = state.lastIntValue), isRegExpIdentifierPart2(ch) ? (state.lastIntValue = ch, !0) : (state.pos = start2, !1);
      };
      function isRegExpIdentifierPart2(ch) {
        return isIdentifierChar2(ch, !0) || ch === 36 || ch === 95 || ch === 8204 || ch === 8205;
      }
      pp$12.regexp_eatAtomEscape = function(state) {
        return this.regexp_eatBackReference(state) || this.regexp_eatCharacterClassEscape(state) || this.regexp_eatCharacterEscape(state) || state.switchN && this.regexp_eatKGroupName(state) ? !0 : (state.switchU && (state.current() === 99 && state.raise("Invalid unicode escape"), state.raise("Invalid escape")), !1);
      }, pp$12.regexp_eatBackReference = function(state) {
        var start2 = state.pos;
        if (this.regexp_eatDecimalEscape(state)) {
          var n = state.lastIntValue;
          if (state.switchU)
            return n > state.maxBackReference && (state.maxBackReference = n), !0;
          if (n <= state.numCapturingParens)
            return !0;
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatKGroupName = function(state) {
        if (state.eat(
          107
          /* k */
        )) {
          if (this.regexp_eatGroupName(state))
            return state.backReferenceNames.push(state.lastStringValue), !0;
          state.raise("Invalid named reference");
        }
        return !1;
      }, pp$12.regexp_eatCharacterEscape = function(state) {
        return this.regexp_eatControlEscape(state) || this.regexp_eatCControlLetter(state) || this.regexp_eatZero(state) || this.regexp_eatHexEscapeSequence(state) || this.regexp_eatRegExpUnicodeEscapeSequence(state, !1) || !state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state) || this.regexp_eatIdentityEscape(state);
      }, pp$12.regexp_eatCControlLetter = function(state) {
        var start2 = state.pos;
        if (state.eat(
          99
          /* c */
        )) {
          if (this.regexp_eatControlLetter(state))
            return !0;
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatZero = function(state) {
        return state.current() === 48 && !isDecimalDigit2(state.lookahead()) ? (state.lastIntValue = 0, state.advance(), !0) : !1;
      }, pp$12.regexp_eatControlEscape = function(state) {
        var ch = state.current();
        return ch === 116 ? (state.lastIntValue = 9, state.advance(), !0) : ch === 110 ? (state.lastIntValue = 10, state.advance(), !0) : ch === 118 ? (state.lastIntValue = 11, state.advance(), !0) : ch === 102 ? (state.lastIntValue = 12, state.advance(), !0) : ch === 114 ? (state.lastIntValue = 13, state.advance(), !0) : !1;
      }, pp$12.regexp_eatControlLetter = function(state) {
        var ch = state.current();
        return isControlLetter2(ch) ? (state.lastIntValue = ch % 32, state.advance(), !0) : !1;
      };
      function isControlLetter2(ch) {
        return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122;
      }
      pp$12.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {
        forceU === void 0 && (forceU = !1);
        var start2 = state.pos, switchU = forceU || state.switchU;
        if (state.eat(
          117
          /* u */
        )) {
          if (this.regexp_eatFixedHexDigits(state, 4)) {
            var lead = state.lastIntValue;
            if (switchU && lead >= 55296 && lead <= 56319) {
              var leadSurrogateEnd = state.pos;
              if (state.eat(
                92
                /* \ */
              ) && state.eat(
                117
                /* u */
              ) && this.regexp_eatFixedHexDigits(state, 4)) {
                var trail = state.lastIntValue;
                if (trail >= 56320 && trail <= 57343)
                  return state.lastIntValue = (lead - 55296) * 1024 + (trail - 56320) + 65536, !0;
              }
              state.pos = leadSurrogateEnd, state.lastIntValue = lead;
            }
            return !0;
          }
          if (switchU && state.eat(
            123
            /* { */
          ) && this.regexp_eatHexDigits(state) && state.eat(
            125
            /* } */
          ) && isValidUnicode2(state.lastIntValue))
            return !0;
          switchU && state.raise("Invalid unicode escape"), state.pos = start2;
        }
        return !1;
      };
      function isValidUnicode2(ch) {
        return ch >= 0 && ch <= 1114111;
      }
      pp$12.regexp_eatIdentityEscape = function(state) {
        if (state.switchU)
          return this.regexp_eatSyntaxCharacter(state) ? !0 : state.eat(
            47
            /* / */
          ) ? (state.lastIntValue = 47, !0) : !1;
        var ch = state.current();
        return ch !== 99 && (!state.switchN || ch !== 107) ? (state.lastIntValue = ch, state.advance(), !0) : !1;
      }, pp$12.regexp_eatDecimalEscape = function(state) {
        state.lastIntValue = 0;
        var ch = state.current();
        if (ch >= 49 && ch <= 57) {
          do
            state.lastIntValue = 10 * state.lastIntValue + (ch - 48), state.advance();
          while ((ch = state.current()) >= 48 && ch <= 57);
          return !0;
        }
        return !1;
      };
      var CharSetNone2 = 0, CharSetOk2 = 1, CharSetString2 = 2;
      pp$12.regexp_eatCharacterClassEscape = function(state) {
        var ch = state.current();
        if (isCharacterClassEscape2(ch))
          return state.lastIntValue = -1, state.advance(), CharSetOk2;
        var negate = !1;
        if (state.switchU && this.options.ecmaVersion >= 9 && ((negate = ch === 80) || ch === 112)) {
          state.lastIntValue = -1, state.advance();
          var result;
          if (state.eat(
            123
            /* { */
          ) && (result = this.regexp_eatUnicodePropertyValueExpression(state)) && state.eat(
            125
            /* } */
          ))
            return negate && result === CharSetString2 && state.raise("Invalid property name"), result;
          state.raise("Invalid property name");
        }
        return CharSetNone2;
      };
      function isCharacterClassEscape2(ch) {
        return ch === 100 || ch === 68 || ch === 115 || ch === 83 || ch === 119 || ch === 87;
      }
      pp$12.regexp_eatUnicodePropertyValueExpression = function(state) {
        var start2 = state.pos;
        if (this.regexp_eatUnicodePropertyName(state) && state.eat(
          61
          /* = */
        )) {
          var name2 = state.lastStringValue;
          if (this.regexp_eatUnicodePropertyValue(state)) {
            var value = state.lastStringValue;
            return this.regexp_validateUnicodePropertyNameAndValue(state, name2, value), CharSetOk2;
          }
        }
        if (state.pos = start2, this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {
          var nameOrValue = state.lastStringValue;
          return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue);
        }
        return CharSetNone2;
      }, pp$12.regexp_validateUnicodePropertyNameAndValue = function(state, name2, value) {
        hasOwn2(state.unicodeProperties.nonBinary, name2) || state.raise("Invalid property name"), state.unicodeProperties.nonBinary[name2].test(value) || state.raise("Invalid property value");
      }, pp$12.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {
        if (state.unicodeProperties.binary.test(nameOrValue))
          return CharSetOk2;
        if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue))
          return CharSetString2;
        state.raise("Invalid property name");
      }, pp$12.regexp_eatUnicodePropertyName = function(state) {
        var ch = 0;
        for (state.lastStringValue = ""; isUnicodePropertyNameCharacter2(ch = state.current()); )
          state.lastStringValue += codePointToString2(ch), state.advance();
        return state.lastStringValue !== "";
      };
      function isUnicodePropertyNameCharacter2(ch) {
        return isControlLetter2(ch) || ch === 95;
      }
      pp$12.regexp_eatUnicodePropertyValue = function(state) {
        var ch = 0;
        for (state.lastStringValue = ""; isUnicodePropertyValueCharacter2(ch = state.current()); )
          state.lastStringValue += codePointToString2(ch), state.advance();
        return state.lastStringValue !== "";
      };
      function isUnicodePropertyValueCharacter2(ch) {
        return isUnicodePropertyNameCharacter2(ch) || isDecimalDigit2(ch);
      }
      pp$12.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {
        return this.regexp_eatUnicodePropertyValue(state);
      }, pp$12.regexp_eatCharacterClass = function(state) {
        if (state.eat(
          91
          /* [ */
        )) {
          var negate = state.eat(
            94
            /* ^ */
          ), result = this.regexp_classContents(state);
          return state.eat(
            93
            /* ] */
          ) || state.raise("Unterminated character class"), negate && result === CharSetString2 && state.raise("Negated character class may contain strings"), !0;
        }
        return !1;
      }, pp$12.regexp_classContents = function(state) {
        return state.current() === 93 ? CharSetOk2 : state.switchV ? this.regexp_classSetExpression(state) : (this.regexp_nonEmptyClassRanges(state), CharSetOk2);
      }, pp$12.regexp_nonEmptyClassRanges = function(state) {
        for (; this.regexp_eatClassAtom(state); ) {
          var left = state.lastIntValue;
          if (state.eat(
            45
            /* - */
          ) && this.regexp_eatClassAtom(state)) {
            var right = state.lastIntValue;
            state.switchU && (left === -1 || right === -1) && state.raise("Invalid character class"), left !== -1 && right !== -1 && left > right && state.raise("Range out of order in character class");
          }
        }
      }, pp$12.regexp_eatClassAtom = function(state) {
        var start2 = state.pos;
        if (state.eat(
          92
          /* \ */
        )) {
          if (this.regexp_eatClassEscape(state))
            return !0;
          if (state.switchU) {
            var ch$1 = state.current();
            (ch$1 === 99 || isOctalDigit2(ch$1)) && state.raise("Invalid class escape"), state.raise("Invalid escape");
          }
          state.pos = start2;
        }
        var ch = state.current();
        return ch !== 93 ? (state.lastIntValue = ch, state.advance(), !0) : !1;
      }, pp$12.regexp_eatClassEscape = function(state) {
        var start2 = state.pos;
        if (state.eat(
          98
          /* b */
        ))
          return state.lastIntValue = 8, !0;
        if (state.switchU && state.eat(
          45
          /* - */
        ))
          return state.lastIntValue = 45, !0;
        if (!state.switchU && state.eat(
          99
          /* c */
        )) {
          if (this.regexp_eatClassControlLetter(state))
            return !0;
          state.pos = start2;
        }
        return this.regexp_eatCharacterClassEscape(state) || this.regexp_eatCharacterEscape(state);
      }, pp$12.regexp_classSetExpression = function(state) {
        var result = CharSetOk2, subResult;
        if (!this.regexp_eatClassSetRange(state)) if (subResult = this.regexp_eatClassSetOperand(state)) {
          subResult === CharSetString2 && (result = CharSetString2);
          for (var start2 = state.pos; state.eatChars(
            [38, 38]
            /* && */
          ); ) {
            if (state.current() !== 38 && (subResult = this.regexp_eatClassSetOperand(state))) {
              subResult !== CharSetString2 && (result = CharSetOk2);
              continue;
            }
            state.raise("Invalid character in character class");
          }
          if (start2 !== state.pos)
            return result;
          for (; state.eatChars(
            [45, 45]
            /* -- */
          ); )
            this.regexp_eatClassSetOperand(state) || state.raise("Invalid character in character class");
          if (start2 !== state.pos)
            return result;
        } else
          state.raise("Invalid character in character class");
        for (; ; )
          if (!this.regexp_eatClassSetRange(state)) {
            if (subResult = this.regexp_eatClassSetOperand(state), !subResult)
              return result;
            subResult === CharSetString2 && (result = CharSetString2);
          }
      }, pp$12.regexp_eatClassSetRange = function(state) {
        var start2 = state.pos;
        if (this.regexp_eatClassSetCharacter(state)) {
          var left = state.lastIntValue;
          if (state.eat(
            45
            /* - */
          ) && this.regexp_eatClassSetCharacter(state)) {
            var right = state.lastIntValue;
            return left !== -1 && right !== -1 && left > right && state.raise("Range out of order in character class"), !0;
          }
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatClassSetOperand = function(state) {
        return this.regexp_eatClassSetCharacter(state) ? CharSetOk2 : this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state);
      }, pp$12.regexp_eatNestedClass = function(state) {
        var start2 = state.pos;
        if (state.eat(
          91
          /* [ */
        )) {
          var negate = state.eat(
            94
            /* ^ */
          ), result = this.regexp_classContents(state);
          if (state.eat(
            93
            /* ] */
          ))
            return negate && result === CharSetString2 && state.raise("Negated character class may contain strings"), result;
          state.pos = start2;
        }
        if (state.eat(
          92
          /* \ */
        )) {
          var result$1 = this.regexp_eatCharacterClassEscape(state);
          if (result$1)
            return result$1;
          state.pos = start2;
        }
        return null;
      }, pp$12.regexp_eatClassStringDisjunction = function(state) {
        var start2 = state.pos;
        if (state.eatChars(
          [92, 113]
          /* \q */
        )) {
          if (state.eat(
            123
            /* { */
          )) {
            var result = this.regexp_classStringDisjunctionContents(state);
            if (state.eat(
              125
              /* } */
            ))
              return result;
          } else
            state.raise("Invalid escape");
          state.pos = start2;
        }
        return null;
      }, pp$12.regexp_classStringDisjunctionContents = function(state) {
        for (var result = this.regexp_classString(state); state.eat(
          124
          /* | */
        ); )
          this.regexp_classString(state) === CharSetString2 && (result = CharSetString2);
        return result;
      }, pp$12.regexp_classString = function(state) {
        for (var count = 0; this.regexp_eatClassSetCharacter(state); )
          count++;
        return count === 1 ? CharSetOk2 : CharSetString2;
      }, pp$12.regexp_eatClassSetCharacter = function(state) {
        var start2 = state.pos;
        if (state.eat(
          92
          /* \ */
        ))
          return this.regexp_eatCharacterEscape(state) || this.regexp_eatClassSetReservedPunctuator(state) ? !0 : state.eat(
            98
            /* b */
          ) ? (state.lastIntValue = 8, !0) : (state.pos = start2, !1);
        var ch = state.current();
        return ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter2(ch) || isClassSetSyntaxCharacter2(ch) ? !1 : (state.advance(), state.lastIntValue = ch, !0);
      };
      function isClassSetReservedDoublePunctuatorCharacter2(ch) {
        return ch === 33 || ch >= 35 && ch <= 38 || ch >= 42 && ch <= 44 || ch === 46 || ch >= 58 && ch <= 64 || ch === 94 || ch === 96 || ch === 126;
      }
      function isClassSetSyntaxCharacter2(ch) {
        return ch === 40 || ch === 41 || ch === 45 || ch === 47 || ch >= 91 && ch <= 93 || ch >= 123 && ch <= 125;
      }
      pp$12.regexp_eatClassSetReservedPunctuator = function(state) {
        var ch = state.current();
        return isClassSetReservedPunctuator2(ch) ? (state.lastIntValue = ch, state.advance(), !0) : !1;
      };
      function isClassSetReservedPunctuator2(ch) {
        return ch === 33 || ch === 35 || ch === 37 || ch === 38 || ch === 44 || ch === 45 || ch >= 58 && ch <= 62 || ch === 64 || ch === 96 || ch === 126;
      }
      pp$12.regexp_eatClassControlLetter = function(state) {
        var ch = state.current();
        return isDecimalDigit2(ch) || ch === 95 ? (state.lastIntValue = ch % 32, state.advance(), !0) : !1;
      }, pp$12.regexp_eatHexEscapeSequence = function(state) {
        var start2 = state.pos;
        if (state.eat(
          120
          /* x */
        )) {
          if (this.regexp_eatFixedHexDigits(state, 2))
            return !0;
          state.switchU && state.raise("Invalid escape"), state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatDecimalDigits = function(state) {
        var start2 = state.pos, ch = 0;
        for (state.lastIntValue = 0; isDecimalDigit2(ch = state.current()); )
          state.lastIntValue = 10 * state.lastIntValue + (ch - 48), state.advance();
        return state.pos !== start2;
      };
      function isDecimalDigit2(ch) {
        return ch >= 48 && ch <= 57;
      }
      pp$12.regexp_eatHexDigits = function(state) {
        var start2 = state.pos, ch = 0;
        for (state.lastIntValue = 0; isHexDigit2(ch = state.current()); )
          state.lastIntValue = 16 * state.lastIntValue + hexToInt2(ch), state.advance();
        return state.pos !== start2;
      };
      function isHexDigit2(ch) {
        return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102;
      }
      function hexToInt2(ch) {
        return ch >= 65 && ch <= 70 ? 10 + (ch - 65) : ch >= 97 && ch <= 102 ? 10 + (ch - 97) : ch - 48;
      }
      pp$12.regexp_eatLegacyOctalEscapeSequence = function(state) {
        if (this.regexp_eatOctalDigit(state)) {
          var n1 = state.lastIntValue;
          if (this.regexp_eatOctalDigit(state)) {
            var n2 = state.lastIntValue;
            n1 <= 3 && this.regexp_eatOctalDigit(state) ? state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue : state.lastIntValue = n1 * 8 + n2;
          } else
            state.lastIntValue = n1;
          return !0;
        }
        return !1;
      }, pp$12.regexp_eatOctalDigit = function(state) {
        var ch = state.current();
        return isOctalDigit2(ch) ? (state.lastIntValue = ch - 48, state.advance(), !0) : (state.lastIntValue = 0, !1);
      };
      function isOctalDigit2(ch) {
        return ch >= 48 && ch <= 55;
      }
      pp$12.regexp_eatFixedHexDigits = function(state, length) {
        var start2 = state.pos;
        state.lastIntValue = 0;
        for (var i2 = 0; i2 < length; ++i2) {
          var ch = state.current();
          if (!isHexDigit2(ch))
            return state.pos = start2, !1;
          state.lastIntValue = 16 * state.lastIntValue + hexToInt2(ch), state.advance();
        }
        return !0;
      };
      var Token3 = function(p) {
        this.type = p.type, this.value = p.value, this.start = p.start, this.end = p.end, p.options.locations && (this.loc = new SourceLocation3(p, p.startLoc, p.endLoc)), p.options.ranges && (this.range = [p.start, p.end]);
      }, pp2 = Parser3.prototype;
      pp2.next = function(ignoreEscapeSequenceInKeyword) {
        !ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword), this.options.onToken && this.options.onToken(new Token3(this)), this.lastTokEnd = this.end, this.lastTokStart = this.start, this.lastTokEndLoc = this.endLoc, this.lastTokStartLoc = this.startLoc, this.nextToken();
      }, pp2.getToken = function() {
        return this.next(), new Token3(this);
      }, typeof Symbol < "u" && (pp2[Symbol.iterator] = function() {
        var this$1$1 = this;
        return {
          next: function() {
            var token = this$1$1.getToken();
            return {
              done: token.type === types$12.eof,
              value: token
            };
          }
        };
      }), pp2.nextToken = function() {
        var curContext = this.curContext();
        if ((!curContext || !curContext.preserveSpace) && this.skipSpace(), this.start = this.pos, this.options.locations && (this.startLoc = this.curPosition()), this.pos >= this.input.length)
          return this.finishToken(types$12.eof);
        if (curContext.override)
          return curContext.override(this);
        this.readToken(this.fullCharCodeAtPos());
      }, pp2.readToken = function(code2) {
        return isIdentifierStart2(code2, this.options.ecmaVersion >= 6) || code2 === 92 ? this.readWord() : this.getTokenFromCode(code2);
      }, pp2.fullCharCodeAtPos = function() {
        var code2 = this.input.charCodeAt(this.pos);
        if (code2 <= 55295 || code2 >= 56320)
          return code2;
        var next = this.input.charCodeAt(this.pos + 1);
        return next <= 56319 || next >= 57344 ? code2 : (code2 << 10) + next - 56613888;
      }, pp2.skipBlockComment = function() {
        var startLoc = this.options.onComment && this.curPosition(), start2 = this.pos, end = this.input.indexOf("*/", this.pos += 2);
        if (end === -1 && this.raise(this.pos - 2, "Unterminated comment"), this.pos = end + 2, this.options.locations)
          for (var nextBreak = void 0, pos = start2; (nextBreak = nextLineBreak2(this.input, pos, this.pos)) > -1; )
            ++this.curLine, pos = this.lineStart = nextBreak;
        this.options.onComment && this.options.onComment(
          !0,
          this.input.slice(start2 + 2, end),
          start2,
          this.pos,
          startLoc,
          this.curPosition()
        );
      }, pp2.skipLineComment = function(startSkip) {
        for (var start2 = this.pos, startLoc = this.options.onComment && this.curPosition(), ch = this.input.charCodeAt(this.pos += startSkip); this.pos < this.input.length && !isNewLine2(ch); )
          ch = this.input.charCodeAt(++this.pos);
        this.options.onComment && this.options.onComment(
          !1,
          this.input.slice(start2 + startSkip, this.pos),
          start2,
          this.pos,
          startLoc,
          this.curPosition()
        );
      }, pp2.skipSpace = function() {
        loop: for (; this.pos < this.input.length; ) {
          var ch = this.input.charCodeAt(this.pos);
          switch (ch) {
            case 32:
            case 160:
              ++this.pos;
              break;
            case 13:
              this.input.charCodeAt(this.pos + 1) === 10 && ++this.pos;
            case 10:
            case 8232:
            case 8233:
              ++this.pos, this.options.locations && (++this.curLine, this.lineStart = this.pos);
              break;
            case 47:
              switch (this.input.charCodeAt(this.pos + 1)) {
                case 42:
                  this.skipBlockComment();
                  break;
                case 47:
                  this.skipLineComment(2);
                  break;
                default:
                  break loop;
              }
              break;
            default:
              if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace2.test(String.fromCharCode(ch)))
                ++this.pos;
              else
                break loop;
          }
        }
      }, pp2.finishToken = function(type, val) {
        this.end = this.pos, this.options.locations && (this.endLoc = this.curPosition());
        var prevType = this.type;
        this.type = type, this.value = val, this.updateContext(prevType);
      }, pp2.readToken_dot = function() {
        var next = this.input.charCodeAt(this.pos + 1);
        if (next >= 48 && next <= 57)
          return this.readNumber(!0);
        var next2 = this.input.charCodeAt(this.pos + 2);
        return this.options.ecmaVersion >= 6 && next === 46 && next2 === 46 ? (this.pos += 3, this.finishToken(types$12.ellipsis)) : (++this.pos, this.finishToken(types$12.dot));
      }, pp2.readToken_slash = function() {
        var next = this.input.charCodeAt(this.pos + 1);
        return this.exprAllowed ? (++this.pos, this.readRegexp()) : next === 61 ? this.finishOp(types$12.assign, 2) : this.finishOp(types$12.slash, 1);
      }, pp2.readToken_mult_modulo_exp = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1), size = 1, tokentype = code2 === 42 ? types$12.star : types$12.modulo;
        return this.options.ecmaVersion >= 7 && code2 === 42 && next === 42 && (++size, tokentype = types$12.starstar, next = this.input.charCodeAt(this.pos + 2)), next === 61 ? this.finishOp(types$12.assign, size + 1) : this.finishOp(tokentype, size);
      }, pp2.readToken_pipe_amp = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1);
        if (next === code2) {
          if (this.options.ecmaVersion >= 12) {
            var next2 = this.input.charCodeAt(this.pos + 2);
            if (next2 === 61)
              return this.finishOp(types$12.assign, 3);
          }
          return this.finishOp(code2 === 124 ? types$12.logicalOR : types$12.logicalAND, 2);
        }
        return next === 61 ? this.finishOp(types$12.assign, 2) : this.finishOp(code2 === 124 ? types$12.bitwiseOR : types$12.bitwiseAND, 1);
      }, pp2.readToken_caret = function() {
        var next = this.input.charCodeAt(this.pos + 1);
        return next === 61 ? this.finishOp(types$12.assign, 2) : this.finishOp(types$12.bitwiseXOR, 1);
      }, pp2.readToken_plus_min = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1);
        return next === code2 ? next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && (this.lastTokEnd === 0 || lineBreak2.test(this.input.slice(this.lastTokEnd, this.pos))) ? (this.skipLineComment(3), this.skipSpace(), this.nextToken()) : this.finishOp(types$12.incDec, 2) : next === 61 ? this.finishOp(types$12.assign, 2) : this.finishOp(types$12.plusMin, 1);
      }, pp2.readToken_lt_gt = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1), size = 1;
        return next === code2 ? (size = code2 === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2, this.input.charCodeAt(this.pos + size) === 61 ? this.finishOp(types$12.assign, size + 1) : this.finishOp(types$12.bitShift, size)) : next === 33 && code2 === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && this.input.charCodeAt(this.pos + 3) === 45 ? (this.skipLineComment(4), this.skipSpace(), this.nextToken()) : (next === 61 && (size = 2), this.finishOp(types$12.relational, size));
      }, pp2.readToken_eq_excl = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1);
        return next === 61 ? this.finishOp(types$12.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) : code2 === 61 && next === 62 && this.options.ecmaVersion >= 6 ? (this.pos += 2, this.finishToken(types$12.arrow)) : this.finishOp(code2 === 61 ? types$12.eq : types$12.prefix, 1);
      }, pp2.readToken_question = function() {
        var ecmaVersion2 = this.options.ecmaVersion;
        if (ecmaVersion2 >= 11) {
          var next = this.input.charCodeAt(this.pos + 1);
          if (next === 46) {
            var next2 = this.input.charCodeAt(this.pos + 2);
            if (next2 < 48 || next2 > 57)
              return this.finishOp(types$12.questionDot, 2);
          }
          if (next === 63) {
            if (ecmaVersion2 >= 12) {
              var next2$1 = this.input.charCodeAt(this.pos + 2);
              if (next2$1 === 61)
                return this.finishOp(types$12.assign, 3);
            }
            return this.finishOp(types$12.coalesce, 2);
          }
        }
        return this.finishOp(types$12.question, 1);
      }, pp2.readToken_numberSign = function() {
        var ecmaVersion2 = this.options.ecmaVersion, code2 = 35;
        if (ecmaVersion2 >= 13 && (++this.pos, code2 = this.fullCharCodeAtPos(), isIdentifierStart2(code2, !0) || code2 === 92))
          return this.finishToken(types$12.privateId, this.readWord1());
        this.raise(this.pos, "Unexpected character '" + codePointToString2(code2) + "'");
      }, pp2.getTokenFromCode = function(code2) {
        switch (code2) {
          // The interpretation of a dot depends on whether it is followed
          // by a digit or another two dots.
          case 46:
            return this.readToken_dot();
          // Punctuation tokens.
          case 40:
            return ++this.pos, this.finishToken(types$12.parenL);
          case 41:
            return ++this.pos, this.finishToken(types$12.parenR);
          case 59:
            return ++this.pos, this.finishToken(types$12.semi);
          case 44:
            return ++this.pos, this.finishToken(types$12.comma);
          case 91:
            return ++this.pos, this.finishToken(types$12.bracketL);
          case 93:
            return ++this.pos, this.finishToken(types$12.bracketR);
          case 123:
            return ++this.pos, this.finishToken(types$12.braceL);
          case 125:
            return ++this.pos, this.finishToken(types$12.braceR);
          case 58:
            return ++this.pos, this.finishToken(types$12.colon);
          case 96:
            if (this.options.ecmaVersion < 6)
              break;
            return ++this.pos, this.finishToken(types$12.backQuote);
          case 48:
            var next = this.input.charCodeAt(this.pos + 1);
            if (next === 120 || next === 88)
              return this.readRadixNumber(16);
            if (this.options.ecmaVersion >= 6) {
              if (next === 111 || next === 79)
                return this.readRadixNumber(8);
              if (next === 98 || next === 66)
                return this.readRadixNumber(2);
            }
          // Anything else beginning with a digit is an integer, octal
          // number, or float.
          case 49:
          case 50:
          case 51:
          case 52:
          case 53:
          case 54:
          case 55:
          case 56:
          case 57:
            return this.readNumber(!1);
          // Quotes produce strings.
          case 34:
          case 39:
            return this.readString(code2);
          // Operators are parsed inline in tiny state machines. '=' (61) is
          // often referred to. `finishOp` simply skips the amount of
          // characters it is given as second argument, and returns a token
          // of the type given by its first argument.
          case 47:
            return this.readToken_slash();
          case 37:
          case 42:
            return this.readToken_mult_modulo_exp(code2);
          case 124:
          case 38:
            return this.readToken_pipe_amp(code2);
          case 94:
            return this.readToken_caret();
          case 43:
          case 45:
            return this.readToken_plus_min(code2);
          case 60:
          case 62:
            return this.readToken_lt_gt(code2);
          case 61:
          case 33:
            return this.readToken_eq_excl(code2);
          case 63:
            return this.readToken_question();
          case 126:
            return this.finishOp(types$12.prefix, 1);
          case 35:
            return this.readToken_numberSign();
        }
        this.raise(this.pos, "Unexpected character '" + codePointToString2(code2) + "'");
      }, pp2.finishOp = function(type, size) {
        var str = this.input.slice(this.pos, this.pos + size);
        return this.pos += size, this.finishToken(type, str);
      }, pp2.readRegexp = function() {
        for (var escaped, inClass, start2 = this.pos; ; ) {
          this.pos >= this.input.length && this.raise(start2, "Unterminated regular expression");
          var ch = this.input.charAt(this.pos);
          if (lineBreak2.test(ch) && this.raise(start2, "Unterminated regular expression"), escaped)
            escaped = !1;
          else {
            if (ch === "[")
              inClass = !0;
            else if (ch === "]" && inClass)
              inClass = !1;
            else if (ch === "/" && !inClass)
              break;
            escaped = ch === "\\";
          }
          ++this.pos;
        }
        var pattern = this.input.slice(start2, this.pos);
        ++this.pos;
        var flagsStart = this.pos, flags = this.readWord1();
        this.containsEsc && this.unexpected(flagsStart);
        var state = this.regexpState || (this.regexpState = new RegExpValidationState3(this));
        state.reset(start2, pattern, flags), this.validateRegExpFlags(state), this.validateRegExpPattern(state);
        var value = null;
        try {
          value = new RegExp(pattern, flags);
        } catch {
        }
        return this.finishToken(types$12.regexp, { pattern, flags, value });
      }, pp2.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {
        for (var allowSeparators = this.options.ecmaVersion >= 12 && len === void 0, isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48, start2 = this.pos, total = 0, lastCode = 0, i2 = 0, e = len ?? 1 / 0; i2 < e; ++i2, ++this.pos) {
          var code2 = this.input.charCodeAt(this.pos), val = void 0;
          if (allowSeparators && code2 === 95) {
            isLegacyOctalNumericLiteral && this.raiseRecoverable(this.pos, "Numeric separator is not allowed in legacy octal numeric literals"), lastCode === 95 && this.raiseRecoverable(this.pos, "Numeric separator must be exactly one underscore"), i2 === 0 && this.raiseRecoverable(this.pos, "Numeric separator is not allowed at the first of digits"), lastCode = code2;
            continue;
          }
          if (code2 >= 97 ? val = code2 - 97 + 10 : code2 >= 65 ? val = code2 - 65 + 10 : code2 >= 48 && code2 <= 57 ? val = code2 - 48 : val = 1 / 0, val >= radix)
            break;
          lastCode = code2, total = total * radix + val;
        }
        return allowSeparators && lastCode === 95 && this.raiseRecoverable(this.pos - 1, "Numeric separator is not allowed at the last of digits"), this.pos === start2 || len != null && this.pos - start2 !== len ? null : total;
      };
      function stringToNumber2(str, isLegacyOctalNumericLiteral) {
        return isLegacyOctalNumericLiteral ? parseInt(str, 8) : parseFloat(str.replace(/_/g, ""));
      }
      function stringToBigInt2(str) {
        return typeof BigInt != "function" ? null : BigInt(str.replace(/_/g, ""));
      }
      pp2.readRadixNumber = function(radix) {
        var start2 = this.pos;
        this.pos += 2;
        var val = this.readInt(radix);
        return val == null && this.raise(this.start + 2, "Expected number in radix " + radix), this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110 ? (val = stringToBigInt2(this.input.slice(start2, this.pos)), ++this.pos) : isIdentifierStart2(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number"), this.finishToken(types$12.num, val);
      }, pp2.readNumber = function(startsWithDot) {
        var start2 = this.pos;
        !startsWithDot && this.readInt(10, void 0, !0) === null && this.raise(start2, "Invalid number");
        var octal = this.pos - start2 >= 2 && this.input.charCodeAt(start2) === 48;
        octal && this.strict && this.raise(start2, "Invalid number");
        var next = this.input.charCodeAt(this.pos);
        if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {
          var val$1 = stringToBigInt2(this.input.slice(start2, this.pos));
          return ++this.pos, isIdentifierStart2(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number"), this.finishToken(types$12.num, val$1);
        }
        octal && /[89]/.test(this.input.slice(start2, this.pos)) && (octal = !1), next === 46 && !octal && (++this.pos, this.readInt(10), next = this.input.charCodeAt(this.pos)), (next === 69 || next === 101) && !octal && (next = this.input.charCodeAt(++this.pos), (next === 43 || next === 45) && ++this.pos, this.readInt(10) === null && this.raise(start2, "Invalid number")), isIdentifierStart2(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number");
        var val = stringToNumber2(this.input.slice(start2, this.pos), octal);
        return this.finishToken(types$12.num, val);
      }, pp2.readCodePoint = function() {
        var ch = this.input.charCodeAt(this.pos), code2;
        if (ch === 123) {
          this.options.ecmaVersion < 6 && this.unexpected();
          var codePos = ++this.pos;
          code2 = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos), ++this.pos, code2 > 1114111 && this.invalidStringToken(codePos, "Code point out of bounds");
        } else
          code2 = this.readHexChar(4);
        return code2;
      }, pp2.readString = function(quote) {
        for (var out = "", chunkStart = ++this.pos; ; ) {
          this.pos >= this.input.length && this.raise(this.start, "Unterminated string constant");
          var ch = this.input.charCodeAt(this.pos);
          if (ch === quote)
            break;
          ch === 92 ? (out += this.input.slice(chunkStart, this.pos), out += this.readEscapedChar(!1), chunkStart = this.pos) : ch === 8232 || ch === 8233 ? (this.options.ecmaVersion < 10 && this.raise(this.start, "Unterminated string constant"), ++this.pos, this.options.locations && (this.curLine++, this.lineStart = this.pos)) : (isNewLine2(ch) && this.raise(this.start, "Unterminated string constant"), ++this.pos);
        }
        return out += this.input.slice(chunkStart, this.pos++), this.finishToken(types$12.string, out);
      };
      var INVALID_TEMPLATE_ESCAPE_ERROR2 = {};
      pp2.tryReadTemplateToken = function() {
        this.inTemplateElement = !0;
        try {
          this.readTmplToken();
        } catch (err) {
          if (err === INVALID_TEMPLATE_ESCAPE_ERROR2)
            this.readInvalidTemplateToken();
          else
            throw err;
        }
        this.inTemplateElement = !1;
      }, pp2.invalidStringToken = function(position3, message) {
        if (this.inTemplateElement && this.options.ecmaVersion >= 9)
          throw INVALID_TEMPLATE_ESCAPE_ERROR2;
        this.raise(position3, message);
      }, pp2.readTmplToken = function() {
        for (var out = "", chunkStart = this.pos; ; ) {
          this.pos >= this.input.length && this.raise(this.start, "Unterminated template");
          var ch = this.input.charCodeAt(this.pos);
          if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123)
            return this.pos === this.start && (this.type === types$12.template || this.type === types$12.invalidTemplate) ? ch === 36 ? (this.pos += 2, this.finishToken(types$12.dollarBraceL)) : (++this.pos, this.finishToken(types$12.backQuote)) : (out += this.input.slice(chunkStart, this.pos), this.finishToken(types$12.template, out));
          if (ch === 92)
            out += this.input.slice(chunkStart, this.pos), out += this.readEscapedChar(!0), chunkStart = this.pos;
          else if (isNewLine2(ch)) {
            switch (out += this.input.slice(chunkStart, this.pos), ++this.pos, ch) {
              case 13:
                this.input.charCodeAt(this.pos) === 10 && ++this.pos;
              case 10:
                out += `
`;
                break;
              default:
                out += String.fromCharCode(ch);
                break;
            }
            this.options.locations && (++this.curLine, this.lineStart = this.pos), chunkStart = this.pos;
          } else
            ++this.pos;
        }
      }, pp2.readInvalidTemplateToken = function() {
        for (; this.pos < this.input.length; this.pos++)
          switch (this.input[this.pos]) {
            case "\\":
              ++this.pos;
              break;
            case "$":
              if (this.input[this.pos + 1] !== "{")
                break;
            // fall through
            case "`":
              return this.finishToken(types$12.invalidTemplate, this.input.slice(this.start, this.pos));
            case "\r":
              this.input[this.pos + 1] === `
` && ++this.pos;
            // fall through
            case `
`:
            case "\u2028":
            case "\u2029":
              ++this.curLine, this.lineStart = this.pos + 1;
              break;
          }
        this.raise(this.start, "Unterminated template");
      }, pp2.readEscapedChar = function(inTemplate) {
        var ch = this.input.charCodeAt(++this.pos);
        switch (++this.pos, ch) {
          case 110:
            return `
`;
          // 'n' -> '\n'
          case 114:
            return "\r";
          // 'r' -> '\r'
          case 120:
            return String.fromCharCode(this.readHexChar(2));
          // 'x'
          case 117:
            return codePointToString2(this.readCodePoint());
          // 'u'
          case 116:
            return "	";
          // 't' -> '\t'
          case 98:
            return "\b";
          // 'b' -> '\b'
          case 118:
            return "\v";
          // 'v' -> '\u000b'
          case 102:
            return "\f";
          // 'f' -> '\f'
          case 13:
            this.input.charCodeAt(this.pos) === 10 && ++this.pos;
          // '\r\n'
          case 10:
            return this.options.locations && (this.lineStart = this.pos, ++this.curLine), "";
          case 56:
          case 57:
            if (this.strict && this.invalidStringToken(
              this.pos - 1,
              "Invalid escape sequence"
            ), inTemplate) {
              var codePos = this.pos - 1;
              this.invalidStringToken(
                codePos,
                "Invalid escape sequence in template string"
              );
            }
          default:
            if (ch >= 48 && ch <= 55) {
              var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0], octal = parseInt(octalStr, 8);
              return octal > 255 && (octalStr = octalStr.slice(0, -1), octal = parseInt(octalStr, 8)), this.pos += octalStr.length - 1, ch = this.input.charCodeAt(this.pos), (octalStr !== "0" || ch === 56 || ch === 57) && (this.strict || inTemplate) && this.invalidStringToken(
                this.pos - 1 - octalStr.length,
                inTemplate ? "Octal literal in template string" : "Octal literal in strict mode"
              ), String.fromCharCode(octal);
            }
            return isNewLine2(ch) ? (this.options.locations && (this.lineStart = this.pos, ++this.curLine), "") : String.fromCharCode(ch);
        }
      }, pp2.readHexChar = function(len) {
        var codePos = this.pos, n = this.readInt(16, len);
        return n === null && this.invalidStringToken(codePos, "Bad character escape sequence"), n;
      }, pp2.readWord1 = function() {
        this.containsEsc = !1;
        for (var word = "", first = !0, chunkStart = this.pos, astral = this.options.ecmaVersion >= 6; this.pos < this.input.length; ) {
          var ch = this.fullCharCodeAtPos();
          if (isIdentifierChar2(ch, astral))
            this.pos += ch <= 65535 ? 1 : 2;
          else if (ch === 92) {
            this.containsEsc = !0, word += this.input.slice(chunkStart, this.pos);
            var escStart = this.pos;
            this.input.charCodeAt(++this.pos) !== 117 && this.invalidStringToken(this.pos, "Expecting Unicode escape sequence \\uXXXX"), ++this.pos;
            var esc = this.readCodePoint();
            (first ? isIdentifierStart2 : isIdentifierChar2)(esc, astral) || this.invalidStringToken(escStart, "Invalid Unicode escape"), word += codePointToString2(esc), chunkStart = this.pos;
          } else
            break;
          first = !1;
        }
        return word + this.input.slice(chunkStart, this.pos);
      }, pp2.readWord = function() {
        var word = this.readWord1(), type = types$12.name;
        return this.keywords.test(word) && (type = keywords2[word]), this.finishToken(type, word);
      };
      var version2 = "8.15.0";
      Parser3.acorn = {
        Parser: Parser3,
        version: version2,
        defaultOptions: defaultOptions2,
        Position: Position3,
        SourceLocation: SourceLocation3,
        getLineInfo: getLineInfo2,
        Node: Node3,
        TokenType: TokenType3,
        tokTypes: types$12,
        keywordTypes: keywords2,
        TokContext: TokContext3,
        tokContexts: types2,
        isIdentifierChar: isIdentifierChar2,
        isIdentifierStart: isIdentifierStart2,
        Token: Token3,
        isNewLine: isNewLine2,
        lineBreak: lineBreak2,
        lineBreakG: lineBreakG2,
        nonASCIIwhitespace: nonASCIIwhitespace2
      };
      function parse4(input, options) {
        return Parser3.parse(input, options);
      }
      function parseExpressionAt2(input, pos, options) {
        return Parser3.parseExpressionAt(input, pos, options);
      }
      function tokenizer2(input, options) {
        return Parser3.tokenizer(input, options);
      }
      exports2.Node = Node3, exports2.Parser = Parser3, exports2.Position = Position3, exports2.SourceLocation = SourceLocation3, exports2.TokContext = TokContext3, exports2.Token = Token3, exports2.TokenType = TokenType3, exports2.defaultOptions = defaultOptions2, exports2.getLineInfo = getLineInfo2, exports2.isIdentifierChar = isIdentifierChar2, exports2.isIdentifierStart = isIdentifierStart2, exports2.isNewLine = isNewLine2, exports2.keywordTypes = keywords2, exports2.lineBreak = lineBreak2, exports2.lineBreakG = lineBreakG2, exports2.nonASCIIwhitespace = nonASCIIwhitespace2, exports2.parse = parse4, exports2.parseExpressionAt = parseExpressionAt2, exports2.tokContexts = types2, exports2.tokTypes = types$12, exports2.tokenizer = tokenizer2, exports2.version = version2;
    }));
  }
});

// ../../../node_modules/@mdx-js/mdx/node_modules/acorn-jsx/index.js
var require_acorn_jsx = __commonJS({
  "../../../node_modules/@mdx-js/mdx/node_modules/acorn-jsx/index.js"(exports, module) {
    "use strict";
    var XHTMLEntities = require_xhtml(), hexNumber = /^[\da-fA-F]+$/, decimalNumber = /^\d+$/, acornJsxMap = /* @__PURE__ */ new WeakMap();
    function getJsxTokens(acorn) {
      acorn = acorn.Parser.acorn || acorn;
      let acornJsx2 = acornJsxMap.get(acorn);
      if (!acornJsx2) {
        let tt = acorn.tokTypes, TokContext3 = acorn.TokContext, TokenType3 = acorn.TokenType, tc_oTag = new TokContext3("<tag", !1), tc_cTag = new TokContext3("</tag", !1), tc_expr = new TokContext3("<tag>...</tag>", !0, !0), tokContexts = {
          tc_oTag,
          tc_cTag,
          tc_expr
        }, tokTypes = {
          jsxName: new TokenType3("jsxName"),
          jsxText: new TokenType3("jsxText", { beforeExpr: !0 }),
          jsxTagStart: new TokenType3("jsxTagStart", { startsExpr: !0 }),
          jsxTagEnd: new TokenType3("jsxTagEnd")
        };
        tokTypes.jsxTagStart.updateContext = function() {
          this.context.push(tc_expr), this.context.push(tc_oTag), this.exprAllowed = !1;
        }, tokTypes.jsxTagEnd.updateContext = function(prevType) {
          let out = this.context.pop();
          out === tc_oTag && prevType === tt.slash || out === tc_cTag ? (this.context.pop(), this.exprAllowed = this.curContext() === tc_expr) : this.exprAllowed = !0;
        }, acornJsx2 = { tokContexts, tokTypes }, acornJsxMap.set(acorn, acornJsx2);
      }
      return acornJsx2;
    }
    function getQualifiedJSXName(object) {
      if (!object)
        return object;
      if (object.type === "JSXIdentifier")
        return object.name;
      if (object.type === "JSXNamespacedName")
        return object.namespace.name + ":" + object.name.name;
      if (object.type === "JSXMemberExpression")
        return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property);
    }
    module.exports = function(options) {
      return options = options || {}, function(Parser3) {
        return plugin({
          allowNamespaces: options.allowNamespaces !== !1,
          allowNamespacedObjects: !!options.allowNamespacedObjects
        }, Parser3);
      };
    };
    Object.defineProperty(module.exports, "tokTypes", {
      get: function() {
        return getJsxTokens(require_acorn()).tokTypes;
      },
      configurable: !0,
      enumerable: !0
    });
    function plugin(options, Parser3) {
      let acorn = Parser3.acorn || require_acorn(), acornJsx2 = getJsxTokens(acorn), tt = acorn.tokTypes, tok = acornJsx2.tokTypes, tokContexts = acorn.tokContexts, tc_oTag = acornJsx2.tokContexts.tc_oTag, tc_cTag = acornJsx2.tokContexts.tc_cTag, tc_expr = acornJsx2.tokContexts.tc_expr, isNewLine2 = acorn.isNewLine, isIdentifierStart2 = acorn.isIdentifierStart, isIdentifierChar2 = acorn.isIdentifierChar;
      return class extends Parser3 {
        // Expose actual `tokTypes` and `tokContexts` to other plugins.
        static get acornJsx() {
          return acornJsx2;
        }
        // Reads inline JSX contents token.
        jsx_readToken() {
          let out = "", chunkStart = this.pos;
          for (; ; ) {
            this.pos >= this.input.length && this.raise(this.start, "Unterminated JSX contents");
            let ch = this.input.charCodeAt(this.pos);
            switch (ch) {
              case 60:
              // '<'
              case 123:
                return this.pos === this.start ? ch === 60 && this.exprAllowed ? (++this.pos, this.finishToken(tok.jsxTagStart)) : this.getTokenFromCode(ch) : (out += this.input.slice(chunkStart, this.pos), this.finishToken(tok.jsxText, out));
              case 38:
                out += this.input.slice(chunkStart, this.pos), out += this.jsx_readEntity(), chunkStart = this.pos;
                break;
              case 62:
              // '>'
              case 125:
                this.raise(
                  this.pos,
                  "Unexpected token `" + this.input[this.pos] + "`. Did you mean `" + (ch === 62 ? "&gt;" : "&rbrace;") + '` or `{"' + this.input[this.pos] + '"}`?'
                );
              default:
                isNewLine2(ch) ? (out += this.input.slice(chunkStart, this.pos), out += this.jsx_readNewLine(!0), chunkStart = this.pos) : ++this.pos;
            }
          }
        }
        jsx_readNewLine(normalizeCRLF) {
          let ch = this.input.charCodeAt(this.pos), out;
          return ++this.pos, ch === 13 && this.input.charCodeAt(this.pos) === 10 ? (++this.pos, out = normalizeCRLF ? `
` : `\r
`) : out = String.fromCharCode(ch), this.options.locations && (++this.curLine, this.lineStart = this.pos), out;
        }
        jsx_readString(quote) {
          let out = "", chunkStart = ++this.pos;
          for (; ; ) {
            this.pos >= this.input.length && this.raise(this.start, "Unterminated string constant");
            let ch = this.input.charCodeAt(this.pos);
            if (ch === quote) break;
            ch === 38 ? (out += this.input.slice(chunkStart, this.pos), out += this.jsx_readEntity(), chunkStart = this.pos) : isNewLine2(ch) ? (out += this.input.slice(chunkStart, this.pos), out += this.jsx_readNewLine(!1), chunkStart = this.pos) : ++this.pos;
          }
          return out += this.input.slice(chunkStart, this.pos++), this.finishToken(tt.string, out);
        }
        jsx_readEntity() {
          let str = "", count = 0, entity, ch = this.input[this.pos];
          ch !== "&" && this.raise(this.pos, "Entity must start with an ampersand");
          let startPos = ++this.pos;
          for (; this.pos < this.input.length && count++ < 10; ) {
            if (ch = this.input[this.pos++], ch === ";") {
              str[0] === "#" ? str[1] === "x" ? (str = str.substr(2), hexNumber.test(str) && (entity = String.fromCharCode(parseInt(str, 16)))) : (str = str.substr(1), decimalNumber.test(str) && (entity = String.fromCharCode(parseInt(str, 10)))) : entity = XHTMLEntities[str];
              break;
            }
            str += ch;
          }
          return entity || (this.pos = startPos, "&");
        }
        // Read a JSX identifier (valid tag or attribute name).
        //
        // Optimized version since JSX identifiers can't contain
        // escape characters and so can be read as single slice.
        // Also assumes that first character was already checked
        // by isIdentifierStart in readToken.
        jsx_readWord() {
          let ch, start2 = this.pos;
          do
            ch = this.input.charCodeAt(++this.pos);
          while (isIdentifierChar2(ch) || ch === 45);
          return this.finishToken(tok.jsxName, this.input.slice(start2, this.pos));
        }
        // Parse next token as JSX identifier
        jsx_parseIdentifier() {
          let node2 = this.startNode();
          return this.type === tok.jsxName ? node2.name = this.value : this.type.keyword ? node2.name = this.type.keyword : this.unexpected(), this.next(), this.finishNode(node2, "JSXIdentifier");
        }
        // Parse namespaced identifier.
        jsx_parseNamespacedName() {
          let startPos = this.start, startLoc = this.startLoc, name2 = this.jsx_parseIdentifier();
          if (!options.allowNamespaces || !this.eat(tt.colon)) return name2;
          var node2 = this.startNodeAt(startPos, startLoc);
          return node2.namespace = name2, node2.name = this.jsx_parseIdentifier(), this.finishNode(node2, "JSXNamespacedName");
        }
        // Parses element name in any form - namespaced, member
        // or single identifier.
        jsx_parseElementName() {
          if (this.type === tok.jsxTagEnd) return "";
          let startPos = this.start, startLoc = this.startLoc, node2 = this.jsx_parseNamespacedName();
          for (this.type === tt.dot && node2.type === "JSXNamespacedName" && !options.allowNamespacedObjects && this.unexpected(); this.eat(tt.dot); ) {
            let newNode = this.startNodeAt(startPos, startLoc);
            newNode.object = node2, newNode.property = this.jsx_parseIdentifier(), node2 = this.finishNode(newNode, "JSXMemberExpression");
          }
          return node2;
        }
        // Parses any type of JSX attribute value.
        jsx_parseAttributeValue() {
          switch (this.type) {
            case tt.braceL:
              let node2 = this.jsx_parseExpressionContainer();
              return node2.expression.type === "JSXEmptyExpression" && this.raise(node2.start, "JSX attributes must only be assigned a non-empty expression"), node2;
            case tok.jsxTagStart:
            case tt.string:
              return this.parseExprAtom();
            default:
              this.raise(this.start, "JSX value should be either an expression or a quoted JSX text");
          }
        }
        // JSXEmptyExpression is unique type since it doesn't actually parse anything,
        // and so it should start at the end of last read token (left brace) and finish
        // at the beginning of the next one (right brace).
        jsx_parseEmptyExpression() {
          let node2 = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc);
          return this.finishNodeAt(node2, "JSXEmptyExpression", this.start, this.startLoc);
        }
        // Parses JSX expression enclosed into curly brackets.
        jsx_parseExpressionContainer() {
          let node2 = this.startNode();
          return this.next(), node2.expression = this.type === tt.braceR ? this.jsx_parseEmptyExpression() : this.parseExpression(), this.expect(tt.braceR), this.finishNode(node2, "JSXExpressionContainer");
        }
        // Parses following JSX attribute name-value pair.
        jsx_parseAttribute() {
          let node2 = this.startNode();
          return this.eat(tt.braceL) ? (this.expect(tt.ellipsis), node2.argument = this.parseMaybeAssign(), this.expect(tt.braceR), this.finishNode(node2, "JSXSpreadAttribute")) : (node2.name = this.jsx_parseNamespacedName(), node2.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null, this.finishNode(node2, "JSXAttribute"));
        }
        // Parses JSX opening tag starting after '<'.
        jsx_parseOpeningElementAt(startPos, startLoc) {
          let node2 = this.startNodeAt(startPos, startLoc);
          node2.attributes = [];
          let nodeName = this.jsx_parseElementName();
          for (nodeName && (node2.name = nodeName); this.type !== tt.slash && this.type !== tok.jsxTagEnd; )
            node2.attributes.push(this.jsx_parseAttribute());
          return node2.selfClosing = this.eat(tt.slash), this.expect(tok.jsxTagEnd), this.finishNode(node2, nodeName ? "JSXOpeningElement" : "JSXOpeningFragment");
        }
        // Parses JSX closing tag starting after '</'.
        jsx_parseClosingElementAt(startPos, startLoc) {
          let node2 = this.startNodeAt(startPos, startLoc), nodeName = this.jsx_parseElementName();
          return nodeName && (node2.name = nodeName), this.expect(tok.jsxTagEnd), this.finishNode(node2, nodeName ? "JSXClosingElement" : "JSXClosingFragment");
        }
        // Parses entire JSX element, including it's opening tag
        // (starting after '<'), attributes, contents and closing tag.
        jsx_parseElementAt(startPos, startLoc) {
          let node2 = this.startNodeAt(startPos, startLoc), children = [], openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc), closingElement = null;
          if (!openingElement.selfClosing) {
            contents: for (; ; )
              switch (this.type) {
                case tok.jsxTagStart:
                  if (startPos = this.start, startLoc = this.startLoc, this.next(), this.eat(tt.slash)) {
                    closingElement = this.jsx_parseClosingElementAt(startPos, startLoc);
                    break contents;
                  }
                  children.push(this.jsx_parseElementAt(startPos, startLoc));
                  break;
                case tok.jsxText:
                  children.push(this.parseExprAtom());
                  break;
                case tt.braceL:
                  children.push(this.jsx_parseExpressionContainer());
                  break;
                default:
                  this.unexpected();
              }
            getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name) && this.raise(
              closingElement.start,
              "Expected corresponding JSX closing tag for <" + getQualifiedJSXName(openingElement.name) + ">"
            );
          }
          let fragmentOrElement = openingElement.name ? "Element" : "Fragment";
          return node2["opening" + fragmentOrElement] = openingElement, node2["closing" + fragmentOrElement] = closingElement, node2.children = children, this.type === tt.relational && this.value === "<" && this.raise(this.start, "Adjacent JSX elements must be wrapped in an enclosing tag"), this.finishNode(node2, "JSX" + fragmentOrElement);
        }
        // Parse JSX text
        jsx_parseText() {
          let node2 = this.parseLiteral(this.value);
          return node2.type = "JSXText", node2;
        }
        // Parses entire JSX element from current position.
        jsx_parseElement() {
          let startPos = this.start, startLoc = this.startLoc;
          return this.next(), this.jsx_parseElementAt(startPos, startLoc);
        }
        parseExprAtom(refShortHandDefaultPos) {
          return this.type === tok.jsxText ? this.jsx_parseText() : this.type === tok.jsxTagStart ? this.jsx_parseElement() : super.parseExprAtom(refShortHandDefaultPos);
        }
        readToken(code2) {
          let context = this.curContext();
          if (context === tc_expr) return this.jsx_readToken();
          if (context === tc_oTag || context === tc_cTag) {
            if (isIdentifierStart2(code2)) return this.jsx_readWord();
            if (code2 == 62)
              return ++this.pos, this.finishToken(tok.jsxTagEnd);
            if ((code2 === 34 || code2 === 39) && context == tc_oTag)
              return this.jsx_readString(code2);
          }
          return code2 === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33 ? (++this.pos, this.finishToken(tok.jsxTagStart)) : super.readToken(code2);
        }
        updateContext(prevType) {
          if (this.type == tt.braceL) {
            var curContext = this.curContext();
            curContext == tc_oTag ? this.context.push(tokContexts.b_expr) : curContext == tc_expr ? this.context.push(tokContexts.b_tmpl) : super.updateContext(prevType), this.exprAllowed = !0;
          } else if (this.type === tt.slash && prevType === tok.jsxTagStart)
            this.context.length -= 2, this.context.push(tc_cTag), this.exprAllowed = !1;
          else
            return super.updateContext(prevType);
        }
      };
    }
  }
});

// ../../../node_modules/inline-style-parser/cjs/index.js
var require_cjs = __commonJS({
  "../../../node_modules/inline-style-parser/cjs/index.js"(exports, module) {
    "use strict";
    var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g, NEWLINE_REGEX = /\n/g, WHITESPACE_REGEX = /^\s*/, PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/, COLON_REGEX = /^:\s*/, VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/, SEMICOLON_REGEX = /^[;\s]*/, TRIM_REGEX = /^\s+|\s+$/g, NEWLINE = `
`, FORWARD_SLASH = "/", ASTERISK = "*", EMPTY_STRING = "", TYPE_COMMENT = "comment", TYPE_DECLARATION = "declaration";
    function index2(style, options) {
      if (typeof style != "string")
        throw new TypeError("First argument must be a string");
      if (!style) return [];
      options = options || {};
      var lineno = 1, column = 1;
      function updatePosition(str) {
        var lines = str.match(NEWLINE_REGEX);
        lines && (lineno += lines.length);
        var i = str.lastIndexOf(NEWLINE);
        column = ~i ? str.length - i : column + str.length;
      }
      function position3() {
        var start2 = { line: lineno, column };
        return function(node2) {
          return node2.position = new Position3(start2), whitespace2(), node2;
        };
      }
      function Position3(start2) {
        this.start = start2, this.end = { line: lineno, column }, this.source = options.source;
      }
      Position3.prototype.content = style;
      function error(msg) {
        var err = new Error(
          options.source + ":" + lineno + ":" + column + ": " + msg
        );
        if (err.reason = msg, err.filename = options.source, err.line = lineno, err.column = column, err.source = style, !options.silent) throw err;
      }
      function match(re2) {
        var m = re2.exec(style);
        if (m) {
          var str = m[0];
          return updatePosition(str), style = style.slice(str.length), m;
        }
      }
      function whitespace2() {
        match(WHITESPACE_REGEX);
      }
      function comments(rules) {
        var c;
        for (rules = rules || []; c = comment2(); )
          c !== !1 && rules.push(c);
        return rules;
      }
      function comment2() {
        var pos = position3();
        if (!(FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1))) {
          for (var i = 2; EMPTY_STRING != style.charAt(i) && (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1)); )
            ++i;
          if (i += 2, EMPTY_STRING === style.charAt(i - 1))
            return error("End of comment missing");
          var str = style.slice(2, i - 2);
          return column += 2, updatePosition(str), style = style.slice(i), column += 2, pos({
            type: TYPE_COMMENT,
            comment: str
          });
        }
      }
      function declaration() {
        var pos = position3(), prop = match(PROPERTY_REGEX);
        if (prop) {
          if (comment2(), !match(COLON_REGEX)) return error("property missing ':'");
          var val = match(VALUE_REGEX), ret = pos({
            type: TYPE_DECLARATION,
            property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),
            value: val ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING)) : EMPTY_STRING
          });
          return match(SEMICOLON_REGEX), ret;
        }
      }
      function declarations() {
        var decls = [];
        comments(decls);
        for (var decl; decl = declaration(); )
          decl !== !1 && (decls.push(decl), comments(decls));
        return decls;
      }
      return whitespace2(), declarations();
    }
    function trim(str) {
      return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;
    }
    module.exports = index2;
  }
});

// ../../../node_modules/style-to-object/cjs/index.js
var require_cjs2 = __commonJS({
  "../../../node_modules/style-to-object/cjs/index.js"(exports) {
    "use strict";
    var __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { default: mod };
    };
    Object.defineProperty(exports, "__esModule", { value: !0 });
    exports.default = StyleToObject;
    var inline_style_parser_1 = __importDefault(require_cjs());
    function StyleToObject(style, iterator) {
      let styleObject = null;
      if (!style || typeof style != "string")
        return styleObject;
      let declarations = (0, inline_style_parser_1.default)(style), hasIterator = typeof iterator == "function";
      return declarations.forEach((declaration) => {
        if (declaration.type !== "declaration")
          return;
        let { property, value } = declaration;
        hasIterator ? iterator(property, value, declaration) : value && (styleObject = styleObject || {}, styleObject[property] = value);
      }), styleObject;
    }
  }
});

// ../../../node_modules/style-to-js/cjs/utilities.js
var require_utilities = __commonJS({
  "../../../node_modules/style-to-js/cjs/utilities.js"(exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: !0 });
    exports.camelCase = void 0;
    var CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/, HYPHEN_REGEX = /-([a-z])/g, NO_HYPHEN_REGEX = /^[^-]+$/, VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/, MS_VENDOR_PREFIX_REGEX = /^-(ms)-/, skipCamelCase = function(property) {
      return !property || NO_HYPHEN_REGEX.test(property) || CUSTOM_PROPERTY_REGEX.test(property);
    }, capitalize = function(match, character) {
      return character.toUpperCase();
    }, trimHyphen = function(match, prefix) {
      return "".concat(prefix, "-");
    }, camelCase = function(property, options) {
      return options === void 0 && (options = {}), skipCamelCase(property) ? property : (property = property.toLowerCase(), options.reactCompat ? property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen) : property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen), property.replace(HYPHEN_REGEX, capitalize));
    };
    exports.camelCase = camelCase;
  }
});

// ../../../node_modules/style-to-js/cjs/index.js
var require_cjs3 = __commonJS({
  "../../../node_modules/style-to-js/cjs/index.js"(exports, module) {
    "use strict";
    var __importDefault = exports && exports.__importDefault || function(mod) {
      return mod && mod.__esModule ? mod : { default: mod };
    }, style_to_object_1 = __importDefault(require_cjs2()), utilities_1 = require_utilities();
    function StyleToJS(style, options) {
      var output = {};
      return !style || typeof style != "string" || (0, style_to_object_1.default)(style, function(property, value) {
        property && value && (output[(0, utilities_1.camelCase)(property, options)] = value);
      }), output;
    }
    StyleToJS.default = StyleToJS;
    module.exports = StyleToJS;
  }
});

// ../../../node_modules/micromark-extension-mdxjs/node_modules/acorn-jsx/xhtml.js
var require_xhtml2 = __commonJS({
  "../../../node_modules/micromark-extension-mdxjs/node_modules/acorn-jsx/xhtml.js"(exports, module) {
    module.exports = {
      quot: '"',
      amp: "&",
      apos: "'",
      lt: "<",
      gt: ">",
      nbsp: "\xA0",
      iexcl: "\xA1",
      cent: "\xA2",
      pound: "\xA3",
      curren: "\xA4",
      yen: "\xA5",
      brvbar: "\xA6",
      sect: "\xA7",
      uml: "\xA8",
      copy: "\xA9",
      ordf: "\xAA",
      laquo: "\xAB",
      not: "\xAC",
      shy: "\xAD",
      reg: "\xAE",
      macr: "\xAF",
      deg: "\xB0",
      plusmn: "\xB1",
      sup2: "\xB2",
      sup3: "\xB3",
      acute: "\xB4",
      micro: "\xB5",
      para: "\xB6",
      middot: "\xB7",
      cedil: "\xB8",
      sup1: "\xB9",
      ordm: "\xBA",
      raquo: "\xBB",
      frac14: "\xBC",
      frac12: "\xBD",
      frac34: "\xBE",
      iquest: "\xBF",
      Agrave: "\xC0",
      Aacute: "\xC1",
      Acirc: "\xC2",
      Atilde: "\xC3",
      Auml: "\xC4",
      Aring: "\xC5",
      AElig: "\xC6",
      Ccedil: "\xC7",
      Egrave: "\xC8",
      Eacute: "\xC9",
      Ecirc: "\xCA",
      Euml: "\xCB",
      Igrave: "\xCC",
      Iacute: "\xCD",
      Icirc: "\xCE",
      Iuml: "\xCF",
      ETH: "\xD0",
      Ntilde: "\xD1",
      Ograve: "\xD2",
      Oacute: "\xD3",
      Ocirc: "\xD4",
      Otilde: "\xD5",
      Ouml: "\xD6",
      times: "\xD7",
      Oslash: "\xD8",
      Ugrave: "\xD9",
      Uacute: "\xDA",
      Ucirc: "\xDB",
      Uuml: "\xDC",
      Yacute: "\xDD",
      THORN: "\xDE",
      szlig: "\xDF",
      agrave: "\xE0",
      aacute: "\xE1",
      acirc: "\xE2",
      atilde: "\xE3",
      auml: "\xE4",
      aring: "\xE5",
      aelig: "\xE6",
      ccedil: "\xE7",
      egrave: "\xE8",
      eacute: "\xE9",
      ecirc: "\xEA",
      euml: "\xEB",
      igrave: "\xEC",
      iacute: "\xED",
      icirc: "\xEE",
      iuml: "\xEF",
      eth: "\xF0",
      ntilde: "\xF1",
      ograve: "\xF2",
      oacute: "\xF3",
      ocirc: "\xF4",
      otilde: "\xF5",
      ouml: "\xF6",
      divide: "\xF7",
      oslash: "\xF8",
      ugrave: "\xF9",
      uacute: "\xFA",
      ucirc: "\xFB",
      uuml: "\xFC",
      yacute: "\xFD",
      thorn: "\xFE",
      yuml: "\xFF",
      OElig: "\u0152",
      oelig: "\u0153",
      Scaron: "\u0160",
      scaron: "\u0161",
      Yuml: "\u0178",
      fnof: "\u0192",
      circ: "\u02C6",
      tilde: "\u02DC",
      Alpha: "\u0391",
      Beta: "\u0392",
      Gamma: "\u0393",
      Delta: "\u0394",
      Epsilon: "\u0395",
      Zeta: "\u0396",
      Eta: "\u0397",
      Theta: "\u0398",
      Iota: "\u0399",
      Kappa: "\u039A",
      Lambda: "\u039B",
      Mu: "\u039C",
      Nu: "\u039D",
      Xi: "\u039E",
      Omicron: "\u039F",
      Pi: "\u03A0",
      Rho: "\u03A1",
      Sigma: "\u03A3",
      Tau: "\u03A4",
      Upsilon: "\u03A5",
      Phi: "\u03A6",
      Chi: "\u03A7",
      Psi: "\u03A8",
      Omega: "\u03A9",
      alpha: "\u03B1",
      beta: "\u03B2",
      gamma: "\u03B3",
      delta: "\u03B4",
      epsilon: "\u03B5",
      zeta: "\u03B6",
      eta: "\u03B7",
      theta: "\u03B8",
      iota: "\u03B9",
      kappa: "\u03BA",
      lambda: "\u03BB",
      mu: "\u03BC",
      nu: "\u03BD",
      xi: "\u03BE",
      omicron: "\u03BF",
      pi: "\u03C0",
      rho: "\u03C1",
      sigmaf: "\u03C2",
      sigma: "\u03C3",
      tau: "\u03C4",
      upsilon: "\u03C5",
      phi: "\u03C6",
      chi: "\u03C7",
      psi: "\u03C8",
      omega: "\u03C9",
      thetasym: "\u03D1",
      upsih: "\u03D2",
      piv: "\u03D6",
      ensp: "\u2002",
      emsp: "\u2003",
      thinsp: "\u2009",
      zwnj: "\u200C",
      zwj: "\u200D",
      lrm: "\u200E",
      rlm: "\u200F",
      ndash: "\u2013",
      mdash: "\u2014",
      lsquo: "\u2018",
      rsquo: "\u2019",
      sbquo: "\u201A",
      ldquo: "\u201C",
      rdquo: "\u201D",
      bdquo: "\u201E",
      dagger: "\u2020",
      Dagger: "\u2021",
      bull: "\u2022",
      hellip: "\u2026",
      permil: "\u2030",
      prime: "\u2032",
      Prime: "\u2033",
      lsaquo: "\u2039",
      rsaquo: "\u203A",
      oline: "\u203E",
      frasl: "\u2044",
      euro: "\u20AC",
      image: "\u2111",
      weierp: "\u2118",
      real: "\u211C",
      trade: "\u2122",
      alefsym: "\u2135",
      larr: "\u2190",
      uarr: "\u2191",
      rarr: "\u2192",
      darr: "\u2193",
      harr: "\u2194",
      crarr: "\u21B5",
      lArr: "\u21D0",
      uArr: "\u21D1",
      rArr: "\u21D2",
      dArr: "\u21D3",
      hArr: "\u21D4",
      forall: "\u2200",
      part: "\u2202",
      exist: "\u2203",
      empty: "\u2205",
      nabla: "\u2207",
      isin: "\u2208",
      notin: "\u2209",
      ni: "\u220B",
      prod: "\u220F",
      sum: "\u2211",
      minus: "\u2212",
      lowast: "\u2217",
      radic: "\u221A",
      prop: "\u221D",
      infin: "\u221E",
      ang: "\u2220",
      and: "\u2227",
      or: "\u2228",
      cap: "\u2229",
      cup: "\u222A",
      int: "\u222B",
      there4: "\u2234",
      sim: "\u223C",
      cong: "\u2245",
      asymp: "\u2248",
      ne: "\u2260",
      equiv: "\u2261",
      le: "\u2264",
      ge: "\u2265",
      sub: "\u2282",
      sup: "\u2283",
      nsub: "\u2284",
      sube: "\u2286",
      supe: "\u2287",
      oplus: "\u2295",
      otimes: "\u2297",
      perp: "\u22A5",
      sdot: "\u22C5",
      lceil: "\u2308",
      rceil: "\u2309",
      lfloor: "\u230A",
      rfloor: "\u230B",
      lang: "\u2329",
      rang: "\u232A",
      loz: "\u25CA",
      spades: "\u2660",
      clubs: "\u2663",
      hearts: "\u2665",
      diams: "\u2666"
    };
  }
});

// ../../../node_modules/micromark-extension-mdxjs/node_modules/acorn/dist/acorn.js
var require_acorn2 = __commonJS({
  "../../../node_modules/micromark-extension-mdxjs/node_modules/acorn/dist/acorn.js"(exports, module) {
    (function(global, factory) {
      typeof exports == "object" && typeof module < "u" ? factory(exports) : typeof define == "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis < "u" ? globalThis : global || self, factory(global.acorn = {}));
    })(exports, (function(exports2) {
      "use strict";
      var astralIdentifierCodes2 = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239], astralIdentifierStartCodes2 = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191], nonASCIIidentifierChars2 = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0897-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\u30FB\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F\uFF65", nonASCIIidentifierStartChars2 = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC", reservedWords2 = {
        3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",
        5: "class enum extends super const export import",
        6: "enum",
        strict: "implements interface let package private protected public static yield",
        strictBind: "eval arguments"
      }, ecma5AndLessKeywords2 = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this", keywords$12 = {
        5: ecma5AndLessKeywords2,
        "5module": ecma5AndLessKeywords2 + " export import",
        6: ecma5AndLessKeywords2 + " const class extends export import super"
      }, keywordRelationalOperator2 = /^in(stanceof)?$/, nonASCIIidentifierStart2 = new RegExp("[" + nonASCIIidentifierStartChars2 + "]"), nonASCIIidentifier2 = new RegExp("[" + nonASCIIidentifierStartChars2 + nonASCIIidentifierChars2 + "]");
      function isInAstralSet2(code2, set) {
        for (var pos = 65536, i2 = 0; i2 < set.length; i2 += 2) {
          if (pos += set[i2], pos > code2)
            return !1;
          if (pos += set[i2 + 1], pos >= code2)
            return !0;
        }
        return !1;
      }
      function isIdentifierStart2(code2, astral) {
        return code2 < 65 ? code2 === 36 : code2 < 91 ? !0 : code2 < 97 ? code2 === 95 : code2 < 123 ? !0 : code2 <= 65535 ? code2 >= 170 && nonASCIIidentifierStart2.test(String.fromCharCode(code2)) : astral === !1 ? !1 : isInAstralSet2(code2, astralIdentifierStartCodes2);
      }
      function isIdentifierChar2(code2, astral) {
        return code2 < 48 ? code2 === 36 : code2 < 58 ? !0 : code2 < 65 ? !1 : code2 < 91 ? !0 : code2 < 97 ? code2 === 95 : code2 < 123 ? !0 : code2 <= 65535 ? code2 >= 170 && nonASCIIidentifier2.test(String.fromCharCode(code2)) : astral === !1 ? !1 : isInAstralSet2(code2, astralIdentifierStartCodes2) || isInAstralSet2(code2, astralIdentifierCodes2);
      }
      var TokenType3 = function(label, conf) {
        conf === void 0 && (conf = {}), this.label = label, this.keyword = conf.keyword, this.beforeExpr = !!conf.beforeExpr, this.startsExpr = !!conf.startsExpr, this.isLoop = !!conf.isLoop, this.isAssign = !!conf.isAssign, this.prefix = !!conf.prefix, this.postfix = !!conf.postfix, this.binop = conf.binop || null, this.updateContext = null;
      };
      function binop2(name2, prec) {
        return new TokenType3(name2, { beforeExpr: !0, binop: prec });
      }
      var beforeExpr2 = { beforeExpr: !0 }, startsExpr2 = { startsExpr: !0 }, keywords2 = {};
      function kw2(name2, options) {
        return options === void 0 && (options = {}), options.keyword = name2, keywords2[name2] = new TokenType3(name2, options);
      }
      var types$12 = {
        num: new TokenType3("num", startsExpr2),
        regexp: new TokenType3("regexp", startsExpr2),
        string: new TokenType3("string", startsExpr2),
        name: new TokenType3("name", startsExpr2),
        privateId: new TokenType3("privateId", startsExpr2),
        eof: new TokenType3("eof"),
        // Punctuation token types.
        bracketL: new TokenType3("[", { beforeExpr: !0, startsExpr: !0 }),
        bracketR: new TokenType3("]"),
        braceL: new TokenType3("{", { beforeExpr: !0, startsExpr: !0 }),
        braceR: new TokenType3("}"),
        parenL: new TokenType3("(", { beforeExpr: !0, startsExpr: !0 }),
        parenR: new TokenType3(")"),
        comma: new TokenType3(",", beforeExpr2),
        semi: new TokenType3(";", beforeExpr2),
        colon: new TokenType3(":", beforeExpr2),
        dot: new TokenType3("."),
        question: new TokenType3("?", beforeExpr2),
        questionDot: new TokenType3("?."),
        arrow: new TokenType3("=>", beforeExpr2),
        template: new TokenType3("template"),
        invalidTemplate: new TokenType3("invalidTemplate"),
        ellipsis: new TokenType3("...", beforeExpr2),
        backQuote: new TokenType3("`", startsExpr2),
        dollarBraceL: new TokenType3("${", { beforeExpr: !0, startsExpr: !0 }),
        // Operators. These carry several kinds of properties to help the
        // parser use them properly (the presence of these properties is
        // what categorizes them as operators).
        //
        // `binop`, when present, specifies that this operator is a binary
        // operator, and will refer to its precedence.
        //
        // `prefix` and `postfix` mark the operator as a prefix or postfix
        // unary operator.
        //
        // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as
        // binary operators with a very low precedence, that should result
        // in AssignmentExpression nodes.
        eq: new TokenType3("=", { beforeExpr: !0, isAssign: !0 }),
        assign: new TokenType3("_=", { beforeExpr: !0, isAssign: !0 }),
        incDec: new TokenType3("++/--", { prefix: !0, postfix: !0, startsExpr: !0 }),
        prefix: new TokenType3("!/~", { beforeExpr: !0, prefix: !0, startsExpr: !0 }),
        logicalOR: binop2("||", 1),
        logicalAND: binop2("&&", 2),
        bitwiseOR: binop2("|", 3),
        bitwiseXOR: binop2("^", 4),
        bitwiseAND: binop2("&", 5),
        equality: binop2("==/!=/===/!==", 6),
        relational: binop2("</>/<=/>=", 7),
        bitShift: binop2("<</>>/>>>", 8),
        plusMin: new TokenType3("+/-", { beforeExpr: !0, binop: 9, prefix: !0, startsExpr: !0 }),
        modulo: binop2("%", 10),
        star: binop2("*", 10),
        slash: binop2("/", 10),
        starstar: new TokenType3("**", { beforeExpr: !0 }),
        coalesce: binop2("??", 1),
        // Keyword token types.
        _break: kw2("break"),
        _case: kw2("case", beforeExpr2),
        _catch: kw2("catch"),
        _continue: kw2("continue"),
        _debugger: kw2("debugger"),
        _default: kw2("default", beforeExpr2),
        _do: kw2("do", { isLoop: !0, beforeExpr: !0 }),
        _else: kw2("else", beforeExpr2),
        _finally: kw2("finally"),
        _for: kw2("for", { isLoop: !0 }),
        _function: kw2("function", startsExpr2),
        _if: kw2("if"),
        _return: kw2("return", beforeExpr2),
        _switch: kw2("switch"),
        _throw: kw2("throw", beforeExpr2),
        _try: kw2("try"),
        _var: kw2("var"),
        _const: kw2("const"),
        _while: kw2("while", { isLoop: !0 }),
        _with: kw2("with"),
        _new: kw2("new", { beforeExpr: !0, startsExpr: !0 }),
        _this: kw2("this", startsExpr2),
        _super: kw2("super", startsExpr2),
        _class: kw2("class", startsExpr2),
        _extends: kw2("extends", beforeExpr2),
        _export: kw2("export"),
        _import: kw2("import", startsExpr2),
        _null: kw2("null", startsExpr2),
        _true: kw2("true", startsExpr2),
        _false: kw2("false", startsExpr2),
        _in: kw2("in", { beforeExpr: !0, binop: 7 }),
        _instanceof: kw2("instanceof", { beforeExpr: !0, binop: 7 }),
        _typeof: kw2("typeof", { beforeExpr: !0, prefix: !0, startsExpr: !0 }),
        _void: kw2("void", { beforeExpr: !0, prefix: !0, startsExpr: !0 }),
        _delete: kw2("delete", { beforeExpr: !0, prefix: !0, startsExpr: !0 })
      }, lineBreak2 = /\r\n?|\n|\u2028|\u2029/, lineBreakG2 = new RegExp(lineBreak2.source, "g");
      function isNewLine2(code2) {
        return code2 === 10 || code2 === 13 || code2 === 8232 || code2 === 8233;
      }
      function nextLineBreak2(code2, from, end) {
        end === void 0 && (end = code2.length);
        for (var i2 = from; i2 < end; i2++) {
          var next = code2.charCodeAt(i2);
          if (isNewLine2(next))
            return i2 < end - 1 && next === 13 && code2.charCodeAt(i2 + 1) === 10 ? i2 + 2 : i2 + 1;
        }
        return -1;
      }
      var nonASCIIwhitespace2 = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/, skipWhiteSpace2 = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g, ref2 = Object.prototype, hasOwnProperty4 = ref2.hasOwnProperty, toString3 = ref2.toString, hasOwn2 = Object.hasOwn || (function(obj, propName) {
        return hasOwnProperty4.call(obj, propName);
      }), isArray2 = Array.isArray || (function(obj) {
        return toString3.call(obj) === "[object Array]";
      }), regexpCache2 = /* @__PURE__ */ Object.create(null);
      function wordsRegexp2(words) {
        return regexpCache2[words] || (regexpCache2[words] = new RegExp("^(?:" + words.replace(/ /g, "|") + ")$"));
      }
      function codePointToString2(code2) {
        return code2 <= 65535 ? String.fromCharCode(code2) : (code2 -= 65536, String.fromCharCode((code2 >> 10) + 55296, (code2 & 1023) + 56320));
      }
      var loneSurrogate2 = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/, Position3 = function(line, col) {
        this.line = line, this.column = col;
      };
      Position3.prototype.offset = function(n) {
        return new Position3(this.line, this.column + n);
      };
      var SourceLocation3 = function(p, start2, end) {
        this.start = start2, this.end = end, p.sourceFile !== null && (this.source = p.sourceFile);
      };
      function getLineInfo2(input, offset2) {
        for (var line = 1, cur = 0; ; ) {
          var nextBreak = nextLineBreak2(input, cur, offset2);
          if (nextBreak < 0)
            return new Position3(line, offset2 - cur);
          ++line, cur = nextBreak;
        }
      }
      var defaultOptions2 = {
        // `ecmaVersion` indicates the ECMAScript version to parse. Must be
        // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10
        // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"`
        // (the latest version the library supports). This influences
        // support for strict mode, the set of reserved words, and support
        // for new syntax features.
        ecmaVersion: null,
        // `sourceType` indicates the mode the code should be parsed in.
        // Can be either `"script"` or `"module"`. This influences global
        // strict mode and parsing of `import` and `export` declarations.
        sourceType: "script",
        // `onInsertedSemicolon` can be a callback that will be called when
        // a semicolon is automatically inserted. It will be passed the
        // position of the inserted semicolon as an offset, and if
        // `locations` is enabled, it is given the location as a `{line,
        // column}` object as second argument.
        onInsertedSemicolon: null,
        // `onTrailingComma` is similar to `onInsertedSemicolon`, but for
        // trailing commas.
        onTrailingComma: null,
        // By default, reserved words are only enforced if ecmaVersion >= 5.
        // Set `allowReserved` to a boolean value to explicitly turn this on
        // an off. When this option has the value "never", reserved words
        // and keywords can also not be used as property names.
        allowReserved: null,
        // When enabled, a return at the top level is not considered an
        // error.
        allowReturnOutsideFunction: !1,
        // When enabled, import/export statements are not constrained to
        // appearing at the top of the program, and an import.meta expression
        // in a script isn't considered an error.
        allowImportExportEverywhere: !1,
        // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.
        // When enabled, await identifiers are allowed to appear at the top-level scope,
        // but they are still not allowed in non-async functions.
        allowAwaitOutsideFunction: null,
        // When enabled, super identifiers are not constrained to
        // appearing in methods and do not raise an error when they appear elsewhere.
        allowSuperOutsideMethod: null,
        // When enabled, hashbang directive in the beginning of file is
        // allowed and treated as a line comment. Enabled by default when
        // `ecmaVersion` >= 2023.
        allowHashBang: !1,
        // By default, the parser will verify that private properties are
        // only used in places where they are valid and have been declared.
        // Set this to false to turn such checks off.
        checkPrivateFields: !0,
        // When `locations` is on, `loc` properties holding objects with
        // `start` and `end` properties in `{line, column}` form (with
        // line being 1-based and column 0-based) will be attached to the
        // nodes.
        locations: !1,
        // A function can be passed as `onToken` option, which will
        // cause Acorn to call that function with object in the same
        // format as tokens returned from `tokenizer().getToken()`. Note
        // that you are not allowed to call the parser from the
        // callback—that will corrupt its internal state.
        onToken: null,
        // A function can be passed as `onComment` option, which will
        // cause Acorn to call that function with `(block, text, start,
        // end)` parameters whenever a comment is skipped. `block` is a
        // boolean indicating whether this is a block (`/* */`) comment,
        // `text` is the content of the comment, and `start` and `end` are
        // character offsets that denote the start and end of the comment.
        // When the `locations` option is on, two more parameters are
        // passed, the full `{line, column}` locations of the start and
        // end of the comments. Note that you are not allowed to call the
        // parser from the callback—that will corrupt its internal state.
        // When this option has an array as value, objects representing the
        // comments are pushed to it.
        onComment: null,
        // Nodes have their start and end characters offsets recorded in
        // `start` and `end` properties (directly on the node, rather than
        // the `loc` object, which holds line/column data. To also add a
        // [semi-standardized][range] `range` property holding a `[start,
        // end]` array with the same numbers, set the `ranges` option to
        // `true`.
        //
        // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678
        ranges: !1,
        // It is possible to parse multiple files into a single AST by
        // passing the tree produced by parsing the first file as
        // `program` option in subsequent parses. This will add the
        // toplevel forms of the parsed file to the `Program` (top) node
        // of an existing parse tree.
        program: null,
        // When `locations` is on, you can pass this to record the source
        // file in every node's `loc` object.
        sourceFile: null,
        // This value, if given, is stored in every node, whether
        // `locations` is on or off.
        directSourceFile: null,
        // When enabled, parenthesized expressions are represented by
        // (non-standard) ParenthesizedExpression nodes
        preserveParens: !1
      }, warnedAboutEcmaVersion2 = !1;
      function getOptions2(opts) {
        var options = {};
        for (var opt in defaultOptions2)
          options[opt] = opts && hasOwn2(opts, opt) ? opts[opt] : defaultOptions2[opt];
        if (options.ecmaVersion === "latest" ? options.ecmaVersion = 1e8 : options.ecmaVersion == null ? (!warnedAboutEcmaVersion2 && typeof console == "object" && console.warn && (warnedAboutEcmaVersion2 = !0, console.warn(`Since Acorn 8.0.0, options.ecmaVersion is required.
Defaulting to 2020, but this will stop working in the future.`)), options.ecmaVersion = 11) : options.ecmaVersion >= 2015 && (options.ecmaVersion -= 2009), options.allowReserved == null && (options.allowReserved = options.ecmaVersion < 5), (!opts || opts.allowHashBang == null) && (options.allowHashBang = options.ecmaVersion >= 14), isArray2(options.onToken)) {
          var tokens = options.onToken;
          options.onToken = function(token) {
            return tokens.push(token);
          };
        }
        return isArray2(options.onComment) && (options.onComment = pushComment2(options, options.onComment)), options;
      }
      function pushComment2(options, array) {
        return function(block, text5, start2, end, startLoc, endLoc) {
          var comment2 = {
            type: block ? "Block" : "Line",
            value: text5,
            start: start2,
            end
          };
          options.locations && (comment2.loc = new SourceLocation3(this, startLoc, endLoc)), options.ranges && (comment2.range = [start2, end]), array.push(comment2);
        };
      }
      var SCOPE_TOP2 = 1, SCOPE_FUNCTION2 = 2, SCOPE_ASYNC2 = 4, SCOPE_GENERATOR2 = 8, SCOPE_ARROW2 = 16, SCOPE_SIMPLE_CATCH2 = 32, SCOPE_SUPER2 = 64, SCOPE_DIRECT_SUPER2 = 128, SCOPE_CLASS_STATIC_BLOCK2 = 256, SCOPE_CLASS_FIELD_INIT2 = 512, SCOPE_VAR2 = SCOPE_TOP2 | SCOPE_FUNCTION2 | SCOPE_CLASS_STATIC_BLOCK2;
      function functionFlags2(async, generator) {
        return SCOPE_FUNCTION2 | (async ? SCOPE_ASYNC2 : 0) | (generator ? SCOPE_GENERATOR2 : 0);
      }
      var BIND_NONE2 = 0, BIND_VAR2 = 1, BIND_LEXICAL2 = 2, BIND_FUNCTION2 = 3, BIND_SIMPLE_CATCH2 = 4, BIND_OUTSIDE2 = 5, Parser3 = function(options, input, startPos) {
        this.options = options = getOptions2(options), this.sourceFile = options.sourceFile, this.keywords = wordsRegexp2(keywords$12[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]);
        var reserved = "";
        options.allowReserved !== !0 && (reserved = reservedWords2[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3], options.sourceType === "module" && (reserved += " await")), this.reservedWords = wordsRegexp2(reserved);
        var reservedStrict = (reserved ? reserved + " " : "") + reservedWords2.strict;
        this.reservedWordsStrict = wordsRegexp2(reservedStrict), this.reservedWordsStrictBind = wordsRegexp2(reservedStrict + " " + reservedWords2.strictBind), this.input = String(input), this.containsEsc = !1, startPos ? (this.pos = startPos, this.lineStart = this.input.lastIndexOf(`
`, startPos - 1) + 1, this.curLine = this.input.slice(0, this.lineStart).split(lineBreak2).length) : (this.pos = this.lineStart = 0, this.curLine = 1), this.type = types$12.eof, this.value = null, this.start = this.end = this.pos, this.startLoc = this.endLoc = this.curPosition(), this.lastTokEndLoc = this.lastTokStartLoc = null, this.lastTokStart = this.lastTokEnd = this.pos, this.context = this.initialContext(), this.exprAllowed = !0, this.inModule = options.sourceType === "module", this.strict = this.inModule || this.strictDirective(this.pos), this.potentialArrowAt = -1, this.potentialArrowInForAwait = !1, this.yieldPos = this.awaitPos = this.awaitIdentPos = 0, this.labels = [], this.undefinedExports = /* @__PURE__ */ Object.create(null), this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!" && this.skipLineComment(2), this.scopeStack = [], this.enterScope(SCOPE_TOP2), this.regexpState = null, this.privateNameStack = [];
      }, prototypeAccessors2 = { inFunction: { configurable: !0 }, inGenerator: { configurable: !0 }, inAsync: { configurable: !0 }, canAwait: { configurable: !0 }, allowSuper: { configurable: !0 }, allowDirectSuper: { configurable: !0 }, treatFunctionsAsVar: { configurable: !0 }, allowNewDotTarget: { configurable: !0 }, inClassStaticBlock: { configurable: !0 } };
      Parser3.prototype.parse = function() {
        var node2 = this.options.program || this.startNode();
        return this.nextToken(), this.parseTopLevel(node2);
      }, prototypeAccessors2.inFunction.get = function() {
        return (this.currentVarScope().flags & SCOPE_FUNCTION2) > 0;
      }, prototypeAccessors2.inGenerator.get = function() {
        return (this.currentVarScope().flags & SCOPE_GENERATOR2) > 0;
      }, prototypeAccessors2.inAsync.get = function() {
        return (this.currentVarScope().flags & SCOPE_ASYNC2) > 0;
      }, prototypeAccessors2.canAwait.get = function() {
        for (var i2 = this.scopeStack.length - 1; i2 >= 0; i2--) {
          var ref3 = this.scopeStack[i2], flags = ref3.flags;
          if (flags & (SCOPE_CLASS_STATIC_BLOCK2 | SCOPE_CLASS_FIELD_INIT2))
            return !1;
          if (flags & SCOPE_FUNCTION2)
            return (flags & SCOPE_ASYNC2) > 0;
        }
        return this.inModule && this.options.ecmaVersion >= 13 || this.options.allowAwaitOutsideFunction;
      }, prototypeAccessors2.allowSuper.get = function() {
        var ref3 = this.currentThisScope(), flags = ref3.flags;
        return (flags & SCOPE_SUPER2) > 0 || this.options.allowSuperOutsideMethod;
      }, prototypeAccessors2.allowDirectSuper.get = function() {
        return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER2) > 0;
      }, prototypeAccessors2.treatFunctionsAsVar.get = function() {
        return this.treatFunctionsAsVarInScope(this.currentScope());
      }, prototypeAccessors2.allowNewDotTarget.get = function() {
        for (var i2 = this.scopeStack.length - 1; i2 >= 0; i2--) {
          var ref3 = this.scopeStack[i2], flags = ref3.flags;
          if (flags & (SCOPE_CLASS_STATIC_BLOCK2 | SCOPE_CLASS_FIELD_INIT2) || flags & SCOPE_FUNCTION2 && !(flags & SCOPE_ARROW2))
            return !0;
        }
        return !1;
      }, prototypeAccessors2.inClassStaticBlock.get = function() {
        return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK2) > 0;
      }, Parser3.extend = function() {
        for (var plugins = [], len = arguments.length; len--; ) plugins[len] = arguments[len];
        for (var cls = this, i2 = 0; i2 < plugins.length; i2++)
          cls = plugins[i2](cls);
        return cls;
      }, Parser3.parse = function(input, options) {
        return new this(options, input).parse();
      }, Parser3.parseExpressionAt = function(input, pos, options) {
        var parser = new this(options, input, pos);
        return parser.nextToken(), parser.parseExpression();
      }, Parser3.tokenizer = function(input, options) {
        return new this(options, input);
      }, Object.defineProperties(Parser3.prototype, prototypeAccessors2);
      var pp$92 = Parser3.prototype, literal2 = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/;
      pp$92.strictDirective = function(start2) {
        if (this.options.ecmaVersion < 5)
          return !1;
        for (; ; ) {
          skipWhiteSpace2.lastIndex = start2, start2 += skipWhiteSpace2.exec(this.input)[0].length;
          var match = literal2.exec(this.input.slice(start2));
          if (!match)
            return !1;
          if ((match[1] || match[2]) === "use strict") {
            skipWhiteSpace2.lastIndex = start2 + match[0].length;
            var spaceAfter = skipWhiteSpace2.exec(this.input), end = spaceAfter.index + spaceAfter[0].length, next = this.input.charAt(end);
            return next === ";" || next === "}" || lineBreak2.test(spaceAfter[0]) && !(/[(`.[+\-/*%<>=,?^&]/.test(next) || next === "!" && this.input.charAt(end + 1) === "=");
          }
          start2 += match[0].length, skipWhiteSpace2.lastIndex = start2, start2 += skipWhiteSpace2.exec(this.input)[0].length, this.input[start2] === ";" && start2++;
        }
      }, pp$92.eat = function(type) {
        return this.type === type ? (this.next(), !0) : !1;
      }, pp$92.isContextual = function(name2) {
        return this.type === types$12.name && this.value === name2 && !this.containsEsc;
      }, pp$92.eatContextual = function(name2) {
        return this.isContextual(name2) ? (this.next(), !0) : !1;
      }, pp$92.expectContextual = function(name2) {
        this.eatContextual(name2) || this.unexpected();
      }, pp$92.canInsertSemicolon = function() {
        return this.type === types$12.eof || this.type === types$12.braceR || lineBreak2.test(this.input.slice(this.lastTokEnd, this.start));
      }, pp$92.insertSemicolon = function() {
        if (this.canInsertSemicolon())
          return this.options.onInsertedSemicolon && this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc), !0;
      }, pp$92.semicolon = function() {
        !this.eat(types$12.semi) && !this.insertSemicolon() && this.unexpected();
      }, pp$92.afterTrailingComma = function(tokType, notNext) {
        if (this.type === tokType)
          return this.options.onTrailingComma && this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc), notNext || this.next(), !0;
      }, pp$92.expect = function(type) {
        this.eat(type) || this.unexpected();
      }, pp$92.unexpected = function(pos) {
        this.raise(pos ?? this.start, "Unexpected token");
      };
      var DestructuringErrors3 = function() {
        this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = this.doubleProto = -1;
      };
      pp$92.checkPatternErrors = function(refDestructuringErrors, isAssign) {
        if (refDestructuringErrors) {
          refDestructuringErrors.trailingComma > -1 && this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element");
          var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;
          parens > -1 && this.raiseRecoverable(parens, isAssign ? "Assigning to rvalue" : "Parenthesized pattern");
        }
      }, pp$92.checkExpressionErrors = function(refDestructuringErrors, andThrow) {
        if (!refDestructuringErrors)
          return !1;
        var shorthandAssign = refDestructuringErrors.shorthandAssign, doubleProto = refDestructuringErrors.doubleProto;
        if (!andThrow)
          return shorthandAssign >= 0 || doubleProto >= 0;
        shorthandAssign >= 0 && this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"), doubleProto >= 0 && this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property");
      }, pp$92.checkYieldAwaitInDefaultParams = function() {
        this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos) && this.raise(this.yieldPos, "Yield expression cannot be a default value"), this.awaitPos && this.raise(this.awaitPos, "Await expression cannot be a default value");
      }, pp$92.isSimpleAssignTarget = function(expr) {
        return expr.type === "ParenthesizedExpression" ? this.isSimpleAssignTarget(expr.expression) : expr.type === "Identifier" || expr.type === "MemberExpression";
      };
      var pp$82 = Parser3.prototype;
      pp$82.parseTopLevel = function(node2) {
        var exports3 = /* @__PURE__ */ Object.create(null);
        for (node2.body || (node2.body = []); this.type !== types$12.eof; ) {
          var stmt = this.parseStatement(null, !0, exports3);
          node2.body.push(stmt);
        }
        if (this.inModule)
          for (var i2 = 0, list4 = Object.keys(this.undefinedExports); i2 < list4.length; i2 += 1) {
            var name2 = list4[i2];
            this.raiseRecoverable(this.undefinedExports[name2].start, "Export '" + name2 + "' is not defined");
          }
        return this.adaptDirectivePrologue(node2.body), this.next(), node2.sourceType = this.options.sourceType, this.finishNode(node2, "Program");
      };
      var loopLabel2 = { kind: "loop" }, switchLabel2 = { kind: "switch" };
      pp$82.isLet = function(context) {
        if (this.options.ecmaVersion < 6 || !this.isContextual("let"))
          return !1;
        skipWhiteSpace2.lastIndex = this.pos;
        var skip = skipWhiteSpace2.exec(this.input), next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);
        if (nextCh === 91 || nextCh === 92)
          return !0;
        if (context)
          return !1;
        if (nextCh === 123 || nextCh > 55295 && nextCh < 56320)
          return !0;
        if (isIdentifierStart2(nextCh, !0)) {
          for (var pos = next + 1; isIdentifierChar2(nextCh = this.input.charCodeAt(pos), !0); )
            ++pos;
          if (nextCh === 92 || nextCh > 55295 && nextCh < 56320)
            return !0;
          var ident = this.input.slice(next, pos);
          if (!keywordRelationalOperator2.test(ident))
            return !0;
        }
        return !1;
      }, pp$82.isAsyncFunction = function() {
        if (this.options.ecmaVersion < 8 || !this.isContextual("async"))
          return !1;
        skipWhiteSpace2.lastIndex = this.pos;
        var skip = skipWhiteSpace2.exec(this.input), next = this.pos + skip[0].length, after;
        return !lineBreak2.test(this.input.slice(this.pos, next)) && this.input.slice(next, next + 8) === "function" && (next + 8 === this.input.length || !(isIdentifierChar2(after = this.input.charCodeAt(next + 8)) || after > 55295 && after < 56320));
      }, pp$82.isUsingKeyword = function(isAwaitUsing, isFor) {
        if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? "await" : "using"))
          return !1;
        skipWhiteSpace2.lastIndex = this.pos;
        var skip = skipWhiteSpace2.exec(this.input), next = this.pos + skip[0].length;
        if (lineBreak2.test(this.input.slice(this.pos, next)))
          return !1;
        if (isAwaitUsing) {
          var awaitEndPos = next + 5, after;
          if (this.input.slice(next, awaitEndPos) !== "using" || awaitEndPos === this.input.length || isIdentifierChar2(after = this.input.charCodeAt(awaitEndPos)) || after > 55295 && after < 56320)
            return !1;
          skipWhiteSpace2.lastIndex = awaitEndPos;
          var skipAfterUsing = skipWhiteSpace2.exec(this.input);
          if (skipAfterUsing && lineBreak2.test(this.input.slice(awaitEndPos, awaitEndPos + skipAfterUsing[0].length)))
            return !1;
        }
        if (isFor) {
          var ofEndPos = next + 2, after$1;
          if (this.input.slice(next, ofEndPos) === "of" && (ofEndPos === this.input.length || !isIdentifierChar2(after$1 = this.input.charCodeAt(ofEndPos)) && !(after$1 > 55295 && after$1 < 56320)))
            return !1;
        }
        var ch = this.input.charCodeAt(next);
        return isIdentifierStart2(ch, !0) || ch === 92;
      }, pp$82.isAwaitUsing = function(isFor) {
        return this.isUsingKeyword(!0, isFor);
      }, pp$82.isUsing = function(isFor) {
        return this.isUsingKeyword(!1, isFor);
      }, pp$82.parseStatement = function(context, topLevel, exports3) {
        var starttype = this.type, node2 = this.startNode(), kind;
        switch (this.isLet(context) && (starttype = types$12._var, kind = "let"), starttype) {
          case types$12._break:
          case types$12._continue:
            return this.parseBreakContinueStatement(node2, starttype.keyword);
          case types$12._debugger:
            return this.parseDebuggerStatement(node2);
          case types$12._do:
            return this.parseDoStatement(node2);
          case types$12._for:
            return this.parseForStatement(node2);
          case types$12._function:
            return context && (this.strict || context !== "if" && context !== "label") && this.options.ecmaVersion >= 6 && this.unexpected(), this.parseFunctionStatement(node2, !1, !context);
          case types$12._class:
            return context && this.unexpected(), this.parseClass(node2, !0);
          case types$12._if:
            return this.parseIfStatement(node2);
          case types$12._return:
            return this.parseReturnStatement(node2);
          case types$12._switch:
            return this.parseSwitchStatement(node2);
          case types$12._throw:
            return this.parseThrowStatement(node2);
          case types$12._try:
            return this.parseTryStatement(node2);
          case types$12._const:
          case types$12._var:
            return kind = kind || this.value, context && kind !== "var" && this.unexpected(), this.parseVarStatement(node2, kind);
          case types$12._while:
            return this.parseWhileStatement(node2);
          case types$12._with:
            return this.parseWithStatement(node2);
          case types$12.braceL:
            return this.parseBlock(!0, node2);
          case types$12.semi:
            return this.parseEmptyStatement(node2);
          case types$12._export:
          case types$12._import:
            if (this.options.ecmaVersion > 10 && starttype === types$12._import) {
              skipWhiteSpace2.lastIndex = this.pos;
              var skip = skipWhiteSpace2.exec(this.input), next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);
              if (nextCh === 40 || nextCh === 46)
                return this.parseExpressionStatement(node2, this.parseExpression());
            }
            return this.options.allowImportExportEverywhere || (topLevel || this.raise(this.start, "'import' and 'export' may only appear at the top level"), this.inModule || this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'")), starttype === types$12._import ? this.parseImport(node2) : this.parseExport(node2, exports3);
          // If the statement does not start with a statement keyword or a
          // brace, it's an ExpressionStatement or LabeledStatement. We
          // simply start parsing an expression, and afterwards, if the
          // next token is a colon and the expression was a simple
          // Identifier node, we switch to interpreting it as a label.
          default:
            if (this.isAsyncFunction())
              return context && this.unexpected(), this.next(), this.parseFunctionStatement(node2, !0, !context);
            var usingKind = this.isAwaitUsing(!1) ? "await using" : this.isUsing(!1) ? "using" : null;
            if (usingKind)
              return topLevel && this.options.sourceType === "script" && this.raise(this.start, "Using declaration cannot appear in the top level when source type is `script`"), usingKind === "await using" && (this.canAwait || this.raise(this.start, "Await using cannot appear outside of async function"), this.next()), this.next(), this.parseVar(node2, !1, usingKind), this.semicolon(), this.finishNode(node2, "VariableDeclaration");
            var maybeName = this.value, expr = this.parseExpression();
            return starttype === types$12.name && expr.type === "Identifier" && this.eat(types$12.colon) ? this.parseLabeledStatement(node2, maybeName, expr, context) : this.parseExpressionStatement(node2, expr);
        }
      }, pp$82.parseBreakContinueStatement = function(node2, keyword) {
        var isBreak = keyword === "break";
        this.next(), this.eat(types$12.semi) || this.insertSemicolon() ? node2.label = null : this.type !== types$12.name ? this.unexpected() : (node2.label = this.parseIdent(), this.semicolon());
        for (var i2 = 0; i2 < this.labels.length; ++i2) {
          var lab = this.labels[i2];
          if ((node2.label == null || lab.name === node2.label.name) && (lab.kind != null && (isBreak || lab.kind === "loop") || node2.label && isBreak))
            break;
        }
        return i2 === this.labels.length && this.raise(node2.start, "Unsyntactic " + keyword), this.finishNode(node2, isBreak ? "BreakStatement" : "ContinueStatement");
      }, pp$82.parseDebuggerStatement = function(node2) {
        return this.next(), this.semicolon(), this.finishNode(node2, "DebuggerStatement");
      }, pp$82.parseDoStatement = function(node2) {
        return this.next(), this.labels.push(loopLabel2), node2.body = this.parseStatement("do"), this.labels.pop(), this.expect(types$12._while), node2.test = this.parseParenExpression(), this.options.ecmaVersion >= 6 ? this.eat(types$12.semi) : this.semicolon(), this.finishNode(node2, "DoWhileStatement");
      }, pp$82.parseForStatement = function(node2) {
        this.next();
        var awaitAt = this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual("await") ? this.lastTokStart : -1;
        if (this.labels.push(loopLabel2), this.enterScope(0), this.expect(types$12.parenL), this.type === types$12.semi)
          return awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node2, null);
        var isLet = this.isLet();
        if (this.type === types$12._var || this.type === types$12._const || isLet) {
          var init$1 = this.startNode(), kind = isLet ? "let" : this.value;
          return this.next(), this.parseVar(init$1, !0, kind), this.finishNode(init$1, "VariableDeclaration"), this.parseForAfterInit(node2, init$1, awaitAt);
        }
        var startsWithLet = this.isContextual("let"), isForOf = !1, usingKind = this.isUsing(!0) ? "using" : this.isAwaitUsing(!0) ? "await using" : null;
        if (usingKind) {
          var init$2 = this.startNode();
          return this.next(), usingKind === "await using" && this.next(), this.parseVar(init$2, !0, usingKind), this.finishNode(init$2, "VariableDeclaration"), this.parseForAfterInit(node2, init$2, awaitAt);
        }
        var containsEsc = this.containsEsc, refDestructuringErrors = new DestructuringErrors3(), initPos = this.start, init = awaitAt > -1 ? this.parseExprSubscripts(refDestructuringErrors, "await") : this.parseExpression(!0, refDestructuringErrors);
        return this.type === types$12._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of")) ? (awaitAt > -1 ? (this.type === types$12._in && this.unexpected(awaitAt), node2.await = !0) : isForOf && this.options.ecmaVersion >= 8 && (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async" ? this.unexpected() : this.options.ecmaVersion >= 9 && (node2.await = !1)), startsWithLet && isForOf && this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."), this.toAssignable(init, !1, refDestructuringErrors), this.checkLValPattern(init), this.parseForIn(node2, init)) : (this.checkExpressionErrors(refDestructuringErrors, !0), awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node2, init));
      }, pp$82.parseForAfterInit = function(node2, init, awaitAt) {
        return (this.type === types$12._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) && init.declarations.length === 1 ? (this.options.ecmaVersion >= 9 && (this.type === types$12._in ? awaitAt > -1 && this.unexpected(awaitAt) : node2.await = awaitAt > -1), this.parseForIn(node2, init)) : (awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node2, init));
      }, pp$82.parseFunctionStatement = function(node2, isAsync, declarationPosition) {
        return this.next(), this.parseFunction(node2, FUNC_STATEMENT2 | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT2), !1, isAsync);
      }, pp$82.parseIfStatement = function(node2) {
        return this.next(), node2.test = this.parseParenExpression(), node2.consequent = this.parseStatement("if"), node2.alternate = this.eat(types$12._else) ? this.parseStatement("if") : null, this.finishNode(node2, "IfStatement");
      }, pp$82.parseReturnStatement = function(node2) {
        return !this.inFunction && !this.options.allowReturnOutsideFunction && this.raise(this.start, "'return' outside of function"), this.next(), this.eat(types$12.semi) || this.insertSemicolon() ? node2.argument = null : (node2.argument = this.parseExpression(), this.semicolon()), this.finishNode(node2, "ReturnStatement");
      }, pp$82.parseSwitchStatement = function(node2) {
        this.next(), node2.discriminant = this.parseParenExpression(), node2.cases = [], this.expect(types$12.braceL), this.labels.push(switchLabel2), this.enterScope(0);
        for (var cur, sawDefault = !1; this.type !== types$12.braceR; )
          if (this.type === types$12._case || this.type === types$12._default) {
            var isCase = this.type === types$12._case;
            cur && this.finishNode(cur, "SwitchCase"), node2.cases.push(cur = this.startNode()), cur.consequent = [], this.next(), isCase ? cur.test = this.parseExpression() : (sawDefault && this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"), sawDefault = !0, cur.test = null), this.expect(types$12.colon);
          } else
            cur || this.unexpected(), cur.consequent.push(this.parseStatement(null));
        return this.exitScope(), cur && this.finishNode(cur, "SwitchCase"), this.next(), this.labels.pop(), this.finishNode(node2, "SwitchStatement");
      }, pp$82.parseThrowStatement = function(node2) {
        return this.next(), lineBreak2.test(this.input.slice(this.lastTokEnd, this.start)) && this.raise(this.lastTokEnd, "Illegal newline after throw"), node2.argument = this.parseExpression(), this.semicolon(), this.finishNode(node2, "ThrowStatement");
      };
      var empty$12 = [];
      pp$82.parseCatchClauseParam = function() {
        var param = this.parseBindingAtom(), simple = param.type === "Identifier";
        return this.enterScope(simple ? SCOPE_SIMPLE_CATCH2 : 0), this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH2 : BIND_LEXICAL2), this.expect(types$12.parenR), param;
      }, pp$82.parseTryStatement = function(node2) {
        if (this.next(), node2.block = this.parseBlock(), node2.handler = null, this.type === types$12._catch) {
          var clause = this.startNode();
          this.next(), this.eat(types$12.parenL) ? clause.param = this.parseCatchClauseParam() : (this.options.ecmaVersion < 10 && this.unexpected(), clause.param = null, this.enterScope(0)), clause.body = this.parseBlock(!1), this.exitScope(), node2.handler = this.finishNode(clause, "CatchClause");
        }
        return node2.finalizer = this.eat(types$12._finally) ? this.parseBlock() : null, !node2.handler && !node2.finalizer && this.raise(node2.start, "Missing catch or finally clause"), this.finishNode(node2, "TryStatement");
      }, pp$82.parseVarStatement = function(node2, kind, allowMissingInitializer) {
        return this.next(), this.parseVar(node2, !1, kind, allowMissingInitializer), this.semicolon(), this.finishNode(node2, "VariableDeclaration");
      }, pp$82.parseWhileStatement = function(node2) {
        return this.next(), node2.test = this.parseParenExpression(), this.labels.push(loopLabel2), node2.body = this.parseStatement("while"), this.labels.pop(), this.finishNode(node2, "WhileStatement");
      }, pp$82.parseWithStatement = function(node2) {
        return this.strict && this.raise(this.start, "'with' in strict mode"), this.next(), node2.object = this.parseParenExpression(), node2.body = this.parseStatement("with"), this.finishNode(node2, "WithStatement");
      }, pp$82.parseEmptyStatement = function(node2) {
        return this.next(), this.finishNode(node2, "EmptyStatement");
      }, pp$82.parseLabeledStatement = function(node2, maybeName, expr, context) {
        for (var i$1 = 0, list4 = this.labels; i$1 < list4.length; i$1 += 1) {
          var label = list4[i$1];
          label.name === maybeName && this.raise(expr.start, "Label '" + maybeName + "' is already declared");
        }
        for (var kind = this.type.isLoop ? "loop" : this.type === types$12._switch ? "switch" : null, i2 = this.labels.length - 1; i2 >= 0; i2--) {
          var label$1 = this.labels[i2];
          if (label$1.statementStart === node2.start)
            label$1.statementStart = this.start, label$1.kind = kind;
          else
            break;
        }
        return this.labels.push({ name: maybeName, kind, statementStart: this.start }), node2.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"), this.labels.pop(), node2.label = expr, this.finishNode(node2, "LabeledStatement");
      }, pp$82.parseExpressionStatement = function(node2, expr) {
        return node2.expression = expr, this.semicolon(), this.finishNode(node2, "ExpressionStatement");
      }, pp$82.parseBlock = function(createNewLexicalScope, node2, exitStrict) {
        for (createNewLexicalScope === void 0 && (createNewLexicalScope = !0), node2 === void 0 && (node2 = this.startNode()), node2.body = [], this.expect(types$12.braceL), createNewLexicalScope && this.enterScope(0); this.type !== types$12.braceR; ) {
          var stmt = this.parseStatement(null);
          node2.body.push(stmt);
        }
        return exitStrict && (this.strict = !1), this.next(), createNewLexicalScope && this.exitScope(), this.finishNode(node2, "BlockStatement");
      }, pp$82.parseFor = function(node2, init) {
        return node2.init = init, this.expect(types$12.semi), node2.test = this.type === types$12.semi ? null : this.parseExpression(), this.expect(types$12.semi), node2.update = this.type === types$12.parenR ? null : this.parseExpression(), this.expect(types$12.parenR), node2.body = this.parseStatement("for"), this.exitScope(), this.labels.pop(), this.finishNode(node2, "ForStatement");
      }, pp$82.parseForIn = function(node2, init) {
        var isForIn = this.type === types$12._in;
        return this.next(), init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.options.ecmaVersion < 8 || this.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier") && this.raise(
          init.start,
          (isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer"
        ), node2.left = init, node2.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(), this.expect(types$12.parenR), node2.body = this.parseStatement("for"), this.exitScope(), this.labels.pop(), this.finishNode(node2, isForIn ? "ForInStatement" : "ForOfStatement");
      }, pp$82.parseVar = function(node2, isFor, kind, allowMissingInitializer) {
        for (node2.declarations = [], node2.kind = kind; ; ) {
          var decl = this.startNode();
          if (this.parseVarId(decl, kind), this.eat(types$12.eq) ? decl.init = this.parseMaybeAssign(isFor) : !allowMissingInitializer && kind === "const" && !(this.type === types$12._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) ? this.unexpected() : !allowMissingInitializer && (kind === "using" || kind === "await using") && this.options.ecmaVersion >= 17 && this.type !== types$12._in && !this.isContextual("of") ? this.raise(this.lastTokEnd, "Missing initializer in " + kind + " declaration") : !allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$12._in || this.isContextual("of"))) ? this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value") : decl.init = null, node2.declarations.push(this.finishNode(decl, "VariableDeclarator")), !this.eat(types$12.comma))
            break;
        }
        return node2;
      }, pp$82.parseVarId = function(decl, kind) {
        decl.id = kind === "using" || kind === "await using" ? this.parseIdent() : this.parseBindingAtom(), this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR2 : BIND_LEXICAL2, !1);
      };
      var FUNC_STATEMENT2 = 1, FUNC_HANGING_STATEMENT2 = 2, FUNC_NULLABLE_ID2 = 4;
      pp$82.parseFunction = function(node2, statement, allowExpressionBody, isAsync, forInit) {
        this.initFunction(node2), (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) && (this.type === types$12.star && statement & FUNC_HANGING_STATEMENT2 && this.unexpected(), node2.generator = this.eat(types$12.star)), this.options.ecmaVersion >= 8 && (node2.async = !!isAsync), statement & FUNC_STATEMENT2 && (node2.id = statement & FUNC_NULLABLE_ID2 && this.type !== types$12.name ? null : this.parseIdent(), node2.id && !(statement & FUNC_HANGING_STATEMENT2) && this.checkLValSimple(node2.id, this.strict || node2.generator || node2.async ? this.treatFunctionsAsVar ? BIND_VAR2 : BIND_LEXICAL2 : BIND_FUNCTION2));
        var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
        return this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, this.enterScope(functionFlags2(node2.async, node2.generator)), statement & FUNC_STATEMENT2 || (node2.id = this.type === types$12.name ? this.parseIdent() : null), this.parseFunctionParams(node2), this.parseFunctionBody(node2, allowExpressionBody, !1, forInit), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.finishNode(node2, statement & FUNC_STATEMENT2 ? "FunctionDeclaration" : "FunctionExpression");
      }, pp$82.parseFunctionParams = function(node2) {
        this.expect(types$12.parenL), node2.params = this.parseBindingList(types$12.parenR, !1, this.options.ecmaVersion >= 8), this.checkYieldAwaitInDefaultParams();
      }, pp$82.parseClass = function(node2, isStatement) {
        this.next();
        var oldStrict = this.strict;
        this.strict = !0, this.parseClassId(node2, isStatement), this.parseClassSuper(node2);
        var privateNameMap = this.enterClassBody(), classBody = this.startNode(), hadConstructor = !1;
        for (classBody.body = [], this.expect(types$12.braceL); this.type !== types$12.braceR; ) {
          var element2 = this.parseClassElement(node2.superClass !== null);
          element2 && (classBody.body.push(element2), element2.type === "MethodDefinition" && element2.kind === "constructor" ? (hadConstructor && this.raiseRecoverable(element2.start, "Duplicate constructor in the same class"), hadConstructor = !0) : element2.key && element2.key.type === "PrivateIdentifier" && isPrivateNameConflicted2(privateNameMap, element2) && this.raiseRecoverable(element2.key.start, "Identifier '#" + element2.key.name + "' has already been declared"));
        }
        return this.strict = oldStrict, this.next(), node2.body = this.finishNode(classBody, "ClassBody"), this.exitClassBody(), this.finishNode(node2, isStatement ? "ClassDeclaration" : "ClassExpression");
      }, pp$82.parseClassElement = function(constructorAllowsSuper) {
        if (this.eat(types$12.semi))
          return null;
        var ecmaVersion2 = this.options.ecmaVersion, node2 = this.startNode(), keyName = "", isGenerator = !1, isAsync = !1, kind = "method", isStatic = !1;
        if (this.eatContextual("static")) {
          if (ecmaVersion2 >= 13 && this.eat(types$12.braceL))
            return this.parseClassStaticBlock(node2), node2;
          this.isClassElementNameStart() || this.type === types$12.star ? isStatic = !0 : keyName = "static";
        }
        if (node2.static = isStatic, !keyName && ecmaVersion2 >= 8 && this.eatContextual("async") && ((this.isClassElementNameStart() || this.type === types$12.star) && !this.canInsertSemicolon() ? isAsync = !0 : keyName = "async"), !keyName && (ecmaVersion2 >= 9 || !isAsync) && this.eat(types$12.star) && (isGenerator = !0), !keyName && !isAsync && !isGenerator) {
          var lastValue = this.value;
          (this.eatContextual("get") || this.eatContextual("set")) && (this.isClassElementNameStart() ? kind = lastValue : keyName = lastValue);
        }
        if (keyName ? (node2.computed = !1, node2.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc), node2.key.name = keyName, this.finishNode(node2.key, "Identifier")) : this.parseClassElementName(node2), ecmaVersion2 < 13 || this.type === types$12.parenL || kind !== "method" || isGenerator || isAsync) {
          var isConstructor = !node2.static && checkKeyName2(node2, "constructor"), allowsDirectSuper = isConstructor && constructorAllowsSuper;
          isConstructor && kind !== "method" && this.raise(node2.key.start, "Constructor can't have get/set modifier"), node2.kind = isConstructor ? "constructor" : kind, this.parseClassMethod(node2, isGenerator, isAsync, allowsDirectSuper);
        } else
          this.parseClassField(node2);
        return node2;
      }, pp$82.isClassElementNameStart = function() {
        return this.type === types$12.name || this.type === types$12.privateId || this.type === types$12.num || this.type === types$12.string || this.type === types$12.bracketL || this.type.keyword;
      }, pp$82.parseClassElementName = function(element2) {
        this.type === types$12.privateId ? (this.value === "constructor" && this.raise(this.start, "Classes can't have an element named '#constructor'"), element2.computed = !1, element2.key = this.parsePrivateIdent()) : this.parsePropertyName(element2);
      }, pp$82.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {
        var key2 = method.key;
        method.kind === "constructor" ? (isGenerator && this.raise(key2.start, "Constructor can't be a generator"), isAsync && this.raise(key2.start, "Constructor can't be an async method")) : method.static && checkKeyName2(method, "prototype") && this.raise(key2.start, "Classes may not have a static property named prototype");
        var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);
        return method.kind === "get" && value.params.length !== 0 && this.raiseRecoverable(value.start, "getter should have no params"), method.kind === "set" && value.params.length !== 1 && this.raiseRecoverable(value.start, "setter should have exactly one param"), method.kind === "set" && value.params[0].type === "RestElement" && this.raiseRecoverable(value.params[0].start, "Setter cannot use rest params"), this.finishNode(method, "MethodDefinition");
      }, pp$82.parseClassField = function(field) {
        return checkKeyName2(field, "constructor") ? this.raise(field.key.start, "Classes can't have a field named 'constructor'") : field.static && checkKeyName2(field, "prototype") && this.raise(field.key.start, "Classes can't have a static field named 'prototype'"), this.eat(types$12.eq) ? (this.enterScope(SCOPE_CLASS_FIELD_INIT2 | SCOPE_SUPER2), field.value = this.parseMaybeAssign(), this.exitScope()) : field.value = null, this.semicolon(), this.finishNode(field, "PropertyDefinition");
      }, pp$82.parseClassStaticBlock = function(node2) {
        node2.body = [];
        var oldLabels = this.labels;
        for (this.labels = [], this.enterScope(SCOPE_CLASS_STATIC_BLOCK2 | SCOPE_SUPER2); this.type !== types$12.braceR; ) {
          var stmt = this.parseStatement(null);
          node2.body.push(stmt);
        }
        return this.next(), this.exitScope(), this.labels = oldLabels, this.finishNode(node2, "StaticBlock");
      }, pp$82.parseClassId = function(node2, isStatement) {
        this.type === types$12.name ? (node2.id = this.parseIdent(), isStatement && this.checkLValSimple(node2.id, BIND_LEXICAL2, !1)) : (isStatement === !0 && this.unexpected(), node2.id = null);
      }, pp$82.parseClassSuper = function(node2) {
        node2.superClass = this.eat(types$12._extends) ? this.parseExprSubscripts(null, !1) : null;
      }, pp$82.enterClassBody = function() {
        var element2 = { declared: /* @__PURE__ */ Object.create(null), used: [] };
        return this.privateNameStack.push(element2), element2.declared;
      }, pp$82.exitClassBody = function() {
        var ref3 = this.privateNameStack.pop(), declared = ref3.declared, used = ref3.used;
        if (this.options.checkPrivateFields)
          for (var len = this.privateNameStack.length, parent = len === 0 ? null : this.privateNameStack[len - 1], i2 = 0; i2 < used.length; ++i2) {
            var id = used[i2];
            hasOwn2(declared, id.name) || (parent ? parent.used.push(id) : this.raiseRecoverable(id.start, "Private field '#" + id.name + "' must be declared in an enclosing class"));
          }
      };
      function isPrivateNameConflicted2(privateNameMap, element2) {
        var name2 = element2.key.name, curr = privateNameMap[name2], next = "true";
        return element2.type === "MethodDefinition" && (element2.kind === "get" || element2.kind === "set") && (next = (element2.static ? "s" : "i") + element2.kind), curr === "iget" && next === "iset" || curr === "iset" && next === "iget" || curr === "sget" && next === "sset" || curr === "sset" && next === "sget" ? (privateNameMap[name2] = "true", !1) : curr ? !0 : (privateNameMap[name2] = next, !1);
      }
      function checkKeyName2(node2, name2) {
        var computed = node2.computed, key2 = node2.key;
        return !computed && (key2.type === "Identifier" && key2.name === name2 || key2.type === "Literal" && key2.value === name2);
      }
      pp$82.parseExportAllDeclaration = function(node2, exports3) {
        return this.options.ecmaVersion >= 11 && (this.eatContextual("as") ? (node2.exported = this.parseModuleExportName(), this.checkExport(exports3, node2.exported, this.lastTokStart)) : node2.exported = null), this.expectContextual("from"), this.type !== types$12.string && this.unexpected(), node2.source = this.parseExprAtom(), this.options.ecmaVersion >= 16 && (node2.attributes = this.parseWithClause()), this.semicolon(), this.finishNode(node2, "ExportAllDeclaration");
      }, pp$82.parseExport = function(node2, exports3) {
        if (this.next(), this.eat(types$12.star))
          return this.parseExportAllDeclaration(node2, exports3);
        if (this.eat(types$12._default))
          return this.checkExport(exports3, "default", this.lastTokStart), node2.declaration = this.parseExportDefaultDeclaration(), this.finishNode(node2, "ExportDefaultDeclaration");
        if (this.shouldParseExportStatement())
          node2.declaration = this.parseExportDeclaration(node2), node2.declaration.type === "VariableDeclaration" ? this.checkVariableExport(exports3, node2.declaration.declarations) : this.checkExport(exports3, node2.declaration.id, node2.declaration.id.start), node2.specifiers = [], node2.source = null, this.options.ecmaVersion >= 16 && (node2.attributes = []);
        else {
          if (node2.declaration = null, node2.specifiers = this.parseExportSpecifiers(exports3), this.eatContextual("from"))
            this.type !== types$12.string && this.unexpected(), node2.source = this.parseExprAtom(), this.options.ecmaVersion >= 16 && (node2.attributes = this.parseWithClause());
          else {
            for (var i2 = 0, list4 = node2.specifiers; i2 < list4.length; i2 += 1) {
              var spec = list4[i2];
              this.checkUnreserved(spec.local), this.checkLocalExport(spec.local), spec.local.type === "Literal" && this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`.");
            }
            node2.source = null, this.options.ecmaVersion >= 16 && (node2.attributes = []);
          }
          this.semicolon();
        }
        return this.finishNode(node2, "ExportNamedDeclaration");
      }, pp$82.parseExportDeclaration = function(node2) {
        return this.parseStatement(null);
      }, pp$82.parseExportDefaultDeclaration = function() {
        var isAsync;
        if (this.type === types$12._function || (isAsync = this.isAsyncFunction())) {
          var fNode = this.startNode();
          return this.next(), isAsync && this.next(), this.parseFunction(fNode, FUNC_STATEMENT2 | FUNC_NULLABLE_ID2, !1, isAsync);
        } else if (this.type === types$12._class) {
          var cNode = this.startNode();
          return this.parseClass(cNode, "nullableID");
        } else {
          var declaration = this.parseMaybeAssign();
          return this.semicolon(), declaration;
        }
      }, pp$82.checkExport = function(exports3, name2, pos) {
        exports3 && (typeof name2 != "string" && (name2 = name2.type === "Identifier" ? name2.name : name2.value), hasOwn2(exports3, name2) && this.raiseRecoverable(pos, "Duplicate export '" + name2 + "'"), exports3[name2] = !0);
      }, pp$82.checkPatternExport = function(exports3, pat) {
        var type = pat.type;
        if (type === "Identifier")
          this.checkExport(exports3, pat, pat.start);
        else if (type === "ObjectPattern")
          for (var i2 = 0, list4 = pat.properties; i2 < list4.length; i2 += 1) {
            var prop = list4[i2];
            this.checkPatternExport(exports3, prop);
          }
        else if (type === "ArrayPattern")
          for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {
            var elt = list$1[i$1];
            elt && this.checkPatternExport(exports3, elt);
          }
        else type === "Property" ? this.checkPatternExport(exports3, pat.value) : type === "AssignmentPattern" ? this.checkPatternExport(exports3, pat.left) : type === "RestElement" && this.checkPatternExport(exports3, pat.argument);
      }, pp$82.checkVariableExport = function(exports3, decls) {
        if (exports3)
          for (var i2 = 0, list4 = decls; i2 < list4.length; i2 += 1) {
            var decl = list4[i2];
            this.checkPatternExport(exports3, decl.id);
          }
      }, pp$82.shouldParseExportStatement = function() {
        return this.type.keyword === "var" || this.type.keyword === "const" || this.type.keyword === "class" || this.type.keyword === "function" || this.isLet() || this.isAsyncFunction();
      }, pp$82.parseExportSpecifier = function(exports3) {
        var node2 = this.startNode();
        return node2.local = this.parseModuleExportName(), node2.exported = this.eatContextual("as") ? this.parseModuleExportName() : node2.local, this.checkExport(
          exports3,
          node2.exported,
          node2.exported.start
        ), this.finishNode(node2, "ExportSpecifier");
      }, pp$82.parseExportSpecifiers = function(exports3) {
        var nodes = [], first = !0;
        for (this.expect(types$12.braceL); !this.eat(types$12.braceR); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), this.afterTrailingComma(types$12.braceR))
            break;
          nodes.push(this.parseExportSpecifier(exports3));
        }
        return nodes;
      }, pp$82.parseImport = function(node2) {
        return this.next(), this.type === types$12.string ? (node2.specifiers = empty$12, node2.source = this.parseExprAtom()) : (node2.specifiers = this.parseImportSpecifiers(), this.expectContextual("from"), node2.source = this.type === types$12.string ? this.parseExprAtom() : this.unexpected()), this.options.ecmaVersion >= 16 && (node2.attributes = this.parseWithClause()), this.semicolon(), this.finishNode(node2, "ImportDeclaration");
      }, pp$82.parseImportSpecifier = function() {
        var node2 = this.startNode();
        return node2.imported = this.parseModuleExportName(), this.eatContextual("as") ? node2.local = this.parseIdent() : (this.checkUnreserved(node2.imported), node2.local = node2.imported), this.checkLValSimple(node2.local, BIND_LEXICAL2), this.finishNode(node2, "ImportSpecifier");
      }, pp$82.parseImportDefaultSpecifier = function() {
        var node2 = this.startNode();
        return node2.local = this.parseIdent(), this.checkLValSimple(node2.local, BIND_LEXICAL2), this.finishNode(node2, "ImportDefaultSpecifier");
      }, pp$82.parseImportNamespaceSpecifier = function() {
        var node2 = this.startNode();
        return this.next(), this.expectContextual("as"), node2.local = this.parseIdent(), this.checkLValSimple(node2.local, BIND_LEXICAL2), this.finishNode(node2, "ImportNamespaceSpecifier");
      }, pp$82.parseImportSpecifiers = function() {
        var nodes = [], first = !0;
        if (this.type === types$12.name && (nodes.push(this.parseImportDefaultSpecifier()), !this.eat(types$12.comma)))
          return nodes;
        if (this.type === types$12.star)
          return nodes.push(this.parseImportNamespaceSpecifier()), nodes;
        for (this.expect(types$12.braceL); !this.eat(types$12.braceR); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), this.afterTrailingComma(types$12.braceR))
            break;
          nodes.push(this.parseImportSpecifier());
        }
        return nodes;
      }, pp$82.parseWithClause = function() {
        var nodes = [];
        if (!this.eat(types$12._with))
          return nodes;
        this.expect(types$12.braceL);
        for (var attributeKeys = {}, first = !0; !this.eat(types$12.braceR); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), this.afterTrailingComma(types$12.braceR))
            break;
          var attr = this.parseImportAttribute(), keyName = attr.key.type === "Identifier" ? attr.key.name : attr.key.value;
          hasOwn2(attributeKeys, keyName) && this.raiseRecoverable(attr.key.start, "Duplicate attribute key '" + keyName + "'"), attributeKeys[keyName] = !0, nodes.push(attr);
        }
        return nodes;
      }, pp$82.parseImportAttribute = function() {
        var node2 = this.startNode();
        return node2.key = this.type === types$12.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never"), this.expect(types$12.colon), this.type !== types$12.string && this.unexpected(), node2.value = this.parseExprAtom(), this.finishNode(node2, "ImportAttribute");
      }, pp$82.parseModuleExportName = function() {
        if (this.options.ecmaVersion >= 13 && this.type === types$12.string) {
          var stringLiteral = this.parseLiteral(this.value);
          return loneSurrogate2.test(stringLiteral.value) && this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."), stringLiteral;
        }
        return this.parseIdent(!0);
      }, pp$82.adaptDirectivePrologue = function(statements) {
        for (var i2 = 0; i2 < statements.length && this.isDirectiveCandidate(statements[i2]); ++i2)
          statements[i2].directive = statements[i2].expression.raw.slice(1, -1);
      }, pp$82.isDirectiveCandidate = function(statement) {
        return this.options.ecmaVersion >= 5 && statement.type === "ExpressionStatement" && statement.expression.type === "Literal" && typeof statement.expression.value == "string" && // Reject parenthesized strings.
        (this.input[statement.start] === '"' || this.input[statement.start] === "'");
      };
      var pp$72 = Parser3.prototype;
      pp$72.toAssignable = function(node2, isBinding, refDestructuringErrors) {
        if (this.options.ecmaVersion >= 6 && node2)
          switch (node2.type) {
            case "Identifier":
              this.inAsync && node2.name === "await" && this.raise(node2.start, "Cannot use 'await' as identifier inside an async function");
              break;
            case "ObjectPattern":
            case "ArrayPattern":
            case "AssignmentPattern":
            case "RestElement":
              break;
            case "ObjectExpression":
              node2.type = "ObjectPattern", refDestructuringErrors && this.checkPatternErrors(refDestructuringErrors, !0);
              for (var i2 = 0, list4 = node2.properties; i2 < list4.length; i2 += 1) {
                var prop = list4[i2];
                this.toAssignable(prop, isBinding), prop.type === "RestElement" && (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") && this.raise(prop.argument.start, "Unexpected token");
              }
              break;
            case "Property":
              node2.kind !== "init" && this.raise(node2.key.start, "Object pattern can't contain getter or setter"), this.toAssignable(node2.value, isBinding);
              break;
            case "ArrayExpression":
              node2.type = "ArrayPattern", refDestructuringErrors && this.checkPatternErrors(refDestructuringErrors, !0), this.toAssignableList(node2.elements, isBinding);
              break;
            case "SpreadElement":
              node2.type = "RestElement", this.toAssignable(node2.argument, isBinding), node2.argument.type === "AssignmentPattern" && this.raise(node2.argument.start, "Rest elements cannot have a default value");
              break;
            case "AssignmentExpression":
              node2.operator !== "=" && this.raise(node2.left.end, "Only '=' operator can be used for specifying default value."), node2.type = "AssignmentPattern", delete node2.operator, this.toAssignable(node2.left, isBinding);
              break;
            case "ParenthesizedExpression":
              this.toAssignable(node2.expression, isBinding, refDestructuringErrors);
              break;
            case "ChainExpression":
              this.raiseRecoverable(node2.start, "Optional chaining cannot appear in left-hand side");
              break;
            case "MemberExpression":
              if (!isBinding)
                break;
            default:
              this.raise(node2.start, "Assigning to rvalue");
          }
        else refDestructuringErrors && this.checkPatternErrors(refDestructuringErrors, !0);
        return node2;
      }, pp$72.toAssignableList = function(exprList, isBinding) {
        for (var end = exprList.length, i2 = 0; i2 < end; i2++) {
          var elt = exprList[i2];
          elt && this.toAssignable(elt, isBinding);
        }
        if (end) {
          var last = exprList[end - 1];
          this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier" && this.unexpected(last.argument.start);
        }
        return exprList;
      }, pp$72.parseSpread = function(refDestructuringErrors) {
        var node2 = this.startNode();
        return this.next(), node2.argument = this.parseMaybeAssign(!1, refDestructuringErrors), this.finishNode(node2, "SpreadElement");
      }, pp$72.parseRestBinding = function() {
        var node2 = this.startNode();
        return this.next(), this.options.ecmaVersion === 6 && this.type !== types$12.name && this.unexpected(), node2.argument = this.parseBindingAtom(), this.finishNode(node2, "RestElement");
      }, pp$72.parseBindingAtom = function() {
        if (this.options.ecmaVersion >= 6)
          switch (this.type) {
            case types$12.bracketL:
              var node2 = this.startNode();
              return this.next(), node2.elements = this.parseBindingList(types$12.bracketR, !0, !0), this.finishNode(node2, "ArrayPattern");
            case types$12.braceL:
              return this.parseObj(!0);
          }
        return this.parseIdent();
      }, pp$72.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {
        for (var elts = [], first = !0; !this.eat(close); )
          if (first ? first = !1 : this.expect(types$12.comma), allowEmpty && this.type === types$12.comma)
            elts.push(null);
          else {
            if (allowTrailingComma && this.afterTrailingComma(close))
              break;
            if (this.type === types$12.ellipsis) {
              var rest = this.parseRestBinding();
              this.parseBindingListItem(rest), elts.push(rest), this.type === types$12.comma && this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"), this.expect(close);
              break;
            } else
              elts.push(this.parseAssignableListItem(allowModifiers));
          }
        return elts;
      }, pp$72.parseAssignableListItem = function(allowModifiers) {
        var elem = this.parseMaybeDefault(this.start, this.startLoc);
        return this.parseBindingListItem(elem), elem;
      }, pp$72.parseBindingListItem = function(param) {
        return param;
      }, pp$72.parseMaybeDefault = function(startPos, startLoc, left) {
        if (left = left || this.parseBindingAtom(), this.options.ecmaVersion < 6 || !this.eat(types$12.eq))
          return left;
        var node2 = this.startNodeAt(startPos, startLoc);
        return node2.left = left, node2.right = this.parseMaybeAssign(), this.finishNode(node2, "AssignmentPattern");
      }, pp$72.checkLValSimple = function(expr, bindingType, checkClashes) {
        bindingType === void 0 && (bindingType = BIND_NONE2);
        var isBind = bindingType !== BIND_NONE2;
        switch (expr.type) {
          case "Identifier":
            this.strict && this.reservedWordsStrictBind.test(expr.name) && this.raiseRecoverable(expr.start, (isBind ? "Binding " : "Assigning to ") + expr.name + " in strict mode"), isBind && (bindingType === BIND_LEXICAL2 && expr.name === "let" && this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"), checkClashes && (hasOwn2(checkClashes, expr.name) && this.raiseRecoverable(expr.start, "Argument name clash"), checkClashes[expr.name] = !0), bindingType !== BIND_OUTSIDE2 && this.declareName(expr.name, bindingType, expr.start));
            break;
          case "ChainExpression":
            this.raiseRecoverable(expr.start, "Optional chaining cannot appear in left-hand side");
            break;
          case "MemberExpression":
            isBind && this.raiseRecoverable(expr.start, "Binding member expression");
            break;
          case "ParenthesizedExpression":
            return isBind && this.raiseRecoverable(expr.start, "Binding parenthesized expression"), this.checkLValSimple(expr.expression, bindingType, checkClashes);
          default:
            this.raise(expr.start, (isBind ? "Binding" : "Assigning to") + " rvalue");
        }
      }, pp$72.checkLValPattern = function(expr, bindingType, checkClashes) {
        switch (bindingType === void 0 && (bindingType = BIND_NONE2), expr.type) {
          case "ObjectPattern":
            for (var i2 = 0, list4 = expr.properties; i2 < list4.length; i2 += 1) {
              var prop = list4[i2];
              this.checkLValInnerPattern(prop, bindingType, checkClashes);
            }
            break;
          case "ArrayPattern":
            for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {
              var elem = list$1[i$1];
              elem && this.checkLValInnerPattern(elem, bindingType, checkClashes);
            }
            break;
          default:
            this.checkLValSimple(expr, bindingType, checkClashes);
        }
      }, pp$72.checkLValInnerPattern = function(expr, bindingType, checkClashes) {
        switch (bindingType === void 0 && (bindingType = BIND_NONE2), expr.type) {
          case "Property":
            this.checkLValInnerPattern(expr.value, bindingType, checkClashes);
            break;
          case "AssignmentPattern":
            this.checkLValPattern(expr.left, bindingType, checkClashes);
            break;
          case "RestElement":
            this.checkLValPattern(expr.argument, bindingType, checkClashes);
            break;
          default:
            this.checkLValPattern(expr, bindingType, checkClashes);
        }
      };
      var TokContext3 = function(token, isExpr, preserveSpace, override, generator) {
        this.token = token, this.isExpr = !!isExpr, this.preserveSpace = !!preserveSpace, this.override = override, this.generator = !!generator;
      }, types2 = {
        b_stat: new TokContext3("{", !1),
        b_expr: new TokContext3("{", !0),
        b_tmpl: new TokContext3("${", !1),
        p_stat: new TokContext3("(", !1),
        p_expr: new TokContext3("(", !0),
        q_tmpl: new TokContext3("`", !0, !0, function(p) {
          return p.tryReadTemplateToken();
        }),
        f_stat: new TokContext3("function", !1),
        f_expr: new TokContext3("function", !0),
        f_expr_gen: new TokContext3("function", !0, !1, null, !0),
        f_gen: new TokContext3("function", !1, !1, null, !0)
      }, pp$62 = Parser3.prototype;
      pp$62.initialContext = function() {
        return [types2.b_stat];
      }, pp$62.curContext = function() {
        return this.context[this.context.length - 1];
      }, pp$62.braceIsBlock = function(prevType) {
        var parent = this.curContext();
        return parent === types2.f_expr || parent === types2.f_stat ? !0 : prevType === types$12.colon && (parent === types2.b_stat || parent === types2.b_expr) ? !parent.isExpr : prevType === types$12._return || prevType === types$12.name && this.exprAllowed ? lineBreak2.test(this.input.slice(this.lastTokEnd, this.start)) : prevType === types$12._else || prevType === types$12.semi || prevType === types$12.eof || prevType === types$12.parenR || prevType === types$12.arrow ? !0 : prevType === types$12.braceL ? parent === types2.b_stat : prevType === types$12._var || prevType === types$12._const || prevType === types$12.name ? !1 : !this.exprAllowed;
      }, pp$62.inGeneratorContext = function() {
        for (var i2 = this.context.length - 1; i2 >= 1; i2--) {
          var context = this.context[i2];
          if (context.token === "function")
            return context.generator;
        }
        return !1;
      }, pp$62.updateContext = function(prevType) {
        var update, type = this.type;
        type.keyword && prevType === types$12.dot ? this.exprAllowed = !1 : (update = type.updateContext) ? update.call(this, prevType) : this.exprAllowed = type.beforeExpr;
      }, pp$62.overrideContext = function(tokenCtx) {
        this.curContext() !== tokenCtx && (this.context[this.context.length - 1] = tokenCtx);
      }, types$12.parenR.updateContext = types$12.braceR.updateContext = function() {
        if (this.context.length === 1) {
          this.exprAllowed = !0;
          return;
        }
        var out = this.context.pop();
        out === types2.b_stat && this.curContext().token === "function" && (out = this.context.pop()), this.exprAllowed = !out.isExpr;
      }, types$12.braceL.updateContext = function(prevType) {
        this.context.push(this.braceIsBlock(prevType) ? types2.b_stat : types2.b_expr), this.exprAllowed = !0;
      }, types$12.dollarBraceL.updateContext = function() {
        this.context.push(types2.b_tmpl), this.exprAllowed = !0;
      }, types$12.parenL.updateContext = function(prevType) {
        var statementParens = prevType === types$12._if || prevType === types$12._for || prevType === types$12._with || prevType === types$12._while;
        this.context.push(statementParens ? types2.p_stat : types2.p_expr), this.exprAllowed = !0;
      }, types$12.incDec.updateContext = function() {
      }, types$12._function.updateContext = types$12._class.updateContext = function(prevType) {
        prevType.beforeExpr && prevType !== types$12._else && !(prevType === types$12.semi && this.curContext() !== types2.p_stat) && !(prevType === types$12._return && lineBreak2.test(this.input.slice(this.lastTokEnd, this.start))) && !((prevType === types$12.colon || prevType === types$12.braceL) && this.curContext() === types2.b_stat) ? this.context.push(types2.f_expr) : this.context.push(types2.f_stat), this.exprAllowed = !1;
      }, types$12.colon.updateContext = function() {
        this.curContext().token === "function" && this.context.pop(), this.exprAllowed = !0;
      }, types$12.backQuote.updateContext = function() {
        this.curContext() === types2.q_tmpl ? this.context.pop() : this.context.push(types2.q_tmpl), this.exprAllowed = !1;
      }, types$12.star.updateContext = function(prevType) {
        if (prevType === types$12._function) {
          var index2 = this.context.length - 1;
          this.context[index2] === types2.f_expr ? this.context[index2] = types2.f_expr_gen : this.context[index2] = types2.f_gen;
        }
        this.exprAllowed = !0;
      }, types$12.name.updateContext = function(prevType) {
        var allowed = !1;
        this.options.ecmaVersion >= 6 && prevType !== types$12.dot && (this.value === "of" && !this.exprAllowed || this.value === "yield" && this.inGeneratorContext()) && (allowed = !0), this.exprAllowed = allowed;
      };
      var pp$52 = Parser3.prototype;
      pp$52.checkPropClash = function(prop, propHash, refDestructuringErrors) {
        if (!(this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") && !(this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))) {
          var key2 = prop.key, name2;
          switch (key2.type) {
            case "Identifier":
              name2 = key2.name;
              break;
            case "Literal":
              name2 = String(key2.value);
              break;
            default:
              return;
          }
          var kind = prop.kind;
          if (this.options.ecmaVersion >= 6) {
            name2 === "__proto__" && kind === "init" && (propHash.proto && (refDestructuringErrors ? refDestructuringErrors.doubleProto < 0 && (refDestructuringErrors.doubleProto = key2.start) : this.raiseRecoverable(key2.start, "Redefinition of __proto__ property")), propHash.proto = !0);
            return;
          }
          name2 = "$" + name2;
          var other = propHash[name2];
          if (other) {
            var redefinition;
            kind === "init" ? redefinition = this.strict && other.init || other.get || other.set : redefinition = other.init || other[kind], redefinition && this.raiseRecoverable(key2.start, "Redefinition of property");
          } else
            other = propHash[name2] = {
              init: !1,
              get: !1,
              set: !1
            };
          other[kind] = !0;
        }
      }, pp$52.parseExpression = function(forInit, refDestructuringErrors) {
        var startPos = this.start, startLoc = this.startLoc, expr = this.parseMaybeAssign(forInit, refDestructuringErrors);
        if (this.type === types$12.comma) {
          var node2 = this.startNodeAt(startPos, startLoc);
          for (node2.expressions = [expr]; this.eat(types$12.comma); )
            node2.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors));
          return this.finishNode(node2, "SequenceExpression");
        }
        return expr;
      }, pp$52.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {
        if (this.isContextual("yield")) {
          if (this.inGenerator)
            return this.parseYield(forInit);
          this.exprAllowed = !1;
        }
        var ownDestructuringErrors = !1, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;
        refDestructuringErrors ? (oldParenAssign = refDestructuringErrors.parenthesizedAssign, oldTrailingComma = refDestructuringErrors.trailingComma, oldDoubleProto = refDestructuringErrors.doubleProto, refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1) : (refDestructuringErrors = new DestructuringErrors3(), ownDestructuringErrors = !0);
        var startPos = this.start, startLoc = this.startLoc;
        (this.type === types$12.parenL || this.type === types$12.name) && (this.potentialArrowAt = this.start, this.potentialArrowInForAwait = forInit === "await");
        var left = this.parseMaybeConditional(forInit, refDestructuringErrors);
        if (afterLeftParse && (left = afterLeftParse.call(this, left, startPos, startLoc)), this.type.isAssign) {
          var node2 = this.startNodeAt(startPos, startLoc);
          return node2.operator = this.value, this.type === types$12.eq && (left = this.toAssignable(left, !1, refDestructuringErrors)), ownDestructuringErrors || (refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1), refDestructuringErrors.shorthandAssign >= left.start && (refDestructuringErrors.shorthandAssign = -1), this.type === types$12.eq ? this.checkLValPattern(left) : this.checkLValSimple(left), node2.left = left, this.next(), node2.right = this.parseMaybeAssign(forInit), oldDoubleProto > -1 && (refDestructuringErrors.doubleProto = oldDoubleProto), this.finishNode(node2, "AssignmentExpression");
        } else
          ownDestructuringErrors && this.checkExpressionErrors(refDestructuringErrors, !0);
        return oldParenAssign > -1 && (refDestructuringErrors.parenthesizedAssign = oldParenAssign), oldTrailingComma > -1 && (refDestructuringErrors.trailingComma = oldTrailingComma), left;
      }, pp$52.parseMaybeConditional = function(forInit, refDestructuringErrors) {
        var startPos = this.start, startLoc = this.startLoc, expr = this.parseExprOps(forInit, refDestructuringErrors);
        if (this.checkExpressionErrors(refDestructuringErrors))
          return expr;
        if (this.eat(types$12.question)) {
          var node2 = this.startNodeAt(startPos, startLoc);
          return node2.test = expr, node2.consequent = this.parseMaybeAssign(), this.expect(types$12.colon), node2.alternate = this.parseMaybeAssign(forInit), this.finishNode(node2, "ConditionalExpression");
        }
        return expr;
      }, pp$52.parseExprOps = function(forInit, refDestructuringErrors) {
        var startPos = this.start, startLoc = this.startLoc, expr = this.parseMaybeUnary(refDestructuringErrors, !1, !1, forInit);
        return this.checkExpressionErrors(refDestructuringErrors) || expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit);
      }, pp$52.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {
        var prec = this.type.binop;
        if (prec != null && (!forInit || this.type !== types$12._in) && prec > minPrec) {
          var logical = this.type === types$12.logicalOR || this.type === types$12.logicalAND, coalesce = this.type === types$12.coalesce;
          coalesce && (prec = types$12.logicalAND.binop);
          var op = this.value;
          this.next();
          var startPos = this.start, startLoc = this.startLoc, right = this.parseExprOp(this.parseMaybeUnary(null, !1, !1, forInit), startPos, startLoc, prec, forInit), node2 = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);
          return (logical && this.type === types$12.coalesce || coalesce && (this.type === types$12.logicalOR || this.type === types$12.logicalAND)) && this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"), this.parseExprOp(node2, leftStartPos, leftStartLoc, minPrec, forInit);
        }
        return left;
      }, pp$52.buildBinary = function(startPos, startLoc, left, right, op, logical) {
        right.type === "PrivateIdentifier" && this.raise(right.start, "Private identifier can only be left side of binary expression");
        var node2 = this.startNodeAt(startPos, startLoc);
        return node2.left = left, node2.operator = op, node2.right = right, this.finishNode(node2, logical ? "LogicalExpression" : "BinaryExpression");
      }, pp$52.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {
        var startPos = this.start, startLoc = this.startLoc, expr;
        if (this.isContextual("await") && this.canAwait)
          expr = this.parseAwait(forInit), sawUnary = !0;
        else if (this.type.prefix) {
          var node2 = this.startNode(), update = this.type === types$12.incDec;
          node2.operator = this.value, node2.prefix = !0, this.next(), node2.argument = this.parseMaybeUnary(null, !0, update, forInit), this.checkExpressionErrors(refDestructuringErrors, !0), update ? this.checkLValSimple(node2.argument) : this.strict && node2.operator === "delete" && isLocalVariableAccess2(node2.argument) ? this.raiseRecoverable(node2.start, "Deleting local variable in strict mode") : node2.operator === "delete" && isPrivateFieldAccess2(node2.argument) ? this.raiseRecoverable(node2.start, "Private fields can not be deleted") : sawUnary = !0, expr = this.finishNode(node2, update ? "UpdateExpression" : "UnaryExpression");
        } else if (!sawUnary && this.type === types$12.privateId)
          (forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields && this.unexpected(), expr = this.parsePrivateIdent(), this.type !== types$12._in && this.unexpected();
        else {
          if (expr = this.parseExprSubscripts(refDestructuringErrors, forInit), this.checkExpressionErrors(refDestructuringErrors))
            return expr;
          for (; this.type.postfix && !this.canInsertSemicolon(); ) {
            var node$1 = this.startNodeAt(startPos, startLoc);
            node$1.operator = this.value, node$1.prefix = !1, node$1.argument = expr, this.checkLValSimple(expr), this.next(), expr = this.finishNode(node$1, "UpdateExpression");
          }
        }
        if (!incDec && this.eat(types$12.starstar))
          if (sawUnary)
            this.unexpected(this.lastTokStart);
          else
            return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, !1, !1, forInit), "**", !1);
        else
          return expr;
      };
      function isLocalVariableAccess2(node2) {
        return node2.type === "Identifier" || node2.type === "ParenthesizedExpression" && isLocalVariableAccess2(node2.expression);
      }
      function isPrivateFieldAccess2(node2) {
        return node2.type === "MemberExpression" && node2.property.type === "PrivateIdentifier" || node2.type === "ChainExpression" && isPrivateFieldAccess2(node2.expression) || node2.type === "ParenthesizedExpression" && isPrivateFieldAccess2(node2.expression);
      }
      pp$52.parseExprSubscripts = function(refDestructuringErrors, forInit) {
        var startPos = this.start, startLoc = this.startLoc, expr = this.parseExprAtom(refDestructuringErrors, forInit);
        if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")")
          return expr;
        var result = this.parseSubscripts(expr, startPos, startLoc, !1, forInit);
        return refDestructuringErrors && result.type === "MemberExpression" && (refDestructuringErrors.parenthesizedAssign >= result.start && (refDestructuringErrors.parenthesizedAssign = -1), refDestructuringErrors.parenthesizedBind >= result.start && (refDestructuringErrors.parenthesizedBind = -1), refDestructuringErrors.trailingComma >= result.start && (refDestructuringErrors.trailingComma = -1)), result;
      }, pp$52.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {
        for (var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.potentialArrowAt === base.start, optionalChained = !1; ; ) {
          var element2 = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);
          if (element2.optional && (optionalChained = !0), element2 === base || element2.type === "ArrowFunctionExpression") {
            if (optionalChained) {
              var chainNode = this.startNodeAt(startPos, startLoc);
              chainNode.expression = element2, element2 = this.finishNode(chainNode, "ChainExpression");
            }
            return element2;
          }
          base = element2;
        }
      }, pp$52.shouldParseAsyncArrow = function() {
        return !this.canInsertSemicolon() && this.eat(types$12.arrow);
      }, pp$52.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {
        return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, !0, forInit);
      }, pp$52.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {
        var optionalSupported = this.options.ecmaVersion >= 11, optional = optionalSupported && this.eat(types$12.questionDot);
        noCalls && optional && this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions");
        var computed = this.eat(types$12.bracketL);
        if (computed || optional && this.type !== types$12.parenL && this.type !== types$12.backQuote || this.eat(types$12.dot)) {
          var node2 = this.startNodeAt(startPos, startLoc);
          node2.object = base, computed ? (node2.property = this.parseExpression(), this.expect(types$12.bracketR)) : this.type === types$12.privateId && base.type !== "Super" ? node2.property = this.parsePrivateIdent() : node2.property = this.parseIdent(this.options.allowReserved !== "never"), node2.computed = !!computed, optionalSupported && (node2.optional = optional), base = this.finishNode(node2, "MemberExpression");
        } else if (!noCalls && this.eat(types$12.parenL)) {
          var refDestructuringErrors = new DestructuringErrors3(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
          this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0;
          var exprList = this.parseExprList(types$12.parenR, this.options.ecmaVersion >= 8, !1, refDestructuringErrors);
          if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow())
            return this.checkPatternErrors(refDestructuringErrors, !1), this.checkYieldAwaitInDefaultParams(), this.awaitIdentPos > 0 && this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit);
          this.checkExpressionErrors(refDestructuringErrors, !0), this.yieldPos = oldYieldPos || this.yieldPos, this.awaitPos = oldAwaitPos || this.awaitPos, this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;
          var node$1 = this.startNodeAt(startPos, startLoc);
          node$1.callee = base, node$1.arguments = exprList, optionalSupported && (node$1.optional = optional), base = this.finishNode(node$1, "CallExpression");
        } else if (this.type === types$12.backQuote) {
          (optional || optionalChained) && this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions");
          var node$2 = this.startNodeAt(startPos, startLoc);
          node$2.tag = base, node$2.quasi = this.parseTemplate({ isTagged: !0 }), base = this.finishNode(node$2, "TaggedTemplateExpression");
        }
        return base;
      }, pp$52.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {
        this.type === types$12.slash && this.readRegexp();
        var node2, canBeArrow = this.potentialArrowAt === this.start;
        switch (this.type) {
          case types$12._super:
            return this.allowSuper || this.raise(this.start, "'super' keyword outside a method"), node2 = this.startNode(), this.next(), this.type === types$12.parenL && !this.allowDirectSuper && this.raise(node2.start, "super() call outside constructor of a subclass"), this.type !== types$12.dot && this.type !== types$12.bracketL && this.type !== types$12.parenL && this.unexpected(), this.finishNode(node2, "Super");
          case types$12._this:
            return node2 = this.startNode(), this.next(), this.finishNode(node2, "ThisExpression");
          case types$12.name:
            var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc, id = this.parseIdent(!1);
            if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types$12._function))
              return this.overrideContext(types2.f_expr), this.parseFunction(this.startNodeAt(startPos, startLoc), 0, !1, !0, forInit);
            if (canBeArrow && !this.canInsertSemicolon()) {
              if (this.eat(types$12.arrow))
                return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], !1, forInit);
              if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types$12.name && !containsEsc && (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc))
                return id = this.parseIdent(!1), (this.canInsertSemicolon() || !this.eat(types$12.arrow)) && this.unexpected(), this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], !0, forInit);
            }
            return id;
          case types$12.regexp:
            var value = this.value;
            return node2 = this.parseLiteral(value.value), node2.regex = { pattern: value.pattern, flags: value.flags }, node2;
          case types$12.num:
          case types$12.string:
            return this.parseLiteral(this.value);
          case types$12._null:
          case types$12._true:
          case types$12._false:
            return node2 = this.startNode(), node2.value = this.type === types$12._null ? null : this.type === types$12._true, node2.raw = this.type.keyword, this.next(), this.finishNode(node2, "Literal");
          case types$12.parenL:
            var start2 = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);
            return refDestructuringErrors && (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr) && (refDestructuringErrors.parenthesizedAssign = start2), refDestructuringErrors.parenthesizedBind < 0 && (refDestructuringErrors.parenthesizedBind = start2)), expr;
          case types$12.bracketL:
            return node2 = this.startNode(), this.next(), node2.elements = this.parseExprList(types$12.bracketR, !0, !0, refDestructuringErrors), this.finishNode(node2, "ArrayExpression");
          case types$12.braceL:
            return this.overrideContext(types2.b_expr), this.parseObj(!1, refDestructuringErrors);
          case types$12._function:
            return node2 = this.startNode(), this.next(), this.parseFunction(node2, 0);
          case types$12._class:
            return this.parseClass(this.startNode(), !1);
          case types$12._new:
            return this.parseNew();
          case types$12.backQuote:
            return this.parseTemplate();
          case types$12._import:
            return this.options.ecmaVersion >= 11 ? this.parseExprImport(forNew) : this.unexpected();
          default:
            return this.parseExprAtomDefault();
        }
      }, pp$52.parseExprAtomDefault = function() {
        this.unexpected();
      }, pp$52.parseExprImport = function(forNew) {
        var node2 = this.startNode();
        if (this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword import"), this.next(), this.type === types$12.parenL && !forNew)
          return this.parseDynamicImport(node2);
        if (this.type === types$12.dot) {
          var meta = this.startNodeAt(node2.start, node2.loc && node2.loc.start);
          return meta.name = "import", node2.meta = this.finishNode(meta, "Identifier"), this.parseImportMeta(node2);
        } else
          this.unexpected();
      }, pp$52.parseDynamicImport = function(node2) {
        if (this.next(), node2.source = this.parseMaybeAssign(), this.options.ecmaVersion >= 16)
          this.eat(types$12.parenR) ? node2.options = null : (this.expect(types$12.comma), this.afterTrailingComma(types$12.parenR) ? node2.options = null : (node2.options = this.parseMaybeAssign(), this.eat(types$12.parenR) || (this.expect(types$12.comma), this.afterTrailingComma(types$12.parenR) || this.unexpected())));
        else if (!this.eat(types$12.parenR)) {
          var errorPos = this.start;
          this.eat(types$12.comma) && this.eat(types$12.parenR) ? this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()") : this.unexpected(errorPos);
        }
        return this.finishNode(node2, "ImportExpression");
      }, pp$52.parseImportMeta = function(node2) {
        this.next();
        var containsEsc = this.containsEsc;
        return node2.property = this.parseIdent(!0), node2.property.name !== "meta" && this.raiseRecoverable(node2.property.start, "The only valid meta property for import is 'import.meta'"), containsEsc && this.raiseRecoverable(node2.start, "'import.meta' must not contain escaped characters"), this.options.sourceType !== "module" && !this.options.allowImportExportEverywhere && this.raiseRecoverable(node2.start, "Cannot use 'import.meta' outside a module"), this.finishNode(node2, "MetaProperty");
      }, pp$52.parseLiteral = function(value) {
        var node2 = this.startNode();
        return node2.value = value, node2.raw = this.input.slice(this.start, this.end), node2.raw.charCodeAt(node2.raw.length - 1) === 110 && (node2.bigint = node2.value != null ? node2.value.toString() : node2.raw.slice(0, -1).replace(/_/g, "")), this.next(), this.finishNode(node2, "Literal");
      }, pp$52.parseParenExpression = function() {
        this.expect(types$12.parenL);
        var val = this.parseExpression();
        return this.expect(types$12.parenR), val;
      }, pp$52.shouldParseArrow = function(exprList) {
        return !this.canInsertSemicolon();
      }, pp$52.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {
        var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;
        if (this.options.ecmaVersion >= 6) {
          this.next();
          var innerStartPos = this.start, innerStartLoc = this.startLoc, exprList = [], first = !0, lastIsComma = !1, refDestructuringErrors = new DestructuringErrors3(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;
          for (this.yieldPos = 0, this.awaitPos = 0; this.type !== types$12.parenR; )
            if (first ? first = !1 : this.expect(types$12.comma), allowTrailingComma && this.afterTrailingComma(types$12.parenR, !0)) {
              lastIsComma = !0;
              break;
            } else if (this.type === types$12.ellipsis) {
              spreadStart = this.start, exprList.push(this.parseParenItem(this.parseRestBinding())), this.type === types$12.comma && this.raiseRecoverable(
                this.start,
                "Comma is not permitted after the rest element"
              );
              break;
            } else
              exprList.push(this.parseMaybeAssign(!1, refDestructuringErrors, this.parseParenItem));
          var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;
          if (this.expect(types$12.parenR), canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$12.arrow))
            return this.checkPatternErrors(refDestructuringErrors, !1), this.checkYieldAwaitInDefaultParams(), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.parseParenArrowList(startPos, startLoc, exprList, forInit);
          (!exprList.length || lastIsComma) && this.unexpected(this.lastTokStart), spreadStart && this.unexpected(spreadStart), this.checkExpressionErrors(refDestructuringErrors, !0), this.yieldPos = oldYieldPos || this.yieldPos, this.awaitPos = oldAwaitPos || this.awaitPos, exprList.length > 1 ? (val = this.startNodeAt(innerStartPos, innerStartLoc), val.expressions = exprList, this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc)) : val = exprList[0];
        } else
          val = this.parseParenExpression();
        if (this.options.preserveParens) {
          var par = this.startNodeAt(startPos, startLoc);
          return par.expression = val, this.finishNode(par, "ParenthesizedExpression");
        } else
          return val;
      }, pp$52.parseParenItem = function(item) {
        return item;
      }, pp$52.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {
        return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, !1, forInit);
      };
      var empty4 = [];
      pp$52.parseNew = function() {
        this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword new");
        var node2 = this.startNode();
        if (this.next(), this.options.ecmaVersion >= 6 && this.type === types$12.dot) {
          var meta = this.startNodeAt(node2.start, node2.loc && node2.loc.start);
          meta.name = "new", node2.meta = this.finishNode(meta, "Identifier"), this.next();
          var containsEsc = this.containsEsc;
          return node2.property = this.parseIdent(!0), node2.property.name !== "target" && this.raiseRecoverable(node2.property.start, "The only valid meta property for new is 'new.target'"), containsEsc && this.raiseRecoverable(node2.start, "'new.target' must not contain escaped characters"), this.allowNewDotTarget || this.raiseRecoverable(node2.start, "'new.target' can only be used in functions and class static block"), this.finishNode(node2, "MetaProperty");
        }
        var startPos = this.start, startLoc = this.startLoc;
        return node2.callee = this.parseSubscripts(this.parseExprAtom(null, !1, !0), startPos, startLoc, !0, !1), this.eat(types$12.parenL) ? node2.arguments = this.parseExprList(types$12.parenR, this.options.ecmaVersion >= 8, !1) : node2.arguments = empty4, this.finishNode(node2, "NewExpression");
      }, pp$52.parseTemplateElement = function(ref3) {
        var isTagged = ref3.isTagged, elem = this.startNode();
        return this.type === types$12.invalidTemplate ? (isTagged || this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"), elem.value = {
          raw: this.value.replace(/\r\n?/g, `
`),
          cooked: null
        }) : elem.value = {
          raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, `
`),
          cooked: this.value
        }, this.next(), elem.tail = this.type === types$12.backQuote, this.finishNode(elem, "TemplateElement");
      }, pp$52.parseTemplate = function(ref3) {
        ref3 === void 0 && (ref3 = {});
        var isTagged = ref3.isTagged;
        isTagged === void 0 && (isTagged = !1);
        var node2 = this.startNode();
        this.next(), node2.expressions = [];
        var curElt = this.parseTemplateElement({ isTagged });
        for (node2.quasis = [curElt]; !curElt.tail; )
          this.type === types$12.eof && this.raise(this.pos, "Unterminated template literal"), this.expect(types$12.dollarBraceL), node2.expressions.push(this.parseExpression()), this.expect(types$12.braceR), node2.quasis.push(curElt = this.parseTemplateElement({ isTagged }));
        return this.next(), this.finishNode(node2, "TemplateLiteral");
      }, pp$52.isAsyncProp = function(prop) {
        return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && (this.type === types$12.name || this.type === types$12.num || this.type === types$12.string || this.type === types$12.bracketL || this.type.keyword || this.options.ecmaVersion >= 9 && this.type === types$12.star) && !lineBreak2.test(this.input.slice(this.lastTokEnd, this.start));
      }, pp$52.parseObj = function(isPattern, refDestructuringErrors) {
        var node2 = this.startNode(), first = !0, propHash = {};
        for (node2.properties = [], this.next(); !this.eat(types$12.braceR); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$12.braceR))
            break;
          var prop = this.parseProperty(isPattern, refDestructuringErrors);
          isPattern || this.checkPropClash(prop, propHash, refDestructuringErrors), node2.properties.push(prop);
        }
        return this.finishNode(node2, isPattern ? "ObjectPattern" : "ObjectExpression");
      }, pp$52.parseProperty = function(isPattern, refDestructuringErrors) {
        var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;
        if (this.options.ecmaVersion >= 9 && this.eat(types$12.ellipsis))
          return isPattern ? (prop.argument = this.parseIdent(!1), this.type === types$12.comma && this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"), this.finishNode(prop, "RestElement")) : (prop.argument = this.parseMaybeAssign(!1, refDestructuringErrors), this.type === types$12.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0 && (refDestructuringErrors.trailingComma = this.start), this.finishNode(prop, "SpreadElement"));
        this.options.ecmaVersion >= 6 && (prop.method = !1, prop.shorthand = !1, (isPattern || refDestructuringErrors) && (startPos = this.start, startLoc = this.startLoc), isPattern || (isGenerator = this.eat(types$12.star)));
        var containsEsc = this.containsEsc;
        return this.parsePropertyName(prop), !isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop) ? (isAsync = !0, isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$12.star), this.parsePropertyName(prop)) : isAsync = !1, this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc), this.finishNode(prop, "Property");
      }, pp$52.parseGetterSetter = function(prop) {
        var kind = prop.key.name;
        this.parsePropertyName(prop), prop.value = this.parseMethod(!1), prop.kind = kind;
        var paramCount = prop.kind === "get" ? 0 : 1;
        if (prop.value.params.length !== paramCount) {
          var start2 = prop.value.start;
          prop.kind === "get" ? this.raiseRecoverable(start2, "getter should have no params") : this.raiseRecoverable(start2, "setter should have exactly one param");
        } else
          prop.kind === "set" && prop.value.params[0].type === "RestElement" && this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params");
      }, pp$52.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {
        (isGenerator || isAsync) && this.type === types$12.colon && this.unexpected(), this.eat(types$12.colon) ? (prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(!1, refDestructuringErrors), prop.kind = "init") : this.options.ecmaVersion >= 6 && this.type === types$12.parenL ? (isPattern && this.unexpected(), prop.method = !0, prop.value = this.parseMethod(isGenerator, isAsync), prop.kind = "init") : !isPattern && !containsEsc && this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && this.type !== types$12.comma && this.type !== types$12.braceR && this.type !== types$12.eq ? ((isGenerator || isAsync) && this.unexpected(), this.parseGetterSetter(prop)) : this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier" ? ((isGenerator || isAsync) && this.unexpected(), this.checkUnreserved(prop.key), prop.key.name === "await" && !this.awaitIdentPos && (this.awaitIdentPos = startPos), isPattern ? prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)) : this.type === types$12.eq && refDestructuringErrors ? (refDestructuringErrors.shorthandAssign < 0 && (refDestructuringErrors.shorthandAssign = this.start), prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key))) : prop.value = this.copyNode(prop.key), prop.kind = "init", prop.shorthand = !0) : this.unexpected();
      }, pp$52.parsePropertyName = function(prop) {
        if (this.options.ecmaVersion >= 6) {
          if (this.eat(types$12.bracketL))
            return prop.computed = !0, prop.key = this.parseMaybeAssign(), this.expect(types$12.bracketR), prop.key;
          prop.computed = !1;
        }
        return prop.key = this.type === types$12.num || this.type === types$12.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never");
      }, pp$52.initFunction = function(node2) {
        node2.id = null, this.options.ecmaVersion >= 6 && (node2.generator = node2.expression = !1), this.options.ecmaVersion >= 8 && (node2.async = !1);
      }, pp$52.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {
        var node2 = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
        return this.initFunction(node2), this.options.ecmaVersion >= 6 && (node2.generator = isGenerator), this.options.ecmaVersion >= 8 && (node2.async = !!isAsync), this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, this.enterScope(functionFlags2(isAsync, node2.generator) | SCOPE_SUPER2 | (allowDirectSuper ? SCOPE_DIRECT_SUPER2 : 0)), this.expect(types$12.parenL), node2.params = this.parseBindingList(types$12.parenR, !1, this.options.ecmaVersion >= 8), this.checkYieldAwaitInDefaultParams(), this.parseFunctionBody(node2, !1, !0, !1), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.finishNode(node2, "FunctionExpression");
      }, pp$52.parseArrowExpression = function(node2, params, isAsync, forInit) {
        var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
        return this.enterScope(functionFlags2(isAsync, !1) | SCOPE_ARROW2), this.initFunction(node2), this.options.ecmaVersion >= 8 && (node2.async = !!isAsync), this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, node2.params = this.toAssignableList(params, !0), this.parseFunctionBody(node2, !0, !1, forInit), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.finishNode(node2, "ArrowFunctionExpression");
      }, pp$52.parseFunctionBody = function(node2, isArrowFunction, isMethod, forInit) {
        var isExpression = isArrowFunction && this.type !== types$12.braceL, oldStrict = this.strict, useStrict = !1;
        if (isExpression)
          node2.body = this.parseMaybeAssign(forInit), node2.expression = !0, this.checkParams(node2, !1);
        else {
          var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node2.params);
          (!oldStrict || nonSimple) && (useStrict = this.strictDirective(this.end), useStrict && nonSimple && this.raiseRecoverable(node2.start, "Illegal 'use strict' directive in function with non-simple parameter list"));
          var oldLabels = this.labels;
          this.labels = [], useStrict && (this.strict = !0), this.checkParams(node2, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node2.params)), this.strict && node2.id && this.checkLValSimple(node2.id, BIND_OUTSIDE2), node2.body = this.parseBlock(!1, void 0, useStrict && !oldStrict), node2.expression = !1, this.adaptDirectivePrologue(node2.body.body), this.labels = oldLabels;
        }
        this.exitScope();
      }, pp$52.isSimpleParamList = function(params) {
        for (var i2 = 0, list4 = params; i2 < list4.length; i2 += 1) {
          var param = list4[i2];
          if (param.type !== "Identifier")
            return !1;
        }
        return !0;
      }, pp$52.checkParams = function(node2, allowDuplicates) {
        for (var nameHash = /* @__PURE__ */ Object.create(null), i2 = 0, list4 = node2.params; i2 < list4.length; i2 += 1) {
          var param = list4[i2];
          this.checkLValInnerPattern(param, BIND_VAR2, allowDuplicates ? null : nameHash);
        }
      }, pp$52.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {
        for (var elts = [], first = !0; !this.eat(close); ) {
          if (first)
            first = !1;
          else if (this.expect(types$12.comma), allowTrailingComma && this.afterTrailingComma(close))
            break;
          var elt = void 0;
          allowEmpty && this.type === types$12.comma ? elt = null : this.type === types$12.ellipsis ? (elt = this.parseSpread(refDestructuringErrors), refDestructuringErrors && this.type === types$12.comma && refDestructuringErrors.trailingComma < 0 && (refDestructuringErrors.trailingComma = this.start)) : elt = this.parseMaybeAssign(!1, refDestructuringErrors), elts.push(elt);
        }
        return elts;
      }, pp$52.checkUnreserved = function(ref3) {
        var start2 = ref3.start, end = ref3.end, name2 = ref3.name;
        if (this.inGenerator && name2 === "yield" && this.raiseRecoverable(start2, "Cannot use 'yield' as identifier inside a generator"), this.inAsync && name2 === "await" && this.raiseRecoverable(start2, "Cannot use 'await' as identifier inside an async function"), !(this.currentThisScope().flags & SCOPE_VAR2) && name2 === "arguments" && this.raiseRecoverable(start2, "Cannot use 'arguments' in class field initializer"), this.inClassStaticBlock && (name2 === "arguments" || name2 === "await") && this.raise(start2, "Cannot use " + name2 + " in class static initialization block"), this.keywords.test(name2) && this.raise(start2, "Unexpected keyword '" + name2 + "'"), !(this.options.ecmaVersion < 6 && this.input.slice(start2, end).indexOf("\\") !== -1)) {
          var re2 = this.strict ? this.reservedWordsStrict : this.reservedWords;
          re2.test(name2) && (!this.inAsync && name2 === "await" && this.raiseRecoverable(start2, "Cannot use keyword 'await' outside an async function"), this.raiseRecoverable(start2, "The keyword '" + name2 + "' is reserved"));
        }
      }, pp$52.parseIdent = function(liberal) {
        var node2 = this.parseIdentNode();
        return this.next(!!liberal), this.finishNode(node2, "Identifier"), liberal || (this.checkUnreserved(node2), node2.name === "await" && !this.awaitIdentPos && (this.awaitIdentPos = node2.start)), node2;
      }, pp$52.parseIdentNode = function() {
        var node2 = this.startNode();
        return this.type === types$12.name ? node2.name = this.value : this.type.keyword ? (node2.name = this.type.keyword, (node2.name === "class" || node2.name === "function") && (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46) && this.context.pop(), this.type = types$12.name) : this.unexpected(), node2;
      }, pp$52.parsePrivateIdent = function() {
        var node2 = this.startNode();
        return this.type === types$12.privateId ? node2.name = this.value : this.unexpected(), this.next(), this.finishNode(node2, "PrivateIdentifier"), this.options.checkPrivateFields && (this.privateNameStack.length === 0 ? this.raise(node2.start, "Private field '#" + node2.name + "' must be declared in an enclosing class") : this.privateNameStack[this.privateNameStack.length - 1].used.push(node2)), node2;
      }, pp$52.parseYield = function(forInit) {
        this.yieldPos || (this.yieldPos = this.start);
        var node2 = this.startNode();
        return this.next(), this.type === types$12.semi || this.canInsertSemicolon() || this.type !== types$12.star && !this.type.startsExpr ? (node2.delegate = !1, node2.argument = null) : (node2.delegate = this.eat(types$12.star), node2.argument = this.parseMaybeAssign(forInit)), this.finishNode(node2, "YieldExpression");
      }, pp$52.parseAwait = function(forInit) {
        this.awaitPos || (this.awaitPos = this.start);
        var node2 = this.startNode();
        return this.next(), node2.argument = this.parseMaybeUnary(null, !0, !1, forInit), this.finishNode(node2, "AwaitExpression");
      };
      var pp$42 = Parser3.prototype;
      pp$42.raise = function(pos, message) {
        var loc = getLineInfo2(this.input, pos);
        message += " (" + loc.line + ":" + loc.column + ")", this.sourceFile && (message += " in " + this.sourceFile);
        var err = new SyntaxError(message);
        throw err.pos = pos, err.loc = loc, err.raisedAt = this.pos, err;
      }, pp$42.raiseRecoverable = pp$42.raise, pp$42.curPosition = function() {
        if (this.options.locations)
          return new Position3(this.curLine, this.pos - this.lineStart);
      };
      var pp$32 = Parser3.prototype, Scope3 = function(flags) {
        this.flags = flags, this.var = [], this.lexical = [], this.functions = [];
      };
      pp$32.enterScope = function(flags) {
        this.scopeStack.push(new Scope3(flags));
      }, pp$32.exitScope = function() {
        this.scopeStack.pop();
      }, pp$32.treatFunctionsAsVarInScope = function(scope) {
        return scope.flags & SCOPE_FUNCTION2 || !this.inModule && scope.flags & SCOPE_TOP2;
      }, pp$32.declareName = function(name2, bindingType, pos) {
        var redeclared = !1;
        if (bindingType === BIND_LEXICAL2) {
          var scope = this.currentScope();
          redeclared = scope.lexical.indexOf(name2) > -1 || scope.functions.indexOf(name2) > -1 || scope.var.indexOf(name2) > -1, scope.lexical.push(name2), this.inModule && scope.flags & SCOPE_TOP2 && delete this.undefinedExports[name2];
        } else if (bindingType === BIND_SIMPLE_CATCH2) {
          var scope$1 = this.currentScope();
          scope$1.lexical.push(name2);
        } else if (bindingType === BIND_FUNCTION2) {
          var scope$2 = this.currentScope();
          this.treatFunctionsAsVar ? redeclared = scope$2.lexical.indexOf(name2) > -1 : redeclared = scope$2.lexical.indexOf(name2) > -1 || scope$2.var.indexOf(name2) > -1, scope$2.functions.push(name2);
        } else
          for (var i2 = this.scopeStack.length - 1; i2 >= 0; --i2) {
            var scope$3 = this.scopeStack[i2];
            if (scope$3.lexical.indexOf(name2) > -1 && !(scope$3.flags & SCOPE_SIMPLE_CATCH2 && scope$3.lexical[0] === name2) || !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name2) > -1) {
              redeclared = !0;
              break;
            }
            if (scope$3.var.push(name2), this.inModule && scope$3.flags & SCOPE_TOP2 && delete this.undefinedExports[name2], scope$3.flags & SCOPE_VAR2)
              break;
          }
        redeclared && this.raiseRecoverable(pos, "Identifier '" + name2 + "' has already been declared");
      }, pp$32.checkLocalExport = function(id) {
        this.scopeStack[0].lexical.indexOf(id.name) === -1 && this.scopeStack[0].var.indexOf(id.name) === -1 && (this.undefinedExports[id.name] = id);
      }, pp$32.currentScope = function() {
        return this.scopeStack[this.scopeStack.length - 1];
      }, pp$32.currentVarScope = function() {
        for (var i2 = this.scopeStack.length - 1; ; i2--) {
          var scope = this.scopeStack[i2];
          if (scope.flags & (SCOPE_VAR2 | SCOPE_CLASS_FIELD_INIT2 | SCOPE_CLASS_STATIC_BLOCK2))
            return scope;
        }
      }, pp$32.currentThisScope = function() {
        for (var i2 = this.scopeStack.length - 1; ; i2--) {
          var scope = this.scopeStack[i2];
          if (scope.flags & (SCOPE_VAR2 | SCOPE_CLASS_FIELD_INIT2 | SCOPE_CLASS_STATIC_BLOCK2) && !(scope.flags & SCOPE_ARROW2))
            return scope;
        }
      };
      var Node3 = function(parser, pos, loc) {
        this.type = "", this.start = pos, this.end = 0, parser.options.locations && (this.loc = new SourceLocation3(parser, loc)), parser.options.directSourceFile && (this.sourceFile = parser.options.directSourceFile), parser.options.ranges && (this.range = [pos, 0]);
      }, pp$22 = Parser3.prototype;
      pp$22.startNode = function() {
        return new Node3(this, this.start, this.startLoc);
      }, pp$22.startNodeAt = function(pos, loc) {
        return new Node3(this, pos, loc);
      };
      function finishNodeAt2(node2, type, pos, loc) {
        return node2.type = type, node2.end = pos, this.options.locations && (node2.loc.end = loc), this.options.ranges && (node2.range[1] = pos), node2;
      }
      pp$22.finishNode = function(node2, type) {
        return finishNodeAt2.call(this, node2, type, this.lastTokEnd, this.lastTokEndLoc);
      }, pp$22.finishNodeAt = function(node2, type, pos, loc) {
        return finishNodeAt2.call(this, node2, type, pos, loc);
      }, pp$22.copyNode = function(node2) {
        var newNode = new Node3(this, node2.start, this.startLoc);
        for (var prop in node2)
          newNode[prop] = node2[prop];
        return newNode;
      };
      var scriptValuesAddedInUnicode2 = "Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz", ecma9BinaryProperties2 = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS", ecma10BinaryProperties2 = ecma9BinaryProperties2 + " Extended_Pictographic", ecma11BinaryProperties2 = ecma10BinaryProperties2, ecma12BinaryProperties2 = ecma11BinaryProperties2 + " EBase EComp EMod EPres ExtPict", ecma13BinaryProperties2 = ecma12BinaryProperties2, ecma14BinaryProperties2 = ecma13BinaryProperties2, unicodeBinaryProperties2 = {
        9: ecma9BinaryProperties2,
        10: ecma10BinaryProperties2,
        11: ecma11BinaryProperties2,
        12: ecma12BinaryProperties2,
        13: ecma13BinaryProperties2,
        14: ecma14BinaryProperties2
      }, ecma14BinaryPropertiesOfStrings2 = "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji", unicodeBinaryPropertiesOfStrings2 = {
        9: "",
        10: "",
        11: "",
        12: "",
        13: "",
        14: ecma14BinaryPropertiesOfStrings2
      }, unicodeGeneralCategoryValues2 = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu", ecma9ScriptValues2 = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb", ecma10ScriptValues2 = ecma9ScriptValues2 + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd", ecma11ScriptValues2 = ecma10ScriptValues2 + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho", ecma12ScriptValues2 = ecma11ScriptValues2 + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", ecma13ScriptValues2 = ecma12ScriptValues2 + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith", ecma14ScriptValues2 = ecma13ScriptValues2 + " " + scriptValuesAddedInUnicode2, unicodeScriptValues2 = {
        9: ecma9ScriptValues2,
        10: ecma10ScriptValues2,
        11: ecma11ScriptValues2,
        12: ecma12ScriptValues2,
        13: ecma13ScriptValues2,
        14: ecma14ScriptValues2
      }, data2 = {};
      function buildUnicodeData2(ecmaVersion2) {
        var d = data2[ecmaVersion2] = {
          binary: wordsRegexp2(unicodeBinaryProperties2[ecmaVersion2] + " " + unicodeGeneralCategoryValues2),
          binaryOfStrings: wordsRegexp2(unicodeBinaryPropertiesOfStrings2[ecmaVersion2]),
          nonBinary: {
            General_Category: wordsRegexp2(unicodeGeneralCategoryValues2),
            Script: wordsRegexp2(unicodeScriptValues2[ecmaVersion2])
          }
        };
        d.nonBinary.Script_Extensions = d.nonBinary.Script, d.nonBinary.gc = d.nonBinary.General_Category, d.nonBinary.sc = d.nonBinary.Script, d.nonBinary.scx = d.nonBinary.Script_Extensions;
      }
      for (var i = 0, list3 = [9, 10, 11, 12, 13, 14]; i < list3.length; i += 1) {
        var ecmaVersion = list3[i];
        buildUnicodeData2(ecmaVersion);
      }
      var pp$12 = Parser3.prototype, BranchID3 = function(parent, base) {
        this.parent = parent, this.base = base || this;
      };
      BranchID3.prototype.separatedFrom = function(alt) {
        for (var self2 = this; self2; self2 = self2.parent)
          for (var other = alt; other; other = other.parent)
            if (self2.base === other.base && self2 !== other)
              return !0;
        return !1;
      }, BranchID3.prototype.sibling = function() {
        return new BranchID3(this.parent, this.base);
      };
      var RegExpValidationState3 = function(parser) {
        this.parser = parser, this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""), this.unicodeProperties = data2[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion], this.source = "", this.flags = "", this.start = 0, this.switchU = !1, this.switchV = !1, this.switchN = !1, this.pos = 0, this.lastIntValue = 0, this.lastStringValue = "", this.lastAssertionIsQuantifiable = !1, this.numCapturingParens = 0, this.maxBackReference = 0, this.groupNames = /* @__PURE__ */ Object.create(null), this.backReferenceNames = [], this.branchID = null;
      };
      RegExpValidationState3.prototype.reset = function(start2, pattern, flags) {
        var unicodeSets = flags.indexOf("v") !== -1, unicode = flags.indexOf("u") !== -1;
        this.start = start2 | 0, this.source = pattern + "", this.flags = flags, unicodeSets && this.parser.options.ecmaVersion >= 15 ? (this.switchU = !0, this.switchV = !0, this.switchN = !0) : (this.switchU = unicode && this.parser.options.ecmaVersion >= 6, this.switchV = !1, this.switchN = unicode && this.parser.options.ecmaVersion >= 9);
      }, RegExpValidationState3.prototype.raise = function(message) {
        this.parser.raiseRecoverable(this.start, "Invalid regular expression: /" + this.source + "/: " + message);
      }, RegExpValidationState3.prototype.at = function(i2, forceU) {
        forceU === void 0 && (forceU = !1);
        var s = this.source, l = s.length;
        if (i2 >= l)
          return -1;
        var c = s.charCodeAt(i2);
        if (!(forceU || this.switchU) || c <= 55295 || c >= 57344 || i2 + 1 >= l)
          return c;
        var next = s.charCodeAt(i2 + 1);
        return next >= 56320 && next <= 57343 ? (c << 10) + next - 56613888 : c;
      }, RegExpValidationState3.prototype.nextIndex = function(i2, forceU) {
        forceU === void 0 && (forceU = !1);
        var s = this.source, l = s.length;
        if (i2 >= l)
          return l;
        var c = s.charCodeAt(i2), next;
        return !(forceU || this.switchU) || c <= 55295 || c >= 57344 || i2 + 1 >= l || (next = s.charCodeAt(i2 + 1)) < 56320 || next > 57343 ? i2 + 1 : i2 + 2;
      }, RegExpValidationState3.prototype.current = function(forceU) {
        return forceU === void 0 && (forceU = !1), this.at(this.pos, forceU);
      }, RegExpValidationState3.prototype.lookahead = function(forceU) {
        return forceU === void 0 && (forceU = !1), this.at(this.nextIndex(this.pos, forceU), forceU);
      }, RegExpValidationState3.prototype.advance = function(forceU) {
        forceU === void 0 && (forceU = !1), this.pos = this.nextIndex(this.pos, forceU);
      }, RegExpValidationState3.prototype.eat = function(ch, forceU) {
        return forceU === void 0 && (forceU = !1), this.current(forceU) === ch ? (this.advance(forceU), !0) : !1;
      }, RegExpValidationState3.prototype.eatChars = function(chs, forceU) {
        forceU === void 0 && (forceU = !1);
        for (var pos = this.pos, i2 = 0, list4 = chs; i2 < list4.length; i2 += 1) {
          var ch = list4[i2], current2 = this.at(pos, forceU);
          if (current2 === -1 || current2 !== ch)
            return !1;
          pos = this.nextIndex(pos, forceU);
        }
        return this.pos = pos, !0;
      }, pp$12.validateRegExpFlags = function(state) {
        for (var validFlags = state.validFlags, flags = state.flags, u = !1, v = !1, i2 = 0; i2 < flags.length; i2++) {
          var flag = flags.charAt(i2);
          validFlags.indexOf(flag) === -1 && this.raise(state.start, "Invalid regular expression flag"), flags.indexOf(flag, i2 + 1) > -1 && this.raise(state.start, "Duplicate regular expression flag"), flag === "u" && (u = !0), flag === "v" && (v = !0);
        }
        this.options.ecmaVersion >= 15 && u && v && this.raise(state.start, "Invalid regular expression flag");
      };
      function hasProp2(obj) {
        for (var _ in obj)
          return !0;
        return !1;
      }
      pp$12.validateRegExpPattern = function(state) {
        this.regexp_pattern(state), !state.switchN && this.options.ecmaVersion >= 9 && hasProp2(state.groupNames) && (state.switchN = !0, this.regexp_pattern(state));
      }, pp$12.regexp_pattern = function(state) {
        state.pos = 0, state.lastIntValue = 0, state.lastStringValue = "", state.lastAssertionIsQuantifiable = !1, state.numCapturingParens = 0, state.maxBackReference = 0, state.groupNames = /* @__PURE__ */ Object.create(null), state.backReferenceNames.length = 0, state.branchID = null, this.regexp_disjunction(state), state.pos !== state.source.length && (state.eat(
          41
          /* ) */
        ) && state.raise("Unmatched ')'"), (state.eat(
          93
          /* ] */
        ) || state.eat(
          125
          /* } */
        )) && state.raise("Lone quantifier brackets")), state.maxBackReference > state.numCapturingParens && state.raise("Invalid escape");
        for (var i2 = 0, list4 = state.backReferenceNames; i2 < list4.length; i2 += 1) {
          var name2 = list4[i2];
          state.groupNames[name2] || state.raise("Invalid named capture referenced");
        }
      }, pp$12.regexp_disjunction = function(state) {
        var trackDisjunction = this.options.ecmaVersion >= 16;
        for (trackDisjunction && (state.branchID = new BranchID3(state.branchID, null)), this.regexp_alternative(state); state.eat(
          124
          /* | */
        ); )
          trackDisjunction && (state.branchID = state.branchID.sibling()), this.regexp_alternative(state);
        trackDisjunction && (state.branchID = state.branchID.parent), this.regexp_eatQuantifier(state, !0) && state.raise("Nothing to repeat"), state.eat(
          123
          /* { */
        ) && state.raise("Lone quantifier brackets");
      }, pp$12.regexp_alternative = function(state) {
        for (; state.pos < state.source.length && this.regexp_eatTerm(state); )
          ;
      }, pp$12.regexp_eatTerm = function(state) {
        return this.regexp_eatAssertion(state) ? (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state) && state.switchU && state.raise("Invalid quantifier"), !0) : (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) ? (this.regexp_eatQuantifier(state), !0) : !1;
      }, pp$12.regexp_eatAssertion = function(state) {
        var start2 = state.pos;
        if (state.lastAssertionIsQuantifiable = !1, state.eat(
          94
          /* ^ */
        ) || state.eat(
          36
          /* $ */
        ))
          return !0;
        if (state.eat(
          92
          /* \ */
        )) {
          if (state.eat(
            66
            /* B */
          ) || state.eat(
            98
            /* b */
          ))
            return !0;
          state.pos = start2;
        }
        if (state.eat(
          40
          /* ( */
        ) && state.eat(
          63
          /* ? */
        )) {
          var lookbehind = !1;
          if (this.options.ecmaVersion >= 9 && (lookbehind = state.eat(
            60
            /* < */
          )), state.eat(
            61
            /* = */
          ) || state.eat(
            33
            /* ! */
          ))
            return this.regexp_disjunction(state), state.eat(
              41
              /* ) */
            ) || state.raise("Unterminated group"), state.lastAssertionIsQuantifiable = !lookbehind, !0;
        }
        return state.pos = start2, !1;
      }, pp$12.regexp_eatQuantifier = function(state, noError) {
        return noError === void 0 && (noError = !1), this.regexp_eatQuantifierPrefix(state, noError) ? (state.eat(
          63
          /* ? */
        ), !0) : !1;
      }, pp$12.regexp_eatQuantifierPrefix = function(state, noError) {
        return state.eat(
          42
          /* * */
        ) || state.eat(
          43
          /* + */
        ) || state.eat(
          63
          /* ? */
        ) || this.regexp_eatBracedQuantifier(state, noError);
      }, pp$12.regexp_eatBracedQuantifier = function(state, noError) {
        var start2 = state.pos;
        if (state.eat(
          123
          /* { */
        )) {
          var min = 0, max = -1;
          if (this.regexp_eatDecimalDigits(state) && (min = state.lastIntValue, state.eat(
            44
            /* , */
          ) && this.regexp_eatDecimalDigits(state) && (max = state.lastIntValue), state.eat(
            125
            /* } */
          )))
            return max !== -1 && max < min && !noError && state.raise("numbers out of order in {} quantifier"), !0;
          state.switchU && !noError && state.raise("Incomplete quantifier"), state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatAtom = function(state) {
        return this.regexp_eatPatternCharacters(state) || state.eat(
          46
          /* . */
        ) || this.regexp_eatReverseSolidusAtomEscape(state) || this.regexp_eatCharacterClass(state) || this.regexp_eatUncapturingGroup(state) || this.regexp_eatCapturingGroup(state);
      }, pp$12.regexp_eatReverseSolidusAtomEscape = function(state) {
        var start2 = state.pos;
        if (state.eat(
          92
          /* \ */
        )) {
          if (this.regexp_eatAtomEscape(state))
            return !0;
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatUncapturingGroup = function(state) {
        var start2 = state.pos;
        if (state.eat(
          40
          /* ( */
        )) {
          if (state.eat(
            63
            /* ? */
          )) {
            if (this.options.ecmaVersion >= 16) {
              var addModifiers = this.regexp_eatModifiers(state), hasHyphen = state.eat(
                45
                /* - */
              );
              if (addModifiers || hasHyphen) {
                for (var i2 = 0; i2 < addModifiers.length; i2++) {
                  var modifier = addModifiers.charAt(i2);
                  addModifiers.indexOf(modifier, i2 + 1) > -1 && state.raise("Duplicate regular expression modifiers");
                }
                if (hasHyphen) {
                  var removeModifiers = this.regexp_eatModifiers(state);
                  !addModifiers && !removeModifiers && state.current() === 58 && state.raise("Invalid regular expression modifiers");
                  for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {
                    var modifier$1 = removeModifiers.charAt(i$1);
                    (removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 || addModifiers.indexOf(modifier$1) > -1) && state.raise("Duplicate regular expression modifiers");
                  }
                }
              }
            }
            if (state.eat(
              58
              /* : */
            )) {
              if (this.regexp_disjunction(state), state.eat(
                41
                /* ) */
              ))
                return !0;
              state.raise("Unterminated group");
            }
          }
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatCapturingGroup = function(state) {
        if (state.eat(
          40
          /* ( */
        )) {
          if (this.options.ecmaVersion >= 9 ? this.regexp_groupSpecifier(state) : state.current() === 63 && state.raise("Invalid group"), this.regexp_disjunction(state), state.eat(
            41
            /* ) */
          ))
            return state.numCapturingParens += 1, !0;
          state.raise("Unterminated group");
        }
        return !1;
      }, pp$12.regexp_eatModifiers = function(state) {
        for (var modifiers = "", ch = 0; (ch = state.current()) !== -1 && isRegularExpressionModifier2(ch); )
          modifiers += codePointToString2(ch), state.advance();
        return modifiers;
      };
      function isRegularExpressionModifier2(ch) {
        return ch === 105 || ch === 109 || ch === 115;
      }
      pp$12.regexp_eatExtendedAtom = function(state) {
        return state.eat(
          46
          /* . */
        ) || this.regexp_eatReverseSolidusAtomEscape(state) || this.regexp_eatCharacterClass(state) || this.regexp_eatUncapturingGroup(state) || this.regexp_eatCapturingGroup(state) || this.regexp_eatInvalidBracedQuantifier(state) || this.regexp_eatExtendedPatternCharacter(state);
      }, pp$12.regexp_eatInvalidBracedQuantifier = function(state) {
        return this.regexp_eatBracedQuantifier(state, !0) && state.raise("Nothing to repeat"), !1;
      }, pp$12.regexp_eatSyntaxCharacter = function(state) {
        var ch = state.current();
        return isSyntaxCharacter2(ch) ? (state.lastIntValue = ch, state.advance(), !0) : !1;
      };
      function isSyntaxCharacter2(ch) {
        return ch === 36 || ch >= 40 && ch <= 43 || ch === 46 || ch === 63 || ch >= 91 && ch <= 94 || ch >= 123 && ch <= 125;
      }
      pp$12.regexp_eatPatternCharacters = function(state) {
        for (var start2 = state.pos, ch = 0; (ch = state.current()) !== -1 && !isSyntaxCharacter2(ch); )
          state.advance();
        return state.pos !== start2;
      }, pp$12.regexp_eatExtendedPatternCharacter = function(state) {
        var ch = state.current();
        return ch !== -1 && ch !== 36 && !(ch >= 40 && ch <= 43) && ch !== 46 && ch !== 63 && ch !== 91 && ch !== 94 && ch !== 124 ? (state.advance(), !0) : !1;
      }, pp$12.regexp_groupSpecifier = function(state) {
        if (state.eat(
          63
          /* ? */
        )) {
          this.regexp_eatGroupName(state) || state.raise("Invalid group");
          var trackDisjunction = this.options.ecmaVersion >= 16, known = state.groupNames[state.lastStringValue];
          if (known)
            if (trackDisjunction)
              for (var i2 = 0, list4 = known; i2 < list4.length; i2 += 1) {
                var altID = list4[i2];
                altID.separatedFrom(state.branchID) || state.raise("Duplicate capture group name");
              }
            else
              state.raise("Duplicate capture group name");
          trackDisjunction ? (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID) : state.groupNames[state.lastStringValue] = !0;
        }
      }, pp$12.regexp_eatGroupName = function(state) {
        if (state.lastStringValue = "", state.eat(
          60
          /* < */
        )) {
          if (this.regexp_eatRegExpIdentifierName(state) && state.eat(
            62
            /* > */
          ))
            return !0;
          state.raise("Invalid capture group name");
        }
        return !1;
      }, pp$12.regexp_eatRegExpIdentifierName = function(state) {
        if (state.lastStringValue = "", this.regexp_eatRegExpIdentifierStart(state)) {
          for (state.lastStringValue += codePointToString2(state.lastIntValue); this.regexp_eatRegExpIdentifierPart(state); )
            state.lastStringValue += codePointToString2(state.lastIntValue);
          return !0;
        }
        return !1;
      }, pp$12.regexp_eatRegExpIdentifierStart = function(state) {
        var start2 = state.pos, forceU = this.options.ecmaVersion >= 11, ch = state.current(forceU);
        return state.advance(forceU), ch === 92 && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU) && (ch = state.lastIntValue), isRegExpIdentifierStart2(ch) ? (state.lastIntValue = ch, !0) : (state.pos = start2, !1);
      };
      function isRegExpIdentifierStart2(ch) {
        return isIdentifierStart2(ch, !0) || ch === 36 || ch === 95;
      }
      pp$12.regexp_eatRegExpIdentifierPart = function(state) {
        var start2 = state.pos, forceU = this.options.ecmaVersion >= 11, ch = state.current(forceU);
        return state.advance(forceU), ch === 92 && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU) && (ch = state.lastIntValue), isRegExpIdentifierPart2(ch) ? (state.lastIntValue = ch, !0) : (state.pos = start2, !1);
      };
      function isRegExpIdentifierPart2(ch) {
        return isIdentifierChar2(ch, !0) || ch === 36 || ch === 95 || ch === 8204 || ch === 8205;
      }
      pp$12.regexp_eatAtomEscape = function(state) {
        return this.regexp_eatBackReference(state) || this.regexp_eatCharacterClassEscape(state) || this.regexp_eatCharacterEscape(state) || state.switchN && this.regexp_eatKGroupName(state) ? !0 : (state.switchU && (state.current() === 99 && state.raise("Invalid unicode escape"), state.raise("Invalid escape")), !1);
      }, pp$12.regexp_eatBackReference = function(state) {
        var start2 = state.pos;
        if (this.regexp_eatDecimalEscape(state)) {
          var n = state.lastIntValue;
          if (state.switchU)
            return n > state.maxBackReference && (state.maxBackReference = n), !0;
          if (n <= state.numCapturingParens)
            return !0;
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatKGroupName = function(state) {
        if (state.eat(
          107
          /* k */
        )) {
          if (this.regexp_eatGroupName(state))
            return state.backReferenceNames.push(state.lastStringValue), !0;
          state.raise("Invalid named reference");
        }
        return !1;
      }, pp$12.regexp_eatCharacterEscape = function(state) {
        return this.regexp_eatControlEscape(state) || this.regexp_eatCControlLetter(state) || this.regexp_eatZero(state) || this.regexp_eatHexEscapeSequence(state) || this.regexp_eatRegExpUnicodeEscapeSequence(state, !1) || !state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state) || this.regexp_eatIdentityEscape(state);
      }, pp$12.regexp_eatCControlLetter = function(state) {
        var start2 = state.pos;
        if (state.eat(
          99
          /* c */
        )) {
          if (this.regexp_eatControlLetter(state))
            return !0;
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatZero = function(state) {
        return state.current() === 48 && !isDecimalDigit2(state.lookahead()) ? (state.lastIntValue = 0, state.advance(), !0) : !1;
      }, pp$12.regexp_eatControlEscape = function(state) {
        var ch = state.current();
        return ch === 116 ? (state.lastIntValue = 9, state.advance(), !0) : ch === 110 ? (state.lastIntValue = 10, state.advance(), !0) : ch === 118 ? (state.lastIntValue = 11, state.advance(), !0) : ch === 102 ? (state.lastIntValue = 12, state.advance(), !0) : ch === 114 ? (state.lastIntValue = 13, state.advance(), !0) : !1;
      }, pp$12.regexp_eatControlLetter = function(state) {
        var ch = state.current();
        return isControlLetter2(ch) ? (state.lastIntValue = ch % 32, state.advance(), !0) : !1;
      };
      function isControlLetter2(ch) {
        return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122;
      }
      pp$12.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {
        forceU === void 0 && (forceU = !1);
        var start2 = state.pos, switchU = forceU || state.switchU;
        if (state.eat(
          117
          /* u */
        )) {
          if (this.regexp_eatFixedHexDigits(state, 4)) {
            var lead = state.lastIntValue;
            if (switchU && lead >= 55296 && lead <= 56319) {
              var leadSurrogateEnd = state.pos;
              if (state.eat(
                92
                /* \ */
              ) && state.eat(
                117
                /* u */
              ) && this.regexp_eatFixedHexDigits(state, 4)) {
                var trail = state.lastIntValue;
                if (trail >= 56320 && trail <= 57343)
                  return state.lastIntValue = (lead - 55296) * 1024 + (trail - 56320) + 65536, !0;
              }
              state.pos = leadSurrogateEnd, state.lastIntValue = lead;
            }
            return !0;
          }
          if (switchU && state.eat(
            123
            /* { */
          ) && this.regexp_eatHexDigits(state) && state.eat(
            125
            /* } */
          ) && isValidUnicode2(state.lastIntValue))
            return !0;
          switchU && state.raise("Invalid unicode escape"), state.pos = start2;
        }
        return !1;
      };
      function isValidUnicode2(ch) {
        return ch >= 0 && ch <= 1114111;
      }
      pp$12.regexp_eatIdentityEscape = function(state) {
        if (state.switchU)
          return this.regexp_eatSyntaxCharacter(state) ? !0 : state.eat(
            47
            /* / */
          ) ? (state.lastIntValue = 47, !0) : !1;
        var ch = state.current();
        return ch !== 99 && (!state.switchN || ch !== 107) ? (state.lastIntValue = ch, state.advance(), !0) : !1;
      }, pp$12.regexp_eatDecimalEscape = function(state) {
        state.lastIntValue = 0;
        var ch = state.current();
        if (ch >= 49 && ch <= 57) {
          do
            state.lastIntValue = 10 * state.lastIntValue + (ch - 48), state.advance();
          while ((ch = state.current()) >= 48 && ch <= 57);
          return !0;
        }
        return !1;
      };
      var CharSetNone2 = 0, CharSetOk2 = 1, CharSetString2 = 2;
      pp$12.regexp_eatCharacterClassEscape = function(state) {
        var ch = state.current();
        if (isCharacterClassEscape2(ch))
          return state.lastIntValue = -1, state.advance(), CharSetOk2;
        var negate = !1;
        if (state.switchU && this.options.ecmaVersion >= 9 && ((negate = ch === 80) || ch === 112)) {
          state.lastIntValue = -1, state.advance();
          var result;
          if (state.eat(
            123
            /* { */
          ) && (result = this.regexp_eatUnicodePropertyValueExpression(state)) && state.eat(
            125
            /* } */
          ))
            return negate && result === CharSetString2 && state.raise("Invalid property name"), result;
          state.raise("Invalid property name");
        }
        return CharSetNone2;
      };
      function isCharacterClassEscape2(ch) {
        return ch === 100 || ch === 68 || ch === 115 || ch === 83 || ch === 119 || ch === 87;
      }
      pp$12.regexp_eatUnicodePropertyValueExpression = function(state) {
        var start2 = state.pos;
        if (this.regexp_eatUnicodePropertyName(state) && state.eat(
          61
          /* = */
        )) {
          var name2 = state.lastStringValue;
          if (this.regexp_eatUnicodePropertyValue(state)) {
            var value = state.lastStringValue;
            return this.regexp_validateUnicodePropertyNameAndValue(state, name2, value), CharSetOk2;
          }
        }
        if (state.pos = start2, this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {
          var nameOrValue = state.lastStringValue;
          return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue);
        }
        return CharSetNone2;
      }, pp$12.regexp_validateUnicodePropertyNameAndValue = function(state, name2, value) {
        hasOwn2(state.unicodeProperties.nonBinary, name2) || state.raise("Invalid property name"), state.unicodeProperties.nonBinary[name2].test(value) || state.raise("Invalid property value");
      }, pp$12.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {
        if (state.unicodeProperties.binary.test(nameOrValue))
          return CharSetOk2;
        if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue))
          return CharSetString2;
        state.raise("Invalid property name");
      }, pp$12.regexp_eatUnicodePropertyName = function(state) {
        var ch = 0;
        for (state.lastStringValue = ""; isUnicodePropertyNameCharacter2(ch = state.current()); )
          state.lastStringValue += codePointToString2(ch), state.advance();
        return state.lastStringValue !== "";
      };
      function isUnicodePropertyNameCharacter2(ch) {
        return isControlLetter2(ch) || ch === 95;
      }
      pp$12.regexp_eatUnicodePropertyValue = function(state) {
        var ch = 0;
        for (state.lastStringValue = ""; isUnicodePropertyValueCharacter2(ch = state.current()); )
          state.lastStringValue += codePointToString2(ch), state.advance();
        return state.lastStringValue !== "";
      };
      function isUnicodePropertyValueCharacter2(ch) {
        return isUnicodePropertyNameCharacter2(ch) || isDecimalDigit2(ch);
      }
      pp$12.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {
        return this.regexp_eatUnicodePropertyValue(state);
      }, pp$12.regexp_eatCharacterClass = function(state) {
        if (state.eat(
          91
          /* [ */
        )) {
          var negate = state.eat(
            94
            /* ^ */
          ), result = this.regexp_classContents(state);
          return state.eat(
            93
            /* ] */
          ) || state.raise("Unterminated character class"), negate && result === CharSetString2 && state.raise("Negated character class may contain strings"), !0;
        }
        return !1;
      }, pp$12.regexp_classContents = function(state) {
        return state.current() === 93 ? CharSetOk2 : state.switchV ? this.regexp_classSetExpression(state) : (this.regexp_nonEmptyClassRanges(state), CharSetOk2);
      }, pp$12.regexp_nonEmptyClassRanges = function(state) {
        for (; this.regexp_eatClassAtom(state); ) {
          var left = state.lastIntValue;
          if (state.eat(
            45
            /* - */
          ) && this.regexp_eatClassAtom(state)) {
            var right = state.lastIntValue;
            state.switchU && (left === -1 || right === -1) && state.raise("Invalid character class"), left !== -1 && right !== -1 && left > right && state.raise("Range out of order in character class");
          }
        }
      }, pp$12.regexp_eatClassAtom = function(state) {
        var start2 = state.pos;
        if (state.eat(
          92
          /* \ */
        )) {
          if (this.regexp_eatClassEscape(state))
            return !0;
          if (state.switchU) {
            var ch$1 = state.current();
            (ch$1 === 99 || isOctalDigit2(ch$1)) && state.raise("Invalid class escape"), state.raise("Invalid escape");
          }
          state.pos = start2;
        }
        var ch = state.current();
        return ch !== 93 ? (state.lastIntValue = ch, state.advance(), !0) : !1;
      }, pp$12.regexp_eatClassEscape = function(state) {
        var start2 = state.pos;
        if (state.eat(
          98
          /* b */
        ))
          return state.lastIntValue = 8, !0;
        if (state.switchU && state.eat(
          45
          /* - */
        ))
          return state.lastIntValue = 45, !0;
        if (!state.switchU && state.eat(
          99
          /* c */
        )) {
          if (this.regexp_eatClassControlLetter(state))
            return !0;
          state.pos = start2;
        }
        return this.regexp_eatCharacterClassEscape(state) || this.regexp_eatCharacterEscape(state);
      }, pp$12.regexp_classSetExpression = function(state) {
        var result = CharSetOk2, subResult;
        if (!this.regexp_eatClassSetRange(state)) if (subResult = this.regexp_eatClassSetOperand(state)) {
          subResult === CharSetString2 && (result = CharSetString2);
          for (var start2 = state.pos; state.eatChars(
            [38, 38]
            /* && */
          ); ) {
            if (state.current() !== 38 && (subResult = this.regexp_eatClassSetOperand(state))) {
              subResult !== CharSetString2 && (result = CharSetOk2);
              continue;
            }
            state.raise("Invalid character in character class");
          }
          if (start2 !== state.pos)
            return result;
          for (; state.eatChars(
            [45, 45]
            /* -- */
          ); )
            this.regexp_eatClassSetOperand(state) || state.raise("Invalid character in character class");
          if (start2 !== state.pos)
            return result;
        } else
          state.raise("Invalid character in character class");
        for (; ; )
          if (!this.regexp_eatClassSetRange(state)) {
            if (subResult = this.regexp_eatClassSetOperand(state), !subResult)
              return result;
            subResult === CharSetString2 && (result = CharSetString2);
          }
      }, pp$12.regexp_eatClassSetRange = function(state) {
        var start2 = state.pos;
        if (this.regexp_eatClassSetCharacter(state)) {
          var left = state.lastIntValue;
          if (state.eat(
            45
            /* - */
          ) && this.regexp_eatClassSetCharacter(state)) {
            var right = state.lastIntValue;
            return left !== -1 && right !== -1 && left > right && state.raise("Range out of order in character class"), !0;
          }
          state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatClassSetOperand = function(state) {
        return this.regexp_eatClassSetCharacter(state) ? CharSetOk2 : this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state);
      }, pp$12.regexp_eatNestedClass = function(state) {
        var start2 = state.pos;
        if (state.eat(
          91
          /* [ */
        )) {
          var negate = state.eat(
            94
            /* ^ */
          ), result = this.regexp_classContents(state);
          if (state.eat(
            93
            /* ] */
          ))
            return negate && result === CharSetString2 && state.raise("Negated character class may contain strings"), result;
          state.pos = start2;
        }
        if (state.eat(
          92
          /* \ */
        )) {
          var result$1 = this.regexp_eatCharacterClassEscape(state);
          if (result$1)
            return result$1;
          state.pos = start2;
        }
        return null;
      }, pp$12.regexp_eatClassStringDisjunction = function(state) {
        var start2 = state.pos;
        if (state.eatChars(
          [92, 113]
          /* \q */
        )) {
          if (state.eat(
            123
            /* { */
          )) {
            var result = this.regexp_classStringDisjunctionContents(state);
            if (state.eat(
              125
              /* } */
            ))
              return result;
          } else
            state.raise("Invalid escape");
          state.pos = start2;
        }
        return null;
      }, pp$12.regexp_classStringDisjunctionContents = function(state) {
        for (var result = this.regexp_classString(state); state.eat(
          124
          /* | */
        ); )
          this.regexp_classString(state) === CharSetString2 && (result = CharSetString2);
        return result;
      }, pp$12.regexp_classString = function(state) {
        for (var count = 0; this.regexp_eatClassSetCharacter(state); )
          count++;
        return count === 1 ? CharSetOk2 : CharSetString2;
      }, pp$12.regexp_eatClassSetCharacter = function(state) {
        var start2 = state.pos;
        if (state.eat(
          92
          /* \ */
        ))
          return this.regexp_eatCharacterEscape(state) || this.regexp_eatClassSetReservedPunctuator(state) ? !0 : state.eat(
            98
            /* b */
          ) ? (state.lastIntValue = 8, !0) : (state.pos = start2, !1);
        var ch = state.current();
        return ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter2(ch) || isClassSetSyntaxCharacter2(ch) ? !1 : (state.advance(), state.lastIntValue = ch, !0);
      };
      function isClassSetReservedDoublePunctuatorCharacter2(ch) {
        return ch === 33 || ch >= 35 && ch <= 38 || ch >= 42 && ch <= 44 || ch === 46 || ch >= 58 && ch <= 64 || ch === 94 || ch === 96 || ch === 126;
      }
      function isClassSetSyntaxCharacter2(ch) {
        return ch === 40 || ch === 41 || ch === 45 || ch === 47 || ch >= 91 && ch <= 93 || ch >= 123 && ch <= 125;
      }
      pp$12.regexp_eatClassSetReservedPunctuator = function(state) {
        var ch = state.current();
        return isClassSetReservedPunctuator2(ch) ? (state.lastIntValue = ch, state.advance(), !0) : !1;
      };
      function isClassSetReservedPunctuator2(ch) {
        return ch === 33 || ch === 35 || ch === 37 || ch === 38 || ch === 44 || ch === 45 || ch >= 58 && ch <= 62 || ch === 64 || ch === 96 || ch === 126;
      }
      pp$12.regexp_eatClassControlLetter = function(state) {
        var ch = state.current();
        return isDecimalDigit2(ch) || ch === 95 ? (state.lastIntValue = ch % 32, state.advance(), !0) : !1;
      }, pp$12.regexp_eatHexEscapeSequence = function(state) {
        var start2 = state.pos;
        if (state.eat(
          120
          /* x */
        )) {
          if (this.regexp_eatFixedHexDigits(state, 2))
            return !0;
          state.switchU && state.raise("Invalid escape"), state.pos = start2;
        }
        return !1;
      }, pp$12.regexp_eatDecimalDigits = function(state) {
        var start2 = state.pos, ch = 0;
        for (state.lastIntValue = 0; isDecimalDigit2(ch = state.current()); )
          state.lastIntValue = 10 * state.lastIntValue + (ch - 48), state.advance();
        return state.pos !== start2;
      };
      function isDecimalDigit2(ch) {
        return ch >= 48 && ch <= 57;
      }
      pp$12.regexp_eatHexDigits = function(state) {
        var start2 = state.pos, ch = 0;
        for (state.lastIntValue = 0; isHexDigit2(ch = state.current()); )
          state.lastIntValue = 16 * state.lastIntValue + hexToInt2(ch), state.advance();
        return state.pos !== start2;
      };
      function isHexDigit2(ch) {
        return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102;
      }
      function hexToInt2(ch) {
        return ch >= 65 && ch <= 70 ? 10 + (ch - 65) : ch >= 97 && ch <= 102 ? 10 + (ch - 97) : ch - 48;
      }
      pp$12.regexp_eatLegacyOctalEscapeSequence = function(state) {
        if (this.regexp_eatOctalDigit(state)) {
          var n1 = state.lastIntValue;
          if (this.regexp_eatOctalDigit(state)) {
            var n2 = state.lastIntValue;
            n1 <= 3 && this.regexp_eatOctalDigit(state) ? state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue : state.lastIntValue = n1 * 8 + n2;
          } else
            state.lastIntValue = n1;
          return !0;
        }
        return !1;
      }, pp$12.regexp_eatOctalDigit = function(state) {
        var ch = state.current();
        return isOctalDigit2(ch) ? (state.lastIntValue = ch - 48, state.advance(), !0) : (state.lastIntValue = 0, !1);
      };
      function isOctalDigit2(ch) {
        return ch >= 48 && ch <= 55;
      }
      pp$12.regexp_eatFixedHexDigits = function(state, length) {
        var start2 = state.pos;
        state.lastIntValue = 0;
        for (var i2 = 0; i2 < length; ++i2) {
          var ch = state.current();
          if (!isHexDigit2(ch))
            return state.pos = start2, !1;
          state.lastIntValue = 16 * state.lastIntValue + hexToInt2(ch), state.advance();
        }
        return !0;
      };
      var Token3 = function(p) {
        this.type = p.type, this.value = p.value, this.start = p.start, this.end = p.end, p.options.locations && (this.loc = new SourceLocation3(p, p.startLoc, p.endLoc)), p.options.ranges && (this.range = [p.start, p.end]);
      }, pp2 = Parser3.prototype;
      pp2.next = function(ignoreEscapeSequenceInKeyword) {
        !ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword), this.options.onToken && this.options.onToken(new Token3(this)), this.lastTokEnd = this.end, this.lastTokStart = this.start, this.lastTokEndLoc = this.endLoc, this.lastTokStartLoc = this.startLoc, this.nextToken();
      }, pp2.getToken = function() {
        return this.next(), new Token3(this);
      }, typeof Symbol < "u" && (pp2[Symbol.iterator] = function() {
        var this$1$1 = this;
        return {
          next: function() {
            var token = this$1$1.getToken();
            return {
              done: token.type === types$12.eof,
              value: token
            };
          }
        };
      }), pp2.nextToken = function() {
        var curContext = this.curContext();
        if ((!curContext || !curContext.preserveSpace) && this.skipSpace(), this.start = this.pos, this.options.locations && (this.startLoc = this.curPosition()), this.pos >= this.input.length)
          return this.finishToken(types$12.eof);
        if (curContext.override)
          return curContext.override(this);
        this.readToken(this.fullCharCodeAtPos());
      }, pp2.readToken = function(code2) {
        return isIdentifierStart2(code2, this.options.ecmaVersion >= 6) || code2 === 92 ? this.readWord() : this.getTokenFromCode(code2);
      }, pp2.fullCharCodeAtPos = function() {
        var code2 = this.input.charCodeAt(this.pos);
        if (code2 <= 55295 || code2 >= 56320)
          return code2;
        var next = this.input.charCodeAt(this.pos + 1);
        return next <= 56319 || next >= 57344 ? code2 : (code2 << 10) + next - 56613888;
      }, pp2.skipBlockComment = function() {
        var startLoc = this.options.onComment && this.curPosition(), start2 = this.pos, end = this.input.indexOf("*/", this.pos += 2);
        if (end === -1 && this.raise(this.pos - 2, "Unterminated comment"), this.pos = end + 2, this.options.locations)
          for (var nextBreak = void 0, pos = start2; (nextBreak = nextLineBreak2(this.input, pos, this.pos)) > -1; )
            ++this.curLine, pos = this.lineStart = nextBreak;
        this.options.onComment && this.options.onComment(
          !0,
          this.input.slice(start2 + 2, end),
          start2,
          this.pos,
          startLoc,
          this.curPosition()
        );
      }, pp2.skipLineComment = function(startSkip) {
        for (var start2 = this.pos, startLoc = this.options.onComment && this.curPosition(), ch = this.input.charCodeAt(this.pos += startSkip); this.pos < this.input.length && !isNewLine2(ch); )
          ch = this.input.charCodeAt(++this.pos);
        this.options.onComment && this.options.onComment(
          !1,
          this.input.slice(start2 + startSkip, this.pos),
          start2,
          this.pos,
          startLoc,
          this.curPosition()
        );
      }, pp2.skipSpace = function() {
        loop: for (; this.pos < this.input.length; ) {
          var ch = this.input.charCodeAt(this.pos);
          switch (ch) {
            case 32:
            case 160:
              ++this.pos;
              break;
            case 13:
              this.input.charCodeAt(this.pos + 1) === 10 && ++this.pos;
            case 10:
            case 8232:
            case 8233:
              ++this.pos, this.options.locations && (++this.curLine, this.lineStart = this.pos);
              break;
            case 47:
              switch (this.input.charCodeAt(this.pos + 1)) {
                case 42:
                  this.skipBlockComment();
                  break;
                case 47:
                  this.skipLineComment(2);
                  break;
                default:
                  break loop;
              }
              break;
            default:
              if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace2.test(String.fromCharCode(ch)))
                ++this.pos;
              else
                break loop;
          }
        }
      }, pp2.finishToken = function(type, val) {
        this.end = this.pos, this.options.locations && (this.endLoc = this.curPosition());
        var prevType = this.type;
        this.type = type, this.value = val, this.updateContext(prevType);
      }, pp2.readToken_dot = function() {
        var next = this.input.charCodeAt(this.pos + 1);
        if (next >= 48 && next <= 57)
          return this.readNumber(!0);
        var next2 = this.input.charCodeAt(this.pos + 2);
        return this.options.ecmaVersion >= 6 && next === 46 && next2 === 46 ? (this.pos += 3, this.finishToken(types$12.ellipsis)) : (++this.pos, this.finishToken(types$12.dot));
      }, pp2.readToken_slash = function() {
        var next = this.input.charCodeAt(this.pos + 1);
        return this.exprAllowed ? (++this.pos, this.readRegexp()) : next === 61 ? this.finishOp(types$12.assign, 2) : this.finishOp(types$12.slash, 1);
      }, pp2.readToken_mult_modulo_exp = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1), size = 1, tokentype = code2 === 42 ? types$12.star : types$12.modulo;
        return this.options.ecmaVersion >= 7 && code2 === 42 && next === 42 && (++size, tokentype = types$12.starstar, next = this.input.charCodeAt(this.pos + 2)), next === 61 ? this.finishOp(types$12.assign, size + 1) : this.finishOp(tokentype, size);
      }, pp2.readToken_pipe_amp = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1);
        if (next === code2) {
          if (this.options.ecmaVersion >= 12) {
            var next2 = this.input.charCodeAt(this.pos + 2);
            if (next2 === 61)
              return this.finishOp(types$12.assign, 3);
          }
          return this.finishOp(code2 === 124 ? types$12.logicalOR : types$12.logicalAND, 2);
        }
        return next === 61 ? this.finishOp(types$12.assign, 2) : this.finishOp(code2 === 124 ? types$12.bitwiseOR : types$12.bitwiseAND, 1);
      }, pp2.readToken_caret = function() {
        var next = this.input.charCodeAt(this.pos + 1);
        return next === 61 ? this.finishOp(types$12.assign, 2) : this.finishOp(types$12.bitwiseXOR, 1);
      }, pp2.readToken_plus_min = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1);
        return next === code2 ? next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && (this.lastTokEnd === 0 || lineBreak2.test(this.input.slice(this.lastTokEnd, this.pos))) ? (this.skipLineComment(3), this.skipSpace(), this.nextToken()) : this.finishOp(types$12.incDec, 2) : next === 61 ? this.finishOp(types$12.assign, 2) : this.finishOp(types$12.plusMin, 1);
      }, pp2.readToken_lt_gt = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1), size = 1;
        return next === code2 ? (size = code2 === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2, this.input.charCodeAt(this.pos + size) === 61 ? this.finishOp(types$12.assign, size + 1) : this.finishOp(types$12.bitShift, size)) : next === 33 && code2 === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && this.input.charCodeAt(this.pos + 3) === 45 ? (this.skipLineComment(4), this.skipSpace(), this.nextToken()) : (next === 61 && (size = 2), this.finishOp(types$12.relational, size));
      }, pp2.readToken_eq_excl = function(code2) {
        var next = this.input.charCodeAt(this.pos + 1);
        return next === 61 ? this.finishOp(types$12.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) : code2 === 61 && next === 62 && this.options.ecmaVersion >= 6 ? (this.pos += 2, this.finishToken(types$12.arrow)) : this.finishOp(code2 === 61 ? types$12.eq : types$12.prefix, 1);
      }, pp2.readToken_question = function() {
        var ecmaVersion2 = this.options.ecmaVersion;
        if (ecmaVersion2 >= 11) {
          var next = this.input.charCodeAt(this.pos + 1);
          if (next === 46) {
            var next2 = this.input.charCodeAt(this.pos + 2);
            if (next2 < 48 || next2 > 57)
              return this.finishOp(types$12.questionDot, 2);
          }
          if (next === 63) {
            if (ecmaVersion2 >= 12) {
              var next2$1 = this.input.charCodeAt(this.pos + 2);
              if (next2$1 === 61)
                return this.finishOp(types$12.assign, 3);
            }
            return this.finishOp(types$12.coalesce, 2);
          }
        }
        return this.finishOp(types$12.question, 1);
      }, pp2.readToken_numberSign = function() {
        var ecmaVersion2 = this.options.ecmaVersion, code2 = 35;
        if (ecmaVersion2 >= 13 && (++this.pos, code2 = this.fullCharCodeAtPos(), isIdentifierStart2(code2, !0) || code2 === 92))
          return this.finishToken(types$12.privateId, this.readWord1());
        this.raise(this.pos, "Unexpected character '" + codePointToString2(code2) + "'");
      }, pp2.getTokenFromCode = function(code2) {
        switch (code2) {
          // The interpretation of a dot depends on whether it is followed
          // by a digit or another two dots.
          case 46:
            return this.readToken_dot();
          // Punctuation tokens.
          case 40:
            return ++this.pos, this.finishToken(types$12.parenL);
          case 41:
            return ++this.pos, this.finishToken(types$12.parenR);
          case 59:
            return ++this.pos, this.finishToken(types$12.semi);
          case 44:
            return ++this.pos, this.finishToken(types$12.comma);
          case 91:
            return ++this.pos, this.finishToken(types$12.bracketL);
          case 93:
            return ++this.pos, this.finishToken(types$12.bracketR);
          case 123:
            return ++this.pos, this.finishToken(types$12.braceL);
          case 125:
            return ++this.pos, this.finishToken(types$12.braceR);
          case 58:
            return ++this.pos, this.finishToken(types$12.colon);
          case 96:
            if (this.options.ecmaVersion < 6)
              break;
            return ++this.pos, this.finishToken(types$12.backQuote);
          case 48:
            var next = this.input.charCodeAt(this.pos + 1);
            if (next === 120 || next === 88)
              return this.readRadixNumber(16);
            if (this.options.ecmaVersion >= 6) {
              if (next === 111 || next === 79)
                return this.readRadixNumber(8);
              if (next === 98 || next === 66)
                return this.readRadixNumber(2);
            }
          // Anything else beginning with a digit is an integer, octal
          // number, or float.
          case 49:
          case 50:
          case 51:
          case 52:
          case 53:
          case 54:
          case 55:
          case 56:
          case 57:
            return this.readNumber(!1);
          // Quotes produce strings.
          case 34:
          case 39:
            return this.readString(code2);
          // Operators are parsed inline in tiny state machines. '=' (61) is
          // often referred to. `finishOp` simply skips the amount of
          // characters it is given as second argument, and returns a token
          // of the type given by its first argument.
          case 47:
            return this.readToken_slash();
          case 37:
          case 42:
            return this.readToken_mult_modulo_exp(code2);
          case 124:
          case 38:
            return this.readToken_pipe_amp(code2);
          case 94:
            return this.readToken_caret();
          case 43:
          case 45:
            return this.readToken_plus_min(code2);
          case 60:
          case 62:
            return this.readToken_lt_gt(code2);
          case 61:
          case 33:
            return this.readToken_eq_excl(code2);
          case 63:
            return this.readToken_question();
          case 126:
            return this.finishOp(types$12.prefix, 1);
          case 35:
            return this.readToken_numberSign();
        }
        this.raise(this.pos, "Unexpected character '" + codePointToString2(code2) + "'");
      }, pp2.finishOp = function(type, size) {
        var str = this.input.slice(this.pos, this.pos + size);
        return this.pos += size, this.finishToken(type, str);
      }, pp2.readRegexp = function() {
        for (var escaped, inClass, start2 = this.pos; ; ) {
          this.pos >= this.input.length && this.raise(start2, "Unterminated regular expression");
          var ch = this.input.charAt(this.pos);
          if (lineBreak2.test(ch) && this.raise(start2, "Unterminated regular expression"), escaped)
            escaped = !1;
          else {
            if (ch === "[")
              inClass = !0;
            else if (ch === "]" && inClass)
              inClass = !1;
            else if (ch === "/" && !inClass)
              break;
            escaped = ch === "\\";
          }
          ++this.pos;
        }
        var pattern = this.input.slice(start2, this.pos);
        ++this.pos;
        var flagsStart = this.pos, flags = this.readWord1();
        this.containsEsc && this.unexpected(flagsStart);
        var state = this.regexpState || (this.regexpState = new RegExpValidationState3(this));
        state.reset(start2, pattern, flags), this.validateRegExpFlags(state), this.validateRegExpPattern(state);
        var value = null;
        try {
          value = new RegExp(pattern, flags);
        } catch {
        }
        return this.finishToken(types$12.regexp, { pattern, flags, value });
      }, pp2.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {
        for (var allowSeparators = this.options.ecmaVersion >= 12 && len === void 0, isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48, start2 = this.pos, total = 0, lastCode = 0, i2 = 0, e = len ?? 1 / 0; i2 < e; ++i2, ++this.pos) {
          var code2 = this.input.charCodeAt(this.pos), val = void 0;
          if (allowSeparators && code2 === 95) {
            isLegacyOctalNumericLiteral && this.raiseRecoverable(this.pos, "Numeric separator is not allowed in legacy octal numeric literals"), lastCode === 95 && this.raiseRecoverable(this.pos, "Numeric separator must be exactly one underscore"), i2 === 0 && this.raiseRecoverable(this.pos, "Numeric separator is not allowed at the first of digits"), lastCode = code2;
            continue;
          }
          if (code2 >= 97 ? val = code2 - 97 + 10 : code2 >= 65 ? val = code2 - 65 + 10 : code2 >= 48 && code2 <= 57 ? val = code2 - 48 : val = 1 / 0, val >= radix)
            break;
          lastCode = code2, total = total * radix + val;
        }
        return allowSeparators && lastCode === 95 && this.raiseRecoverable(this.pos - 1, "Numeric separator is not allowed at the last of digits"), this.pos === start2 || len != null && this.pos - start2 !== len ? null : total;
      };
      function stringToNumber2(str, isLegacyOctalNumericLiteral) {
        return isLegacyOctalNumericLiteral ? parseInt(str, 8) : parseFloat(str.replace(/_/g, ""));
      }
      function stringToBigInt2(str) {
        return typeof BigInt != "function" ? null : BigInt(str.replace(/_/g, ""));
      }
      pp2.readRadixNumber = function(radix) {
        var start2 = this.pos;
        this.pos += 2;
        var val = this.readInt(radix);
        return val == null && this.raise(this.start + 2, "Expected number in radix " + radix), this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110 ? (val = stringToBigInt2(this.input.slice(start2, this.pos)), ++this.pos) : isIdentifierStart2(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number"), this.finishToken(types$12.num, val);
      }, pp2.readNumber = function(startsWithDot) {
        var start2 = this.pos;
        !startsWithDot && this.readInt(10, void 0, !0) === null && this.raise(start2, "Invalid number");
        var octal = this.pos - start2 >= 2 && this.input.charCodeAt(start2) === 48;
        octal && this.strict && this.raise(start2, "Invalid number");
        var next = this.input.charCodeAt(this.pos);
        if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {
          var val$1 = stringToBigInt2(this.input.slice(start2, this.pos));
          return ++this.pos, isIdentifierStart2(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number"), this.finishToken(types$12.num, val$1);
        }
        octal && /[89]/.test(this.input.slice(start2, this.pos)) && (octal = !1), next === 46 && !octal && (++this.pos, this.readInt(10), next = this.input.charCodeAt(this.pos)), (next === 69 || next === 101) && !octal && (next = this.input.charCodeAt(++this.pos), (next === 43 || next === 45) && ++this.pos, this.readInt(10) === null && this.raise(start2, "Invalid number")), isIdentifierStart2(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number");
        var val = stringToNumber2(this.input.slice(start2, this.pos), octal);
        return this.finishToken(types$12.num, val);
      }, pp2.readCodePoint = function() {
        var ch = this.input.charCodeAt(this.pos), code2;
        if (ch === 123) {
          this.options.ecmaVersion < 6 && this.unexpected();
          var codePos = ++this.pos;
          code2 = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos), ++this.pos, code2 > 1114111 && this.invalidStringToken(codePos, "Code point out of bounds");
        } else
          code2 = this.readHexChar(4);
        return code2;
      }, pp2.readString = function(quote) {
        for (var out = "", chunkStart = ++this.pos; ; ) {
          this.pos >= this.input.length && this.raise(this.start, "Unterminated string constant");
          var ch = this.input.charCodeAt(this.pos);
          if (ch === quote)
            break;
          ch === 92 ? (out += this.input.slice(chunkStart, this.pos), out += this.readEscapedChar(!1), chunkStart = this.pos) : ch === 8232 || ch === 8233 ? (this.options.ecmaVersion < 10 && this.raise(this.start, "Unterminated string constant"), ++this.pos, this.options.locations && (this.curLine++, this.lineStart = this.pos)) : (isNewLine2(ch) && this.raise(this.start, "Unterminated string constant"), ++this.pos);
        }
        return out += this.input.slice(chunkStart, this.pos++), this.finishToken(types$12.string, out);
      };
      var INVALID_TEMPLATE_ESCAPE_ERROR2 = {};
      pp2.tryReadTemplateToken = function() {
        this.inTemplateElement = !0;
        try {
          this.readTmplToken();
        } catch (err) {
          if (err === INVALID_TEMPLATE_ESCAPE_ERROR2)
            this.readInvalidTemplateToken();
          else
            throw err;
        }
        this.inTemplateElement = !1;
      }, pp2.invalidStringToken = function(position3, message) {
        if (this.inTemplateElement && this.options.ecmaVersion >= 9)
          throw INVALID_TEMPLATE_ESCAPE_ERROR2;
        this.raise(position3, message);
      }, pp2.readTmplToken = function() {
        for (var out = "", chunkStart = this.pos; ; ) {
          this.pos >= this.input.length && this.raise(this.start, "Unterminated template");
          var ch = this.input.charCodeAt(this.pos);
          if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123)
            return this.pos === this.start && (this.type === types$12.template || this.type === types$12.invalidTemplate) ? ch === 36 ? (this.pos += 2, this.finishToken(types$12.dollarBraceL)) : (++this.pos, this.finishToken(types$12.backQuote)) : (out += this.input.slice(chunkStart, this.pos), this.finishToken(types$12.template, out));
          if (ch === 92)
            out += this.input.slice(chunkStart, this.pos), out += this.readEscapedChar(!0), chunkStart = this.pos;
          else if (isNewLine2(ch)) {
            switch (out += this.input.slice(chunkStart, this.pos), ++this.pos, ch) {
              case 13:
                this.input.charCodeAt(this.pos) === 10 && ++this.pos;
              case 10:
                out += `
`;
                break;
              default:
                out += String.fromCharCode(ch);
                break;
            }
            this.options.locations && (++this.curLine, this.lineStart = this.pos), chunkStart = this.pos;
          } else
            ++this.pos;
        }
      }, pp2.readInvalidTemplateToken = function() {
        for (; this.pos < this.input.length; this.pos++)
          switch (this.input[this.pos]) {
            case "\\":
              ++this.pos;
              break;
            case "$":
              if (this.input[this.pos + 1] !== "{")
                break;
            // fall through
            case "`":
              return this.finishToken(types$12.invalidTemplate, this.input.slice(this.start, this.pos));
            case "\r":
              this.input[this.pos + 1] === `
` && ++this.pos;
            // fall through
            case `
`:
            case "\u2028":
            case "\u2029":
              ++this.curLine, this.lineStart = this.pos + 1;
              break;
          }
        this.raise(this.start, "Unterminated template");
      }, pp2.readEscapedChar = function(inTemplate) {
        var ch = this.input.charCodeAt(++this.pos);
        switch (++this.pos, ch) {
          case 110:
            return `
`;
          // 'n' -> '\n'
          case 114:
            return "\r";
          // 'r' -> '\r'
          case 120:
            return String.fromCharCode(this.readHexChar(2));
          // 'x'
          case 117:
            return codePointToString2(this.readCodePoint());
          // 'u'
          case 116:
            return "	";
          // 't' -> '\t'
          case 98:
            return "\b";
          // 'b' -> '\b'
          case 118:
            return "\v";
          // 'v' -> '\u000b'
          case 102:
            return "\f";
          // 'f' -> '\f'
          case 13:
            this.input.charCodeAt(this.pos) === 10 && ++this.pos;
          // '\r\n'
          case 10:
            return this.options.locations && (this.lineStart = this.pos, ++this.curLine), "";
          case 56:
          case 57:
            if (this.strict && this.invalidStringToken(
              this.pos - 1,
              "Invalid escape sequence"
            ), inTemplate) {
              var codePos = this.pos - 1;
              this.invalidStringToken(
                codePos,
                "Invalid escape sequence in template string"
              );
            }
          default:
            if (ch >= 48 && ch <= 55) {
              var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0], octal = parseInt(octalStr, 8);
              return octal > 255 && (octalStr = octalStr.slice(0, -1), octal = parseInt(octalStr, 8)), this.pos += octalStr.length - 1, ch = this.input.charCodeAt(this.pos), (octalStr !== "0" || ch === 56 || ch === 57) && (this.strict || inTemplate) && this.invalidStringToken(
                this.pos - 1 - octalStr.length,
                inTemplate ? "Octal literal in template string" : "Octal literal in strict mode"
              ), String.fromCharCode(octal);
            }
            return isNewLine2(ch) ? (this.options.locations && (this.lineStart = this.pos, ++this.curLine), "") : String.fromCharCode(ch);
        }
      }, pp2.readHexChar = function(len) {
        var codePos = this.pos, n = this.readInt(16, len);
        return n === null && this.invalidStringToken(codePos, "Bad character escape sequence"), n;
      }, pp2.readWord1 = function() {
        this.containsEsc = !1;
        for (var word = "", first = !0, chunkStart = this.pos, astral = this.options.ecmaVersion >= 6; this.pos < this.input.length; ) {
          var ch = this.fullCharCodeAtPos();
          if (isIdentifierChar2(ch, astral))
            this.pos += ch <= 65535 ? 1 : 2;
          else if (ch === 92) {
            this.containsEsc = !0, word += this.input.slice(chunkStart, this.pos);
            var escStart = this.pos;
            this.input.charCodeAt(++this.pos) !== 117 && this.invalidStringToken(this.pos, "Expecting Unicode escape sequence \\uXXXX"), ++this.pos;
            var esc = this.readCodePoint();
            (first ? isIdentifierStart2 : isIdentifierChar2)(esc, astral) || this.invalidStringToken(escStart, "Invalid Unicode escape"), word += codePointToString2(esc), chunkStart = this.pos;
          } else
            break;
          first = !1;
        }
        return word + this.input.slice(chunkStart, this.pos);
      }, pp2.readWord = function() {
        var word = this.readWord1(), type = types$12.name;
        return this.keywords.test(word) && (type = keywords2[word]), this.finishToken(type, word);
      };
      var version2 = "8.15.0";
      Parser3.acorn = {
        Parser: Parser3,
        version: version2,
        defaultOptions: defaultOptions2,
        Position: Position3,
        SourceLocation: SourceLocation3,
        getLineInfo: getLineInfo2,
        Node: Node3,
        TokenType: TokenType3,
        tokTypes: types$12,
        keywordTypes: keywords2,
        TokContext: TokContext3,
        tokContexts: types2,
        isIdentifierChar: isIdentifierChar2,
        isIdentifierStart: isIdentifierStart2,
        Token: Token3,
        isNewLine: isNewLine2,
        lineBreak: lineBreak2,
        lineBreakG: lineBreakG2,
        nonASCIIwhitespace: nonASCIIwhitespace2
      };
      function parse4(input, options) {
        return Parser3.parse(input, options);
      }
      function parseExpressionAt2(input, pos, options) {
        return Parser3.parseExpressionAt(input, pos, options);
      }
      function tokenizer2(input, options) {
        return Parser3.tokenizer(input, options);
      }
      exports2.Node = Node3, exports2.Parser = Parser3, exports2.Position = Position3, exports2.SourceLocation = SourceLocation3, exports2.TokContext = TokContext3, exports2.Token = Token3, exports2.TokenType = TokenType3, exports2.defaultOptions = defaultOptions2, exports2.getLineInfo = getLineInfo2, exports2.isIdentifierChar = isIdentifierChar2, exports2.isIdentifierStart = isIdentifierStart2, exports2.isNewLine = isNewLine2, exports2.keywordTypes = keywords2, exports2.lineBreak = lineBreak2, exports2.lineBreakG = lineBreakG2, exports2.nonASCIIwhitespace = nonASCIIwhitespace2, exports2.parse = parse4, exports2.parseExpressionAt = parseExpressionAt2, exports2.tokContexts = types2, exports2.tokTypes = types$12, exports2.tokenizer = tokenizer2, exports2.version = version2;
    }));
  }
});

// ../../../node_modules/micromark-extension-mdxjs/node_modules/acorn-jsx/index.js
var require_acorn_jsx2 = __commonJS({
  "../../../node_modules/micromark-extension-mdxjs/node_modules/acorn-jsx/index.js"(exports, module) {
    "use strict";
    var XHTMLEntities = require_xhtml2(), hexNumber = /^[\da-fA-F]+$/, decimalNumber = /^\d+$/, acornJsxMap = /* @__PURE__ */ new WeakMap();
    function getJsxTokens(acorn) {
      acorn = acorn.Parser.acorn || acorn;
      let acornJsx2 = acornJsxMap.get(acorn);
      if (!acornJsx2) {
        let tt = acorn.tokTypes, TokContext3 = acorn.TokContext, TokenType3 = acorn.TokenType, tc_oTag = new TokContext3("<tag", !1), tc_cTag = new TokContext3("</tag", !1), tc_expr = new TokContext3("<tag>...</tag>", !0, !0), tokContexts = {
          tc_oTag,
          tc_cTag,
          tc_expr
        }, tokTypes = {
          jsxName: new TokenType3("jsxName"),
          jsxText: new TokenType3("jsxText", { beforeExpr: !0 }),
          jsxTagStart: new TokenType3("jsxTagStart", { startsExpr: !0 }),
          jsxTagEnd: new TokenType3("jsxTagEnd")
        };
        tokTypes.jsxTagStart.updateContext = function() {
          this.context.push(tc_expr), this.context.push(tc_oTag), this.exprAllowed = !1;
        }, tokTypes.jsxTagEnd.updateContext = function(prevType) {
          let out = this.context.pop();
          out === tc_oTag && prevType === tt.slash || out === tc_cTag ? (this.context.pop(), this.exprAllowed = this.curContext() === tc_expr) : this.exprAllowed = !0;
        }, acornJsx2 = { tokContexts, tokTypes }, acornJsxMap.set(acorn, acornJsx2);
      }
      return acornJsx2;
    }
    function getQualifiedJSXName(object) {
      if (!object)
        return object;
      if (object.type === "JSXIdentifier")
        return object.name;
      if (object.type === "JSXNamespacedName")
        return object.namespace.name + ":" + object.name.name;
      if (object.type === "JSXMemberExpression")
        return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property);
    }
    module.exports = function(options) {
      return options = options || {}, function(Parser3) {
        return plugin({
          allowNamespaces: options.allowNamespaces !== !1,
          allowNamespacedObjects: !!options.allowNamespacedObjects
        }, Parser3);
      };
    };
    Object.defineProperty(module.exports, "tokTypes", {
      get: function() {
        return getJsxTokens(require_acorn2()).tokTypes;
      },
      configurable: !0,
      enumerable: !0
    });
    function plugin(options, Parser3) {
      let acorn = Parser3.acorn || require_acorn2(), acornJsx2 = getJsxTokens(acorn), tt = acorn.tokTypes, tok = acornJsx2.tokTypes, tokContexts = acorn.tokContexts, tc_oTag = acornJsx2.tokContexts.tc_oTag, tc_cTag = acornJsx2.tokContexts.tc_cTag, tc_expr = acornJsx2.tokContexts.tc_expr, isNewLine2 = acorn.isNewLine, isIdentifierStart2 = acorn.isIdentifierStart, isIdentifierChar2 = acorn.isIdentifierChar;
      return class extends Parser3 {
        // Expose actual `tokTypes` and `tokContexts` to other plugins.
        static get acornJsx() {
          return acornJsx2;
        }
        // Reads inline JSX contents token.
        jsx_readToken() {
          let out = "", chunkStart = this.pos;
          for (; ; ) {
            this.pos >= this.input.length && this.raise(this.start, "Unterminated JSX contents");
            let ch = this.input.charCodeAt(this.pos);
            switch (ch) {
              case 60:
              // '<'
              case 123:
                return this.pos === this.start ? ch === 60 && this.exprAllowed ? (++this.pos, this.finishToken(tok.jsxTagStart)) : this.getTokenFromCode(ch) : (out += this.input.slice(chunkStart, this.pos), this.finishToken(tok.jsxText, out));
              case 38:
                out += this.input.slice(chunkStart, this.pos), out += this.jsx_readEntity(), chunkStart = this.pos;
                break;
              case 62:
              // '>'
              case 125:
                this.raise(
                  this.pos,
                  "Unexpected token `" + this.input[this.pos] + "`. Did you mean `" + (ch === 62 ? "&gt;" : "&rbrace;") + '` or `{"' + this.input[this.pos] + '"}`?'
                );
              default:
                isNewLine2(ch) ? (out += this.input.slice(chunkStart, this.pos), out += this.jsx_readNewLine(!0), chunkStart = this.pos) : ++this.pos;
            }
          }
        }
        jsx_readNewLine(normalizeCRLF) {
          let ch = this.input.charCodeAt(this.pos), out;
          return ++this.pos, ch === 13 && this.input.charCodeAt(this.pos) === 10 ? (++this.pos, out = normalizeCRLF ? `
` : `\r
`) : out = String.fromCharCode(ch), this.options.locations && (++this.curLine, this.lineStart = this.pos), out;
        }
        jsx_readString(quote) {
          let out = "", chunkStart = ++this.pos;
          for (; ; ) {
            this.pos >= this.input.length && this.raise(this.start, "Unterminated string constant");
            let ch = this.input.charCodeAt(this.pos);
            if (ch === quote) break;
            ch === 38 ? (out += this.input.slice(chunkStart, this.pos), out += this.jsx_readEntity(), chunkStart = this.pos) : isNewLine2(ch) ? (out += this.input.slice(chunkStart, this.pos), out += this.jsx_readNewLine(!1), chunkStart = this.pos) : ++this.pos;
          }
          return out += this.input.slice(chunkStart, this.pos++), this.finishToken(tt.string, out);
        }
        jsx_readEntity() {
          let str = "", count = 0, entity, ch = this.input[this.pos];
          ch !== "&" && this.raise(this.pos, "Entity must start with an ampersand");
          let startPos = ++this.pos;
          for (; this.pos < this.input.length && count++ < 10; ) {
            if (ch = this.input[this.pos++], ch === ";") {
              str[0] === "#" ? str[1] === "x" ? (str = str.substr(2), hexNumber.test(str) && (entity = String.fromCharCode(parseInt(str, 16)))) : (str = str.substr(1), decimalNumber.test(str) && (entity = String.fromCharCode(parseInt(str, 10)))) : entity = XHTMLEntities[str];
              break;
            }
            str += ch;
          }
          return entity || (this.pos = startPos, "&");
        }
        // Read a JSX identifier (valid tag or attribute name).
        //
        // Optimized version since JSX identifiers can't contain
        // escape characters and so can be read as single slice.
        // Also assumes that first character was already checked
        // by isIdentifierStart in readToken.
        jsx_readWord() {
          let ch, start2 = this.pos;
          do
            ch = this.input.charCodeAt(++this.pos);
          while (isIdentifierChar2(ch) || ch === 45);
          return this.finishToken(tok.jsxName, this.input.slice(start2, this.pos));
        }
        // Parse next token as JSX identifier
        jsx_parseIdentifier() {
          let node2 = this.startNode();
          return this.type === tok.jsxName ? node2.name = this.value : this.type.keyword ? node2.name = this.type.keyword : this.unexpected(), this.next(), this.finishNode(node2, "JSXIdentifier");
        }
        // Parse namespaced identifier.
        jsx_parseNamespacedName() {
          let startPos = this.start, startLoc = this.startLoc, name2 = this.jsx_parseIdentifier();
          if (!options.allowNamespaces || !this.eat(tt.colon)) return name2;
          var node2 = this.startNodeAt(startPos, startLoc);
          return node2.namespace = name2, node2.name = this.jsx_parseIdentifier(), this.finishNode(node2, "JSXNamespacedName");
        }
        // Parses element name in any form - namespaced, member
        // or single identifier.
        jsx_parseElementName() {
          if (this.type === tok.jsxTagEnd) return "";
          let startPos = this.start, startLoc = this.startLoc, node2 = this.jsx_parseNamespacedName();
          for (this.type === tt.dot && node2.type === "JSXNamespacedName" && !options.allowNamespacedObjects && this.unexpected(); this.eat(tt.dot); ) {
            let newNode = this.startNodeAt(startPos, startLoc);
            newNode.object = node2, newNode.property = this.jsx_parseIdentifier(), node2 = this.finishNode(newNode, "JSXMemberExpression");
          }
          return node2;
        }
        // Parses any type of JSX attribute value.
        jsx_parseAttributeValue() {
          switch (this.type) {
            case tt.braceL:
              let node2 = this.jsx_parseExpressionContainer();
              return node2.expression.type === "JSXEmptyExpression" && this.raise(node2.start, "JSX attributes must only be assigned a non-empty expression"), node2;
            case tok.jsxTagStart:
            case tt.string:
              return this.parseExprAtom();
            default:
              this.raise(this.start, "JSX value should be either an expression or a quoted JSX text");
          }
        }
        // JSXEmptyExpression is unique type since it doesn't actually parse anything,
        // and so it should start at the end of last read token (left brace) and finish
        // at the beginning of the next one (right brace).
        jsx_parseEmptyExpression() {
          let node2 = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc);
          return this.finishNodeAt(node2, "JSXEmptyExpression", this.start, this.startLoc);
        }
        // Parses JSX expression enclosed into curly brackets.
        jsx_parseExpressionContainer() {
          let node2 = this.startNode();
          return this.next(), node2.expression = this.type === tt.braceR ? this.jsx_parseEmptyExpression() : this.parseExpression(), this.expect(tt.braceR), this.finishNode(node2, "JSXExpressionContainer");
        }
        // Parses following JSX attribute name-value pair.
        jsx_parseAttribute() {
          let node2 = this.startNode();
          return this.eat(tt.braceL) ? (this.expect(tt.ellipsis), node2.argument = this.parseMaybeAssign(), this.expect(tt.braceR), this.finishNode(node2, "JSXSpreadAttribute")) : (node2.name = this.jsx_parseNamespacedName(), node2.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null, this.finishNode(node2, "JSXAttribute"));
        }
        // Parses JSX opening tag starting after '<'.
        jsx_parseOpeningElementAt(startPos, startLoc) {
          let node2 = this.startNodeAt(startPos, startLoc);
          node2.attributes = [];
          let nodeName = this.jsx_parseElementName();
          for (nodeName && (node2.name = nodeName); this.type !== tt.slash && this.type !== tok.jsxTagEnd; )
            node2.attributes.push(this.jsx_parseAttribute());
          return node2.selfClosing = this.eat(tt.slash), this.expect(tok.jsxTagEnd), this.finishNode(node2, nodeName ? "JSXOpeningElement" : "JSXOpeningFragment");
        }
        // Parses JSX closing tag starting after '</'.
        jsx_parseClosingElementAt(startPos, startLoc) {
          let node2 = this.startNodeAt(startPos, startLoc), nodeName = this.jsx_parseElementName();
          return nodeName && (node2.name = nodeName), this.expect(tok.jsxTagEnd), this.finishNode(node2, nodeName ? "JSXClosingElement" : "JSXClosingFragment");
        }
        // Parses entire JSX element, including it's opening tag
        // (starting after '<'), attributes, contents and closing tag.
        jsx_parseElementAt(startPos, startLoc) {
          let node2 = this.startNodeAt(startPos, startLoc), children = [], openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc), closingElement = null;
          if (!openingElement.selfClosing) {
            contents: for (; ; )
              switch (this.type) {
                case tok.jsxTagStart:
                  if (startPos = this.start, startLoc = this.startLoc, this.next(), this.eat(tt.slash)) {
                    closingElement = this.jsx_parseClosingElementAt(startPos, startLoc);
                    break contents;
                  }
                  children.push(this.jsx_parseElementAt(startPos, startLoc));
                  break;
                case tok.jsxText:
                  children.push(this.parseExprAtom());
                  break;
                case tt.braceL:
                  children.push(this.jsx_parseExpressionContainer());
                  break;
                default:
                  this.unexpected();
              }
            getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name) && this.raise(
              closingElement.start,
              "Expected corresponding JSX closing tag for <" + getQualifiedJSXName(openingElement.name) + ">"
            );
          }
          let fragmentOrElement = openingElement.name ? "Element" : "Fragment";
          return node2["opening" + fragmentOrElement] = openingElement, node2["closing" + fragmentOrElement] = closingElement, node2.children = children, this.type === tt.relational && this.value === "<" && this.raise(this.start, "Adjacent JSX elements must be wrapped in an enclosing tag"), this.finishNode(node2, "JSX" + fragmentOrElement);
        }
        // Parse JSX text
        jsx_parseText() {
          let node2 = this.parseLiteral(this.value);
          return node2.type = "JSXText", node2;
        }
        // Parses entire JSX element from current position.
        jsx_parseElement() {
          let startPos = this.start, startLoc = this.startLoc;
          return this.next(), this.jsx_parseElementAt(startPos, startLoc);
        }
        parseExprAtom(refShortHandDefaultPos) {
          return this.type === tok.jsxText ? this.jsx_parseText() : this.type === tok.jsxTagStart ? this.jsx_parseElement() : super.parseExprAtom(refShortHandDefaultPos);
        }
        readToken(code2) {
          let context = this.curContext();
          if (context === tc_expr) return this.jsx_readToken();
          if (context === tc_oTag || context === tc_cTag) {
            if (isIdentifierStart2(code2)) return this.jsx_readWord();
            if (code2 == 62)
              return ++this.pos, this.finishToken(tok.jsxTagEnd);
            if ((code2 === 34 || code2 === 39) && context == tc_oTag)
              return this.jsx_readString(code2);
          }
          return code2 === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33 ? (++this.pos, this.finishToken(tok.jsxTagStart)) : super.readToken(code2);
        }
        updateContext(prevType) {
          if (this.type == tt.braceL) {
            var curContext = this.curContext();
            curContext == tc_oTag ? this.context.push(tokContexts.b_expr) : curContext == tc_expr ? this.context.push(tokContexts.b_tmpl) : super.updateContext(prevType), this.exprAllowed = !0;
          } else if (this.type === tt.slash && prevType === tok.jsxTagStart)
            this.context.length -= 2, this.context.push(tc_cTag), this.exprAllowed = !1;
          else
            return super.updateContext(prevType);
        }
      };
    }
  }
});

// ../../../node_modules/extend/index.js
var require_extend = __commonJS({
  "../../../node_modules/extend/index.js"(exports, module) {
    "use strict";
    var hasOwn2 = Object.prototype.hasOwnProperty, toStr = Object.prototype.toString, defineProperty = Object.defineProperty, gOPD = Object.getOwnPropertyDescriptor, isArray2 = function(arr) {
      return typeof Array.isArray == "function" ? Array.isArray(arr) : toStr.call(arr) === "[object Array]";
    }, isPlainObject2 = function(obj) {
      if (!obj || toStr.call(obj) !== "[object Object]")
        return !1;
      var hasOwnConstructor = hasOwn2.call(obj, "constructor"), hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn2.call(obj.constructor.prototype, "isPrototypeOf");
      if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf)
        return !1;
      var key2;
      for (key2 in obj)
        ;
      return typeof key2 > "u" || hasOwn2.call(obj, key2);
    }, setProperty = function(target, options) {
      defineProperty && options.name === "__proto__" ? defineProperty(target, options.name, {
        enumerable: !0,
        configurable: !0,
        value: options.newValue,
        writable: !0
      }) : target[options.name] = options.newValue;
    }, getProperty = function(obj, name2) {
      if (name2 === "__proto__")
        if (hasOwn2.call(obj, name2)) {
          if (gOPD)
            return gOPD(obj, name2).value;
        } else return;
      return obj[name2];
    };
    module.exports = function extend3() {
      var options, name2, src, copy, copyIsArray, clone, target = arguments[0], i = 1, length = arguments.length, deep = !1;
      for (typeof target == "boolean" && (deep = target, target = arguments[1] || {}, i = 2), (target == null || typeof target != "object" && typeof target != "function") && (target = {}); i < length; ++i)
        if (options = arguments[i], options != null)
          for (name2 in options)
            src = getProperty(target, name2), copy = getProperty(options, name2), target !== copy && (deep && copy && (isPlainObject2(copy) || (copyIsArray = isArray2(copy))) ? (copyIsArray ? (copyIsArray = !1, clone = src && isArray2(src) ? src : []) : clone = src && isPlainObject2(src) ? src : {}, setProperty(target, { name: name2, newValue: extend3(deep, clone, copy) })) : typeof copy < "u" && setProperty(target, { name: name2, newValue: copy }));
      return target;
    };
  }
});

// ../../../node_modules/unist-util-stringify-position/lib/index.js
function stringifyPosition(value) {
  return !value || typeof value != "object" ? "" : "position" in value || "type" in value ? position(value.position) : "start" in value || "end" in value ? position(value) : "line" in value || "column" in value ? point(value) : "";
}
function point(point4) {
  return index(point4 && point4.line) + ":" + index(point4 && point4.column);
}
function position(pos) {
  return point(pos && pos.start) + "-" + point(pos && pos.end);
}
function index(value) {
  return value && typeof value == "number" ? value : 1;
}

// ../../../node_modules/vfile-message/lib/index.js
var VFileMessage = class extends Error {
  /**
   * Create a message for `reason`.
   *
   * > 🪦 **Note**: also has obsolete signatures.
   *
   * @overload
   * @param {string} reason
   * @param {Options | null | undefined} [options]
   * @returns
   *
   * @overload
   * @param {string} reason
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {string} reason
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {string} reason
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {string | null | undefined} [origin]
   * @returns
   *
   * @param {Error | VFileMessage | string} causeOrReason
   *   Reason for message, should use markdown.
   * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]
   *   Configuration (optional).
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns
   *   Instance of `VFileMessage`.
   */
  // eslint-disable-next-line complexity
  constructor(causeOrReason, optionsOrParentOrPlace, origin) {
    super(), typeof optionsOrParentOrPlace == "string" && (origin = optionsOrParentOrPlace, optionsOrParentOrPlace = void 0);
    let reason = "", options = {}, legacyCause = !1;
    if (optionsOrParentOrPlace && ("line" in optionsOrParentOrPlace && "column" in optionsOrParentOrPlace ? options = { place: optionsOrParentOrPlace } : "start" in optionsOrParentOrPlace && "end" in optionsOrParentOrPlace ? options = { place: optionsOrParentOrPlace } : "type" in optionsOrParentOrPlace ? options = {
      ancestors: [optionsOrParentOrPlace],
      place: optionsOrParentOrPlace.position
    } : options = { ...optionsOrParentOrPlace }), typeof causeOrReason == "string" ? reason = causeOrReason : !options.cause && causeOrReason && (legacyCause = !0, reason = causeOrReason.message, options.cause = causeOrReason), !options.ruleId && !options.source && typeof origin == "string") {
      let index2 = origin.indexOf(":");
      index2 === -1 ? options.ruleId = origin : (options.source = origin.slice(0, index2), options.ruleId = origin.slice(index2 + 1));
    }
    if (!options.place && options.ancestors && options.ancestors) {
      let parent = options.ancestors[options.ancestors.length - 1];
      parent && (options.place = parent.position);
    }
    let start2 = options.place && "start" in options.place ? options.place.start : options.place;
    this.ancestors = options.ancestors || void 0, this.cause = options.cause || void 0, this.column = start2 ? start2.column : void 0, this.fatal = void 0, this.file = "", this.message = reason, this.line = start2 ? start2.line : void 0, this.name = stringifyPosition(options.place) || "1:1", this.place = options.place || void 0, this.reason = this.message, this.ruleId = options.ruleId || void 0, this.source = options.source || void 0, this.stack = legacyCause && options.cause && typeof options.cause.stack == "string" ? options.cause.stack : "", this.actual = void 0, this.expected = void 0, this.note = void 0, this.url = void 0;
  }
};
VFileMessage.prototype.file = "";
VFileMessage.prototype.name = "";
VFileMessage.prototype.reason = "";
VFileMessage.prototype.message = "";
VFileMessage.prototype.stack = "";
VFileMessage.prototype.column = void 0;
VFileMessage.prototype.line = void 0;
VFileMessage.prototype.ancestors = void 0;
VFileMessage.prototype.cause = void 0;
VFileMessage.prototype.fatal = void 0;
VFileMessage.prototype.place = void 0;
VFileMessage.prototype.ruleId = void 0;
VFileMessage.prototype.source = void 0;

// ../../../node_modules/vfile/lib/minpath.js
import { default as default2 } from "node:path";

// ../../../node_modules/vfile/lib/minproc.js
import { default as default3 } from "node:process";

// ../../../node_modules/vfile/lib/minurl.js
import { fileURLToPath } from "node:url";

// ../../../node_modules/vfile/lib/minurl.shared.js
function isUrl(fileUrlOrPath) {
  return !!(fileUrlOrPath !== null && typeof fileUrlOrPath == "object" && "href" in fileUrlOrPath && fileUrlOrPath.href && "protocol" in fileUrlOrPath && fileUrlOrPath.protocol && // @ts-expect-error: indexing is fine.
  fileUrlOrPath.auth === void 0);
}

// ../../../node_modules/vfile/lib/index.js
var order = (
  /** @type {const} */
  [
    "history",
    "path",
    "basename",
    "stem",
    "extname",
    "dirname"
  ]
), VFile = class {
  /**
   * Create a new virtual file.
   *
   * `options` is treated as:
   *
   * *   `string` or `Uint8Array` — `{value: options}`
   * *   `URL` — `{path: options}`
   * *   `VFile` — shallow copies its data over to the new file
   * *   `object` — all fields are shallow copied over to the new file
   *
   * Path related fields are set in the following order (least specific to
   * most specific): `history`, `path`, `basename`, `stem`, `extname`,
   * `dirname`.
   *
   * You cannot set `dirname` or `extname` without setting either `history`,
   * `path`, `basename`, or `stem` too.
   *
   * @param {Compatible | null | undefined} [value]
   *   File value.
   * @returns
   *   New instance.
   */
  constructor(value) {
    let options;
    value ? isUrl(value) ? options = { path: value } : typeof value == "string" || isUint8Array(value) ? options = { value } : options = value : options = {}, this.cwd = "cwd" in options ? "" : default3.cwd(), this.data = {}, this.history = [], this.messages = [], this.value, this.map, this.result, this.stored;
    let index2 = -1;
    for (; ++index2 < order.length; ) {
      let field2 = order[index2];
      field2 in options && options[field2] !== void 0 && options[field2] !== null && (this[field2] = field2 === "history" ? [...options[field2]] : options[field2]);
    }
    let field;
    for (field in options)
      order.includes(field) || (this[field] = options[field]);
  }
  /**
   * Get the basename (including extname) (example: `'index.min.js'`).
   *
   * @returns {string | undefined}
   *   Basename.
   */
  get basename() {
    return typeof this.path == "string" ? default2.basename(this.path) : void 0;
  }
  /**
   * Set basename (including extname) (`'index.min.js'`).
   *
   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'`
   * on windows).
   * Cannot be nullified (use `file.path = file.dirname` instead).
   *
   * @param {string} basename
   *   Basename.
   * @returns {undefined}
   *   Nothing.
   */
  set basename(basename) {
    assertNonEmpty(basename, "basename"), assertPart(basename, "basename"), this.path = default2.join(this.dirname || "", basename);
  }
  /**
   * Get the parent path (example: `'~'`).
   *
   * @returns {string | undefined}
   *   Dirname.
   */
  get dirname() {
    return typeof this.path == "string" ? default2.dirname(this.path) : void 0;
  }
  /**
   * Set the parent path (example: `'~'`).
   *
   * Cannot be set if there’s no `path` yet.
   *
   * @param {string | undefined} dirname
   *   Dirname.
   * @returns {undefined}
   *   Nothing.
   */
  set dirname(dirname) {
    assertPath(this.basename, "dirname"), this.path = default2.join(dirname || "", this.basename);
  }
  /**
   * Get the extname (including dot) (example: `'.js'`).
   *
   * @returns {string | undefined}
   *   Extname.
   */
  get extname() {
    return typeof this.path == "string" ? default2.extname(this.path) : void 0;
  }
  /**
   * Set the extname (including dot) (example: `'.js'`).
   *
   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'`
   * on windows).
   * Cannot be set if there’s no `path` yet.
   *
   * @param {string | undefined} extname
   *   Extname.
   * @returns {undefined}
   *   Nothing.
   */
  set extname(extname) {
    if (assertPart(extname, "extname"), assertPath(this.dirname, "extname"), extname) {
      if (extname.codePointAt(0) !== 46)
        throw new Error("`extname` must start with `.`");
      if (extname.includes(".", 1))
        throw new Error("`extname` cannot contain multiple dots");
    }
    this.path = default2.join(this.dirname, this.stem + (extname || ""));
  }
  /**
   * Get the full path (example: `'~/index.min.js'`).
   *
   * @returns {string}
   *   Path.
   */
  get path() {
    return this.history[this.history.length - 1];
  }
  /**
   * Set the full path (example: `'~/index.min.js'`).
   *
   * Cannot be nullified.
   * You can set a file URL (a `URL` object with a `file:` protocol) which will
   * be turned into a path with `url.fileURLToPath`.
   *
   * @param {URL | string} path
   *   Path.
   * @returns {undefined}
   *   Nothing.
   */
  set path(path) {
    isUrl(path) && (path = fileURLToPath(path)), assertNonEmpty(path, "path"), this.path !== path && this.history.push(path);
  }
  /**
   * Get the stem (basename w/o extname) (example: `'index.min'`).
   *
   * @returns {string | undefined}
   *   Stem.
   */
  get stem() {
    return typeof this.path == "string" ? default2.basename(this.path, this.extname) : void 0;
  }
  /**
   * Set the stem (basename w/o extname) (example: `'index.min'`).
   *
   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\'`
   * on windows).
   * Cannot be nullified (use `file.path = file.dirname` instead).
   *
   * @param {string} stem
   *   Stem.
   * @returns {undefined}
   *   Nothing.
   */
  set stem(stem) {
    assertNonEmpty(stem, "stem"), assertPart(stem, "stem"), this.path = default2.join(this.dirname || "", stem + (this.extname || ""));
  }
  // Normal prototypal methods.
  /**
   * Create a fatal message for `reason` associated with the file.
   *
   * The `fatal` field of the message is set to `true` (error; file not usable)
   * and the `file` field is set to the current file path.
   * The message is added to the `messages` field on `file`.
   *
   * > 🪦 **Note**: also has obsolete signatures.
   *
   * @overload
   * @param {string} reason
   * @param {MessageOptions | null | undefined} [options]
   * @returns {never}
   *
   * @overload
   * @param {string} reason
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {string} reason
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {string} reason
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {string | null | undefined} [origin]
   * @returns {never}
   *
   * @param {Error | VFileMessage | string} causeOrReason
   *   Reason for message, should use markdown.
   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]
   *   Configuration (optional).
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns {never}
   *   Never.
   * @throws {VFileMessage}
   *   Message.
   */
  fail(causeOrReason, optionsOrParentOrPlace, origin) {
    let message = this.message(causeOrReason, optionsOrParentOrPlace, origin);
    throw message.fatal = !0, message;
  }
  /**
   * Create an info message for `reason` associated with the file.
   *
   * The `fatal` field of the message is set to `undefined` (info; change
   * likely not needed) and the `file` field is set to the current file path.
   * The message is added to the `messages` field on `file`.
   *
   * > 🪦 **Note**: also has obsolete signatures.
   *
   * @overload
   * @param {string} reason
   * @param {MessageOptions | null | undefined} [options]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @param {Error | VFileMessage | string} causeOrReason
   *   Reason for message, should use markdown.
   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]
   *   Configuration (optional).
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns {VFileMessage}
   *   Message.
   */
  info(causeOrReason, optionsOrParentOrPlace, origin) {
    let message = this.message(causeOrReason, optionsOrParentOrPlace, origin);
    return message.fatal = void 0, message;
  }
  /**
   * Create a message for `reason` associated with the file.
   *
   * The `fatal` field of the message is set to `false` (warning; change may be
   * needed) and the `file` field is set to the current file path.
   * The message is added to the `messages` field on `file`.
   *
   * > 🪦 **Note**: also has obsolete signatures.
   *
   * @overload
   * @param {string} reason
   * @param {MessageOptions | null | undefined} [options]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {string} reason
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Node | NodeLike | null | undefined} parent
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {Point | Position | null | undefined} place
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @overload
   * @param {Error | VFileMessage} cause
   * @param {string | null | undefined} [origin]
   * @returns {VFileMessage}
   *
   * @param {Error | VFileMessage | string} causeOrReason
   *   Reason for message, should use markdown.
   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]
   *   Configuration (optional).
   * @param {string | null | undefined} [origin]
   *   Place in code where the message originates (example:
   *   `'my-package:my-rule'` or `'my-rule'`).
   * @returns {VFileMessage}
   *   Message.
   */
  message(causeOrReason, optionsOrParentOrPlace, origin) {
    let message = new VFileMessage(
      // @ts-expect-error: the overloads are fine.
      causeOrReason,
      optionsOrParentOrPlace,
      origin
    );
    return this.path && (message.name = this.path + ":" + message.name, message.file = this.path), message.fatal = !1, this.messages.push(message), message;
  }
  /**
   * Serialize the file.
   *
   * > **Note**: which encodings are supported depends on the engine.
   * > For info on Node.js, see:
   * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.
   *
   * @param {string | null | undefined} [encoding='utf8']
   *   Character encoding to understand `value` as when it’s a `Uint8Array`
   *   (default: `'utf-8'`).
   * @returns {string}
   *   Serialized file.
   */
  toString(encoding) {
    return this.value === void 0 ? "" : typeof this.value == "string" ? this.value : new TextDecoder(encoding || void 0).decode(this.value);
  }
};
function assertPart(part, name2) {
  if (part && part.includes(default2.sep))
    throw new Error(
      "`" + name2 + "` cannot be a path: did not expect `" + default2.sep + "`"
    );
}
function assertNonEmpty(part, name2) {
  if (!part)
    throw new Error("`" + name2 + "` cannot be empty");
}
function assertPath(path, name2) {
  if (!path)
    throw new Error("Setting `" + name2 + "` requires `path` to be set too");
}
function isUint8Array(value) {
  return !!(value && typeof value == "object" && "byteLength" in value && "byteOffset" in value);
}

// ../../../node_modules/markdown-extensions/index.js
var markdownExtension = [
  "md",
  "markdown",
  "mdown",
  "mkdn",
  "mkd",
  "mdwn",
  "mkdown",
  "ron"
], markdown_extensions_default = markdownExtension;

// ../../../node_modules/@mdx-js/mdx/lib/util/extnames.js
var md = markdown_extensions_default.map(function(d) {
  return "." + d;
});

// ../../../node_modules/@mdx-js/mdx/lib/util/resolve-file-and-options.js
function resolveFileAndOptions(vfileCompatible, options) {
  let file = looksLikeAVFile(vfileCompatible) ? vfileCompatible : new VFile(vfileCompatible), { format, ...rest } = options || {};
  return {
    file,
    options: {
      format: format === "md" || format === "mdx" ? format : file.extname && (rest.mdExtensions || md).includes(file.extname) ? "md" : "mdx",
      ...rest
    }
  };
}
function looksLikeAVFile(value) {
  return !!(value && typeof value == "object" && "message" in value && "messages" in value);
}

// ../../../node_modules/estree-util-is-identifier-name/lib/index.js
var startRe = /[$_\p{ID_Start}]/u, contRe = /[$_\u{200C}\u{200D}\p{ID_Continue}]/u, contReJsx = /[-$_\u{200C}\u{200D}\p{ID_Continue}]/u, nameRe = /^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u, nameReJsx = /^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u, emptyOptions = {};
function start(code2) {
  return code2 ? startRe.test(String.fromCodePoint(code2)) : !1;
}
function cont(code2, options) {
  let re2 = (options || emptyOptions).jsx ? contReJsx : contRe;
  return code2 ? re2.test(String.fromCodePoint(code2)) : !1;
}
function name(name2, options) {
  return ((options || emptyOptions).jsx ? nameReJsx : nameRe).test(name2);
}

// ../../../node_modules/estree-walker/src/walker.js
var WalkerBase = class {
  constructor() {
    this.should_skip = !1, this.should_remove = !1, this.replacement = null, this.context = {
      skip: () => this.should_skip = !0,
      remove: () => this.should_remove = !0,
      replace: (node2) => this.replacement = node2
    };
  }
  /**
   * @template {Node} Parent
   * @param {Parent | null | undefined} parent
   * @param {keyof Parent | null | undefined} prop
   * @param {number | null | undefined} index
   * @param {Node} node
   */
  replace(parent, prop, index2, node2) {
    parent && prop && (index2 != null ? parent[prop][index2] = node2 : parent[prop] = node2);
  }
  /**
   * @template {Node} Parent
   * @param {Parent | null | undefined} parent
   * @param {keyof Parent | null | undefined} prop
   * @param {number | null | undefined} index
   */
  remove(parent, prop, index2) {
    parent && prop && (index2 != null ? parent[prop].splice(index2, 1) : delete parent[prop]);
  }
};

// ../../../node_modules/estree-walker/src/sync.js
var SyncWalker = class extends WalkerBase {
  /**
   *
   * @param {SyncHandler} [enter]
   * @param {SyncHandler} [leave]
   */
  constructor(enter, leave) {
    super(), this.should_skip = !1, this.should_remove = !1, this.replacement = null, this.context = {
      skip: () => this.should_skip = !0,
      remove: () => this.should_remove = !0,
      replace: (node2) => this.replacement = node2
    }, this.enter = enter, this.leave = leave;
  }
  /**
   * @template {Node} Parent
   * @param {Node} node
   * @param {Parent | null} parent
   * @param {keyof Parent} [prop]
   * @param {number | null} [index]
   * @returns {Node | null}
   */
  visit(node2, parent, prop, index2) {
    if (node2) {
      if (this.enter) {
        let _should_skip = this.should_skip, _should_remove = this.should_remove, _replacement = this.replacement;
        this.should_skip = !1, this.should_remove = !1, this.replacement = null, this.enter.call(this.context, node2, parent, prop, index2), this.replacement && (node2 = this.replacement, this.replace(parent, prop, index2, node2)), this.should_remove && this.remove(parent, prop, index2);
        let skipped = this.should_skip, removed = this.should_remove;
        if (this.should_skip = _should_skip, this.should_remove = _should_remove, this.replacement = _replacement, skipped) return node2;
        if (removed) return null;
      }
      let key2;
      for (key2 in node2) {
        let value = node2[key2];
        if (value && typeof value == "object")
          if (Array.isArray(value)) {
            let nodes = (
              /** @type {Array<unknown>} */
              value
            );
            for (let i = 0; i < nodes.length; i += 1) {
              let item = nodes[i];
              isNode(item) && (this.visit(item, node2, key2, i) || i--);
            }
          } else isNode(value) && this.visit(value, node2, key2, null);
      }
      if (this.leave) {
        let _replacement = this.replacement, _should_remove = this.should_remove;
        this.replacement = null, this.should_remove = !1, this.leave.call(this.context, node2, parent, prop, index2), this.replacement && (node2 = this.replacement, this.replace(parent, prop, index2, node2)), this.should_remove && this.remove(parent, prop, index2);
        let removed = this.should_remove;
        if (this.replacement = _replacement, this.should_remove = _should_remove, removed) return null;
      }
    }
    return node2;
  }
};
function isNode(value) {
  return value !== null && typeof value == "object" && "type" in value && typeof value.type == "string";
}

// ../../../node_modules/estree-walker/src/index.js
function walk(ast, { enter, leave }) {
  return new SyncWalker(enter, leave).visit(ast, null);
}

// ../../../node_modules/estree-util-build-jsx/lib/index.js
var regex = /@(jsx|jsxFrag|jsxImportSource|jsxRuntime)\s+(\S+)/g;
function buildJsx(tree, options) {
  let config = options || {}, automatic = config.runtime === "automatic", annotations = {}, imports = {};
  walk(tree, {
    enter(node2) {
      if (node2.type === "Program") {
        let comments = node2.comments || [], index2 = -1;
        for (; ++index2 < comments.length; ) {
          regex.lastIndex = 0;
          let match = regex.exec(comments[index2].value);
          for (; match; )
            annotations[match[1]] = match[2], match = regex.exec(comments[index2].value);
        }
        if (annotations.jsxRuntime)
          if (annotations.jsxRuntime === "automatic") {
            if (automatic = !0, annotations.jsx)
              throw new Error("Unexpected `@jsx` pragma w/ automatic runtime");
            if (annotations.jsxFrag)
              throw new Error(
                "Unexpected `@jsxFrag` pragma w/ automatic runtime"
              );
          } else if (annotations.jsxRuntime === "classic") {
            if (automatic = !1, annotations.jsxImportSource)
              throw new Error(
                "Unexpected `@jsxImportSource` w/ classic runtime"
              );
          } else
            throw new Error(
              "Unexpected `jsxRuntime` `" + annotations.jsxRuntime + "`, expected `automatic` or `classic`"
            );
      }
    },
    // eslint-disable-next-line complexity
    leave(node2) {
      if (node2.type === "Program") {
        let specifiers = [];
        if (imports.fragment && specifiers.push({
          type: "ImportSpecifier",
          imported: { type: "Identifier", name: "Fragment" },
          local: { type: "Identifier", name: "_Fragment" }
        }), imports.jsx && specifiers.push({
          type: "ImportSpecifier",
          imported: { type: "Identifier", name: "jsx" },
          local: { type: "Identifier", name: "_jsx" }
        }), imports.jsxs && specifiers.push({
          type: "ImportSpecifier",
          imported: { type: "Identifier", name: "jsxs" },
          local: { type: "Identifier", name: "_jsxs" }
        }), imports.jsxDEV && specifiers.push({
          type: "ImportSpecifier",
          imported: { type: "Identifier", name: "jsxDEV" },
          local: { type: "Identifier", name: "_jsxDEV" }
        }), specifiers.length > 0) {
          let injectIndex = 0;
          for (; injectIndex < node2.body.length; ) {
            let child = node2.body[injectIndex];
            if ("directive" in child && child.directive)
              injectIndex++;
            else
              break;
          }
          node2.body.splice(injectIndex, 0, {
            type: "ImportDeclaration",
            specifiers,
            source: {
              type: "Literal",
              value: (annotations.jsxImportSource || config.importSource || "react") + (config.development ? "/jsx-dev-runtime" : "/jsx-runtime")
            }
          });
        }
      }
      if (node2.type !== "JSXElement" && node2.type !== "JSXFragment")
        return;
      let children = [], index2 = -1;
      for (; ++index2 < node2.children.length; ) {
        let child = node2.children[index2];
        if (child.type === "JSXExpressionContainer")
          child.expression.type !== "JSXEmptyExpression" && children.push(child.expression);
        else if (child.type === "JSXText") {
          let value = child.value.replace(/\t/g, " ").replace(/ *(\r?\n|\r) */g, `
`).replace(/\n+/g, `
`).replace(/\n+$/, "").replace(/^\n+/, "").replace(/\n/g, " ");
          if (value) {
            let text5 = { type: "Literal", value };
            create(child, text5), children.push(text5);
          }
        } else
          child.type !== "JSXElement" && child.type !== "JSXFragment" && child.type, children.push(child);
      }
      let name2, fields = [], parameters = [], key2;
      if (node2.type === "JSXElement") {
        if (name2 = toIdentifier(node2.openingElement.name), name2.type === "Identifier" && /^[a-z]/.test(name2.name)) {
          let next = { type: "Literal", value: name2.name };
          create(name2, next), name2 = next;
        }
        let spread, attributes = node2.openingElement.attributes, index3 = -1;
        for (; ++index3 < attributes.length; ) {
          let attribute = attributes[index3];
          if (attribute.type === "JSXSpreadAttribute")
            attribute.argument.type === "ObjectExpression" ? fields.push(...attribute.argument.properties) : fields.push({ type: "SpreadElement", argument: attribute.argument }), spread = !0;
          else {
            let prop = toProperty(attribute);
            if (automatic && prop.key.type === "Identifier" && prop.key.name === "key") {
              if (spread)
                throw new Error(
                  "Expected `key` to come before any spread expressions"
                );
              let value = prop.value;
              value.type !== "AssignmentPattern" && value.type !== "ArrayPattern" && value.type !== "ObjectPattern" && value.type, key2 = value;
            } else
              fields.push(prop);
          }
        }
      } else automatic ? (imports.fragment = !0, name2 = { type: "Identifier", name: "_Fragment" }) : name2 = toMemberExpression(
        annotations.jsxFrag || config.pragmaFrag || "React.Fragment"
      );
      automatic ? children.length > 0 && fields.push({
        type: "Property",
        key: { type: "Identifier", name: "children" },
        value: children.length > 1 ? { type: "ArrayExpression", elements: children } : children[0],
        kind: "init",
        method: !1,
        shorthand: !1,
        computed: !1
      }) : parameters = children;
      let callee;
      if (automatic) {
        parameters.push({ type: "ObjectExpression", properties: fields }), key2 ? parameters.push(key2) : config.development && parameters.push({ type: "Identifier", name: "undefined" });
        let isStaticChildren = children.length > 1;
        if (config.development) {
          imports.jsxDEV = !0, callee = {
            type: "Identifier",
            name: "_jsxDEV"
          }, parameters.push({ type: "Literal", value: isStaticChildren });
          let source = {
            type: "ObjectExpression",
            properties: [
              {
                type: "Property",
                method: !1,
                shorthand: !1,
                computed: !1,
                kind: "init",
                key: { type: "Identifier", name: "fileName" },
                value: {
                  type: "Literal",
                  value: config.filePath || "<source.js>"
                }
              }
            ]
          };
          node2.loc && source.properties.push(
            {
              type: "Property",
              method: !1,
              shorthand: !1,
              computed: !1,
              kind: "init",
              key: { type: "Identifier", name: "lineNumber" },
              value: { type: "Literal", value: node2.loc.start.line }
            },
            {
              type: "Property",
              method: !1,
              shorthand: !1,
              computed: !1,
              kind: "init",
              key: { type: "Identifier", name: "columnNumber" },
              value: { type: "Literal", value: node2.loc.start.column + 1 }
            }
          ), parameters.push(source, { type: "ThisExpression" });
        } else isStaticChildren ? (imports.jsxs = !0, callee = { type: "Identifier", name: "_jsxs" }) : (imports.jsx = !0, callee = { type: "Identifier", name: "_jsx" });
      } else
        fields.length > 0 ? parameters.unshift({ type: "ObjectExpression", properties: fields }) : parameters.length > 0 && parameters.unshift({ type: "Literal", value: null }), callee = toMemberExpression(
          annotations.jsx || config.pragma || "React.createElement"
        );
      parameters.unshift(name2);
      let call = {
        type: "CallExpression",
        callee,
        arguments: parameters,
        optional: !1
      };
      create(node2, call), this.replace(call);
    }
  });
}
function toProperty(node2) {
  let value;
  if (node2.value)
    if (node2.value.type === "JSXExpressionContainer") {
      let valueExpression = node2.value.expression;
      valueExpression.type, value = valueExpression;
    } else {
      let nodeValue = node2.value;
      nodeValue.type !== "JSXElement" && nodeValue.type, value = nodeValue, delete value.raw;
    }
  else
    value = { type: "Literal", value: !0 };
  let replacement = {
    type: "Property",
    key: toIdentifier(node2.name),
    value,
    kind: "init",
    method: !1,
    shorthand: !1,
    computed: !1
  };
  return create(node2, replacement), replacement;
}
function toIdentifier(node2) {
  let replace;
  if (node2.type === "JSXMemberExpression") {
    let id = toIdentifier(node2.property);
    replace = {
      type: "MemberExpression",
      object: toIdentifier(node2.object),
      property: id,
      computed: id.type === "Literal",
      optional: !1
    };
  } else node2.type === "JSXNamespacedName" ? replace = {
    type: "Literal",
    value: node2.namespace.name + ":" + node2.name.name
  } : replace = name(node2.name) ? { type: "Identifier", name: node2.name } : { type: "Literal", value: node2.name };
  return create(node2, replace), replace;
}
function toMemberExpression(id) {
  let identifiers = id.split("."), index2 = -1, result;
  for (; ++index2 < identifiers.length; ) {
    let prop = name(identifiers[index2]) ? { type: "Identifier", name: identifiers[index2] } : { type: "Literal", value: identifiers[index2] };
    result = result ? {
      type: "MemberExpression",
      object: result,
      property: prop,
      computed: !!(index2 && prop.type === "Literal"),
      optional: !1
    } : prop;
  }
  return result;
}
function create(from, to) {
  let fields = ["start", "end", "loc", "range", "comments"], index2 = -1;
  for (; ++index2 < fields.length; ) {
    let field = fields[index2];
    field in from && (to[field] = from[field]);
  }
}

// ../../../node_modules/recma-build-jsx/lib/index.js
function recmaJsx(options) {
  return function(tree, file) {
    buildJsx(tree, { filePath: file.history[0], ...options });
  };
}

// ../../../node_modules/@mdx-js/mdx/node_modules/recma-jsx/lib/index.js
var import_acorn_jsx = __toESM(require_acorn_jsx(), 1);

// ../../../node_modules/astring/dist/astring.mjs
var { stringify: stringify2 } = JSON;
if (!String.prototype.repeat)
  throw new Error(
    "String.prototype.repeat is undefined, see https://github.com/davidbonnet/astring#installation"
  );
if (!String.prototype.endsWith)
  throw new Error(
    "String.prototype.endsWith is undefined, see https://github.com/davidbonnet/astring#installation"
  );
var OPERATOR_PRECEDENCE = {
  "||": 2,
  "??": 3,
  "&&": 4,
  "|": 5,
  "^": 6,
  "&": 7,
  "==": 8,
  "!=": 8,
  "===": 8,
  "!==": 8,
  "<": 9,
  ">": 9,
  "<=": 9,
  ">=": 9,
  in: 9,
  instanceof: 9,
  "<<": 10,
  ">>": 10,
  ">>>": 10,
  "+": 11,
  "-": 11,
  "*": 12,
  "%": 12,
  "/": 12,
  "**": 13
}, NEEDS_PARENTHESES = 17, EXPRESSIONS_PRECEDENCE = {
  // Definitions
  ArrayExpression: 20,
  TaggedTemplateExpression: 20,
  ThisExpression: 20,
  Identifier: 20,
  PrivateIdentifier: 20,
  Literal: 18,
  TemplateLiteral: 20,
  Super: 20,
  SequenceExpression: 20,
  // Operations
  MemberExpression: 19,
  ChainExpression: 19,
  CallExpression: 19,
  NewExpression: 19,
  // Other definitions
  ArrowFunctionExpression: NEEDS_PARENTHESES,
  ClassExpression: NEEDS_PARENTHESES,
  FunctionExpression: NEEDS_PARENTHESES,
  ObjectExpression: NEEDS_PARENTHESES,
  // Other operations
  UpdateExpression: 16,
  UnaryExpression: 15,
  AwaitExpression: 15,
  BinaryExpression: 14,
  LogicalExpression: 13,
  ConditionalExpression: 4,
  AssignmentExpression: 3,
  YieldExpression: 2,
  RestElement: 1
};
function formatSequence(state, nodes) {
  let { generator } = state;
  if (state.write("("), nodes != null && nodes.length > 0) {
    generator[nodes[0].type](nodes[0], state);
    let { length } = nodes;
    for (let i = 1; i < length; i++) {
      let param = nodes[i];
      state.write(", "), generator[param.type](param, state);
    }
  }
  state.write(")");
}
function expressionNeedsParenthesis(state, node2, parentNode, isRightHand) {
  let nodePrecedence = state.expressionsPrecedence[node2.type];
  if (nodePrecedence === NEEDS_PARENTHESES)
    return !0;
  let parentNodePrecedence = state.expressionsPrecedence[parentNode.type];
  return nodePrecedence !== parentNodePrecedence ? !isRightHand && nodePrecedence === 15 && parentNodePrecedence === 14 && parentNode.operator === "**" || nodePrecedence < parentNodePrecedence : nodePrecedence !== 13 && nodePrecedence !== 14 ? !1 : node2.operator === "**" && parentNode.operator === "**" ? !isRightHand : nodePrecedence === 13 && parentNodePrecedence === 13 && (node2.operator === "??" || parentNode.operator === "??") ? !0 : isRightHand ? OPERATOR_PRECEDENCE[node2.operator] <= OPERATOR_PRECEDENCE[parentNode.operator] : OPERATOR_PRECEDENCE[node2.operator] < OPERATOR_PRECEDENCE[parentNode.operator];
}
function formatExpression(state, node2, parentNode, isRightHand) {
  let { generator } = state;
  expressionNeedsParenthesis(state, node2, parentNode, isRightHand) ? (state.write("("), generator[node2.type](node2, state), state.write(")")) : generator[node2.type](node2, state);
}
function reindent(state, text5, indent2, lineEnd) {
  let lines = text5.split(`
`), end = lines.length - 1;
  if (state.write(lines[0].trim()), end > 0) {
    state.write(lineEnd);
    for (let i = 1; i < end; i++)
      state.write(indent2 + lines[i].trim() + lineEnd);
    state.write(indent2 + lines[end].trim());
  }
}
function formatComments(state, comments, indent2, lineEnd) {
  let { length } = comments;
  for (let i = 0; i < length; i++) {
    let comment2 = comments[i];
    state.write(indent2), comment2.type[0] === "L" ? state.write("// " + comment2.value.trim() + `
`, comment2) : (state.write("/*"), reindent(state, comment2.value, indent2, lineEnd), state.write("*/" + lineEnd));
  }
}
function hasCallExpression(node2) {
  let currentNode = node2;
  for (; currentNode != null; ) {
    let { type } = currentNode;
    if (type[0] === "C" && type[1] === "a")
      return !0;
    if (type[0] === "M" && type[1] === "e" && type[2] === "m")
      currentNode = currentNode.object;
    else
      return !1;
  }
}
function formatVariableDeclaration(state, node2) {
  let { generator } = state, { declarations } = node2;
  state.write(node2.kind + " ");
  let { length } = declarations;
  if (length > 0) {
    generator.VariableDeclarator(declarations[0], state);
    for (let i = 1; i < length; i++)
      state.write(", "), generator.VariableDeclarator(declarations[i], state);
  }
}
var ForInStatement, FunctionDeclaration, RestElement, BinaryExpression, ArrayExpression, BlockStatement, GENERATOR = {
  /*
  Default generator.
  */
  Program(node2, state) {
    let indent2 = state.indent.repeat(state.indentLevel), { lineEnd, writeComments } = state;
    writeComments && node2.comments != null && formatComments(state, node2.comments, indent2, lineEnd);
    let statements = node2.body, { length } = statements;
    for (let i = 0; i < length; i++) {
      let statement = statements[i];
      writeComments && statement.comments != null && formatComments(state, statement.comments, indent2, lineEnd), state.write(indent2), this[statement.type](statement, state), state.write(lineEnd);
    }
    writeComments && node2.trailingComments != null && formatComments(state, node2.trailingComments, indent2, lineEnd);
  },
  BlockStatement: BlockStatement = function(node2, state) {
    let indent2 = state.indent.repeat(state.indentLevel++), { lineEnd, writeComments } = state, statementIndent = indent2 + state.indent;
    state.write("{");
    let statements = node2.body;
    if (statements != null && statements.length > 0) {
      state.write(lineEnd), writeComments && node2.comments != null && formatComments(state, node2.comments, statementIndent, lineEnd);
      let { length } = statements;
      for (let i = 0; i < length; i++) {
        let statement = statements[i];
        writeComments && statement.comments != null && formatComments(state, statement.comments, statementIndent, lineEnd), state.write(statementIndent), this[statement.type](statement, state), state.write(lineEnd);
      }
      state.write(indent2);
    } else
      writeComments && node2.comments != null && (state.write(lineEnd), formatComments(state, node2.comments, statementIndent, lineEnd), state.write(indent2));
    writeComments && node2.trailingComments != null && formatComments(state, node2.trailingComments, statementIndent, lineEnd), state.write("}"), state.indentLevel--;
  },
  ClassBody: BlockStatement,
  StaticBlock(node2, state) {
    state.write("static "), this.BlockStatement(node2, state);
  },
  EmptyStatement(node2, state) {
    state.write(";");
  },
  ExpressionStatement(node2, state) {
    let precedence = state.expressionsPrecedence[node2.expression.type];
    precedence === NEEDS_PARENTHESES || precedence === 3 && node2.expression.left.type[0] === "O" ? (state.write("("), this[node2.expression.type](node2.expression, state), state.write(")")) : this[node2.expression.type](node2.expression, state), state.write(";");
  },
  IfStatement(node2, state) {
    state.write("if ("), this[node2.test.type](node2.test, state), state.write(") "), this[node2.consequent.type](node2.consequent, state), node2.alternate != null && (state.write(" else "), this[node2.alternate.type](node2.alternate, state));
  },
  LabeledStatement(node2, state) {
    this[node2.label.type](node2.label, state), state.write(": "), this[node2.body.type](node2.body, state);
  },
  BreakStatement(node2, state) {
    state.write("break"), node2.label != null && (state.write(" "), this[node2.label.type](node2.label, state)), state.write(";");
  },
  ContinueStatement(node2, state) {
    state.write("continue"), node2.label != null && (state.write(" "), this[node2.label.type](node2.label, state)), state.write(";");
  },
  WithStatement(node2, state) {
    state.write("with ("), this[node2.object.type](node2.object, state), state.write(") "), this[node2.body.type](node2.body, state);
  },
  SwitchStatement(node2, state) {
    let indent2 = state.indent.repeat(state.indentLevel++), { lineEnd, writeComments } = state;
    state.indentLevel++;
    let caseIndent = indent2 + state.indent, statementIndent = caseIndent + state.indent;
    state.write("switch ("), this[node2.discriminant.type](node2.discriminant, state), state.write(") {" + lineEnd);
    let { cases: occurences } = node2, { length: occurencesCount } = occurences;
    for (let i = 0; i < occurencesCount; i++) {
      let occurence = occurences[i];
      writeComments && occurence.comments != null && formatComments(state, occurence.comments, caseIndent, lineEnd), occurence.test ? (state.write(caseIndent + "case "), this[occurence.test.type](occurence.test, state), state.write(":" + lineEnd)) : state.write(caseIndent + "default:" + lineEnd);
      let { consequent } = occurence, { length: consequentCount } = consequent;
      for (let i2 = 0; i2 < consequentCount; i2++) {
        let statement = consequent[i2];
        writeComments && statement.comments != null && formatComments(state, statement.comments, statementIndent, lineEnd), state.write(statementIndent), this[statement.type](statement, state), state.write(lineEnd);
      }
    }
    state.indentLevel -= 2, state.write(indent2 + "}");
  },
  ReturnStatement(node2, state) {
    state.write("return"), node2.argument && (state.write(" "), this[node2.argument.type](node2.argument, state)), state.write(";");
  },
  ThrowStatement(node2, state) {
    state.write("throw "), this[node2.argument.type](node2.argument, state), state.write(";");
  },
  TryStatement(node2, state) {
    if (state.write("try "), this[node2.block.type](node2.block, state), node2.handler) {
      let { handler } = node2;
      handler.param == null ? state.write(" catch ") : (state.write(" catch ("), this[handler.param.type](handler.param, state), state.write(") ")), this[handler.body.type](handler.body, state);
    }
    node2.finalizer && (state.write(" finally "), this[node2.finalizer.type](node2.finalizer, state));
  },
  WhileStatement(node2, state) {
    state.write("while ("), this[node2.test.type](node2.test, state), state.write(") "), this[node2.body.type](node2.body, state);
  },
  DoWhileStatement(node2, state) {
    state.write("do "), this[node2.body.type](node2.body, state), state.write(" while ("), this[node2.test.type](node2.test, state), state.write(");");
  },
  ForStatement(node2, state) {
    if (state.write("for ("), node2.init != null) {
      let { init } = node2;
      init.type[0] === "V" ? formatVariableDeclaration(state, init) : this[init.type](init, state);
    }
    state.write("; "), node2.test && this[node2.test.type](node2.test, state), state.write("; "), node2.update && this[node2.update.type](node2.update, state), state.write(") "), this[node2.body.type](node2.body, state);
  },
  ForInStatement: ForInStatement = function(node2, state) {
    state.write(`for ${node2.await ? "await " : ""}(`);
    let { left } = node2;
    left.type[0] === "V" ? formatVariableDeclaration(state, left) : this[left.type](left, state), state.write(node2.type[3] === "I" ? " in " : " of "), this[node2.right.type](node2.right, state), state.write(") "), this[node2.body.type](node2.body, state);
  },
  ForOfStatement: ForInStatement,
  DebuggerStatement(node2, state) {
    state.write("debugger;", node2);
  },
  FunctionDeclaration: FunctionDeclaration = function(node2, state) {
    state.write(
      (node2.async ? "async " : "") + (node2.generator ? "function* " : "function ") + (node2.id ? node2.id.name : ""),
      node2
    ), formatSequence(state, node2.params), state.write(" "), this[node2.body.type](node2.body, state);
  },
  FunctionExpression: FunctionDeclaration,
  VariableDeclaration(node2, state) {
    formatVariableDeclaration(state, node2), state.write(";");
  },
  VariableDeclarator(node2, state) {
    this[node2.id.type](node2.id, state), node2.init != null && (state.write(" = "), this[node2.init.type](node2.init, state));
  },
  ClassDeclaration(node2, state) {
    if (state.write("class " + (node2.id ? `${node2.id.name} ` : ""), node2), node2.superClass) {
      state.write("extends ");
      let { superClass } = node2, { type } = superClass, precedence = state.expressionsPrecedence[type];
      (type[0] !== "C" || type[1] !== "l" || type[5] !== "E") && (precedence === NEEDS_PARENTHESES || precedence < state.expressionsPrecedence.ClassExpression) ? (state.write("("), this[node2.superClass.type](superClass, state), state.write(")")) : this[superClass.type](superClass, state), state.write(" ");
    }
    this.ClassBody(node2.body, state);
  },
  ImportDeclaration(node2, state) {
    state.write("import ");
    let { specifiers, attributes } = node2, { length } = specifiers, i = 0;
    if (length > 0) {
      for (; i < length; ) {
        i > 0 && state.write(", ");
        let specifier = specifiers[i], type = specifier.type[6];
        if (type === "D")
          state.write(specifier.local.name, specifier), i++;
        else if (type === "N")
          state.write("* as " + specifier.local.name, specifier), i++;
        else
          break;
      }
      if (i < length) {
        for (state.write("{"); ; ) {
          let specifier = specifiers[i], { name: name2 } = specifier.imported;
          if (state.write(name2, specifier), name2 !== specifier.local.name && state.write(" as " + specifier.local.name), ++i < length)
            state.write(", ");
          else
            break;
        }
        state.write("}");
      }
      state.write(" from ");
    }
    if (this.Literal(node2.source, state), attributes && attributes.length > 0) {
      state.write(" with { ");
      for (let i2 = 0; i2 < attributes.length; i2++)
        this.ImportAttribute(attributes[i2], state), i2 < attributes.length - 1 && state.write(", ");
      state.write(" }");
    }
    state.write(";");
  },
  ImportAttribute(node2, state) {
    this.Identifier(node2.key, state), state.write(": "), this.Literal(node2.value, state);
  },
  ImportExpression(node2, state) {
    state.write("import("), this[node2.source.type](node2.source, state), state.write(")");
  },
  ExportDefaultDeclaration(node2, state) {
    state.write("export default "), this[node2.declaration.type](node2.declaration, state), state.expressionsPrecedence[node2.declaration.type] != null && node2.declaration.type[0] !== "F" && state.write(";");
  },
  ExportNamedDeclaration(node2, state) {
    if (state.write("export "), node2.declaration)
      this[node2.declaration.type](node2.declaration, state);
    else {
      state.write("{");
      let { specifiers } = node2, { length } = specifiers;
      if (length > 0)
        for (let i = 0; ; ) {
          let specifier = specifiers[i], { name: name2 } = specifier.local;
          if (state.write(name2, specifier), name2 !== specifier.exported.name && state.write(" as " + specifier.exported.name), ++i < length)
            state.write(", ");
          else
            break;
        }
      if (state.write("}"), node2.source && (state.write(" from "), this.Literal(node2.source, state)), node2.attributes && node2.attributes.length > 0) {
        state.write(" with { ");
        for (let i = 0; i < node2.attributes.length; i++)
          this.ImportAttribute(node2.attributes[i], state), i < node2.attributes.length - 1 && state.write(", ");
        state.write(" }");
      }
      state.write(";");
    }
  },
  ExportAllDeclaration(node2, state) {
    if (node2.exported != null ? state.write("export * as " + node2.exported.name + " from ") : state.write("export * from "), this.Literal(node2.source, state), node2.attributes && node2.attributes.length > 0) {
      state.write(" with { ");
      for (let i = 0; i < node2.attributes.length; i++)
        this.ImportAttribute(node2.attributes[i], state), i < node2.attributes.length - 1 && state.write(", ");
      state.write(" }");
    }
    state.write(";");
  },
  MethodDefinition(node2, state) {
    node2.static && state.write("static ");
    let kind = node2.kind[0];
    (kind === "g" || kind === "s") && state.write(node2.kind + " "), node2.value.async && state.write("async "), node2.value.generator && state.write("*"), node2.computed ? (state.write("["), this[node2.key.type](node2.key, state), state.write("]")) : this[node2.key.type](node2.key, state), formatSequence(state, node2.value.params), state.write(" "), this[node2.value.body.type](node2.value.body, state);
  },
  ClassExpression(node2, state) {
    this.ClassDeclaration(node2, state);
  },
  ArrowFunctionExpression(node2, state) {
    state.write(node2.async ? "async " : "", node2);
    let { params } = node2;
    params != null && (params.length === 1 && params[0].type[0] === "I" ? state.write(params[0].name, params[0]) : formatSequence(state, node2.params)), state.write(" => "), node2.body.type[0] === "O" ? (state.write("("), this.ObjectExpression(node2.body, state), state.write(")")) : this[node2.body.type](node2.body, state);
  },
  ThisExpression(node2, state) {
    state.write("this", node2);
  },
  Super(node2, state) {
    state.write("super", node2);
  },
  RestElement: RestElement = function(node2, state) {
    state.write("..."), this[node2.argument.type](node2.argument, state);
  },
  SpreadElement: RestElement,
  YieldExpression(node2, state) {
    state.write(node2.delegate ? "yield*" : "yield"), node2.argument && (state.write(" "), this[node2.argument.type](node2.argument, state));
  },
  AwaitExpression(node2, state) {
    state.write("await ", node2), formatExpression(state, node2.argument, node2);
  },
  TemplateLiteral(node2, state) {
    let { quasis, expressions } = node2;
    state.write("`");
    let { length } = expressions;
    for (let i = 0; i < length; i++) {
      let expression = expressions[i], quasi2 = quasis[i];
      state.write(quasi2.value.raw, quasi2), state.write("${"), this[expression.type](expression, state), state.write("}");
    }
    let quasi = quasis[quasis.length - 1];
    state.write(quasi.value.raw, quasi), state.write("`");
  },
  TemplateElement(node2, state) {
    state.write(node2.value.raw, node2);
  },
  TaggedTemplateExpression(node2, state) {
    formatExpression(state, node2.tag, node2), this[node2.quasi.type](node2.quasi, state);
  },
  ArrayExpression: ArrayExpression = function(node2, state) {
    if (state.write("["), node2.elements.length > 0) {
      let { elements } = node2, { length } = elements;
      for (let i = 0; ; ) {
        let element2 = elements[i];
        if (element2 != null && this[element2.type](element2, state), ++i < length)
          state.write(", ");
        else {
          element2 == null && state.write(", ");
          break;
        }
      }
    }
    state.write("]");
  },
  ArrayPattern: ArrayExpression,
  ObjectExpression(node2, state) {
    let indent2 = state.indent.repeat(state.indentLevel++), { lineEnd, writeComments } = state, propertyIndent = indent2 + state.indent;
    if (state.write("{"), node2.properties.length > 0) {
      state.write(lineEnd), writeComments && node2.comments != null && formatComments(state, node2.comments, propertyIndent, lineEnd);
      let comma = "," + lineEnd, { properties } = node2, { length } = properties;
      for (let i = 0; ; ) {
        let property = properties[i];
        if (writeComments && property.comments != null && formatComments(state, property.comments, propertyIndent, lineEnd), state.write(propertyIndent), this[property.type](property, state), ++i < length)
          state.write(comma);
        else
          break;
      }
      state.write(lineEnd), writeComments && node2.trailingComments != null && formatComments(state, node2.trailingComments, propertyIndent, lineEnd), state.write(indent2 + "}");
    } else writeComments ? node2.comments != null ? (state.write(lineEnd), formatComments(state, node2.comments, propertyIndent, lineEnd), node2.trailingComments != null && formatComments(state, node2.trailingComments, propertyIndent, lineEnd), state.write(indent2 + "}")) : node2.trailingComments != null ? (state.write(lineEnd), formatComments(state, node2.trailingComments, propertyIndent, lineEnd), state.write(indent2 + "}")) : state.write("}") : state.write("}");
    state.indentLevel--;
  },
  Property(node2, state) {
    node2.method || node2.kind[0] !== "i" ? this.MethodDefinition(node2, state) : (node2.shorthand || (node2.computed ? (state.write("["), this[node2.key.type](node2.key, state), state.write("]")) : this[node2.key.type](node2.key, state), state.write(": ")), this[node2.value.type](node2.value, state));
  },
  PropertyDefinition(node2, state) {
    if (node2.static && state.write("static "), node2.computed && state.write("["), this[node2.key.type](node2.key, state), node2.computed && state.write("]"), node2.value == null) {
      node2.key.type[0] !== "F" && state.write(";");
      return;
    }
    state.write(" = "), this[node2.value.type](node2.value, state), state.write(";");
  },
  ObjectPattern(node2, state) {
    if (state.write("{"), node2.properties.length > 0) {
      let { properties } = node2, { length } = properties;
      for (let i = 0; this[properties[i].type](properties[i], state), ++i < length; )
        state.write(", ");
    }
    state.write("}");
  },
  SequenceExpression(node2, state) {
    formatSequence(state, node2.expressions);
  },
  UnaryExpression(node2, state) {
    if (node2.prefix) {
      let {
        operator,
        argument,
        argument: { type }
      } = node2;
      state.write(operator);
      let needsParentheses = expressionNeedsParenthesis(state, argument, node2);
      !needsParentheses && (operator.length > 1 || type[0] === "U" && (type[1] === "n" || type[1] === "p") && argument.prefix && argument.operator[0] === operator && (operator === "+" || operator === "-")) && state.write(" "), needsParentheses ? (state.write(operator.length > 1 ? " (" : "("), this[type](argument, state), state.write(")")) : this[type](argument, state);
    } else
      this[node2.argument.type](node2.argument, state), state.write(node2.operator);
  },
  UpdateExpression(node2, state) {
    node2.prefix ? (state.write(node2.operator), this[node2.argument.type](node2.argument, state)) : (this[node2.argument.type](node2.argument, state), state.write(node2.operator));
  },
  AssignmentExpression(node2, state) {
    this[node2.left.type](node2.left, state), state.write(" " + node2.operator + " "), this[node2.right.type](node2.right, state);
  },
  AssignmentPattern(node2, state) {
    this[node2.left.type](node2.left, state), state.write(" = "), this[node2.right.type](node2.right, state);
  },
  BinaryExpression: BinaryExpression = function(node2, state) {
    let isIn = node2.operator === "in";
    isIn && state.write("("), formatExpression(state, node2.left, node2, !1), state.write(" " + node2.operator + " "), formatExpression(state, node2.right, node2, !0), isIn && state.write(")");
  },
  LogicalExpression: BinaryExpression,
  ConditionalExpression(node2, state) {
    let { test } = node2, precedence = state.expressionsPrecedence[test.type];
    precedence === NEEDS_PARENTHESES || precedence <= state.expressionsPrecedence.ConditionalExpression ? (state.write("("), this[test.type](test, state), state.write(")")) : this[test.type](test, state), state.write(" ? "), this[node2.consequent.type](node2.consequent, state), state.write(" : "), this[node2.alternate.type](node2.alternate, state);
  },
  NewExpression(node2, state) {
    state.write("new ");
    let precedence = state.expressionsPrecedence[node2.callee.type];
    precedence === NEEDS_PARENTHESES || precedence < state.expressionsPrecedence.CallExpression || hasCallExpression(node2.callee) ? (state.write("("), this[node2.callee.type](node2.callee, state), state.write(")")) : this[node2.callee.type](node2.callee, state), formatSequence(state, node2.arguments);
  },
  CallExpression(node2, state) {
    let precedence = state.expressionsPrecedence[node2.callee.type];
    precedence === NEEDS_PARENTHESES || precedence < state.expressionsPrecedence.CallExpression ? (state.write("("), this[node2.callee.type](node2.callee, state), state.write(")")) : this[node2.callee.type](node2.callee, state), node2.optional && state.write("?."), formatSequence(state, node2.arguments);
  },
  ChainExpression(node2, state) {
    this[node2.expression.type](node2.expression, state);
  },
  MemberExpression(node2, state) {
    let precedence = state.expressionsPrecedence[node2.object.type];
    precedence === NEEDS_PARENTHESES || precedence < state.expressionsPrecedence.MemberExpression ? (state.write("("), this[node2.object.type](node2.object, state), state.write(")")) : this[node2.object.type](node2.object, state), node2.computed ? (node2.optional && state.write("?."), state.write("["), this[node2.property.type](node2.property, state), state.write("]")) : (node2.optional ? state.write("?.") : state.write("."), this[node2.property.type](node2.property, state));
  },
  MetaProperty(node2, state) {
    state.write(node2.meta.name + "." + node2.property.name, node2);
  },
  Identifier(node2, state) {
    state.write(node2.name, node2);
  },
  PrivateIdentifier(node2, state) {
    state.write(`#${node2.name}`, node2);
  },
  Literal(node2, state) {
    node2.raw != null ? state.write(node2.raw, node2) : node2.regex != null ? this.RegExpLiteral(node2, state) : node2.bigint != null ? state.write(node2.bigint + "n", node2) : state.write(stringify2(node2.value), node2);
  },
  RegExpLiteral(node2, state) {
    let { regex: regex2 } = node2;
    state.write(`/${regex2.pattern}/${regex2.flags}`, node2);
  }
}, EMPTY_OBJECT = {};
var State = class {
  constructor(options) {
    let setup = options ?? EMPTY_OBJECT;
    this.output = "", setup.output != null ? (this.output = setup.output, this.write = this.writeToStream) : this.output = "", this.generator = setup.generator != null ? setup.generator : GENERATOR, this.expressionsPrecedence = setup.expressionsPrecedence != null ? setup.expressionsPrecedence : EXPRESSIONS_PRECEDENCE, this.indent = setup.indent != null ? setup.indent : "  ", this.lineEnd = setup.lineEnd != null ? setup.lineEnd : `
`, this.indentLevel = setup.startingIndentLevel != null ? setup.startingIndentLevel : 0, this.writeComments = setup.comments ? setup.comments : !1, setup.sourceMap != null && (this.write = setup.output == null ? this.writeAndMap : this.writeToStreamAndMap, this.sourceMap = setup.sourceMap, this.line = 1, this.column = 0, this.lineEndSize = this.lineEnd.split(`
`).length - 1, this.mapping = {
      original: null,
      // Uses the entire state to avoid generating ephemeral objects
      generated: this,
      name: void 0,
      source: setup.sourceMap.file || setup.sourceMap._file
    });
  }
  write(code2) {
    this.output += code2;
  }
  writeToStream(code2) {
    this.output.write(code2);
  }
  writeAndMap(code2, node2) {
    this.output += code2, this.map(code2, node2);
  }
  writeToStreamAndMap(code2, node2) {
    this.output.write(code2), this.map(code2, node2);
  }
  map(code2, node2) {
    if (node2 != null) {
      let { type } = node2;
      if (type[0] === "L" && type[2] === "n") {
        this.column = 0, this.line++;
        return;
      }
      if (node2.loc != null) {
        let { mapping } = this;
        mapping.original = node2.loc.start, mapping.name = node2.name, this.sourceMap.addMapping(mapping);
      }
      if (type[0] === "T" && type[8] === "E" || type[0] === "L" && type[1] === "i" && typeof node2.value == "string") {
        let { length: length2 } = code2, { column, line } = this;
        for (let i = 0; i < length2; i++)
          code2[i] === `
` ? (column = 0, line++) : column++;
        this.column = column, this.line = line;
        return;
      }
    }
    let { length } = code2, { lineEnd } = this;
    length > 0 && (this.lineEndSize > 0 && (lineEnd.length === 1 ? code2[length - 1] === lineEnd : code2.endsWith(lineEnd)) ? (this.line += this.lineEndSize, this.column = 0) : this.column += length);
  }
  toString() {
    return this.output;
  }
};
function generate(node2, options) {
  let state = new State(options);
  return state.generator[node2.type](node2, state), state.output;
}

// ../../../node_modules/estree-util-to-js/lib/index.js
var emptyOptions2 = {};
function toJs(tree, options) {
  let { SourceMapGenerator, filePath, handlers: handlers3 } = options || emptyOptions2, sourceMap = SourceMapGenerator ? new SourceMapGenerator({ file: filePath || "<unknown>.js" }) : void 0, value = generate(
    tree,
    // @ts-expect-error: `sourceMap` can be undefined, `astring` types are buggy.
    {
      comments: !0,
      generator: { ...GENERATOR, ...handlers3 },
      sourceMap: sourceMap || void 0
    }
  ), map = sourceMap ? sourceMap.toJSON() : void 0;
  return { value, map };
}

// ../../../node_modules/estree-util-to-js/lib/jsx.js
var jsx = {
  JSXAttribute: jsxAttribute,
  JSXClosingElement: jsxClosingElement,
  JSXClosingFragment: jsxClosingFragment,
  JSXElement: jsxElement,
  JSXEmptyExpression: jsxEmptyExpression,
  JSXExpressionContainer: jsxExpressionContainer,
  JSXFragment: jsxFragment,
  JSXIdentifier: jsxIdentifier,
  JSXMemberExpression: jsxMemberExpression,
  JSXNamespacedName: jsxNamespacedName,
  JSXOpeningElement: jsxOpeningElement,
  JSXOpeningFragment: jsxOpeningFragment,
  JSXSpreadAttribute: jsxSpreadAttribute,
  JSXText: jsxText
};
function jsxAttribute(node2, state) {
  this[node2.name.type](node2.name, state), node2.value !== null && node2.value !== void 0 && (state.write("="), node2.value.type === "Literal" ? state.write(
    '"' + encodeJsx(String(node2.value.value)).replace(/"/g, "&quot;") + '"',
    node2
  ) : this[node2.value.type](node2.value, state));
}
function jsxClosingElement(node2, state) {
  state.write("</"), this[node2.name.type](node2.name, state), state.write(">");
}
function jsxClosingFragment(node2, state) {
  state.write("</>", node2);
}
function jsxElement(node2, state) {
  let index2 = -1;
  if (this[node2.openingElement.type](node2.openingElement, state), node2.children)
    for (; ++index2 < node2.children.length; ) {
      let child = node2.children[index2];
      if (child.type === "JSXSpreadChild")
        throw new Error("JSX spread children are not supported");
      this[child.type](child, state);
    }
  node2.closingElement && this[node2.closingElement.type](node2.closingElement, state);
}
function jsxEmptyExpression() {
}
function jsxExpressionContainer(node2, state) {
  state.write("{"), this[node2.expression.type](node2.expression, state), state.write("}");
}
function jsxFragment(node2, state) {
  let index2 = -1;
  if (this[node2.openingFragment.type](node2.openingFragment, state), node2.children)
    for (; ++index2 < node2.children.length; ) {
      let child = node2.children[index2];
      if (child.type === "JSXSpreadChild")
        throw new Error("JSX spread children are not supported");
      this[child.type](child, state);
    }
  this[node2.closingFragment.type](node2.closingFragment, state);
}
function jsxIdentifier(node2, state) {
  state.write(node2.name, node2);
}
function jsxMemberExpression(node2, state) {
  this[node2.object.type](node2.object, state), state.write("."), this[node2.property.type](node2.property, state);
}
function jsxNamespacedName(node2, state) {
  this[node2.namespace.type](node2.namespace, state), state.write(":"), this[node2.name.type](node2.name, state);
}
function jsxOpeningElement(node2, state) {
  let index2 = -1;
  if (state.write("<"), this[node2.name.type](node2.name, state), node2.attributes)
    for (; ++index2 < node2.attributes.length; )
      state.write(" "), this[node2.attributes[index2].type](node2.attributes[index2], state);
  state.write(node2.selfClosing ? " />" : ">");
}
function jsxOpeningFragment(node2, state) {
  state.write("<>", node2);
}
function jsxSpreadAttribute(node2, state) {
  state.write("{"), this.SpreadElement(node2, state), state.write("}");
}
function jsxText(node2, state) {
  state.write(encodeJsx(node2.value).replace(/[<>{}]/g, replaceJsxChar), node2);
}
function encodeJsx(value) {
  return value.replace(/&(?=[#a-z])/gi, "&amp;");
}
function replaceJsxChar($0) {
  return $0 === "<" ? "&lt;" : $0 === ">" ? "&gt;" : $0 === "{" ? "&#123;" : "&#125;";
}

// ../../../node_modules/@mdx-js/mdx/node_modules/recma-jsx/lib/index.js
function recmaJsx2() {
  let data2 = this.data(), settings = data2.settings || (data2.settings = {}), handlers3 = settings.handlers || (settings.handlers = {});
  (settings.plugins || (settings.plugins = [])).push((0, import_acorn_jsx.default)()), Object.assign(handlers3, jsx);
}

// ../../../node_modules/recma-stringify/lib/index.js
function recmaStringify(options) {
  let self2 = this;
  this.compiler = compiler2;
  function compiler2(tree, file) {
    let settings = { ...self2.data("settings"), ...options }, result = toJs(tree, {
      SourceMapGenerator: settings.SourceMapGenerator,
      filePath: file.path || "unknown.js",
      handlers: settings.handlers
    });
    return file.map = result.map, result.value;
  }
}

// ../../../node_modules/hast-util-to-estree/lib/handlers/comment.js
function comment(node2, state) {
  let result = { type: "Block", value: node2.value };
  state.inherit(node2, result), state.comments.push(result);
  let expression = {
    type: "JSXEmptyExpression",
    // @ts-expect-error: `comments` is custom.
    comments: [Object.assign({}, result, { leading: !1, trailing: !0 })]
  };
  state.patch(node2, expression);
  let container = { type: "JSXExpressionContainer", expression };
  return state.patch(node2, container), container;
}

// ../../../node_modules/comma-separated-tokens/index.js
function stringify3(values, options) {
  let settings = options || {};
  return (values[values.length - 1] === "" ? [...values, ""] : values).join(
    (settings.padRight ? " " : "") + "," + (settings.padLeft === !1 ? "" : " ")
  ).trim();
}

// ../../../node_modules/property-information/lib/util/schema.js
var Schema = class {
  /**
   * @param {SchemaType['property']} property
   *   Property.
   * @param {SchemaType['normal']} normal
   *   Normal.
   * @param {Space | undefined} [space]
   *   Space.
   * @returns
   *   Schema.
   */
  constructor(property, normal, space) {
    this.normal = normal, this.property = property, space && (this.space = space);
  }
};
Schema.prototype.normal = {};
Schema.prototype.property = {};
Schema.prototype.space = void 0;

// ../../../node_modules/property-information/lib/util/merge.js
function merge(definitions, space) {
  let property = {}, normal = {};
  for (let definition2 of definitions)
    Object.assign(property, definition2.property), Object.assign(normal, definition2.normal);
  return new Schema(property, normal, space);
}

// ../../../node_modules/property-information/lib/normalize.js
function normalize(value) {
  return value.toLowerCase();
}

// ../../../node_modules/property-information/lib/util/info.js
var Info = class {
  /**
   * @param {string} property
   *   Property.
   * @param {string} attribute
   *   Attribute.
   * @returns
   *   Info.
   */
  constructor(property, attribute) {
    this.attribute = attribute, this.property = property;
  }
};
Info.prototype.attribute = "";
Info.prototype.booleanish = !1;
Info.prototype.boolean = !1;
Info.prototype.commaOrSpaceSeparated = !1;
Info.prototype.commaSeparated = !1;
Info.prototype.defined = !1;
Info.prototype.mustUseProperty = !1;
Info.prototype.number = !1;
Info.prototype.overloadedBoolean = !1;
Info.prototype.property = "";
Info.prototype.spaceSeparated = !1;
Info.prototype.space = void 0;

// ../../../node_modules/property-information/lib/util/types.js
var types_exports = {};
__export(types_exports, {
  boolean: () => boolean,
  booleanish: () => booleanish,
  commaOrSpaceSeparated: () => commaOrSpaceSeparated,
  commaSeparated: () => commaSeparated,
  number: () => number,
  overloadedBoolean: () => overloadedBoolean,
  spaceSeparated: () => spaceSeparated
});
var powers = 0, boolean = increment(), booleanish = increment(), overloadedBoolean = increment(), number = increment(), spaceSeparated = increment(), commaSeparated = increment(), commaOrSpaceSeparated = increment();
function increment() {
  return 2 ** ++powers;
}

// ../../../node_modules/property-information/lib/util/defined-info.js
var checks = (
  /** @type {ReadonlyArray<keyof typeof types>} */
  Object.keys(types_exports)
), DefinedInfo = class extends Info {
  /**
   * @constructor
   * @param {string} property
   *   Property.
   * @param {string} attribute
   *   Attribute.
   * @param {number | null | undefined} [mask]
   *   Mask.
   * @param {Space | undefined} [space]
   *   Space.
   * @returns
   *   Info.
   */
  constructor(property, attribute, mask, space) {
    let index2 = -1;
    if (super(property, attribute), mark(this, "space", space), typeof mask == "number")
      for (; ++index2 < checks.length; ) {
        let check = checks[index2];
        mark(this, checks[index2], (mask & types_exports[check]) === types_exports[check]);
      }
  }
};
DefinedInfo.prototype.defined = !0;
function mark(values, key2, value) {
  value && (values[key2] = value);
}

// ../../../node_modules/property-information/lib/util/create.js
function create2(definition2) {
  let properties = {}, normals = {};
  for (let [property, value] of Object.entries(definition2.properties)) {
    let info = new DefinedInfo(
      property,
      definition2.transform(definition2.attributes || {}, property),
      value,
      definition2.space
    );
    definition2.mustUseProperty && definition2.mustUseProperty.includes(property) && (info.mustUseProperty = !0), properties[property] = info, normals[normalize(property)] = property, normals[normalize(info.attribute)] = property;
  }
  return new Schema(properties, normals, definition2.space);
}

// ../../../node_modules/property-information/lib/aria.js
var aria = create2({
  properties: {
    ariaActiveDescendant: null,
    ariaAtomic: booleanish,
    ariaAutoComplete: null,
    ariaBusy: booleanish,
    ariaChecked: booleanish,
    ariaColCount: number,
    ariaColIndex: number,
    ariaColSpan: number,
    ariaControls: spaceSeparated,
    ariaCurrent: null,
    ariaDescribedBy: spaceSeparated,
    ariaDetails: null,
    ariaDisabled: booleanish,
    ariaDropEffect: spaceSeparated,
    ariaErrorMessage: null,
    ariaExpanded: booleanish,
    ariaFlowTo: spaceSeparated,
    ariaGrabbed: booleanish,
    ariaHasPopup: null,
    ariaHidden: booleanish,
    ariaInvalid: null,
    ariaKeyShortcuts: null,
    ariaLabel: null,
    ariaLabelledBy: spaceSeparated,
    ariaLevel: number,
    ariaLive: null,
    ariaModal: booleanish,
    ariaMultiLine: booleanish,
    ariaMultiSelectable: booleanish,
    ariaOrientation: null,
    ariaOwns: spaceSeparated,
    ariaPlaceholder: null,
    ariaPosInSet: number,
    ariaPressed: booleanish,
    ariaReadOnly: booleanish,
    ariaRelevant: null,
    ariaRequired: booleanish,
    ariaRoleDescription: spaceSeparated,
    ariaRowCount: number,
    ariaRowIndex: number,
    ariaRowSpan: number,
    ariaSelected: booleanish,
    ariaSetSize: number,
    ariaSort: null,
    ariaValueMax: number,
    ariaValueMin: number,
    ariaValueNow: number,
    ariaValueText: null,
    role: null
  },
  transform(_, property) {
    return property === "role" ? property : "aria-" + property.slice(4).toLowerCase();
  }
});

// ../../../node_modules/property-information/lib/util/case-sensitive-transform.js
function caseSensitiveTransform(attributes, attribute) {
  return attribute in attributes ? attributes[attribute] : attribute;
}

// ../../../node_modules/property-information/lib/util/case-insensitive-transform.js
function caseInsensitiveTransform(attributes, property) {
  return caseSensitiveTransform(attributes, property.toLowerCase());
}

// ../../../node_modules/property-information/lib/html.js
var html = create2({
  attributes: {
    acceptcharset: "accept-charset",
    classname: "class",
    htmlfor: "for",
    httpequiv: "http-equiv"
  },
  mustUseProperty: ["checked", "multiple", "muted", "selected"],
  properties: {
    // Standard Properties.
    abbr: null,
    accept: commaSeparated,
    acceptCharset: spaceSeparated,
    accessKey: spaceSeparated,
    action: null,
    allow: null,
    allowFullScreen: boolean,
    allowPaymentRequest: boolean,
    allowUserMedia: boolean,
    alt: null,
    as: null,
    async: boolean,
    autoCapitalize: null,
    autoComplete: spaceSeparated,
    autoFocus: boolean,
    autoPlay: boolean,
    blocking: spaceSeparated,
    capture: null,
    charSet: null,
    checked: boolean,
    cite: null,
    className: spaceSeparated,
    cols: number,
    colSpan: null,
    content: null,
    contentEditable: booleanish,
    controls: boolean,
    controlsList: spaceSeparated,
    coords: number | commaSeparated,
    crossOrigin: null,
    data: null,
    dateTime: null,
    decoding: null,
    default: boolean,
    defer: boolean,
    dir: null,
    dirName: null,
    disabled: boolean,
    download: overloadedBoolean,
    draggable: booleanish,
    encType: null,
    enterKeyHint: null,
    fetchPriority: null,
    form: null,
    formAction: null,
    formEncType: null,
    formMethod: null,
    formNoValidate: boolean,
    formTarget: null,
    headers: spaceSeparated,
    height: number,
    hidden: overloadedBoolean,
    high: number,
    href: null,
    hrefLang: null,
    htmlFor: spaceSeparated,
    httpEquiv: spaceSeparated,
    id: null,
    imageSizes: null,
    imageSrcSet: null,
    inert: boolean,
    inputMode: null,
    integrity: null,
    is: null,
    isMap: boolean,
    itemId: null,
    itemProp: spaceSeparated,
    itemRef: spaceSeparated,
    itemScope: boolean,
    itemType: spaceSeparated,
    kind: null,
    label: null,
    lang: null,
    language: null,
    list: null,
    loading: null,
    loop: boolean,
    low: number,
    manifest: null,
    max: null,
    maxLength: number,
    media: null,
    method: null,
    min: null,
    minLength: number,
    multiple: boolean,
    muted: boolean,
    name: null,
    nonce: null,
    noModule: boolean,
    noValidate: boolean,
    onAbort: null,
    onAfterPrint: null,
    onAuxClick: null,
    onBeforeMatch: null,
    onBeforePrint: null,
    onBeforeToggle: null,
    onBeforeUnload: null,
    onBlur: null,
    onCancel: null,
    onCanPlay: null,
    onCanPlayThrough: null,
    onChange: null,
    onClick: null,
    onClose: null,
    onContextLost: null,
    onContextMenu: null,
    onContextRestored: null,
    onCopy: null,
    onCueChange: null,
    onCut: null,
    onDblClick: null,
    onDrag: null,
    onDragEnd: null,
    onDragEnter: null,
    onDragExit: null,
    onDragLeave: null,
    onDragOver: null,
    onDragStart: null,
    onDrop: null,
    onDurationChange: null,
    onEmptied: null,
    onEnded: null,
    onError: null,
    onFocus: null,
    onFormData: null,
    onHashChange: null,
    onInput: null,
    onInvalid: null,
    onKeyDown: null,
    onKeyPress: null,
    onKeyUp: null,
    onLanguageChange: null,
    onLoad: null,
    onLoadedData: null,
    onLoadedMetadata: null,
    onLoadEnd: null,
    onLoadStart: null,
    onMessage: null,
    onMessageError: null,
    onMouseDown: null,
    onMouseEnter: null,
    onMouseLeave: null,
    onMouseMove: null,
    onMouseOut: null,
    onMouseOver: null,
    onMouseUp: null,
    onOffline: null,
    onOnline: null,
    onPageHide: null,
    onPageShow: null,
    onPaste: null,
    onPause: null,
    onPlay: null,
    onPlaying: null,
    onPopState: null,
    onProgress: null,
    onRateChange: null,
    onRejectionHandled: null,
    onReset: null,
    onResize: null,
    onScroll: null,
    onScrollEnd: null,
    onSecurityPolicyViolation: null,
    onSeeked: null,
    onSeeking: null,
    onSelect: null,
    onSlotChange: null,
    onStalled: null,
    onStorage: null,
    onSubmit: null,
    onSuspend: null,
    onTimeUpdate: null,
    onToggle: null,
    onUnhandledRejection: null,
    onUnload: null,
    onVolumeChange: null,
    onWaiting: null,
    onWheel: null,
    open: boolean,
    optimum: number,
    pattern: null,
    ping: spaceSeparated,
    placeholder: null,
    playsInline: boolean,
    popover: null,
    popoverTarget: null,
    popoverTargetAction: null,
    poster: null,
    preload: null,
    readOnly: boolean,
    referrerPolicy: null,
    rel: spaceSeparated,
    required: boolean,
    reversed: boolean,
    rows: number,
    rowSpan: number,
    sandbox: spaceSeparated,
    scope: null,
    scoped: boolean,
    seamless: boolean,
    selected: boolean,
    shadowRootClonable: boolean,
    shadowRootDelegatesFocus: boolean,
    shadowRootMode: null,
    shape: null,
    size: number,
    sizes: null,
    slot: null,
    span: number,
    spellCheck: booleanish,
    src: null,
    srcDoc: null,
    srcLang: null,
    srcSet: null,
    start: number,
    step: null,
    style: null,
    tabIndex: number,
    target: null,
    title: null,
    translate: null,
    type: null,
    typeMustMatch: boolean,
    useMap: null,
    value: booleanish,
    width: number,
    wrap: null,
    writingSuggestions: null,
    // Legacy.
    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis
    align: null,
    // Several. Use CSS `text-align` instead,
    aLink: null,
    // `<body>`. Use CSS `a:active {color}` instead
    archive: spaceSeparated,
    // `<object>`. List of URIs to archives
    axis: null,
    // `<td>` and `<th>`. Use `scope` on `<th>`
    background: null,
    // `<body>`. Use CSS `background-image` instead
    bgColor: null,
    // `<body>` and table elements. Use CSS `background-color` instead
    border: number,
    // `<table>`. Use CSS `border-width` instead,
    borderColor: null,
    // `<table>`. Use CSS `border-color` instead,
    bottomMargin: number,
    // `<body>`
    cellPadding: null,
    // `<table>`
    cellSpacing: null,
    // `<table>`
    char: null,
    // Several table elements. When `align=char`, sets the character to align on
    charOff: null,
    // Several table elements. When `char`, offsets the alignment
    classId: null,
    // `<object>`
    clear: null,
    // `<br>`. Use CSS `clear` instead
    code: null,
    // `<object>`
    codeBase: null,
    // `<object>`
    codeType: null,
    // `<object>`
    color: null,
    // `<font>` and `<hr>`. Use CSS instead
    compact: boolean,
    // Lists. Use CSS to reduce space between items instead
    declare: boolean,
    // `<object>`
    event: null,
    // `<script>`
    face: null,
    // `<font>`. Use CSS instead
    frame: null,
    // `<table>`
    frameBorder: null,
    // `<iframe>`. Use CSS `border` instead
    hSpace: number,
    // `<img>` and `<object>`
    leftMargin: number,
    // `<body>`
    link: null,
    // `<body>`. Use CSS `a:link {color: *}` instead
    longDesc: null,
    // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`
    lowSrc: null,
    // `<img>`. Use a `<picture>`
    marginHeight: number,
    // `<body>`
    marginWidth: number,
    // `<body>`
    noResize: boolean,
    // `<frame>`
    noHref: boolean,
    // `<area>`. Use no href instead of an explicit `nohref`
    noShade: boolean,
    // `<hr>`. Use background-color and height instead of borders
    noWrap: boolean,
    // `<td>` and `<th>`
    object: null,
    // `<applet>`
    profile: null,
    // `<head>`
    prompt: null,
    // `<isindex>`
    rev: null,
    // `<link>`
    rightMargin: number,
    // `<body>`
    rules: null,
    // `<table>`
    scheme: null,
    // `<meta>`
    scrolling: booleanish,
    // `<frame>`. Use overflow in the child context
    standby: null,
    // `<object>`
    summary: null,
    // `<table>`
    text: null,
    // `<body>`. Use CSS `color` instead
    topMargin: number,
    // `<body>`
    valueType: null,
    // `<param>`
    version: null,
    // `<html>`. Use a doctype.
    vAlign: null,
    // Several. Use CSS `vertical-align` instead
    vLink: null,
    // `<body>`. Use CSS `a:visited {color}` instead
    vSpace: number,
    // `<img>` and `<object>`
    // Non-standard Properties.
    allowTransparency: null,
    autoCorrect: null,
    autoSave: null,
    disablePictureInPicture: boolean,
    disableRemotePlayback: boolean,
    prefix: null,
    property: null,
    results: number,
    security: null,
    unselectable: null
  },
  space: "html",
  transform: caseInsensitiveTransform
});

// ../../../node_modules/property-information/lib/svg.js
var svg = create2({
  attributes: {
    accentHeight: "accent-height",
    alignmentBaseline: "alignment-baseline",
    arabicForm: "arabic-form",
    baselineShift: "baseline-shift",
    capHeight: "cap-height",
    className: "class",
    clipPath: "clip-path",
    clipRule: "clip-rule",
    colorInterpolation: "color-interpolation",
    colorInterpolationFilters: "color-interpolation-filters",
    colorProfile: "color-profile",
    colorRendering: "color-rendering",
    crossOrigin: "crossorigin",
    dataType: "datatype",
    dominantBaseline: "dominant-baseline",
    enableBackground: "enable-background",
    fillOpacity: "fill-opacity",
    fillRule: "fill-rule",
    floodColor: "flood-color",
    floodOpacity: "flood-opacity",
    fontFamily: "font-family",
    fontSize: "font-size",
    fontSizeAdjust: "font-size-adjust",
    fontStretch: "font-stretch",
    fontStyle: "font-style",
    fontVariant: "font-variant",
    fontWeight: "font-weight",
    glyphName: "glyph-name",
    glyphOrientationHorizontal: "glyph-orientation-horizontal",
    glyphOrientationVertical: "glyph-orientation-vertical",
    hrefLang: "hreflang",
    horizAdvX: "horiz-adv-x",
    horizOriginX: "horiz-origin-x",
    horizOriginY: "horiz-origin-y",
    imageRendering: "image-rendering",
    letterSpacing: "letter-spacing",
    lightingColor: "lighting-color",
    markerEnd: "marker-end",
    markerMid: "marker-mid",
    markerStart: "marker-start",
    navDown: "nav-down",
    navDownLeft: "nav-down-left",
    navDownRight: "nav-down-right",
    navLeft: "nav-left",
    navNext: "nav-next",
    navPrev: "nav-prev",
    navRight: "nav-right",
    navUp: "nav-up",
    navUpLeft: "nav-up-left",
    navUpRight: "nav-up-right",
    onAbort: "onabort",
    onActivate: "onactivate",
    onAfterPrint: "onafterprint",
    onBeforePrint: "onbeforeprint",
    onBegin: "onbegin",
    onCancel: "oncancel",
    onCanPlay: "oncanplay",
    onCanPlayThrough: "oncanplaythrough",
    onChange: "onchange",
    onClick: "onclick",
    onClose: "onclose",
    onCopy: "oncopy",
    onCueChange: "oncuechange",
    onCut: "oncut",
    onDblClick: "ondblclick",
    onDrag: "ondrag",
    onDragEnd: "ondragend",
    onDragEnter: "ondragenter",
    onDragExit: "ondragexit",
    onDragLeave: "ondragleave",
    onDragOver: "ondragover",
    onDragStart: "ondragstart",
    onDrop: "ondrop",
    onDurationChange: "ondurationchange",
    onEmptied: "onemptied",
    onEnd: "onend",
    onEnded: "onended",
    onError: "onerror",
    onFocus: "onfocus",
    onFocusIn: "onfocusin",
    onFocusOut: "onfocusout",
    onHashChange: "onhashchange",
    onInput: "oninput",
    onInvalid: "oninvalid",
    onKeyDown: "onkeydown",
    onKeyPress: "onkeypress",
    onKeyUp: "onkeyup",
    onLoad: "onload",
    onLoadedData: "onloadeddata",
    onLoadedMetadata: "onloadedmetadata",
    onLoadStart: "onloadstart",
    onMessage: "onmessage",
    onMouseDown: "onmousedown",
    onMouseEnter: "onmouseenter",
    onMouseLeave: "onmouseleave",
    onMouseMove: "onmousemove",
    onMouseOut: "onmouseout",
    onMouseOver: "onmouseover",
    onMouseUp: "onmouseup",
    onMouseWheel: "onmousewheel",
    onOffline: "onoffline",
    onOnline: "ononline",
    onPageHide: "onpagehide",
    onPageShow: "onpageshow",
    onPaste: "onpaste",
    onPause: "onpause",
    onPlay: "onplay",
    onPlaying: "onplaying",
    onPopState: "onpopstate",
    onProgress: "onprogress",
    onRateChange: "onratechange",
    onRepeat: "onrepeat",
    onReset: "onreset",
    onResize: "onresize",
    onScroll: "onscroll",
    onSeeked: "onseeked",
    onSeeking: "onseeking",
    onSelect: "onselect",
    onShow: "onshow",
    onStalled: "onstalled",
    onStorage: "onstorage",
    onSubmit: "onsubmit",
    onSuspend: "onsuspend",
    onTimeUpdate: "ontimeupdate",
    onToggle: "ontoggle",
    onUnload: "onunload",
    onVolumeChange: "onvolumechange",
    onWaiting: "onwaiting",
    onZoom: "onzoom",
    overlinePosition: "overline-position",
    overlineThickness: "overline-thickness",
    paintOrder: "paint-order",
    panose1: "panose-1",
    pointerEvents: "pointer-events",
    referrerPolicy: "referrerpolicy",
    renderingIntent: "rendering-intent",
    shapeRendering: "shape-rendering",
    stopColor: "stop-color",
    stopOpacity: "stop-opacity",
    strikethroughPosition: "strikethrough-position",
    strikethroughThickness: "strikethrough-thickness",
    strokeDashArray: "stroke-dasharray",
    strokeDashOffset: "stroke-dashoffset",
    strokeLineCap: "stroke-linecap",
    strokeLineJoin: "stroke-linejoin",
    strokeMiterLimit: "stroke-miterlimit",
    strokeOpacity: "stroke-opacity",
    strokeWidth: "stroke-width",
    tabIndex: "tabindex",
    textAnchor: "text-anchor",
    textDecoration: "text-decoration",
    textRendering: "text-rendering",
    transformOrigin: "transform-origin",
    typeOf: "typeof",
    underlinePosition: "underline-position",
    underlineThickness: "underline-thickness",
    unicodeBidi: "unicode-bidi",
    unicodeRange: "unicode-range",
    unitsPerEm: "units-per-em",
    vAlphabetic: "v-alphabetic",
    vHanging: "v-hanging",
    vIdeographic: "v-ideographic",
    vMathematical: "v-mathematical",
    vectorEffect: "vector-effect",
    vertAdvY: "vert-adv-y",
    vertOriginX: "vert-origin-x",
    vertOriginY: "vert-origin-y",
    wordSpacing: "word-spacing",
    writingMode: "writing-mode",
    xHeight: "x-height",
    // These were camelcased in Tiny. Now lowercased in SVG 2
    playbackOrder: "playbackorder",
    timelineBegin: "timelinebegin"
  },
  properties: {
    about: commaOrSpaceSeparated,
    accentHeight: number,
    accumulate: null,
    additive: null,
    alignmentBaseline: null,
    alphabetic: number,
    amplitude: number,
    arabicForm: null,
    ascent: number,
    attributeName: null,
    attributeType: null,
    azimuth: number,
    bandwidth: null,
    baselineShift: null,
    baseFrequency: null,
    baseProfile: null,
    bbox: null,
    begin: null,
    bias: number,
    by: null,
    calcMode: null,
    capHeight: number,
    className: spaceSeparated,
    clip: null,
    clipPath: null,
    clipPathUnits: null,
    clipRule: null,
    color: null,
    colorInterpolation: null,
    colorInterpolationFilters: null,
    colorProfile: null,
    colorRendering: null,
    content: null,
    contentScriptType: null,
    contentStyleType: null,
    crossOrigin: null,
    cursor: null,
    cx: null,
    cy: null,
    d: null,
    dataType: null,
    defaultAction: null,
    descent: number,
    diffuseConstant: number,
    direction: null,
    display: null,
    dur: null,
    divisor: number,
    dominantBaseline: null,
    download: boolean,
    dx: null,
    dy: null,
    edgeMode: null,
    editable: null,
    elevation: number,
    enableBackground: null,
    end: null,
    event: null,
    exponent: number,
    externalResourcesRequired: null,
    fill: null,
    fillOpacity: number,
    fillRule: null,
    filter: null,
    filterRes: null,
    filterUnits: null,
    floodColor: null,
    floodOpacity: null,
    focusable: null,
    focusHighlight: null,
    fontFamily: null,
    fontSize: null,
    fontSizeAdjust: null,
    fontStretch: null,
    fontStyle: null,
    fontVariant: null,
    fontWeight: null,
    format: null,
    fr: null,
    from: null,
    fx: null,
    fy: null,
    g1: commaSeparated,
    g2: commaSeparated,
    glyphName: commaSeparated,
    glyphOrientationHorizontal: null,
    glyphOrientationVertical: null,
    glyphRef: null,
    gradientTransform: null,
    gradientUnits: null,
    handler: null,
    hanging: number,
    hatchContentUnits: null,
    hatchUnits: null,
    height: null,
    href: null,
    hrefLang: null,
    horizAdvX: number,
    horizOriginX: number,
    horizOriginY: number,
    id: null,
    ideographic: number,
    imageRendering: null,
    initialVisibility: null,
    in: null,
    in2: null,
    intercept: number,
    k: number,
    k1: number,
    k2: number,
    k3: number,
    k4: number,
    kernelMatrix: commaOrSpaceSeparated,
    kernelUnitLength: null,
    keyPoints: null,
    // SEMI_COLON_SEPARATED
    keySplines: null,
    // SEMI_COLON_SEPARATED
    keyTimes: null,
    // SEMI_COLON_SEPARATED
    kerning: null,
    lang: null,
    lengthAdjust: null,
    letterSpacing: null,
    lightingColor: null,
    limitingConeAngle: number,
    local: null,
    markerEnd: null,
    markerMid: null,
    markerStart: null,
    markerHeight: null,
    markerUnits: null,
    markerWidth: null,
    mask: null,
    maskContentUnits: null,
    maskUnits: null,
    mathematical: null,
    max: null,
    media: null,
    mediaCharacterEncoding: null,
    mediaContentEncodings: null,
    mediaSize: number,
    mediaTime: null,
    method: null,
    min: null,
    mode: null,
    name: null,
    navDown: null,
    navDownLeft: null,
    navDownRight: null,
    navLeft: null,
    navNext: null,
    navPrev: null,
    navRight: null,
    navUp: null,
    navUpLeft: null,
    navUpRight: null,
    numOctaves: null,
    observer: null,
    offset: null,
    onAbort: null,
    onActivate: null,
    onAfterPrint: null,
    onBeforePrint: null,
    onBegin: null,
    onCancel: null,
    onCanPlay: null,
    onCanPlayThrough: null,
    onChange: null,
    onClick: null,
    onClose: null,
    onCopy: null,
    onCueChange: null,
    onCut: null,
    onDblClick: null,
    onDrag: null,
    onDragEnd: null,
    onDragEnter: null,
    onDragExit: null,
    onDragLeave: null,
    onDragOver: null,
    onDragStart: null,
    onDrop: null,
    onDurationChange: null,
    onEmptied: null,
    onEnd: null,
    onEnded: null,
    onError: null,
    onFocus: null,
    onFocusIn: null,
    onFocusOut: null,
    onHashChange: null,
    onInput: null,
    onInvalid: null,
    onKeyDown: null,
    onKeyPress: null,
    onKeyUp: null,
    onLoad: null,
    onLoadedData: null,
    onLoadedMetadata: null,
    onLoadStart: null,
    onMessage: null,
    onMouseDown: null,
    onMouseEnter: null,
    onMouseLeave: null,
    onMouseMove: null,
    onMouseOut: null,
    onMouseOver: null,
    onMouseUp: null,
    onMouseWheel: null,
    onOffline: null,
    onOnline: null,
    onPageHide: null,
    onPageShow: null,
    onPaste: null,
    onPause: null,
    onPlay: null,
    onPlaying: null,
    onPopState: null,
    onProgress: null,
    onRateChange: null,
    onRepeat: null,
    onReset: null,
    onResize: null,
    onScroll: null,
    onSeeked: null,
    onSeeking: null,
    onSelect: null,
    onShow: null,
    onStalled: null,
    onStorage: null,
    onSubmit: null,
    onSuspend: null,
    onTimeUpdate: null,
    onToggle: null,
    onUnload: null,
    onVolumeChange: null,
    onWaiting: null,
    onZoom: null,
    opacity: null,
    operator: null,
    order: null,
    orient: null,
    orientation: null,
    origin: null,
    overflow: null,
    overlay: null,
    overlinePosition: number,
    overlineThickness: number,
    paintOrder: null,
    panose1: null,
    path: null,
    pathLength: number,
    patternContentUnits: null,
    patternTransform: null,
    patternUnits: null,
    phase: null,
    ping: spaceSeparated,
    pitch: null,
    playbackOrder: null,
    pointerEvents: null,
    points: null,
    pointsAtX: number,
    pointsAtY: number,
    pointsAtZ: number,
    preserveAlpha: null,
    preserveAspectRatio: null,
    primitiveUnits: null,
    propagate: null,
    property: commaOrSpaceSeparated,
    r: null,
    radius: null,
    referrerPolicy: null,
    refX: null,
    refY: null,
    rel: commaOrSpaceSeparated,
    rev: commaOrSpaceSeparated,
    renderingIntent: null,
    repeatCount: null,
    repeatDur: null,
    requiredExtensions: commaOrSpaceSeparated,
    requiredFeatures: commaOrSpaceSeparated,
    requiredFonts: commaOrSpaceSeparated,
    requiredFormats: commaOrSpaceSeparated,
    resource: null,
    restart: null,
    result: null,
    rotate: null,
    rx: null,
    ry: null,
    scale: null,
    seed: null,
    shapeRendering: null,
    side: null,
    slope: null,
    snapshotTime: null,
    specularConstant: number,
    specularExponent: number,
    spreadMethod: null,
    spacing: null,
    startOffset: null,
    stdDeviation: null,
    stemh: null,
    stemv: null,
    stitchTiles: null,
    stopColor: null,
    stopOpacity: null,
    strikethroughPosition: number,
    strikethroughThickness: number,
    string: null,
    stroke: null,
    strokeDashArray: commaOrSpaceSeparated,
    strokeDashOffset: null,
    strokeLineCap: null,
    strokeLineJoin: null,
    strokeMiterLimit: number,
    strokeOpacity: number,
    strokeWidth: null,
    style: null,
    surfaceScale: number,
    syncBehavior: null,
    syncBehaviorDefault: null,
    syncMaster: null,
    syncTolerance: null,
    syncToleranceDefault: null,
    systemLanguage: commaOrSpaceSeparated,
    tabIndex: number,
    tableValues: null,
    target: null,
    targetX: number,
    targetY: number,
    textAnchor: null,
    textDecoration: null,
    textRendering: null,
    textLength: null,
    timelineBegin: null,
    title: null,
    transformBehavior: null,
    type: null,
    typeOf: commaOrSpaceSeparated,
    to: null,
    transform: null,
    transformOrigin: null,
    u1: null,
    u2: null,
    underlinePosition: number,
    underlineThickness: number,
    unicode: null,
    unicodeBidi: null,
    unicodeRange: null,
    unitsPerEm: number,
    values: null,
    vAlphabetic: number,
    vMathematical: number,
    vectorEffect: null,
    vHanging: number,
    vIdeographic: number,
    version: null,
    vertAdvY: number,
    vertOriginX: number,
    vertOriginY: number,
    viewBox: null,
    viewTarget: null,
    visibility: null,
    width: null,
    widths: null,
    wordSpacing: null,
    writingMode: null,
    x: null,
    x1: null,
    x2: null,
    xChannelSelector: null,
    xHeight: number,
    y: null,
    y1: null,
    y2: null,
    yChannelSelector: null,
    z: null,
    zoomAndPan: null
  },
  space: "svg",
  transform: caseSensitiveTransform
});

// ../../../node_modules/property-information/lib/xlink.js
var xlink = create2({
  properties: {
    xLinkActuate: null,
    xLinkArcRole: null,
    xLinkHref: null,
    xLinkRole: null,
    xLinkShow: null,
    xLinkTitle: null,
    xLinkType: null
  },
  space: "xlink",
  transform(_, property) {
    return "xlink:" + property.slice(5).toLowerCase();
  }
});

// ../../../node_modules/property-information/lib/xmlns.js
var xmlns = create2({
  attributes: { xmlnsxlink: "xmlns:xlink" },
  properties: { xmlnsXLink: null, xmlns: null },
  space: "xmlns",
  transform: caseInsensitiveTransform
});

// ../../../node_modules/property-information/lib/xml.js
var xml = create2({
  properties: { xmlBase: null, xmlLang: null, xmlSpace: null },
  space: "xml",
  transform(_, property) {
    return "xml:" + property.slice(3).toLowerCase();
  }
});

// ../../../node_modules/property-information/lib/hast-to-react.js
var hastToReact = {
  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"
};

// ../../../node_modules/property-information/lib/find.js
var cap = /[A-Z]/g, dash = /-[a-z]/g, valid = /^data[-\w.:]+$/i;
function find(schema, value) {
  let normal = normalize(value), property = value, Type = Info;
  if (normal in schema.normal)
    return schema.property[schema.normal[normal]];
  if (normal.length > 4 && normal.slice(0, 4) === "data" && valid.test(value)) {
    if (value.charAt(4) === "-") {
      let rest = value.slice(5).replace(dash, camelcase);
      property = "data" + rest.charAt(0).toUpperCase() + rest.slice(1);
    } else {
      let rest = value.slice(4);
      if (!dash.test(rest)) {
        let dashes = rest.replace(cap, kebab);
        dashes.charAt(0) !== "-" && (dashes = "-" + dashes), value = "data" + dashes;
      }
    }
    Type = DefinedInfo;
  }
  return new Type(property, value);
}
function kebab($0) {
  return "-" + $0.toLowerCase();
}
function camelcase($0) {
  return $0.charAt(1).toUpperCase();
}

// ../../../node_modules/property-information/index.js
var html2 = merge([aria, html, xlink, xmlns, xml], "html"), svg2 = merge([aria, svg, xlink, xmlns, xml], "svg");

// ../../../node_modules/hast-util-to-estree/lib/handlers/element.js
var import_style_to_js = __toESM(require_cjs3(), 1), own = {}.hasOwnProperty, cap2 = /[A-Z]/g, tableCellElement = /* @__PURE__ */ new Set(["td", "th"]);
function element(node2, state) {
  let parentSchema = state.schema, schema = parentSchema, properties = node2.properties || {};
  parentSchema.space === "html" && node2.tagName.toLowerCase() === "svg" && (schema = svg2, state.schema = schema);
  let children = state.all(node2), attributes = [], property, alignValue, styleProperties;
  for (property in properties)
    if (own.call(properties, property)) {
      let value = properties[property], info = find(schema, property), attributeValue;
      if (value == null || value === !1 || typeof value == "number" && Number.isNaN(value) || !value && info.boolean)
        continue;
      if (property = state.elementAttributeNameCase === "react" && info.space ? hastToReact[info.property] || info.property : info.attribute, Array.isArray(value) && (value = info.commaSeparated ? stringify3(value) : stringify(value)), property === "style") {
        let styleObject = typeof value == "object" ? value : parseStyle(String(value), node2.tagName);
        state.stylePropertyNameCase === "css" && (styleObject = transformStylesToCssCasing(styleObject));
        let cssProperties = [], cssProperty;
        for (cssProperty in styleObject)
          own.call(styleObject, cssProperty) && cssProperties.push({
            type: "Property",
            method: !1,
            shorthand: !1,
            computed: !1,
            key: name(cssProperty) ? { type: "Identifier", name: cssProperty } : { type: "Literal", value: cssProperty },
            value: { type: "Literal", value: String(styleObject[cssProperty]) },
            kind: "init"
          });
        styleProperties = cssProperties, attributeValue = {
          type: "JSXExpressionContainer",
          expression: { type: "ObjectExpression", properties: cssProperties }
        };
      } else if (value === !0)
        attributeValue = null;
      else if (state.tableCellAlignToStyle && tableCellElement.has(node2.tagName) && property === "align") {
        alignValue = String(value);
        continue;
      } else
        attributeValue = { type: "Literal", value: String(value) };
      name(property, { jsx: !0 }) ? attributes.push({
        type: "JSXAttribute",
        name: { type: "JSXIdentifier", name: property },
        value: attributeValue
      }) : attributes.push({
        type: "JSXSpreadAttribute",
        argument: {
          type: "ObjectExpression",
          properties: [
            {
              type: "Property",
              method: !1,
              shorthand: !1,
              computed: !1,
              key: { type: "Literal", value: String(property) },
              // @ts-expect-error No need to worry about `style` (which has a
              // `JSXExpressionContainer` value) because that’s a valid identifier.
              value: attributeValue || { type: "Literal", value: !0 },
              kind: "init"
            }
          ]
        }
      });
    }
  if (alignValue !== void 0) {
    styleProperties || (styleProperties = [], attributes.push({
      type: "JSXAttribute",
      name: { type: "JSXIdentifier", name: "style" },
      value: {
        type: "JSXExpressionContainer",
        expression: { type: "ObjectExpression", properties: styleProperties }
      }
    }));
    let cssProperty = state.stylePropertyNameCase === "css" ? transformStyleToCssCasing("textAlign") : "textAlign";
    styleProperties.push({
      type: "Property",
      method: !1,
      shorthand: !1,
      computed: !1,
      key: name(cssProperty) ? { type: "Identifier", name: cssProperty } : { type: "Literal", value: cssProperty },
      value: { type: "Literal", value: alignValue },
      kind: "init"
    });
  }
  state.schema = parentSchema;
  let result = {
    type: "JSXElement",
    openingElement: {
      type: "JSXOpeningElement",
      attributes,
      name: state.createJsxElementName(node2.tagName),
      selfClosing: children.length === 0
    },
    closingElement: children.length > 0 ? {
      type: "JSXClosingElement",
      name: state.createJsxElementName(node2.tagName)
    } : null,
    children
  };
  return state.inherit(node2, result), result;
}
function parseStyle(value, tagName) {
  try {
    return (0, import_style_to_js.default)(value, { reactCompat: !0 });
  } catch (error) {
    let cause = (
      /** @type {Error} */
      error
    );
    throw new Error(
      "Could not parse `style` attribute on `" + tagName + "`",
      { cause }
    );
  }
}
function transformStylesToCssCasing(domCasing) {
  let cssCasing = {}, from;
  for (from in domCasing)
    own.call(domCasing, from) && (cssCasing[transformStyleToCssCasing(from)] = domCasing[from]);
  return cssCasing;
}
function transformStyleToCssCasing(from) {
  let to = from.replace(cap2, toDash);
  return to.slice(0, 3) === "ms-" && (to = "-" + to), to;
}
function toDash($0) {
  return "-" + $0.toLowerCase();
}

// ../../../node_modules/estree-util-attach-comments/lib/index.js
var own2 = {}.hasOwnProperty, emptyComments = [];
function attachComments(tree, comments) {
  let list3 = comments ? [...comments].sort(compare) : emptyComments;
  list3.length > 0 && walk2(tree, { comments: list3, index: 0 });
}
function walk2(node2, state) {
  if (state.index === state.comments.length)
    return;
  let children = [], comments = [], key2;
  for (key2 in node2)
    if (own2.call(node2, key2)) {
      let value = node2[key2];
      if (value && typeof value == "object" && key2 !== "comments")
        if (Array.isArray(value)) {
          let index3 = -1;
          for (; ++index3 < value.length; )
            value[index3] && typeof value[index3].type == "string" && children.push(value[index3]);
        } else typeof value.type == "string" && children.push(value);
    }
  children.sort(compare), comments.push(...slice(state, node2, !1, { leading: !0, trailing: !1 }));
  let index2 = -1;
  for (; ++index2 < children.length; )
    walk2(children[index2], state);
  comments.push(
    ...slice(state, node2, !0, {
      leading: !1,
      trailing: children.length > 0
    })
  ), comments.length > 0 && (node2.comments = comments);
}
function slice(state, node2, compareEnd, fields) {
  let result = [];
  for (; state.comments[state.index] && compare(state.comments[state.index], node2, compareEnd) < 1; )
    result.push(Object.assign({}, state.comments[state.index++], fields));
  return result;
}
function compare(left, right, compareEnd) {
  let field = compareEnd ? "end" : "start";
  return left.range && right.range ? left.range[0] - right.range[compareEnd ? 1 : 0] : left.loc && left.loc.start && right.loc && right.loc[field] ? left.loc.start.line - right.loc[field].line || left.loc.start.column - right.loc[field].column : "start" in left && field in right ? left.start - right[field] : Number.NaN;
}

// ../../../node_modules/hast-util-to-estree/lib/handlers/mdx-expression.js
function mdxExpression(node2, state) {
  let estree = node2.data && node2.data.estree, comments = estree && estree.comments || [], expression;
  estree && (state.comments.push(...comments), attachComments(estree, estree.comments), expression = estree.body[0] && estree.body[0].type === "ExpressionStatement" && estree.body[0].expression || void 0), expression || (expression = { type: "JSXEmptyExpression" }, state.patch(node2, expression));
  let result = { type: "JSXExpressionContainer", expression };
  return state.inherit(node2, result), result;
}

// ../../../node_modules/hast-util-to-estree/lib/handlers/mdx-jsx-element.js
function mdxJsxElement(node2, state) {
  let parentSchema = state.schema, schema = parentSchema, attributes = node2.attributes || [], index2 = -1;
  node2.name && parentSchema.space === "html" && node2.name.toLowerCase() === "svg" && (schema = svg2, state.schema = schema);
  let children = state.all(node2), jsxAttributes = [];
  for (; ++index2 < attributes.length; ) {
    let attribute = attributes[index2], value = attribute.value, attributeValue;
    if (attribute.type === "mdxJsxAttribute") {
      if (value == null)
        attributeValue = null;
      else if (typeof value == "object") {
        let estree = value.data && value.data.estree, comments = estree && estree.comments || [], expression;
        estree && (state.comments.push(...comments), attachComments(estree, estree.comments), expression = estree.body[0] && estree.body[0].type === "ExpressionStatement" && estree.body[0].expression || void 0), attributeValue = {
          type: "JSXExpressionContainer",
          expression: expression || { type: "JSXEmptyExpression" }
        }, state.inherit(value, attributeValue);
      } else
        attributeValue = { type: "Literal", value: String(value) };
      let jsxAttribute2 = {
        type: "JSXAttribute",
        name: state.createJsxAttributeName(attribute.name),
        value: attributeValue
      };
      state.inherit(attribute, jsxAttribute2), jsxAttributes.push(jsxAttribute2);
    } else {
      let estree = attribute.data && attribute.data.estree, comments = estree && estree.comments || [], argumentValue;
      estree && (state.comments.push(...comments), attachComments(estree, estree.comments), argumentValue = estree.body[0] && estree.body[0].type === "ExpressionStatement" && estree.body[0].expression && estree.body[0].expression.type === "ObjectExpression" && estree.body[0].expression.properties && estree.body[0].expression.properties[0] && estree.body[0].expression.properties[0].type === "SpreadElement" && estree.body[0].expression.properties[0].argument || void 0);
      let jsxAttribute2 = {
        type: "JSXSpreadAttribute",
        argument: argumentValue || { type: "ObjectExpression", properties: [] }
      };
      state.inherit(attribute, jsxAttribute2), jsxAttributes.push(jsxAttribute2);
    }
  }
  state.schema = parentSchema;
  let result = node2.name ? {
    type: "JSXElement",
    openingElement: {
      type: "JSXOpeningElement",
      attributes: jsxAttributes,
      name: state.createJsxElementName(node2.name),
      selfClosing: children.length === 0
    },
    closingElement: children.length > 0 ? {
      type: "JSXClosingElement",
      name: state.createJsxElementName(node2.name)
    } : null,
    children
  } : {
    type: "JSXFragment",
    openingFragment: { type: "JSXOpeningFragment" },
    closingFragment: { type: "JSXClosingFragment" },
    children
  };
  return state.inherit(node2, result), result;
}

// ../../../node_modules/hast-util-to-estree/lib/handlers/mdxjs-esm.js
function mdxjsEsm(node2, state) {
  let estree = node2.data && node2.data.estree, comments = estree && estree.comments || [];
  estree && (state.comments.push(...comments), attachComments(estree, comments), state.esm.push(...estree.body));
}

// ../../../node_modules/hast-util-whitespace/lib/index.js
var re = /[ \t\n\f\r]/g;
function whitespace(thing) {
  return typeof thing == "object" ? thing.type === "text" ? empty(thing.value) : !1 : empty(thing);
}
function empty(value) {
  return value.replace(re, "") === "";
}

// ../../../node_modules/hast-util-to-estree/lib/handlers/root.js
function root(node2, state) {
  let children = state.all(node2), cleanChildren = [], index2 = -1, queue;
  for (; ++index2 < children.length; ) {
    let child = children[index2];
    child.type === "JSXExpressionContainer" && child.expression.type === "Literal" && whitespace(String(child.expression.value)) ? queue && queue.push(child) : (queue && cleanChildren.push(...queue), cleanChildren.push(child), queue = []);
  }
  let result = {
    type: "JSXFragment",
    openingFragment: { type: "JSXOpeningFragment" },
    closingFragment: { type: "JSXClosingFragment" },
    children: cleanChildren
  };
  return state.inherit(node2, result), result;
}

// ../../../node_modules/hast-util-to-estree/lib/handlers/text.js
function text(node2, state) {
  let value = String(node2.value || "");
  if (value) {
    let result = { type: "Literal", value };
    state.inherit(node2, result);
    let container = { type: "JSXExpressionContainer", expression: result };
    return state.patch(node2, container), container;
  }
}

// ../../../node_modules/hast-util-to-estree/lib/handlers/index.js
var handlers = {
  comment,
  doctype: ignore,
  element,
  mdxFlowExpression: mdxExpression,
  mdxJsxFlowElement: mdxJsxElement,
  mdxJsxTextElement: mdxJsxElement,
  mdxTextExpression: mdxExpression,
  mdxjsEsm,
  root,
  text
};
function ignore() {
}

// ../../../node_modules/unist-util-position/lib/index.js
var pointEnd = point2("end"), pointStart = point2("start");
function point2(type) {
  return point4;
  function point4(node2) {
    let point5 = node2 && node2.position && node2.position[type] || {};
    if (typeof point5.line == "number" && point5.line > 0 && typeof point5.column == "number" && point5.column > 0)
      return {
        line: point5.line,
        column: point5.column,
        offset: typeof point5.offset == "number" && point5.offset > -1 ? point5.offset : void 0
      };
  }
}
function position2(node2) {
  let start2 = pointStart(node2), end = pointEnd(node2);
  if (start2 && end)
    return { start: start2, end };
}

// ../../../node_modules/zwitch/index.js
var own3 = {}.hasOwnProperty;
function zwitch(key2, options) {
  let settings = options || {};
  function one2(value, ...parameters) {
    let fn = one2.invalid, handlers3 = one2.handlers;
    if (value && own3.call(value, key2)) {
      let id = String(value[key2]);
      fn = own3.call(handlers3, id) ? handlers3[id] : one2.unknown;
    }
    if (fn)
      return fn.call(this, value, ...parameters);
  }
  return one2.handlers = settings.handlers || {}, one2.invalid = settings.invalid, one2.unknown = settings.unknown, one2;
}

// ../../../node_modules/hast-util-to-estree/lib/state.js
var own4 = {}.hasOwnProperty, tableElements = /* @__PURE__ */ new Set(["table", "tbody", "thead", "tfoot", "tr"]);
function createState(options) {
  let one2 = zwitch("type", {
    invalid,
    unknown,
    handlers: { ...handlers, ...options.handlers }
  });
  return {
    // Current space.
    elementAttributeNameCase: options.elementAttributeNameCase || "react",
    schema: options.space === "svg" ? svg2 : html2,
    stylePropertyNameCase: options.stylePropertyNameCase || "dom",
    tableCellAlignToStyle: options.tableCellAlignToStyle !== !1,
    // Results.
    comments: [],
    esm: [],
    // Useful functions.
    all,
    createJsxAttributeName,
    createJsxElementName,
    handle,
    inherit,
    patch
  };
  function handle(node2) {
    return one2(node2, this);
  }
}
function invalid(value) {
  throw new Error("Cannot handle value `" + value + "`, expected node");
}
function unknown(node2) {
  throw "type" in node2, new Error("Cannot handle unknown node `" + node2.type + "`");
}
function all(parent) {
  let children = parent.children || [], index2 = -1, results = [], ignoreLineBreak = this.schema.space === "html" && parent.type === "element" && tableElements.has(parent.tagName.toLowerCase());
  for (; ++index2 < children.length; ) {
    let child = children[index2];
    if (ignoreLineBreak && child.type === "text" && child.value === `
`)
      continue;
    let result = this.handle(child);
    Array.isArray(result) ? results.push(...result) : result && results.push(result);
  }
  return results;
}
function inherit(from, to) {
  let left = (
    /** @type {Record<string, unknown> | undefined} */
    from.data
  ), right, key2;
  if (patch(from, to), left) {
    for (key2 in left)
      own4.call(left, key2) && key2 !== "estree" && (right || (right = {}), right[key2] = left[key2]);
    right && (to.data = right);
  }
}
function patch(from, to) {
  let p = position2(from);
  p && p.start.offset !== void 0 && p.end.offset !== void 0 && (to.start = p.start.offset, to.end = p.end.offset, to.loc = {
    start: { line: p.start.line, column: p.start.column - 1 },
    end: { line: p.end.line, column: p.end.column - 1 }
  }, to.range = [p.start.offset, p.end.offset]);
}
function createJsxAttributeName(name2) {
  let node2 = createJsxNameFromString(name2);
  if (node2.type === "JSXMemberExpression")
    throw new Error("Member expressions in attribute names are not supported");
  return node2;
}
function createJsxElementName(name2) {
  return createJsxNameFromString(name2);
}
function createJsxNameFromString(name2) {
  if (name2.includes(".")) {
    let names = name2.split("."), part = names.shift();
    let node2 = { type: "JSXIdentifier", name: part };
    for (; part = names.shift(); )
      node2 = {
        type: "JSXMemberExpression",
        object: node2,
        property: { type: "JSXIdentifier", name: part }
      };
    return node2;
  }
  if (name2.includes(":")) {
    let parts = name2.split(":");
    return {
      type: "JSXNamespacedName",
      namespace: { type: "JSXIdentifier", name: parts[0] },
      name: { type: "JSXIdentifier", name: parts[1] }
    };
  }
  return { type: "JSXIdentifier", name: name2 };
}

// ../../../node_modules/hast-util-to-estree/lib/index.js
function toEstree(tree, options) {
  let state = createState(options || {}), result = state.handle(tree), body = state.esm;
  if (result) {
    result.type !== "JSXFragment" && result.type !== "JSXElement" && (result = {
      type: "JSXFragment",
      openingFragment: { type: "JSXOpeningFragment" },
      closingFragment: { type: "JSXClosingFragment" },
      children: [result]
    }, state.patch(tree, result));
    let statement = { type: "ExpressionStatement", expression: result };
    state.patch(tree, statement), body.push(statement);
  }
  let program = {
    type: "Program",
    body,
    sourceType: "module",
    comments: state.comments
  };
  return state.patch(tree, program), program;
}

// ../../../node_modules/rehype-recma/lib/index.js
function rehypeRecma(options) {
  return function(tree) {
    return toEstree(tree, options);
  };
}

// ../../../node_modules/mdast-util-mdx-expression/lib/index.js
function mdxExpressionFromMarkdown() {
  return {
    enter: {
      mdxFlowExpression: enterMdxFlowExpression,
      mdxTextExpression: enterMdxTextExpression
    },
    exit: {
      mdxFlowExpression: exitMdxExpression,
      mdxFlowExpressionChunk: exitMdxExpressionData,
      mdxTextExpression: exitMdxExpression,
      mdxTextExpressionChunk: exitMdxExpressionData
    }
  };
}
function mdxExpressionToMarkdown() {
  return {
    handlers: {
      mdxFlowExpression: handleMdxExpression,
      mdxTextExpression: handleMdxExpression
    },
    unsafe: [
      { character: "{", inConstruct: ["phrasing"] },
      { atBreak: !0, character: "{" }
    ]
  };
}
function enterMdxFlowExpression(token) {
  this.enter({ type: "mdxFlowExpression", value: "" }, token), this.buffer();
}
function enterMdxTextExpression(token) {
  this.enter({ type: "mdxTextExpression", value: "" }, token), this.buffer();
}
function exitMdxExpression(token) {
  let value = this.resume(), estree = token.estree, node2 = this.stack[this.stack.length - 1];
  node2.type === "mdxFlowExpression" || node2.type, this.exit(token), node2.value = value, estree && (node2.data = { estree });
}
function exitMdxExpressionData(token) {
  this.config.enter.data.call(this, token), this.config.exit.data.call(this, token);
}
function handleMdxExpression(node2, parent, state) {
  let value = node2.value || "";
  return "{" + state.indentLines(value, function(line, index2, blank) {
    return (index2 === 0 || blank ? "" : "  ") + line;
  }) + "}";
}

// ../../../node_modules/ccount/index.js
function ccount(value, character) {
  let source = String(value);
  if (typeof character != "string")
    throw new TypeError("Expected character");
  let count = 0, index2 = source.indexOf(character);
  for (; index2 !== -1; )
    count++, index2 = source.indexOf(character, index2 + character.length);
  return count;
}

// ../../../node_modules/character-entities-legacy/index.js
var characterEntitiesLegacy = [
  "AElig",
  "AMP",
  "Aacute",
  "Acirc",
  "Agrave",
  "Aring",
  "Atilde",
  "Auml",
  "COPY",
  "Ccedil",
  "ETH",
  "Eacute",
  "Ecirc",
  "Egrave",
  "Euml",
  "GT",
  "Iacute",
  "Icirc",
  "Igrave",
  "Iuml",
  "LT",
  "Ntilde",
  "Oacute",
  "Ocirc",
  "Ograve",
  "Oslash",
  "Otilde",
  "Ouml",
  "QUOT",
  "REG",
  "THORN",
  "Uacute",
  "Ucirc",
  "Ugrave",
  "Uuml",
  "Yacute",
  "aacute",
  "acirc",
  "acute",
  "aelig",
  "agrave",
  "amp",
  "aring",
  "atilde",
  "auml",
  "brvbar",
  "ccedil",
  "cedil",
  "cent",
  "copy",
  "curren",
  "deg",
  "divide",
  "eacute",
  "ecirc",
  "egrave",
  "eth",
  "euml",
  "frac12",
  "frac14",
  "frac34",
  "gt",
  "iacute",
  "icirc",
  "iexcl",
  "igrave",
  "iquest",
  "iuml",
  "laquo",
  "lt",
  "macr",
  "micro",
  "middot",
  "nbsp",
  "not",
  "ntilde",
  "oacute",
  "ocirc",
  "ograve",
  "ordf",
  "ordm",
  "oslash",
  "otilde",
  "ouml",
  "para",
  "plusmn",
  "pound",
  "quot",
  "raquo",
  "reg",
  "sect",
  "shy",
  "sup1",
  "sup2",
  "sup3",
  "szlig",
  "thorn",
  "times",
  "uacute",
  "ucirc",
  "ugrave",
  "uml",
  "uuml",
  "yacute",
  "yen",
  "yuml"
];

// ../../../node_modules/character-reference-invalid/index.js
var characterReferenceInvalid = {
  0: "\uFFFD",
  128: "\u20AC",
  130: "\u201A",
  131: "\u0192",
  132: "\u201E",
  133: "\u2026",
  134: "\u2020",
  135: "\u2021",
  136: "\u02C6",
  137: "\u2030",
  138: "\u0160",
  139: "\u2039",
  140: "\u0152",
  142: "\u017D",
  145: "\u2018",
  146: "\u2019",
  147: "\u201C",
  148: "\u201D",
  149: "\u2022",
  150: "\u2013",
  151: "\u2014",
  152: "\u02DC",
  153: "\u2122",
  154: "\u0161",
  155: "\u203A",
  156: "\u0153",
  158: "\u017E",
  159: "\u0178"
};

// ../../../node_modules/is-decimal/index.js
function isDecimal(character) {
  let code2 = typeof character == "string" ? character.charCodeAt(0) : character;
  return code2 >= 48 && code2 <= 57;
}

// ../../../node_modules/is-hexadecimal/index.js
function isHexadecimal(character) {
  let code2 = typeof character == "string" ? character.charCodeAt(0) : character;
  return code2 >= 97 && code2 <= 102 || code2 >= 65 && code2 <= 70 || code2 >= 48 && code2 <= 57;
}

// ../../../node_modules/is-alphabetical/index.js
function isAlphabetical(character) {
  let code2 = typeof character == "string" ? character.charCodeAt(0) : character;
  return code2 >= 97 && code2 <= 122 || code2 >= 65 && code2 <= 90;
}

// ../../../node_modules/is-alphanumerical/index.js
function isAlphanumerical(character) {
  return isAlphabetical(character) || isDecimal(character);
}

// ../../../node_modules/character-entities/index.js
var characterEntities = {
  AElig: "\xC6",
  AMP: "&",
  Aacute: "\xC1",
  Abreve: "\u0102",
  Acirc: "\xC2",
  Acy: "\u0410",
  Afr: "\u{1D504}",
  Agrave: "\xC0",
  Alpha: "\u0391",
  Amacr: "\u0100",
  And: "\u2A53",
  Aogon: "\u0104",
  Aopf: "\u{1D538}",
  ApplyFunction: "\u2061",
  Aring: "\xC5",
  Ascr: "\u{1D49C}",
  Assign: "\u2254",
  Atilde: "\xC3",
  Auml: "\xC4",
  Backslash: "\u2216",
  Barv: "\u2AE7",
  Barwed: "\u2306",
  Bcy: "\u0411",
  Because: "\u2235",
  Bernoullis: "\u212C",
  Beta: "\u0392",
  Bfr: "\u{1D505}",
  Bopf: "\u{1D539}",
  Breve: "\u02D8",
  Bscr: "\u212C",
  Bumpeq: "\u224E",
  CHcy: "\u0427",
  COPY: "\xA9",
  Cacute: "\u0106",
  Cap: "\u22D2",
  CapitalDifferentialD: "\u2145",
  Cayleys: "\u212D",
  Ccaron: "\u010C",
  Ccedil: "\xC7",
  Ccirc: "\u0108",
  Cconint: "\u2230",
  Cdot: "\u010A",
  Cedilla: "\xB8",
  CenterDot: "\xB7",
  Cfr: "\u212D",
  Chi: "\u03A7",
  CircleDot: "\u2299",
  CircleMinus: "\u2296",
  CirclePlus: "\u2295",
  CircleTimes: "\u2297",
  ClockwiseContourIntegral: "\u2232",
  CloseCurlyDoubleQuote: "\u201D",
  CloseCurlyQuote: "\u2019",
  Colon: "\u2237",
  Colone: "\u2A74",
  Congruent: "\u2261",
  Conint: "\u222F",
  ContourIntegral: "\u222E",
  Copf: "\u2102",
  Coproduct: "\u2210",
  CounterClockwiseContourIntegral: "\u2233",
  Cross: "\u2A2F",
  Cscr: "\u{1D49E}",
  Cup: "\u22D3",
  CupCap: "\u224D",
  DD: "\u2145",
  DDotrahd: "\u2911",
  DJcy: "\u0402",
  DScy: "\u0405",
  DZcy: "\u040F",
  Dagger: "\u2021",
  Darr: "\u21A1",
  Dashv: "\u2AE4",
  Dcaron: "\u010E",
  Dcy: "\u0414",
  Del: "\u2207",
  Delta: "\u0394",
  Dfr: "\u{1D507}",
  DiacriticalAcute: "\xB4",
  DiacriticalDot: "\u02D9",
  DiacriticalDoubleAcute: "\u02DD",
  DiacriticalGrave: "`",
  DiacriticalTilde: "\u02DC",
  Diamond: "\u22C4",
  DifferentialD: "\u2146",
  Dopf: "\u{1D53B}",
  Dot: "\xA8",
  DotDot: "\u20DC",
  DotEqual: "\u2250",
  DoubleContourIntegral: "\u222F",
  DoubleDot: "\xA8",
  DoubleDownArrow: "\u21D3",
  DoubleLeftArrow: "\u21D0",
  DoubleLeftRightArrow: "\u21D4",
  DoubleLeftTee: "\u2AE4",
  DoubleLongLeftArrow: "\u27F8",
  DoubleLongLeftRightArrow: "\u27FA",
  DoubleLongRightArrow: "\u27F9",
  DoubleRightArrow: "\u21D2",
  DoubleRightTee: "\u22A8",
  DoubleUpArrow: "\u21D1",
  DoubleUpDownArrow: "\u21D5",
  DoubleVerticalBar: "\u2225",
  DownArrow: "\u2193",
  DownArrowBar: "\u2913",
  DownArrowUpArrow: "\u21F5",
  DownBreve: "\u0311",
  DownLeftRightVector: "\u2950",
  DownLeftTeeVector: "\u295E",
  DownLeftVector: "\u21BD",
  DownLeftVectorBar: "\u2956",
  DownRightTeeVector: "\u295F",
  DownRightVector: "\u21C1",
  DownRightVectorBar: "\u2957",
  DownTee: "\u22A4",
  DownTeeArrow: "\u21A7",
  Downarrow: "\u21D3",
  Dscr: "\u{1D49F}",
  Dstrok: "\u0110",
  ENG: "\u014A",
  ETH: "\xD0",
  Eacute: "\xC9",
  Ecaron: "\u011A",
  Ecirc: "\xCA",
  Ecy: "\u042D",
  Edot: "\u0116",
  Efr: "\u{1D508}",
  Egrave: "\xC8",
  Element: "\u2208",
  Emacr: "\u0112",
  EmptySmallSquare: "\u25FB",
  EmptyVerySmallSquare: "\u25AB",
  Eogon: "\u0118",
  Eopf: "\u{1D53C}",
  Epsilon: "\u0395",
  Equal: "\u2A75",
  EqualTilde: "\u2242",
  Equilibrium: "\u21CC",
  Escr: "\u2130",
  Esim: "\u2A73",
  Eta: "\u0397",
  Euml: "\xCB",
  Exists: "\u2203",
  ExponentialE: "\u2147",
  Fcy: "\u0424",
  Ffr: "\u{1D509}",
  FilledSmallSquare: "\u25FC",
  FilledVerySmallSquare: "\u25AA",
  Fopf: "\u{1D53D}",
  ForAll: "\u2200",
  Fouriertrf: "\u2131",
  Fscr: "\u2131",
  GJcy: "\u0403",
  GT: ">",
  Gamma: "\u0393",
  Gammad: "\u03DC",
  Gbreve: "\u011E",
  Gcedil: "\u0122",
  Gcirc: "\u011C",
  Gcy: "\u0413",
  Gdot: "\u0120",
  Gfr: "\u{1D50A}",
  Gg: "\u22D9",
  Gopf: "\u{1D53E}",
  GreaterEqual: "\u2265",
  GreaterEqualLess: "\u22DB",
  GreaterFullEqual: "\u2267",
  GreaterGreater: "\u2AA2",
  GreaterLess: "\u2277",
  GreaterSlantEqual: "\u2A7E",
  GreaterTilde: "\u2273",
  Gscr: "\u{1D4A2}",
  Gt: "\u226B",
  HARDcy: "\u042A",
  Hacek: "\u02C7",
  Hat: "^",
  Hcirc: "\u0124",
  Hfr: "\u210C",
  HilbertSpace: "\u210B",
  Hopf: "\u210D",
  HorizontalLine: "\u2500",
  Hscr: "\u210B",
  Hstrok: "\u0126",
  HumpDownHump: "\u224E",
  HumpEqual: "\u224F",
  IEcy: "\u0415",
  IJlig: "\u0132",
  IOcy: "\u0401",
  Iacute: "\xCD",
  Icirc: "\xCE",
  Icy: "\u0418",
  Idot: "\u0130",
  Ifr: "\u2111",
  Igrave: "\xCC",
  Im: "\u2111",
  Imacr: "\u012A",
  ImaginaryI: "\u2148",
  Implies: "\u21D2",
  Int: "\u222C",
  Integral: "\u222B",
  Intersection: "\u22C2",
  InvisibleComma: "\u2063",
  InvisibleTimes: "\u2062",
  Iogon: "\u012E",
  Iopf: "\u{1D540}",
  Iota: "\u0399",
  Iscr: "\u2110",
  Itilde: "\u0128",
  Iukcy: "\u0406",
  Iuml: "\xCF",
  Jcirc: "\u0134",
  Jcy: "\u0419",
  Jfr: "\u{1D50D}",
  Jopf: "\u{1D541}",
  Jscr: "\u{1D4A5}",
  Jsercy: "\u0408",
  Jukcy: "\u0404",
  KHcy: "\u0425",
  KJcy: "\u040C",
  Kappa: "\u039A",
  Kcedil: "\u0136",
  Kcy: "\u041A",
  Kfr: "\u{1D50E}",
  Kopf: "\u{1D542}",
  Kscr: "\u{1D4A6}",
  LJcy: "\u0409",
  LT: "<",
  Lacute: "\u0139",
  Lambda: "\u039B",
  Lang: "\u27EA",
  Laplacetrf: "\u2112",
  Larr: "\u219E",
  Lcaron: "\u013D",
  Lcedil: "\u013B",
  Lcy: "\u041B",
  LeftAngleBracket: "\u27E8",
  LeftArrow: "\u2190",
  LeftArrowBar: "\u21E4",
  LeftArrowRightArrow: "\u21C6",
  LeftCeiling: "\u2308",
  LeftDoubleBracket: "\u27E6",
  LeftDownTeeVector: "\u2961",
  LeftDownVector: "\u21C3",
  LeftDownVectorBar: "\u2959",
  LeftFloor: "\u230A",
  LeftRightArrow: "\u2194",
  LeftRightVector: "\u294E",
  LeftTee: "\u22A3",
  LeftTeeArrow: "\u21A4",
  LeftTeeVector: "\u295A",
  LeftTriangle: "\u22B2",
  LeftTriangleBar: "\u29CF",
  LeftTriangleEqual: "\u22B4",
  LeftUpDownVector: "\u2951",
  LeftUpTeeVector: "\u2960",
  LeftUpVector: "\u21BF",
  LeftUpVectorBar: "\u2958",
  LeftVector: "\u21BC",
  LeftVectorBar: "\u2952",
  Leftarrow: "\u21D0",
  Leftrightarrow: "\u21D4",
  LessEqualGreater: "\u22DA",
  LessFullEqual: "\u2266",
  LessGreater: "\u2276",
  LessLess: "\u2AA1",
  LessSlantEqual: "\u2A7D",
  LessTilde: "\u2272",
  Lfr: "\u{1D50F}",
  Ll: "\u22D8",
  Lleftarrow: "\u21DA",
  Lmidot: "\u013F",
  LongLeftArrow: "\u27F5",
  LongLeftRightArrow: "\u27F7",
  LongRightArrow: "\u27F6",
  Longleftarrow: "\u27F8",
  Longleftrightarrow: "\u27FA",
  Longrightarrow: "\u27F9",
  Lopf: "\u{1D543}",
  LowerLeftArrow: "\u2199",
  LowerRightArrow: "\u2198",
  Lscr: "\u2112",
  Lsh: "\u21B0",
  Lstrok: "\u0141",
  Lt: "\u226A",
  Map: "\u2905",
  Mcy: "\u041C",
  MediumSpace: "\u205F",
  Mellintrf: "\u2133",
  Mfr: "\u{1D510}",
  MinusPlus: "\u2213",
  Mopf: "\u{1D544}",
  Mscr: "\u2133",
  Mu: "\u039C",
  NJcy: "\u040A",
  Nacute: "\u0143",
  Ncaron: "\u0147",
  Ncedil: "\u0145",
  Ncy: "\u041D",
  NegativeMediumSpace: "\u200B",
  NegativeThickSpace: "\u200B",
  NegativeThinSpace: "\u200B",
  NegativeVeryThinSpace: "\u200B",
  NestedGreaterGreater: "\u226B",
  NestedLessLess: "\u226A",
  NewLine: `
`,
  Nfr: "\u{1D511}",
  NoBreak: "\u2060",
  NonBreakingSpace: "\xA0",
  Nopf: "\u2115",
  Not: "\u2AEC",
  NotCongruent: "\u2262",
  NotCupCap: "\u226D",
  NotDoubleVerticalBar: "\u2226",
  NotElement: "\u2209",
  NotEqual: "\u2260",
  NotEqualTilde: "\u2242\u0338",
  NotExists: "\u2204",
  NotGreater: "\u226F",
  NotGreaterEqual: "\u2271",
  NotGreaterFullEqual: "\u2267\u0338",
  NotGreaterGreater: "\u226B\u0338",
  NotGreaterLess: "\u2279",
  NotGreaterSlantEqual: "\u2A7E\u0338",
  NotGreaterTilde: "\u2275",
  NotHumpDownHump: "\u224E\u0338",
  NotHumpEqual: "\u224F\u0338",
  NotLeftTriangle: "\u22EA",
  NotLeftTriangleBar: "\u29CF\u0338",
  NotLeftTriangleEqual: "\u22EC",
  NotLess: "\u226E",
  NotLessEqual: "\u2270",
  NotLessGreater: "\u2278",
  NotLessLess: "\u226A\u0338",
  NotLessSlantEqual: "\u2A7D\u0338",
  NotLessTilde: "\u2274",
  NotNestedGreaterGreater: "\u2AA2\u0338",
  NotNestedLessLess: "\u2AA1\u0338",
  NotPrecedes: "\u2280",
  NotPrecedesEqual: "\u2AAF\u0338",
  NotPrecedesSlantEqual: "\u22E0",
  NotReverseElement: "\u220C",
  NotRightTriangle: "\u22EB",
  NotRightTriangleBar: "\u29D0\u0338",
  NotRightTriangleEqual: "\u22ED",
  NotSquareSubset: "\u228F\u0338",
  NotSquareSubsetEqual: "\u22E2",
  NotSquareSuperset: "\u2290\u0338",
  NotSquareSupersetEqual: "\u22E3",
  NotSubset: "\u2282\u20D2",
  NotSubsetEqual: "\u2288",
  NotSucceeds: "\u2281",
  NotSucceedsEqual: "\u2AB0\u0338",
  NotSucceedsSlantEqual: "\u22E1",
  NotSucceedsTilde: "\u227F\u0338",
  NotSuperset: "\u2283\u20D2",
  NotSupersetEqual: "\u2289",
  NotTilde: "\u2241",
  NotTildeEqual: "\u2244",
  NotTildeFullEqual: "\u2247",
  NotTildeTilde: "\u2249",
  NotVerticalBar: "\u2224",
  Nscr: "\u{1D4A9}",
  Ntilde: "\xD1",
  Nu: "\u039D",
  OElig: "\u0152",
  Oacute: "\xD3",
  Ocirc: "\xD4",
  Ocy: "\u041E",
  Odblac: "\u0150",
  Ofr: "\u{1D512}",
  Ograve: "\xD2",
  Omacr: "\u014C",
  Omega: "\u03A9",
  Omicron: "\u039F",
  Oopf: "\u{1D546}",
  OpenCurlyDoubleQuote: "\u201C",
  OpenCurlyQuote: "\u2018",
  Or: "\u2A54",
  Oscr: "\u{1D4AA}",
  Oslash: "\xD8",
  Otilde: "\xD5",
  Otimes: "\u2A37",
  Ouml: "\xD6",
  OverBar: "\u203E",
  OverBrace: "\u23DE",
  OverBracket: "\u23B4",
  OverParenthesis: "\u23DC",
  PartialD: "\u2202",
  Pcy: "\u041F",
  Pfr: "\u{1D513}",
  Phi: "\u03A6",
  Pi: "\u03A0",
  PlusMinus: "\xB1",
  Poincareplane: "\u210C",
  Popf: "\u2119",
  Pr: "\u2ABB",
  Precedes: "\u227A",
  PrecedesEqual: "\u2AAF",
  PrecedesSlantEqual: "\u227C",
  PrecedesTilde: "\u227E",
  Prime: "\u2033",
  Product: "\u220F",
  Proportion: "\u2237",
  Proportional: "\u221D",
  Pscr: "\u{1D4AB}",
  Psi: "\u03A8",
  QUOT: '"',
  Qfr: "\u{1D514}",
  Qopf: "\u211A",
  Qscr: "\u{1D4AC}",
  RBarr: "\u2910",
  REG: "\xAE",
  Racute: "\u0154",
  Rang: "\u27EB",
  Rarr: "\u21A0",
  Rarrtl: "\u2916",
  Rcaron: "\u0158",
  Rcedil: "\u0156",
  Rcy: "\u0420",
  Re: "\u211C",
  ReverseElement: "\u220B",
  ReverseEquilibrium: "\u21CB",
  ReverseUpEquilibrium: "\u296F",
  Rfr: "\u211C",
  Rho: "\u03A1",
  RightAngleBracket: "\u27E9",
  RightArrow: "\u2192",
  RightArrowBar: "\u21E5",
  RightArrowLeftArrow: "\u21C4",
  RightCeiling: "\u2309",
  RightDoubleBracket: "\u27E7",
  RightDownTeeVector: "\u295D",
  RightDownVector: "\u21C2",
  RightDownVectorBar: "\u2955",
  RightFloor: "\u230B",
  RightTee: "\u22A2",
  RightTeeArrow: "\u21A6",
  RightTeeVector: "\u295B",
  RightTriangle: "\u22B3",
  RightTriangleBar: "\u29D0",
  RightTriangleEqual: "\u22B5",
  RightUpDownVector: "\u294F",
  RightUpTeeVector: "\u295C",
  RightUpVector: "\u21BE",
  RightUpVectorBar: "\u2954",
  RightVector: "\u21C0",
  RightVectorBar: "\u2953",
  Rightarrow: "\u21D2",
  Ropf: "\u211D",
  RoundImplies: "\u2970",
  Rrightarrow: "\u21DB",
  Rscr: "\u211B",
  Rsh: "\u21B1",
  RuleDelayed: "\u29F4",
  SHCHcy: "\u0429",
  SHcy: "\u0428",
  SOFTcy: "\u042C",
  Sacute: "\u015A",
  Sc: "\u2ABC",
  Scaron: "\u0160",
  Scedil: "\u015E",
  Scirc: "\u015C",
  Scy: "\u0421",
  Sfr: "\u{1D516}",
  ShortDownArrow: "\u2193",
  ShortLeftArrow: "\u2190",
  ShortRightArrow: "\u2192",
  ShortUpArrow: "\u2191",
  Sigma: "\u03A3",
  SmallCircle: "\u2218",
  Sopf: "\u{1D54A}",
  Sqrt: "\u221A",
  Square: "\u25A1",
  SquareIntersection: "\u2293",
  SquareSubset: "\u228F",
  SquareSubsetEqual: "\u2291",
  SquareSuperset: "\u2290",
  SquareSupersetEqual: "\u2292",
  SquareUnion: "\u2294",
  Sscr: "\u{1D4AE}",
  Star: "\u22C6",
  Sub: "\u22D0",
  Subset: "\u22D0",
  SubsetEqual: "\u2286",
  Succeeds: "\u227B",
  SucceedsEqual: "\u2AB0",
  SucceedsSlantEqual: "\u227D",
  SucceedsTilde: "\u227F",
  SuchThat: "\u220B",
  Sum: "\u2211",
  Sup: "\u22D1",
  Superset: "\u2283",
  SupersetEqual: "\u2287",
  Supset: "\u22D1",
  THORN: "\xDE",
  TRADE: "\u2122",
  TSHcy: "\u040B",
  TScy: "\u0426",
  Tab: "	",
  Tau: "\u03A4",
  Tcaron: "\u0164",
  Tcedil: "\u0162",
  Tcy: "\u0422",
  Tfr: "\u{1D517}",
  Therefore: "\u2234",
  Theta: "\u0398",
  ThickSpace: "\u205F\u200A",
  ThinSpace: "\u2009",
  Tilde: "\u223C",
  TildeEqual: "\u2243",
  TildeFullEqual: "\u2245",
  TildeTilde: "\u2248",
  Topf: "\u{1D54B}",
  TripleDot: "\u20DB",
  Tscr: "\u{1D4AF}",
  Tstrok: "\u0166",
  Uacute: "\xDA",
  Uarr: "\u219F",
  Uarrocir: "\u2949",
  Ubrcy: "\u040E",
  Ubreve: "\u016C",
  Ucirc: "\xDB",
  Ucy: "\u0423",
  Udblac: "\u0170",
  Ufr: "\u{1D518}",
  Ugrave: "\xD9",
  Umacr: "\u016A",
  UnderBar: "_",
  UnderBrace: "\u23DF",
  UnderBracket: "\u23B5",
  UnderParenthesis: "\u23DD",
  Union: "\u22C3",
  UnionPlus: "\u228E",
  Uogon: "\u0172",
  Uopf: "\u{1D54C}",
  UpArrow: "\u2191",
  UpArrowBar: "\u2912",
  UpArrowDownArrow: "\u21C5",
  UpDownArrow: "\u2195",
  UpEquilibrium: "\u296E",
  UpTee: "\u22A5",
  UpTeeArrow: "\u21A5",
  Uparrow: "\u21D1",
  Updownarrow: "\u21D5",
  UpperLeftArrow: "\u2196",
  UpperRightArrow: "\u2197",
  Upsi: "\u03D2",
  Upsilon: "\u03A5",
  Uring: "\u016E",
  Uscr: "\u{1D4B0}",
  Utilde: "\u0168",
  Uuml: "\xDC",
  VDash: "\u22AB",
  Vbar: "\u2AEB",
  Vcy: "\u0412",
  Vdash: "\u22A9",
  Vdashl: "\u2AE6",
  Vee: "\u22C1",
  Verbar: "\u2016",
  Vert: "\u2016",
  VerticalBar: "\u2223",
  VerticalLine: "|",
  VerticalSeparator: "\u2758",
  VerticalTilde: "\u2240",
  VeryThinSpace: "\u200A",
  Vfr: "\u{1D519}",
  Vopf: "\u{1D54D}",
  Vscr: "\u{1D4B1}",
  Vvdash: "\u22AA",
  Wcirc: "\u0174",
  Wedge: "\u22C0",
  Wfr: "\u{1D51A}",
  Wopf: "\u{1D54E}",
  Wscr: "\u{1D4B2}",
  Xfr: "\u{1D51B}",
  Xi: "\u039E",
  Xopf: "\u{1D54F}",
  Xscr: "\u{1D4B3}",
  YAcy: "\u042F",
  YIcy: "\u0407",
  YUcy: "\u042E",
  Yacute: "\xDD",
  Ycirc: "\u0176",
  Ycy: "\u042B",
  Yfr: "\u{1D51C}",
  Yopf: "\u{1D550}",
  Yscr: "\u{1D4B4}",
  Yuml: "\u0178",
  ZHcy: "\u0416",
  Zacute: "\u0179",
  Zcaron: "\u017D",
  Zcy: "\u0417",
  Zdot: "\u017B",
  ZeroWidthSpace: "\u200B",
  Zeta: "\u0396",
  Zfr: "\u2128",
  Zopf: "\u2124",
  Zscr: "\u{1D4B5}",
  aacute: "\xE1",
  abreve: "\u0103",
  ac: "\u223E",
  acE: "\u223E\u0333",
  acd: "\u223F",
  acirc: "\xE2",
  acute: "\xB4",
  acy: "\u0430",
  aelig: "\xE6",
  af: "\u2061",
  afr: "\u{1D51E}",
  agrave: "\xE0",
  alefsym: "\u2135",
  aleph: "\u2135",
  alpha: "\u03B1",
  amacr: "\u0101",
  amalg: "\u2A3F",
  amp: "&",
  and: "\u2227",
  andand: "\u2A55",
  andd: "\u2A5C",
  andslope: "\u2A58",
  andv: "\u2A5A",
  ang: "\u2220",
  ange: "\u29A4",
  angle: "\u2220",
  angmsd: "\u2221",
  angmsdaa: "\u29A8",
  angmsdab: "\u29A9",
  angmsdac: "\u29AA",
  angmsdad: "\u29AB",
  angmsdae: "\u29AC",
  angmsdaf: "\u29AD",
  angmsdag: "\u29AE",
  angmsdah: "\u29AF",
  angrt: "\u221F",
  angrtvb: "\u22BE",
  angrtvbd: "\u299D",
  angsph: "\u2222",
  angst: "\xC5",
  angzarr: "\u237C",
  aogon: "\u0105",
  aopf: "\u{1D552}",
  ap: "\u2248",
  apE: "\u2A70",
  apacir: "\u2A6F",
  ape: "\u224A",
  apid: "\u224B",
  apos: "'",
  approx: "\u2248",
  approxeq: "\u224A",
  aring: "\xE5",
  ascr: "\u{1D4B6}",
  ast: "*",
  asymp: "\u2248",
  asympeq: "\u224D",
  atilde: "\xE3",
  auml: "\xE4",
  awconint: "\u2233",
  awint: "\u2A11",
  bNot: "\u2AED",
  backcong: "\u224C",
  backepsilon: "\u03F6",
  backprime: "\u2035",
  backsim: "\u223D",
  backsimeq: "\u22CD",
  barvee: "\u22BD",
  barwed: "\u2305",
  barwedge: "\u2305",
  bbrk: "\u23B5",
  bbrktbrk: "\u23B6",
  bcong: "\u224C",
  bcy: "\u0431",
  bdquo: "\u201E",
  becaus: "\u2235",
  because: "\u2235",
  bemptyv: "\u29B0",
  bepsi: "\u03F6",
  bernou: "\u212C",
  beta: "\u03B2",
  beth: "\u2136",
  between: "\u226C",
  bfr: "\u{1D51F}",
  bigcap: "\u22C2",
  bigcirc: "\u25EF",
  bigcup: "\u22C3",
  bigodot: "\u2A00",
  bigoplus: "\u2A01",
  bigotimes: "\u2A02",
  bigsqcup: "\u2A06",
  bigstar: "\u2605",
  bigtriangledown: "\u25BD",
  bigtriangleup: "\u25B3",
  biguplus: "\u2A04",
  bigvee: "\u22C1",
  bigwedge: "\u22C0",
  bkarow: "\u290D",
  blacklozenge: "\u29EB",
  blacksquare: "\u25AA",
  blacktriangle: "\u25B4",
  blacktriangledown: "\u25BE",
  blacktriangleleft: "\u25C2",
  blacktriangleright: "\u25B8",
  blank: "\u2423",
  blk12: "\u2592",
  blk14: "\u2591",
  blk34: "\u2593",
  block: "\u2588",
  bne: "=\u20E5",
  bnequiv: "\u2261\u20E5",
  bnot: "\u2310",
  bopf: "\u{1D553}",
  bot: "\u22A5",
  bottom: "\u22A5",
  bowtie: "\u22C8",
  boxDL: "\u2557",
  boxDR: "\u2554",
  boxDl: "\u2556",
  boxDr: "\u2553",
  boxH: "\u2550",
  boxHD: "\u2566",
  boxHU: "\u2569",
  boxHd: "\u2564",
  boxHu: "\u2567",
  boxUL: "\u255D",
  boxUR: "\u255A",
  boxUl: "\u255C",
  boxUr: "\u2559",
  boxV: "\u2551",
  boxVH: "\u256C",
  boxVL: "\u2563",
  boxVR: "\u2560",
  boxVh: "\u256B",
  boxVl: "\u2562",
  boxVr: "\u255F",
  boxbox: "\u29C9",
  boxdL: "\u2555",
  boxdR: "\u2552",
  boxdl: "\u2510",
  boxdr: "\u250C",
  boxh: "\u2500",
  boxhD: "\u2565",
  boxhU: "\u2568",
  boxhd: "\u252C",
  boxhu: "\u2534",
  boxminus: "\u229F",
  boxplus: "\u229E",
  boxtimes: "\u22A0",
  boxuL: "\u255B",
  boxuR: "\u2558",
  boxul: "\u2518",
  boxur: "\u2514",
  boxv: "\u2502",
  boxvH: "\u256A",
  boxvL: "\u2561",
  boxvR: "\u255E",
  boxvh: "\u253C",
  boxvl: "\u2524",
  boxvr: "\u251C",
  bprime: "\u2035",
  breve: "\u02D8",
  brvbar: "\xA6",
  bscr: "\u{1D4B7}",
  bsemi: "\u204F",
  bsim: "\u223D",
  bsime: "\u22CD",
  bsol: "\\",
  bsolb: "\u29C5",
  bsolhsub: "\u27C8",
  bull: "\u2022",
  bullet: "\u2022",
  bump: "\u224E",
  bumpE: "\u2AAE",
  bumpe: "\u224F",
  bumpeq: "\u224F",
  cacute: "\u0107",
  cap: "\u2229",
  capand: "\u2A44",
  capbrcup: "\u2A49",
  capcap: "\u2A4B",
  capcup: "\u2A47",
  capdot: "\u2A40",
  caps: "\u2229\uFE00",
  caret: "\u2041",
  caron: "\u02C7",
  ccaps: "\u2A4D",
  ccaron: "\u010D",
  ccedil: "\xE7",
  ccirc: "\u0109",
  ccups: "\u2A4C",
  ccupssm: "\u2A50",
  cdot: "\u010B",
  cedil: "\xB8",
  cemptyv: "\u29B2",
  cent: "\xA2",
  centerdot: "\xB7",
  cfr: "\u{1D520}",
  chcy: "\u0447",
  check: "\u2713",
  checkmark: "\u2713",
  chi: "\u03C7",
  cir: "\u25CB",
  cirE: "\u29C3",
  circ: "\u02C6",
  circeq: "\u2257",
  circlearrowleft: "\u21BA",
  circlearrowright: "\u21BB",
  circledR: "\xAE",
  circledS: "\u24C8",
  circledast: "\u229B",
  circledcirc: "\u229A",
  circleddash: "\u229D",
  cire: "\u2257",
  cirfnint: "\u2A10",
  cirmid: "\u2AEF",
  cirscir: "\u29C2",
  clubs: "\u2663",
  clubsuit: "\u2663",
  colon: ":",
  colone: "\u2254",
  coloneq: "\u2254",
  comma: ",",
  commat: "@",
  comp: "\u2201",
  compfn: "\u2218",
  complement: "\u2201",
  complexes: "\u2102",
  cong: "\u2245",
  congdot: "\u2A6D",
  conint: "\u222E",
  copf: "\u{1D554}",
  coprod: "\u2210",
  copy: "\xA9",
  copysr: "\u2117",
  crarr: "\u21B5",
  cross: "\u2717",
  cscr: "\u{1D4B8}",
  csub: "\u2ACF",
  csube: "\u2AD1",
  csup: "\u2AD0",
  csupe: "\u2AD2",
  ctdot: "\u22EF",
  cudarrl: "\u2938",
  cudarrr: "\u2935",
  cuepr: "\u22DE",
  cuesc: "\u22DF",
  cularr: "\u21B6",
  cularrp: "\u293D",
  cup: "\u222A",
  cupbrcap: "\u2A48",
  cupcap: "\u2A46",
  cupcup: "\u2A4A",
  cupdot: "\u228D",
  cupor: "\u2A45",
  cups: "\u222A\uFE00",
  curarr: "\u21B7",
  curarrm: "\u293C",
  curlyeqprec: "\u22DE",
  curlyeqsucc: "\u22DF",
  curlyvee: "\u22CE",
  curlywedge: "\u22CF",
  curren: "\xA4",
  curvearrowleft: "\u21B6",
  curvearrowright: "\u21B7",
  cuvee: "\u22CE",
  cuwed: "\u22CF",
  cwconint: "\u2232",
  cwint: "\u2231",
  cylcty: "\u232D",
  dArr: "\u21D3",
  dHar: "\u2965",
  dagger: "\u2020",
  daleth: "\u2138",
  darr: "\u2193",
  dash: "\u2010",
  dashv: "\u22A3",
  dbkarow: "\u290F",
  dblac: "\u02DD",
  dcaron: "\u010F",
  dcy: "\u0434",
  dd: "\u2146",
  ddagger: "\u2021",
  ddarr: "\u21CA",
  ddotseq: "\u2A77",
  deg: "\xB0",
  delta: "\u03B4",
  demptyv: "\u29B1",
  dfisht: "\u297F",
  dfr: "\u{1D521}",
  dharl: "\u21C3",
  dharr: "\u21C2",
  diam: "\u22C4",
  diamond: "\u22C4",
  diamondsuit: "\u2666",
  diams: "\u2666",
  die: "\xA8",
  digamma: "\u03DD",
  disin: "\u22F2",
  div: "\xF7",
  divide: "\xF7",
  divideontimes: "\u22C7",
  divonx: "\u22C7",
  djcy: "\u0452",
  dlcorn: "\u231E",
  dlcrop: "\u230D",
  dollar: "$",
  dopf: "\u{1D555}",
  dot: "\u02D9",
  doteq: "\u2250",
  doteqdot: "\u2251",
  dotminus: "\u2238",
  dotplus: "\u2214",
  dotsquare: "\u22A1",
  doublebarwedge: "\u2306",
  downarrow: "\u2193",
  downdownarrows: "\u21CA",
  downharpoonleft: "\u21C3",
  downharpoonright: "\u21C2",
  drbkarow: "\u2910",
  drcorn: "\u231F",
  drcrop: "\u230C",
  dscr: "\u{1D4B9}",
  dscy: "\u0455",
  dsol: "\u29F6",
  dstrok: "\u0111",
  dtdot: "\u22F1",
  dtri: "\u25BF",
  dtrif: "\u25BE",
  duarr: "\u21F5",
  duhar: "\u296F",
  dwangle: "\u29A6",
  dzcy: "\u045F",
  dzigrarr: "\u27FF",
  eDDot: "\u2A77",
  eDot: "\u2251",
  eacute: "\xE9",
  easter: "\u2A6E",
  ecaron: "\u011B",
  ecir: "\u2256",
  ecirc: "\xEA",
  ecolon: "\u2255",
  ecy: "\u044D",
  edot: "\u0117",
  ee: "\u2147",
  efDot: "\u2252",
  efr: "\u{1D522}",
  eg: "\u2A9A",
  egrave: "\xE8",
  egs: "\u2A96",
  egsdot: "\u2A98",
  el: "\u2A99",
  elinters: "\u23E7",
  ell: "\u2113",
  els: "\u2A95",
  elsdot: "\u2A97",
  emacr: "\u0113",
  empty: "\u2205",
  emptyset: "\u2205",
  emptyv: "\u2205",
  emsp13: "\u2004",
  emsp14: "\u2005",
  emsp: "\u2003",
  eng: "\u014B",
  ensp: "\u2002",
  eogon: "\u0119",
  eopf: "\u{1D556}",
  epar: "\u22D5",
  eparsl: "\u29E3",
  eplus: "\u2A71",
  epsi: "\u03B5",
  epsilon: "\u03B5",
  epsiv: "\u03F5",
  eqcirc: "\u2256",
  eqcolon: "\u2255",
  eqsim: "\u2242",
  eqslantgtr: "\u2A96",
  eqslantless: "\u2A95",
  equals: "=",
  equest: "\u225F",
  equiv: "\u2261",
  equivDD: "\u2A78",
  eqvparsl: "\u29E5",
  erDot: "\u2253",
  erarr: "\u2971",
  escr: "\u212F",
  esdot: "\u2250",
  esim: "\u2242",
  eta: "\u03B7",
  eth: "\xF0",
  euml: "\xEB",
  euro: "\u20AC",
  excl: "!",
  exist: "\u2203",
  expectation: "\u2130",
  exponentiale: "\u2147",
  fallingdotseq: "\u2252",
  fcy: "\u0444",
  female: "\u2640",
  ffilig: "\uFB03",
  fflig: "\uFB00",
  ffllig: "\uFB04",
  ffr: "\u{1D523}",
  filig: "\uFB01",
  fjlig: "fj",
  flat: "\u266D",
  fllig: "\uFB02",
  fltns: "\u25B1",
  fnof: "\u0192",
  fopf: "\u{1D557}",
  forall: "\u2200",
  fork: "\u22D4",
  forkv: "\u2AD9",
  fpartint: "\u2A0D",
  frac12: "\xBD",
  frac13: "\u2153",
  frac14: "\xBC",
  frac15: "\u2155",
  frac16: "\u2159",
  frac18: "\u215B",
  frac23: "\u2154",
  frac25: "\u2156",
  frac34: "\xBE",
  frac35: "\u2157",
  frac38: "\u215C",
  frac45: "\u2158",
  frac56: "\u215A",
  frac58: "\u215D",
  frac78: "\u215E",
  frasl: "\u2044",
  frown: "\u2322",
  fscr: "\u{1D4BB}",
  gE: "\u2267",
  gEl: "\u2A8C",
  gacute: "\u01F5",
  gamma: "\u03B3",
  gammad: "\u03DD",
  gap: "\u2A86",
  gbreve: "\u011F",
  gcirc: "\u011D",
  gcy: "\u0433",
  gdot: "\u0121",
  ge: "\u2265",
  gel: "\u22DB",
  geq: "\u2265",
  geqq: "\u2267",
  geqslant: "\u2A7E",
  ges: "\u2A7E",
  gescc: "\u2AA9",
  gesdot: "\u2A80",
  gesdoto: "\u2A82",
  gesdotol: "\u2A84",
  gesl: "\u22DB\uFE00",
  gesles: "\u2A94",
  gfr: "\u{1D524}",
  gg: "\u226B",
  ggg: "\u22D9",
  gimel: "\u2137",
  gjcy: "\u0453",
  gl: "\u2277",
  glE: "\u2A92",
  gla: "\u2AA5",
  glj: "\u2AA4",
  gnE: "\u2269",
  gnap: "\u2A8A",
  gnapprox: "\u2A8A",
  gne: "\u2A88",
  gneq: "\u2A88",
  gneqq: "\u2269",
  gnsim: "\u22E7",
  gopf: "\u{1D558}",
  grave: "`",
  gscr: "\u210A",
  gsim: "\u2273",
  gsime: "\u2A8E",
  gsiml: "\u2A90",
  gt: ">",
  gtcc: "\u2AA7",
  gtcir: "\u2A7A",
  gtdot: "\u22D7",
  gtlPar: "\u2995",
  gtquest: "\u2A7C",
  gtrapprox: "\u2A86",
  gtrarr: "\u2978",
  gtrdot: "\u22D7",
  gtreqless: "\u22DB",
  gtreqqless: "\u2A8C",
  gtrless: "\u2277",
  gtrsim: "\u2273",
  gvertneqq: "\u2269\uFE00",
  gvnE: "\u2269\uFE00",
  hArr: "\u21D4",
  hairsp: "\u200A",
  half: "\xBD",
  hamilt: "\u210B",
  hardcy: "\u044A",
  harr: "\u2194",
  harrcir: "\u2948",
  harrw: "\u21AD",
  hbar: "\u210F",
  hcirc: "\u0125",
  hearts: "\u2665",
  heartsuit: "\u2665",
  hellip: "\u2026",
  hercon: "\u22B9",
  hfr: "\u{1D525}",
  hksearow: "\u2925",
  hkswarow: "\u2926",
  hoarr: "\u21FF",
  homtht: "\u223B",
  hookleftarrow: "\u21A9",
  hookrightarrow: "\u21AA",
  hopf: "\u{1D559}",
  horbar: "\u2015",
  hscr: "\u{1D4BD}",
  hslash: "\u210F",
  hstrok: "\u0127",
  hybull: "\u2043",
  hyphen: "\u2010",
  iacute: "\xED",
  ic: "\u2063",
  icirc: "\xEE",
  icy: "\u0438",
  iecy: "\u0435",
  iexcl: "\xA1",
  iff: "\u21D4",
  ifr: "\u{1D526}",
  igrave: "\xEC",
  ii: "\u2148",
  iiiint: "\u2A0C",
  iiint: "\u222D",
  iinfin: "\u29DC",
  iiota: "\u2129",
  ijlig: "\u0133",
  imacr: "\u012B",
  image: "\u2111",
  imagline: "\u2110",
  imagpart: "\u2111",
  imath: "\u0131",
  imof: "\u22B7",
  imped: "\u01B5",
  in: "\u2208",
  incare: "\u2105",
  infin: "\u221E",
  infintie: "\u29DD",
  inodot: "\u0131",
  int: "\u222B",
  intcal: "\u22BA",
  integers: "\u2124",
  intercal: "\u22BA",
  intlarhk: "\u2A17",
  intprod: "\u2A3C",
  iocy: "\u0451",
  iogon: "\u012F",
  iopf: "\u{1D55A}",
  iota: "\u03B9",
  iprod: "\u2A3C",
  iquest: "\xBF",
  iscr: "\u{1D4BE}",
  isin: "\u2208",
  isinE: "\u22F9",
  isindot: "\u22F5",
  isins: "\u22F4",
  isinsv: "\u22F3",
  isinv: "\u2208",
  it: "\u2062",
  itilde: "\u0129",
  iukcy: "\u0456",
  iuml: "\xEF",
  jcirc: "\u0135",
  jcy: "\u0439",
  jfr: "\u{1D527}",
  jmath: "\u0237",
  jopf: "\u{1D55B}",
  jscr: "\u{1D4BF}",
  jsercy: "\u0458",
  jukcy: "\u0454",
  kappa: "\u03BA",
  kappav: "\u03F0",
  kcedil: "\u0137",
  kcy: "\u043A",
  kfr: "\u{1D528}",
  kgreen: "\u0138",
  khcy: "\u0445",
  kjcy: "\u045C",
  kopf: "\u{1D55C}",
  kscr: "\u{1D4C0}",
  lAarr: "\u21DA",
  lArr: "\u21D0",
  lAtail: "\u291B",
  lBarr: "\u290E",
  lE: "\u2266",
  lEg: "\u2A8B",
  lHar: "\u2962",
  lacute: "\u013A",
  laemptyv: "\u29B4",
  lagran: "\u2112",
  lambda: "\u03BB",
  lang: "\u27E8",
  langd: "\u2991",
  langle: "\u27E8",
  lap: "\u2A85",
  laquo: "\xAB",
  larr: "\u2190",
  larrb: "\u21E4",
  larrbfs: "\u291F",
  larrfs: "\u291D",
  larrhk: "\u21A9",
  larrlp: "\u21AB",
  larrpl: "\u2939",
  larrsim: "\u2973",
  larrtl: "\u21A2",
  lat: "\u2AAB",
  latail: "\u2919",
  late: "\u2AAD",
  lates: "\u2AAD\uFE00",
  lbarr: "\u290C",
  lbbrk: "\u2772",
  lbrace: "{",
  lbrack: "[",
  lbrke: "\u298B",
  lbrksld: "\u298F",
  lbrkslu: "\u298D",
  lcaron: "\u013E",
  lcedil: "\u013C",
  lceil: "\u2308",
  lcub: "{",
  lcy: "\u043B",
  ldca: "\u2936",
  ldquo: "\u201C",
  ldquor: "\u201E",
  ldrdhar: "\u2967",
  ldrushar: "\u294B",
  ldsh: "\u21B2",
  le: "\u2264",
  leftarrow: "\u2190",
  leftarrowtail: "\u21A2",
  leftharpoondown: "\u21BD",
  leftharpoonup: "\u21BC",
  leftleftarrows: "\u21C7",
  leftrightarrow: "\u2194",
  leftrightarrows: "\u21C6",
  leftrightharpoons: "\u21CB",
  leftrightsquigarrow: "\u21AD",
  leftthreetimes: "\u22CB",
  leg: "\u22DA",
  leq: "\u2264",
  leqq: "\u2266",
  leqslant: "\u2A7D",
  les: "\u2A7D",
  lescc: "\u2AA8",
  lesdot: "\u2A7F",
  lesdoto: "\u2A81",
  lesdotor: "\u2A83",
  lesg: "\u22DA\uFE00",
  lesges: "\u2A93",
  lessapprox: "\u2A85",
  lessdot: "\u22D6",
  lesseqgtr: "\u22DA",
  lesseqqgtr: "\u2A8B",
  lessgtr: "\u2276",
  lesssim: "\u2272",
  lfisht: "\u297C",
  lfloor: "\u230A",
  lfr: "\u{1D529}",
  lg: "\u2276",
  lgE: "\u2A91",
  lhard: "\u21BD",
  lharu: "\u21BC",
  lharul: "\u296A",
  lhblk: "\u2584",
  ljcy: "\u0459",
  ll: "\u226A",
  llarr: "\u21C7",
  llcorner: "\u231E",
  llhard: "\u296B",
  lltri: "\u25FA",
  lmidot: "\u0140",
  lmoust: "\u23B0",
  lmoustache: "\u23B0",
  lnE: "\u2268",
  lnap: "\u2A89",
  lnapprox: "\u2A89",
  lne: "\u2A87",
  lneq: "\u2A87",
  lneqq: "\u2268",
  lnsim: "\u22E6",
  loang: "\u27EC",
  loarr: "\u21FD",
  lobrk: "\u27E6",
  longleftarrow: "\u27F5",
  longleftrightarrow: "\u27F7",
  longmapsto: "\u27FC",
  longrightarrow: "\u27F6",
  looparrowleft: "\u21AB",
  looparrowright: "\u21AC",
  lopar: "\u2985",
  lopf: "\u{1D55D}",
  loplus: "\u2A2D",
  lotimes: "\u2A34",
  lowast: "\u2217",
  lowbar: "_",
  loz: "\u25CA",
  lozenge: "\u25CA",
  lozf: "\u29EB",
  lpar: "(",
  lparlt: "\u2993",
  lrarr: "\u21C6",
  lrcorner: "\u231F",
  lrhar: "\u21CB",
  lrhard: "\u296D",
  lrm: "\u200E",
  lrtri: "\u22BF",
  lsaquo: "\u2039",
  lscr: "\u{1D4C1}",
  lsh: "\u21B0",
  lsim: "\u2272",
  lsime: "\u2A8D",
  lsimg: "\u2A8F",
  lsqb: "[",
  lsquo: "\u2018",
  lsquor: "\u201A",
  lstrok: "\u0142",
  lt: "<",
  ltcc: "\u2AA6",
  ltcir: "\u2A79",
  ltdot: "\u22D6",
  lthree: "\u22CB",
  ltimes: "\u22C9",
  ltlarr: "\u2976",
  ltquest: "\u2A7B",
  ltrPar: "\u2996",
  ltri: "\u25C3",
  ltrie: "\u22B4",
  ltrif: "\u25C2",
  lurdshar: "\u294A",
  luruhar: "\u2966",
  lvertneqq: "\u2268\uFE00",
  lvnE: "\u2268\uFE00",
  mDDot: "\u223A",
  macr: "\xAF",
  male: "\u2642",
  malt: "\u2720",
  maltese: "\u2720",
  map: "\u21A6",
  mapsto: "\u21A6",
  mapstodown: "\u21A7",
  mapstoleft: "\u21A4",
  mapstoup: "\u21A5",
  marker: "\u25AE",
  mcomma: "\u2A29",
  mcy: "\u043C",
  mdash: "\u2014",
  measuredangle: "\u2221",
  mfr: "\u{1D52A}",
  mho: "\u2127",
  micro: "\xB5",
  mid: "\u2223",
  midast: "*",
  midcir: "\u2AF0",
  middot: "\xB7",
  minus: "\u2212",
  minusb: "\u229F",
  minusd: "\u2238",
  minusdu: "\u2A2A",
  mlcp: "\u2ADB",
  mldr: "\u2026",
  mnplus: "\u2213",
  models: "\u22A7",
  mopf: "\u{1D55E}",
  mp: "\u2213",
  mscr: "\u{1D4C2}",
  mstpos: "\u223E",
  mu: "\u03BC",
  multimap: "\u22B8",
  mumap: "\u22B8",
  nGg: "\u22D9\u0338",
  nGt: "\u226B\u20D2",
  nGtv: "\u226B\u0338",
  nLeftarrow: "\u21CD",
  nLeftrightarrow: "\u21CE",
  nLl: "\u22D8\u0338",
  nLt: "\u226A\u20D2",
  nLtv: "\u226A\u0338",
  nRightarrow: "\u21CF",
  nVDash: "\u22AF",
  nVdash: "\u22AE",
  nabla: "\u2207",
  nacute: "\u0144",
  nang: "\u2220\u20D2",
  nap: "\u2249",
  napE: "\u2A70\u0338",
  napid: "\u224B\u0338",
  napos: "\u0149",
  napprox: "\u2249",
  natur: "\u266E",
  natural: "\u266E",
  naturals: "\u2115",
  nbsp: "\xA0",
  nbump: "\u224E\u0338",
  nbumpe: "\u224F\u0338",
  ncap: "\u2A43",
  ncaron: "\u0148",
  ncedil: "\u0146",
  ncong: "\u2247",
  ncongdot: "\u2A6D\u0338",
  ncup: "\u2A42",
  ncy: "\u043D",
  ndash: "\u2013",
  ne: "\u2260",
  neArr: "\u21D7",
  nearhk: "\u2924",
  nearr: "\u2197",
  nearrow: "\u2197",
  nedot: "\u2250\u0338",
  nequiv: "\u2262",
  nesear: "\u2928",
  nesim: "\u2242\u0338",
  nexist: "\u2204",
  nexists: "\u2204",
  nfr: "\u{1D52B}",
  ngE: "\u2267\u0338",
  nge: "\u2271",
  ngeq: "\u2271",
  ngeqq: "\u2267\u0338",
  ngeqslant: "\u2A7E\u0338",
  nges: "\u2A7E\u0338",
  ngsim: "\u2275",
  ngt: "\u226F",
  ngtr: "\u226F",
  nhArr: "\u21CE",
  nharr: "\u21AE",
  nhpar: "\u2AF2",
  ni: "\u220B",
  nis: "\u22FC",
  nisd: "\u22FA",
  niv: "\u220B",
  njcy: "\u045A",
  nlArr: "\u21CD",
  nlE: "\u2266\u0338",
  nlarr: "\u219A",
  nldr: "\u2025",
  nle: "\u2270",
  nleftarrow: "\u219A",
  nleftrightarrow: "\u21AE",
  nleq: "\u2270",
  nleqq: "\u2266\u0338",
  nleqslant: "\u2A7D\u0338",
  nles: "\u2A7D\u0338",
  nless: "\u226E",
  nlsim: "\u2274",
  nlt: "\u226E",
  nltri: "\u22EA",
  nltrie: "\u22EC",
  nmid: "\u2224",
  nopf: "\u{1D55F}",
  not: "\xAC",
  notin: "\u2209",
  notinE: "\u22F9\u0338",
  notindot: "\u22F5\u0338",
  notinva: "\u2209",
  notinvb: "\u22F7",
  notinvc: "\u22F6",
  notni: "\u220C",
  notniva: "\u220C",
  notnivb: "\u22FE",
  notnivc: "\u22FD",
  npar: "\u2226",
  nparallel: "\u2226",
  nparsl: "\u2AFD\u20E5",
  npart: "\u2202\u0338",
  npolint: "\u2A14",
  npr: "\u2280",
  nprcue: "\u22E0",
  npre: "\u2AAF\u0338",
  nprec: "\u2280",
  npreceq: "\u2AAF\u0338",
  nrArr: "\u21CF",
  nrarr: "\u219B",
  nrarrc: "\u2933\u0338",
  nrarrw: "\u219D\u0338",
  nrightarrow: "\u219B",
  nrtri: "\u22EB",
  nrtrie: "\u22ED",
  nsc: "\u2281",
  nsccue: "\u22E1",
  nsce: "\u2AB0\u0338",
  nscr: "\u{1D4C3}",
  nshortmid: "\u2224",
  nshortparallel: "\u2226",
  nsim: "\u2241",
  nsime: "\u2244",
  nsimeq: "\u2244",
  nsmid: "\u2224",
  nspar: "\u2226",
  nsqsube: "\u22E2",
  nsqsupe: "\u22E3",
  nsub: "\u2284",
  nsubE: "\u2AC5\u0338",
  nsube: "\u2288",
  nsubset: "\u2282\u20D2",
  nsubseteq: "\u2288",
  nsubseteqq: "\u2AC5\u0338",
  nsucc: "\u2281",
  nsucceq: "\u2AB0\u0338",
  nsup: "\u2285",
  nsupE: "\u2AC6\u0338",
  nsupe: "\u2289",
  nsupset: "\u2283\u20D2",
  nsupseteq: "\u2289",
  nsupseteqq: "\u2AC6\u0338",
  ntgl: "\u2279",
  ntilde: "\xF1",
  ntlg: "\u2278",
  ntriangleleft: "\u22EA",
  ntrianglelefteq: "\u22EC",
  ntriangleright: "\u22EB",
  ntrianglerighteq: "\u22ED",
  nu: "\u03BD",
  num: "#",
  numero: "\u2116",
  numsp: "\u2007",
  nvDash: "\u22AD",
  nvHarr: "\u2904",
  nvap: "\u224D\u20D2",
  nvdash: "\u22AC",
  nvge: "\u2265\u20D2",
  nvgt: ">\u20D2",
  nvinfin: "\u29DE",
  nvlArr: "\u2902",
  nvle: "\u2264\u20D2",
  nvlt: "<\u20D2",
  nvltrie: "\u22B4\u20D2",
  nvrArr: "\u2903",
  nvrtrie: "\u22B5\u20D2",
  nvsim: "\u223C\u20D2",
  nwArr: "\u21D6",
  nwarhk: "\u2923",
  nwarr: "\u2196",
  nwarrow: "\u2196",
  nwnear: "\u2927",
  oS: "\u24C8",
  oacute: "\xF3",
  oast: "\u229B",
  ocir: "\u229A",
  ocirc: "\xF4",
  ocy: "\u043E",
  odash: "\u229D",
  odblac: "\u0151",
  odiv: "\u2A38",
  odot: "\u2299",
  odsold: "\u29BC",
  oelig: "\u0153",
  ofcir: "\u29BF",
  ofr: "\u{1D52C}",
  ogon: "\u02DB",
  ograve: "\xF2",
  ogt: "\u29C1",
  ohbar: "\u29B5",
  ohm: "\u03A9",
  oint: "\u222E",
  olarr: "\u21BA",
  olcir: "\u29BE",
  olcross: "\u29BB",
  oline: "\u203E",
  olt: "\u29C0",
  omacr: "\u014D",
  omega: "\u03C9",
  omicron: "\u03BF",
  omid: "\u29B6",
  ominus: "\u2296",
  oopf: "\u{1D560}",
  opar: "\u29B7",
  operp: "\u29B9",
  oplus: "\u2295",
  or: "\u2228",
  orarr: "\u21BB",
  ord: "\u2A5D",
  order: "\u2134",
  orderof: "\u2134",
  ordf: "\xAA",
  ordm: "\xBA",
  origof: "\u22B6",
  oror: "\u2A56",
  orslope: "\u2A57",
  orv: "\u2A5B",
  oscr: "\u2134",
  oslash: "\xF8",
  osol: "\u2298",
  otilde: "\xF5",
  otimes: "\u2297",
  otimesas: "\u2A36",
  ouml: "\xF6",
  ovbar: "\u233D",
  par: "\u2225",
  para: "\xB6",
  parallel: "\u2225",
  parsim: "\u2AF3",
  parsl: "\u2AFD",
  part: "\u2202",
  pcy: "\u043F",
  percnt: "%",
  period: ".",
  permil: "\u2030",
  perp: "\u22A5",
  pertenk: "\u2031",
  pfr: "\u{1D52D}",
  phi: "\u03C6",
  phiv: "\u03D5",
  phmmat: "\u2133",
  phone: "\u260E",
  pi: "\u03C0",
  pitchfork: "\u22D4",
  piv: "\u03D6",
  planck: "\u210F",
  planckh: "\u210E",
  plankv: "\u210F",
  plus: "+",
  plusacir: "\u2A23",
  plusb: "\u229E",
  pluscir: "\u2A22",
  plusdo: "\u2214",
  plusdu: "\u2A25",
  pluse: "\u2A72",
  plusmn: "\xB1",
  plussim: "\u2A26",
  plustwo: "\u2A27",
  pm: "\xB1",
  pointint: "\u2A15",
  popf: "\u{1D561}",
  pound: "\xA3",
  pr: "\u227A",
  prE: "\u2AB3",
  prap: "\u2AB7",
  prcue: "\u227C",
  pre: "\u2AAF",
  prec: "\u227A",
  precapprox: "\u2AB7",
  preccurlyeq: "\u227C",
  preceq: "\u2AAF",
  precnapprox: "\u2AB9",
  precneqq: "\u2AB5",
  precnsim: "\u22E8",
  precsim: "\u227E",
  prime: "\u2032",
  primes: "\u2119",
  prnE: "\u2AB5",
  prnap: "\u2AB9",
  prnsim: "\u22E8",
  prod: "\u220F",
  profalar: "\u232E",
  profline: "\u2312",
  profsurf: "\u2313",
  prop: "\u221D",
  propto: "\u221D",
  prsim: "\u227E",
  prurel: "\u22B0",
  pscr: "\u{1D4C5}",
  psi: "\u03C8",
  puncsp: "\u2008",
  qfr: "\u{1D52E}",
  qint: "\u2A0C",
  qopf: "\u{1D562}",
  qprime: "\u2057",
  qscr: "\u{1D4C6}",
  quaternions: "\u210D",
  quatint: "\u2A16",
  quest: "?",
  questeq: "\u225F",
  quot: '"',
  rAarr: "\u21DB",
  rArr: "\u21D2",
  rAtail: "\u291C",
  rBarr: "\u290F",
  rHar: "\u2964",
  race: "\u223D\u0331",
  racute: "\u0155",
  radic: "\u221A",
  raemptyv: "\u29B3",
  rang: "\u27E9",
  rangd: "\u2992",
  range: "\u29A5",
  rangle: "\u27E9",
  raquo: "\xBB",
  rarr: "\u2192",
  rarrap: "\u2975",
  rarrb: "\u21E5",
  rarrbfs: "\u2920",
  rarrc: "\u2933",
  rarrfs: "\u291E",
  rarrhk: "\u21AA",
  rarrlp: "\u21AC",
  rarrpl: "\u2945",
  rarrsim: "\u2974",
  rarrtl: "\u21A3",
  rarrw: "\u219D",
  ratail: "\u291A",
  ratio: "\u2236",
  rationals: "\u211A",
  rbarr: "\u290D",
  rbbrk: "\u2773",
  rbrace: "}",
  rbrack: "]",
  rbrke: "\u298C",
  rbrksld: "\u298E",
  rbrkslu: "\u2990",
  rcaron: "\u0159",
  rcedil: "\u0157",
  rceil: "\u2309",
  rcub: "}",
  rcy: "\u0440",
  rdca: "\u2937",
  rdldhar: "\u2969",
  rdquo: "\u201D",
  rdquor: "\u201D",
  rdsh: "\u21B3",
  real: "\u211C",
  realine: "\u211B",
  realpart: "\u211C",
  reals: "\u211D",
  rect: "\u25AD",
  reg: "\xAE",
  rfisht: "\u297D",
  rfloor: "\u230B",
  rfr: "\u{1D52F}",
  rhard: "\u21C1",
  rharu: "\u21C0",
  rharul: "\u296C",
  rho: "\u03C1",
  rhov: "\u03F1",
  rightarrow: "\u2192",
  rightarrowtail: "\u21A3",
  rightharpoondown: "\u21C1",
  rightharpoonup: "\u21C0",
  rightleftarrows: "\u21C4",
  rightleftharpoons: "\u21CC",
  rightrightarrows: "\u21C9",
  rightsquigarrow: "\u219D",
  rightthreetimes: "\u22CC",
  ring: "\u02DA",
  risingdotseq: "\u2253",
  rlarr: "\u21C4",
  rlhar: "\u21CC",
  rlm: "\u200F",
  rmoust: "\u23B1",
  rmoustache: "\u23B1",
  rnmid: "\u2AEE",
  roang: "\u27ED",
  roarr: "\u21FE",
  robrk: "\u27E7",
  ropar: "\u2986",
  ropf: "\u{1D563}",
  roplus: "\u2A2E",
  rotimes: "\u2A35",
  rpar: ")",
  rpargt: "\u2994",
  rppolint: "\u2A12",
  rrarr: "\u21C9",
  rsaquo: "\u203A",
  rscr: "\u{1D4C7}",
  rsh: "\u21B1",
  rsqb: "]",
  rsquo: "\u2019",
  rsquor: "\u2019",
  rthree: "\u22CC",
  rtimes: "\u22CA",
  rtri: "\u25B9",
  rtrie: "\u22B5",
  rtrif: "\u25B8",
  rtriltri: "\u29CE",
  ruluhar: "\u2968",
  rx: "\u211E",
  sacute: "\u015B",
  sbquo: "\u201A",
  sc: "\u227B",
  scE: "\u2AB4",
  scap: "\u2AB8",
  scaron: "\u0161",
  sccue: "\u227D",
  sce: "\u2AB0",
  scedil: "\u015F",
  scirc: "\u015D",
  scnE: "\u2AB6",
  scnap: "\u2ABA",
  scnsim: "\u22E9",
  scpolint: "\u2A13",
  scsim: "\u227F",
  scy: "\u0441",
  sdot: "\u22C5",
  sdotb: "\u22A1",
  sdote: "\u2A66",
  seArr: "\u21D8",
  searhk: "\u2925",
  searr: "\u2198",
  searrow: "\u2198",
  sect: "\xA7",
  semi: ";",
  seswar: "\u2929",
  setminus: "\u2216",
  setmn: "\u2216",
  sext: "\u2736",
  sfr: "\u{1D530}",
  sfrown: "\u2322",
  sharp: "\u266F",
  shchcy: "\u0449",
  shcy: "\u0448",
  shortmid: "\u2223",
  shortparallel: "\u2225",
  shy: "\xAD",
  sigma: "\u03C3",
  sigmaf: "\u03C2",
  sigmav: "\u03C2",
  sim: "\u223C",
  simdot: "\u2A6A",
  sime: "\u2243",
  simeq: "\u2243",
  simg: "\u2A9E",
  simgE: "\u2AA0",
  siml: "\u2A9D",
  simlE: "\u2A9F",
  simne: "\u2246",
  simplus: "\u2A24",
  simrarr: "\u2972",
  slarr: "\u2190",
  smallsetminus: "\u2216",
  smashp: "\u2A33",
  smeparsl: "\u29E4",
  smid: "\u2223",
  smile: "\u2323",
  smt: "\u2AAA",
  smte: "\u2AAC",
  smtes: "\u2AAC\uFE00",
  softcy: "\u044C",
  sol: "/",
  solb: "\u29C4",
  solbar: "\u233F",
  sopf: "\u{1D564}",
  spades: "\u2660",
  spadesuit: "\u2660",
  spar: "\u2225",
  sqcap: "\u2293",
  sqcaps: "\u2293\uFE00",
  sqcup: "\u2294",
  sqcups: "\u2294\uFE00",
  sqsub: "\u228F",
  sqsube: "\u2291",
  sqsubset: "\u228F",
  sqsubseteq: "\u2291",
  sqsup: "\u2290",
  sqsupe: "\u2292",
  sqsupset: "\u2290",
  sqsupseteq: "\u2292",
  squ: "\u25A1",
  square: "\u25A1",
  squarf: "\u25AA",
  squf: "\u25AA",
  srarr: "\u2192",
  sscr: "\u{1D4C8}",
  ssetmn: "\u2216",
  ssmile: "\u2323",
  sstarf: "\u22C6",
  star: "\u2606",
  starf: "\u2605",
  straightepsilon: "\u03F5",
  straightphi: "\u03D5",
  strns: "\xAF",
  sub: "\u2282",
  subE: "\u2AC5",
  subdot: "\u2ABD",
  sube: "\u2286",
  subedot: "\u2AC3",
  submult: "\u2AC1",
  subnE: "\u2ACB",
  subne: "\u228A",
  subplus: "\u2ABF",
  subrarr: "\u2979",
  subset: "\u2282",
  subseteq: "\u2286",
  subseteqq: "\u2AC5",
  subsetneq: "\u228A",
  subsetneqq: "\u2ACB",
  subsim: "\u2AC7",
  subsub: "\u2AD5",
  subsup: "\u2AD3",
  succ: "\u227B",
  succapprox: "\u2AB8",
  succcurlyeq: "\u227D",
  succeq: "\u2AB0",
  succnapprox: "\u2ABA",
  succneqq: "\u2AB6",
  succnsim: "\u22E9",
  succsim: "\u227F",
  sum: "\u2211",
  sung: "\u266A",
  sup1: "\xB9",
  sup2: "\xB2",
  sup3: "\xB3",
  sup: "\u2283",
  supE: "\u2AC6",
  supdot: "\u2ABE",
  supdsub: "\u2AD8",
  supe: "\u2287",
  supedot: "\u2AC4",
  suphsol: "\u27C9",
  suphsub: "\u2AD7",
  suplarr: "\u297B",
  supmult: "\u2AC2",
  supnE: "\u2ACC",
  supne: "\u228B",
  supplus: "\u2AC0",
  supset: "\u2283",
  supseteq: "\u2287",
  supseteqq: "\u2AC6",
  supsetneq: "\u228B",
  supsetneqq: "\u2ACC",
  supsim: "\u2AC8",
  supsub: "\u2AD4",
  supsup: "\u2AD6",
  swArr: "\u21D9",
  swarhk: "\u2926",
  swarr: "\u2199",
  swarrow: "\u2199",
  swnwar: "\u292A",
  szlig: "\xDF",
  target: "\u2316",
  tau: "\u03C4",
  tbrk: "\u23B4",
  tcaron: "\u0165",
  tcedil: "\u0163",
  tcy: "\u0442",
  tdot: "\u20DB",
  telrec: "\u2315",
  tfr: "\u{1D531}",
  there4: "\u2234",
  therefore: "\u2234",
  theta: "\u03B8",
  thetasym: "\u03D1",
  thetav: "\u03D1",
  thickapprox: "\u2248",
  thicksim: "\u223C",
  thinsp: "\u2009",
  thkap: "\u2248",
  thksim: "\u223C",
  thorn: "\xFE",
  tilde: "\u02DC",
  times: "\xD7",
  timesb: "\u22A0",
  timesbar: "\u2A31",
  timesd: "\u2A30",
  tint: "\u222D",
  toea: "\u2928",
  top: "\u22A4",
  topbot: "\u2336",
  topcir: "\u2AF1",
  topf: "\u{1D565}",
  topfork: "\u2ADA",
  tosa: "\u2929",
  tprime: "\u2034",
  trade: "\u2122",
  triangle: "\u25B5",
  triangledown: "\u25BF",
  triangleleft: "\u25C3",
  trianglelefteq: "\u22B4",
  triangleq: "\u225C",
  triangleright: "\u25B9",
  trianglerighteq: "\u22B5",
  tridot: "\u25EC",
  trie: "\u225C",
  triminus: "\u2A3A",
  triplus: "\u2A39",
  trisb: "\u29CD",
  tritime: "\u2A3B",
  trpezium: "\u23E2",
  tscr: "\u{1D4C9}",
  tscy: "\u0446",
  tshcy: "\u045B",
  tstrok: "\u0167",
  twixt: "\u226C",
  twoheadleftarrow: "\u219E",
  twoheadrightarrow: "\u21A0",
  uArr: "\u21D1",
  uHar: "\u2963",
  uacute: "\xFA",
  uarr: "\u2191",
  ubrcy: "\u045E",
  ubreve: "\u016D",
  ucirc: "\xFB",
  ucy: "\u0443",
  udarr: "\u21C5",
  udblac: "\u0171",
  udhar: "\u296E",
  ufisht: "\u297E",
  ufr: "\u{1D532}",
  ugrave: "\xF9",
  uharl: "\u21BF",
  uharr: "\u21BE",
  uhblk: "\u2580",
  ulcorn: "\u231C",
  ulcorner: "\u231C",
  ulcrop: "\u230F",
  ultri: "\u25F8",
  umacr: "\u016B",
  uml: "\xA8",
  uogon: "\u0173",
  uopf: "\u{1D566}",
  uparrow: "\u2191",
  updownarrow: "\u2195",
  upharpoonleft: "\u21BF",
  upharpoonright: "\u21BE",
  uplus: "\u228E",
  upsi: "\u03C5",
  upsih: "\u03D2",
  upsilon: "\u03C5",
  upuparrows: "\u21C8",
  urcorn: "\u231D",
  urcorner: "\u231D",
  urcrop: "\u230E",
  uring: "\u016F",
  urtri: "\u25F9",
  uscr: "\u{1D4CA}",
  utdot: "\u22F0",
  utilde: "\u0169",
  utri: "\u25B5",
  utrif: "\u25B4",
  uuarr: "\u21C8",
  uuml: "\xFC",
  uwangle: "\u29A7",
  vArr: "\u21D5",
  vBar: "\u2AE8",
  vBarv: "\u2AE9",
  vDash: "\u22A8",
  vangrt: "\u299C",
  varepsilon: "\u03F5",
  varkappa: "\u03F0",
  varnothing: "\u2205",
  varphi: "\u03D5",
  varpi: "\u03D6",
  varpropto: "\u221D",
  varr: "\u2195",
  varrho: "\u03F1",
  varsigma: "\u03C2",
  varsubsetneq: "\u228A\uFE00",
  varsubsetneqq: "\u2ACB\uFE00",
  varsupsetneq: "\u228B\uFE00",
  varsupsetneqq: "\u2ACC\uFE00",
  vartheta: "\u03D1",
  vartriangleleft: "\u22B2",
  vartriangleright: "\u22B3",
  vcy: "\u0432",
  vdash: "\u22A2",
  vee: "\u2228",
  veebar: "\u22BB",
  veeeq: "\u225A",
  vellip: "\u22EE",
  verbar: "|",
  vert: "|",
  vfr: "\u{1D533}",
  vltri: "\u22B2",
  vnsub: "\u2282\u20D2",
  vnsup: "\u2283\u20D2",
  vopf: "\u{1D567}",
  vprop: "\u221D",
  vrtri: "\u22B3",
  vscr: "\u{1D4CB}",
  vsubnE: "\u2ACB\uFE00",
  vsubne: "\u228A\uFE00",
  vsupnE: "\u2ACC\uFE00",
  vsupne: "\u228B\uFE00",
  vzigzag: "\u299A",
  wcirc: "\u0175",
  wedbar: "\u2A5F",
  wedge: "\u2227",
  wedgeq: "\u2259",
  weierp: "\u2118",
  wfr: "\u{1D534}",
  wopf: "\u{1D568}",
  wp: "\u2118",
  wr: "\u2240",
  wreath: "\u2240",
  wscr: "\u{1D4CC}",
  xcap: "\u22C2",
  xcirc: "\u25EF",
  xcup: "\u22C3",
  xdtri: "\u25BD",
  xfr: "\u{1D535}",
  xhArr: "\u27FA",
  xharr: "\u27F7",
  xi: "\u03BE",
  xlArr: "\u27F8",
  xlarr: "\u27F5",
  xmap: "\u27FC",
  xnis: "\u22FB",
  xodot: "\u2A00",
  xopf: "\u{1D569}",
  xoplus: "\u2A01",
  xotime: "\u2A02",
  xrArr: "\u27F9",
  xrarr: "\u27F6",
  xscr: "\u{1D4CD}",
  xsqcup: "\u2A06",
  xuplus: "\u2A04",
  xutri: "\u25B3",
  xvee: "\u22C1",
  xwedge: "\u22C0",
  yacute: "\xFD",
  yacy: "\u044F",
  ycirc: "\u0177",
  ycy: "\u044B",
  yen: "\xA5",
  yfr: "\u{1D536}",
  yicy: "\u0457",
  yopf: "\u{1D56A}",
  yscr: "\u{1D4CE}",
  yucy: "\u044E",
  yuml: "\xFF",
  zacute: "\u017A",
  zcaron: "\u017E",
  zcy: "\u0437",
  zdot: "\u017C",
  zeetrf: "\u2128",
  zeta: "\u03B6",
  zfr: "\u{1D537}",
  zhcy: "\u0436",
  zigrarr: "\u21DD",
  zopf: "\u{1D56B}",
  zscr: "\u{1D4CF}",
  zwj: "\u200D",
  zwnj: "\u200C"
};

// ../../../node_modules/decode-named-character-reference/index.js
var own5 = {}.hasOwnProperty;
function decodeNamedCharacterReference(value) {
  return own5.call(characterEntities, value) ? characterEntities[value] : !1;
}

// ../../../node_modules/parse-entities/lib/index.js
var messages = [
  "",
  /* 1: Non terminated (named) */
  "Named character references must be terminated by a semicolon",
  /* 2: Non terminated (numeric) */
  "Numeric character references must be terminated by a semicolon",
  /* 3: Empty (named) */
  "Named character references cannot be empty",
  /* 4: Empty (numeric) */
  "Numeric character references cannot be empty",
  /* 5: Unknown (named) */
  "Named character references must be known",
  /* 6: Disallowed (numeric) */
  "Numeric character references cannot be disallowed",
  /* 7: Prohibited (numeric) */
  "Numeric character references cannot be outside the permissible Unicode range"
];
function parseEntities(value, options) {
  let settings = options || {}, additional = typeof settings.additional == "string" ? settings.additional.charCodeAt(0) : settings.additional, result = [], index2 = 0, lines = -1, queue = "", point4, indent2;
  settings.position && ("start" in settings.position || "indent" in settings.position ? (indent2 = settings.position.indent, point4 = settings.position.start) : point4 = settings.position);
  let line = (point4 ? point4.line : 0) || 1, column = (point4 ? point4.column : 0) || 1, previous2 = now(), character;
  for (index2--; ++index2 <= value.length; )
    if (character === 10 && (column = (indent2 ? indent2[lines] : 0) || 1), character = value.charCodeAt(index2), character === 38) {
      let following = value.charCodeAt(index2 + 1);
      if (following === 9 || following === 10 || following === 12 || following === 32 || following === 38 || following === 60 || Number.isNaN(following) || additional && following === additional) {
        queue += String.fromCharCode(character), column++;
        continue;
      }
      let start2 = index2 + 1, begin = start2, end = start2, type;
      if (following === 35) {
        end = ++begin;
        let following2 = value.charCodeAt(end);
        following2 === 88 || following2 === 120 ? (type = "hexadecimal", end = ++begin) : type = "decimal";
      } else
        type = "named";
      let characterReferenceCharacters = "", characterReference2 = "", characters2 = "", test = type === "named" ? isAlphanumerical : type === "decimal" ? isDecimal : isHexadecimal;
      for (end--; ++end <= value.length; ) {
        let following2 = value.charCodeAt(end);
        if (!test(following2))
          break;
        characters2 += String.fromCharCode(following2), type === "named" && characterEntitiesLegacy.includes(characters2) && (characterReferenceCharacters = characters2, characterReference2 = decodeNamedCharacterReference(characters2));
      }
      let terminated = value.charCodeAt(end) === 59;
      if (terminated) {
        end++;
        let namedReference = type === "named" ? decodeNamedCharacterReference(characters2) : !1;
        namedReference && (characterReferenceCharacters = characters2, characterReference2 = namedReference);
      }
      let diff = 1 + end - start2, reference = "";
      if (!(!terminated && settings.nonTerminated === !1))
        if (!characters2)
          type !== "named" && warning(4, diff);
        else if (type === "named") {
          if (terminated && !characterReference2)
            warning(5, 1);
          else if (characterReferenceCharacters !== characters2 && (end = begin + characterReferenceCharacters.length, diff = 1 + end - begin, terminated = !1), !terminated) {
            let reason = characterReferenceCharacters ? 1 : 3;
            if (settings.attribute) {
              let following2 = value.charCodeAt(end);
              following2 === 61 ? (warning(reason, diff), characterReference2 = "") : isAlphanumerical(following2) ? characterReference2 = "" : warning(reason, diff);
            } else
              warning(reason, diff);
          }
          reference = characterReference2;
        } else {
          terminated || warning(2, diff);
          let referenceCode = Number.parseInt(
            characters2,
            type === "hexadecimal" ? 16 : 10
          );
          if (prohibited(referenceCode))
            warning(7, diff), reference = "\uFFFD";
          else if (referenceCode in characterReferenceInvalid)
            warning(6, diff), reference = characterReferenceInvalid[referenceCode];
          else {
            let output = "";
            disallowed(referenceCode) && warning(6, diff), referenceCode > 65535 && (referenceCode -= 65536, output += String.fromCharCode(
              referenceCode >>> 10 | 55296
            ), referenceCode = 56320 | referenceCode & 1023), reference = output + String.fromCharCode(referenceCode);
          }
        }
      if (reference) {
        flush(), previous2 = now(), index2 = end - 1, column += end - start2 + 1, result.push(reference);
        let next = now();
        next.offset++, settings.reference && settings.reference.call(
          settings.referenceContext || void 0,
          reference,
          { start: previous2, end: next },
          value.slice(start2 - 1, end)
        ), previous2 = next;
      } else
        characters2 = value.slice(start2 - 1, end), queue += characters2, column += characters2.length, index2 = end - 1;
    } else
      character === 10 && (line++, lines++, column = 0), Number.isNaN(character) ? flush() : (queue += String.fromCharCode(character), column++);
  return result.join("");
  function now() {
    return {
      line,
      column,
      offset: index2 + ((point4 ? point4.offset : 0) || 0)
    };
  }
  function warning(code2, offset2) {
    let position3;
    settings.warning && (position3 = now(), position3.column += offset2, position3.offset += offset2, settings.warning.call(
      settings.warningContext || void 0,
      messages[code2],
      position3,
      code2
    ));
  }
  function flush() {
    queue && (result.push(queue), settings.text && settings.text.call(settings.textContext || void 0, queue, {
      start: previous2,
      end: now()
    }), queue = "");
  }
}
function prohibited(code2) {
  return code2 >= 55296 && code2 <= 57343 || code2 > 1114111;
}
function disallowed(code2) {
  return code2 >= 1 && code2 <= 8 || code2 === 11 || code2 >= 13 && code2 <= 31 || code2 >= 127 && code2 <= 159 || code2 >= 64976 && code2 <= 65007 || (code2 & 65535) === 65535 || (code2 & 65535) === 65534;
}

// ../../../node_modules/stringify-entities/lib/core.js
var defaultSubsetRegex = /["&'<>`]/g, surrogatePairsRegex = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, controlCharactersRegex = (
  // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape
  /[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g
), regexEscapeRegex = /[|\\{}()[\]^$+*?.]/g, subsetToRegexCache = /* @__PURE__ */ new WeakMap();
function core(value, options) {
  if (value = value.replace(
    options.subset ? charactersToExpressionCached(options.subset) : defaultSubsetRegex,
    basic
  ), options.subset || options.escapeOnly)
    return value;
  return value.replace(surrogatePairsRegex, surrogate).replace(controlCharactersRegex, basic);
  function surrogate(pair, index2, all3) {
    return options.format(
      (pair.charCodeAt(0) - 55296) * 1024 + pair.charCodeAt(1) - 56320 + 65536,
      all3.charCodeAt(index2 + 2),
      options
    );
  }
  function basic(character, index2, all3) {
    return options.format(
      character.charCodeAt(0),
      all3.charCodeAt(index2 + 1),
      options
    );
  }
}
function charactersToExpressionCached(subset) {
  let cached = subsetToRegexCache.get(subset);
  return cached || (cached = charactersToExpression(subset), subsetToRegexCache.set(subset, cached)), cached;
}
function charactersToExpression(subset) {
  let groups = [], index2 = -1;
  for (; ++index2 < subset.length; )
    groups.push(subset[index2].replace(regexEscapeRegex, "\\$&"));
  return new RegExp("(?:" + groups.join("|") + ")", "g");
}

// ../../../node_modules/character-entities-html4/index.js
var characterEntitiesHtml4 = {
  nbsp: "\xA0",
  iexcl: "\xA1",
  cent: "\xA2",
  pound: "\xA3",
  curren: "\xA4",
  yen: "\xA5",
  brvbar: "\xA6",
  sect: "\xA7",
  uml: "\xA8",
  copy: "\xA9",
  ordf: "\xAA",
  laquo: "\xAB",
  not: "\xAC",
  shy: "\xAD",
  reg: "\xAE",
  macr: "\xAF",
  deg: "\xB0",
  plusmn: "\xB1",
  sup2: "\xB2",
  sup3: "\xB3",
  acute: "\xB4",
  micro: "\xB5",
  para: "\xB6",
  middot: "\xB7",
  cedil: "\xB8",
  sup1: "\xB9",
  ordm: "\xBA",
  raquo: "\xBB",
  frac14: "\xBC",
  frac12: "\xBD",
  frac34: "\xBE",
  iquest: "\xBF",
  Agrave: "\xC0",
  Aacute: "\xC1",
  Acirc: "\xC2",
  Atilde: "\xC3",
  Auml: "\xC4",
  Aring: "\xC5",
  AElig: "\xC6",
  Ccedil: "\xC7",
  Egrave: "\xC8",
  Eacute: "\xC9",
  Ecirc: "\xCA",
  Euml: "\xCB",
  Igrave: "\xCC",
  Iacute: "\xCD",
  Icirc: "\xCE",
  Iuml: "\xCF",
  ETH: "\xD0",
  Ntilde: "\xD1",
  Ograve: "\xD2",
  Oacute: "\xD3",
  Ocirc: "\xD4",
  Otilde: "\xD5",
  Ouml: "\xD6",
  times: "\xD7",
  Oslash: "\xD8",
  Ugrave: "\xD9",
  Uacute: "\xDA",
  Ucirc: "\xDB",
  Uuml: "\xDC",
  Yacute: "\xDD",
  THORN: "\xDE",
  szlig: "\xDF",
  agrave: "\xE0",
  aacute: "\xE1",
  acirc: "\xE2",
  atilde: "\xE3",
  auml: "\xE4",
  aring: "\xE5",
  aelig: "\xE6",
  ccedil: "\xE7",
  egrave: "\xE8",
  eacute: "\xE9",
  ecirc: "\xEA",
  euml: "\xEB",
  igrave: "\xEC",
  iacute: "\xED",
  icirc: "\xEE",
  iuml: "\xEF",
  eth: "\xF0",
  ntilde: "\xF1",
  ograve: "\xF2",
  oacute: "\xF3",
  ocirc: "\xF4",
  otilde: "\xF5",
  ouml: "\xF6",
  divide: "\xF7",
  oslash: "\xF8",
  ugrave: "\xF9",
  uacute: "\xFA",
  ucirc: "\xFB",
  uuml: "\xFC",
  yacute: "\xFD",
  thorn: "\xFE",
  yuml: "\xFF",
  fnof: "\u0192",
  Alpha: "\u0391",
  Beta: "\u0392",
  Gamma: "\u0393",
  Delta: "\u0394",
  Epsilon: "\u0395",
  Zeta: "\u0396",
  Eta: "\u0397",
  Theta: "\u0398",
  Iota: "\u0399",
  Kappa: "\u039A",
  Lambda: "\u039B",
  Mu: "\u039C",
  Nu: "\u039D",
  Xi: "\u039E",
  Omicron: "\u039F",
  Pi: "\u03A0",
  Rho: "\u03A1",
  Sigma: "\u03A3",
  Tau: "\u03A4",
  Upsilon: "\u03A5",
  Phi: "\u03A6",
  Chi: "\u03A7",
  Psi: "\u03A8",
  Omega: "\u03A9",
  alpha: "\u03B1",
  beta: "\u03B2",
  gamma: "\u03B3",
  delta: "\u03B4",
  epsilon: "\u03B5",
  zeta: "\u03B6",
  eta: "\u03B7",
  theta: "\u03B8",
  iota: "\u03B9",
  kappa: "\u03BA",
  lambda: "\u03BB",
  mu: "\u03BC",
  nu: "\u03BD",
  xi: "\u03BE",
  omicron: "\u03BF",
  pi: "\u03C0",
  rho: "\u03C1",
  sigmaf: "\u03C2",
  sigma: "\u03C3",
  tau: "\u03C4",
  upsilon: "\u03C5",
  phi: "\u03C6",
  chi: "\u03C7",
  psi: "\u03C8",
  omega: "\u03C9",
  thetasym: "\u03D1",
  upsih: "\u03D2",
  piv: "\u03D6",
  bull: "\u2022",
  hellip: "\u2026",
  prime: "\u2032",
  Prime: "\u2033",
  oline: "\u203E",
  frasl: "\u2044",
  weierp: "\u2118",
  image: "\u2111",
  real: "\u211C",
  trade: "\u2122",
  alefsym: "\u2135",
  larr: "\u2190",
  uarr: "\u2191",
  rarr: "\u2192",
  darr: "\u2193",
  harr: "\u2194",
  crarr: "\u21B5",
  lArr: "\u21D0",
  uArr: "\u21D1",
  rArr: "\u21D2",
  dArr: "\u21D3",
  hArr: "\u21D4",
  forall: "\u2200",
  part: "\u2202",
  exist: "\u2203",
  empty: "\u2205",
  nabla: "\u2207",
  isin: "\u2208",
  notin: "\u2209",
  ni: "\u220B",
  prod: "\u220F",
  sum: "\u2211",
  minus: "\u2212",
  lowast: "\u2217",
  radic: "\u221A",
  prop: "\u221D",
  infin: "\u221E",
  ang: "\u2220",
  and: "\u2227",
  or: "\u2228",
  cap: "\u2229",
  cup: "\u222A",
  int: "\u222B",
  there4: "\u2234",
  sim: "\u223C",
  cong: "\u2245",
  asymp: "\u2248",
  ne: "\u2260",
  equiv: "\u2261",
  le: "\u2264",
  ge: "\u2265",
  sub: "\u2282",
  sup: "\u2283",
  nsub: "\u2284",
  sube: "\u2286",
  supe: "\u2287",
  oplus: "\u2295",
  otimes: "\u2297",
  perp: "\u22A5",
  sdot: "\u22C5",
  lceil: "\u2308",
  rceil: "\u2309",
  lfloor: "\u230A",
  rfloor: "\u230B",
  lang: "\u2329",
  rang: "\u232A",
  loz: "\u25CA",
  spades: "\u2660",
  clubs: "\u2663",
  hearts: "\u2665",
  diams: "\u2666",
  quot: '"',
  amp: "&",
  lt: "<",
  gt: ">",
  OElig: "\u0152",
  oelig: "\u0153",
  Scaron: "\u0160",
  scaron: "\u0161",
  Yuml: "\u0178",
  circ: "\u02C6",
  tilde: "\u02DC",
  ensp: "\u2002",
  emsp: "\u2003",
  thinsp: "\u2009",
  zwnj: "\u200C",
  zwj: "\u200D",
  lrm: "\u200E",
  rlm: "\u200F",
  ndash: "\u2013",
  mdash: "\u2014",
  lsquo: "\u2018",
  rsquo: "\u2019",
  sbquo: "\u201A",
  ldquo: "\u201C",
  rdquo: "\u201D",
  bdquo: "\u201E",
  dagger: "\u2020",
  Dagger: "\u2021",
  permil: "\u2030",
  lsaquo: "\u2039",
  rsaquo: "\u203A",
  euro: "\u20AC"
};

// ../../../node_modules/stringify-entities/lib/util/to-named.js
var own6 = {}.hasOwnProperty, characters = {}, key;
for (key in characterEntitiesHtml4)
  own6.call(characterEntitiesHtml4, key) && (characters[characterEntitiesHtml4[key]] = key);

// ../../../node_modules/stringify-entities/lib/util/format-basic.js
function formatBasic(code2) {
  return "&#x" + code2.toString(16).toUpperCase() + ";";
}

// ../../../node_modules/stringify-entities/lib/index.js
function stringifyEntitiesLight(value, options) {
  return core(value, Object.assign({ format: formatBasic }, options));
}

// ../../../node_modules/mdast-util-mdx-jsx/lib/index.js
var indent = "  ";
function mdxJsxFromMarkdown() {
  return {
    canContainEols: ["mdxJsxTextElement"],
    enter: {
      mdxJsxFlowTag: enterMdxJsxTag,
      mdxJsxFlowTagClosingMarker: enterMdxJsxTagClosingMarker,
      mdxJsxFlowTagAttribute: enterMdxJsxTagAttribute,
      mdxJsxFlowTagExpressionAttribute: enterMdxJsxTagExpressionAttribute,
      mdxJsxFlowTagAttributeValueLiteral: buffer,
      mdxJsxFlowTagAttributeValueExpression: buffer,
      mdxJsxFlowTagSelfClosingMarker: enterMdxJsxTagSelfClosingMarker,
      mdxJsxTextTag: enterMdxJsxTag,
      mdxJsxTextTagClosingMarker: enterMdxJsxTagClosingMarker,
      mdxJsxTextTagAttribute: enterMdxJsxTagAttribute,
      mdxJsxTextTagExpressionAttribute: enterMdxJsxTagExpressionAttribute,
      mdxJsxTextTagAttributeValueLiteral: buffer,
      mdxJsxTextTagAttributeValueExpression: buffer,
      mdxJsxTextTagSelfClosingMarker: enterMdxJsxTagSelfClosingMarker
    },
    exit: {
      mdxJsxFlowTagClosingMarker: exitMdxJsxTagClosingMarker,
      mdxJsxFlowTagNamePrimary: exitMdxJsxTagNamePrimary,
      mdxJsxFlowTagNameMember: exitMdxJsxTagNameMember,
      mdxJsxFlowTagNameLocal: exitMdxJsxTagNameLocal,
      mdxJsxFlowTagExpressionAttribute: exitMdxJsxTagExpressionAttribute,
      mdxJsxFlowTagExpressionAttributeValue: data2,
      mdxJsxFlowTagAttributeNamePrimary: exitMdxJsxTagAttributeNamePrimary,
      mdxJsxFlowTagAttributeNameLocal: exitMdxJsxTagAttributeNameLocal,
      mdxJsxFlowTagAttributeValueLiteral: exitMdxJsxTagAttributeValueLiteral,
      mdxJsxFlowTagAttributeValueLiteralValue: data2,
      mdxJsxFlowTagAttributeValueExpression: exitMdxJsxTagAttributeValueExpression,
      mdxJsxFlowTagAttributeValueExpressionValue: data2,
      mdxJsxFlowTagSelfClosingMarker: exitMdxJsxTagSelfClosingMarker,
      mdxJsxFlowTag: exitMdxJsxTag,
      mdxJsxTextTagClosingMarker: exitMdxJsxTagClosingMarker,
      mdxJsxTextTagNamePrimary: exitMdxJsxTagNamePrimary,
      mdxJsxTextTagNameMember: exitMdxJsxTagNameMember,
      mdxJsxTextTagNameLocal: exitMdxJsxTagNameLocal,
      mdxJsxTextTagExpressionAttribute: exitMdxJsxTagExpressionAttribute,
      mdxJsxTextTagExpressionAttributeValue: data2,
      mdxJsxTextTagAttributeNamePrimary: exitMdxJsxTagAttributeNamePrimary,
      mdxJsxTextTagAttributeNameLocal: exitMdxJsxTagAttributeNameLocal,
      mdxJsxTextTagAttributeValueLiteral: exitMdxJsxTagAttributeValueLiteral,
      mdxJsxTextTagAttributeValueLiteralValue: data2,
      mdxJsxTextTagAttributeValueExpression: exitMdxJsxTagAttributeValueExpression,
      mdxJsxTextTagAttributeValueExpressionValue: data2,
      mdxJsxTextTagSelfClosingMarker: exitMdxJsxTagSelfClosingMarker,
      mdxJsxTextTag: exitMdxJsxTag
    }
  };
  function buffer() {
    this.buffer();
  }
  function point4(d) {
    return { line: d.line, column: d.column, offset: d.offset };
  }
  function data2(token) {
    this.config.enter.data.call(this, token), this.config.exit.data.call(this, token);
  }
  function enterMdxJsxTag(token) {
    let tag = {
      name: void 0,
      attributes: [],
      close: !1,
      selfClosing: !1,
      start: token.start,
      end: token.end
    };
    this.data.mdxJsxTagStack || (this.data.mdxJsxTagStack = []), this.data.mdxJsxTag = tag, this.buffer();
  }
  function enterMdxJsxTagClosingMarker(token) {
    let stack = this.data.mdxJsxTagStack;
    if (stack.length === 0)
      throw new VFileMessage(
        "Unexpected closing slash `/` in tag, expected an open tag first",
        { start: token.start, end: token.end },
        "mdast-util-mdx-jsx:unexpected-closing-slash"
      );
  }
  function enterMdxJsxTagAnyAttribute(token) {
    let tag = this.data.mdxJsxTag;
    if (tag.close)
      throw new VFileMessage(
        "Unexpected attribute in closing tag, expected the end of the tag",
        { start: token.start, end: token.end },
        "mdast-util-mdx-jsx:unexpected-attribute"
      );
  }
  function enterMdxJsxTagSelfClosingMarker(token) {
    let tag = this.data.mdxJsxTag;
    if (tag.close)
      throw new VFileMessage(
        "Unexpected self-closing slash `/` in closing tag, expected the end of the tag",
        { start: token.start, end: token.end },
        "mdast-util-mdx-jsx:unexpected-self-closing-slash"
      );
  }
  function exitMdxJsxTagClosingMarker() {
    let tag = this.data.mdxJsxTag;
    tag.close = !0;
  }
  function exitMdxJsxTagNamePrimary(token) {
    let tag = this.data.mdxJsxTag;
    tag.name = this.sliceSerialize(token);
  }
  function exitMdxJsxTagNameMember(token) {
    let tag = this.data.mdxJsxTag;
    tag.name += "." + this.sliceSerialize(token);
  }
  function exitMdxJsxTagNameLocal(token) {
    let tag = this.data.mdxJsxTag;
    tag.name += ":" + this.sliceSerialize(token);
  }
  function enterMdxJsxTagAttribute(token) {
    let tag = this.data.mdxJsxTag;
    enterMdxJsxTagAnyAttribute.call(this, token), tag.attributes.push({
      type: "mdxJsxAttribute",
      name: "",
      value: null,
      position: {
        start: point4(token.start),
        // @ts-expect-error: `end` will be patched later.
        end: void 0
      }
    });
  }
  function enterMdxJsxTagExpressionAttribute(token) {
    let tag = this.data.mdxJsxTag;
    enterMdxJsxTagAnyAttribute.call(this, token), tag.attributes.push({
      type: "mdxJsxExpressionAttribute",
      value: "",
      position: {
        start: point4(token.start),
        // @ts-expect-error: `end` will be patched later.
        end: void 0
      }
    }), this.buffer();
  }
  function exitMdxJsxTagExpressionAttribute(token) {
    let tag = this.data.mdxJsxTag;
    let tail = tag.attributes[tag.attributes.length - 1];
    tail.type;
    let estree = token.estree;
    tail.value = this.resume(), tail.position, tail.position.end = point4(token.end), estree && (tail.data = { estree });
  }
  function exitMdxJsxTagAttributeNamePrimary(token) {
    let tag = this.data.mdxJsxTag;
    let node2 = tag.attributes[tag.attributes.length - 1];
    node2.type, node2.name = this.sliceSerialize(token), node2.position, node2.position.end = point4(token.end);
  }
  function exitMdxJsxTagAttributeNameLocal(token) {
    let tag = this.data.mdxJsxTag;
    let node2 = tag.attributes[tag.attributes.length - 1];
    node2.type, node2.name += ":" + this.sliceSerialize(token), node2.position, node2.position.end = point4(token.end);
  }
  function exitMdxJsxTagAttributeValueLiteral(token) {
    let tag = this.data.mdxJsxTag;
    let node2 = tag.attributes[tag.attributes.length - 1];
    node2.value = parseEntities(this.resume(), { nonTerminated: !1 }), node2.position, node2.position.end = point4(token.end);
  }
  function exitMdxJsxTagAttributeValueExpression(token) {
    let tag = this.data.mdxJsxTag;
    let tail = tag.attributes[tag.attributes.length - 1];
    tail.type;
    let node2 = { type: "mdxJsxAttributeValueExpression", value: this.resume() }, estree = token.estree;
    estree && (node2.data = { estree }), tail.value = node2, tail.position, tail.position.end = point4(token.end);
  }
  function exitMdxJsxTagSelfClosingMarker() {
    let tag = this.data.mdxJsxTag;
    tag.selfClosing = !0;
  }
  function exitMdxJsxTag(token) {
    let tag = this.data.mdxJsxTag;
    let stack = this.data.mdxJsxTagStack;
    let tail = stack[stack.length - 1];
    if (tag.close && tail.name !== tag.name)
      throw new VFileMessage(
        "Unexpected closing tag `" + serializeAbbreviatedTag(tag) + "`, expected corresponding closing tag for `" + serializeAbbreviatedTag(tail) + "` (" + stringifyPosition(tail) + ")",
        { start: token.start, end: token.end },
        "mdast-util-mdx-jsx:end-tag-mismatch"
      );
    this.resume(), tag.close ? stack.pop() : this.enter(
      {
        type: token.type === "mdxJsxTextTag" ? "mdxJsxTextElement" : "mdxJsxFlowElement",
        name: tag.name || null,
        attributes: tag.attributes,
        children: []
      },
      token,
      onErrorRightIsTag
    ), tag.selfClosing || tag.close ? this.exit(token, onErrorLeftIsTag) : stack.push(tag);
  }
  function onErrorRightIsTag(closing, open) {
    let stack = this.data.mdxJsxTagStack;
    let tag = stack[stack.length - 1];
    let place = closing ? " before the end of `" + closing.type + "`" : "", position3 = closing ? { start: closing.start, end: closing.end } : void 0;
    throw new VFileMessage(
      "Expected a closing tag for `" + serializeAbbreviatedTag(tag) + "` (" + stringifyPosition({ start: open.start, end: open.end }) + ")" + place,
      position3,
      "mdast-util-mdx-jsx:end-tag-mismatch"
    );
  }
  function onErrorLeftIsTag(a, b) {
    let tag = this.data.mdxJsxTag;
    throw new VFileMessage(
      "Expected the closing tag `" + serializeAbbreviatedTag(tag) + "` either after the end of `" + b.type + "` (" + stringifyPosition(b.end) + ") or another opening tag after the start of `" + b.type + "` (" + stringifyPosition(b.start) + ")",
      { start: a.start, end: a.end },
      "mdast-util-mdx-jsx:end-tag-mismatch"
    );
  }
  function serializeAbbreviatedTag(tag) {
    return "<" + (tag.close ? "/" : "") + (tag.name || "") + ">";
  }
}
function mdxJsxToMarkdown(options) {
  let options_ = options || {}, quote = options_.quote || '"', quoteSmart = options_.quoteSmart || !1, tightSelfClosing = options_.tightSelfClosing || !1, printWidth = options_.printWidth || Number.POSITIVE_INFINITY, alternative = quote === '"' ? "'" : '"';
  if (quote !== '"' && quote !== "'")
    throw new Error(
      "Cannot serialize attribute values with `" + quote + "` for `options.quote`, expected `\"`, or `'`"
    );
  return mdxElement.peek = peekElement, {
    handlers: {
      mdxJsxFlowElement: mdxElement,
      mdxJsxTextElement: mdxElement
    },
    unsafe: [
      { character: "<", inConstruct: ["phrasing"] },
      { atBreak: !0, character: "<" }
    ],
    // Always generate fenced code (never indented code).
    fences: !0,
    // Always generate links with resources (never autolinks).
    resourceLink: !0
  };
  function mdxElement(node2, _, state, info) {
    let flow3 = node2.type === "mdxJsxFlowElement", selfClosing = node2.name ? !node2.children || node2.children.length === 0 : !1, depth = inferDepth(state), currentIndent = createIndent(depth), trackerOneLine = state.createTracker(info), trackerMultiLine = state.createTracker(info), serializedAttributes = [], prefix = (flow3 ? currentIndent : "") + "<" + (node2.name || ""), exit2 = state.enter(node2.type);
    if (trackerOneLine.move(prefix), trackerMultiLine.move(prefix), node2.attributes && node2.attributes.length > 0) {
      if (!node2.name)
        throw new Error("Cannot serialize fragment w/ attributes");
      let index2 = -1;
      for (; ++index2 < node2.attributes.length; ) {
        let attribute = node2.attributes[index2], result;
        if (attribute.type === "mdxJsxExpressionAttribute")
          result = "{" + (attribute.value || "") + "}";
        else {
          if (!attribute.name)
            throw new Error("Cannot serialize attribute w/o name");
          let value2 = attribute.value, left = attribute.name, right = "";
          if (value2 != null)
            if (typeof value2 == "object")
              right = "{" + (value2.value || "") + "}";
            else {
              let appliedQuote = quoteSmart && ccount(value2, quote) > ccount(value2, alternative) ? alternative : quote;
              right = appliedQuote + stringifyEntitiesLight(value2, { subset: [appliedQuote] }) + appliedQuote;
            }
          result = left + (right ? "=" : "") + right;
        }
        serializedAttributes.push(result);
      }
    }
    let attributesOnTheirOwnLine = !1, attributesOnOneLine = serializedAttributes.join(" ");
    // Block:
    flow3 && // Including a line ending (expressions).
    (/\r?\n|\r/.test(attributesOnOneLine) || // Current position (including `<tag`).
    trackerOneLine.current().now.column + // -1 because columns, +1 for ` ` before attributes.
    // Attributes joined by spaces.
    attributesOnOneLine.length + // ` />`.
    (selfClosing ? tightSelfClosing ? 2 : 3 : 1) > printWidth) && (attributesOnTheirOwnLine = !0);
    let tracker = trackerOneLine, value = prefix;
    if (attributesOnTheirOwnLine) {
      tracker = trackerMultiLine;
      let index2 = -1;
      for (; ++index2 < serializedAttributes.length; )
        serializedAttributes[index2] = currentIndent + indent + serializedAttributes[index2];
      value += tracker.move(
        `
` + serializedAttributes.join(`
`) + `
` + currentIndent
      );
    } else attributesOnOneLine && (value += tracker.move(" " + attributesOnOneLine));
    return selfClosing && (value += tracker.move(
      (tightSelfClosing || attributesOnTheirOwnLine ? "" : " ") + "/"
    )), value += tracker.move(">"), node2.children && node2.children.length > 0 && (node2.type === "mdxJsxTextElement" ? value += tracker.move(
      state.containerPhrasing(node2, {
        ...tracker.current(),
        before: ">",
        after: "<"
      })
    ) : (tracker.shift(2), value += tracker.move(`
`), value += tracker.move(containerFlow(node2, state, tracker.current())), value += tracker.move(`
`))), selfClosing || (value += tracker.move(
      (flow3 ? currentIndent : "") + "</" + (node2.name || "") + ">"
    )), exit2(), value;
  }
}
function containerFlow(parent, state, info) {
  let indexStack = state.indexStack, children = parent.children, tracker = state.createTracker(info), currentIndent = createIndent(inferDepth(state)), results = [], index2 = -1;
  for (indexStack.push(-1); ++index2 < children.length; ) {
    let child = children[index2];
    indexStack[indexStack.length - 1] = index2;
    let childInfo = { before: `
`, after: `
`, ...tracker.current() }, result = state.handle(child, parent, state, childInfo), serializedChild = child.type === "mdxJsxFlowElement" ? result : state.indentLines(result, function(line, _, blank) {
      return (blank ? "" : currentIndent) + line;
    });
    results.push(tracker.move(serializedChild)), child.type !== "list" && (state.bulletLastUsed = void 0), index2 < children.length - 1 && results.push(tracker.move(`

`));
  }
  return indexStack.pop(), results.join("");
}
function inferDepth(state) {
  let depth = 0, index2 = state.stack.length;
  for (; --index2 > -1; ) {
    let name2 = state.stack[index2];
    if (name2 === "blockquote" || name2 === "listItem") break;
    name2 === "mdxJsxFlowElement" && depth++;
  }
  return depth;
}
function createIndent(depth) {
  return indent.repeat(depth);
}
function peekElement() {
  return "<";
}

// ../../../node_modules/mdast-util-mdxjs-esm/lib/index.js
function mdxjsEsmFromMarkdown() {
  return {
    enter: { mdxjsEsm: enterMdxjsEsm },
    exit: { mdxjsEsm: exitMdxjsEsm, mdxjsEsmData: exitMdxjsEsmData }
  };
}
function mdxjsEsmToMarkdown() {
  return { handlers: { mdxjsEsm: handleMdxjsEsm } };
}
function enterMdxjsEsm(token) {
  this.enter({ type: "mdxjsEsm", value: "" }, token), this.buffer();
}
function exitMdxjsEsm(token) {
  let value = this.resume(), node2 = this.stack[this.stack.length - 1];
  node2.type, this.exit(token);
  let estree = token.estree;
  node2.value = value, estree && (node2.data = { estree });
}
function exitMdxjsEsmData(token) {
  this.config.enter.data.call(this, token), this.config.exit.data.call(this, token);
}
function handleMdxjsEsm(node2) {
  return node2.value || "";
}

// ../../../node_modules/mdast-util-mdx/lib/index.js
function mdxFromMarkdown() {
  return [
    mdxExpressionFromMarkdown(),
    mdxJsxFromMarkdown(),
    mdxjsEsmFromMarkdown()
  ];
}
function mdxToMarkdown(options) {
  return {
    extensions: [
      mdxExpressionToMarkdown(),
      mdxJsxToMarkdown(options),
      mdxjsEsmToMarkdown()
    ]
  };
}

// ../../../node_modules/micromark-extension-mdxjs/node_modules/acorn/dist/acorn.mjs
var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239], astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191], nonASCIIidentifierChars = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0897-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\u30FB\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F\uFF65", nonASCIIidentifierStartChars = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC", reservedWords = {
  3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",
  5: "class enum extends super const export import",
  6: "enum",
  strict: "implements interface let package private protected public static yield",
  strictBind: "eval arguments"
}, ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this", keywords$1 = {
  5: ecma5AndLessKeywords,
  "5module": ecma5AndLessKeywords + " export import",
  6: ecma5AndLessKeywords + " const class extends export import super"
}, keywordRelationalOperator = /^in(stanceof)?$/, nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"), nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
function isInAstralSet(code2, set) {
  for (var pos = 65536, i = 0; i < set.length; i += 2) {
    if (pos += set[i], pos > code2)
      return !1;
    if (pos += set[i + 1], pos >= code2)
      return !0;
  }
  return !1;
}
function isIdentifierStart(code2, astral) {
  return code2 < 65 ? code2 === 36 : code2 < 91 ? !0 : code2 < 97 ? code2 === 95 : code2 < 123 ? !0 : code2 <= 65535 ? code2 >= 170 && nonASCIIidentifierStart.test(String.fromCharCode(code2)) : astral === !1 ? !1 : isInAstralSet(code2, astralIdentifierStartCodes);
}
function isIdentifierChar(code2, astral) {
  return code2 < 48 ? code2 === 36 : code2 < 58 ? !0 : code2 < 65 ? !1 : code2 < 91 ? !0 : code2 < 97 ? code2 === 95 : code2 < 123 ? !0 : code2 <= 65535 ? code2 >= 170 && nonASCIIidentifier.test(String.fromCharCode(code2)) : astral === !1 ? !1 : isInAstralSet(code2, astralIdentifierStartCodes) || isInAstralSet(code2, astralIdentifierCodes);
}
var TokenType = function(label, conf) {
  conf === void 0 && (conf = {}), this.label = label, this.keyword = conf.keyword, this.beforeExpr = !!conf.beforeExpr, this.startsExpr = !!conf.startsExpr, this.isLoop = !!conf.isLoop, this.isAssign = !!conf.isAssign, this.prefix = !!conf.prefix, this.postfix = !!conf.postfix, this.binop = conf.binop || null, this.updateContext = null;
};
function binop(name2, prec) {
  return new TokenType(name2, { beforeExpr: !0, binop: prec });
}
var beforeExpr = { beforeExpr: !0 }, startsExpr = { startsExpr: !0 }, keywords = {};
function kw(name2, options) {
  return options === void 0 && (options = {}), options.keyword = name2, keywords[name2] = new TokenType(name2, options);
}
var types$1 = {
  num: new TokenType("num", startsExpr),
  regexp: new TokenType("regexp", startsExpr),
  string: new TokenType("string", startsExpr),
  name: new TokenType("name", startsExpr),
  privateId: new TokenType("privateId", startsExpr),
  eof: new TokenType("eof"),
  // Punctuation token types.
  bracketL: new TokenType("[", { beforeExpr: !0, startsExpr: !0 }),
  bracketR: new TokenType("]"),
  braceL: new TokenType("{", { beforeExpr: !0, startsExpr: !0 }),
  braceR: new TokenType("}"),
  parenL: new TokenType("(", { beforeExpr: !0, startsExpr: !0 }),
  parenR: new TokenType(")"),
  comma: new TokenType(",", beforeExpr),
  semi: new TokenType(";", beforeExpr),
  colon: new TokenType(":", beforeExpr),
  dot: new TokenType("."),
  question: new TokenType("?", beforeExpr),
  questionDot: new TokenType("?."),
  arrow: new TokenType("=>", beforeExpr),
  template: new TokenType("template"),
  invalidTemplate: new TokenType("invalidTemplate"),
  ellipsis: new TokenType("...", beforeExpr),
  backQuote: new TokenType("`", startsExpr),
  dollarBraceL: new TokenType("${", { beforeExpr: !0, startsExpr: !0 }),
  // Operators. These carry several kinds of properties to help the
  // parser use them properly (the presence of these properties is
  // what categorizes them as operators).
  //
  // `binop`, when present, specifies that this operator is a binary
  // operator, and will refer to its precedence.
  //
  // `prefix` and `postfix` mark the operator as a prefix or postfix
  // unary operator.
  //
  // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as
  // binary operators with a very low precedence, that should result
  // in AssignmentExpression nodes.
  eq: new TokenType("=", { beforeExpr: !0, isAssign: !0 }),
  assign: new TokenType("_=", { beforeExpr: !0, isAssign: !0 }),
  incDec: new TokenType("++/--", { prefix: !0, postfix: !0, startsExpr: !0 }),
  prefix: new TokenType("!/~", { beforeExpr: !0, prefix: !0, startsExpr: !0 }),
  logicalOR: binop("||", 1),
  logicalAND: binop("&&", 2),
  bitwiseOR: binop("|", 3),
  bitwiseXOR: binop("^", 4),
  bitwiseAND: binop("&", 5),
  equality: binop("==/!=/===/!==", 6),
  relational: binop("</>/<=/>=", 7),
  bitShift: binop("<</>>/>>>", 8),
  plusMin: new TokenType("+/-", { beforeExpr: !0, binop: 9, prefix: !0, startsExpr: !0 }),
  modulo: binop("%", 10),
  star: binop("*", 10),
  slash: binop("/", 10),
  starstar: new TokenType("**", { beforeExpr: !0 }),
  coalesce: binop("??", 1),
  // Keyword token types.
  _break: kw("break"),
  _case: kw("case", beforeExpr),
  _catch: kw("catch"),
  _continue: kw("continue"),
  _debugger: kw("debugger"),
  _default: kw("default", beforeExpr),
  _do: kw("do", { isLoop: !0, beforeExpr: !0 }),
  _else: kw("else", beforeExpr),
  _finally: kw("finally"),
  _for: kw("for", { isLoop: !0 }),
  _function: kw("function", startsExpr),
  _if: kw("if"),
  _return: kw("return", beforeExpr),
  _switch: kw("switch"),
  _throw: kw("throw", beforeExpr),
  _try: kw("try"),
  _var: kw("var"),
  _const: kw("const"),
  _while: kw("while", { isLoop: !0 }),
  _with: kw("with"),
  _new: kw("new", { beforeExpr: !0, startsExpr: !0 }),
  _this: kw("this", startsExpr),
  _super: kw("super", startsExpr),
  _class: kw("class", startsExpr),
  _extends: kw("extends", beforeExpr),
  _export: kw("export"),
  _import: kw("import", startsExpr),
  _null: kw("null", startsExpr),
  _true: kw("true", startsExpr),
  _false: kw("false", startsExpr),
  _in: kw("in", { beforeExpr: !0, binop: 7 }),
  _instanceof: kw("instanceof", { beforeExpr: !0, binop: 7 }),
  _typeof: kw("typeof", { beforeExpr: !0, prefix: !0, startsExpr: !0 }),
  _void: kw("void", { beforeExpr: !0, prefix: !0, startsExpr: !0 }),
  _delete: kw("delete", { beforeExpr: !0, prefix: !0, startsExpr: !0 })
}, lineBreak = /\r\n?|\n|\u2028|\u2029/, lineBreakG = new RegExp(lineBreak.source, "g");
function isNewLine(code2) {
  return code2 === 10 || code2 === 13 || code2 === 8232 || code2 === 8233;
}
function nextLineBreak(code2, from, end) {
  end === void 0 && (end = code2.length);
  for (var i = from; i < end; i++) {
    var next = code2.charCodeAt(i);
    if (isNewLine(next))
      return i < end - 1 && next === 13 && code2.charCodeAt(i + 1) === 10 ? i + 2 : i + 1;
  }
  return -1;
}
var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/, skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g, ref = Object.prototype, hasOwnProperty = ref.hasOwnProperty, toString = ref.toString, hasOwn = Object.hasOwn || (function(obj, propName) {
  return hasOwnProperty.call(obj, propName);
}), isArray = Array.isArray || (function(obj) {
  return toString.call(obj) === "[object Array]";
}), regexpCache = /* @__PURE__ */ Object.create(null);
function wordsRegexp(words) {
  return regexpCache[words] || (regexpCache[words] = new RegExp("^(?:" + words.replace(/ /g, "|") + ")$"));
}
function codePointToString(code2) {
  return code2 <= 65535 ? String.fromCharCode(code2) : (code2 -= 65536, String.fromCharCode((code2 >> 10) + 55296, (code2 & 1023) + 56320));
}
var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/, Position = function(line, col) {
  this.line = line, this.column = col;
};
Position.prototype.offset = function(n) {
  return new Position(this.line, this.column + n);
};
var SourceLocation = function(p, start2, end) {
  this.start = start2, this.end = end, p.sourceFile !== null && (this.source = p.sourceFile);
};
function getLineInfo(input, offset2) {
  for (var line = 1, cur = 0; ; ) {
    var nextBreak = nextLineBreak(input, cur, offset2);
    if (nextBreak < 0)
      return new Position(line, offset2 - cur);
    ++line, cur = nextBreak;
  }
}
var defaultOptions = {
  // `ecmaVersion` indicates the ECMAScript version to parse. Must be
  // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10
  // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"`
  // (the latest version the library supports). This influences
  // support for strict mode, the set of reserved words, and support
  // for new syntax features.
  ecmaVersion: null,
  // `sourceType` indicates the mode the code should be parsed in.
  // Can be either `"script"` or `"module"`. This influences global
  // strict mode and parsing of `import` and `export` declarations.
  sourceType: "script",
  // `onInsertedSemicolon` can be a callback that will be called when
  // a semicolon is automatically inserted. It will be passed the
  // position of the inserted semicolon as an offset, and if
  // `locations` is enabled, it is given the location as a `{line,
  // column}` object as second argument.
  onInsertedSemicolon: null,
  // `onTrailingComma` is similar to `onInsertedSemicolon`, but for
  // trailing commas.
  onTrailingComma: null,
  // By default, reserved words are only enforced if ecmaVersion >= 5.
  // Set `allowReserved` to a boolean value to explicitly turn this on
  // an off. When this option has the value "never", reserved words
  // and keywords can also not be used as property names.
  allowReserved: null,
  // When enabled, a return at the top level is not considered an
  // error.
  allowReturnOutsideFunction: !1,
  // When enabled, import/export statements are not constrained to
  // appearing at the top of the program, and an import.meta expression
  // in a script isn't considered an error.
  allowImportExportEverywhere: !1,
  // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.
  // When enabled, await identifiers are allowed to appear at the top-level scope,
  // but they are still not allowed in non-async functions.
  allowAwaitOutsideFunction: null,
  // When enabled, super identifiers are not constrained to
  // appearing in methods and do not raise an error when they appear elsewhere.
  allowSuperOutsideMethod: null,
  // When enabled, hashbang directive in the beginning of file is
  // allowed and treated as a line comment. Enabled by default when
  // `ecmaVersion` >= 2023.
  allowHashBang: !1,
  // By default, the parser will verify that private properties are
  // only used in places where they are valid and have been declared.
  // Set this to false to turn such checks off.
  checkPrivateFields: !0,
  // When `locations` is on, `loc` properties holding objects with
  // `start` and `end` properties in `{line, column}` form (with
  // line being 1-based and column 0-based) will be attached to the
  // nodes.
  locations: !1,
  // A function can be passed as `onToken` option, which will
  // cause Acorn to call that function with object in the same
  // format as tokens returned from `tokenizer().getToken()`. Note
  // that you are not allowed to call the parser from the
  // callback—that will corrupt its internal state.
  onToken: null,
  // A function can be passed as `onComment` option, which will
  // cause Acorn to call that function with `(block, text, start,
  // end)` parameters whenever a comment is skipped. `block` is a
  // boolean indicating whether this is a block (`/* */`) comment,
  // `text` is the content of the comment, and `start` and `end` are
  // character offsets that denote the start and end of the comment.
  // When the `locations` option is on, two more parameters are
  // passed, the full `{line, column}` locations of the start and
  // end of the comments. Note that you are not allowed to call the
  // parser from the callback—that will corrupt its internal state.
  // When this option has an array as value, objects representing the
  // comments are pushed to it.
  onComment: null,
  // Nodes have their start and end characters offsets recorded in
  // `start` and `end` properties (directly on the node, rather than
  // the `loc` object, which holds line/column data. To also add a
  // [semi-standardized][range] `range` property holding a `[start,
  // end]` array with the same numbers, set the `ranges` option to
  // `true`.
  //
  // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678
  ranges: !1,
  // It is possible to parse multiple files into a single AST by
  // passing the tree produced by parsing the first file as
  // `program` option in subsequent parses. This will add the
  // toplevel forms of the parsed file to the `Program` (top) node
  // of an existing parse tree.
  program: null,
  // When `locations` is on, you can pass this to record the source
  // file in every node's `loc` object.
  sourceFile: null,
  // This value, if given, is stored in every node, whether
  // `locations` is on or off.
  directSourceFile: null,
  // When enabled, parenthesized expressions are represented by
  // (non-standard) ParenthesizedExpression nodes
  preserveParens: !1
}, warnedAboutEcmaVersion = !1;
function getOptions(opts) {
  var options = {};
  for (var opt in defaultOptions)
    options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt];
  if (options.ecmaVersion === "latest" ? options.ecmaVersion = 1e8 : options.ecmaVersion == null ? (!warnedAboutEcmaVersion && typeof console == "object" && console.warn && (warnedAboutEcmaVersion = !0, console.warn(`Since Acorn 8.0.0, options.ecmaVersion is required.
Defaulting to 2020, but this will stop working in the future.`)), options.ecmaVersion = 11) : options.ecmaVersion >= 2015 && (options.ecmaVersion -= 2009), options.allowReserved == null && (options.allowReserved = options.ecmaVersion < 5), (!opts || opts.allowHashBang == null) && (options.allowHashBang = options.ecmaVersion >= 14), isArray(options.onToken)) {
    var tokens = options.onToken;
    options.onToken = function(token) {
      return tokens.push(token);
    };
  }
  return isArray(options.onComment) && (options.onComment = pushComment(options, options.onComment)), options;
}
function pushComment(options, array) {
  return function(block, text5, start2, end, startLoc, endLoc) {
    var comment2 = {
      type: block ? "Block" : "Line",
      value: text5,
      start: start2,
      end
    };
    options.locations && (comment2.loc = new SourceLocation(this, startLoc, endLoc)), options.ranges && (comment2.range = [start2, end]), array.push(comment2);
  };
}
var SCOPE_TOP = 1, SCOPE_FUNCTION = 2, SCOPE_ASYNC = 4, SCOPE_GENERATOR = 8, SCOPE_ARROW = 16, SCOPE_SIMPLE_CATCH = 32, SCOPE_SUPER = 64, SCOPE_DIRECT_SUPER = 128, SCOPE_CLASS_STATIC_BLOCK = 256, SCOPE_CLASS_FIELD_INIT = 512, SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;
function functionFlags(async, generator) {
  return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0);
}
var BIND_NONE = 0, BIND_VAR = 1, BIND_LEXICAL = 2, BIND_FUNCTION = 3, BIND_SIMPLE_CATCH = 4, BIND_OUTSIDE = 5, Parser = function(options, input, startPos) {
  this.options = options = getOptions(options), this.sourceFile = options.sourceFile, this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]);
  var reserved = "";
  options.allowReserved !== !0 && (reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3], options.sourceType === "module" && (reserved += " await")), this.reservedWords = wordsRegexp(reserved);
  var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict;
  this.reservedWordsStrict = wordsRegexp(reservedStrict), this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind), this.input = String(input), this.containsEsc = !1, startPos ? (this.pos = startPos, this.lineStart = this.input.lastIndexOf(`
`, startPos - 1) + 1, this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length) : (this.pos = this.lineStart = 0, this.curLine = 1), this.type = types$1.eof, this.value = null, this.start = this.end = this.pos, this.startLoc = this.endLoc = this.curPosition(), this.lastTokEndLoc = this.lastTokStartLoc = null, this.lastTokStart = this.lastTokEnd = this.pos, this.context = this.initialContext(), this.exprAllowed = !0, this.inModule = options.sourceType === "module", this.strict = this.inModule || this.strictDirective(this.pos), this.potentialArrowAt = -1, this.potentialArrowInForAwait = !1, this.yieldPos = this.awaitPos = this.awaitIdentPos = 0, this.labels = [], this.undefinedExports = /* @__PURE__ */ Object.create(null), this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!" && this.skipLineComment(2), this.scopeStack = [], this.enterScope(SCOPE_TOP), this.regexpState = null, this.privateNameStack = [];
}, prototypeAccessors = { inFunction: { configurable: !0 }, inGenerator: { configurable: !0 }, inAsync: { configurable: !0 }, canAwait: { configurable: !0 }, allowSuper: { configurable: !0 }, allowDirectSuper: { configurable: !0 }, treatFunctionsAsVar: { configurable: !0 }, allowNewDotTarget: { configurable: !0 }, inClassStaticBlock: { configurable: !0 } };
Parser.prototype.parse = function() {
  var node2 = this.options.program || this.startNode();
  return this.nextToken(), this.parseTopLevel(node2);
};
prototypeAccessors.inFunction.get = function() {
  return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0;
};
prototypeAccessors.inGenerator.get = function() {
  return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0;
};
prototypeAccessors.inAsync.get = function() {
  return (this.currentVarScope().flags & SCOPE_ASYNC) > 0;
};
prototypeAccessors.canAwait.get = function() {
  for (var i = this.scopeStack.length - 1; i >= 0; i--) {
    var ref2 = this.scopeStack[i], flags = ref2.flags;
    if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT))
      return !1;
    if (flags & SCOPE_FUNCTION)
      return (flags & SCOPE_ASYNC) > 0;
  }
  return this.inModule && this.options.ecmaVersion >= 13 || this.options.allowAwaitOutsideFunction;
};
prototypeAccessors.allowSuper.get = function() {
  var ref2 = this.currentThisScope(), flags = ref2.flags;
  return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod;
};
prototypeAccessors.allowDirectSuper.get = function() {
  return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0;
};
prototypeAccessors.treatFunctionsAsVar.get = function() {
  return this.treatFunctionsAsVarInScope(this.currentScope());
};
prototypeAccessors.allowNewDotTarget.get = function() {
  for (var i = this.scopeStack.length - 1; i >= 0; i--) {
    var ref2 = this.scopeStack[i], flags = ref2.flags;
    if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) || flags & SCOPE_FUNCTION && !(flags & SCOPE_ARROW))
      return !0;
  }
  return !1;
};
prototypeAccessors.inClassStaticBlock.get = function() {
  return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0;
};
Parser.extend = function() {
  for (var plugins = [], len = arguments.length; len--; ) plugins[len] = arguments[len];
  for (var cls = this, i = 0; i < plugins.length; i++)
    cls = plugins[i](cls);
  return cls;
};
Parser.parse = function(input, options) {
  return new this(options, input).parse();
};
Parser.parseExpressionAt = function(input, pos, options) {
  var parser = new this(options, input, pos);
  return parser.nextToken(), parser.parseExpression();
};
Parser.tokenizer = function(input, options) {
  return new this(options, input);
};
Object.defineProperties(Parser.prototype, prototypeAccessors);
var pp$9 = Parser.prototype, literal = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/;
pp$9.strictDirective = function(start2) {
  if (this.options.ecmaVersion < 5)
    return !1;
  for (; ; ) {
    skipWhiteSpace.lastIndex = start2, start2 += skipWhiteSpace.exec(this.input)[0].length;
    var match = literal.exec(this.input.slice(start2));
    if (!match)
      return !1;
    if ((match[1] || match[2]) === "use strict") {
      skipWhiteSpace.lastIndex = start2 + match[0].length;
      var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length, next = this.input.charAt(end);
      return next === ";" || next === "}" || lineBreak.test(spaceAfter[0]) && !(/[(`.[+\-/*%<>=,?^&]/.test(next) || next === "!" && this.input.charAt(end + 1) === "=");
    }
    start2 += match[0].length, skipWhiteSpace.lastIndex = start2, start2 += skipWhiteSpace.exec(this.input)[0].length, this.input[start2] === ";" && start2++;
  }
};
pp$9.eat = function(type) {
  return this.type === type ? (this.next(), !0) : !1;
};
pp$9.isContextual = function(name2) {
  return this.type === types$1.name && this.value === name2 && !this.containsEsc;
};
pp$9.eatContextual = function(name2) {
  return this.isContextual(name2) ? (this.next(), !0) : !1;
};
pp$9.expectContextual = function(name2) {
  this.eatContextual(name2) || this.unexpected();
};
pp$9.canInsertSemicolon = function() {
  return this.type === types$1.eof || this.type === types$1.braceR || lineBreak.test(this.input.slice(this.lastTokEnd, this.start));
};
pp$9.insertSemicolon = function() {
  if (this.canInsertSemicolon())
    return this.options.onInsertedSemicolon && this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc), !0;
};
pp$9.semicolon = function() {
  !this.eat(types$1.semi) && !this.insertSemicolon() && this.unexpected();
};
pp$9.afterTrailingComma = function(tokType, notNext) {
  if (this.type === tokType)
    return this.options.onTrailingComma && this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc), notNext || this.next(), !0;
};
pp$9.expect = function(type) {
  this.eat(type) || this.unexpected();
};
pp$9.unexpected = function(pos) {
  this.raise(pos ?? this.start, "Unexpected token");
};
var DestructuringErrors = function() {
  this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = this.doubleProto = -1;
};
pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {
  if (refDestructuringErrors) {
    refDestructuringErrors.trailingComma > -1 && this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element");
    var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;
    parens > -1 && this.raiseRecoverable(parens, isAssign ? "Assigning to rvalue" : "Parenthesized pattern");
  }
};
pp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {
  if (!refDestructuringErrors)
    return !1;
  var shorthandAssign = refDestructuringErrors.shorthandAssign, doubleProto = refDestructuringErrors.doubleProto;
  if (!andThrow)
    return shorthandAssign >= 0 || doubleProto >= 0;
  shorthandAssign >= 0 && this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"), doubleProto >= 0 && this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property");
};
pp$9.checkYieldAwaitInDefaultParams = function() {
  this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos) && this.raise(this.yieldPos, "Yield expression cannot be a default value"), this.awaitPos && this.raise(this.awaitPos, "Await expression cannot be a default value");
};
pp$9.isSimpleAssignTarget = function(expr) {
  return expr.type === "ParenthesizedExpression" ? this.isSimpleAssignTarget(expr.expression) : expr.type === "Identifier" || expr.type === "MemberExpression";
};
var pp$8 = Parser.prototype;
pp$8.parseTopLevel = function(node2) {
  var exports = /* @__PURE__ */ Object.create(null);
  for (node2.body || (node2.body = []); this.type !== types$1.eof; ) {
    var stmt = this.parseStatement(null, !0, exports);
    node2.body.push(stmt);
  }
  if (this.inModule)
    for (var i = 0, list3 = Object.keys(this.undefinedExports); i < list3.length; i += 1) {
      var name2 = list3[i];
      this.raiseRecoverable(this.undefinedExports[name2].start, "Export '" + name2 + "' is not defined");
    }
  return this.adaptDirectivePrologue(node2.body), this.next(), node2.sourceType = this.options.sourceType, this.finishNode(node2, "Program");
};
var loopLabel = { kind: "loop" }, switchLabel = { kind: "switch" };
pp$8.isLet = function(context) {
  if (this.options.ecmaVersion < 6 || !this.isContextual("let"))
    return !1;
  skipWhiteSpace.lastIndex = this.pos;
  var skip = skipWhiteSpace.exec(this.input), next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);
  if (nextCh === 91 || nextCh === 92)
    return !0;
  if (context)
    return !1;
  if (nextCh === 123 || nextCh > 55295 && nextCh < 56320)
    return !0;
  if (isIdentifierStart(nextCh, !0)) {
    for (var pos = next + 1; isIdentifierChar(nextCh = this.input.charCodeAt(pos), !0); )
      ++pos;
    if (nextCh === 92 || nextCh > 55295 && nextCh < 56320)
      return !0;
    var ident = this.input.slice(next, pos);
    if (!keywordRelationalOperator.test(ident))
      return !0;
  }
  return !1;
};
pp$8.isAsyncFunction = function() {
  if (this.options.ecmaVersion < 8 || !this.isContextual("async"))
    return !1;
  skipWhiteSpace.lastIndex = this.pos;
  var skip = skipWhiteSpace.exec(this.input), next = this.pos + skip[0].length, after;
  return !lineBreak.test(this.input.slice(this.pos, next)) && this.input.slice(next, next + 8) === "function" && (next + 8 === this.input.length || !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 55295 && after < 56320));
};
pp$8.isUsingKeyword = function(isAwaitUsing, isFor) {
  if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? "await" : "using"))
    return !1;
  skipWhiteSpace.lastIndex = this.pos;
  var skip = skipWhiteSpace.exec(this.input), next = this.pos + skip[0].length;
  if (lineBreak.test(this.input.slice(this.pos, next)))
    return !1;
  if (isAwaitUsing) {
    var awaitEndPos = next + 5, after;
    if (this.input.slice(next, awaitEndPos) !== "using" || awaitEndPos === this.input.length || isIdentifierChar(after = this.input.charCodeAt(awaitEndPos)) || after > 55295 && after < 56320)
      return !1;
    skipWhiteSpace.lastIndex = awaitEndPos;
    var skipAfterUsing = skipWhiteSpace.exec(this.input);
    if (skipAfterUsing && lineBreak.test(this.input.slice(awaitEndPos, awaitEndPos + skipAfterUsing[0].length)))
      return !1;
  }
  if (isFor) {
    var ofEndPos = next + 2, after$1;
    if (this.input.slice(next, ofEndPos) === "of" && (ofEndPos === this.input.length || !isIdentifierChar(after$1 = this.input.charCodeAt(ofEndPos)) && !(after$1 > 55295 && after$1 < 56320)))
      return !1;
  }
  var ch = this.input.charCodeAt(next);
  return isIdentifierStart(ch, !0) || ch === 92;
};
pp$8.isAwaitUsing = function(isFor) {
  return this.isUsingKeyword(!0, isFor);
};
pp$8.isUsing = function(isFor) {
  return this.isUsingKeyword(!1, isFor);
};
pp$8.parseStatement = function(context, topLevel, exports) {
  var starttype = this.type, node2 = this.startNode(), kind;
  switch (this.isLet(context) && (starttype = types$1._var, kind = "let"), starttype) {
    case types$1._break:
    case types$1._continue:
      return this.parseBreakContinueStatement(node2, starttype.keyword);
    case types$1._debugger:
      return this.parseDebuggerStatement(node2);
    case types$1._do:
      return this.parseDoStatement(node2);
    case types$1._for:
      return this.parseForStatement(node2);
    case types$1._function:
      return context && (this.strict || context !== "if" && context !== "label") && this.options.ecmaVersion >= 6 && this.unexpected(), this.parseFunctionStatement(node2, !1, !context);
    case types$1._class:
      return context && this.unexpected(), this.parseClass(node2, !0);
    case types$1._if:
      return this.parseIfStatement(node2);
    case types$1._return:
      return this.parseReturnStatement(node2);
    case types$1._switch:
      return this.parseSwitchStatement(node2);
    case types$1._throw:
      return this.parseThrowStatement(node2);
    case types$1._try:
      return this.parseTryStatement(node2);
    case types$1._const:
    case types$1._var:
      return kind = kind || this.value, context && kind !== "var" && this.unexpected(), this.parseVarStatement(node2, kind);
    case types$1._while:
      return this.parseWhileStatement(node2);
    case types$1._with:
      return this.parseWithStatement(node2);
    case types$1.braceL:
      return this.parseBlock(!0, node2);
    case types$1.semi:
      return this.parseEmptyStatement(node2);
    case types$1._export:
    case types$1._import:
      if (this.options.ecmaVersion > 10 && starttype === types$1._import) {
        skipWhiteSpace.lastIndex = this.pos;
        var skip = skipWhiteSpace.exec(this.input), next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);
        if (nextCh === 40 || nextCh === 46)
          return this.parseExpressionStatement(node2, this.parseExpression());
      }
      return this.options.allowImportExportEverywhere || (topLevel || this.raise(this.start, "'import' and 'export' may only appear at the top level"), this.inModule || this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'")), starttype === types$1._import ? this.parseImport(node2) : this.parseExport(node2, exports);
    // If the statement does not start with a statement keyword or a
    // brace, it's an ExpressionStatement or LabeledStatement. We
    // simply start parsing an expression, and afterwards, if the
    // next token is a colon and the expression was a simple
    // Identifier node, we switch to interpreting it as a label.
    default:
      if (this.isAsyncFunction())
        return context && this.unexpected(), this.next(), this.parseFunctionStatement(node2, !0, !context);
      var usingKind = this.isAwaitUsing(!1) ? "await using" : this.isUsing(!1) ? "using" : null;
      if (usingKind)
        return topLevel && this.options.sourceType === "script" && this.raise(this.start, "Using declaration cannot appear in the top level when source type is `script`"), usingKind === "await using" && (this.canAwait || this.raise(this.start, "Await using cannot appear outside of async function"), this.next()), this.next(), this.parseVar(node2, !1, usingKind), this.semicolon(), this.finishNode(node2, "VariableDeclaration");
      var maybeName = this.value, expr = this.parseExpression();
      return starttype === types$1.name && expr.type === "Identifier" && this.eat(types$1.colon) ? this.parseLabeledStatement(node2, maybeName, expr, context) : this.parseExpressionStatement(node2, expr);
  }
};
pp$8.parseBreakContinueStatement = function(node2, keyword) {
  var isBreak = keyword === "break";
  this.next(), this.eat(types$1.semi) || this.insertSemicolon() ? node2.label = null : this.type !== types$1.name ? this.unexpected() : (node2.label = this.parseIdent(), this.semicolon());
  for (var i = 0; i < this.labels.length; ++i) {
    var lab = this.labels[i];
    if ((node2.label == null || lab.name === node2.label.name) && (lab.kind != null && (isBreak || lab.kind === "loop") || node2.label && isBreak))
      break;
  }
  return i === this.labels.length && this.raise(node2.start, "Unsyntactic " + keyword), this.finishNode(node2, isBreak ? "BreakStatement" : "ContinueStatement");
};
pp$8.parseDebuggerStatement = function(node2) {
  return this.next(), this.semicolon(), this.finishNode(node2, "DebuggerStatement");
};
pp$8.parseDoStatement = function(node2) {
  return this.next(), this.labels.push(loopLabel), node2.body = this.parseStatement("do"), this.labels.pop(), this.expect(types$1._while), node2.test = this.parseParenExpression(), this.options.ecmaVersion >= 6 ? this.eat(types$1.semi) : this.semicolon(), this.finishNode(node2, "DoWhileStatement");
};
pp$8.parseForStatement = function(node2) {
  this.next();
  var awaitAt = this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual("await") ? this.lastTokStart : -1;
  if (this.labels.push(loopLabel), this.enterScope(0), this.expect(types$1.parenL), this.type === types$1.semi)
    return awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node2, null);
  var isLet = this.isLet();
  if (this.type === types$1._var || this.type === types$1._const || isLet) {
    var init$1 = this.startNode(), kind = isLet ? "let" : this.value;
    return this.next(), this.parseVar(init$1, !0, kind), this.finishNode(init$1, "VariableDeclaration"), this.parseForAfterInit(node2, init$1, awaitAt);
  }
  var startsWithLet = this.isContextual("let"), isForOf = !1, usingKind = this.isUsing(!0) ? "using" : this.isAwaitUsing(!0) ? "await using" : null;
  if (usingKind) {
    var init$2 = this.startNode();
    return this.next(), usingKind === "await using" && this.next(), this.parseVar(init$2, !0, usingKind), this.finishNode(init$2, "VariableDeclaration"), this.parseForAfterInit(node2, init$2, awaitAt);
  }
  var containsEsc = this.containsEsc, refDestructuringErrors = new DestructuringErrors(), initPos = this.start, init = awaitAt > -1 ? this.parseExprSubscripts(refDestructuringErrors, "await") : this.parseExpression(!0, refDestructuringErrors);
  return this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of")) ? (awaitAt > -1 ? (this.type === types$1._in && this.unexpected(awaitAt), node2.await = !0) : isForOf && this.options.ecmaVersion >= 8 && (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async" ? this.unexpected() : this.options.ecmaVersion >= 9 && (node2.await = !1)), startsWithLet && isForOf && this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."), this.toAssignable(init, !1, refDestructuringErrors), this.checkLValPattern(init), this.parseForIn(node2, init)) : (this.checkExpressionErrors(refDestructuringErrors, !0), awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node2, init));
};
pp$8.parseForAfterInit = function(node2, init, awaitAt) {
  return (this.type === types$1._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) && init.declarations.length === 1 ? (this.options.ecmaVersion >= 9 && (this.type === types$1._in ? awaitAt > -1 && this.unexpected(awaitAt) : node2.await = awaitAt > -1), this.parseForIn(node2, init)) : (awaitAt > -1 && this.unexpected(awaitAt), this.parseFor(node2, init));
};
pp$8.parseFunctionStatement = function(node2, isAsync, declarationPosition) {
  return this.next(), this.parseFunction(node2, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), !1, isAsync);
};
pp$8.parseIfStatement = function(node2) {
  return this.next(), node2.test = this.parseParenExpression(), node2.consequent = this.parseStatement("if"), node2.alternate = this.eat(types$1._else) ? this.parseStatement("if") : null, this.finishNode(node2, "IfStatement");
};
pp$8.parseReturnStatement = function(node2) {
  return !this.inFunction && !this.options.allowReturnOutsideFunction && this.raise(this.start, "'return' outside of function"), this.next(), this.eat(types$1.semi) || this.insertSemicolon() ? node2.argument = null : (node2.argument = this.parseExpression(), this.semicolon()), this.finishNode(node2, "ReturnStatement");
};
pp$8.parseSwitchStatement = function(node2) {
  this.next(), node2.discriminant = this.parseParenExpression(), node2.cases = [], this.expect(types$1.braceL), this.labels.push(switchLabel), this.enterScope(0);
  for (var cur, sawDefault = !1; this.type !== types$1.braceR; )
    if (this.type === types$1._case || this.type === types$1._default) {
      var isCase = this.type === types$1._case;
      cur && this.finishNode(cur, "SwitchCase"), node2.cases.push(cur = this.startNode()), cur.consequent = [], this.next(), isCase ? cur.test = this.parseExpression() : (sawDefault && this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"), sawDefault = !0, cur.test = null), this.expect(types$1.colon);
    } else
      cur || this.unexpected(), cur.consequent.push(this.parseStatement(null));
  return this.exitScope(), cur && this.finishNode(cur, "SwitchCase"), this.next(), this.labels.pop(), this.finishNode(node2, "SwitchStatement");
};
pp$8.parseThrowStatement = function(node2) {
  return this.next(), lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) && this.raise(this.lastTokEnd, "Illegal newline after throw"), node2.argument = this.parseExpression(), this.semicolon(), this.finishNode(node2, "ThrowStatement");
};
var empty$1 = [];
pp$8.parseCatchClauseParam = function() {
  var param = this.parseBindingAtom(), simple = param.type === "Identifier";
  return this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0), this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL), this.expect(types$1.parenR), param;
};
pp$8.parseTryStatement = function(node2) {
  if (this.next(), node2.block = this.parseBlock(), node2.handler = null, this.type === types$1._catch) {
    var clause = this.startNode();
    this.next(), this.eat(types$1.parenL) ? clause.param = this.parseCatchClauseParam() : (this.options.ecmaVersion < 10 && this.unexpected(), clause.param = null, this.enterScope(0)), clause.body = this.parseBlock(!1), this.exitScope(), node2.handler = this.finishNode(clause, "CatchClause");
  }
  return node2.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null, !node2.handler && !node2.finalizer && this.raise(node2.start, "Missing catch or finally clause"), this.finishNode(node2, "TryStatement");
};
pp$8.parseVarStatement = function(node2, kind, allowMissingInitializer) {
  return this.next(), this.parseVar(node2, !1, kind, allowMissingInitializer), this.semicolon(), this.finishNode(node2, "VariableDeclaration");
};
pp$8.parseWhileStatement = function(node2) {
  return this.next(), node2.test = this.parseParenExpression(), this.labels.push(loopLabel), node2.body = this.parseStatement("while"), this.labels.pop(), this.finishNode(node2, "WhileStatement");
};
pp$8.parseWithStatement = function(node2) {
  return this.strict && this.raise(this.start, "'with' in strict mode"), this.next(), node2.object = this.parseParenExpression(), node2.body = this.parseStatement("with"), this.finishNode(node2, "WithStatement");
};
pp$8.parseEmptyStatement = function(node2) {
  return this.next(), this.finishNode(node2, "EmptyStatement");
};
pp$8.parseLabeledStatement = function(node2, maybeName, expr, context) {
  for (var i$1 = 0, list3 = this.labels; i$1 < list3.length; i$1 += 1) {
    var label = list3[i$1];
    label.name === maybeName && this.raise(expr.start, "Label '" + maybeName + "' is already declared");
  }
  for (var kind = this.type.isLoop ? "loop" : this.type === types$1._switch ? "switch" : null, i = this.labels.length - 1; i >= 0; i--) {
    var label$1 = this.labels[i];
    if (label$1.statementStart === node2.start)
      label$1.statementStart = this.start, label$1.kind = kind;
    else
      break;
  }
  return this.labels.push({ name: maybeName, kind, statementStart: this.start }), node2.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"), this.labels.pop(), node2.label = expr, this.finishNode(node2, "LabeledStatement");
};
pp$8.parseExpressionStatement = function(node2, expr) {
  return node2.expression = expr, this.semicolon(), this.finishNode(node2, "ExpressionStatement");
};
pp$8.parseBlock = function(createNewLexicalScope, node2, exitStrict) {
  for (createNewLexicalScope === void 0 && (createNewLexicalScope = !0), node2 === void 0 && (node2 = this.startNode()), node2.body = [], this.expect(types$1.braceL), createNewLexicalScope && this.enterScope(0); this.type !== types$1.braceR; ) {
    var stmt = this.parseStatement(null);
    node2.body.push(stmt);
  }
  return exitStrict && (this.strict = !1), this.next(), createNewLexicalScope && this.exitScope(), this.finishNode(node2, "BlockStatement");
};
pp$8.parseFor = function(node2, init) {
  return node2.init = init, this.expect(types$1.semi), node2.test = this.type === types$1.semi ? null : this.parseExpression(), this.expect(types$1.semi), node2.update = this.type === types$1.parenR ? null : this.parseExpression(), this.expect(types$1.parenR), node2.body = this.parseStatement("for"), this.exitScope(), this.labels.pop(), this.finishNode(node2, "ForStatement");
};
pp$8.parseForIn = function(node2, init) {
  var isForIn = this.type === types$1._in;
  return this.next(), init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.options.ecmaVersion < 8 || this.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier") && this.raise(
    init.start,
    (isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer"
  ), node2.left = init, node2.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(), this.expect(types$1.parenR), node2.body = this.parseStatement("for"), this.exitScope(), this.labels.pop(), this.finishNode(node2, isForIn ? "ForInStatement" : "ForOfStatement");
};
pp$8.parseVar = function(node2, isFor, kind, allowMissingInitializer) {
  for (node2.declarations = [], node2.kind = kind; ; ) {
    var decl = this.startNode();
    if (this.parseVarId(decl, kind), this.eat(types$1.eq) ? decl.init = this.parseMaybeAssign(isFor) : !allowMissingInitializer && kind === "const" && !(this.type === types$1._in || this.options.ecmaVersion >= 6 && this.isContextual("of")) ? this.unexpected() : !allowMissingInitializer && (kind === "using" || kind === "await using") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual("of") ? this.raise(this.lastTokEnd, "Missing initializer in " + kind + " declaration") : !allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$1._in || this.isContextual("of"))) ? this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value") : decl.init = null, node2.declarations.push(this.finishNode(decl, "VariableDeclarator")), !this.eat(types$1.comma))
      break;
  }
  return node2;
};
pp$8.parseVarId = function(decl, kind) {
  decl.id = kind === "using" || kind === "await using" ? this.parseIdent() : this.parseBindingAtom(), this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, !1);
};
var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;
pp$8.parseFunction = function(node2, statement, allowExpressionBody, isAsync, forInit) {
  this.initFunction(node2), (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) && (this.type === types$1.star && statement & FUNC_HANGING_STATEMENT && this.unexpected(), node2.generator = this.eat(types$1.star)), this.options.ecmaVersion >= 8 && (node2.async = !!isAsync), statement & FUNC_STATEMENT && (node2.id = statement & FUNC_NULLABLE_ID && this.type !== types$1.name ? null : this.parseIdent(), node2.id && !(statement & FUNC_HANGING_STATEMENT) && this.checkLValSimple(node2.id, this.strict || node2.generator || node2.async ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION));
  var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
  return this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, this.enterScope(functionFlags(node2.async, node2.generator)), statement & FUNC_STATEMENT || (node2.id = this.type === types$1.name ? this.parseIdent() : null), this.parseFunctionParams(node2), this.parseFunctionBody(node2, allowExpressionBody, !1, forInit), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.finishNode(node2, statement & FUNC_STATEMENT ? "FunctionDeclaration" : "FunctionExpression");
};
pp$8.parseFunctionParams = function(node2) {
  this.expect(types$1.parenL), node2.params = this.parseBindingList(types$1.parenR, !1, this.options.ecmaVersion >= 8), this.checkYieldAwaitInDefaultParams();
};
pp$8.parseClass = function(node2, isStatement) {
  this.next();
  var oldStrict = this.strict;
  this.strict = !0, this.parseClassId(node2, isStatement), this.parseClassSuper(node2);
  var privateNameMap = this.enterClassBody(), classBody = this.startNode(), hadConstructor = !1;
  for (classBody.body = [], this.expect(types$1.braceL); this.type !== types$1.braceR; ) {
    var element2 = this.parseClassElement(node2.superClass !== null);
    element2 && (classBody.body.push(element2), element2.type === "MethodDefinition" && element2.kind === "constructor" ? (hadConstructor && this.raiseRecoverable(element2.start, "Duplicate constructor in the same class"), hadConstructor = !0) : element2.key && element2.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element2) && this.raiseRecoverable(element2.key.start, "Identifier '#" + element2.key.name + "' has already been declared"));
  }
  return this.strict = oldStrict, this.next(), node2.body = this.finishNode(classBody, "ClassBody"), this.exitClassBody(), this.finishNode(node2, isStatement ? "ClassDeclaration" : "ClassExpression");
};
pp$8.parseClassElement = function(constructorAllowsSuper) {
  if (this.eat(types$1.semi))
    return null;
  var ecmaVersion = this.options.ecmaVersion, node2 = this.startNode(), keyName = "", isGenerator = !1, isAsync = !1, kind = "method", isStatic = !1;
  if (this.eatContextual("static")) {
    if (ecmaVersion >= 13 && this.eat(types$1.braceL))
      return this.parseClassStaticBlock(node2), node2;
    this.isClassElementNameStart() || this.type === types$1.star ? isStatic = !0 : keyName = "static";
  }
  if (node2.static = isStatic, !keyName && ecmaVersion >= 8 && this.eatContextual("async") && ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon() ? isAsync = !0 : keyName = "async"), !keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star) && (isGenerator = !0), !keyName && !isAsync && !isGenerator) {
    var lastValue = this.value;
    (this.eatContextual("get") || this.eatContextual("set")) && (this.isClassElementNameStart() ? kind = lastValue : keyName = lastValue);
  }
  if (keyName ? (node2.computed = !1, node2.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc), node2.key.name = keyName, this.finishNode(node2.key, "Identifier")) : this.parseClassElementName(node2), ecmaVersion < 13 || this.type === types$1.parenL || kind !== "method" || isGenerator || isAsync) {
    var isConstructor = !node2.static && checkKeyName(node2, "constructor"), allowsDirectSuper = isConstructor && constructorAllowsSuper;
    isConstructor && kind !== "method" && this.raise(node2.key.start, "Constructor can't have get/set modifier"), node2.kind = isConstructor ? "constructor" : kind, this.parseClassMethod(node2, isGenerator, isAsync, allowsDirectSuper);
  } else
    this.parseClassField(node2);
  return node2;
};
pp$8.isClassElementNameStart = function() {
  return this.type === types$1.name || this.type === types$1.privateId || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword;
};
pp$8.parseClassElementName = function(element2) {
  this.type === types$1.privateId ? (this.value === "constructor" && this.raise(this.start, "Classes can't have an element named '#constructor'"), element2.computed = !1, element2.key = this.parsePrivateIdent()) : this.parsePropertyName(element2);
};
pp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {
  var key2 = method.key;
  method.kind === "constructor" ? (isGenerator && this.raise(key2.start, "Constructor can't be a generator"), isAsync && this.raise(key2.start, "Constructor can't be an async method")) : method.static && checkKeyName(method, "prototype") && this.raise(key2.start, "Classes may not have a static property named prototype");
  var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);
  return method.kind === "get" && value.params.length !== 0 && this.raiseRecoverable(value.start, "getter should have no params"), method.kind === "set" && value.params.length !== 1 && this.raiseRecoverable(value.start, "setter should have exactly one param"), method.kind === "set" && value.params[0].type === "RestElement" && this.raiseRecoverable(value.params[0].start, "Setter cannot use rest params"), this.finishNode(method, "MethodDefinition");
};
pp$8.parseClassField = function(field) {
  return checkKeyName(field, "constructor") ? this.raise(field.key.start, "Classes can't have a field named 'constructor'") : field.static && checkKeyName(field, "prototype") && this.raise(field.key.start, "Classes can't have a static field named 'prototype'"), this.eat(types$1.eq) ? (this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER), field.value = this.parseMaybeAssign(), this.exitScope()) : field.value = null, this.semicolon(), this.finishNode(field, "PropertyDefinition");
};
pp$8.parseClassStaticBlock = function(node2) {
  node2.body = [];
  var oldLabels = this.labels;
  for (this.labels = [], this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER); this.type !== types$1.braceR; ) {
    var stmt = this.parseStatement(null);
    node2.body.push(stmt);
  }
  return this.next(), this.exitScope(), this.labels = oldLabels, this.finishNode(node2, "StaticBlock");
};
pp$8.parseClassId = function(node2, isStatement) {
  this.type === types$1.name ? (node2.id = this.parseIdent(), isStatement && this.checkLValSimple(node2.id, BIND_LEXICAL, !1)) : (isStatement === !0 && this.unexpected(), node2.id = null);
};
pp$8.parseClassSuper = function(node2) {
  node2.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, !1) : null;
};
pp$8.enterClassBody = function() {
  var element2 = { declared: /* @__PURE__ */ Object.create(null), used: [] };
  return this.privateNameStack.push(element2), element2.declared;
};
pp$8.exitClassBody = function() {
  var ref2 = this.privateNameStack.pop(), declared = ref2.declared, used = ref2.used;
  if (this.options.checkPrivateFields)
    for (var len = this.privateNameStack.length, parent = len === 0 ? null : this.privateNameStack[len - 1], i = 0; i < used.length; ++i) {
      var id = used[i];
      hasOwn(declared, id.name) || (parent ? parent.used.push(id) : this.raiseRecoverable(id.start, "Private field '#" + id.name + "' must be declared in an enclosing class"));
    }
};
function isPrivateNameConflicted(privateNameMap, element2) {
  var name2 = element2.key.name, curr = privateNameMap[name2], next = "true";
  return element2.type === "MethodDefinition" && (element2.kind === "get" || element2.kind === "set") && (next = (element2.static ? "s" : "i") + element2.kind), curr === "iget" && next === "iset" || curr === "iset" && next === "iget" || curr === "sget" && next === "sset" || curr === "sset" && next === "sget" ? (privateNameMap[name2] = "true", !1) : curr ? !0 : (privateNameMap[name2] = next, !1);
}
function checkKeyName(node2, name2) {
  var computed = node2.computed, key2 = node2.key;
  return !computed && (key2.type === "Identifier" && key2.name === name2 || key2.type === "Literal" && key2.value === name2);
}
pp$8.parseExportAllDeclaration = function(node2, exports) {
  return this.options.ecmaVersion >= 11 && (this.eatContextual("as") ? (node2.exported = this.parseModuleExportName(), this.checkExport(exports, node2.exported, this.lastTokStart)) : node2.exported = null), this.expectContextual("from"), this.type !== types$1.string && this.unexpected(), node2.source = this.parseExprAtom(), this.options.ecmaVersion >= 16 && (node2.attributes = this.parseWithClause()), this.semicolon(), this.finishNode(node2, "ExportAllDeclaration");
};
pp$8.parseExport = function(node2, exports) {
  if (this.next(), this.eat(types$1.star))
    return this.parseExportAllDeclaration(node2, exports);
  if (this.eat(types$1._default))
    return this.checkExport(exports, "default", this.lastTokStart), node2.declaration = this.parseExportDefaultDeclaration(), this.finishNode(node2, "ExportDefaultDeclaration");
  if (this.shouldParseExportStatement())
    node2.declaration = this.parseExportDeclaration(node2), node2.declaration.type === "VariableDeclaration" ? this.checkVariableExport(exports, node2.declaration.declarations) : this.checkExport(exports, node2.declaration.id, node2.declaration.id.start), node2.specifiers = [], node2.source = null, this.options.ecmaVersion >= 16 && (node2.attributes = []);
  else {
    if (node2.declaration = null, node2.specifiers = this.parseExportSpecifiers(exports), this.eatContextual("from"))
      this.type !== types$1.string && this.unexpected(), node2.source = this.parseExprAtom(), this.options.ecmaVersion >= 16 && (node2.attributes = this.parseWithClause());
    else {
      for (var i = 0, list3 = node2.specifiers; i < list3.length; i += 1) {
        var spec = list3[i];
        this.checkUnreserved(spec.local), this.checkLocalExport(spec.local), spec.local.type === "Literal" && this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`.");
      }
      node2.source = null, this.options.ecmaVersion >= 16 && (node2.attributes = []);
    }
    this.semicolon();
  }
  return this.finishNode(node2, "ExportNamedDeclaration");
};
pp$8.parseExportDeclaration = function(node2) {
  return this.parseStatement(null);
};
pp$8.parseExportDefaultDeclaration = function() {
  var isAsync;
  if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {
    var fNode = this.startNode();
    return this.next(), isAsync && this.next(), this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, !1, isAsync);
  } else if (this.type === types$1._class) {
    var cNode = this.startNode();
    return this.parseClass(cNode, "nullableID");
  } else {
    var declaration = this.parseMaybeAssign();
    return this.semicolon(), declaration;
  }
};
pp$8.checkExport = function(exports, name2, pos) {
  exports && (typeof name2 != "string" && (name2 = name2.type === "Identifier" ? name2.name : name2.value), hasOwn(exports, name2) && this.raiseRecoverable(pos, "Duplicate export '" + name2 + "'"), exports[name2] = !0);
};
pp$8.checkPatternExport = function(exports, pat) {
  var type = pat.type;
  if (type === "Identifier")
    this.checkExport(exports, pat, pat.start);
  else if (type === "ObjectPattern")
    for (var i = 0, list3 = pat.properties; i < list3.length; i += 1) {
      var prop = list3[i];
      this.checkPatternExport(exports, prop);
    }
  else if (type === "ArrayPattern")
    for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {
      var elt = list$1[i$1];
      elt && this.checkPatternExport(exports, elt);
    }
  else type === "Property" ? this.checkPatternExport(exports, pat.value) : type === "AssignmentPattern" ? this.checkPatternExport(exports, pat.left) : type === "RestElement" && this.checkPatternExport(exports, pat.argument);
};
pp$8.checkVariableExport = function(exports, decls) {
  if (exports)
    for (var i = 0, list3 = decls; i < list3.length; i += 1) {
      var decl = list3[i];
      this.checkPatternExport(exports, decl.id);
    }
};
pp$8.shouldParseExportStatement = function() {
  return this.type.keyword === "var" || this.type.keyword === "const" || this.type.keyword === "class" || this.type.keyword === "function" || this.isLet() || this.isAsyncFunction();
};
pp$8.parseExportSpecifier = function(exports) {
  var node2 = this.startNode();
  return node2.local = this.parseModuleExportName(), node2.exported = this.eatContextual("as") ? this.parseModuleExportName() : node2.local, this.checkExport(
    exports,
    node2.exported,
    node2.exported.start
  ), this.finishNode(node2, "ExportSpecifier");
};
pp$8.parseExportSpecifiers = function(exports) {
  var nodes = [], first = !0;
  for (this.expect(types$1.braceL); !this.eat(types$1.braceR); ) {
    if (first)
      first = !1;
    else if (this.expect(types$1.comma), this.afterTrailingComma(types$1.braceR))
      break;
    nodes.push(this.parseExportSpecifier(exports));
  }
  return nodes;
};
pp$8.parseImport = function(node2) {
  return this.next(), this.type === types$1.string ? (node2.specifiers = empty$1, node2.source = this.parseExprAtom()) : (node2.specifiers = this.parseImportSpecifiers(), this.expectContextual("from"), node2.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected()), this.options.ecmaVersion >= 16 && (node2.attributes = this.parseWithClause()), this.semicolon(), this.finishNode(node2, "ImportDeclaration");
};
pp$8.parseImportSpecifier = function() {
  var node2 = this.startNode();
  return node2.imported = this.parseModuleExportName(), this.eatContextual("as") ? node2.local = this.parseIdent() : (this.checkUnreserved(node2.imported), node2.local = node2.imported), this.checkLValSimple(node2.local, BIND_LEXICAL), this.finishNode(node2, "ImportSpecifier");
};
pp$8.parseImportDefaultSpecifier = function() {
  var node2 = this.startNode();
  return node2.local = this.parseIdent(), this.checkLValSimple(node2.local, BIND_LEXICAL), this.finishNode(node2, "ImportDefaultSpecifier");
};
pp$8.parseImportNamespaceSpecifier = function() {
  var node2 = this.startNode();
  return this.next(), this.expectContextual("as"), node2.local = this.parseIdent(), this.checkLValSimple(node2.local, BIND_LEXICAL), this.finishNode(node2, "ImportNamespaceSpecifier");
};
pp$8.parseImportSpecifiers = function() {
  var nodes = [], first = !0;
  if (this.type === types$1.name && (nodes.push(this.parseImportDefaultSpecifier()), !this.eat(types$1.comma)))
    return nodes;
  if (this.type === types$1.star)
    return nodes.push(this.parseImportNamespaceSpecifier()), nodes;
  for (this.expect(types$1.braceL); !this.eat(types$1.braceR); ) {
    if (first)
      first = !1;
    else if (this.expect(types$1.comma), this.afterTrailingComma(types$1.braceR))
      break;
    nodes.push(this.parseImportSpecifier());
  }
  return nodes;
};
pp$8.parseWithClause = function() {
  var nodes = [];
  if (!this.eat(types$1._with))
    return nodes;
  this.expect(types$1.braceL);
  for (var attributeKeys = {}, first = !0; !this.eat(types$1.braceR); ) {
    if (first)
      first = !1;
    else if (this.expect(types$1.comma), this.afterTrailingComma(types$1.braceR))
      break;
    var attr = this.parseImportAttribute(), keyName = attr.key.type === "Identifier" ? attr.key.name : attr.key.value;
    hasOwn(attributeKeys, keyName) && this.raiseRecoverable(attr.key.start, "Duplicate attribute key '" + keyName + "'"), attributeKeys[keyName] = !0, nodes.push(attr);
  }
  return nodes;
};
pp$8.parseImportAttribute = function() {
  var node2 = this.startNode();
  return node2.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never"), this.expect(types$1.colon), this.type !== types$1.string && this.unexpected(), node2.value = this.parseExprAtom(), this.finishNode(node2, "ImportAttribute");
};
pp$8.parseModuleExportName = function() {
  if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {
    var stringLiteral = this.parseLiteral(this.value);
    return loneSurrogate.test(stringLiteral.value) && this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."), stringLiteral;
  }
  return this.parseIdent(!0);
};
pp$8.adaptDirectivePrologue = function(statements) {
  for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i)
    statements[i].directive = statements[i].expression.raw.slice(1, -1);
};
pp$8.isDirectiveCandidate = function(statement) {
  return this.options.ecmaVersion >= 5 && statement.type === "ExpressionStatement" && statement.expression.type === "Literal" && typeof statement.expression.value == "string" && // Reject parenthesized strings.
  (this.input[statement.start] === '"' || this.input[statement.start] === "'");
};
var pp$7 = Parser.prototype;
pp$7.toAssignable = function(node2, isBinding, refDestructuringErrors) {
  if (this.options.ecmaVersion >= 6 && node2)
    switch (node2.type) {
      case "Identifier":
        this.inAsync && node2.name === "await" && this.raise(node2.start, "Cannot use 'await' as identifier inside an async function");
        break;
      case "ObjectPattern":
      case "ArrayPattern":
      case "AssignmentPattern":
      case "RestElement":
        break;
      case "ObjectExpression":
        node2.type = "ObjectPattern", refDestructuringErrors && this.checkPatternErrors(refDestructuringErrors, !0);
        for (var i = 0, list3 = node2.properties; i < list3.length; i += 1) {
          var prop = list3[i];
          this.toAssignable(prop, isBinding), prop.type === "RestElement" && (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") && this.raise(prop.argument.start, "Unexpected token");
        }
        break;
      case "Property":
        node2.kind !== "init" && this.raise(node2.key.start, "Object pattern can't contain getter or setter"), this.toAssignable(node2.value, isBinding);
        break;
      case "ArrayExpression":
        node2.type = "ArrayPattern", refDestructuringErrors && this.checkPatternErrors(refDestructuringErrors, !0), this.toAssignableList(node2.elements, isBinding);
        break;
      case "SpreadElement":
        node2.type = "RestElement", this.toAssignable(node2.argument, isBinding), node2.argument.type === "AssignmentPattern" && this.raise(node2.argument.start, "Rest elements cannot have a default value");
        break;
      case "AssignmentExpression":
        node2.operator !== "=" && this.raise(node2.left.end, "Only '=' operator can be used for specifying default value."), node2.type = "AssignmentPattern", delete node2.operator, this.toAssignable(node2.left, isBinding);
        break;
      case "ParenthesizedExpression":
        this.toAssignable(node2.expression, isBinding, refDestructuringErrors);
        break;
      case "ChainExpression":
        this.raiseRecoverable(node2.start, "Optional chaining cannot appear in left-hand side");
        break;
      case "MemberExpression":
        if (!isBinding)
          break;
      default:
        this.raise(node2.start, "Assigning to rvalue");
    }
  else refDestructuringErrors && this.checkPatternErrors(refDestructuringErrors, !0);
  return node2;
};
pp$7.toAssignableList = function(exprList, isBinding) {
  for (var end = exprList.length, i = 0; i < end; i++) {
    var elt = exprList[i];
    elt && this.toAssignable(elt, isBinding);
  }
  if (end) {
    var last = exprList[end - 1];
    this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier" && this.unexpected(last.argument.start);
  }
  return exprList;
};
pp$7.parseSpread = function(refDestructuringErrors) {
  var node2 = this.startNode();
  return this.next(), node2.argument = this.parseMaybeAssign(!1, refDestructuringErrors), this.finishNode(node2, "SpreadElement");
};
pp$7.parseRestBinding = function() {
  var node2 = this.startNode();
  return this.next(), this.options.ecmaVersion === 6 && this.type !== types$1.name && this.unexpected(), node2.argument = this.parseBindingAtom(), this.finishNode(node2, "RestElement");
};
pp$7.parseBindingAtom = function() {
  if (this.options.ecmaVersion >= 6)
    switch (this.type) {
      case types$1.bracketL:
        var node2 = this.startNode();
        return this.next(), node2.elements = this.parseBindingList(types$1.bracketR, !0, !0), this.finishNode(node2, "ArrayPattern");
      case types$1.braceL:
        return this.parseObj(!0);
    }
  return this.parseIdent();
};
pp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {
  for (var elts = [], first = !0; !this.eat(close); )
    if (first ? first = !1 : this.expect(types$1.comma), allowEmpty && this.type === types$1.comma)
      elts.push(null);
    else {
      if (allowTrailingComma && this.afterTrailingComma(close))
        break;
      if (this.type === types$1.ellipsis) {
        var rest = this.parseRestBinding();
        this.parseBindingListItem(rest), elts.push(rest), this.type === types$1.comma && this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"), this.expect(close);
        break;
      } else
        elts.push(this.parseAssignableListItem(allowModifiers));
    }
  return elts;
};
pp$7.parseAssignableListItem = function(allowModifiers) {
  var elem = this.parseMaybeDefault(this.start, this.startLoc);
  return this.parseBindingListItem(elem), elem;
};
pp$7.parseBindingListItem = function(param) {
  return param;
};
pp$7.parseMaybeDefault = function(startPos, startLoc, left) {
  if (left = left || this.parseBindingAtom(), this.options.ecmaVersion < 6 || !this.eat(types$1.eq))
    return left;
  var node2 = this.startNodeAt(startPos, startLoc);
  return node2.left = left, node2.right = this.parseMaybeAssign(), this.finishNode(node2, "AssignmentPattern");
};
pp$7.checkLValSimple = function(expr, bindingType, checkClashes) {
  bindingType === void 0 && (bindingType = BIND_NONE);
  var isBind = bindingType !== BIND_NONE;
  switch (expr.type) {
    case "Identifier":
      this.strict && this.reservedWordsStrictBind.test(expr.name) && this.raiseRecoverable(expr.start, (isBind ? "Binding " : "Assigning to ") + expr.name + " in strict mode"), isBind && (bindingType === BIND_LEXICAL && expr.name === "let" && this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"), checkClashes && (hasOwn(checkClashes, expr.name) && this.raiseRecoverable(expr.start, "Argument name clash"), checkClashes[expr.name] = !0), bindingType !== BIND_OUTSIDE && this.declareName(expr.name, bindingType, expr.start));
      break;
    case "ChainExpression":
      this.raiseRecoverable(expr.start, "Optional chaining cannot appear in left-hand side");
      break;
    case "MemberExpression":
      isBind && this.raiseRecoverable(expr.start, "Binding member expression");
      break;
    case "ParenthesizedExpression":
      return isBind && this.raiseRecoverable(expr.start, "Binding parenthesized expression"), this.checkLValSimple(expr.expression, bindingType, checkClashes);
    default:
      this.raise(expr.start, (isBind ? "Binding" : "Assigning to") + " rvalue");
  }
};
pp$7.checkLValPattern = function(expr, bindingType, checkClashes) {
  switch (bindingType === void 0 && (bindingType = BIND_NONE), expr.type) {
    case "ObjectPattern":
      for (var i = 0, list3 = expr.properties; i < list3.length; i += 1) {
        var prop = list3[i];
        this.checkLValInnerPattern(prop, bindingType, checkClashes);
      }
      break;
    case "ArrayPattern":
      for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {
        var elem = list$1[i$1];
        elem && this.checkLValInnerPattern(elem, bindingType, checkClashes);
      }
      break;
    default:
      this.checkLValSimple(expr, bindingType, checkClashes);
  }
};
pp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {
  switch (bindingType === void 0 && (bindingType = BIND_NONE), expr.type) {
    case "Property":
      this.checkLValInnerPattern(expr.value, bindingType, checkClashes);
      break;
    case "AssignmentPattern":
      this.checkLValPattern(expr.left, bindingType, checkClashes);
      break;
    case "RestElement":
      this.checkLValPattern(expr.argument, bindingType, checkClashes);
      break;
    default:
      this.checkLValPattern(expr, bindingType, checkClashes);
  }
};
var TokContext = function(token, isExpr, preserveSpace, override, generator) {
  this.token = token, this.isExpr = !!isExpr, this.preserveSpace = !!preserveSpace, this.override = override, this.generator = !!generator;
}, types = {
  b_stat: new TokContext("{", !1),
  b_expr: new TokContext("{", !0),
  b_tmpl: new TokContext("${", !1),
  p_stat: new TokContext("(", !1),
  p_expr: new TokContext("(", !0),
  q_tmpl: new TokContext("`", !0, !0, function(p) {
    return p.tryReadTemplateToken();
  }),
  f_stat: new TokContext("function", !1),
  f_expr: new TokContext("function", !0),
  f_expr_gen: new TokContext("function", !0, !1, null, !0),
  f_gen: new TokContext("function", !1, !1, null, !0)
}, pp$6 = Parser.prototype;
pp$6.initialContext = function() {
  return [types.b_stat];
};
pp$6.curContext = function() {
  return this.context[this.context.length - 1];
};
pp$6.braceIsBlock = function(prevType) {
  var parent = this.curContext();
  return parent === types.f_expr || parent === types.f_stat ? !0 : prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr) ? !parent.isExpr : prevType === types$1._return || prevType === types$1.name && this.exprAllowed ? lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) : prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow ? !0 : prevType === types$1.braceL ? parent === types.b_stat : prevType === types$1._var || prevType === types$1._const || prevType === types$1.name ? !1 : !this.exprAllowed;
};
pp$6.inGeneratorContext = function() {
  for (var i = this.context.length - 1; i >= 1; i--) {
    var context = this.context[i];
    if (context.token === "function")
      return context.generator;
  }
  return !1;
};
pp$6.updateContext = function(prevType) {
  var update, type = this.type;
  type.keyword && prevType === types$1.dot ? this.exprAllowed = !1 : (update = type.updateContext) ? update.call(this, prevType) : this.exprAllowed = type.beforeExpr;
};
pp$6.overrideContext = function(tokenCtx) {
  this.curContext() !== tokenCtx && (this.context[this.context.length - 1] = tokenCtx);
};
types$1.parenR.updateContext = types$1.braceR.updateContext = function() {
  if (this.context.length === 1) {
    this.exprAllowed = !0;
    return;
  }
  var out = this.context.pop();
  out === types.b_stat && this.curContext().token === "function" && (out = this.context.pop()), this.exprAllowed = !out.isExpr;
};
types$1.braceL.updateContext = function(prevType) {
  this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr), this.exprAllowed = !0;
};
types$1.dollarBraceL.updateContext = function() {
  this.context.push(types.b_tmpl), this.exprAllowed = !0;
};
types$1.parenL.updateContext = function(prevType) {
  var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;
  this.context.push(statementParens ? types.p_stat : types.p_expr), this.exprAllowed = !0;
};
types$1.incDec.updateContext = function() {
};
types$1._function.updateContext = types$1._class.updateContext = function(prevType) {
  prevType.beforeExpr && prevType !== types$1._else && !(prevType === types$1.semi && this.curContext() !== types.p_stat) && !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat) ? this.context.push(types.f_expr) : this.context.push(types.f_stat), this.exprAllowed = !1;
};
types$1.colon.updateContext = function() {
  this.curContext().token === "function" && this.context.pop(), this.exprAllowed = !0;
};
types$1.backQuote.updateContext = function() {
  this.curContext() === types.q_tmpl ? this.context.pop() : this.context.push(types.q_tmpl), this.exprAllowed = !1;
};
types$1.star.updateContext = function(prevType) {
  if (prevType === types$1._function) {
    var index2 = this.context.length - 1;
    this.context[index2] === types.f_expr ? this.context[index2] = types.f_expr_gen : this.context[index2] = types.f_gen;
  }
  this.exprAllowed = !0;
};
types$1.name.updateContext = function(prevType) {
  var allowed = !1;
  this.options.ecmaVersion >= 6 && prevType !== types$1.dot && (this.value === "of" && !this.exprAllowed || this.value === "yield" && this.inGeneratorContext()) && (allowed = !0), this.exprAllowed = allowed;
};
var pp$5 = Parser.prototype;
pp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {
  if (!(this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") && !(this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))) {
    var key2 = prop.key, name2;
    switch (key2.type) {
      case "Identifier":
        name2 = key2.name;
        break;
      case "Literal":
        name2 = String(key2.value);
        break;
      default:
        return;
    }
    var kind = prop.kind;
    if (this.options.ecmaVersion >= 6) {
      name2 === "__proto__" && kind === "init" && (propHash.proto && (refDestructuringErrors ? refDestructuringErrors.doubleProto < 0 && (refDestructuringErrors.doubleProto = key2.start) : this.raiseRecoverable(key2.start, "Redefinition of __proto__ property")), propHash.proto = !0);
      return;
    }
    name2 = "$" + name2;
    var other = propHash[name2];
    if (other) {
      var redefinition;
      kind === "init" ? redefinition = this.strict && other.init || other.get || other.set : redefinition = other.init || other[kind], redefinition && this.raiseRecoverable(key2.start, "Redefinition of property");
    } else
      other = propHash[name2] = {
        init: !1,
        get: !1,
        set: !1
      };
    other[kind] = !0;
  }
};
pp$5.parseExpression = function(forInit, refDestructuringErrors) {
  var startPos = this.start, startLoc = this.startLoc, expr = this.parseMaybeAssign(forInit, refDestructuringErrors);
  if (this.type === types$1.comma) {
    var node2 = this.startNodeAt(startPos, startLoc);
    for (node2.expressions = [expr]; this.eat(types$1.comma); )
      node2.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors));
    return this.finishNode(node2, "SequenceExpression");
  }
  return expr;
};
pp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {
  if (this.isContextual("yield")) {
    if (this.inGenerator)
      return this.parseYield(forInit);
    this.exprAllowed = !1;
  }
  var ownDestructuringErrors = !1, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;
  refDestructuringErrors ? (oldParenAssign = refDestructuringErrors.parenthesizedAssign, oldTrailingComma = refDestructuringErrors.trailingComma, oldDoubleProto = refDestructuringErrors.doubleProto, refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1) : (refDestructuringErrors = new DestructuringErrors(), ownDestructuringErrors = !0);
  var startPos = this.start, startLoc = this.startLoc;
  (this.type === types$1.parenL || this.type === types$1.name) && (this.potentialArrowAt = this.start, this.potentialArrowInForAwait = forInit === "await");
  var left = this.parseMaybeConditional(forInit, refDestructuringErrors);
  if (afterLeftParse && (left = afterLeftParse.call(this, left, startPos, startLoc)), this.type.isAssign) {
    var node2 = this.startNodeAt(startPos, startLoc);
    return node2.operator = this.value, this.type === types$1.eq && (left = this.toAssignable(left, !1, refDestructuringErrors)), ownDestructuringErrors || (refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1), refDestructuringErrors.shorthandAssign >= left.start && (refDestructuringErrors.shorthandAssign = -1), this.type === types$1.eq ? this.checkLValPattern(left) : this.checkLValSimple(left), node2.left = left, this.next(), node2.right = this.parseMaybeAssign(forInit), oldDoubleProto > -1 && (refDestructuringErrors.doubleProto = oldDoubleProto), this.finishNode(node2, "AssignmentExpression");
  } else
    ownDestructuringErrors && this.checkExpressionErrors(refDestructuringErrors, !0);
  return oldParenAssign > -1 && (refDestructuringErrors.parenthesizedAssign = oldParenAssign), oldTrailingComma > -1 && (refDestructuringErrors.trailingComma = oldTrailingComma), left;
};
pp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {
  var startPos = this.start, startLoc = this.startLoc, expr = this.parseExprOps(forInit, refDestructuringErrors);
  if (this.checkExpressionErrors(refDestructuringErrors))
    return expr;
  if (this.eat(types$1.question)) {
    var node2 = this.startNodeAt(startPos, startLoc);
    return node2.test = expr, node2.consequent = this.parseMaybeAssign(), this.expect(types$1.colon), node2.alternate = this.parseMaybeAssign(forInit), this.finishNode(node2, "ConditionalExpression");
  }
  return expr;
};
pp$5.parseExprOps = function(forInit, refDestructuringErrors) {
  var startPos = this.start, startLoc = this.startLoc, expr = this.parseMaybeUnary(refDestructuringErrors, !1, !1, forInit);
  return this.checkExpressionErrors(refDestructuringErrors) || expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit);
};
pp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {
  var prec = this.type.binop;
  if (prec != null && (!forInit || this.type !== types$1._in) && prec > minPrec) {
    var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND, coalesce = this.type === types$1.coalesce;
    coalesce && (prec = types$1.logicalAND.binop);
    var op = this.value;
    this.next();
    var startPos = this.start, startLoc = this.startLoc, right = this.parseExprOp(this.parseMaybeUnary(null, !1, !1, forInit), startPos, startLoc, prec, forInit), node2 = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);
    return (logical && this.type === types$1.coalesce || coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND)) && this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"), this.parseExprOp(node2, leftStartPos, leftStartLoc, minPrec, forInit);
  }
  return left;
};
pp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {
  right.type === "PrivateIdentifier" && this.raise(right.start, "Private identifier can only be left side of binary expression");
  var node2 = this.startNodeAt(startPos, startLoc);
  return node2.left = left, node2.operator = op, node2.right = right, this.finishNode(node2, logical ? "LogicalExpression" : "BinaryExpression");
};
pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {
  var startPos = this.start, startLoc = this.startLoc, expr;
  if (this.isContextual("await") && this.canAwait)
    expr = this.parseAwait(forInit), sawUnary = !0;
  else if (this.type.prefix) {
    var node2 = this.startNode(), update = this.type === types$1.incDec;
    node2.operator = this.value, node2.prefix = !0, this.next(), node2.argument = this.parseMaybeUnary(null, !0, update, forInit), this.checkExpressionErrors(refDestructuringErrors, !0), update ? this.checkLValSimple(node2.argument) : this.strict && node2.operator === "delete" && isLocalVariableAccess(node2.argument) ? this.raiseRecoverable(node2.start, "Deleting local variable in strict mode") : node2.operator === "delete" && isPrivateFieldAccess(node2.argument) ? this.raiseRecoverable(node2.start, "Private fields can not be deleted") : sawUnary = !0, expr = this.finishNode(node2, update ? "UpdateExpression" : "UnaryExpression");
  } else if (!sawUnary && this.type === types$1.privateId)
    (forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields && this.unexpected(), expr = this.parsePrivateIdent(), this.type !== types$1._in && this.unexpected();
  else {
    if (expr = this.parseExprSubscripts(refDestructuringErrors, forInit), this.checkExpressionErrors(refDestructuringErrors))
      return expr;
    for (; this.type.postfix && !this.canInsertSemicolon(); ) {
      var node$1 = this.startNodeAt(startPos, startLoc);
      node$1.operator = this.value, node$1.prefix = !1, node$1.argument = expr, this.checkLValSimple(expr), this.next(), expr = this.finishNode(node$1, "UpdateExpression");
    }
  }
  if (!incDec && this.eat(types$1.starstar))
    if (sawUnary)
      this.unexpected(this.lastTokStart);
    else
      return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, !1, !1, forInit), "**", !1);
  else
    return expr;
};
function isLocalVariableAccess(node2) {
  return node2.type === "Identifier" || node2.type === "ParenthesizedExpression" && isLocalVariableAccess(node2.expression);
}
function isPrivateFieldAccess(node2) {
  return node2.type === "MemberExpression" && node2.property.type === "PrivateIdentifier" || node2.type === "ChainExpression" && isPrivateFieldAccess(node2.expression) || node2.type === "ParenthesizedExpression" && isPrivateFieldAccess(node2.expression);
}
pp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {
  var startPos = this.start, startLoc = this.startLoc, expr = this.parseExprAtom(refDestructuringErrors, forInit);
  if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")")
    return expr;
  var result = this.parseSubscripts(expr, startPos, startLoc, !1, forInit);
  return refDestructuringErrors && result.type === "MemberExpression" && (refDestructuringErrors.parenthesizedAssign >= result.start && (refDestructuringErrors.parenthesizedAssign = -1), refDestructuringErrors.parenthesizedBind >= result.start && (refDestructuringErrors.parenthesizedBind = -1), refDestructuringErrors.trailingComma >= result.start && (refDestructuringErrors.trailingComma = -1)), result;
};
pp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {
  for (var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.potentialArrowAt === base.start, optionalChained = !1; ; ) {
    var element2 = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);
    if (element2.optional && (optionalChained = !0), element2 === base || element2.type === "ArrowFunctionExpression") {
      if (optionalChained) {
        var chainNode = this.startNodeAt(startPos, startLoc);
        chainNode.expression = element2, element2 = this.finishNode(chainNode, "ChainExpression");
      }
      return element2;
    }
    base = element2;
  }
};
pp$5.shouldParseAsyncArrow = function() {
  return !this.canInsertSemicolon() && this.eat(types$1.arrow);
};
pp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {
  return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, !0, forInit);
};
pp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {
  var optionalSupported = this.options.ecmaVersion >= 11, optional = optionalSupported && this.eat(types$1.questionDot);
  noCalls && optional && this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions");
  var computed = this.eat(types$1.bracketL);
  if (computed || optional && this.type !== types$1.parenL && this.type !== types$1.backQuote || this.eat(types$1.dot)) {
    var node2 = this.startNodeAt(startPos, startLoc);
    node2.object = base, computed ? (node2.property = this.parseExpression(), this.expect(types$1.bracketR)) : this.type === types$1.privateId && base.type !== "Super" ? node2.property = this.parsePrivateIdent() : node2.property = this.parseIdent(this.options.allowReserved !== "never"), node2.computed = !!computed, optionalSupported && (node2.optional = optional), base = this.finishNode(node2, "MemberExpression");
  } else if (!noCalls && this.eat(types$1.parenL)) {
    var refDestructuringErrors = new DestructuringErrors(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
    this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0;
    var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, !1, refDestructuringErrors);
    if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow())
      return this.checkPatternErrors(refDestructuringErrors, !1), this.checkYieldAwaitInDefaultParams(), this.awaitIdentPos > 0 && this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit);
    this.checkExpressionErrors(refDestructuringErrors, !0), this.yieldPos = oldYieldPos || this.yieldPos, this.awaitPos = oldAwaitPos || this.awaitPos, this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;
    var node$1 = this.startNodeAt(startPos, startLoc);
    node$1.callee = base, node$1.arguments = exprList, optionalSupported && (node$1.optional = optional), base = this.finishNode(node$1, "CallExpression");
  } else if (this.type === types$1.backQuote) {
    (optional || optionalChained) && this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions");
    var node$2 = this.startNodeAt(startPos, startLoc);
    node$2.tag = base, node$2.quasi = this.parseTemplate({ isTagged: !0 }), base = this.finishNode(node$2, "TaggedTemplateExpression");
  }
  return base;
};
pp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {
  this.type === types$1.slash && this.readRegexp();
  var node2, canBeArrow = this.potentialArrowAt === this.start;
  switch (this.type) {
    case types$1._super:
      return this.allowSuper || this.raise(this.start, "'super' keyword outside a method"), node2 = this.startNode(), this.next(), this.type === types$1.parenL && !this.allowDirectSuper && this.raise(node2.start, "super() call outside constructor of a subclass"), this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL && this.unexpected(), this.finishNode(node2, "Super");
    case types$1._this:
      return node2 = this.startNode(), this.next(), this.finishNode(node2, "ThisExpression");
    case types$1.name:
      var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc, id = this.parseIdent(!1);
      if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types$1._function))
        return this.overrideContext(types.f_expr), this.parseFunction(this.startNodeAt(startPos, startLoc), 0, !1, !0, forInit);
      if (canBeArrow && !this.canInsertSemicolon()) {
        if (this.eat(types$1.arrow))
          return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], !1, forInit);
        if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types$1.name && !containsEsc && (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc))
          return id = this.parseIdent(!1), (this.canInsertSemicolon() || !this.eat(types$1.arrow)) && this.unexpected(), this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], !0, forInit);
      }
      return id;
    case types$1.regexp:
      var value = this.value;
      return node2 = this.parseLiteral(value.value), node2.regex = { pattern: value.pattern, flags: value.flags }, node2;
    case types$1.num:
    case types$1.string:
      return this.parseLiteral(this.value);
    case types$1._null:
    case types$1._true:
    case types$1._false:
      return node2 = this.startNode(), node2.value = this.type === types$1._null ? null : this.type === types$1._true, node2.raw = this.type.keyword, this.next(), this.finishNode(node2, "Literal");
    case types$1.parenL:
      var start2 = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);
      return refDestructuringErrors && (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr) && (refDestructuringErrors.parenthesizedAssign = start2), refDestructuringErrors.parenthesizedBind < 0 && (refDestructuringErrors.parenthesizedBind = start2)), expr;
    case types$1.bracketL:
      return node2 = this.startNode(), this.next(), node2.elements = this.parseExprList(types$1.bracketR, !0, !0, refDestructuringErrors), this.finishNode(node2, "ArrayExpression");
    case types$1.braceL:
      return this.overrideContext(types.b_expr), this.parseObj(!1, refDestructuringErrors);
    case types$1._function:
      return node2 = this.startNode(), this.next(), this.parseFunction(node2, 0);
    case types$1._class:
      return this.parseClass(this.startNode(), !1);
    case types$1._new:
      return this.parseNew();
    case types$1.backQuote:
      return this.parseTemplate();
    case types$1._import:
      return this.options.ecmaVersion >= 11 ? this.parseExprImport(forNew) : this.unexpected();
    default:
      return this.parseExprAtomDefault();
  }
};
pp$5.parseExprAtomDefault = function() {
  this.unexpected();
};
pp$5.parseExprImport = function(forNew) {
  var node2 = this.startNode();
  if (this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword import"), this.next(), this.type === types$1.parenL && !forNew)
    return this.parseDynamicImport(node2);
  if (this.type === types$1.dot) {
    var meta = this.startNodeAt(node2.start, node2.loc && node2.loc.start);
    return meta.name = "import", node2.meta = this.finishNode(meta, "Identifier"), this.parseImportMeta(node2);
  } else
    this.unexpected();
};
pp$5.parseDynamicImport = function(node2) {
  if (this.next(), node2.source = this.parseMaybeAssign(), this.options.ecmaVersion >= 16)
    this.eat(types$1.parenR) ? node2.options = null : (this.expect(types$1.comma), this.afterTrailingComma(types$1.parenR) ? node2.options = null : (node2.options = this.parseMaybeAssign(), this.eat(types$1.parenR) || (this.expect(types$1.comma), this.afterTrailingComma(types$1.parenR) || this.unexpected())));
  else if (!this.eat(types$1.parenR)) {
    var errorPos = this.start;
    this.eat(types$1.comma) && this.eat(types$1.parenR) ? this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()") : this.unexpected(errorPos);
  }
  return this.finishNode(node2, "ImportExpression");
};
pp$5.parseImportMeta = function(node2) {
  this.next();
  var containsEsc = this.containsEsc;
  return node2.property = this.parseIdent(!0), node2.property.name !== "meta" && this.raiseRecoverable(node2.property.start, "The only valid meta property for import is 'import.meta'"), containsEsc && this.raiseRecoverable(node2.start, "'import.meta' must not contain escaped characters"), this.options.sourceType !== "module" && !this.options.allowImportExportEverywhere && this.raiseRecoverable(node2.start, "Cannot use 'import.meta' outside a module"), this.finishNode(node2, "MetaProperty");
};
pp$5.parseLiteral = function(value) {
  var node2 = this.startNode();
  return node2.value = value, node2.raw = this.input.slice(this.start, this.end), node2.raw.charCodeAt(node2.raw.length - 1) === 110 && (node2.bigint = node2.value != null ? node2.value.toString() : node2.raw.slice(0, -1).replace(/_/g, "")), this.next(), this.finishNode(node2, "Literal");
};
pp$5.parseParenExpression = function() {
  this.expect(types$1.parenL);
  var val = this.parseExpression();
  return this.expect(types$1.parenR), val;
};
pp$5.shouldParseArrow = function(exprList) {
  return !this.canInsertSemicolon();
};
pp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {
  var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;
  if (this.options.ecmaVersion >= 6) {
    this.next();
    var innerStartPos = this.start, innerStartLoc = this.startLoc, exprList = [], first = !0, lastIsComma = !1, refDestructuringErrors = new DestructuringErrors(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;
    for (this.yieldPos = 0, this.awaitPos = 0; this.type !== types$1.parenR; )
      if (first ? first = !1 : this.expect(types$1.comma), allowTrailingComma && this.afterTrailingComma(types$1.parenR, !0)) {
        lastIsComma = !0;
        break;
      } else if (this.type === types$1.ellipsis) {
        spreadStart = this.start, exprList.push(this.parseParenItem(this.parseRestBinding())), this.type === types$1.comma && this.raiseRecoverable(
          this.start,
          "Comma is not permitted after the rest element"
        );
        break;
      } else
        exprList.push(this.parseMaybeAssign(!1, refDestructuringErrors, this.parseParenItem));
    var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;
    if (this.expect(types$1.parenR), canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow))
      return this.checkPatternErrors(refDestructuringErrors, !1), this.checkYieldAwaitInDefaultParams(), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.parseParenArrowList(startPos, startLoc, exprList, forInit);
    (!exprList.length || lastIsComma) && this.unexpected(this.lastTokStart), spreadStart && this.unexpected(spreadStart), this.checkExpressionErrors(refDestructuringErrors, !0), this.yieldPos = oldYieldPos || this.yieldPos, this.awaitPos = oldAwaitPos || this.awaitPos, exprList.length > 1 ? (val = this.startNodeAt(innerStartPos, innerStartLoc), val.expressions = exprList, this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc)) : val = exprList[0];
  } else
    val = this.parseParenExpression();
  if (this.options.preserveParens) {
    var par = this.startNodeAt(startPos, startLoc);
    return par.expression = val, this.finishNode(par, "ParenthesizedExpression");
  } else
    return val;
};
pp$5.parseParenItem = function(item) {
  return item;
};
pp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {
  return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, !1, forInit);
};
var empty2 = [];
pp$5.parseNew = function() {
  this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword new");
  var node2 = this.startNode();
  if (this.next(), this.options.ecmaVersion >= 6 && this.type === types$1.dot) {
    var meta = this.startNodeAt(node2.start, node2.loc && node2.loc.start);
    meta.name = "new", node2.meta = this.finishNode(meta, "Identifier"), this.next();
    var containsEsc = this.containsEsc;
    return node2.property = this.parseIdent(!0), node2.property.name !== "target" && this.raiseRecoverable(node2.property.start, "The only valid meta property for new is 'new.target'"), containsEsc && this.raiseRecoverable(node2.start, "'new.target' must not contain escaped characters"), this.allowNewDotTarget || this.raiseRecoverable(node2.start, "'new.target' can only be used in functions and class static block"), this.finishNode(node2, "MetaProperty");
  }
  var startPos = this.start, startLoc = this.startLoc;
  return node2.callee = this.parseSubscripts(this.parseExprAtom(null, !1, !0), startPos, startLoc, !0, !1), this.eat(types$1.parenL) ? node2.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, !1) : node2.arguments = empty2, this.finishNode(node2, "NewExpression");
};
pp$5.parseTemplateElement = function(ref2) {
  var isTagged = ref2.isTagged, elem = this.startNode();
  return this.type === types$1.invalidTemplate ? (isTagged || this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"), elem.value = {
    raw: this.value.replace(/\r\n?/g, `
`),
    cooked: null
  }) : elem.value = {
    raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, `
`),
    cooked: this.value
  }, this.next(), elem.tail = this.type === types$1.backQuote, this.finishNode(elem, "TemplateElement");
};
pp$5.parseTemplate = function(ref2) {
  ref2 === void 0 && (ref2 = {});
  var isTagged = ref2.isTagged;
  isTagged === void 0 && (isTagged = !1);
  var node2 = this.startNode();
  this.next(), node2.expressions = [];
  var curElt = this.parseTemplateElement({ isTagged });
  for (node2.quasis = [curElt]; !curElt.tail; )
    this.type === types$1.eof && this.raise(this.pos, "Unterminated template literal"), this.expect(types$1.dollarBraceL), node2.expressions.push(this.parseExpression()), this.expect(types$1.braceR), node2.quasis.push(curElt = this.parseTemplateElement({ isTagged }));
  return this.next(), this.finishNode(node2, "TemplateLiteral");
};
pp$5.isAsyncProp = function(prop) {
  return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || this.options.ecmaVersion >= 9 && this.type === types$1.star) && !lineBreak.test(this.input.slice(this.lastTokEnd, this.start));
};
pp$5.parseObj = function(isPattern, refDestructuringErrors) {
  var node2 = this.startNode(), first = !0, propHash = {};
  for (node2.properties = [], this.next(); !this.eat(types$1.braceR); ) {
    if (first)
      first = !1;
    else if (this.expect(types$1.comma), this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR))
      break;
    var prop = this.parseProperty(isPattern, refDestructuringErrors);
    isPattern || this.checkPropClash(prop, propHash, refDestructuringErrors), node2.properties.push(prop);
  }
  return this.finishNode(node2, isPattern ? "ObjectPattern" : "ObjectExpression");
};
pp$5.parseProperty = function(isPattern, refDestructuringErrors) {
  var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;
  if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis))
    return isPattern ? (prop.argument = this.parseIdent(!1), this.type === types$1.comma && this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"), this.finishNode(prop, "RestElement")) : (prop.argument = this.parseMaybeAssign(!1, refDestructuringErrors), this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0 && (refDestructuringErrors.trailingComma = this.start), this.finishNode(prop, "SpreadElement"));
  this.options.ecmaVersion >= 6 && (prop.method = !1, prop.shorthand = !1, (isPattern || refDestructuringErrors) && (startPos = this.start, startLoc = this.startLoc), isPattern || (isGenerator = this.eat(types$1.star)));
  var containsEsc = this.containsEsc;
  return this.parsePropertyName(prop), !isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop) ? (isAsync = !0, isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star), this.parsePropertyName(prop)) : isAsync = !1, this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc), this.finishNode(prop, "Property");
};
pp$5.parseGetterSetter = function(prop) {
  var kind = prop.key.name;
  this.parsePropertyName(prop), prop.value = this.parseMethod(!1), prop.kind = kind;
  var paramCount = prop.kind === "get" ? 0 : 1;
  if (prop.value.params.length !== paramCount) {
    var start2 = prop.value.start;
    prop.kind === "get" ? this.raiseRecoverable(start2, "getter should have no params") : this.raiseRecoverable(start2, "setter should have exactly one param");
  } else
    prop.kind === "set" && prop.value.params[0].type === "RestElement" && this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params");
};
pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {
  (isGenerator || isAsync) && this.type === types$1.colon && this.unexpected(), this.eat(types$1.colon) ? (prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(!1, refDestructuringErrors), prop.kind = "init") : this.options.ecmaVersion >= 6 && this.type === types$1.parenL ? (isPattern && this.unexpected(), prop.method = !0, prop.value = this.parseMethod(isGenerator, isAsync), prop.kind = "init") : !isPattern && !containsEsc && this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq ? ((isGenerator || isAsync) && this.unexpected(), this.parseGetterSetter(prop)) : this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier" ? ((isGenerator || isAsync) && this.unexpected(), this.checkUnreserved(prop.key), prop.key.name === "await" && !this.awaitIdentPos && (this.awaitIdentPos = startPos), isPattern ? prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)) : this.type === types$1.eq && refDestructuringErrors ? (refDestructuringErrors.shorthandAssign < 0 && (refDestructuringErrors.shorthandAssign = this.start), prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key))) : prop.value = this.copyNode(prop.key), prop.kind = "init", prop.shorthand = !0) : this.unexpected();
};
pp$5.parsePropertyName = function(prop) {
  if (this.options.ecmaVersion >= 6) {
    if (this.eat(types$1.bracketL))
      return prop.computed = !0, prop.key = this.parseMaybeAssign(), this.expect(types$1.bracketR), prop.key;
    prop.computed = !1;
  }
  return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never");
};
pp$5.initFunction = function(node2) {
  node2.id = null, this.options.ecmaVersion >= 6 && (node2.generator = node2.expression = !1), this.options.ecmaVersion >= 8 && (node2.async = !1);
};
pp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {
  var node2 = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
  return this.initFunction(node2), this.options.ecmaVersion >= 6 && (node2.generator = isGenerator), this.options.ecmaVersion >= 8 && (node2.async = !!isAsync), this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, this.enterScope(functionFlags(isAsync, node2.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)), this.expect(types$1.parenL), node2.params = this.parseBindingList(types$1.parenR, !1, this.options.ecmaVersion >= 8), this.checkYieldAwaitInDefaultParams(), this.parseFunctionBody(node2, !1, !0, !1), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.finishNode(node2, "FunctionExpression");
};
pp$5.parseArrowExpression = function(node2, params, isAsync, forInit) {
  var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
  return this.enterScope(functionFlags(isAsync, !1) | SCOPE_ARROW), this.initFunction(node2), this.options.ecmaVersion >= 8 && (node2.async = !!isAsync), this.yieldPos = 0, this.awaitPos = 0, this.awaitIdentPos = 0, node2.params = this.toAssignableList(params, !0), this.parseFunctionBody(node2, !0, !1, forInit), this.yieldPos = oldYieldPos, this.awaitPos = oldAwaitPos, this.awaitIdentPos = oldAwaitIdentPos, this.finishNode(node2, "ArrowFunctionExpression");
};
pp$5.parseFunctionBody = function(node2, isArrowFunction, isMethod, forInit) {
  var isExpression = isArrowFunction && this.type !== types$1.braceL, oldStrict = this.strict, useStrict = !1;
  if (isExpression)
    node2.body = this.parseMaybeAssign(forInit), node2.expression = !0, this.checkParams(node2, !1);
  else {
    var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node2.params);
    (!oldStrict || nonSimple) && (useStrict = this.strictDirective(this.end), useStrict && nonSimple && this.raiseRecoverable(node2.start, "Illegal 'use strict' directive in function with non-simple parameter list"));
    var oldLabels = this.labels;
    this.labels = [], useStrict && (this.strict = !0), this.checkParams(node2, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node2.params)), this.strict && node2.id && this.checkLValSimple(node2.id, BIND_OUTSIDE), node2.body = this.parseBlock(!1, void 0, useStrict && !oldStrict), node2.expression = !1, this.adaptDirectivePrologue(node2.body.body), this.labels = oldLabels;
  }
  this.exitScope();
};
pp$5.isSimpleParamList = function(params) {
  for (var i = 0, list3 = params; i < list3.length; i += 1) {
    var param = list3[i];
    if (param.type !== "Identifier")
      return !1;
  }
  return !0;
};
pp$5.checkParams = function(node2, allowDuplicates) {
  for (var nameHash = /* @__PURE__ */ Object.create(null), i = 0, list3 = node2.params; i < list3.length; i += 1) {
    var param = list3[i];
    this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);
  }
};
pp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {
  for (var elts = [], first = !0; !this.eat(close); ) {
    if (first)
      first = !1;
    else if (this.expect(types$1.comma), allowTrailingComma && this.afterTrailingComma(close))
      break;
    var elt = void 0;
    allowEmpty && this.type === types$1.comma ? elt = null : this.type === types$1.ellipsis ? (elt = this.parseSpread(refDestructuringErrors), refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0 && (refDestructuringErrors.trailingComma = this.start)) : elt = this.parseMaybeAssign(!1, refDestructuringErrors), elts.push(elt);
  }
  return elts;
};
pp$5.checkUnreserved = function(ref2) {
  var start2 = ref2.start, end = ref2.end, name2 = ref2.name;
  if (this.inGenerator && name2 === "yield" && this.raiseRecoverable(start2, "Cannot use 'yield' as identifier inside a generator"), this.inAsync && name2 === "await" && this.raiseRecoverable(start2, "Cannot use 'await' as identifier inside an async function"), !(this.currentThisScope().flags & SCOPE_VAR) && name2 === "arguments" && this.raiseRecoverable(start2, "Cannot use 'arguments' in class field initializer"), this.inClassStaticBlock && (name2 === "arguments" || name2 === "await") && this.raise(start2, "Cannot use " + name2 + " in class static initialization block"), this.keywords.test(name2) && this.raise(start2, "Unexpected keyword '" + name2 + "'"), !(this.options.ecmaVersion < 6 && this.input.slice(start2, end).indexOf("\\") !== -1)) {
    var re2 = this.strict ? this.reservedWordsStrict : this.reservedWords;
    re2.test(name2) && (!this.inAsync && name2 === "await" && this.raiseRecoverable(start2, "Cannot use keyword 'await' outside an async function"), this.raiseRecoverable(start2, "The keyword '" + name2 + "' is reserved"));
  }
};
pp$5.parseIdent = function(liberal) {
  var node2 = this.parseIdentNode();
  return this.next(!!liberal), this.finishNode(node2, "Identifier"), liberal || (this.checkUnreserved(node2), node2.name === "await" && !this.awaitIdentPos && (this.awaitIdentPos = node2.start)), node2;
};
pp$5.parseIdentNode = function() {
  var node2 = this.startNode();
  return this.type === types$1.name ? node2.name = this.value : this.type.keyword ? (node2.name = this.type.keyword, (node2.name === "class" || node2.name === "function") && (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46) && this.context.pop(), this.type = types$1.name) : this.unexpected(), node2;
};
pp$5.parsePrivateIdent = function() {
  var node2 = this.startNode();
  return this.type === types$1.privateId ? node2.name = this.value : this.unexpected(), this.next(), this.finishNode(node2, "PrivateIdentifier"), this.options.checkPrivateFields && (this.privateNameStack.length === 0 ? this.raise(node2.start, "Private field '#" + node2.name + "' must be declared in an enclosing class") : this.privateNameStack[this.privateNameStack.length - 1].used.push(node2)), node2;
};
pp$5.parseYield = function(forInit) {
  this.yieldPos || (this.yieldPos = this.start);
  var node2 = this.startNode();
  return this.next(), this.type === types$1.semi || this.canInsertSemicolon() || this.type !== types$1.star && !this.type.startsExpr ? (node2.delegate = !1, node2.argument = null) : (node2.delegate = this.eat(types$1.star), node2.argument = this.parseMaybeAssign(forInit)), this.finishNode(node2, "YieldExpression");
};
pp$5.parseAwait = function(forInit) {
  this.awaitPos || (this.awaitPos = this.start);
  var node2 = this.startNode();
  return this.next(), node2.argument = this.parseMaybeUnary(null, !0, !1, forInit), this.finishNode(node2, "AwaitExpression");
};
var pp$4 = Parser.prototype;
pp$4.raise = function(pos, message) {
  var loc = getLineInfo(this.input, pos);
  message += " (" + loc.line + ":" + loc.column + ")", this.sourceFile && (message += " in " + this.sourceFile);
  var err = new SyntaxError(message);
  throw err.pos = pos, err.loc = loc, err.raisedAt = this.pos, err;
};
pp$4.raiseRecoverable = pp$4.raise;
pp$4.curPosition = function() {
  if (this.options.locations)
    return new Position(this.curLine, this.pos - this.lineStart);
};
var pp$3 = Parser.prototype, Scope = function(flags) {
  this.flags = flags, this.var = [], this.lexical = [], this.functions = [];
};
pp$3.enterScope = function(flags) {
  this.scopeStack.push(new Scope(flags));
};
pp$3.exitScope = function() {
  this.scopeStack.pop();
};
pp$3.treatFunctionsAsVarInScope = function(scope) {
  return scope.flags & SCOPE_FUNCTION || !this.inModule && scope.flags & SCOPE_TOP;
};
pp$3.declareName = function(name2, bindingType, pos) {
  var redeclared = !1;
  if (bindingType === BIND_LEXICAL) {
    var scope = this.currentScope();
    redeclared = scope.lexical.indexOf(name2) > -1 || scope.functions.indexOf(name2) > -1 || scope.var.indexOf(name2) > -1, scope.lexical.push(name2), this.inModule && scope.flags & SCOPE_TOP && delete this.undefinedExports[name2];
  } else if (bindingType === BIND_SIMPLE_CATCH) {
    var scope$1 = this.currentScope();
    scope$1.lexical.push(name2);
  } else if (bindingType === BIND_FUNCTION) {
    var scope$2 = this.currentScope();
    this.treatFunctionsAsVar ? redeclared = scope$2.lexical.indexOf(name2) > -1 : redeclared = scope$2.lexical.indexOf(name2) > -1 || scope$2.var.indexOf(name2) > -1, scope$2.functions.push(name2);
  } else
    for (var i = this.scopeStack.length - 1; i >= 0; --i) {
      var scope$3 = this.scopeStack[i];
      if (scope$3.lexical.indexOf(name2) > -1 && !(scope$3.flags & SCOPE_SIMPLE_CATCH && scope$3.lexical[0] === name2) || !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name2) > -1) {
        redeclared = !0;
        break;
      }
      if (scope$3.var.push(name2), this.inModule && scope$3.flags & SCOPE_TOP && delete this.undefinedExports[name2], scope$3.flags & SCOPE_VAR)
        break;
    }
  redeclared && this.raiseRecoverable(pos, "Identifier '" + name2 + "' has already been declared");
};
pp$3.checkLocalExport = function(id) {
  this.scopeStack[0].lexical.indexOf(id.name) === -1 && this.scopeStack[0].var.indexOf(id.name) === -1 && (this.undefinedExports[id.name] = id);
};
pp$3.currentScope = function() {
  return this.scopeStack[this.scopeStack.length - 1];
};
pp$3.currentVarScope = function() {
  for (var i = this.scopeStack.length - 1; ; i--) {
    var scope = this.scopeStack[i];
    if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK))
      return scope;
  }
};
pp$3.currentThisScope = function() {
  for (var i = this.scopeStack.length - 1; ; i--) {
    var scope = this.scopeStack[i];
    if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) && !(scope.flags & SCOPE_ARROW))
      return scope;
  }
};
var Node = function(parser, pos, loc) {
  this.type = "", this.start = pos, this.end = 0, parser.options.locations && (this.loc = new SourceLocation(parser, loc)), parser.options.directSourceFile && (this.sourceFile = parser.options.directSourceFile), parser.options.ranges && (this.range = [pos, 0]);
}, pp$2 = Parser.prototype;
pp$2.startNode = function() {
  return new Node(this, this.start, this.startLoc);
};
pp$2.startNodeAt = function(pos, loc) {
  return new Node(this, pos, loc);
};
function finishNodeAt(node2, type, pos, loc) {
  return node2.type = type, node2.end = pos, this.options.locations && (node2.loc.end = loc), this.options.ranges && (node2.range[1] = pos), node2;
}
pp$2.finishNode = function(node2, type) {
  return finishNodeAt.call(this, node2, type, this.lastTokEnd, this.lastTokEndLoc);
};
pp$2.finishNodeAt = function(node2, type, pos, loc) {
  return finishNodeAt.call(this, node2, type, pos, loc);
};
pp$2.copyNode = function(node2) {
  var newNode = new Node(this, node2.start, this.startLoc);
  for (var prop in node2)
    newNode[prop] = node2[prop];
  return newNode;
};
var scriptValuesAddedInUnicode = "Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz", ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS", ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic", ecma11BinaryProperties = ecma10BinaryProperties, ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict", ecma13BinaryProperties = ecma12BinaryProperties, ecma14BinaryProperties = ecma13BinaryProperties, unicodeBinaryProperties = {
  9: ecma9BinaryProperties,
  10: ecma10BinaryProperties,
  11: ecma11BinaryProperties,
  12: ecma12BinaryProperties,
  13: ecma13BinaryProperties,
  14: ecma14BinaryProperties
}, ecma14BinaryPropertiesOfStrings = "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji", unicodeBinaryPropertiesOfStrings = {
  9: "",
  10: "",
  11: "",
  12: "",
  13: "",
  14: ecma14BinaryPropertiesOfStrings
}, unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu", ecma9ScriptValues = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb", ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd", ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho", ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith", ecma14ScriptValues = ecma13ScriptValues + " " + scriptValuesAddedInUnicode, unicodeScriptValues = {
  9: ecma9ScriptValues,
  10: ecma10ScriptValues,
  11: ecma11ScriptValues,
  12: ecma12ScriptValues,
  13: ecma13ScriptValues,
  14: ecma14ScriptValues
}, data = {};
function buildUnicodeData(ecmaVersion) {
  var d = data[ecmaVersion] = {
    binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues),
    binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),
    nonBinary: {
      General_Category: wordsRegexp(unicodeGeneralCategoryValues),
      Script: wordsRegexp(unicodeScriptValues[ecmaVersion])
    }
  };
  d.nonBinary.Script_Extensions = d.nonBinary.Script, d.nonBinary.gc = d.nonBinary.General_Category, d.nonBinary.sc = d.nonBinary.Script, d.nonBinary.scx = d.nonBinary.Script_Extensions;
}
for (i = 0, list3 = [9, 10, 11, 12, 13, 14]; i < list3.length; i += 1)
  ecmaVersion = list3[i], buildUnicodeData(ecmaVersion);
var ecmaVersion, i, list3, pp$1 = Parser.prototype, BranchID = function(parent, base) {
  this.parent = parent, this.base = base || this;
};
BranchID.prototype.separatedFrom = function(alt) {
  for (var self2 = this; self2; self2 = self2.parent)
    for (var other = alt; other; other = other.parent)
      if (self2.base === other.base && self2 !== other)
        return !0;
  return !1;
};
BranchID.prototype.sibling = function() {
  return new BranchID(this.parent, this.base);
};
var RegExpValidationState = function(parser) {
  this.parser = parser, this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""), this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion], this.source = "", this.flags = "", this.start = 0, this.switchU = !1, this.switchV = !1, this.switchN = !1, this.pos = 0, this.lastIntValue = 0, this.lastStringValue = "", this.lastAssertionIsQuantifiable = !1, this.numCapturingParens = 0, this.maxBackReference = 0, this.groupNames = /* @__PURE__ */ Object.create(null), this.backReferenceNames = [], this.branchID = null;
};
RegExpValidationState.prototype.reset = function(start2, pattern, flags) {
  var unicodeSets = flags.indexOf("v") !== -1, unicode = flags.indexOf("u") !== -1;
  this.start = start2 | 0, this.source = pattern + "", this.flags = flags, unicodeSets && this.parser.options.ecmaVersion >= 15 ? (this.switchU = !0, this.switchV = !0, this.switchN = !0) : (this.switchU = unicode && this.parser.options.ecmaVersion >= 6, this.switchV = !1, this.switchN = unicode && this.parser.options.ecmaVersion >= 9);
};
RegExpValidationState.prototype.raise = function(message) {
  this.parser.raiseRecoverable(this.start, "Invalid regular expression: /" + this.source + "/: " + message);
};
RegExpValidationState.prototype.at = function(i, forceU) {
  forceU === void 0 && (forceU = !1);
  var s = this.source, l = s.length;
  if (i >= l)
    return -1;
  var c = s.charCodeAt(i);
  if (!(forceU || this.switchU) || c <= 55295 || c >= 57344 || i + 1 >= l)
    return c;
  var next = s.charCodeAt(i + 1);
  return next >= 56320 && next <= 57343 ? (c << 10) + next - 56613888 : c;
};
RegExpValidationState.prototype.nextIndex = function(i, forceU) {
  forceU === void 0 && (forceU = !1);
  var s = this.source, l = s.length;
  if (i >= l)
    return l;
  var c = s.charCodeAt(i), next;
  return !(forceU || this.switchU) || c <= 55295 || c >= 57344 || i + 1 >= l || (next = s.charCodeAt(i + 1)) < 56320 || next > 57343 ? i + 1 : i + 2;
};
RegExpValidationState.prototype.current = function(forceU) {
  return forceU === void 0 && (forceU = !1), this.at(this.pos, forceU);
};
RegExpValidationState.prototype.lookahead = function(forceU) {
  return forceU === void 0 && (forceU = !1), this.at(this.nextIndex(this.pos, forceU), forceU);
};
RegExpValidationState.prototype.advance = function(forceU) {
  forceU === void 0 && (forceU = !1), this.pos = this.nextIndex(this.pos, forceU);
};
RegExpValidationState.prototype.eat = function(ch, forceU) {
  return forceU === void 0 && (forceU = !1), this.current(forceU) === ch ? (this.advance(forceU), !0) : !1;
};
RegExpValidationState.prototype.eatChars = function(chs, forceU) {
  forceU === void 0 && (forceU = !1);
  for (var pos = this.pos, i = 0, list3 = chs; i < list3.length; i += 1) {
    var ch = list3[i], current2 = this.at(pos, forceU);
    if (current2 === -1 || current2 !== ch)
      return !1;
    pos = this.nextIndex(pos, forceU);
  }
  return this.pos = pos, !0;
};
pp$1.validateRegExpFlags = function(state) {
  for (var validFlags = state.validFlags, flags = state.flags, u = !1, v = !1, i = 0; i < flags.length; i++) {
    var flag = flags.charAt(i);
    validFlags.indexOf(flag) === -1 && this.raise(state.start, "Invalid regular expression flag"), flags.indexOf(flag, i + 1) > -1 && this.raise(state.start, "Duplicate regular expression flag"), flag === "u" && (u = !0), flag === "v" && (v = !0);
  }
  this.options.ecmaVersion >= 15 && u && v && this.raise(state.start, "Invalid regular expression flag");
};
function hasProp(obj) {
  for (var _ in obj)
    return !0;
  return !1;
}
pp$1.validateRegExpPattern = function(state) {
  this.regexp_pattern(state), !state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames) && (state.switchN = !0, this.regexp_pattern(state));
};
pp$1.regexp_pattern = function(state) {
  state.pos = 0, state.lastIntValue = 0, state.lastStringValue = "", state.lastAssertionIsQuantifiable = !1, state.numCapturingParens = 0, state.maxBackReference = 0, state.groupNames = /* @__PURE__ */ Object.create(null), state.backReferenceNames.length = 0, state.branchID = null, this.regexp_disjunction(state), state.pos !== state.source.length && (state.eat(
    41
    /* ) */
  ) && state.raise("Unmatched ')'"), (state.eat(
    93
    /* ] */
  ) || state.eat(
    125
    /* } */
  )) && state.raise("Lone quantifier brackets")), state.maxBackReference > state.numCapturingParens && state.raise("Invalid escape");
  for (var i = 0, list3 = state.backReferenceNames; i < list3.length; i += 1) {
    var name2 = list3[i];
    state.groupNames[name2] || state.raise("Invalid named capture referenced");
  }
};
pp$1.regexp_disjunction = function(state) {
  var trackDisjunction = this.options.ecmaVersion >= 16;
  for (trackDisjunction && (state.branchID = new BranchID(state.branchID, null)), this.regexp_alternative(state); state.eat(
    124
    /* | */
  ); )
    trackDisjunction && (state.branchID = state.branchID.sibling()), this.regexp_alternative(state);
  trackDisjunction && (state.branchID = state.branchID.parent), this.regexp_eatQuantifier(state, !0) && state.raise("Nothing to repeat"), state.eat(
    123
    /* { */
  ) && state.raise("Lone quantifier brackets");
};
pp$1.regexp_alternative = function(state) {
  for (; state.pos < state.source.length && this.regexp_eatTerm(state); )
    ;
};
pp$1.regexp_eatTerm = function(state) {
  return this.regexp_eatAssertion(state) ? (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state) && state.switchU && state.raise("Invalid quantifier"), !0) : (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) ? (this.regexp_eatQuantifier(state), !0) : !1;
};
pp$1.regexp_eatAssertion = function(state) {
  var start2 = state.pos;
  if (state.lastAssertionIsQuantifiable = !1, state.eat(
    94
    /* ^ */
  ) || state.eat(
    36
    /* $ */
  ))
    return !0;
  if (state.eat(
    92
    /* \ */
  )) {
    if (state.eat(
      66
      /* B */
    ) || state.eat(
      98
      /* b */
    ))
      return !0;
    state.pos = start2;
  }
  if (state.eat(
    40
    /* ( */
  ) && state.eat(
    63
    /* ? */
  )) {
    var lookbehind = !1;
    if (this.options.ecmaVersion >= 9 && (lookbehind = state.eat(
      60
      /* < */
    )), state.eat(
      61
      /* = */
    ) || state.eat(
      33
      /* ! */
    ))
      return this.regexp_disjunction(state), state.eat(
        41
        /* ) */
      ) || state.raise("Unterminated group"), state.lastAssertionIsQuantifiable = !lookbehind, !0;
  }
  return state.pos = start2, !1;
};
pp$1.regexp_eatQuantifier = function(state, noError) {
  return noError === void 0 && (noError = !1), this.regexp_eatQuantifierPrefix(state, noError) ? (state.eat(
    63
    /* ? */
  ), !0) : !1;
};
pp$1.regexp_eatQuantifierPrefix = function(state, noError) {
  return state.eat(
    42
    /* * */
  ) || state.eat(
    43
    /* + */
  ) || state.eat(
    63
    /* ? */
  ) || this.regexp_eatBracedQuantifier(state, noError);
};
pp$1.regexp_eatBracedQuantifier = function(state, noError) {
  var start2 = state.pos;
  if (state.eat(
    123
    /* { */
  )) {
    var min = 0, max = -1;
    if (this.regexp_eatDecimalDigits(state) && (min = state.lastIntValue, state.eat(
      44
      /* , */
    ) && this.regexp_eatDecimalDigits(state) && (max = state.lastIntValue), state.eat(
      125
      /* } */
    )))
      return max !== -1 && max < min && !noError && state.raise("numbers out of order in {} quantifier"), !0;
    state.switchU && !noError && state.raise("Incomplete quantifier"), state.pos = start2;
  }
  return !1;
};
pp$1.regexp_eatAtom = function(state) {
  return this.regexp_eatPatternCharacters(state) || state.eat(
    46
    /* . */
  ) || this.regexp_eatReverseSolidusAtomEscape(state) || this.regexp_eatCharacterClass(state) || this.regexp_eatUncapturingGroup(state) || this.regexp_eatCapturingGroup(state);
};
pp$1.regexp_eatReverseSolidusAtomEscape = function(state) {
  var start2 = state.pos;
  if (state.eat(
    92
    /* \ */
  )) {
    if (this.regexp_eatAtomEscape(state))
      return !0;
    state.pos = start2;
  }
  return !1;
};
pp$1.regexp_eatUncapturingGroup = function(state) {
  var start2 = state.pos;
  if (state.eat(
    40
    /* ( */
  )) {
    if (state.eat(
      63
      /* ? */
    )) {
      if (this.options.ecmaVersion >= 16) {
        var addModifiers = this.regexp_eatModifiers(state), hasHyphen = state.eat(
          45
          /* - */
        );
        if (addModifiers || hasHyphen) {
          for (var i = 0; i < addModifiers.length; i++) {
            var modifier = addModifiers.charAt(i);
            addModifiers.indexOf(modifier, i + 1) > -1 && state.raise("Duplicate regular expression modifiers");
          }
          if (hasHyphen) {
            var removeModifiers = this.regexp_eatModifiers(state);
            !addModifiers && !removeModifiers && state.current() === 58 && state.raise("Invalid regular expression modifiers");
            for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {
              var modifier$1 = removeModifiers.charAt(i$1);
              (removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 || addModifiers.indexOf(modifier$1) > -1) && state.raise("Duplicate regular expression modifiers");
            }
          }
        }
      }
      if (state.eat(
        58
        /* : */
      )) {
        if (this.regexp_disjunction(state), state.eat(
          41
          /* ) */
        ))
          return !0;
        state.raise("Unterminated group");
      }
    }
    state.pos = start2;
  }
  return !1;
};
pp$1.regexp_eatCapturingGroup = function(state) {
  if (state.eat(
    40
    /* ( */
  )) {
    if (this.options.ecmaVersion >= 9 ? this.regexp_groupSpecifier(state) : state.current() === 63 && state.raise("Invalid group"), this.regexp_disjunction(state), state.eat(
      41
      /* ) */
    ))
      return state.numCapturingParens += 1, !0;
    state.raise("Unterminated group");
  }
  return !1;
};
pp$1.regexp_eatModifiers = function(state) {
  for (var modifiers = "", ch = 0; (ch = state.current()) !== -1 && isRegularExpressionModifier(ch); )
    modifiers += codePointToString(ch), state.advance();
  return modifiers;
};
function isRegularExpressionModifier(ch) {
  return ch === 105 || ch === 109 || ch === 115;
}
pp$1.regexp_eatExtendedAtom = function(state) {
  return state.eat(
    46
    /* . */
  ) || this.regexp_eatReverseSolidusAtomEscape(state) || this.regexp_eatCharacterClass(state) || this.regexp_eatUncapturingGroup(state) || this.regexp_eatCapturingGroup(state) || this.regexp_eatInvalidBracedQuantifier(state) || this.regexp_eatExtendedPatternCharacter(state);
};
pp$1.regexp_eatInvalidBracedQuantifier = function(state) {
  return this.regexp_eatBracedQuantifier(state, !0) && state.raise("Nothing to repeat"), !1;
};
pp$1.regexp_eatSyntaxCharacter = function(state) {
  var ch = state.current();
  return isSyntaxCharacter(ch) ? (state.lastIntValue = ch, state.advance(), !0) : !1;
};
function isSyntaxCharacter(ch) {
  return ch === 36 || ch >= 40 && ch <= 43 || ch === 46 || ch === 63 || ch >= 91 && ch <= 94 || ch >= 123 && ch <= 125;
}
pp$1.regexp_eatPatternCharacters = function(state) {
  for (var start2 = state.pos, ch = 0; (ch = state.current()) !== -1 && !isSyntaxCharacter(ch); )
    state.advance();
  return state.pos !== start2;
};
pp$1.regexp_eatExtendedPatternCharacter = function(state) {
  var ch = state.current();
  return ch !== -1 && ch !== 36 && !(ch >= 40 && ch <= 43) && ch !== 46 && ch !== 63 && ch !== 91 && ch !== 94 && ch !== 124 ? (state.advance(), !0) : !1;
};
pp$1.regexp_groupSpecifier = function(state) {
  if (state.eat(
    63
    /* ? */
  )) {
    this.regexp_eatGroupName(state) || state.raise("Invalid group");
    var trackDisjunction = this.options.ecmaVersion >= 16, known = state.groupNames[state.lastStringValue];
    if (known)
      if (trackDisjunction)
        for (var i = 0, list3 = known; i < list3.length; i += 1) {
          var altID = list3[i];
          altID.separatedFrom(state.branchID) || state.raise("Duplicate capture group name");
        }
      else
        state.raise("Duplicate capture group name");
    trackDisjunction ? (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID) : state.groupNames[state.lastStringValue] = !0;
  }
};
pp$1.regexp_eatGroupName = function(state) {
  if (state.lastStringValue = "", state.eat(
    60
    /* < */
  )) {
    if (this.regexp_eatRegExpIdentifierName(state) && state.eat(
      62
      /* > */
    ))
      return !0;
    state.raise("Invalid capture group name");
  }
  return !1;
};
pp$1.regexp_eatRegExpIdentifierName = function(state) {
  if (state.lastStringValue = "", this.regexp_eatRegExpIdentifierStart(state)) {
    for (state.lastStringValue += codePointToString(state.lastIntValue); this.regexp_eatRegExpIdentifierPart(state); )
      state.lastStringValue += codePointToString(state.lastIntValue);
    return !0;
  }
  return !1;
};
pp$1.regexp_eatRegExpIdentifierStart = function(state) {
  var start2 = state.pos, forceU = this.options.ecmaVersion >= 11, ch = state.current(forceU);
  return state.advance(forceU), ch === 92 && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU) && (ch = state.lastIntValue), isRegExpIdentifierStart(ch) ? (state.lastIntValue = ch, !0) : (state.pos = start2, !1);
};
function isRegExpIdentifierStart(ch) {
  return isIdentifierStart(ch, !0) || ch === 36 || ch === 95;
}
pp$1.regexp_eatRegExpIdentifierPart = function(state) {
  var start2 = state.pos, forceU = this.options.ecmaVersion >= 11, ch = state.current(forceU);
  return state.advance(forceU), ch === 92 && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU) && (ch = state.lastIntValue), isRegExpIdentifierPart(ch) ? (state.lastIntValue = ch, !0) : (state.pos = start2, !1);
};
function isRegExpIdentifierPart(ch) {
  return isIdentifierChar(ch, !0) || ch === 36 || ch === 95 || ch === 8204 || ch === 8205;
}
pp$1.regexp_eatAtomEscape = function(state) {
  return this.regexp_eatBackReference(state) || this.regexp_eatCharacterClassEscape(state) || this.regexp_eatCharacterEscape(state) || state.switchN && this.regexp_eatKGroupName(state) ? !0 : (state.switchU && (state.current() === 99 && state.raise("Invalid unicode escape"), state.raise("Invalid escape")), !1);
};
pp$1.regexp_eatBackReference = function(state) {
  var start2 = state.pos;
  if (this.regexp_eatDecimalEscape(state)) {
    var n = state.lastIntValue;
    if (state.switchU)
      return n > state.maxBackReference && (state.maxBackReference = n), !0;
    if (n <= state.numCapturingParens)
      return !0;
    state.pos = start2;
  }
  return !1;
};
pp$1.regexp_eatKGroupName = function(state) {
  if (state.eat(
    107
    /* k */
  )) {
    if (this.regexp_eatGroupName(state))
      return state.backReferenceNames.push(state.lastStringValue), !0;
    state.raise("Invalid named reference");
  }
  return !1;
};
pp$1.regexp_eatCharacterEscape = function(state) {
  return this.regexp_eatControlEscape(state) || this.regexp_eatCControlLetter(state) || this.regexp_eatZero(state) || this.regexp_eatHexEscapeSequence(state) || this.regexp_eatRegExpUnicodeEscapeSequence(state, !1) || !state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state) || this.regexp_eatIdentityEscape(state);
};
pp$1.regexp_eatCControlLetter = function(state) {
  var start2 = state.pos;
  if (state.eat(
    99
    /* c */
  )) {
    if (this.regexp_eatControlLetter(state))
      return !0;
    state.pos = start2;
  }
  return !1;
};
pp$1.regexp_eatZero = function(state) {
  return state.current() === 48 && !isDecimalDigit(state.lookahead()) ? (state.lastIntValue = 0, state.advance(), !0) : !1;
};
pp$1.regexp_eatControlEscape = function(state) {
  var ch = state.current();
  return ch === 116 ? (state.lastIntValue = 9, state.advance(), !0) : ch === 110 ? (state.lastIntValue = 10, state.advance(), !0) : ch === 118 ? (state.lastIntValue = 11, state.advance(), !0) : ch === 102 ? (state.lastIntValue = 12, state.advance(), !0) : ch === 114 ? (state.lastIntValue = 13, state.advance(), !0) : !1;
};
pp$1.regexp_eatControlLetter = function(state) {
  var ch = state.current();
  return isControlLetter(ch) ? (state.lastIntValue = ch % 32, state.advance(), !0) : !1;
};
function isControlLetter(ch) {
  return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122;
}
pp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {
  forceU === void 0 && (forceU = !1);
  var start2 = state.pos, switchU = forceU || state.switchU;
  if (state.eat(
    117
    /* u */
  )) {
    if (this.regexp_eatFixedHexDigits(state, 4)) {
      var lead = state.lastIntValue;
      if (switchU && lead >= 55296 && lead <= 56319) {
        var leadSurrogateEnd = state.pos;
        if (state.eat(
          92
          /* \ */
        ) && state.eat(
          117
          /* u */
        ) && this.regexp_eatFixedHexDigits(state, 4)) {
          var trail = state.lastIntValue;
          if (trail >= 56320 && trail <= 57343)
            return state.lastIntValue = (lead - 55296) * 1024 + (trail - 56320) + 65536, !0;
        }
        state.pos = leadSurrogateEnd, state.lastIntValue = lead;
      }
      return !0;
    }
    if (switchU && state.eat(
      123
      /* { */
    ) && this.regexp_eatHexDigits(state) && state.eat(
      125
      /* } */
    ) && isValidUnicode(state.lastIntValue))
      return !0;
    switchU && state.raise("Invalid unicode escape"), state.pos = start2;
  }
  return !1;
};
function isValidUnicode(ch) {
  return ch >= 0 && ch <= 1114111;
}
pp$1.regexp_eatIdentityEscape = function(state) {
  if (state.switchU)
    return this.regexp_eatSyntaxCharacter(state) ? !0 : state.eat(
      47
      /* / */
    ) ? (state.lastIntValue = 47, !0) : !1;
  var ch = state.current();
  return ch !== 99 && (!state.switchN || ch !== 107) ? (state.lastIntValue = ch, state.advance(), !0) : !1;
};
pp$1.regexp_eatDecimalEscape = function(state) {
  state.lastIntValue = 0;
  var ch = state.current();
  if (ch >= 49 && ch <= 57) {
    do
      state.lastIntValue = 10 * state.lastIntValue + (ch - 48), state.advance();
    while ((ch = state.current()) >= 48 && ch <= 57);
    return !0;
  }
  return !1;
};
var CharSetNone = 0, CharSetOk = 1, CharSetString = 2;
pp$1.regexp_eatCharacterClassEscape = function(state) {
  var ch = state.current();
  if (isCharacterClassEscape(ch))
    return state.lastIntValue = -1, state.advance(), CharSetOk;
  var negate = !1;
  if (state.switchU && this.options.ecmaVersion >= 9 && ((negate = ch === 80) || ch === 112)) {
    state.lastIntValue = -1, state.advance();
    var result;
    if (state.eat(
      123
      /* { */
    ) && (result = this.regexp_eatUnicodePropertyValueExpression(state)) && state.eat(
      125
      /* } */
    ))
      return negate && result === CharSetString && state.raise("Invalid property name"), result;
    state.raise("Invalid property name");
  }
  return CharSetNone;
};
function isCharacterClassEscape(ch) {
  return ch === 100 || ch === 68 || ch === 115 || ch === 83 || ch === 119 || ch === 87;
}
pp$1.regexp_eatUnicodePropertyValueExpression = function(state) {
  var start2 = state.pos;
  if (this.regexp_eatUnicodePropertyName(state) && state.eat(
    61
    /* = */
  )) {
    var name2 = state.lastStringValue;
    if (this.regexp_eatUnicodePropertyValue(state)) {
      var value = state.lastStringValue;
      return this.regexp_validateUnicodePropertyNameAndValue(state, name2, value), CharSetOk;
    }
  }
  if (state.pos = start2, this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {
    var nameOrValue = state.lastStringValue;
    return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue);
  }
  return CharSetNone;
};
pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name2, value) {
  hasOwn(state.unicodeProperties.nonBinary, name2) || state.raise("Invalid property name"), state.unicodeProperties.nonBinary[name2].test(value) || state.raise("Invalid property value");
};
pp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {
  if (state.unicodeProperties.binary.test(nameOrValue))
    return CharSetOk;
  if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue))
    return CharSetString;
  state.raise("Invalid property name");
};
pp$1.regexp_eatUnicodePropertyName = function(state) {
  var ch = 0;
  for (state.lastStringValue = ""; isUnicodePropertyNameCharacter(ch = state.current()); )
    state.lastStringValue += codePointToString(ch), state.advance();
  return state.lastStringValue !== "";
};
function isUnicodePropertyNameCharacter(ch) {
  return isControlLetter(ch) || ch === 95;
}
pp$1.regexp_eatUnicodePropertyValue = function(state) {
  var ch = 0;
  for (state.lastStringValue = ""; isUnicodePropertyValueCharacter(ch = state.current()); )
    state.lastStringValue += codePointToString(ch), state.advance();
  return state.lastStringValue !== "";
};
function isUnicodePropertyValueCharacter(ch) {
  return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch);
}
pp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {
  return this.regexp_eatUnicodePropertyValue(state);
};
pp$1.regexp_eatCharacterClass = function(state) {
  if (state.eat(
    91
    /* [ */
  )) {
    var negate = state.eat(
      94
      /* ^ */
    ), result = this.regexp_classContents(state);
    return state.eat(
      93
      /* ] */
    ) || state.raise("Unterminated character class"), negate && result === CharSetString && state.raise("Negated character class may contain strings"), !0;
  }
  return !1;
};
pp$1.regexp_classContents = function(state) {
  return state.current() === 93 ? CharSetOk : state.switchV ? this.regexp_classSetExpression(state) : (this.regexp_nonEmptyClassRanges(state), CharSetOk);
};
pp$1.regexp_nonEmptyClassRanges = function(state) {
  for (; this.regexp_eatClassAtom(state); ) {
    var left = state.lastIntValue;
    if (state.eat(
      45
      /* - */
    ) && this.regexp_eatClassAtom(state)) {
      var right = state.lastIntValue;
      state.switchU && (left === -1 || right === -1) && state.raise("Invalid character class"), left !== -1 && right !== -1 && left > right && state.raise("Range out of order in character class");
    }
  }
};
pp$1.regexp_eatClassAtom = function(state) {
  var start2 = state.pos;
  if (state.eat(
    92
    /* \ */
  )) {
    if (this.regexp_eatClassEscape(state))
      return !0;
    if (state.switchU) {
      var ch$1 = state.current();
      (ch$1 === 99 || isOctalDigit(ch$1)) && state.raise("Invalid class escape"), state.raise("Invalid escape");
    }
    state.pos = start2;
  }
  var ch = state.current();
  return ch !== 93 ? (state.lastIntValue = ch, state.advance(), !0) : !1;
};
pp$1.regexp_eatClassEscape = function(state) {
  var start2 = state.pos;
  if (state.eat(
    98
    /* b */
  ))
    return state.lastIntValue = 8, !0;
  if (state.switchU && state.eat(
    45
    /* - */
  ))
    return state.lastIntValue = 45, !0;
  if (!state.switchU && state.eat(
    99
    /* c */
  )) {
    if (this.regexp_eatClassControlLetter(state))
      return !0;
    state.pos = start2;
  }
  return this.regexp_eatCharacterClassEscape(state) || this.regexp_eatCharacterEscape(state);
};
pp$1.regexp_classSetExpression = function(state) {
  var result = CharSetOk, subResult;
  if (!this.regexp_eatClassSetRange(state)) if (subResult = this.regexp_eatClassSetOperand(state)) {
    subResult === CharSetString && (result = CharSetString);
    for (var start2 = state.pos; state.eatChars(
      [38, 38]
      /* && */
    ); ) {
      if (state.current() !== 38 && (subResult = this.regexp_eatClassSetOperand(state))) {
        subResult !== CharSetString && (result = CharSetOk);
        continue;
      }
      state.raise("Invalid character in character class");
    }
    if (start2 !== state.pos)
      return result;
    for (; state.eatChars(
      [45, 45]
      /* -- */
    ); )
      this.regexp_eatClassSetOperand(state) || state.raise("Invalid character in character class");
    if (start2 !== state.pos)
      return result;
  } else
    state.raise("Invalid character in character class");
  for (; ; )
    if (!this.regexp_eatClassSetRange(state)) {
      if (subResult = this.regexp_eatClassSetOperand(state), !subResult)
        return result;
      subResult === CharSetString && (result = CharSetString);
    }
};
pp$1.regexp_eatClassSetRange = function(state) {
  var start2 = state.pos;
  if (this.regexp_eatClassSetCharacter(state)) {
    var left = state.lastIntValue;
    if (state.eat(
      45
      /* - */
    ) && this.regexp_eatClassSetCharacter(state)) {
      var right = state.lastIntValue;
      return left !== -1 && right !== -1 && left > right && state.raise("Range out of order in character class"), !0;
    }
    state.pos = start2;
  }
  return !1;
};
pp$1.regexp_eatClassSetOperand = function(state) {
  return this.regexp_eatClassSetCharacter(state) ? CharSetOk : this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state);
};
pp$1.regexp_eatNestedClass = function(state) {
  var start2 = state.pos;
  if (state.eat(
    91
    /* [ */
  )) {
    var negate = state.eat(
      94
      /* ^ */
    ), result = this.regexp_classContents(state);
    if (state.eat(
      93
      /* ] */
    ))
      return negate && result === CharSetString && state.raise("Negated character class may contain strings"), result;
    state.pos = start2;
  }
  if (state.eat(
    92
    /* \ */
  )) {
    var result$1 = this.regexp_eatCharacterClassEscape(state);
    if (result$1)
      return result$1;
    state.pos = start2;
  }
  return null;
};
pp$1.regexp_eatClassStringDisjunction = function(state) {
  var start2 = state.pos;
  if (state.eatChars(
    [92, 113]
    /* \q */
  )) {
    if (state.eat(
      123
      /* { */
    )) {
      var result = this.regexp_classStringDisjunctionContents(state);
      if (state.eat(
        125
        /* } */
      ))
        return result;
    } else
      state.raise("Invalid escape");
    state.pos = start2;
  }
  return null;
};
pp$1.regexp_classStringDisjunctionContents = function(state) {
  for (var result = this.regexp_classString(state); state.eat(
    124
    /* | */
  ); )
    this.regexp_classString(state) === CharSetString && (result = CharSetString);
  return result;
};
pp$1.regexp_classString = function(state) {
  for (var count = 0; this.regexp_eatClassSetCharacter(state); )
    count++;
  return count === 1 ? CharSetOk : CharSetString;
};
pp$1.regexp_eatClassSetCharacter = function(state) {
  var start2 = state.pos;
  if (state.eat(
    92
    /* \ */
  ))
    return this.regexp_eatCharacterEscape(state) || this.regexp_eatClassSetReservedPunctuator(state) ? !0 : state.eat(
      98
      /* b */
    ) ? (state.lastIntValue = 8, !0) : (state.pos = start2, !1);
  var ch = state.current();
  return ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch) || isClassSetSyntaxCharacter(ch) ? !1 : (state.advance(), state.lastIntValue = ch, !0);
};
function isClassSetReservedDoublePunctuatorCharacter(ch) {
  return ch === 33 || ch >= 35 && ch <= 38 || ch >= 42 && ch <= 44 || ch === 46 || ch >= 58 && ch <= 64 || ch === 94 || ch === 96 || ch === 126;
}
function isClassSetSyntaxCharacter(ch) {
  return ch === 40 || ch === 41 || ch === 45 || ch === 47 || ch >= 91 && ch <= 93 || ch >= 123 && ch <= 125;
}
pp$1.regexp_eatClassSetReservedPunctuator = function(state) {
  var ch = state.current();
  return isClassSetReservedPunctuator(ch) ? (state.lastIntValue = ch, state.advance(), !0) : !1;
};
function isClassSetReservedPunctuator(ch) {
  return ch === 33 || ch === 35 || ch === 37 || ch === 38 || ch === 44 || ch === 45 || ch >= 58 && ch <= 62 || ch === 64 || ch === 96 || ch === 126;
}
pp$1.regexp_eatClassControlLetter = function(state) {
  var ch = state.current();
  return isDecimalDigit(ch) || ch === 95 ? (state.lastIntValue = ch % 32, state.advance(), !0) : !1;
};
pp$1.regexp_eatHexEscapeSequence = function(state) {
  var start2 = state.pos;
  if (state.eat(
    120
    /* x */
  )) {
    if (this.regexp_eatFixedHexDigits(state, 2))
      return !0;
    state.switchU && state.raise("Invalid escape"), state.pos = start2;
  }
  return !1;
};
pp$1.regexp_eatDecimalDigits = function(state) {
  var start2 = state.pos, ch = 0;
  for (state.lastIntValue = 0; isDecimalDigit(ch = state.current()); )
    state.lastIntValue = 10 * state.lastIntValue + (ch - 48), state.advance();
  return state.pos !== start2;
};
function isDecimalDigit(ch) {
  return ch >= 48 && ch <= 57;
}
pp$1.regexp_eatHexDigits = function(state) {
  var start2 = state.pos, ch = 0;
  for (state.lastIntValue = 0; isHexDigit(ch = state.current()); )
    state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch), state.advance();
  return state.pos !== start2;
};
function isHexDigit(ch) {
  return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102;
}
function hexToInt(ch) {
  return ch >= 65 && ch <= 70 ? 10 + (ch - 65) : ch >= 97 && ch <= 102 ? 10 + (ch - 97) : ch - 48;
}
pp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {
  if (this.regexp_eatOctalDigit(state)) {
    var n1 = state.lastIntValue;
    if (this.regexp_eatOctalDigit(state)) {
      var n2 = state.lastIntValue;
      n1 <= 3 && this.regexp_eatOctalDigit(state) ? state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue : state.lastIntValue = n1 * 8 + n2;
    } else
      state.lastIntValue = n1;
    return !0;
  }
  return !1;
};
pp$1.regexp_eatOctalDigit = function(state) {
  var ch = state.current();
  return isOctalDigit(ch) ? (state.lastIntValue = ch - 48, state.advance(), !0) : (state.lastIntValue = 0, !1);
};
function isOctalDigit(ch) {
  return ch >= 48 && ch <= 55;
}
pp$1.regexp_eatFixedHexDigits = function(state, length) {
  var start2 = state.pos;
  state.lastIntValue = 0;
  for (var i = 0; i < length; ++i) {
    var ch = state.current();
    if (!isHexDigit(ch))
      return state.pos = start2, !1;
    state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch), state.advance();
  }
  return !0;
};
var Token = function(p) {
  this.type = p.type, this.value = p.value, this.start = p.start, this.end = p.end, p.options.locations && (this.loc = new SourceLocation(p, p.startLoc, p.endLoc)), p.options.ranges && (this.range = [p.start, p.end]);
}, pp = Parser.prototype;
pp.next = function(ignoreEscapeSequenceInKeyword) {
  !ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc && this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword), this.options.onToken && this.options.onToken(new Token(this)), this.lastTokEnd = this.end, this.lastTokStart = this.start, this.lastTokEndLoc = this.endLoc, this.lastTokStartLoc = this.startLoc, this.nextToken();
};
pp.getToken = function() {
  return this.next(), new Token(this);
};
typeof Symbol < "u" && (pp[Symbol.iterator] = function() {
  var this$1$1 = this;
  return {
    next: function() {
      var token = this$1$1.getToken();
      return {
        done: token.type === types$1.eof,
        value: token
      };
    }
  };
});
pp.nextToken = function() {
  var curContext = this.curContext();
  if ((!curContext || !curContext.preserveSpace) && this.skipSpace(), this.start = this.pos, this.options.locations && (this.startLoc = this.curPosition()), this.pos >= this.input.length)
    return this.finishToken(types$1.eof);
  if (curContext.override)
    return curContext.override(this);
  this.readToken(this.fullCharCodeAtPos());
};
pp.readToken = function(code2) {
  return isIdentifierStart(code2, this.options.ecmaVersion >= 6) || code2 === 92 ? this.readWord() : this.getTokenFromCode(code2);
};
pp.fullCharCodeAtPos = function() {
  var code2 = this.input.charCodeAt(this.pos);
  if (code2 <= 55295 || code2 >= 56320)
    return code2;
  var next = this.input.charCodeAt(this.pos + 1);
  return next <= 56319 || next >= 57344 ? code2 : (code2 << 10) + next - 56613888;
};
pp.skipBlockComment = function() {
  var startLoc = this.options.onComment && this.curPosition(), start2 = this.pos, end = this.input.indexOf("*/", this.pos += 2);
  if (end === -1 && this.raise(this.pos - 2, "Unterminated comment"), this.pos = end + 2, this.options.locations)
    for (var nextBreak = void 0, pos = start2; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1; )
      ++this.curLine, pos = this.lineStart = nextBreak;
  this.options.onComment && this.options.onComment(
    !0,
    this.input.slice(start2 + 2, end),
    start2,
    this.pos,
    startLoc,
    this.curPosition()
  );
};
pp.skipLineComment = function(startSkip) {
  for (var start2 = this.pos, startLoc = this.options.onComment && this.curPosition(), ch = this.input.charCodeAt(this.pos += startSkip); this.pos < this.input.length && !isNewLine(ch); )
    ch = this.input.charCodeAt(++this.pos);
  this.options.onComment && this.options.onComment(
    !1,
    this.input.slice(start2 + startSkip, this.pos),
    start2,
    this.pos,
    startLoc,
    this.curPosition()
  );
};
pp.skipSpace = function() {
  loop: for (; this.pos < this.input.length; ) {
    var ch = this.input.charCodeAt(this.pos);
    switch (ch) {
      case 32:
      case 160:
        ++this.pos;
        break;
      case 13:
        this.input.charCodeAt(this.pos + 1) === 10 && ++this.pos;
      case 10:
      case 8232:
      case 8233:
        ++this.pos, this.options.locations && (++this.curLine, this.lineStart = this.pos);
        break;
      case 47:
        switch (this.input.charCodeAt(this.pos + 1)) {
          case 42:
            this.skipBlockComment();
            break;
          case 47:
            this.skipLineComment(2);
            break;
          default:
            break loop;
        }
        break;
      default:
        if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch)))
          ++this.pos;
        else
          break loop;
    }
  }
};
pp.finishToken = function(type, val) {
  this.end = this.pos, this.options.locations && (this.endLoc = this.curPosition());
  var prevType = this.type;
  this.type = type, this.value = val, this.updateContext(prevType);
};
pp.readToken_dot = function() {
  var next = this.input.charCodeAt(this.pos + 1);
  if (next >= 48 && next <= 57)
    return this.readNumber(!0);
  var next2 = this.input.charCodeAt(this.pos + 2);
  return this.options.ecmaVersion >= 6 && next === 46 && next2 === 46 ? (this.pos += 3, this.finishToken(types$1.ellipsis)) : (++this.pos, this.finishToken(types$1.dot));
};
pp.readToken_slash = function() {
  var next = this.input.charCodeAt(this.pos + 1);
  return this.exprAllowed ? (++this.pos, this.readRegexp()) : next === 61 ? this.finishOp(types$1.assign, 2) : this.finishOp(types$1.slash, 1);
};
pp.readToken_mult_modulo_exp = function(code2) {
  var next = this.input.charCodeAt(this.pos + 1), size = 1, tokentype = code2 === 42 ? types$1.star : types$1.modulo;
  return this.options.ecmaVersion >= 7 && code2 === 42 && next === 42 && (++size, tokentype = types$1.starstar, next = this.input.charCodeAt(this.pos + 2)), next === 61 ? this.finishOp(types$1.assign, size + 1) : this.finishOp(tokentype, size);
};
pp.readToken_pipe_amp = function(code2) {
  var next = this.input.charCodeAt(this.pos + 1);
  if (next === code2) {
    if (this.options.ecmaVersion >= 12) {
      var next2 = this.input.charCodeAt(this.pos + 2);
      if (next2 === 61)
        return this.finishOp(types$1.assign, 3);
    }
    return this.finishOp(code2 === 124 ? types$1.logicalOR : types$1.logicalAND, 2);
  }
  return next === 61 ? this.finishOp(types$1.assign, 2) : this.finishOp(code2 === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1);
};
pp.readToken_caret = function() {
  var next = this.input.charCodeAt(this.pos + 1);
  return next === 61 ? this.finishOp(types$1.assign, 2) : this.finishOp(types$1.bitwiseXOR, 1);
};
pp.readToken_plus_min = function(code2) {
  var next = this.input.charCodeAt(this.pos + 1);
  return next === code2 ? next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos))) ? (this.skipLineComment(3), this.skipSpace(), this.nextToken()) : this.finishOp(types$1.incDec, 2) : next === 61 ? this.finishOp(types$1.assign, 2) : this.finishOp(types$1.plusMin, 1);
};
pp.readToken_lt_gt = function(code2) {
  var next = this.input.charCodeAt(this.pos + 1), size = 1;
  return next === code2 ? (size = code2 === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2, this.input.charCodeAt(this.pos + size) === 61 ? this.finishOp(types$1.assign, size + 1) : this.finishOp(types$1.bitShift, size)) : next === 33 && code2 === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && this.input.charCodeAt(this.pos + 3) === 45 ? (this.skipLineComment(4), this.skipSpace(), this.nextToken()) : (next === 61 && (size = 2), this.finishOp(types$1.relational, size));
};
pp.readToken_eq_excl = function(code2) {
  var next = this.input.charCodeAt(this.pos + 1);
  return next === 61 ? this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) : code2 === 61 && next === 62 && this.options.ecmaVersion >= 6 ? (this.pos += 2, this.finishToken(types$1.arrow)) : this.finishOp(code2 === 61 ? types$1.eq : types$1.prefix, 1);
};
pp.readToken_question = function() {
  var ecmaVersion = this.options.ecmaVersion;
  if (ecmaVersion >= 11) {
    var next = this.input.charCodeAt(this.pos + 1);
    if (next === 46) {
      var next2 = this.input.charCodeAt(this.pos + 2);
      if (next2 < 48 || next2 > 57)
        return this.finishOp(types$1.questionDot, 2);
    }
    if (next === 63) {
      if (ecmaVersion >= 12) {
        var next2$1 = this.input.charCodeAt(this.pos + 2);
        if (next2$1 === 61)
          return this.finishOp(types$1.assign, 3);
      }
      return this.finishOp(types$1.coalesce, 2);
    }
  }
  return this.finishOp(types$1.question, 1);
};
pp.readToken_numberSign = function() {
  var ecmaVersion = this.options.ecmaVersion, code2 = 35;
  if (ecmaVersion >= 13 && (++this.pos, code2 = this.fullCharCodeAtPos(), isIdentifierStart(code2, !0) || code2 === 92))
    return this.finishToken(types$1.privateId, this.readWord1());
  this.raise(this.pos, "Unexpected character '" + codePointToString(code2) + "'");
};
pp.getTokenFromCode = function(code2) {
  switch (code2) {
    // The interpretation of a dot depends on whether it is followed
    // by a digit or another two dots.
    case 46:
      return this.readToken_dot();
    // Punctuation tokens.
    case 40:
      return ++this.pos, this.finishToken(types$1.parenL);
    case 41:
      return ++this.pos, this.finishToken(types$1.parenR);
    case 59:
      return ++this.pos, this.finishToken(types$1.semi);
    case 44:
      return ++this.pos, this.finishToken(types$1.comma);
    case 91:
      return ++this.pos, this.finishToken(types$1.bracketL);
    case 93:
      return ++this.pos, this.finishToken(types$1.bracketR);
    case 123:
      return ++this.pos, this.finishToken(types$1.braceL);
    case 125:
      return ++this.pos, this.finishToken(types$1.braceR);
    case 58:
      return ++this.pos, this.finishToken(types$1.colon);
    case 96:
      if (this.options.ecmaVersion < 6)
        break;
      return ++this.pos, this.finishToken(types$1.backQuote);
    case 48:
      var next = this.input.charCodeAt(this.pos + 1);
      if (next === 120 || next === 88)
        return this.readRadixNumber(16);
      if (this.options.ecmaVersion >= 6) {
        if (next === 111 || next === 79)
          return this.readRadixNumber(8);
        if (next === 98 || next === 66)
          return this.readRadixNumber(2);
      }
    // Anything else beginning with a digit is an integer, octal
    // number, or float.
    case 49:
    case 50:
    case 51:
    case 52:
    case 53:
    case 54:
    case 55:
    case 56:
    case 57:
      return this.readNumber(!1);
    // Quotes produce strings.
    case 34:
    case 39:
      return this.readString(code2);
    // Operators are parsed inline in tiny state machines. '=' (61) is
    // often referred to. `finishOp` simply skips the amount of
    // characters it is given as second argument, and returns a token
    // of the type given by its first argument.
    case 47:
      return this.readToken_slash();
    case 37:
    case 42:
      return this.readToken_mult_modulo_exp(code2);
    case 124:
    case 38:
      return this.readToken_pipe_amp(code2);
    case 94:
      return this.readToken_caret();
    case 43:
    case 45:
      return this.readToken_plus_min(code2);
    case 60:
    case 62:
      return this.readToken_lt_gt(code2);
    case 61:
    case 33:
      return this.readToken_eq_excl(code2);
    case 63:
      return this.readToken_question();
    case 126:
      return this.finishOp(types$1.prefix, 1);
    case 35:
      return this.readToken_numberSign();
  }
  this.raise(this.pos, "Unexpected character '" + codePointToString(code2) + "'");
};
pp.finishOp = function(type, size) {
  var str = this.input.slice(this.pos, this.pos + size);
  return this.pos += size, this.finishToken(type, str);
};
pp.readRegexp = function() {
  for (var escaped, inClass, start2 = this.pos; ; ) {
    this.pos >= this.input.length && this.raise(start2, "Unterminated regular expression");
    var ch = this.input.charAt(this.pos);
    if (lineBreak.test(ch) && this.raise(start2, "Unterminated regular expression"), escaped)
      escaped = !1;
    else {
      if (ch === "[")
        inClass = !0;
      else if (ch === "]" && inClass)
        inClass = !1;
      else if (ch === "/" && !inClass)
        break;
      escaped = ch === "\\";
    }
    ++this.pos;
  }
  var pattern = this.input.slice(start2, this.pos);
  ++this.pos;
  var flagsStart = this.pos, flags = this.readWord1();
  this.containsEsc && this.unexpected(flagsStart);
  var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));
  state.reset(start2, pattern, flags), this.validateRegExpFlags(state), this.validateRegExpPattern(state);
  var value = null;
  try {
    value = new RegExp(pattern, flags);
  } catch {
  }
  return this.finishToken(types$1.regexp, { pattern, flags, value });
};
pp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {
  for (var allowSeparators = this.options.ecmaVersion >= 12 && len === void 0, isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48, start2 = this.pos, total = 0, lastCode = 0, i = 0, e = len ?? 1 / 0; i < e; ++i, ++this.pos) {
    var code2 = this.input.charCodeAt(this.pos), val = void 0;
    if (allowSeparators && code2 === 95) {
      isLegacyOctalNumericLiteral && this.raiseRecoverable(this.pos, "Numeric separator is not allowed in legacy octal numeric literals"), lastCode === 95 && this.raiseRecoverable(this.pos, "Numeric separator must be exactly one underscore"), i === 0 && this.raiseRecoverable(this.pos, "Numeric separator is not allowed at the first of digits"), lastCode = code2;
      continue;
    }
    if (code2 >= 97 ? val = code2 - 97 + 10 : code2 >= 65 ? val = code2 - 65 + 10 : code2 >= 48 && code2 <= 57 ? val = code2 - 48 : val = 1 / 0, val >= radix)
      break;
    lastCode = code2, total = total * radix + val;
  }
  return allowSeparators && lastCode === 95 && this.raiseRecoverable(this.pos - 1, "Numeric separator is not allowed at the last of digits"), this.pos === start2 || len != null && this.pos - start2 !== len ? null : total;
};
function stringToNumber(str, isLegacyOctalNumericLiteral) {
  return isLegacyOctalNumericLiteral ? parseInt(str, 8) : parseFloat(str.replace(/_/g, ""));
}
function stringToBigInt(str) {
  return typeof BigInt != "function" ? null : BigInt(str.replace(/_/g, ""));
}
pp.readRadixNumber = function(radix) {
  var start2 = this.pos;
  this.pos += 2;
  var val = this.readInt(radix);
  return val == null && this.raise(this.start + 2, "Expected number in radix " + radix), this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110 ? (val = stringToBigInt(this.input.slice(start2, this.pos)), ++this.pos) : isIdentifierStart(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number"), this.finishToken(types$1.num, val);
};
pp.readNumber = function(startsWithDot) {
  var start2 = this.pos;
  !startsWithDot && this.readInt(10, void 0, !0) === null && this.raise(start2, "Invalid number");
  var octal = this.pos - start2 >= 2 && this.input.charCodeAt(start2) === 48;
  octal && this.strict && this.raise(start2, "Invalid number");
  var next = this.input.charCodeAt(this.pos);
  if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {
    var val$1 = stringToBigInt(this.input.slice(start2, this.pos));
    return ++this.pos, isIdentifierStart(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number"), this.finishToken(types$1.num, val$1);
  }
  octal && /[89]/.test(this.input.slice(start2, this.pos)) && (octal = !1), next === 46 && !octal && (++this.pos, this.readInt(10), next = this.input.charCodeAt(this.pos)), (next === 69 || next === 101) && !octal && (next = this.input.charCodeAt(++this.pos), (next === 43 || next === 45) && ++this.pos, this.readInt(10) === null && this.raise(start2, "Invalid number")), isIdentifierStart(this.fullCharCodeAtPos()) && this.raise(this.pos, "Identifier directly after number");
  var val = stringToNumber(this.input.slice(start2, this.pos), octal);
  return this.finishToken(types$1.num, val);
};
pp.readCodePoint = function() {
  var ch = this.input.charCodeAt(this.pos), code2;
  if (ch === 123) {
    this.options.ecmaVersion < 6 && this.unexpected();
    var codePos = ++this.pos;
    code2 = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos), ++this.pos, code2 > 1114111 && this.invalidStringToken(codePos, "Code point out of bounds");
  } else
    code2 = this.readHexChar(4);
  return code2;
};
pp.readString = function(quote) {
  for (var out = "", chunkStart = ++this.pos; ; ) {
    this.pos >= this.input.length && this.raise(this.start, "Unterminated string constant");
    var ch = this.input.charCodeAt(this.pos);
    if (ch === quote)
      break;
    ch === 92 ? (out += this.input.slice(chunkStart, this.pos), out += this.readEscapedChar(!1), chunkStart = this.pos) : ch === 8232 || ch === 8233 ? (this.options.ecmaVersion < 10 && this.raise(this.start, "Unterminated string constant"), ++this.pos, this.options.locations && (this.curLine++, this.lineStart = this.pos)) : (isNewLine(ch) && this.raise(this.start, "Unterminated string constant"), ++this.pos);
  }
  return out += this.input.slice(chunkStart, this.pos++), this.finishToken(types$1.string, out);
};
var INVALID_TEMPLATE_ESCAPE_ERROR = {};
pp.tryReadTemplateToken = function() {
  this.inTemplateElement = !0;
  try {
    this.readTmplToken();
  } catch (err) {
    if (err === INVALID_TEMPLATE_ESCAPE_ERROR)
      this.readInvalidTemplateToken();
    else
      throw err;
  }
  this.inTemplateElement = !1;
};
pp.invalidStringToken = function(position3, message) {
  if (this.inTemplateElement && this.options.ecmaVersion >= 9)
    throw INVALID_TEMPLATE_ESCAPE_ERROR;
  this.raise(position3, message);
};
pp.readTmplToken = function() {
  for (var out = "", chunkStart = this.pos; ; ) {
    this.pos >= this.input.length && this.raise(this.start, "Unterminated template");
    var ch = this.input.charCodeAt(this.pos);
    if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123)
      return this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate) ? ch === 36 ? (this.pos += 2, this.finishToken(types$1.dollarBraceL)) : (++this.pos, this.finishToken(types$1.backQuote)) : (out += this.input.slice(chunkStart, this.pos), this.finishToken(types$1.template, out));
    if (ch === 92)
      out += this.input.slice(chunkStart, this.pos), out += this.readEscapedChar(!0), chunkStart = this.pos;
    else if (isNewLine(ch)) {
      switch (out += this.input.slice(chunkStart, this.pos), ++this.pos, ch) {
        case 13:
          this.input.charCodeAt(this.pos) === 10 && ++this.pos;
        case 10:
          out += `
`;
          break;
        default:
          out += String.fromCharCode(ch);
          break;
      }
      this.options.locations && (++this.curLine, this.lineStart = this.pos), chunkStart = this.pos;
    } else
      ++this.pos;
  }
};
pp.readInvalidTemplateToken = function() {
  for (; this.pos < this.input.length; this.pos++)
    switch (this.input[this.pos]) {
      case "\\":
        ++this.pos;
        break;
      case "$":
        if (this.input[this.pos + 1] !== "{")
          break;
      // fall through
      case "`":
        return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos));
      case "\r":
        this.input[this.pos + 1] === `
` && ++this.pos;
      // fall through
      case `
`:
      case "\u2028":
      case "\u2029":
        ++this.curLine, this.lineStart = this.pos + 1;
        break;
    }
  this.raise(this.start, "Unterminated template");
};
pp.readEscapedChar = function(inTemplate) {
  var ch = this.input.charCodeAt(++this.pos);
  switch (++this.pos, ch) {
    case 110:
      return `
`;
    // 'n' -> '\n'
    case 114:
      return "\r";
    // 'r' -> '\r'
    case 120:
      return String.fromCharCode(this.readHexChar(2));
    // 'x'
    case 117:
      return codePointToString(this.readCodePoint());
    // 'u'
    case 116:
      return "	";
    // 't' -> '\t'
    case 98:
      return "\b";
    // 'b' -> '\b'
    case 118:
      return "\v";
    // 'v' -> '\u000b'
    case 102:
      return "\f";
    // 'f' -> '\f'
    case 13:
      this.input.charCodeAt(this.pos) === 10 && ++this.pos;
    // '\r\n'
    case 10:
      return this.options.locations && (this.lineStart = this.pos, ++this.curLine), "";
    case 56:
    case 57:
      if (this.strict && this.invalidStringToken(
        this.pos - 1,
        "Invalid escape sequence"
      ), inTemplate) {
        var codePos = this.pos - 1;
        this.invalidStringToken(
          codePos,
          "Invalid escape sequence in template string"
        );
      }
    default:
      if (ch >= 48 && ch <= 55) {
        var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0], octal = parseInt(octalStr, 8);
        return octal > 255 && (octalStr = octalStr.slice(0, -1), octal = parseInt(octalStr, 8)), this.pos += octalStr.length - 1, ch = this.input.charCodeAt(this.pos), (octalStr !== "0" || ch === 56 || ch === 57) && (this.strict || inTemplate) && this.invalidStringToken(
          this.pos - 1 - octalStr.length,
          inTemplate ? "Octal literal in template string" : "Octal literal in strict mode"
        ), String.fromCharCode(octal);
      }
      return isNewLine(ch) ? (this.options.locations && (this.lineStart = this.pos, ++this.curLine), "") : String.fromCharCode(ch);
  }
};
pp.readHexChar = function(len) {
  var codePos = this.pos, n = this.readInt(16, len);
  return n === null && this.invalidStringToken(codePos, "Bad character escape sequence"), n;
};
pp.readWord1 = function() {
  this.containsEsc = !1;
  for (var word = "", first = !0, chunkStart = this.pos, astral = this.options.ecmaVersion >= 6; this.pos < this.input.length; ) {
    var ch = this.fullCharCodeAtPos();
    if (isIdentifierChar(ch, astral))
      this.pos += ch <= 65535 ? 1 : 2;
    else if (ch === 92) {
      this.containsEsc = !0, word += this.input.slice(chunkStart, this.pos);
      var escStart = this.pos;
      this.input.charCodeAt(++this.pos) !== 117 && this.invalidStringToken(this.pos, "Expecting Unicode escape sequence \\uXXXX"), ++this.pos;
      var esc = this.readCodePoint();
      (first ? isIdentifierStart : isIdentifierChar)(esc, astral) || this.invalidStringToken(escStart, "Invalid Unicode escape"), word += codePointToString(esc), chunkStart = this.pos;
    } else
      break;
    first = !1;
  }
  return word + this.input.slice(chunkStart, this.pos);
};
pp.readWord = function() {
  var word = this.readWord1(), type = types$1.name;
  return this.keywords.test(word) && (type = keywords[word]), this.finishToken(type, word);
};
var version = "8.15.0";
Parser.acorn = {
  Parser,
  version,
  defaultOptions,
  Position,
  SourceLocation,
  getLineInfo,
  Node,
  TokenType,
  tokTypes: types$1,
  keywordTypes: keywords,
  TokContext,
  tokContexts: types,
  isIdentifierChar,
  isIdentifierStart,
  Token,
  isNewLine,
  lineBreak,
  lineBreakG,
  nonASCIIwhitespace
};

// ../../../node_modules/micromark-extension-mdxjs/index.js
var import_acorn_jsx2 = __toESM(require_acorn_jsx2(), 1);

// ../../../node_modules/micromark-util-character/index.js
var unicodePunctuationInternal = regexCheck(new RegExp("\\p{P}", "u")), asciiAlpha = regexCheck(/[A-Za-z]/), asciiAlphanumeric = regexCheck(/[\dA-Za-z]/), asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/);
function asciiControl(code2) {
  return (
    // Special whitespace codes (which have negative values), C0 and Control
    // character DEL
    code2 !== null && (code2 < 32 || code2 === 127)
  );
}
var asciiDigit = regexCheck(/\d/), asciiHexDigit = regexCheck(/[\dA-Fa-f]/), asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);
function markdownLineEnding(code2) {
  return code2 !== null && code2 < -2;
}
function markdownLineEndingOrSpace(code2) {
  return code2 !== null && (code2 < 0 || code2 === 32);
}
function markdownSpace(code2) {
  return code2 === -2 || code2 === -1 || code2 === 32;
}
function unicodePunctuation(code2) {
  return asciiPunctuation(code2) || unicodePunctuationInternal(code2);
}
var unicodeWhitespace = regexCheck(/\s/);
function regexCheck(regex2) {
  return check;
  function check(code2) {
    return code2 !== null && code2 > -1 && regex2.test(String.fromCharCode(code2));
  }
}

// ../../../node_modules/micromark-factory-space/index.js
function factorySpace(effects, ok2, type, max) {
  let limit = max ? max - 1 : Number.POSITIVE_INFINITY, size = 0;
  return start2;
  function start2(code2) {
    return markdownSpace(code2) ? (effects.enter(type), prefix(code2)) : ok2(code2);
  }
  function prefix(code2) {
    return markdownSpace(code2) && size++ < limit ? (effects.consume(code2), prefix) : (effects.exit(type), ok2(code2));
  }
}

// ../../../node_modules/estree-util-visit/lib/color.node.js
function color(d) {
  return "\x1B[33m" + d + "\x1B[39m";
}

// ../../../node_modules/estree-util-visit/lib/index.js
var own7 = {}.hasOwnProperty, CONTINUE = Symbol("continue"), EXIT = Symbol("exit"), SKIP = Symbol("skip");
function visit2(tree, visitor) {
  let enter, leave;
  typeof visitor == "function" ? enter = visitor : visitor && typeof visitor == "object" && (visitor.enter && (enter = visitor.enter), visitor.leave && (leave = visitor.leave)), build(tree, void 0, void 0, [])();
  function build(node2, key2, index2, parents) {
    return nodelike(node2) && (visit3.displayName = "node (" + color(node2.type) + ")"), visit3;
    function visit3() {
      let result = enter ? toResult(enter(node2, key2, index2, parents)) : [];
      if (result[0] === EXIT)
        return result;
      if (result[0] !== SKIP) {
        let cKey;
        for (cKey in node2)
          if (own7.call(node2, cKey) && node2[cKey] && typeof node2[cKey] == "object" && // @ts-expect-error: custom esast extension.
          cKey !== "data" && // @ts-expect-error: custom esast extension.
          cKey !== "position") {
            let grandparents = parents.concat(node2), value = node2[cKey];
            if (Array.isArray(value)) {
              let nodes = (
                /** @type {Array<unknown>} */
                value
              ), cIndex = 0;
              for (; cIndex > -1 && cIndex < nodes.length; ) {
                let subvalue = nodes[cIndex];
                if (nodelike(subvalue)) {
                  let subresult = build(
                    subvalue,
                    cKey,
                    cIndex,
                    grandparents
                  )();
                  if (subresult[0] === EXIT) return subresult;
                  cIndex = typeof subresult[1] == "number" ? subresult[1] : cIndex + 1;
                } else
                  cIndex++;
              }
            } else if (nodelike(value)) {
              let subresult = build(value, cKey, void 0, grandparents)();
              if (subresult[0] === EXIT) return subresult;
            }
          }
      }
      return leave ? toResult(leave(node2, key2, index2, parents)) : result;
    }
  }
}
function toResult(value) {
  return Array.isArray(value) ? value : typeof value == "number" ? [CONTINUE, value] : [value];
}
function nodelike(value) {
  return !!(value && typeof value == "object" && "type" in value && typeof value.type == "string" && value.type.length > 0);
}

// ../../../node_modules/micromark-util-events-to-acorn/lib/index.js
function eventsToAcorn(events, options) {
  let prefix = options.prefix || "", suffix = options.suffix || "", acornOptions = Object.assign({}, options.acornOptions), comments = [], tokens = [], onComment = acornOptions.onComment, onToken = acornOptions.onToken, swallow = !1, estree, exception, acornConfig = Object.assign({}, acornOptions, {
    onComment: comments,
    preserveParens: !0
  });
  onToken && (acornConfig.onToken = tokens);
  let collection = collect(events, options.tokenTypes), source = collection.value, value = prefix + source + suffix, isEmptyExpression = options.expression && empty3(source);
  if (isEmptyExpression && !options.allowEmpty)
    throw new VFileMessage("Unexpected empty expression", {
      place: parseOffsetToUnistPoint(0),
      ruleId: "unexpected-empty-expression",
      source: "micromark-extension-mdx-expression"
    });
  try {
    estree = options.expression && !isEmptyExpression ? options.acorn.parseExpressionAt(value, 0, acornConfig) : options.acorn.parse(value, acornConfig);
  } catch (error_) {
    let error = (
      /** @type {AcornError} */
      error_
    ), point4 = parseOffsetToUnistPoint(error.pos);
    error.message = String(error.message).replace(/ \(\d+:\d+\)$/, ""), error.pos = point4.offset, error.loc = {
      line: point4.line,
      column: point4.column - 1
    }, exception = error, swallow = error.raisedAt >= prefix.length + source.length || // Broken comments are raised at their start, not their end.
    error.message === "Unterminated comment";
  }
  if (estree && options.expression && !isEmptyExpression)
    if (empty3(value.slice(estree.end, value.length - suffix.length)))
      estree = {
        type: "Program",
        start: 0,
        end: prefix.length + source.length,
        // @ts-expect-error: It’s good.
        body: [{
          type: "ExpressionStatement",
          expression: estree,
          start: 0,
          end: prefix.length + source.length
        }],
        sourceType: "module",
        comments: []
      };
    else {
      let point4 = parseOffsetToUnistPoint(estree.end), error = (
        /** @type {AcornError} */
        new Error("Unexpected content after expression")
      );
      error.pos = point4.offset, error.loc = {
        line: point4.line,
        column: point4.column - 1
      }, exception = error, estree = void 0;
    }
  if (estree) {
    if (estree.comments = comments, visit2(estree, function(esnode, field, index2, parents) {
      let context = (
        /** @type {AcornNode | Array<AcornNode>} */
        parents[parents.length - 1]
      ), property = field;
      esnode.type === "ParenthesizedExpression" && context && property && (typeof index2 == "number" && (context = context[property], property = index2), context[property] = esnode.expression), fixPosition(esnode);
    }), Array.isArray(onComment))
      onComment.push(...comments);
    else if (typeof onComment == "function")
      for (let comment2 of comments)
        onComment(comment2.type === "Block", comment2.value, comment2.start, comment2.end, comment2.loc.start, comment2.loc.end);
    for (let token of tokens)
      token.end <= prefix.length || token.start - prefix.length >= source.length || (fixPosition(token), Array.isArray(onToken) ? onToken.push(token) : onToken(token));
  }
  return {
    estree,
    error: exception,
    swallow
  };
  function fixPosition(nodeOrToken) {
    let pointStart2 = parseOffsetToUnistPoint(nodeOrToken.start), pointEnd2 = parseOffsetToUnistPoint(nodeOrToken.end);
    nodeOrToken.start = pointStart2.offset, nodeOrToken.end = pointEnd2.offset, nodeOrToken.loc = {
      start: {
        line: pointStart2.line,
        column: pointStart2.column - 1,
        // @ts-expect-error: not allowed by acorn types.
        offset: pointStart2.offset
      },
      end: {
        line: pointEnd2.line,
        column: pointEnd2.column - 1,
        // @ts-expect-error: not allowed by acorn types.
        offset: pointEnd2.offset
      }
    }, nodeOrToken.range = [nodeOrToken.start, nodeOrToken.end];
  }
  function parseOffsetToUnistPoint(acornOffset) {
    let sourceOffset = acornOffset - prefix.length;
    sourceOffset < 0 ? sourceOffset = 0 : sourceOffset > source.length && (sourceOffset = source.length);
    let point4 = relativeToPoint(collection.stops, sourceOffset);
    return point4 || (point4 = {
      line: options.start.line,
      column: options.start.column,
      offset: options.start.offset
    }), point4;
  }
}
function empty3(value) {
  return /^\s*$/.test(value.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/[^\r\n]*(\r\n|\n|\r)/g, ""));
}
function collect(events, tokenTypes) {
  let result = {
    value: "",
    stops: []
  }, index2 = -1;
  for (; ++index2 < events.length; ) {
    let event = events[index2];
    if (event[0] === "enter") {
      let type = event[1].type;
      if (type === "lineEnding" || tokenTypes.includes(type)) {
        let chunks = event[2].sliceStream(event[1]);
        for (; chunks.length > 0 && chunks[0] === -1; )
          chunks.shift();
        let value = serializeChunks(chunks);
        result.stops.push([result.value.length, event[1].start]), result.value += value, result.stops.push([result.value.length, event[1].end]);
      }
    }
  }
  return result;
}
function relativeToPoint(stops, relative) {
  let index2 = 0;
  for (; index2 < stops.length && stops[index2][0] <= relative; )
    index2 += 1;
  if (index2 === 0)
    return;
  let [stopRelative, stopAbsolute] = stops[index2 - 1], rest = relative - stopRelative;
  return {
    line: stopAbsolute.line,
    column: stopAbsolute.column + rest,
    offset: stopAbsolute.offset + rest
  };
}
function serializeChunks(chunks) {
  let index2 = -1, result = [], atTab;
  for (; ++index2 < chunks.length; ) {
    let chunk = chunks[index2], value;
    if (typeof chunk == "string")
      value = chunk;
    else switch (chunk) {
      case -5: {
        value = "\r";
        break;
      }
      case -4: {
        value = `
`;
        break;
      }
      case -3: {
        value = `\r
`;
        break;
      }
      case -2: {
        value = "	";
        break;
      }
      /* c8 ignore next 6 */
      case -1: {
        if (atTab) continue;
        value = " ";
        break;
      }
      default:
        value = String.fromCharCode(chunk);
    }
    atTab = chunk === -2, result.push(value);
  }
  return result.join("");
}

// ../../../node_modules/unist-util-position-from-estree/lib/index.js
function positionFromEstree(node2) {
  let nodeLike = node2 || {}, loc = nodeLike.loc || {}, range = nodeLike.range || [void 0, void 0], start2 = pointOrUndefined(loc.start, range[0] || nodeLike.start), end = pointOrUndefined(loc.end, range[1] || nodeLike.end);
  if (start2 && end)
    return { start: start2, end };
}
function pointOrUndefined(estreePoint, estreeOffset) {
  if (estreePoint && typeof estreePoint == "object") {
    let line = "line" in estreePoint ? numberOrUndefined(estreePoint.line) : void 0, column = "column" in estreePoint ? numberOrUndefined(estreePoint.column) : void 0;
    if (line && column !== void 0)
      return {
        line,
        column: column + 1,
        offset: numberOrUndefined(estreeOffset)
      };
  }
}
function numberOrUndefined(value) {
  return typeof value == "number" && value > -1 ? value : void 0;
}

// ../../../node_modules/micromark-factory-mdx-expression/index.js
var indentSize = 2, trouble = "https://github.com/micromark/micromark-extension-mdx-expression/tree/main/packages/micromark-extension-mdx-expression", unexpectedEndOfFileHash = "#unexpected-end-of-file-in-expression-expected-a-corresponding-closing-brace-for-", unexpectedLazyHash = "#unexpected-lazy-line-in-expression-in-container-expected-line-to-be-prefixed", nonSpreadHash = "#unexpected-type-in-code-expected-an-object-spread-spread", spreadExtraHash = "#unexpected-extra-content-in-spread-only-a-single-spread-is-supported", acornHash = "#could-not-parse-expression-with-acorn";
function factoryMdxExpression(effects, ok2, type, markerType, chunkType, acorn, acornOptions, addResult, spread, allowEmpty, allowLazy) {
  let self2 = this, eventStart = this.events.length + 3, size = 0, pointStart2, lastCrash;
  return start2;
  function start2(code2) {
    return effects.enter(type), effects.enter(markerType), effects.consume(code2), effects.exit(markerType), pointStart2 = self2.now(), before;
  }
  function before(code2) {
    if (code2 === null) {
      if (lastCrash) throw lastCrash;
      let error = new VFileMessage("Unexpected end of file in expression, expected a corresponding closing brace for `{`", {
        place: self2.now(),
        ruleId: "unexpected-eof",
        source: "micromark-extension-mdx-expression"
      });
      throw error.url = trouble + unexpectedEndOfFileHash, error;
    }
    if (markdownLineEnding(code2))
      return effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), eolAfter;
    if (code2 === 125 && size === 0) {
      let next = acorn ? mdxExpressionParse.call(self2, acorn, acornOptions, chunkType, eventStart, pointStart2, allowEmpty || !1, spread || !1) : {
        type: "ok",
        estree: void 0
      };
      if (next.type === "ok") {
        effects.enter(markerType), effects.consume(code2), effects.exit(markerType);
        let token = effects.exit(type);
        return addResult && next.estree && Object.assign(token, {
          estree: next.estree
        }), ok2;
      }
      return lastCrash = next.message, effects.enter(chunkType), effects.consume(code2), inside;
    }
    return effects.enter(chunkType), inside(code2);
  }
  function inside(code2) {
    return code2 === 125 && size === 0 || code2 === null || markdownLineEnding(code2) ? (effects.exit(chunkType), before(code2)) : (code2 === 123 && !acorn ? size += 1 : code2 === 125 && (size -= 1), effects.consume(code2), inside);
  }
  function eolAfter(code2) {
    let now = self2.now();
    if (now.line !== pointStart2.line && !allowLazy && self2.parser.lazy[now.line]) {
      let error = new VFileMessage("Unexpected lazy line in expression in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc", {
        place: self2.now(),
        ruleId: "unexpected-lazy",
        source: "micromark-extension-mdx-expression"
      });
      throw error.url = trouble + unexpectedLazyHash, error;
    }
    return markdownSpace(code2) ? factorySpace(effects, before, "linePrefix", indentSize + 1)(code2) : before(code2);
  }
}
function mdxExpressionParse(acorn, acornOptions, chunkType, eventStart, pointStart2, allowEmpty, spread) {
  let result = eventsToAcorn(this.events.slice(eventStart), {
    acorn,
    tokenTypes: [chunkType],
    acornOptions,
    start: pointStart2,
    expression: !0,
    allowEmpty,
    prefix: spread ? "({" : "",
    suffix: spread ? "})" : ""
  }), estree = result.estree;
  if (spread && estree) {
    let head = estree.body[0];
    if (head.type !== "ExpressionStatement" || head.expression.type !== "ObjectExpression") {
      let place = positionFromEstree(head), error = new VFileMessage("Unexpected `" + head.type + "` in code: expected an object spread (`{...spread}`)", {
        place: place.start,
        ruleId: "non-spread",
        source: "micromark-extension-mdx-expression"
      });
      throw error.url = trouble + nonSpreadHash, error;
    }
    if (head.expression.properties[1]) {
      let place = positionFromEstree(head.expression.properties[1]), error = new VFileMessage("Unexpected extra content in spread: only a single spread is supported", {
        place: place.start,
        ruleId: "spread-extra",
        source: "micromark-extension-mdx-expression"
      });
      throw error.url = trouble + spreadExtraHash, error;
    }
    if (head.expression.properties[0] && head.expression.properties[0].type !== "SpreadElement") {
      let place = positionFromEstree(head.expression.properties[0]), error = new VFileMessage("Unexpected `" + head.expression.properties[0].type + "` in code: only spread elements are supported", {
        place: place.start,
        ruleId: "non-spread",
        source: "micromark-extension-mdx-expression"
      });
      throw error.url = trouble + nonSpreadHash, error;
    }
  }
  if (result.error) {
    let error = new VFileMessage("Could not parse expression with acorn", {
      cause: result.error,
      place: {
        line: result.error.loc.line,
        column: result.error.loc.column + 1,
        offset: result.error.pos
      },
      ruleId: "acorn",
      source: "micromark-extension-mdx-expression"
    });
    return error.url = trouble + acornHash, {
      type: "nok",
      message: error
    };
  }
  return {
    type: "ok",
    estree
  };
}

// ../../../node_modules/micromark-extension-mdx-expression/lib/syntax.js
function mdxExpression2(options) {
  let options_ = options || {}, addResult = options_.addResult, acorn = options_.acorn, spread = options_.spread, allowEmpty = options_.allowEmpty, acornOptions;
  if (allowEmpty == null && (allowEmpty = !0), acorn) {
    if (!acorn.parseExpressionAt)
      throw new Error("Expected a proper `acorn` instance passed in as `options.acorn`");
    acornOptions = Object.assign({
      ecmaVersion: 2024,
      sourceType: "module"
    }, options_.acornOptions);
  } else if (options_.acornOptions || options_.addResult)
    throw new Error("Expected an `acorn` instance passed in as `options.acorn`");
  return {
    flow: {
      123: {
        name: "mdxFlowExpression",
        tokenize: tokenizeFlowExpression,
        concrete: !0
      }
    },
    text: {
      123: {
        name: "mdxTextExpression",
        tokenize: tokenizeTextExpression
      }
    }
  };
  function tokenizeFlowExpression(effects, ok2, nok) {
    let self2 = this;
    return start2;
    function start2(code2) {
      return before(code2);
    }
    function before(code2) {
      return factoryMdxExpression.call(self2, effects, after, "mdxFlowExpression", "mdxFlowExpressionMarker", "mdxFlowExpressionChunk", acorn, acornOptions, addResult, spread, allowEmpty)(code2);
    }
    function after(code2) {
      return markdownSpace(code2) ? factorySpace(effects, end, "whitespace")(code2) : end(code2);
    }
    function end(code2) {
      let lessThanValue = self2.parser.constructs.flow[60], jsxTag = (Array.isArray(lessThanValue) ? lessThanValue : (
        /* c8 ignore next 3 -- always a list when normalized. */
        lessThanValue ? [lessThanValue] : []
      )).find(function(d) {
        return d.name === "mdxJsxFlowTag";
      });
      return code2 === 60 && jsxTag ? effects.attempt(jsxTag, end, nok)(code2) : code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);
    }
  }
  function tokenizeTextExpression(effects, ok2) {
    let self2 = this;
    return start2;
    function start2(code2) {
      return factoryMdxExpression.call(self2, effects, ok2, "mdxTextExpression", "mdxTextExpressionMarker", "mdxTextExpressionChunk", acorn, acornOptions, addResult, spread, allowEmpty, !0)(code2);
    }
  }
}

// ../../../node_modules/micromark-extension-mdx-jsx/lib/factory-tag.js
var trouble2 = "https://github.com/micromark/micromark-extension-mdx-jsx";
function factoryTag(effects, ok2, 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) {
  let self2 = this, returnState, marker;
  return start2;
  function start2(code2) {
    return effects.enter(tagType), effects.enter(tagMarkerType), effects.consume(code2), effects.exit(tagMarkerType), startAfter;
  }
  function startAfter(code2) {
    return markdownLineEndingOrSpace(code2) ? nok(code2) : (returnState = nameBefore, esWhitespaceStart(code2));
  }
  function nameBefore(code2) {
    if (code2 === 47)
      return effects.enter(tagClosingMarkerType), effects.consume(code2), effects.exit(tagClosingMarkerType), returnState = closingTagNameBefore, esWhitespaceStart;
    if (code2 === 62)
      return tagEnd(code2);
    if (code2 !== null && code2 >= 0 && start(code2))
      return effects.enter(tagNameType), effects.enter(tagNamePrimaryType), effects.consume(code2), primaryName;
    crash(code2, "before name", "a character that can start a name, such as a letter, `$`, or `_`" + (code2 === 33 ? " (note: to create a comment in MDX, use `{/* text */}`)" : ""));
  }
  function closingTagNameBefore(code2) {
    if (code2 === 62)
      return tagEnd(code2);
    if (code2 !== null && code2 >= 0 && start(code2))
      return effects.enter(tagNameType), effects.enter(tagNamePrimaryType), effects.consume(code2), primaryName;
    crash(code2, "before name", "a character that can start a name, such as a letter, `$`, or `_`" + (code2 === 42 || code2 === 47 ? " (note: JS comments in JSX tags are not supported in MDX)" : ""));
  }
  function primaryName(code2) {
    if (code2 !== null && code2 >= 0 && cont(code2, {
      jsx: !0
    }))
      return effects.consume(code2), primaryName;
    if (code2 === 46 || code2 === 47 || code2 === 58 || code2 === 62 || code2 === 123 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2))
      return effects.exit(tagNamePrimaryType), returnState = primaryNameAfter, esWhitespaceStart(code2);
    crash(code2, "in name", "a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag" + (code2 === 64 ? " (note: to create a link in MDX, use `[text](url)`)" : ""));
  }
  function primaryNameAfter(code2) {
    if (code2 === 46)
      return effects.enter(tagNameMemberMarkerType), effects.consume(code2), effects.exit(tagNameMemberMarkerType), returnState = memberNameBefore, esWhitespaceStart;
    if (code2 === 58)
      return effects.enter(tagNamePrefixMarkerType), effects.consume(code2), effects.exit(tagNamePrefixMarkerType), returnState = localNameBefore, esWhitespaceStart;
    if (code2 === 47 || code2 === 62 || code2 === 123 || code2 !== null && code2 >= 0 && start(code2))
      return effects.exit(tagNameType), attributeBefore(code2);
    crash(code2, "after name", "a character that can start an attribute name, such as a letter, `$`, or `_`; whitespace before attributes; or the end of the tag");
  }
  function memberNameBefore(code2) {
    if (code2 !== null && code2 >= 0 && start(code2))
      return effects.enter(tagNameMemberType), effects.consume(code2), memberName;
    crash(code2, "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");
  }
  function memberName(code2) {
    if (code2 !== null && code2 >= 0 && cont(code2, {
      jsx: !0
    }))
      return effects.consume(code2), memberName;
    if (code2 === 46 || code2 === 47 || code2 === 62 || code2 === 123 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2))
      return effects.exit(tagNameMemberType), returnState = memberNameAfter, esWhitespaceStart(code2);
    crash(code2, "in member name", "a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag" + (code2 === 64 ? " (note: to create a link in MDX, use `[text](url)`)" : ""));
  }
  function memberNameAfter(code2) {
    if (code2 === 46)
      return effects.enter(tagNameMemberMarkerType), effects.consume(code2), effects.exit(tagNameMemberMarkerType), returnState = memberNameBefore, esWhitespaceStart;
    if (code2 === 47 || code2 === 62 || code2 === 123 || code2 !== null && code2 >= 0 && start(code2))
      return effects.exit(tagNameType), attributeBefore(code2);
    crash(code2, "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");
  }
  function localNameBefore(code2) {
    if (code2 !== null && code2 >= 0 && start(code2))
      return effects.enter(tagNameLocalType), effects.consume(code2), localName;
    crash(code2, "before local name", "a character that can start a name, such as a letter, `$`, or `_`" + (code2 === 43 || code2 !== null && code2 > 46 && code2 < 58 ? " (note: to create a link in MDX, use `[text](url)`)" : ""));
  }
  function localName(code2) {
    if (code2 !== null && code2 >= 0 && cont(code2, {
      jsx: !0
    }))
      return effects.consume(code2), localName;
    if (code2 === 47 || code2 === 62 || code2 === 123 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2))
      return effects.exit(tagNameLocalType), returnState = localNameAfter, esWhitespaceStart(code2);
    crash(code2, "in local name", "a name character such as letters, digits, `$`, or `_`; whitespace before attributes; or the end of the tag");
  }
  function localNameAfter(code2) {
    if (code2 === 47 || code2 === 62 || code2 === 123 || code2 !== null && code2 >= 0 && start(code2))
      return effects.exit(tagNameType), attributeBefore(code2);
    crash(code2, "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");
  }
  function attributeBefore(code2) {
    if (code2 === 47)
      return effects.enter(tagSelfClosingMarker), effects.consume(code2), effects.exit(tagSelfClosingMarker), returnState = selfClosing, esWhitespaceStart;
    if (code2 === 62)
      return tagEnd(code2);
    if (code2 === 123)
      return factoryMdxExpression.call(self2, effects, attributeExpressionAfter, tagExpressionAttributeType, tagExpressionAttributeMarkerType, tagExpressionAttributeValueType, acorn, acornOptions, addResult, !0, !1, allowLazy)(code2);
    if (code2 !== null && code2 >= 0 && start(code2))
      return effects.enter(tagAttributeType), effects.enter(tagAttributeNameType), effects.enter(tagAttributeNamePrimaryType), effects.consume(code2), attributePrimaryName;
    crash(code2, "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");
  }
  function attributeExpressionAfter(code2) {
    return returnState = attributeBefore, esWhitespaceStart(code2);
  }
  function attributePrimaryName(code2) {
    if (code2 !== null && code2 >= 0 && cont(code2, {
      jsx: !0
    }))
      return effects.consume(code2), attributePrimaryName;
    if (code2 === 47 || code2 === 58 || code2 === 61 || code2 === 62 || code2 === 123 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2))
      return effects.exit(tagAttributeNamePrimaryType), returnState = attributePrimaryNameAfter, esWhitespaceStart(code2);
    crash(code2, "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");
  }
  function attributePrimaryNameAfter(code2) {
    if (code2 === 58)
      return effects.enter(tagAttributeNamePrefixMarkerType), effects.consume(code2), effects.exit(tagAttributeNamePrefixMarkerType), returnState = attributeLocalNameBefore, esWhitespaceStart;
    if (code2 === 61)
      return effects.exit(tagAttributeNameType), effects.enter(tagAttributeInitializerMarkerType), effects.consume(code2), effects.exit(tagAttributeInitializerMarkerType), returnState = attributeValueBefore, esWhitespaceStart;
    if (code2 === 47 || code2 === 62 || code2 === 123 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2) || code2 !== null && code2 >= 0 && start(code2))
      return effects.exit(tagAttributeNameType), effects.exit(tagAttributeType), returnState = attributeBefore, esWhitespaceStart(code2);
    crash(code2, "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");
  }
  function attributeLocalNameBefore(code2) {
    if (code2 !== null && code2 >= 0 && start(code2))
      return effects.enter(tagAttributeNameLocalType), effects.consume(code2), attributeLocalName;
    crash(code2, "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");
  }
  function attributeLocalName(code2) {
    if (code2 !== null && code2 >= 0 && cont(code2, {
      jsx: !0
    }))
      return effects.consume(code2), attributeLocalName;
    if (code2 === 47 || code2 === 61 || code2 === 62 || code2 === 123 || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2))
      return effects.exit(tagAttributeNameLocalType), effects.exit(tagAttributeNameType), returnState = attributeLocalNameAfter, esWhitespaceStart(code2);
    crash(code2, "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");
  }
  function attributeLocalNameAfter(code2) {
    if (code2 === 61)
      return effects.enter(tagAttributeInitializerMarkerType), effects.consume(code2), effects.exit(tagAttributeInitializerMarkerType), returnState = attributeValueBefore, esWhitespaceStart;
    if (code2 === 47 || code2 === 62 || code2 === 123 || code2 !== null && code2 >= 0 && start(code2))
      return effects.exit(tagAttributeType), attributeBefore(code2);
    crash(code2, "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");
  }
  function attributeValueBefore(code2) {
    if (code2 === 34 || code2 === 39)
      return effects.enter(tagAttributeValueLiteralType), effects.enter(tagAttributeValueLiteralMarkerType), effects.consume(code2), effects.exit(tagAttributeValueLiteralMarkerType), marker = code2, attributeValueQuotedStart;
    if (code2 === 123)
      return factoryMdxExpression.call(self2, effects, attributeValueExpressionAfter, tagAttributeValueExpressionType, tagAttributeValueExpressionMarkerType, tagAttributeValueExpressionValueType, acorn, acornOptions, addResult, !1, !1, allowLazy)(code2);
    crash(code2, "before attribute value", "a character that can start an attribute value, such as `\"`, `'`, or `{`" + (code2 === 60 ? " (note: to use an element or fragment as a prop value in MDX, use `{<element />}`)" : ""));
  }
  function attributeValueExpressionAfter(code2) {
    return effects.exit(tagAttributeType), returnState = attributeBefore, esWhitespaceStart(code2);
  }
  function attributeValueQuotedStart(code2) {
    return code2 === null && crash(code2, "in attribute value", "a corresponding closing quote `" + String.fromCodePoint(marker) + "`"), code2 === marker ? (effects.enter(tagAttributeValueLiteralMarkerType), effects.consume(code2), effects.exit(tagAttributeValueLiteralMarkerType), effects.exit(tagAttributeValueLiteralType), effects.exit(tagAttributeType), marker = void 0, returnState = attributeBefore, esWhitespaceStart) : markdownLineEnding(code2) ? (returnState = attributeValueQuotedStart, esWhitespaceStart(code2)) : (effects.enter(tagAttributeValueLiteralValueType), attributeValueQuoted(code2));
  }
  function attributeValueQuoted(code2) {
    return code2 === null || code2 === marker || markdownLineEnding(code2) ? (effects.exit(tagAttributeValueLiteralValueType), attributeValueQuotedStart(code2)) : (effects.consume(code2), attributeValueQuoted);
  }
  function selfClosing(code2) {
    if (code2 === 62)
      return tagEnd(code2);
    crash(code2, "after self-closing slash", "`>` to end the tag" + (code2 === 42 || code2 === 47 ? " (note: JS comments in JSX tags are not supported in MDX)" : ""));
  }
  function tagEnd(code2) {
    return effects.enter(tagMarkerType), effects.consume(code2), effects.exit(tagMarkerType), effects.exit(tagType), ok2;
  }
  function esWhitespaceStart(code2) {
    return markdownLineEnding(code2) ? (effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), esWhitespaceEolAfter) : markdownSpace(code2) || unicodeWhitespace(code2) ? (effects.enter("esWhitespace"), esWhitespaceInside(code2)) : returnState(code2);
  }
  function esWhitespaceInside(code2) {
    return markdownLineEnding(code2) ? (effects.exit("esWhitespace"), esWhitespaceStart(code2)) : markdownSpace(code2) || unicodeWhitespace(code2) ? (effects.consume(code2), esWhitespaceInside) : (effects.exit("esWhitespace"), returnState(code2));
  }
  function esWhitespaceEolAfter(code2) {
    if (!allowLazy && self2.parser.lazy[self2.now().line]) {
      let 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", self2.now(), "micromark-extension-mdx-jsx:unexpected-lazy");
      throw error.url = trouble2 + "#unexpected-lazy-line-in-container-expected-line-to-be", error;
    }
    return esWhitespaceStart(code2);
  }
  function crash(code2, at2, expect) {
    let error = new VFileMessage("Unexpected " + (code2 === null ? "end of file" : "character `" + (code2 === 96 ? "` ` `" : String.fromCodePoint(code2)) + "` (" + serializeCharCode(code2) + ")") + " " + at2 + ", expected " + expect, self2.now(), "micromark-extension-mdx-jsx:unexpected-" + (code2 === null ? "eof" : "character"));
    throw error.url = trouble2 + (code2 === null ? "#unexpected-end-of-file-at-expected-expect" : "#unexpected-character-at-expected-expect"), error;
  }
}
function serializeCharCode(code2) {
  return "U+" + code2.toString(16).toUpperCase().padStart(4, "0");
}

// ../../../node_modules/micromark-extension-mdx-jsx/lib/jsx-text.js
function jsxText2(acorn, options) {
  return {
    name: "mdxJsxTextTag",
    tokenize: tokenizeJsxText
  };
  function tokenizeJsxText(effects, ok2, nok) {
    return factoryTag.call(this, effects, ok2, nok, acorn, options.acornOptions, options.addResult, !0, "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");
  }
}

// ../../../node_modules/micromark-extension-mdx-jsx/lib/jsx-flow.js
function jsxFlow(acorn, options) {
  return {
    concrete: !0,
    name: "mdxJsxFlowTag",
    tokenize: tokenizeJsxFlow
  };
  function tokenizeJsxFlow(effects, ok2, nok) {
    let self2 = this;
    return start2;
    function start2(code2) {
      return before(code2);
    }
    function before(code2) {
      return factoryTag.call(self2, effects, after, nok, acorn, options.acornOptions, options.addResult, !1, "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")(code2);
    }
    function after(code2) {
      return markdownSpace(code2) ? factorySpace(effects, end, "whitespace")(code2) : end(code2);
    }
    function end(code2) {
      let leftBraceValue = self2.parser.constructs.flow[123], constructs2 = Array.isArray(leftBraceValue) ? leftBraceValue : leftBraceValue ? [leftBraceValue] : [], expression;
      for (let construct of constructs2)
        if (construct.name === "mdxFlowExpression") {
          expression = construct;
          break;
        }
      return code2 === 60 ? (
        // We can’t just say: fine. Lines of blocks have to be parsed until an eol/eof.
        start2(code2)
      ) : code2 === 123 && expression ? effects.attempt(expression, end, nok)(code2) : code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);
    }
  }
}

// ../../../node_modules/micromark-extension-mdx-jsx/lib/syntax.js
function mdxJsx(options) {
  let settings = options || {}, acorn = settings.acorn, acornOptions;
  if (acorn) {
    if (!acorn.parse || !acorn.parseExpressionAt)
      throw new Error("Expected a proper `acorn` instance passed in as `options.acorn`");
    acornOptions = Object.assign({
      ecmaVersion: 2024,
      sourceType: "module"
    }, settings.acornOptions, {
      locations: !0
    });
  } else if (settings.acornOptions || settings.addResult)
    throw new Error("Expected an `acorn` instance passed in as `options.acorn`");
  return {
    flow: {
      60: jsxFlow(acorn || void 0, {
        acornOptions,
        addResult: settings.addResult || void 0
      })
    },
    text: {
      60: jsxText2(acorn || void 0, {
        acornOptions,
        addResult: settings.addResult || void 0
      })
    }
  };
}

// ../../../node_modules/micromark-extension-mdx-md/index.js
function mdxMd() {
  return {
    disable: { null: ["autolink", "codeIndented", "htmlFlow", "htmlText"] }
  };
}

// ../../../node_modules/micromark-util-chunked/index.js
function splice(list3, start2, remove, items) {
  let end = list3.length, chunkStart = 0, parameters;
  if (start2 < 0 ? start2 = -start2 > end ? 0 : end + start2 : start2 = start2 > end ? end : start2, remove = remove > 0 ? remove : 0, items.length < 1e4)
    parameters = Array.from(items), parameters.unshift(start2, remove), list3.splice(...parameters);
  else
    for (remove && list3.splice(start2, remove); chunkStart < items.length; )
      parameters = items.slice(chunkStart, chunkStart + 1e4), parameters.unshift(start2, 0), list3.splice(...parameters), chunkStart += 1e4, start2 += 1e4;
}
function push(list3, items) {
  return list3.length > 0 ? (splice(list3, list3.length, 0, items), list3) : items;
}

// ../../../node_modules/micromark-util-classify-character/index.js
function classifyCharacter(code2) {
  if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2))
    return 1;
  if (unicodePunctuation(code2))
    return 2;
}

// ../../../node_modules/micromark-util-resolve-all/index.js
function resolveAll(constructs2, events, context) {
  let called = [], index2 = -1;
  for (; ++index2 < constructs2.length; ) {
    let resolve = constructs2[index2].resolveAll;
    resolve && !called.includes(resolve) && (events = resolve(events, context), called.push(resolve));
  }
  return events;
}

// ../../../node_modules/micromark-core-commonmark/lib/attention.js
var attention = {
  name: "attention",
  tokenize: tokenizeAttention,
  resolveAll: resolveAllAttention
};
function resolveAllAttention(events, context) {
  let index2 = -1, open, group, text5, openingSequence, closingSequence, use, nextEvents, offset2;
  for (; ++index2 < events.length; )
    if (events[index2][0] === "enter" && events[index2][1].type === "attentionSequence" && events[index2][1]._close) {
      for (open = index2; open--; )
        if (events[open][0] === "exit" && events[open][1].type === "attentionSequence" && events[open][1]._open && // If the markers are the same:
        context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index2][1]).charCodeAt(0)) {
          if ((events[open][1]._close || events[index2][1]._open) && (events[index2][1].end.offset - events[index2][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index2][1].end.offset - events[index2][1].start.offset) % 3))
            continue;
          use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index2][1].end.offset - events[index2][1].start.offset > 1 ? 2 : 1;
          let start2 = Object.assign({}, events[open][1].end), end = Object.assign({}, events[index2][1].start);
          movePoint(start2, -use), movePoint(end, use), openingSequence = {
            type: use > 1 ? "strongSequence" : "emphasisSequence",
            start: start2,
            end: Object.assign({}, events[open][1].end)
          }, closingSequence = {
            type: use > 1 ? "strongSequence" : "emphasisSequence",
            start: Object.assign({}, events[index2][1].start),
            end
          }, text5 = {
            type: use > 1 ? "strongText" : "emphasisText",
            start: Object.assign({}, events[open][1].end),
            end: Object.assign({}, events[index2][1].start)
          }, group = {
            type: use > 1 ? "strong" : "emphasis",
            start: Object.assign({}, openingSequence.start),
            end: Object.assign({}, closingSequence.end)
          }, events[open][1].end = Object.assign({}, openingSequence.start), events[index2][1].start = Object.assign({}, closingSequence.end), nextEvents = [], events[open][1].end.offset - events[open][1].start.offset && (nextEvents = push(nextEvents, [
            ["enter", events[open][1], context],
            ["exit", events[open][1], context]
          ])), nextEvents = push(nextEvents, [
            ["enter", group, context],
            ["enter", openingSequence, context],
            ["exit", openingSequence, context],
            ["enter", text5, context]
          ]), nextEvents = push(
            nextEvents,
            resolveAll(
              context.parser.constructs.insideSpan.null,
              events.slice(open + 1, index2),
              context
            )
          ), nextEvents = push(nextEvents, [
            ["exit", text5, context],
            ["enter", closingSequence, context],
            ["exit", closingSequence, context],
            ["exit", group, context]
          ]), events[index2][1].end.offset - events[index2][1].start.offset ? (offset2 = 2, nextEvents = push(nextEvents, [
            ["enter", events[index2][1], context],
            ["exit", events[index2][1], context]
          ])) : offset2 = 0, splice(events, open - 1, index2 - open + 3, nextEvents), index2 = open + nextEvents.length - offset2 - 2;
          break;
        }
    }
  for (index2 = -1; ++index2 < events.length; )
    events[index2][1].type === "attentionSequence" && (events[index2][1].type = "data");
  return events;
}
function tokenizeAttention(effects, ok2) {
  let attentionMarkers2 = this.parser.constructs.attentionMarkers.null, previous2 = this.previous, before = classifyCharacter(previous2), marker;
  return start2;
  function start2(code2) {
    return marker = code2, effects.enter("attentionSequence"), inside(code2);
  }
  function inside(code2) {
    if (code2 === marker)
      return effects.consume(code2), inside;
    let token = effects.exit("attentionSequence"), after = classifyCharacter(code2), open = !after || after === 2 && before || attentionMarkers2.includes(code2), close = !before || before === 2 && after || attentionMarkers2.includes(previous2);
    return token._open = !!(marker === 42 ? open : open && (before || !close)), token._close = !!(marker === 42 ? close : close && (after || !open)), ok2(code2);
  }
}
function movePoint(point4, offset2) {
  point4.column += offset2, point4.offset += offset2, point4._bufferIndex += offset2;
}

// ../../../node_modules/micromark-core-commonmark/lib/autolink.js
var autolink = {
  name: "autolink",
  tokenize: tokenizeAutolink
};
function tokenizeAutolink(effects, ok2, nok) {
  let size = 0;
  return start2;
  function start2(code2) {
    return effects.enter("autolink"), effects.enter("autolinkMarker"), effects.consume(code2), effects.exit("autolinkMarker"), effects.enter("autolinkProtocol"), open;
  }
  function open(code2) {
    return asciiAlpha(code2) ? (effects.consume(code2), schemeOrEmailAtext) : emailAtext(code2);
  }
  function schemeOrEmailAtext(code2) {
    return code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2) ? (size = 1, schemeInsideOrEmailAtext(code2)) : emailAtext(code2);
  }
  function schemeInsideOrEmailAtext(code2) {
    return code2 === 58 ? (effects.consume(code2), size = 0, urlInside) : (code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) && size++ < 32 ? (effects.consume(code2), schemeInsideOrEmailAtext) : (size = 0, emailAtext(code2));
  }
  function urlInside(code2) {
    return code2 === 62 ? (effects.exit("autolinkProtocol"), effects.enter("autolinkMarker"), effects.consume(code2), effects.exit("autolinkMarker"), effects.exit("autolink"), ok2) : code2 === null || code2 === 32 || code2 === 60 || asciiControl(code2) ? nok(code2) : (effects.consume(code2), urlInside);
  }
  function emailAtext(code2) {
    return code2 === 64 ? (effects.consume(code2), emailAtSignOrDot) : asciiAtext(code2) ? (effects.consume(code2), emailAtext) : nok(code2);
  }
  function emailAtSignOrDot(code2) {
    return asciiAlphanumeric(code2) ? emailLabel(code2) : nok(code2);
  }
  function emailLabel(code2) {
    return code2 === 46 ? (effects.consume(code2), size = 0, emailAtSignOrDot) : code2 === 62 ? (effects.exit("autolinkProtocol").type = "autolinkEmail", effects.enter("autolinkMarker"), effects.consume(code2), effects.exit("autolinkMarker"), effects.exit("autolink"), ok2) : emailValue(code2);
  }
  function emailValue(code2) {
    if ((code2 === 45 || asciiAlphanumeric(code2)) && size++ < 63) {
      let next = code2 === 45 ? emailValue : emailLabel;
      return effects.consume(code2), next;
    }
    return nok(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/blank-line.js
var blankLine = {
  tokenize: tokenizeBlankLine,
  partial: !0
};
function tokenizeBlankLine(effects, ok2, nok) {
  return start2;
  function start2(code2) {
    return markdownSpace(code2) ? factorySpace(effects, after, "linePrefix")(code2) : after(code2);
  }
  function after(code2) {
    return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/block-quote.js
var blockQuote = {
  name: "blockQuote",
  tokenize: tokenizeBlockQuoteStart,
  continuation: {
    tokenize: tokenizeBlockQuoteContinuation
  },
  exit
};
function tokenizeBlockQuoteStart(effects, ok2, nok) {
  let self2 = this;
  return start2;
  function start2(code2) {
    if (code2 === 62) {
      let state = self2.containerState;
      return state.open || (effects.enter("blockQuote", {
        _container: !0
      }), state.open = !0), effects.enter("blockQuotePrefix"), effects.enter("blockQuoteMarker"), effects.consume(code2), effects.exit("blockQuoteMarker"), after;
    }
    return nok(code2);
  }
  function after(code2) {
    return markdownSpace(code2) ? (effects.enter("blockQuotePrefixWhitespace"), effects.consume(code2), effects.exit("blockQuotePrefixWhitespace"), effects.exit("blockQuotePrefix"), ok2) : (effects.exit("blockQuotePrefix"), ok2(code2));
  }
}
function tokenizeBlockQuoteContinuation(effects, ok2, nok) {
  let self2 = this;
  return contStart;
  function contStart(code2) {
    return markdownSpace(code2) ? factorySpace(
      effects,
      contBefore,
      "linePrefix",
      self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
    )(code2) : contBefore(code2);
  }
  function contBefore(code2) {
    return effects.attempt(blockQuote, ok2, nok)(code2);
  }
}
function exit(effects) {
  effects.exit("blockQuote");
}

// ../../../node_modules/micromark-core-commonmark/lib/character-escape.js
var characterEscape = {
  name: "characterEscape",
  tokenize: tokenizeCharacterEscape
};
function tokenizeCharacterEscape(effects, ok2, nok) {
  return start2;
  function start2(code2) {
    return effects.enter("characterEscape"), effects.enter("escapeMarker"), effects.consume(code2), effects.exit("escapeMarker"), inside;
  }
  function inside(code2) {
    return asciiPunctuation(code2) ? (effects.enter("characterEscapeValue"), effects.consume(code2), effects.exit("characterEscapeValue"), effects.exit("characterEscape"), ok2) : nok(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/character-reference.js
var characterReference = {
  name: "characterReference",
  tokenize: tokenizeCharacterReference
};
function tokenizeCharacterReference(effects, ok2, nok) {
  let self2 = this, size = 0, max, test;
  return start2;
  function start2(code2) {
    return effects.enter("characterReference"), effects.enter("characterReferenceMarker"), effects.consume(code2), effects.exit("characterReferenceMarker"), open;
  }
  function open(code2) {
    return code2 === 35 ? (effects.enter("characterReferenceMarkerNumeric"), effects.consume(code2), effects.exit("characterReferenceMarkerNumeric"), numeric) : (effects.enter("characterReferenceValue"), max = 31, test = asciiAlphanumeric, value(code2));
  }
  function numeric(code2) {
    return code2 === 88 || code2 === 120 ? (effects.enter("characterReferenceMarkerHexadecimal"), effects.consume(code2), effects.exit("characterReferenceMarkerHexadecimal"), effects.enter("characterReferenceValue"), max = 6, test = asciiHexDigit, value) : (effects.enter("characterReferenceValue"), max = 7, test = asciiDigit, value(code2));
  }
  function value(code2) {
    if (code2 === 59 && size) {
      let token = effects.exit("characterReferenceValue");
      return test === asciiAlphanumeric && !decodeNamedCharacterReference(self2.sliceSerialize(token)) ? nok(code2) : (effects.enter("characterReferenceMarker"), effects.consume(code2), effects.exit("characterReferenceMarker"), effects.exit("characterReference"), ok2);
    }
    return test(code2) && size++ < max ? (effects.consume(code2), value) : nok(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/code-fenced.js
var nonLazyContinuation = {
  tokenize: tokenizeNonLazyContinuation,
  partial: !0
}, codeFenced = {
  name: "codeFenced",
  tokenize: tokenizeCodeFenced,
  concrete: !0
};
function tokenizeCodeFenced(effects, ok2, nok) {
  let self2 = this, closeStart = {
    tokenize: tokenizeCloseStart,
    partial: !0
  }, initialPrefix = 0, sizeOpen = 0, marker;
  return start2;
  function start2(code2) {
    return beforeSequenceOpen(code2);
  }
  function beforeSequenceOpen(code2) {
    let tail = self2.events[self2.events.length - 1];
    return initialPrefix = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], !0).length : 0, marker = code2, effects.enter("codeFenced"), effects.enter("codeFencedFence"), effects.enter("codeFencedFenceSequence"), sequenceOpen(code2);
  }
  function sequenceOpen(code2) {
    return code2 === marker ? (sizeOpen++, effects.consume(code2), sequenceOpen) : sizeOpen < 3 ? nok(code2) : (effects.exit("codeFencedFenceSequence"), markdownSpace(code2) ? factorySpace(effects, infoBefore, "whitespace")(code2) : infoBefore(code2));
  }
  function infoBefore(code2) {
    return code2 === null || markdownLineEnding(code2) ? (effects.exit("codeFencedFence"), self2.interrupt ? ok2(code2) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code2)) : (effects.enter("codeFencedFenceInfo"), effects.enter("chunkString", {
      contentType: "string"
    }), info(code2));
  }
  function info(code2) {
    return code2 === null || markdownLineEnding(code2) ? (effects.exit("chunkString"), effects.exit("codeFencedFenceInfo"), infoBefore(code2)) : markdownSpace(code2) ? (effects.exit("chunkString"), effects.exit("codeFencedFenceInfo"), factorySpace(effects, metaBefore, "whitespace")(code2)) : code2 === 96 && code2 === marker ? nok(code2) : (effects.consume(code2), info);
  }
  function metaBefore(code2) {
    return code2 === null || markdownLineEnding(code2) ? infoBefore(code2) : (effects.enter("codeFencedFenceMeta"), effects.enter("chunkString", {
      contentType: "string"
    }), meta(code2));
  }
  function meta(code2) {
    return code2 === null || markdownLineEnding(code2) ? (effects.exit("chunkString"), effects.exit("codeFencedFenceMeta"), infoBefore(code2)) : code2 === 96 && code2 === marker ? nok(code2) : (effects.consume(code2), meta);
  }
  function atNonLazyBreak(code2) {
    return effects.attempt(closeStart, after, contentBefore)(code2);
  }
  function contentBefore(code2) {
    return effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), contentStart;
  }
  function contentStart(code2) {
    return initialPrefix > 0 && markdownSpace(code2) ? factorySpace(
      effects,
      beforeContentChunk,
      "linePrefix",
      initialPrefix + 1
    )(code2) : beforeContentChunk(code2);
  }
  function beforeContentChunk(code2) {
    return code2 === null || markdownLineEnding(code2) ? effects.check(nonLazyContinuation, atNonLazyBreak, after)(code2) : (effects.enter("codeFlowValue"), contentChunk(code2));
  }
  function contentChunk(code2) {
    return code2 === null || markdownLineEnding(code2) ? (effects.exit("codeFlowValue"), beforeContentChunk(code2)) : (effects.consume(code2), contentChunk);
  }
  function after(code2) {
    return effects.exit("codeFenced"), ok2(code2);
  }
  function tokenizeCloseStart(effects2, ok3, nok2) {
    let size = 0;
    return startBefore;
    function startBefore(code2) {
      return effects2.enter("lineEnding"), effects2.consume(code2), effects2.exit("lineEnding"), start3;
    }
    function start3(code2) {
      return effects2.enter("codeFencedFence"), markdownSpace(code2) ? factorySpace(
        effects2,
        beforeSequenceClose,
        "linePrefix",
        self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
      )(code2) : beforeSequenceClose(code2);
    }
    function beforeSequenceClose(code2) {
      return code2 === marker ? (effects2.enter("codeFencedFenceSequence"), sequenceClose(code2)) : nok2(code2);
    }
    function sequenceClose(code2) {
      return code2 === marker ? (size++, effects2.consume(code2), sequenceClose) : size >= sizeOpen ? (effects2.exit("codeFencedFenceSequence"), markdownSpace(code2) ? factorySpace(effects2, sequenceCloseAfter, "whitespace")(code2) : sequenceCloseAfter(code2)) : nok2(code2);
    }
    function sequenceCloseAfter(code2) {
      return code2 === null || markdownLineEnding(code2) ? (effects2.exit("codeFencedFence"), ok3(code2)) : nok2(code2);
    }
  }
}
function tokenizeNonLazyContinuation(effects, ok2, nok) {
  let self2 = this;
  return start2;
  function start2(code2) {
    return code2 === null ? nok(code2) : (effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), lineStart);
  }
  function lineStart(code2) {
    return self2.parser.lazy[self2.now().line] ? nok(code2) : ok2(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/code-indented.js
var codeIndented = {
  name: "codeIndented",
  tokenize: tokenizeCodeIndented
}, furtherStart = {
  tokenize: tokenizeFurtherStart,
  partial: !0
};
function tokenizeCodeIndented(effects, ok2, nok) {
  let self2 = this;
  return start2;
  function start2(code2) {
    return effects.enter("codeIndented"), factorySpace(effects, afterPrefix, "linePrefix", 5)(code2);
  }
  function afterPrefix(code2) {
    let tail = self2.events[self2.events.length - 1];
    return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], !0).length >= 4 ? atBreak(code2) : nok(code2);
  }
  function atBreak(code2) {
    return code2 === null ? after(code2) : markdownLineEnding(code2) ? effects.attempt(furtherStart, atBreak, after)(code2) : (effects.enter("codeFlowValue"), inside(code2));
  }
  function inside(code2) {
    return code2 === null || markdownLineEnding(code2) ? (effects.exit("codeFlowValue"), atBreak(code2)) : (effects.consume(code2), inside);
  }
  function after(code2) {
    return effects.exit("codeIndented"), ok2(code2);
  }
}
function tokenizeFurtherStart(effects, ok2, nok) {
  let self2 = this;
  return furtherStart2;
  function furtherStart2(code2) {
    return self2.parser.lazy[self2.now().line] ? nok(code2) : markdownLineEnding(code2) ? (effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), furtherStart2) : factorySpace(effects, afterPrefix, "linePrefix", 5)(code2);
  }
  function afterPrefix(code2) {
    let tail = self2.events[self2.events.length - 1];
    return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], !0).length >= 4 ? ok2(code2) : markdownLineEnding(code2) ? furtherStart2(code2) : nok(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/code-text.js
var codeText = {
  name: "codeText",
  tokenize: tokenizeCodeText,
  resolve: resolveCodeText,
  previous
};
function resolveCodeText(events) {
  let tailExitIndex = events.length - 4, headEnterIndex = 3, index2, enter;
  if ((events[headEnterIndex][1].type === "lineEnding" || events[headEnterIndex][1].type === "space") && (events[tailExitIndex][1].type === "lineEnding" || events[tailExitIndex][1].type === "space")) {
    for (index2 = headEnterIndex; ++index2 < tailExitIndex; )
      if (events[index2][1].type === "codeTextData") {
        events[headEnterIndex][1].type = "codeTextPadding", events[tailExitIndex][1].type = "codeTextPadding", headEnterIndex += 2, tailExitIndex -= 2;
        break;
      }
  }
  for (index2 = headEnterIndex - 1, tailExitIndex++; ++index2 <= tailExitIndex; )
    enter === void 0 ? index2 !== tailExitIndex && events[index2][1].type !== "lineEnding" && (enter = index2) : (index2 === tailExitIndex || events[index2][1].type === "lineEnding") && (events[enter][1].type = "codeTextData", index2 !== enter + 2 && (events[enter][1].end = events[index2 - 1][1].end, events.splice(enter + 2, index2 - enter - 2), tailExitIndex -= index2 - enter - 2, index2 = enter + 2), enter = void 0);
  return events;
}
function previous(code2) {
  return code2 !== 96 || this.events[this.events.length - 1][1].type === "characterEscape";
}
function tokenizeCodeText(effects, ok2, nok) {
  let self2 = this, sizeOpen = 0, size, token;
  return start2;
  function start2(code2) {
    return effects.enter("codeText"), effects.enter("codeTextSequence"), sequenceOpen(code2);
  }
  function sequenceOpen(code2) {
    return code2 === 96 ? (effects.consume(code2), sizeOpen++, sequenceOpen) : (effects.exit("codeTextSequence"), between(code2));
  }
  function between(code2) {
    return code2 === null ? nok(code2) : code2 === 32 ? (effects.enter("space"), effects.consume(code2), effects.exit("space"), between) : code2 === 96 ? (token = effects.enter("codeTextSequence"), size = 0, sequenceClose(code2)) : markdownLineEnding(code2) ? (effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), between) : (effects.enter("codeTextData"), data2(code2));
  }
  function data2(code2) {
    return code2 === null || code2 === 32 || code2 === 96 || markdownLineEnding(code2) ? (effects.exit("codeTextData"), between(code2)) : (effects.consume(code2), data2);
  }
  function sequenceClose(code2) {
    return code2 === 96 ? (effects.consume(code2), size++, sequenceClose) : size === sizeOpen ? (effects.exit("codeTextSequence"), effects.exit("codeText"), ok2(code2)) : (token.type = "codeTextData", data2(code2));
  }
}

// ../../../node_modules/micromark-util-subtokenize/index.js
function subtokenize(events) {
  let jumps = {}, index2 = -1, event, lineIndex, otherIndex, otherEvent, parameters, subevents, more;
  for (; ++index2 < events.length; ) {
    for (; index2 in jumps; )
      index2 = jumps[index2];
    if (event = events[index2], index2 && event[1].type === "chunkFlow" && events[index2 - 1][1].type === "listItemPrefix" && (subevents = event[1]._tokenizer.events, otherIndex = 0, otherIndex < subevents.length && subevents[otherIndex][1].type === "lineEndingBlank" && (otherIndex += 2), otherIndex < subevents.length && subevents[otherIndex][1].type === "content"))
      for (; ++otherIndex < subevents.length && subevents[otherIndex][1].type !== "content"; )
        subevents[otherIndex][1].type === "chunkText" && (subevents[otherIndex][1]._isInFirstContentOfListItem = !0, otherIndex++);
    if (event[0] === "enter")
      event[1].contentType && (Object.assign(jumps, subcontent(events, index2)), index2 = jumps[index2], more = !0);
    else if (event[1]._container) {
      for (otherIndex = index2, lineIndex = void 0; otherIndex-- && (otherEvent = events[otherIndex], otherEvent[1].type === "lineEnding" || otherEvent[1].type === "lineEndingBlank"); )
        otherEvent[0] === "enter" && (lineIndex && (events[lineIndex][1].type = "lineEndingBlank"), otherEvent[1].type = "lineEnding", lineIndex = otherIndex);
      lineIndex && (event[1].end = Object.assign({}, events[lineIndex][1].start), parameters = events.slice(lineIndex, index2), parameters.unshift(event), splice(events, lineIndex, index2 - lineIndex + 1, parameters));
    }
  }
  return !more;
}
function subcontent(events, eventIndex) {
  let token = events[eventIndex][1], context = events[eventIndex][2], startPosition = eventIndex - 1, startPositions = [], tokenizer2 = token._tokenizer || context.parser[token.contentType](token.start), childEvents = tokenizer2.events, jumps = [], gaps = {}, stream, previous2, index2 = -1, current2 = token, adjust = 0, start2 = 0, breaks = [start2];
  for (; current2; ) {
    for (; events[++startPosition][1] !== current2; )
      ;
    startPositions.push(startPosition), current2._tokenizer || (stream = context.sliceStream(current2), current2.next || stream.push(null), previous2 && tokenizer2.defineSkip(current2.start), current2._isInFirstContentOfListItem && (tokenizer2._gfmTasklistFirstContentOfListItem = !0), tokenizer2.write(stream), current2._isInFirstContentOfListItem && (tokenizer2._gfmTasklistFirstContentOfListItem = void 0)), previous2 = current2, current2 = current2.next;
  }
  for (current2 = token; ++index2 < childEvents.length; )
    // Find a void token that includes a break.
    childEvents[index2][0] === "exit" && childEvents[index2 - 1][0] === "enter" && childEvents[index2][1].type === childEvents[index2 - 1][1].type && childEvents[index2][1].start.line !== childEvents[index2][1].end.line && (start2 = index2 + 1, breaks.push(start2), current2._tokenizer = void 0, current2.previous = void 0, current2 = current2.next);
  for (tokenizer2.events = [], current2 ? (current2._tokenizer = void 0, current2.previous = void 0) : breaks.pop(), index2 = breaks.length; index2--; ) {
    let slice2 = childEvents.slice(breaks[index2], breaks[index2 + 1]), start3 = startPositions.pop();
    jumps.unshift([start3, start3 + slice2.length - 1]), splice(events, start3, 2, slice2);
  }
  for (index2 = -1; ++index2 < jumps.length; )
    gaps[adjust + jumps[index2][0]] = adjust + jumps[index2][1], adjust += jumps[index2][1] - jumps[index2][0] - 1;
  return gaps;
}

// ../../../node_modules/micromark-core-commonmark/lib/content.js
var content = {
  tokenize: tokenizeContent,
  resolve: resolveContent
}, continuationConstruct = {
  tokenize: tokenizeContinuation,
  partial: !0
};
function resolveContent(events) {
  return subtokenize(events), events;
}
function tokenizeContent(effects, ok2) {
  let previous2;
  return chunkStart;
  function chunkStart(code2) {
    return effects.enter("content"), previous2 = effects.enter("chunkContent", {
      contentType: "content"
    }), chunkInside(code2);
  }
  function chunkInside(code2) {
    return code2 === null ? contentEnd(code2) : markdownLineEnding(code2) ? effects.check(
      continuationConstruct,
      contentContinue,
      contentEnd
    )(code2) : (effects.consume(code2), chunkInside);
  }
  function contentEnd(code2) {
    return effects.exit("chunkContent"), effects.exit("content"), ok2(code2);
  }
  function contentContinue(code2) {
    return effects.consume(code2), effects.exit("chunkContent"), previous2.next = effects.enter("chunkContent", {
      contentType: "content",
      previous: previous2
    }), previous2 = previous2.next, chunkInside;
  }
}
function tokenizeContinuation(effects, ok2, nok) {
  let self2 = this;
  return startLookahead;
  function startLookahead(code2) {
    return effects.exit("chunkContent"), effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), factorySpace(effects, prefixed, "linePrefix");
  }
  function prefixed(code2) {
    if (code2 === null || markdownLineEnding(code2))
      return nok(code2);
    let tail = self2.events[self2.events.length - 1];
    return !self2.parser.constructs.disable.null.includes("codeIndented") && tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], !0).length >= 4 ? ok2(code2) : effects.interrupt(self2.parser.constructs.flow, nok, ok2)(code2);
  }
}

// ../../../node_modules/micromark-factory-destination/index.js
function factoryDestination(effects, ok2, nok, type, literalType, literalMarkerType, rawType, stringType, max) {
  let limit = max || Number.POSITIVE_INFINITY, balance = 0;
  return start2;
  function start2(code2) {
    return code2 === 60 ? (effects.enter(type), effects.enter(literalType), effects.enter(literalMarkerType), effects.consume(code2), effects.exit(literalMarkerType), enclosedBefore) : code2 === null || code2 === 32 || code2 === 41 || asciiControl(code2) ? nok(code2) : (effects.enter(type), effects.enter(rawType), effects.enter(stringType), effects.enter("chunkString", {
      contentType: "string"
    }), raw(code2));
  }
  function enclosedBefore(code2) {
    return code2 === 62 ? (effects.enter(literalMarkerType), effects.consume(code2), effects.exit(literalMarkerType), effects.exit(literalType), effects.exit(type), ok2) : (effects.enter(stringType), effects.enter("chunkString", {
      contentType: "string"
    }), enclosed(code2));
  }
  function enclosed(code2) {
    return code2 === 62 ? (effects.exit("chunkString"), effects.exit(stringType), enclosedBefore(code2)) : code2 === null || code2 === 60 || markdownLineEnding(code2) ? nok(code2) : (effects.consume(code2), code2 === 92 ? enclosedEscape : enclosed);
  }
  function enclosedEscape(code2) {
    return code2 === 60 || code2 === 62 || code2 === 92 ? (effects.consume(code2), enclosed) : enclosed(code2);
  }
  function raw(code2) {
    return !balance && (code2 === null || code2 === 41 || markdownLineEndingOrSpace(code2)) ? (effects.exit("chunkString"), effects.exit(stringType), effects.exit(rawType), effects.exit(type), ok2(code2)) : balance < limit && code2 === 40 ? (effects.consume(code2), balance++, raw) : code2 === 41 ? (effects.consume(code2), balance--, raw) : code2 === null || code2 === 32 || code2 === 40 || asciiControl(code2) ? nok(code2) : (effects.consume(code2), code2 === 92 ? rawEscape : raw);
  }
  function rawEscape(code2) {
    return code2 === 40 || code2 === 41 || code2 === 92 ? (effects.consume(code2), raw) : raw(code2);
  }
}

// ../../../node_modules/micromark-factory-label/index.js
function factoryLabel(effects, ok2, nok, type, markerType, stringType) {
  let self2 = this, size = 0, seen;
  return start2;
  function start2(code2) {
    return effects.enter(type), effects.enter(markerType), effects.consume(code2), effects.exit(markerType), effects.enter(stringType), atBreak;
  }
  function atBreak(code2) {
    return size > 999 || code2 === null || code2 === 91 || code2 === 93 && !seen || // To do: remove in the future once we’ve switched from
    // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,
    // which doesn’t need this.
    // Hidden footnotes hook.
    /* c8 ignore next 3 */
    code2 === 94 && !size && "_hiddenFootnoteSupport" in self2.parser.constructs ? nok(code2) : code2 === 93 ? (effects.exit(stringType), effects.enter(markerType), effects.consume(code2), effects.exit(markerType), effects.exit(type), ok2) : markdownLineEnding(code2) ? (effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), atBreak) : (effects.enter("chunkString", {
      contentType: "string"
    }), labelInside(code2));
  }
  function labelInside(code2) {
    return code2 === null || code2 === 91 || code2 === 93 || markdownLineEnding(code2) || size++ > 999 ? (effects.exit("chunkString"), atBreak(code2)) : (effects.consume(code2), seen || (seen = !markdownSpace(code2)), code2 === 92 ? labelEscape : labelInside);
  }
  function labelEscape(code2) {
    return code2 === 91 || code2 === 92 || code2 === 93 ? (effects.consume(code2), size++, labelInside) : labelInside(code2);
  }
}

// ../../../node_modules/micromark-factory-title/index.js
function factoryTitle(effects, ok2, nok, type, markerType, stringType) {
  let marker;
  return start2;
  function start2(code2) {
    return code2 === 34 || code2 === 39 || code2 === 40 ? (effects.enter(type), effects.enter(markerType), effects.consume(code2), effects.exit(markerType), marker = code2 === 40 ? 41 : code2, begin) : nok(code2);
  }
  function begin(code2) {
    return code2 === marker ? (effects.enter(markerType), effects.consume(code2), effects.exit(markerType), effects.exit(type), ok2) : (effects.enter(stringType), atBreak(code2));
  }
  function atBreak(code2) {
    return code2 === marker ? (effects.exit(stringType), begin(marker)) : code2 === null ? nok(code2) : markdownLineEnding(code2) ? (effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), factorySpace(effects, atBreak, "linePrefix")) : (effects.enter("chunkString", {
      contentType: "string"
    }), inside(code2));
  }
  function inside(code2) {
    return code2 === marker || code2 === null || markdownLineEnding(code2) ? (effects.exit("chunkString"), atBreak(code2)) : (effects.consume(code2), code2 === 92 ? escape : inside);
  }
  function escape(code2) {
    return code2 === marker || code2 === 92 ? (effects.consume(code2), inside) : inside(code2);
  }
}

// ../../../node_modules/micromark-factory-whitespace/index.js
function factoryWhitespace(effects, ok2) {
  let seen;
  return start2;
  function start2(code2) {
    return markdownLineEnding(code2) ? (effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), seen = !0, start2) : markdownSpace(code2) ? factorySpace(
      effects,
      start2,
      seen ? "linePrefix" : "lineSuffix"
    )(code2) : ok2(code2);
  }
}

// ../../../node_modules/micromark-util-normalize-identifier/index.js
function normalizeIdentifier(value) {
  return value.replace(/[\t\n\r ]+/g, " ").replace(/^ | $/g, "").toLowerCase().toUpperCase();
}

// ../../../node_modules/micromark-core-commonmark/lib/definition.js
var definition = {
  name: "definition",
  tokenize: tokenizeDefinition
}, titleBefore = {
  tokenize: tokenizeTitleBefore,
  partial: !0
};
function tokenizeDefinition(effects, ok2, nok) {
  let self2 = this, identifier;
  return start2;
  function start2(code2) {
    return effects.enter("definition"), before(code2);
  }
  function before(code2) {
    return factoryLabel.call(
      self2,
      effects,
      labelAfter,
      // Note: we don’t need to reset the way `markdown-rs` does.
      nok,
      "definitionLabel",
      "definitionLabelMarker",
      "definitionLabelString"
    )(code2);
  }
  function labelAfter(code2) {
    return identifier = normalizeIdentifier(
      self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1)
    ), code2 === 58 ? (effects.enter("definitionMarker"), effects.consume(code2), effects.exit("definitionMarker"), markerAfter) : nok(code2);
  }
  function markerAfter(code2) {
    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, destinationBefore)(code2) : destinationBefore(code2);
  }
  function destinationBefore(code2) {
    return factoryDestination(
      effects,
      destinationAfter,
      // Note: we don’t need to reset the way `markdown-rs` does.
      nok,
      "definitionDestination",
      "definitionDestinationLiteral",
      "definitionDestinationLiteralMarker",
      "definitionDestinationRaw",
      "definitionDestinationString"
    )(code2);
  }
  function destinationAfter(code2) {
    return effects.attempt(titleBefore, after, after)(code2);
  }
  function after(code2) {
    return markdownSpace(code2) ? factorySpace(effects, afterWhitespace, "whitespace")(code2) : afterWhitespace(code2);
  }
  function afterWhitespace(code2) {
    return code2 === null || markdownLineEnding(code2) ? (effects.exit("definition"), self2.parser.defined.push(identifier), ok2(code2)) : nok(code2);
  }
}
function tokenizeTitleBefore(effects, ok2, nok) {
  return titleBefore2;
  function titleBefore2(code2) {
    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, beforeMarker)(code2) : nok(code2);
  }
  function beforeMarker(code2) {
    return factoryTitle(
      effects,
      titleAfter,
      nok,
      "definitionTitle",
      "definitionTitleMarker",
      "definitionTitleString"
    )(code2);
  }
  function titleAfter(code2) {
    return markdownSpace(code2) ? factorySpace(effects, titleAfterOptionalWhitespace, "whitespace")(code2) : titleAfterOptionalWhitespace(code2);
  }
  function titleAfterOptionalWhitespace(code2) {
    return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js
var hardBreakEscape = {
  name: "hardBreakEscape",
  tokenize: tokenizeHardBreakEscape
};
function tokenizeHardBreakEscape(effects, ok2, nok) {
  return start2;
  function start2(code2) {
    return effects.enter("hardBreakEscape"), effects.consume(code2), after;
  }
  function after(code2) {
    return markdownLineEnding(code2) ? (effects.exit("hardBreakEscape"), ok2(code2)) : nok(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/heading-atx.js
var headingAtx = {
  name: "headingAtx",
  tokenize: tokenizeHeadingAtx,
  resolve: resolveHeadingAtx
};
function resolveHeadingAtx(events, context) {
  let contentEnd = events.length - 2, contentStart = 3, content3, text5;
  return events[contentStart][1].type === "whitespace" && (contentStart += 2), contentEnd - 2 > contentStart && events[contentEnd][1].type === "whitespace" && (contentEnd -= 2), events[contentEnd][1].type === "atxHeadingSequence" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === "whitespace") && (contentEnd -= contentStart + 1 === contentEnd ? 2 : 4), contentEnd > contentStart && (content3 = {
    type: "atxHeadingText",
    start: events[contentStart][1].start,
    end: events[contentEnd][1].end
  }, text5 = {
    type: "chunkText",
    start: events[contentStart][1].start,
    end: events[contentEnd][1].end,
    contentType: "text"
  }, splice(events, contentStart, contentEnd - contentStart + 1, [
    ["enter", content3, context],
    ["enter", text5, context],
    ["exit", text5, context],
    ["exit", content3, context]
  ])), events;
}
function tokenizeHeadingAtx(effects, ok2, nok) {
  let size = 0;
  return start2;
  function start2(code2) {
    return effects.enter("atxHeading"), before(code2);
  }
  function before(code2) {
    return effects.enter("atxHeadingSequence"), sequenceOpen(code2);
  }
  function sequenceOpen(code2) {
    return code2 === 35 && size++ < 6 ? (effects.consume(code2), sequenceOpen) : code2 === null || markdownLineEndingOrSpace(code2) ? (effects.exit("atxHeadingSequence"), atBreak(code2)) : nok(code2);
  }
  function atBreak(code2) {
    return code2 === 35 ? (effects.enter("atxHeadingSequence"), sequenceFurther(code2)) : code2 === null || markdownLineEnding(code2) ? (effects.exit("atxHeading"), ok2(code2)) : markdownSpace(code2) ? factorySpace(effects, atBreak, "whitespace")(code2) : (effects.enter("atxHeadingText"), data2(code2));
  }
  function sequenceFurther(code2) {
    return code2 === 35 ? (effects.consume(code2), sequenceFurther) : (effects.exit("atxHeadingSequence"), atBreak(code2));
  }
  function data2(code2) {
    return code2 === null || code2 === 35 || markdownLineEndingOrSpace(code2) ? (effects.exit("atxHeadingText"), atBreak(code2)) : (effects.consume(code2), data2);
  }
}

// ../../../node_modules/micromark-util-html-tag-name/index.js
var htmlBlockNames = [
  "address",
  "article",
  "aside",
  "base",
  "basefont",
  "blockquote",
  "body",
  "caption",
  "center",
  "col",
  "colgroup",
  "dd",
  "details",
  "dialog",
  "dir",
  "div",
  "dl",
  "dt",
  "fieldset",
  "figcaption",
  "figure",
  "footer",
  "form",
  "frame",
  "frameset",
  "h1",
  "h2",
  "h3",
  "h4",
  "h5",
  "h6",
  "head",
  "header",
  "hr",
  "html",
  "iframe",
  "legend",
  "li",
  "link",
  "main",
  "menu",
  "menuitem",
  "nav",
  "noframes",
  "ol",
  "optgroup",
  "option",
  "p",
  "param",
  "search",
  "section",
  "summary",
  "table",
  "tbody",
  "td",
  "tfoot",
  "th",
  "thead",
  "title",
  "tr",
  "track",
  "ul"
], htmlRawNames = ["pre", "script", "style", "textarea"];

// ../../../node_modules/micromark-core-commonmark/lib/html-flow.js
var htmlFlow = {
  name: "htmlFlow",
  tokenize: tokenizeHtmlFlow,
  resolveTo: resolveToHtmlFlow,
  concrete: !0
}, blankLineBefore = {
  tokenize: tokenizeBlankLineBefore,
  partial: !0
}, nonLazyContinuationStart = {
  tokenize: tokenizeNonLazyContinuationStart,
  partial: !0
};
function resolveToHtmlFlow(events) {
  let index2 = events.length;
  for (; index2-- && !(events[index2][0] === "enter" && events[index2][1].type === "htmlFlow"); )
    ;
  return index2 > 1 && events[index2 - 2][1].type === "linePrefix" && (events[index2][1].start = events[index2 - 2][1].start, events[index2 + 1][1].start = events[index2 - 2][1].start, events.splice(index2 - 2, 2)), events;
}
function tokenizeHtmlFlow(effects, ok2, nok) {
  let self2 = this, marker, closingTag, buffer, index2, markerB;
  return start2;
  function start2(code2) {
    return before(code2);
  }
  function before(code2) {
    return effects.enter("htmlFlow"), effects.enter("htmlFlowData"), effects.consume(code2), open;
  }
  function open(code2) {
    return code2 === 33 ? (effects.consume(code2), declarationOpen) : code2 === 47 ? (effects.consume(code2), closingTag = !0, tagCloseStart) : code2 === 63 ? (effects.consume(code2), marker = 3, self2.interrupt ? ok2 : continuationDeclarationInside) : asciiAlpha(code2) ? (effects.consume(code2), buffer = String.fromCharCode(code2), tagName) : nok(code2);
  }
  function declarationOpen(code2) {
    return code2 === 45 ? (effects.consume(code2), marker = 2, commentOpenInside) : code2 === 91 ? (effects.consume(code2), marker = 5, index2 = 0, cdataOpenInside) : asciiAlpha(code2) ? (effects.consume(code2), marker = 4, self2.interrupt ? ok2 : continuationDeclarationInside) : nok(code2);
  }
  function commentOpenInside(code2) {
    return code2 === 45 ? (effects.consume(code2), self2.interrupt ? ok2 : continuationDeclarationInside) : nok(code2);
  }
  function cdataOpenInside(code2) {
    let value = "CDATA[";
    return code2 === value.charCodeAt(index2++) ? (effects.consume(code2), index2 === value.length ? self2.interrupt ? ok2 : continuation : cdataOpenInside) : nok(code2);
  }
  function tagCloseStart(code2) {
    return asciiAlpha(code2) ? (effects.consume(code2), buffer = String.fromCharCode(code2), tagName) : nok(code2);
  }
  function tagName(code2) {
    if (code2 === null || code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {
      let slash = code2 === 47, name2 = buffer.toLowerCase();
      return !slash && !closingTag && htmlRawNames.includes(name2) ? (marker = 1, self2.interrupt ? ok2(code2) : continuation(code2)) : htmlBlockNames.includes(buffer.toLowerCase()) ? (marker = 6, slash ? (effects.consume(code2), basicSelfClosing) : self2.interrupt ? ok2(code2) : continuation(code2)) : (marker = 7, self2.interrupt && !self2.parser.lazy[self2.now().line] ? nok(code2) : closingTag ? completeClosingTagAfter(code2) : completeAttributeNameBefore(code2));
    }
    return code2 === 45 || asciiAlphanumeric(code2) ? (effects.consume(code2), buffer += String.fromCharCode(code2), tagName) : nok(code2);
  }
  function basicSelfClosing(code2) {
    return code2 === 62 ? (effects.consume(code2), self2.interrupt ? ok2 : continuation) : nok(code2);
  }
  function completeClosingTagAfter(code2) {
    return markdownSpace(code2) ? (effects.consume(code2), completeClosingTagAfter) : completeEnd(code2);
  }
  function completeAttributeNameBefore(code2) {
    return code2 === 47 ? (effects.consume(code2), completeEnd) : code2 === 58 || code2 === 95 || asciiAlpha(code2) ? (effects.consume(code2), completeAttributeName) : markdownSpace(code2) ? (effects.consume(code2), completeAttributeNameBefore) : completeEnd(code2);
  }
  function completeAttributeName(code2) {
    return code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2) ? (effects.consume(code2), completeAttributeName) : completeAttributeNameAfter(code2);
  }
  function completeAttributeNameAfter(code2) {
    return code2 === 61 ? (effects.consume(code2), completeAttributeValueBefore) : markdownSpace(code2) ? (effects.consume(code2), completeAttributeNameAfter) : completeAttributeNameBefore(code2);
  }
  function completeAttributeValueBefore(code2) {
    return code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96 ? nok(code2) : code2 === 34 || code2 === 39 ? (effects.consume(code2), markerB = code2, completeAttributeValueQuoted) : markdownSpace(code2) ? (effects.consume(code2), completeAttributeValueBefore) : completeAttributeValueUnquoted(code2);
  }
  function completeAttributeValueQuoted(code2) {
    return code2 === markerB ? (effects.consume(code2), markerB = null, completeAttributeValueQuotedAfter) : code2 === null || markdownLineEnding(code2) ? nok(code2) : (effects.consume(code2), completeAttributeValueQuoted);
  }
  function completeAttributeValueUnquoted(code2) {
    return code2 === null || code2 === 34 || code2 === 39 || code2 === 47 || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96 || markdownLineEndingOrSpace(code2) ? completeAttributeNameAfter(code2) : (effects.consume(code2), completeAttributeValueUnquoted);
  }
  function completeAttributeValueQuotedAfter(code2) {
    return code2 === 47 || code2 === 62 || markdownSpace(code2) ? completeAttributeNameBefore(code2) : nok(code2);
  }
  function completeEnd(code2) {
    return code2 === 62 ? (effects.consume(code2), completeAfter) : nok(code2);
  }
  function completeAfter(code2) {
    return code2 === null || markdownLineEnding(code2) ? continuation(code2) : markdownSpace(code2) ? (effects.consume(code2), completeAfter) : nok(code2);
  }
  function continuation(code2) {
    return code2 === 45 && marker === 2 ? (effects.consume(code2), continuationCommentInside) : code2 === 60 && marker === 1 ? (effects.consume(code2), continuationRawTagOpen) : code2 === 62 && marker === 4 ? (effects.consume(code2), continuationClose) : code2 === 63 && marker === 3 ? (effects.consume(code2), continuationDeclarationInside) : code2 === 93 && marker === 5 ? (effects.consume(code2), continuationCdataInside) : markdownLineEnding(code2) && (marker === 6 || marker === 7) ? (effects.exit("htmlFlowData"), effects.check(
      blankLineBefore,
      continuationAfter,
      continuationStart
    )(code2)) : code2 === null || markdownLineEnding(code2) ? (effects.exit("htmlFlowData"), continuationStart(code2)) : (effects.consume(code2), continuation);
  }
  function continuationStart(code2) {
    return effects.check(
      nonLazyContinuationStart,
      continuationStartNonLazy,
      continuationAfter
    )(code2);
  }
  function continuationStartNonLazy(code2) {
    return effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), continuationBefore;
  }
  function continuationBefore(code2) {
    return code2 === null || markdownLineEnding(code2) ? continuationStart(code2) : (effects.enter("htmlFlowData"), continuation(code2));
  }
  function continuationCommentInside(code2) {
    return code2 === 45 ? (effects.consume(code2), continuationDeclarationInside) : continuation(code2);
  }
  function continuationRawTagOpen(code2) {
    return code2 === 47 ? (effects.consume(code2), buffer = "", continuationRawEndTag) : continuation(code2);
  }
  function continuationRawEndTag(code2) {
    if (code2 === 62) {
      let name2 = buffer.toLowerCase();
      return htmlRawNames.includes(name2) ? (effects.consume(code2), continuationClose) : continuation(code2);
    }
    return asciiAlpha(code2) && buffer.length < 8 ? (effects.consume(code2), buffer += String.fromCharCode(code2), continuationRawEndTag) : continuation(code2);
  }
  function continuationCdataInside(code2) {
    return code2 === 93 ? (effects.consume(code2), continuationDeclarationInside) : continuation(code2);
  }
  function continuationDeclarationInside(code2) {
    return code2 === 62 ? (effects.consume(code2), continuationClose) : code2 === 45 && marker === 2 ? (effects.consume(code2), continuationDeclarationInside) : continuation(code2);
  }
  function continuationClose(code2) {
    return code2 === null || markdownLineEnding(code2) ? (effects.exit("htmlFlowData"), continuationAfter(code2)) : (effects.consume(code2), continuationClose);
  }
  function continuationAfter(code2) {
    return effects.exit("htmlFlow"), ok2(code2);
  }
}
function tokenizeNonLazyContinuationStart(effects, ok2, nok) {
  let self2 = this;
  return start2;
  function start2(code2) {
    return markdownLineEnding(code2) ? (effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), after) : nok(code2);
  }
  function after(code2) {
    return self2.parser.lazy[self2.now().line] ? nok(code2) : ok2(code2);
  }
}
function tokenizeBlankLineBefore(effects, ok2, nok) {
  return start2;
  function start2(code2) {
    return effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), effects.attempt(blankLine, ok2, nok);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/html-text.js
var htmlText = {
  name: "htmlText",
  tokenize: tokenizeHtmlText
};
function tokenizeHtmlText(effects, ok2, nok) {
  let self2 = this, marker, index2, returnState;
  return start2;
  function start2(code2) {
    return effects.enter("htmlText"), effects.enter("htmlTextData"), effects.consume(code2), open;
  }
  function open(code2) {
    return code2 === 33 ? (effects.consume(code2), declarationOpen) : code2 === 47 ? (effects.consume(code2), tagCloseStart) : code2 === 63 ? (effects.consume(code2), instruction) : asciiAlpha(code2) ? (effects.consume(code2), tagOpen) : nok(code2);
  }
  function declarationOpen(code2) {
    return code2 === 45 ? (effects.consume(code2), commentOpenInside) : code2 === 91 ? (effects.consume(code2), index2 = 0, cdataOpenInside) : asciiAlpha(code2) ? (effects.consume(code2), declaration) : nok(code2);
  }
  function commentOpenInside(code2) {
    return code2 === 45 ? (effects.consume(code2), commentEnd) : nok(code2);
  }
  function comment2(code2) {
    return code2 === null ? nok(code2) : code2 === 45 ? (effects.consume(code2), commentClose) : markdownLineEnding(code2) ? (returnState = comment2, lineEndingBefore(code2)) : (effects.consume(code2), comment2);
  }
  function commentClose(code2) {
    return code2 === 45 ? (effects.consume(code2), commentEnd) : comment2(code2);
  }
  function commentEnd(code2) {
    return code2 === 62 ? end(code2) : code2 === 45 ? commentClose(code2) : comment2(code2);
  }
  function cdataOpenInside(code2) {
    let value = "CDATA[";
    return code2 === value.charCodeAt(index2++) ? (effects.consume(code2), index2 === value.length ? cdata : cdataOpenInside) : nok(code2);
  }
  function cdata(code2) {
    return code2 === null ? nok(code2) : code2 === 93 ? (effects.consume(code2), cdataClose) : markdownLineEnding(code2) ? (returnState = cdata, lineEndingBefore(code2)) : (effects.consume(code2), cdata);
  }
  function cdataClose(code2) {
    return code2 === 93 ? (effects.consume(code2), cdataEnd) : cdata(code2);
  }
  function cdataEnd(code2) {
    return code2 === 62 ? end(code2) : code2 === 93 ? (effects.consume(code2), cdataEnd) : cdata(code2);
  }
  function declaration(code2) {
    return code2 === null || code2 === 62 ? end(code2) : markdownLineEnding(code2) ? (returnState = declaration, lineEndingBefore(code2)) : (effects.consume(code2), declaration);
  }
  function instruction(code2) {
    return code2 === null ? nok(code2) : code2 === 63 ? (effects.consume(code2), instructionClose) : markdownLineEnding(code2) ? (returnState = instruction, lineEndingBefore(code2)) : (effects.consume(code2), instruction);
  }
  function instructionClose(code2) {
    return code2 === 62 ? end(code2) : instruction(code2);
  }
  function tagCloseStart(code2) {
    return asciiAlpha(code2) ? (effects.consume(code2), tagClose) : nok(code2);
  }
  function tagClose(code2) {
    return code2 === 45 || asciiAlphanumeric(code2) ? (effects.consume(code2), tagClose) : tagCloseBetween(code2);
  }
  function tagCloseBetween(code2) {
    return markdownLineEnding(code2) ? (returnState = tagCloseBetween, lineEndingBefore(code2)) : markdownSpace(code2) ? (effects.consume(code2), tagCloseBetween) : end(code2);
  }
  function tagOpen(code2) {
    return code2 === 45 || asciiAlphanumeric(code2) ? (effects.consume(code2), tagOpen) : code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2) ? tagOpenBetween(code2) : nok(code2);
  }
  function tagOpenBetween(code2) {
    return code2 === 47 ? (effects.consume(code2), end) : code2 === 58 || code2 === 95 || asciiAlpha(code2) ? (effects.consume(code2), tagOpenAttributeName) : markdownLineEnding(code2) ? (returnState = tagOpenBetween, lineEndingBefore(code2)) : markdownSpace(code2) ? (effects.consume(code2), tagOpenBetween) : end(code2);
  }
  function tagOpenAttributeName(code2) {
    return code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2) ? (effects.consume(code2), tagOpenAttributeName) : tagOpenAttributeNameAfter(code2);
  }
  function tagOpenAttributeNameAfter(code2) {
    return code2 === 61 ? (effects.consume(code2), tagOpenAttributeValueBefore) : markdownLineEnding(code2) ? (returnState = tagOpenAttributeNameAfter, lineEndingBefore(code2)) : markdownSpace(code2) ? (effects.consume(code2), tagOpenAttributeNameAfter) : tagOpenBetween(code2);
  }
  function tagOpenAttributeValueBefore(code2) {
    return code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96 ? nok(code2) : code2 === 34 || code2 === 39 ? (effects.consume(code2), marker = code2, tagOpenAttributeValueQuoted) : markdownLineEnding(code2) ? (returnState = tagOpenAttributeValueBefore, lineEndingBefore(code2)) : markdownSpace(code2) ? (effects.consume(code2), tagOpenAttributeValueBefore) : (effects.consume(code2), tagOpenAttributeValueUnquoted);
  }
  function tagOpenAttributeValueQuoted(code2) {
    return code2 === marker ? (effects.consume(code2), marker = void 0, tagOpenAttributeValueQuotedAfter) : code2 === null ? nok(code2) : markdownLineEnding(code2) ? (returnState = tagOpenAttributeValueQuoted, lineEndingBefore(code2)) : (effects.consume(code2), tagOpenAttributeValueQuoted);
  }
  function tagOpenAttributeValueUnquoted(code2) {
    return code2 === null || code2 === 34 || code2 === 39 || code2 === 60 || code2 === 61 || code2 === 96 ? nok(code2) : code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2) ? tagOpenBetween(code2) : (effects.consume(code2), tagOpenAttributeValueUnquoted);
  }
  function tagOpenAttributeValueQuotedAfter(code2) {
    return code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2) ? tagOpenBetween(code2) : nok(code2);
  }
  function end(code2) {
    return code2 === 62 ? (effects.consume(code2), effects.exit("htmlTextData"), effects.exit("htmlText"), ok2) : nok(code2);
  }
  function lineEndingBefore(code2) {
    return effects.exit("htmlTextData"), effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), lineEndingAfter;
  }
  function lineEndingAfter(code2) {
    return markdownSpace(code2) ? factorySpace(
      effects,
      lineEndingAfterPrefix,
      "linePrefix",
      self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
    )(code2) : lineEndingAfterPrefix(code2);
  }
  function lineEndingAfterPrefix(code2) {
    return effects.enter("htmlTextData"), returnState(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/label-end.js
var labelEnd = {
  name: "labelEnd",
  tokenize: tokenizeLabelEnd,
  resolveTo: resolveToLabelEnd,
  resolveAll: resolveAllLabelEnd
}, resourceConstruct = {
  tokenize: tokenizeResource
}, referenceFullConstruct = {
  tokenize: tokenizeReferenceFull
}, referenceCollapsedConstruct = {
  tokenize: tokenizeReferenceCollapsed
};
function resolveAllLabelEnd(events) {
  let index2 = -1;
  for (; ++index2 < events.length; ) {
    let token = events[index2][1];
    (token.type === "labelImage" || token.type === "labelLink" || token.type === "labelEnd") && (events.splice(index2 + 1, token.type === "labelImage" ? 4 : 2), token.type = "data", index2++);
  }
  return events;
}
function resolveToLabelEnd(events, context) {
  let index2 = events.length, offset2 = 0, token, open, close, media;
  for (; index2--; )
    if (token = events[index2][1], open) {
      if (token.type === "link" || token.type === "labelLink" && token._inactive)
        break;
      events[index2][0] === "enter" && token.type === "labelLink" && (token._inactive = !0);
    } else if (close) {
      if (events[index2][0] === "enter" && (token.type === "labelImage" || token.type === "labelLink") && !token._balanced && (open = index2, token.type !== "labelLink")) {
        offset2 = 2;
        break;
      }
    } else token.type === "labelEnd" && (close = index2);
  let group = {
    type: events[open][1].type === "labelLink" ? "link" : "image",
    start: Object.assign({}, events[open][1].start),
    end: Object.assign({}, events[events.length - 1][1].end)
  }, label = {
    type: "label",
    start: Object.assign({}, events[open][1].start),
    end: Object.assign({}, events[close][1].end)
  }, text5 = {
    type: "labelText",
    start: Object.assign({}, events[open + offset2 + 2][1].end),
    end: Object.assign({}, events[close - 2][1].start)
  };
  return media = [
    ["enter", group, context],
    ["enter", label, context]
  ], media = push(media, events.slice(open + 1, open + offset2 + 3)), media = push(media, [["enter", text5, context]]), media = push(
    media,
    resolveAll(
      context.parser.constructs.insideSpan.null,
      events.slice(open + offset2 + 4, close - 3),
      context
    )
  ), media = push(media, [
    ["exit", text5, context],
    events[close - 2],
    events[close - 1],
    ["exit", label, context]
  ]), media = push(media, events.slice(close + 1)), media = push(media, [["exit", group, context]]), splice(events, open, events.length, media), events;
}
function tokenizeLabelEnd(effects, ok2, nok) {
  let self2 = this, index2 = self2.events.length, labelStart, defined;
  for (; index2--; )
    if ((self2.events[index2][1].type === "labelImage" || self2.events[index2][1].type === "labelLink") && !self2.events[index2][1]._balanced) {
      labelStart = self2.events[index2][1];
      break;
    }
  return start2;
  function start2(code2) {
    return labelStart ? labelStart._inactive ? labelEndNok(code2) : (defined = self2.parser.defined.includes(
      normalizeIdentifier(
        self2.sliceSerialize({
          start: labelStart.end,
          end: self2.now()
        })
      )
    ), effects.enter("labelEnd"), effects.enter("labelMarker"), effects.consume(code2), effects.exit("labelMarker"), effects.exit("labelEnd"), after) : nok(code2);
  }
  function after(code2) {
    return code2 === 40 ? effects.attempt(
      resourceConstruct,
      labelEndOk,
      defined ? labelEndOk : labelEndNok
    )(code2) : code2 === 91 ? effects.attempt(
      referenceFullConstruct,
      labelEndOk,
      defined ? referenceNotFull : labelEndNok
    )(code2) : defined ? labelEndOk(code2) : labelEndNok(code2);
  }
  function referenceNotFull(code2) {
    return effects.attempt(
      referenceCollapsedConstruct,
      labelEndOk,
      labelEndNok
    )(code2);
  }
  function labelEndOk(code2) {
    return ok2(code2);
  }
  function labelEndNok(code2) {
    return labelStart._balanced = !0, nok(code2);
  }
}
function tokenizeResource(effects, ok2, nok) {
  return resourceStart;
  function resourceStart(code2) {
    return effects.enter("resource"), effects.enter("resourceMarker"), effects.consume(code2), effects.exit("resourceMarker"), resourceBefore;
  }
  function resourceBefore(code2) {
    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceOpen)(code2) : resourceOpen(code2);
  }
  function resourceOpen(code2) {
    return code2 === 41 ? resourceEnd(code2) : factoryDestination(
      effects,
      resourceDestinationAfter,
      resourceDestinationMissing,
      "resourceDestination",
      "resourceDestinationLiteral",
      "resourceDestinationLiteralMarker",
      "resourceDestinationRaw",
      "resourceDestinationString",
      32
    )(code2);
  }
  function resourceDestinationAfter(code2) {
    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceBetween)(code2) : resourceEnd(code2);
  }
  function resourceDestinationMissing(code2) {
    return nok(code2);
  }
  function resourceBetween(code2) {
    return code2 === 34 || code2 === 39 || code2 === 40 ? factoryTitle(
      effects,
      resourceTitleAfter,
      nok,
      "resourceTitle",
      "resourceTitleMarker",
      "resourceTitleString"
    )(code2) : resourceEnd(code2);
  }
  function resourceTitleAfter(code2) {
    return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, resourceEnd)(code2) : resourceEnd(code2);
  }
  function resourceEnd(code2) {
    return code2 === 41 ? (effects.enter("resourceMarker"), effects.consume(code2), effects.exit("resourceMarker"), effects.exit("resource"), ok2) : nok(code2);
  }
}
function tokenizeReferenceFull(effects, ok2, nok) {
  let self2 = this;
  return referenceFull;
  function referenceFull(code2) {
    return factoryLabel.call(
      self2,
      effects,
      referenceFullAfter,
      referenceFullMissing,
      "reference",
      "referenceMarker",
      "referenceString"
    )(code2);
  }
  function referenceFullAfter(code2) {
    return self2.parser.defined.includes(
      normalizeIdentifier(
        self2.sliceSerialize(self2.events[self2.events.length - 1][1]).slice(1, -1)
      )
    ) ? ok2(code2) : nok(code2);
  }
  function referenceFullMissing(code2) {
    return nok(code2);
  }
}
function tokenizeReferenceCollapsed(effects, ok2, nok) {
  return referenceCollapsedStart;
  function referenceCollapsedStart(code2) {
    return effects.enter("reference"), effects.enter("referenceMarker"), effects.consume(code2), effects.exit("referenceMarker"), referenceCollapsedOpen;
  }
  function referenceCollapsedOpen(code2) {
    return code2 === 93 ? (effects.enter("referenceMarker"), effects.consume(code2), effects.exit("referenceMarker"), effects.exit("reference"), ok2) : nok(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/label-start-image.js
var labelStartImage = {
  name: "labelStartImage",
  tokenize: tokenizeLabelStartImage,
  resolveAll: labelEnd.resolveAll
};
function tokenizeLabelStartImage(effects, ok2, nok) {
  let self2 = this;
  return start2;
  function start2(code2) {
    return effects.enter("labelImage"), effects.enter("labelImageMarker"), effects.consume(code2), effects.exit("labelImageMarker"), open;
  }
  function open(code2) {
    return code2 === 91 ? (effects.enter("labelMarker"), effects.consume(code2), effects.exit("labelMarker"), effects.exit("labelImage"), after) : nok(code2);
  }
  function after(code2) {
    return code2 === 94 && "_hiddenFootnoteSupport" in self2.parser.constructs ? nok(code2) : ok2(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/label-start-link.js
var labelStartLink = {
  name: "labelStartLink",
  tokenize: tokenizeLabelStartLink,
  resolveAll: labelEnd.resolveAll
};
function tokenizeLabelStartLink(effects, ok2, nok) {
  let self2 = this;
  return start2;
  function start2(code2) {
    return effects.enter("labelLink"), effects.enter("labelMarker"), effects.consume(code2), effects.exit("labelMarker"), effects.exit("labelLink"), after;
  }
  function after(code2) {
    return code2 === 94 && "_hiddenFootnoteSupport" in self2.parser.constructs ? nok(code2) : ok2(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/line-ending.js
var lineEnding = {
  name: "lineEnding",
  tokenize: tokenizeLineEnding
};
function tokenizeLineEnding(effects, ok2) {
  return start2;
  function start2(code2) {
    return effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), factorySpace(effects, ok2, "linePrefix");
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/thematic-break.js
var thematicBreak = {
  name: "thematicBreak",
  tokenize: tokenizeThematicBreak
};
function tokenizeThematicBreak(effects, ok2, nok) {
  let size = 0, marker;
  return start2;
  function start2(code2) {
    return effects.enter("thematicBreak"), before(code2);
  }
  function before(code2) {
    return marker = code2, atBreak(code2);
  }
  function atBreak(code2) {
    return code2 === marker ? (effects.enter("thematicBreakSequence"), sequence(code2)) : size >= 3 && (code2 === null || markdownLineEnding(code2)) ? (effects.exit("thematicBreak"), ok2(code2)) : nok(code2);
  }
  function sequence(code2) {
    return code2 === marker ? (effects.consume(code2), size++, sequence) : (effects.exit("thematicBreakSequence"), markdownSpace(code2) ? factorySpace(effects, atBreak, "whitespace")(code2) : atBreak(code2));
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/list.js
var list = {
  name: "list",
  tokenize: tokenizeListStart,
  continuation: {
    tokenize: tokenizeListContinuation
  },
  exit: tokenizeListEnd
}, listItemPrefixWhitespaceConstruct = {
  tokenize: tokenizeListItemPrefixWhitespace,
  partial: !0
}, indentConstruct = {
  tokenize: tokenizeIndent,
  partial: !0
};
function tokenizeListStart(effects, ok2, nok) {
  let self2 = this, tail = self2.events[self2.events.length - 1], initialSize = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], !0).length : 0, size = 0;
  return start2;
  function start2(code2) {
    let kind = self2.containerState.type || (code2 === 42 || code2 === 43 || code2 === 45 ? "listUnordered" : "listOrdered");
    if (kind === "listUnordered" ? !self2.containerState.marker || code2 === self2.containerState.marker : asciiDigit(code2)) {
      if (self2.containerState.type || (self2.containerState.type = kind, effects.enter(kind, {
        _container: !0
      })), kind === "listUnordered")
        return effects.enter("listItemPrefix"), code2 === 42 || code2 === 45 ? effects.check(thematicBreak, nok, atMarker)(code2) : atMarker(code2);
      if (!self2.interrupt || code2 === 49)
        return effects.enter("listItemPrefix"), effects.enter("listItemValue"), inside(code2);
    }
    return nok(code2);
  }
  function inside(code2) {
    return asciiDigit(code2) && ++size < 10 ? (effects.consume(code2), inside) : (!self2.interrupt || size < 2) && (self2.containerState.marker ? code2 === self2.containerState.marker : code2 === 41 || code2 === 46) ? (effects.exit("listItemValue"), atMarker(code2)) : nok(code2);
  }
  function atMarker(code2) {
    return effects.enter("listItemMarker"), effects.consume(code2), effects.exit("listItemMarker"), self2.containerState.marker = self2.containerState.marker || code2, effects.check(
      blankLine,
      // Can’t be empty when interrupting.
      self2.interrupt ? nok : onBlank,
      effects.attempt(
        listItemPrefixWhitespaceConstruct,
        endOfPrefix,
        otherPrefix
      )
    );
  }
  function onBlank(code2) {
    return self2.containerState.initialBlankLine = !0, initialSize++, endOfPrefix(code2);
  }
  function otherPrefix(code2) {
    return markdownSpace(code2) ? (effects.enter("listItemPrefixWhitespace"), effects.consume(code2), effects.exit("listItemPrefixWhitespace"), endOfPrefix) : nok(code2);
  }
  function endOfPrefix(code2) {
    return self2.containerState.size = initialSize + self2.sliceSerialize(effects.exit("listItemPrefix"), !0).length, ok2(code2);
  }
}
function tokenizeListContinuation(effects, ok2, nok) {
  let self2 = this;
  return self2.containerState._closeFlow = void 0, effects.check(blankLine, onBlank, notBlank);
  function onBlank(code2) {
    return self2.containerState.furtherBlankLines = self2.containerState.furtherBlankLines || self2.containerState.initialBlankLine, factorySpace(
      effects,
      ok2,
      "listItemIndent",
      self2.containerState.size + 1
    )(code2);
  }
  function notBlank(code2) {
    return self2.containerState.furtherBlankLines || !markdownSpace(code2) ? (self2.containerState.furtherBlankLines = void 0, self2.containerState.initialBlankLine = void 0, notInCurrentItem(code2)) : (self2.containerState.furtherBlankLines = void 0, self2.containerState.initialBlankLine = void 0, effects.attempt(indentConstruct, ok2, notInCurrentItem)(code2));
  }
  function notInCurrentItem(code2) {
    return self2.containerState._closeFlow = !0, self2.interrupt = void 0, factorySpace(
      effects,
      effects.attempt(list, ok2, nok),
      "linePrefix",
      self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
    )(code2);
  }
}
function tokenizeIndent(effects, ok2, nok) {
  let self2 = this;
  return factorySpace(
    effects,
    afterPrefix,
    "listItemIndent",
    self2.containerState.size + 1
  );
  function afterPrefix(code2) {
    let tail = self2.events[self2.events.length - 1];
    return tail && tail[1].type === "listItemIndent" && tail[2].sliceSerialize(tail[1], !0).length === self2.containerState.size ? ok2(code2) : nok(code2);
  }
}
function tokenizeListEnd(effects) {
  effects.exit(this.containerState.type);
}
function tokenizeListItemPrefixWhitespace(effects, ok2, nok) {
  let self2 = this;
  return factorySpace(
    effects,
    afterPrefix,
    "listItemPrefixWhitespace",
    self2.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 5
  );
  function afterPrefix(code2) {
    let tail = self2.events[self2.events.length - 1];
    return !markdownSpace(code2) && tail && tail[1].type === "listItemPrefixWhitespace" ? ok2(code2) : nok(code2);
  }
}

// ../../../node_modules/micromark-core-commonmark/lib/setext-underline.js
var setextUnderline = {
  name: "setextUnderline",
  tokenize: tokenizeSetextUnderline,
  resolveTo: resolveToSetextUnderline
};
function resolveToSetextUnderline(events, context) {
  let index2 = events.length, content3, text5, definition2;
  for (; index2--; )
    if (events[index2][0] === "enter") {
      if (events[index2][1].type === "content") {
        content3 = index2;
        break;
      }
      events[index2][1].type === "paragraph" && (text5 = index2);
    } else
      events[index2][1].type === "content" && events.splice(index2, 1), !definition2 && events[index2][1].type === "definition" && (definition2 = index2);
  let heading2 = {
    type: "setextHeading",
    start: Object.assign({}, events[text5][1].start),
    end: Object.assign({}, events[events.length - 1][1].end)
  };
  return events[text5][1].type = "setextHeadingText", definition2 ? (events.splice(text5, 0, ["enter", heading2, context]), events.splice(definition2 + 1, 0, ["exit", events[content3][1], context]), events[content3][1].end = Object.assign({}, events[definition2][1].end)) : events[content3][1] = heading2, events.push(["exit", heading2, context]), events;
}
function tokenizeSetextUnderline(effects, ok2, nok) {
  let self2 = this, marker;
  return start2;
  function start2(code2) {
    let index2 = self2.events.length, paragraph2;
    for (; index2--; )
      if (self2.events[index2][1].type !== "lineEnding" && self2.events[index2][1].type !== "linePrefix" && self2.events[index2][1].type !== "content") {
        paragraph2 = self2.events[index2][1].type === "paragraph";
        break;
      }
    return !self2.parser.lazy[self2.now().line] && (self2.interrupt || paragraph2) ? (effects.enter("setextHeadingLine"), marker = code2, before(code2)) : nok(code2);
  }
  function before(code2) {
    return effects.enter("setextHeadingLineSequence"), inside(code2);
  }
  function inside(code2) {
    return code2 === marker ? (effects.consume(code2), inside) : (effects.exit("setextHeadingLineSequence"), markdownSpace(code2) ? factorySpace(effects, after, "lineSuffix")(code2) : after(code2));
  }
  function after(code2) {
    return code2 === null || markdownLineEnding(code2) ? (effects.exit("setextHeadingLine"), ok2(code2)) : nok(code2);
  }
}

// ../../../node_modules/micromark-extension-mdxjs-esm/lib/syntax.js
var blankLineBefore2 = {
  tokenize: tokenizeNextBlank,
  partial: !0
}, trouble3 = "https://github.com/micromark/micromark-extension-mdxjs-esm", allowedAcornTypes = /* @__PURE__ */ new Set(["ExportAllDeclaration", "ExportDefaultDeclaration", "ExportNamedDeclaration", "ImportDeclaration"]);
function mdxjsEsm2(options) {
  let exportImportConstruct = {
    tokenize: tokenizeExportImport,
    concrete: !0
  };
  if (!options || !options.acorn || !options.acorn.parse)
    throw new Error("Expected an `acorn` instance passed in as `options.acorn`");
  let acorn = options.acorn, acornOptions = Object.assign({
    ecmaVersion: 2024,
    sourceType: "module"
  }, options.acornOptions, {
    locations: !0
  });
  return {
    flow: {
      101: exportImportConstruct,
      105: exportImportConstruct
    }
  };
  function tokenizeExportImport(effects, ok2, nok) {
    let self2 = this, definedModuleSpecifiers = self2.parser.definedModuleSpecifiers || (self2.parser.definedModuleSpecifiers = []), eventStart = this.events.length + 1, buffer = "";
    return self2.interrupt ? nok : start2;
    function start2(code2) {
      return self2.now().column > 1 ? nok(code2) : (effects.enter("mdxjsEsm"), effects.enter("mdxjsEsmData"), effects.consume(code2), buffer += String.fromCharCode(code2), word);
    }
    function word(code2) {
      return asciiAlpha(code2) ? (effects.consume(code2), buffer += String.fromCharCode(code2), word) : (buffer === "import" || buffer === "export") && code2 === 32 ? (effects.consume(code2), inside) : nok(code2);
    }
    function inside(code2) {
      return code2 === null || markdownLineEnding(code2) ? (effects.exit("mdxjsEsmData"), lineStart(code2)) : (effects.consume(code2), inside);
    }
    function lineStart(code2) {
      return code2 === null ? atEnd(code2) : markdownLineEnding(code2) ? effects.check(blankLineBefore2, atEnd, continuationStart)(code2) : (effects.enter("mdxjsEsmData"), inside(code2));
    }
    function continuationStart(code2) {
      return effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), lineStart;
    }
    function atEnd(code2) {
      let result = eventsToAcorn(self2.events.slice(eventStart), {
        acorn,
        acornOptions,
        tokenTypes: ["mdxjsEsmData"],
        prefix: definedModuleSpecifiers.length > 0 ? "var " + definedModuleSpecifiers.join(",") + `
` : ""
      });
      if (result.error) {
        if (code2 !== null && result.swallow)
          return continuationStart(code2);
        let error = new VFileMessage("Could not parse import/exports with acorn", {
          cause: result.error,
          place: {
            line: result.error.loc.line,
            column: result.error.loc.column + 1,
            offset: result.error.pos
          },
          ruleId: "acorn",
          source: "micromark-extension-mdxjs-esm"
        });
        throw error.url = trouble3 + "#could-not-parse-importexports-with-acorn", error;
      }
      if (definedModuleSpecifiers.length > 0) {
        let declaration = result.estree.body.shift();
      }
      let index2 = -1;
      for (; ++index2 < result.estree.body.length; ) {
        let node2 = result.estree.body[index2];
        if (!allowedAcornTypes.has(node2.type)) {
          let error = new VFileMessage("Unexpected `" + node2.type + "` in code: only import/exports are supported", {
            place: positionFromEstree(node2),
            ruleId: "non-esm",
            source: "micromark-extension-mdxjs-esm"
          });
          throw error.url = trouble3 + "#unexpected-type-in-code-only-importexports-are-supported", error;
        }
        if (node2.type === "ImportDeclaration" && !self2.interrupt) {
          let index3 = -1;
          for (; ++index3 < node2.specifiers.length; ) {
            let specifier = node2.specifiers[index3];
            definedModuleSpecifiers.push(specifier.local.name);
          }
        }
      }
      return Object.assign(effects.exit("mdxjsEsm"), options.addResult ? {
        estree: result.estree
      } : void 0), ok2(code2);
    }
  }
}
function tokenizeNextBlank(effects, ok2, nok) {
  return start2;
  function start2(code2) {
    return effects.enter("lineEndingBlank"), effects.consume(code2), effects.exit("lineEndingBlank"), effects.attempt(blankLine, ok2, nok);
  }
}

// ../../../node_modules/micromark-util-combine-extensions/index.js
var hasOwnProperty2 = {}.hasOwnProperty;
function combineExtensions(extensions) {
  let all3 = {}, index2 = -1;
  for (; ++index2 < extensions.length; )
    syntaxExtension(all3, extensions[index2]);
  return all3;
}
function syntaxExtension(all3, extension2) {
  let hook;
  for (hook in extension2) {
    let left = (hasOwnProperty2.call(all3, hook) ? all3[hook] : void 0) || (all3[hook] = {}), right = extension2[hook], code2;
    if (right)
      for (code2 in right) {
        hasOwnProperty2.call(left, code2) || (left[code2] = []);
        let value = right[code2];
        constructs(
          // @ts-expect-error Looks like a list.
          left[code2],
          Array.isArray(value) ? value : value ? [value] : []
        );
      }
  }
}
function constructs(existing, list3) {
  let index2 = -1, before = [];
  for (; ++index2 < list3.length; )
    (list3[index2].add === "after" ? existing : before).push(list3[index2]);
  splice(existing, 0, 0, before);
}

// ../../../node_modules/micromark-extension-mdxjs/index.js
function mdxjs(options) {
  let settings = Object.assign(
    {
      acorn: Parser.extend((0, import_acorn_jsx2.default)()),
      acornOptions: { ecmaVersion: 2024, sourceType: "module" },
      addResult: !0
    },
    options
  );
  return combineExtensions([
    mdxjsEsm2(settings),
    mdxExpression2(settings),
    mdxJsx(settings),
    mdxMd()
  ]);
}

// ../../../node_modules/remark-mdx/lib/index.js
var emptyOptions3 = {};
function remarkMdx(options) {
  let self2 = this, settings = options || emptyOptions3, data2 = self2.data(), micromarkExtensions = data2.micromarkExtensions || (data2.micromarkExtensions = []), fromMarkdownExtensions = data2.fromMarkdownExtensions || (data2.fromMarkdownExtensions = []), toMarkdownExtensions = data2.toMarkdownExtensions || (data2.toMarkdownExtensions = []);
  micromarkExtensions.push(mdxjs(settings)), fromMarkdownExtensions.push(mdxFromMarkdown()), toMarkdownExtensions.push(mdxToMarkdown(settings));
}

// ../../../node_modules/mdast-util-to-string/lib/index.js
var emptyOptions4 = {};
function toString2(value, options) {
  let settings = options || emptyOptions4, includeImageAlt = typeof settings.includeImageAlt == "boolean" ? settings.includeImageAlt : !0, includeHtml = typeof settings.includeHtml == "boolean" ? settings.includeHtml : !0;
  return one(value, includeImageAlt, includeHtml);
}
function one(value, includeImageAlt, includeHtml) {
  if (node(value)) {
    if ("value" in value)
      return value.type === "html" && !includeHtml ? "" : value.value;
    if (includeImageAlt && "alt" in value && value.alt)
      return value.alt;
    if ("children" in value)
      return all2(value.children, includeImageAlt, includeHtml);
  }
  return Array.isArray(value) ? all2(value, includeImageAlt, includeHtml) : "";
}
function all2(values, includeImageAlt, includeHtml) {
  let result = [], index2 = -1;
  for (; ++index2 < values.length; )
    result[index2] = one(values[index2], includeImageAlt, includeHtml);
  return result.join("");
}
function node(value) {
  return !!(value && typeof value == "object");
}

// ../../../node_modules/micromark-util-decode-numeric-character-reference/index.js
function decodeNumericCharacterReference(value, base) {
  let code2 = Number.parseInt(value, base);
  return (
    // C0 except for HT, LF, FF, CR, space.
    code2 < 9 || code2 === 11 || code2 > 13 && code2 < 32 || // Control character (DEL) of C0, and C1 controls.
    code2 > 126 && code2 < 160 || // Lone high surrogates and low surrogates.
    code2 > 55295 && code2 < 57344 || // Noncharacters.
    code2 > 64975 && code2 < 65008 || /* eslint-disable no-bitwise */
    (code2 & 65535) === 65535 || (code2 & 65535) === 65534 || /* eslint-enable no-bitwise */
    // Out of range
    code2 > 1114111 ? "\uFFFD" : String.fromCodePoint(code2)
  );
}

// ../../../node_modules/micromark-util-sanitize-uri/index.js
function normalizeUri(value) {
  let result = [], index2 = -1, start2 = 0, skip = 0;
  for (; ++index2 < value.length; ) {
    let code2 = value.charCodeAt(index2), replace = "";
    if (code2 === 37 && asciiAlphanumeric(value.charCodeAt(index2 + 1)) && asciiAlphanumeric(value.charCodeAt(index2 + 2)))
      skip = 2;
    else if (code2 < 128)
      /[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code2)) || (replace = String.fromCharCode(code2));
    else if (code2 > 55295 && code2 < 57344) {
      let next = value.charCodeAt(index2 + 1);
      code2 < 56320 && next > 56319 && next < 57344 ? (replace = String.fromCharCode(code2, next), skip = 1) : replace = "\uFFFD";
    } else
      replace = String.fromCharCode(code2);
    replace && (result.push(value.slice(start2, index2), encodeURIComponent(replace)), start2 = index2 + skip + 1, replace = ""), skip && (index2 += skip, skip = 0);
  }
  return result.join("") + value.slice(start2);
}

// ../../../node_modules/micromark/lib/compile.js
var hasOwnProperty3 = {}.hasOwnProperty;

// ../../../node_modules/micromark/lib/initialize/content.js
var content2 = {
  tokenize: initializeContent
};
function initializeContent(effects) {
  let contentStart = effects.attempt(
    this.parser.constructs.contentInitial,
    afterContentStartConstruct,
    paragraphInitial
  ), previous2;
  return contentStart;
  function afterContentStartConstruct(code2) {
    if (code2 === null) {
      effects.consume(code2);
      return;
    }
    return effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), factorySpace(effects, contentStart, "linePrefix");
  }
  function paragraphInitial(code2) {
    return effects.enter("paragraph"), lineStart(code2);
  }
  function lineStart(code2) {
    let token = effects.enter("chunkText", {
      contentType: "text",
      previous: previous2
    });
    return previous2 && (previous2.next = token), previous2 = token, data2(code2);
  }
  function data2(code2) {
    if (code2 === null) {
      effects.exit("chunkText"), effects.exit("paragraph"), effects.consume(code2);
      return;
    }
    return markdownLineEnding(code2) ? (effects.consume(code2), effects.exit("chunkText"), lineStart) : (effects.consume(code2), data2);
  }
}

// ../../../node_modules/micromark/lib/initialize/document.js
var document = {
  tokenize: initializeDocument
}, containerConstruct = {
  tokenize: tokenizeContainer
};
function initializeDocument(effects) {
  let self2 = this, stack = [], continued = 0, childFlow, childToken, lineStartOffset;
  return start2;
  function start2(code2) {
    if (continued < stack.length) {
      let item = stack[continued];
      return self2.containerState = item[1], effects.attempt(
        item[0].continuation,
        documentContinue,
        checkNewContainers
      )(code2);
    }
    return checkNewContainers(code2);
  }
  function documentContinue(code2) {
    if (continued++, self2.containerState._closeFlow) {
      self2.containerState._closeFlow = void 0, childFlow && closeFlow();
      let indexBeforeExits = self2.events.length, indexBeforeFlow = indexBeforeExits, point4;
      for (; indexBeforeFlow--; )
        if (self2.events[indexBeforeFlow][0] === "exit" && self2.events[indexBeforeFlow][1].type === "chunkFlow") {
          point4 = self2.events[indexBeforeFlow][1].end;
          break;
        }
      exitContainers(continued);
      let index2 = indexBeforeExits;
      for (; index2 < self2.events.length; )
        self2.events[index2][1].end = Object.assign({}, point4), index2++;
      return splice(
        self2.events,
        indexBeforeFlow + 1,
        0,
        self2.events.slice(indexBeforeExits)
      ), self2.events.length = index2, checkNewContainers(code2);
    }
    return start2(code2);
  }
  function checkNewContainers(code2) {
    if (continued === stack.length) {
      if (!childFlow)
        return documentContinued(code2);
      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete)
        return flowStart(code2);
      self2.interrupt = !!(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);
    }
    return self2.containerState = {}, effects.check(
      containerConstruct,
      thereIsANewContainer,
      thereIsNoNewContainer
    )(code2);
  }
  function thereIsANewContainer(code2) {
    return childFlow && closeFlow(), exitContainers(continued), documentContinued(code2);
  }
  function thereIsNoNewContainer(code2) {
    return self2.parser.lazy[self2.now().line] = continued !== stack.length, lineStartOffset = self2.now().offset, flowStart(code2);
  }
  function documentContinued(code2) {
    return self2.containerState = {}, effects.attempt(
      containerConstruct,
      containerContinue,
      flowStart
    )(code2);
  }
  function containerContinue(code2) {
    return continued++, stack.push([self2.currentConstruct, self2.containerState]), documentContinued(code2);
  }
  function flowStart(code2) {
    if (code2 === null) {
      childFlow && closeFlow(), exitContainers(0), effects.consume(code2);
      return;
    }
    return childFlow = childFlow || self2.parser.flow(self2.now()), effects.enter("chunkFlow", {
      contentType: "flow",
      previous: childToken,
      _tokenizer: childFlow
    }), flowContinue(code2);
  }
  function flowContinue(code2) {
    if (code2 === null) {
      writeToChild(effects.exit("chunkFlow"), !0), exitContainers(0), effects.consume(code2);
      return;
    }
    return markdownLineEnding(code2) ? (effects.consume(code2), writeToChild(effects.exit("chunkFlow")), continued = 0, self2.interrupt = void 0, start2) : (effects.consume(code2), flowContinue);
  }
  function writeToChild(token, eof) {
    let stream = self2.sliceStream(token);
    if (eof && stream.push(null), token.previous = childToken, childToken && (childToken.next = token), childToken = token, childFlow.defineSkip(token.start), childFlow.write(stream), self2.parser.lazy[token.start.line]) {
      let index2 = childFlow.events.length;
      for (; index2--; )
        if (
          // The token starts before the line ending…
          childFlow.events[index2][1].start.offset < lineStartOffset && // …and either is not ended yet…
          (!childFlow.events[index2][1].end || // …or ends after it.
          childFlow.events[index2][1].end.offset > lineStartOffset)
        )
          return;
      let indexBeforeExits = self2.events.length, indexBeforeFlow = indexBeforeExits, seen, point4;
      for (; indexBeforeFlow--; )
        if (self2.events[indexBeforeFlow][0] === "exit" && self2.events[indexBeforeFlow][1].type === "chunkFlow") {
          if (seen) {
            point4 = self2.events[indexBeforeFlow][1].end;
            break;
          }
          seen = !0;
        }
      for (exitContainers(continued), index2 = indexBeforeExits; index2 < self2.events.length; )
        self2.events[index2][1].end = Object.assign({}, point4), index2++;
      splice(
        self2.events,
        indexBeforeFlow + 1,
        0,
        self2.events.slice(indexBeforeExits)
      ), self2.events.length = index2;
    }
  }
  function exitContainers(size) {
    let index2 = stack.length;
    for (; index2-- > size; ) {
      let entry = stack[index2];
      self2.containerState = entry[1], entry[0].exit.call(self2, effects);
    }
    stack.length = size;
  }
  function closeFlow() {
    childFlow.write([null]), childToken = void 0, childFlow = void 0, self2.containerState._closeFlow = void 0;
  }
}
function tokenizeContainer(effects, ok2, nok) {
  return factorySpace(
    effects,
    effects.attempt(this.parser.constructs.document, ok2, nok),
    "linePrefix",
    this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
  );
}

// ../../../node_modules/micromark/lib/initialize/flow.js
var flow = {
  tokenize: initializeFlow
};
function initializeFlow(effects) {
  let self2 = this, initial = effects.attempt(
    // Try to parse a blank line.
    blankLine,
    atBlankEnding,
    // Try to parse initial flow (essentially, only code).
    effects.attempt(
      this.parser.constructs.flowInitial,
      afterConstruct,
      factorySpace(
        effects,
        effects.attempt(
          this.parser.constructs.flow,
          afterConstruct,
          effects.attempt(content, afterConstruct)
        ),
        "linePrefix"
      )
    )
  );
  return initial;
  function atBlankEnding(code2) {
    if (code2 === null) {
      effects.consume(code2);
      return;
    }
    return effects.enter("lineEndingBlank"), effects.consume(code2), effects.exit("lineEndingBlank"), self2.currentConstruct = void 0, initial;
  }
  function afterConstruct(code2) {
    if (code2 === null) {
      effects.consume(code2);
      return;
    }
    return effects.enter("lineEnding"), effects.consume(code2), effects.exit("lineEnding"), self2.currentConstruct = void 0, initial;
  }
}

// ../../../node_modules/micromark/lib/initialize/text.js
var resolver = {
  resolveAll: createResolver()
}, string = initializeFactory("string"), text2 = initializeFactory("text");
function initializeFactory(field) {
  return {
    tokenize: initializeText,
    resolveAll: createResolver(
      field === "text" ? resolveAllLineSuffixes : void 0
    )
  };
  function initializeText(effects) {
    let self2 = this, constructs2 = this.parser.constructs[field], text5 = effects.attempt(constructs2, start2, notText);
    return start2;
    function start2(code2) {
      return atBreak(code2) ? text5(code2) : notText(code2);
    }
    function notText(code2) {
      if (code2 === null) {
        effects.consume(code2);
        return;
      }
      return effects.enter("data"), effects.consume(code2), data2;
    }
    function data2(code2) {
      return atBreak(code2) ? (effects.exit("data"), text5(code2)) : (effects.consume(code2), data2);
    }
    function atBreak(code2) {
      if (code2 === null)
        return !0;
      let list3 = constructs2[code2], index2 = -1;
      if (list3)
        for (; ++index2 < list3.length; ) {
          let item = list3[index2];
          if (!item.previous || item.previous.call(self2, self2.previous))
            return !0;
        }
      return !1;
    }
  }
}
function createResolver(extraResolver) {
  return resolveAllText;
  function resolveAllText(events, context) {
    let index2 = -1, enter;
    for (; ++index2 <= events.length; )
      enter === void 0 ? events[index2] && events[index2][1].type === "data" && (enter = index2, index2++) : (!events[index2] || events[index2][1].type !== "data") && (index2 !== enter + 2 && (events[enter][1].end = events[index2 - 1][1].end, events.splice(enter + 2, index2 - enter - 2), index2 = enter + 2), enter = void 0);
    return extraResolver ? extraResolver(events, context) : events;
  }
}
function resolveAllLineSuffixes(events, context) {
  let eventIndex = 0;
  for (; ++eventIndex <= events.length; )
    if ((eventIndex === events.length || events[eventIndex][1].type === "lineEnding") && events[eventIndex - 1][1].type === "data") {
      let data2 = events[eventIndex - 1][1], chunks = context.sliceStream(data2), index2 = chunks.length, bufferIndex = -1, size = 0, tabs;
      for (; index2--; ) {
        let chunk = chunks[index2];
        if (typeof chunk == "string") {
          for (bufferIndex = chunk.length; chunk.charCodeAt(bufferIndex - 1) === 32; )
            size++, bufferIndex--;
          if (bufferIndex) break;
          bufferIndex = -1;
        } else if (chunk === -2)
          tabs = !0, size++;
        else if (chunk !== -1) {
          index2++;
          break;
        }
      }
      if (size) {
        let token = {
          type: eventIndex === events.length || tabs || size < 2 ? "lineSuffix" : "hardBreakTrailing",
          start: {
            line: data2.end.line,
            column: data2.end.column - size,
            offset: data2.end.offset - size,
            _index: data2.start._index + index2,
            _bufferIndex: index2 ? bufferIndex : data2.start._bufferIndex + bufferIndex
          },
          end: Object.assign({}, data2.end)
        };
        data2.end = Object.assign({}, token.start), data2.start.offset === data2.end.offset ? Object.assign(data2, token) : (events.splice(
          eventIndex,
          0,
          ["enter", token, context],
          ["exit", token, context]
        ), eventIndex += 2);
      }
      eventIndex++;
    }
  return events;
}

// ../../../node_modules/micromark/lib/create-tokenizer.js
function createTokenizer(parser, initialize, from) {
  let point4 = Object.assign(
    from ? Object.assign({}, from) : {
      line: 1,
      column: 1,
      offset: 0
    },
    {
      _index: 0,
      _bufferIndex: -1
    }
  ), columnStart = {}, resolveAllConstructs = [], chunks = [], stack = [], consumed = !0, effects = {
    consume,
    enter,
    exit: exit2,
    attempt: constructFactory(onsuccessfulconstruct),
    check: constructFactory(onsuccessfulcheck),
    interrupt: constructFactory(onsuccessfulcheck, {
      interrupt: !0
    })
  }, context = {
    previous: null,
    code: null,
    containerState: {},
    events: [],
    parser,
    sliceStream,
    sliceSerialize,
    now,
    defineSkip,
    write
  }, state = initialize.tokenize.call(context, effects), expectedCode;
  return initialize.resolveAll && resolveAllConstructs.push(initialize), context;
  function write(slice2) {
    return chunks = push(chunks, slice2), main(), chunks[chunks.length - 1] !== null ? [] : (addResult(initialize, 0), context.events = resolveAll(resolveAllConstructs, context.events, context), context.events);
  }
  function sliceSerialize(token, expandTabs) {
    return serializeChunks2(sliceStream(token), expandTabs);
  }
  function sliceStream(token) {
    return sliceChunks(chunks, token);
  }
  function now() {
    let { line, column, offset: offset2, _index, _bufferIndex } = point4;
    return {
      line,
      column,
      offset: offset2,
      _index,
      _bufferIndex
    };
  }
  function defineSkip(value) {
    columnStart[value.line] = value.column, accountForPotentialSkip();
  }
  function main() {
    let chunkIndex;
    for (; point4._index < chunks.length; ) {
      let chunk = chunks[point4._index];
      if (typeof chunk == "string")
        for (chunkIndex = point4._index, point4._bufferIndex < 0 && (point4._bufferIndex = 0); point4._index === chunkIndex && point4._bufferIndex < chunk.length; )
          go(chunk.charCodeAt(point4._bufferIndex));
      else
        go(chunk);
    }
  }
  function go(code2) {
    consumed = void 0, expectedCode = code2, state = state(code2);
  }
  function consume(code2) {
    markdownLineEnding(code2) ? (point4.line++, point4.column = 1, point4.offset += code2 === -3 ? 2 : 1, accountForPotentialSkip()) : code2 !== -1 && (point4.column++, point4.offset++), point4._bufferIndex < 0 ? point4._index++ : (point4._bufferIndex++, point4._bufferIndex === chunks[point4._index].length && (point4._bufferIndex = -1, point4._index++)), context.previous = code2, consumed = !0;
  }
  function enter(type, fields) {
    let token = fields || {};
    return token.type = type, token.start = now(), context.events.push(["enter", token, context]), stack.push(token), token;
  }
  function exit2(type) {
    let token = stack.pop();
    return token.end = now(), context.events.push(["exit", token, context]), token;
  }
  function onsuccessfulconstruct(construct, info) {
    addResult(construct, info.from);
  }
  function onsuccessfulcheck(_, info) {
    info.restore();
  }
  function constructFactory(onreturn, fields) {
    return hook;
    function hook(constructs2, returnState, bogusState) {
      let listOfConstructs, constructIndex, currentConstruct, info;
      return Array.isArray(constructs2) ? handleListOfConstructs(constructs2) : "tokenize" in constructs2 ? (
        // @ts-expect-error Looks like a construct.
        handleListOfConstructs([constructs2])
      ) : handleMapOfConstructs(constructs2);
      function handleMapOfConstructs(map) {
        return start2;
        function start2(code2) {
          let def = code2 !== null && map[code2], all3 = code2 !== null && map.null, list3 = [
            // To do: add more extension tests.
            /* c8 ignore next 2 */
            ...Array.isArray(def) ? def : def ? [def] : [],
            ...Array.isArray(all3) ? all3 : all3 ? [all3] : []
          ];
          return handleListOfConstructs(list3)(code2);
        }
      }
      function handleListOfConstructs(list3) {
        return listOfConstructs = list3, constructIndex = 0, list3.length === 0 ? bogusState : handleConstruct(list3[constructIndex]);
      }
      function handleConstruct(construct) {
        return start2;
        function start2(code2) {
          return info = store(), currentConstruct = construct, construct.partial || (context.currentConstruct = construct), construct.name && context.parser.constructs.disable.null.includes(construct.name) ? nok(code2) : construct.tokenize.call(
            // If we do have fields, create an object w/ `context` as its
            // prototype.
            // This allows a “live binding”, which is needed for `interrupt`.
            fields ? Object.assign(Object.create(context), fields) : context,
            effects,
            ok2,
            nok
          )(code2);
        }
      }
      function ok2(code2) {
        return consumed = !0, onreturn(currentConstruct, info), returnState;
      }
      function nok(code2) {
        return consumed = !0, info.restore(), ++constructIndex < listOfConstructs.length ? handleConstruct(listOfConstructs[constructIndex]) : bogusState;
      }
    }
  }
  function addResult(construct, from2) {
    construct.resolveAll && !resolveAllConstructs.includes(construct) && resolveAllConstructs.push(construct), construct.resolve && splice(
      context.events,
      from2,
      context.events.length - from2,
      construct.resolve(context.events.slice(from2), context)
    ), construct.resolveTo && (context.events = construct.resolveTo(context.events, context));
  }
  function store() {
    let startPoint = now(), startPrevious = context.previous, startCurrentConstruct = context.currentConstruct, startEventsIndex = context.events.length, startStack = Array.from(stack);
    return {
      restore,
      from: startEventsIndex
    };
    function restore() {
      point4 = startPoint, context.previous = startPrevious, context.currentConstruct = startCurrentConstruct, context.events.length = startEventsIndex, stack = startStack, accountForPotentialSkip();
    }
  }
  function accountForPotentialSkip() {
    point4.line in columnStart && point4.column < 2 && (point4.column = columnStart[point4.line], point4.offset += columnStart[point4.line] - 1);
  }
}
function sliceChunks(chunks, token) {
  let startIndex = token.start._index, startBufferIndex = token.start._bufferIndex, endIndex = token.end._index, endBufferIndex = token.end._bufferIndex, view;
  if (startIndex === endIndex)
    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];
  else {
    if (view = chunks.slice(startIndex, endIndex), startBufferIndex > -1) {
      let head = view[0];
      typeof head == "string" ? view[0] = head.slice(startBufferIndex) : view.shift();
    }
    endBufferIndex > 0 && view.push(chunks[endIndex].slice(0, endBufferIndex));
  }
  return view;
}
function serializeChunks2(chunks, expandTabs) {
  let index2 = -1, result = [], atTab;
  for (; ++index2 < chunks.length; ) {
    let chunk = chunks[index2], value;
    if (typeof chunk == "string")
      value = chunk;
    else
      switch (chunk) {
        case -5: {
          value = "\r";
          break;
        }
        case -4: {
          value = `
`;
          break;
        }
        case -3: {
          value = `\r
`;
          break;
        }
        case -2: {
          value = expandTabs ? " " : "	";
          break;
        }
        case -1: {
          if (!expandTabs && atTab) continue;
          value = " ";
          break;
        }
        default:
          value = String.fromCharCode(chunk);
      }
    atTab = chunk === -2, result.push(value);
  }
  return result.join("");
}

// ../../../node_modules/micromark/lib/constructs.js
var constructs_exports = {};
__export(constructs_exports, {
  attentionMarkers: () => attentionMarkers,
  contentInitial: () => contentInitial,
  disable: () => disable,
  document: () => document2,
  flow: () => flow2,
  flowInitial: () => flowInitial,
  insideSpan: () => insideSpan,
  string: () => string2,
  text: () => text3
});
var document2 = {
  42: list,
  43: list,
  45: list,
  48: list,
  49: list,
  50: list,
  51: list,
  52: list,
  53: list,
  54: list,
  55: list,
  56: list,
  57: list,
  62: blockQuote
}, contentInitial = {
  91: definition
}, flowInitial = {
  [-2]: codeIndented,
  [-1]: codeIndented,
  32: codeIndented
}, flow2 = {
  35: headingAtx,
  42: thematicBreak,
  45: [setextUnderline, thematicBreak],
  60: htmlFlow,
  61: setextUnderline,
  95: thematicBreak,
  96: codeFenced,
  126: codeFenced
}, string2 = {
  38: characterReference,
  92: characterEscape
}, text3 = {
  [-5]: lineEnding,
  [-4]: lineEnding,
  [-3]: lineEnding,
  33: labelStartImage,
  38: characterReference,
  42: attention,
  60: [autolink, htmlText],
  91: labelStartLink,
  92: [hardBreakEscape, characterEscape],
  93: labelEnd,
  95: attention,
  96: codeText
}, insideSpan = {
  null: [attention, resolver]
}, attentionMarkers = {
  null: [42, 95]
}, disable = {
  null: []
};

// ../../../node_modules/micromark/lib/parse.js
function parse3(options) {
  let constructs2 = (
    /** @type {FullNormalizedExtension} */
    combineExtensions([constructs_exports, ...(options || {}).extensions || []])
  ), parser = {
    defined: [],
    lazy: {},
    constructs: constructs2,
    content: create4(content2),
    document: create4(document),
    flow: create4(flow),
    string: create4(string),
    text: create4(text2)
  };
  return parser;
  function create4(initial) {
    return creator;
    function creator(from) {
      return createTokenizer(parser, initial, from);
    }
  }
}

// ../../../node_modules/micromark/lib/postprocess.js
function postprocess(events) {
  for (; !subtokenize(events); )
    ;
  return events;
}

// ../../../node_modules/micromark/lib/preprocess.js
var search = /[\0\t\n\r]/g;
function preprocess() {
  let column = 1, buffer = "", start2 = !0, atCarriageReturn;
  return preprocessor;
  function preprocessor(value, encoding, end) {
    let chunks = [], match, next, startPosition, endPosition, code2;
    for (value = buffer + (typeof value == "string" ? value.toString() : new TextDecoder(encoding || void 0).decode(value)), startPosition = 0, buffer = "", start2 && (value.charCodeAt(0) === 65279 && startPosition++, start2 = void 0); startPosition < value.length; ) {
      if (search.lastIndex = startPosition, match = search.exec(value), endPosition = match && match.index !== void 0 ? match.index : value.length, code2 = value.charCodeAt(endPosition), !match) {
        buffer = value.slice(startPosition);
        break;
      }
      if (code2 === 10 && startPosition === endPosition && atCarriageReturn)
        chunks.push(-3), atCarriageReturn = void 0;
      else
        switch (atCarriageReturn && (chunks.push(-5), atCarriageReturn = void 0), startPosition < endPosition && (chunks.push(value.slice(startPosition, endPosition)), column += endPosition - startPosition), code2) {
          case 0: {
            chunks.push(65533), column++;
            break;
          }
          case 9: {
            for (next = Math.ceil(column / 4) * 4, chunks.push(-2); column++ < next; ) chunks.push(-1);
            break;
          }
          case 10: {
            chunks.push(-4), column = 1;
            break;
          }
          default:
            atCarriageReturn = !0, column = 1;
        }
      startPosition = endPosition + 1;
    }
    return end && (atCarriageReturn && chunks.push(-5), buffer && chunks.push(buffer), chunks.push(null)), chunks;
  }
}

// ../../../node_modules/micromark-util-decode-string/index.js
var characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
function decodeString(value) {
  return value.replace(characterEscapeOrReference, decode);
}
function decode($0, $1, $2) {
  if ($1)
    return $1;
  if ($2.charCodeAt(0) === 35) {
    let head2 = $2.charCodeAt(1), hex = head2 === 120 || head2 === 88;
    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);
  }
  return decodeNamedCharacterReference($2) || $0;
}

// ../../../node_modules/mdast-util-from-markdown/lib/index.js
var own8 = {}.hasOwnProperty;
function fromMarkdown(value, encoding, options) {
  return typeof encoding != "string" && (options = encoding, encoding = void 0), compiler(options)(
    postprocess(
      parse3(options).document().write(preprocess()(value, encoding, !0))
    )
  );
}
function compiler(options) {
  let config = {
    transforms: [],
    canContainEols: ["emphasis", "fragment", "heading", "paragraph", "strong"],
    enter: {
      autolink: opener(link2),
      autolinkProtocol: onenterdata,
      autolinkEmail: onenterdata,
      atxHeading: opener(heading2),
      blockQuote: opener(blockQuote2),
      characterEscape: onenterdata,
      characterReference: onenterdata,
      codeFenced: opener(codeFlow),
      codeFencedFenceInfo: buffer,
      codeFencedFenceMeta: buffer,
      codeIndented: opener(codeFlow, buffer),
      codeText: opener(codeText2, buffer),
      codeTextData: onenterdata,
      data: onenterdata,
      codeFlowValue: onenterdata,
      definition: opener(definition2),
      definitionDestinationString: buffer,
      definitionLabelString: buffer,
      definitionTitleString: buffer,
      emphasis: opener(emphasis2),
      hardBreakEscape: opener(hardBreak2),
      hardBreakTrailing: opener(hardBreak2),
      htmlFlow: opener(html5, buffer),
      htmlFlowData: onenterdata,
      htmlText: opener(html5, buffer),
      htmlTextData: onenterdata,
      image: opener(image2),
      label: buffer,
      link: opener(link2),
      listItem: opener(listItem2),
      listItemValue: onenterlistitemvalue,
      listOrdered: opener(list3, onenterlistordered),
      listUnordered: opener(list3),
      paragraph: opener(paragraph2),
      reference: onenterreference,
      referenceString: buffer,
      resourceDestinationString: buffer,
      resourceTitleString: buffer,
      setextHeading: opener(heading2),
      strong: opener(strong2),
      thematicBreak: opener(thematicBreak3)
    },
    exit: {
      atxHeading: closer(),
      atxHeadingSequence: onexitatxheadingsequence,
      autolink: closer(),
      autolinkEmail: onexitautolinkemail,
      autolinkProtocol: onexitautolinkprotocol,
      blockQuote: closer(),
      characterEscapeValue: onexitdata,
      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
      characterReferenceValue: onexitcharacterreferencevalue,
      codeFenced: closer(onexitcodefenced),
      codeFencedFence: onexitcodefencedfence,
      codeFencedFenceInfo: onexitcodefencedfenceinfo,
      codeFencedFenceMeta: onexitcodefencedfencemeta,
      codeFlowValue: onexitdata,
      codeIndented: closer(onexitcodeindented),
      codeText: closer(onexitcodetext),
      codeTextData: onexitdata,
      data: onexitdata,
      definition: closer(),
      definitionDestinationString: onexitdefinitiondestinationstring,
      definitionLabelString: onexitdefinitionlabelstring,
      definitionTitleString: onexitdefinitiontitlestring,
      emphasis: closer(),
      hardBreakEscape: closer(onexithardbreak),
      hardBreakTrailing: closer(onexithardbreak),
      htmlFlow: closer(onexithtmlflow),
      htmlFlowData: onexitdata,
      htmlText: closer(onexithtmltext),
      htmlTextData: onexitdata,
      image: closer(onexitimage),
      label: onexitlabel,
      labelText: onexitlabeltext,
      lineEnding: onexitlineending,
      link: closer(onexitlink),
      listItem: closer(),
      listOrdered: closer(),
      listUnordered: closer(),
      paragraph: closer(),
      referenceString: onexitreferencestring,
      resourceDestinationString: onexitresourcedestinationstring,
      resourceTitleString: onexitresourcetitlestring,
      resource: onexitresource,
      setextHeading: closer(onexitsetextheading),
      setextHeadingLineSequence: onexitsetextheadinglinesequence,
      setextHeadingText: onexitsetextheadingtext,
      strong: closer(),
      thematicBreak: closer()
    }
  };
  configure(config, (options || {}).mdastExtensions || []);
  let data2 = {};
  return compile4;
  function compile4(events) {
    let tree = {
      type: "root",
      children: []
    }, context = {
      stack: [tree],
      tokenStack: [],
      config,
      enter,
      exit: exit2,
      buffer,
      resume,
      data: data2
    }, listStack = [], index2 = -1;
    for (; ++index2 < events.length; )
      if (events[index2][1].type === "listOrdered" || events[index2][1].type === "listUnordered")
        if (events[index2][0] === "enter")
          listStack.push(index2);
        else {
          let tail = listStack.pop();
          index2 = prepareList(events, tail, index2);
        }
    for (index2 = -1; ++index2 < events.length; ) {
      let handler = config[events[index2][0]];
      own8.call(handler, events[index2][1].type) && handler[events[index2][1].type].call(
        Object.assign(
          {
            sliceSerialize: events[index2][2].sliceSerialize
          },
          context
        ),
        events[index2][1]
      );
    }
    if (context.tokenStack.length > 0) {
      let tail = context.tokenStack[context.tokenStack.length - 1];
      (tail[1] || defaultOnError).call(context, void 0, tail[0]);
    }
    for (tree.position = {
      start: point3(
        events.length > 0 ? events[0][1].start : {
          line: 1,
          column: 1,
          offset: 0
        }
      ),
      end: point3(
        events.length > 0 ? events[events.length - 2][1].end : {
          line: 1,
          column: 1,
          offset: 0
        }
      )
    }, index2 = -1; ++index2 < config.transforms.length; )
      tree = config.transforms[index2](tree) || tree;
    return tree;
  }
  function prepareList(events, start2, length) {
    let index2 = start2 - 1, containerBalance = -1, listSpread = !1, listItem3, lineIndex, firstBlankLineIndex, atMarker;
    for (; ++index2 <= length; ) {
      let event = events[index2];
      switch (event[1].type) {
        case "listUnordered":
        case "listOrdered":
        case "blockQuote": {
          event[0] === "enter" ? containerBalance++ : containerBalance--, atMarker = void 0;
          break;
        }
        case "lineEndingBlank": {
          event[0] === "enter" && (listItem3 && !atMarker && !containerBalance && !firstBlankLineIndex && (firstBlankLineIndex = index2), atMarker = void 0);
          break;
        }
        case "linePrefix":
        case "listItemValue":
        case "listItemMarker":
        case "listItemPrefix":
        case "listItemPrefixWhitespace":
          break;
        default:
          atMarker = void 0;
      }
      if (!containerBalance && event[0] === "enter" && event[1].type === "listItemPrefix" || containerBalance === -1 && event[0] === "exit" && (event[1].type === "listUnordered" || event[1].type === "listOrdered")) {
        if (listItem3) {
          let tailIndex = index2;
          for (lineIndex = void 0; tailIndex--; ) {
            let tailEvent = events[tailIndex];
            if (tailEvent[1].type === "lineEnding" || tailEvent[1].type === "lineEndingBlank") {
              if (tailEvent[0] === "exit") continue;
              lineIndex && (events[lineIndex][1].type = "lineEndingBlank", listSpread = !0), tailEvent[1].type = "lineEnding", lineIndex = tailIndex;
            } else if (!(tailEvent[1].type === "linePrefix" || tailEvent[1].type === "blockQuotePrefix" || tailEvent[1].type === "blockQuotePrefixWhitespace" || tailEvent[1].type === "blockQuoteMarker" || tailEvent[1].type === "listItemIndent"))
              break;
          }
          firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex) && (listItem3._spread = !0), listItem3.end = Object.assign(
            {},
            lineIndex ? events[lineIndex][1].start : event[1].end
          ), events.splice(lineIndex || index2, 0, ["exit", listItem3, event[2]]), index2++, length++;
        }
        if (event[1].type === "listItemPrefix") {
          let item = {
            type: "listItem",
            _spread: !1,
            start: Object.assign({}, event[1].start),
            // @ts-expect-error: we’ll add `end` in a second.
            end: void 0
          };
          listItem3 = item, events.splice(index2, 0, ["enter", item, event[2]]), index2++, length++, firstBlankLineIndex = void 0, atMarker = !0;
        }
      }
    }
    return events[start2][1]._spread = listSpread, length;
  }
  function opener(create4, and) {
    return open;
    function open(token) {
      enter.call(this, create4(token), token), and && and.call(this, token);
    }
  }
  function buffer() {
    this.stack.push({
      type: "fragment",
      children: []
    });
  }
  function enter(node2, token, errorHandler) {
    this.stack[this.stack.length - 1].children.push(node2), this.stack.push(node2), this.tokenStack.push([token, errorHandler]), node2.position = {
      start: point3(token.start),
      // @ts-expect-error: `end` will be patched later.
      end: void 0
    };
  }
  function closer(and) {
    return close;
    function close(token) {
      and && and.call(this, token), exit2.call(this, token);
    }
  }
  function exit2(token, onExitError) {
    let node2 = this.stack.pop(), open = this.tokenStack.pop();
    if (open)
      open[0].type !== token.type && (onExitError ? onExitError.call(this, token, open[0]) : (open[1] || defaultOnError).call(this, token, open[0]));
    else throw new Error(
      "Cannot close `" + token.type + "` (" + stringifyPosition({
        start: token.start,
        end: token.end
      }) + "): it\u2019s not open"
    );
    node2.position.end = point3(token.end);
  }
  function resume() {
    return toString2(this.stack.pop());
  }
  function onenterlistordered() {
    this.data.expectingFirstListItemValue = !0;
  }
  function onenterlistitemvalue(token) {
    if (this.data.expectingFirstListItemValue) {
      let ancestor = this.stack[this.stack.length - 2];
      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10), this.data.expectingFirstListItemValue = void 0;
    }
  }
  function onexitcodefencedfenceinfo() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.lang = data3;
  }
  function onexitcodefencedfencemeta() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.meta = data3;
  }
  function onexitcodefencedfence() {
    this.data.flowCodeInside || (this.buffer(), this.data.flowCodeInside = !0);
  }
  function onexitcodefenced() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.value = data3.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, ""), this.data.flowCodeInside = void 0;
  }
  function onexitcodeindented() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.value = data3.replace(/(\r?\n|\r)$/g, "");
  }
  function onexitdefinitionlabelstring(token) {
    let label = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.label = label, node2.identifier = normalizeIdentifier(
      this.sliceSerialize(token)
    ).toLowerCase();
  }
  function onexitdefinitiontitlestring() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.title = data3;
  }
  function onexitdefinitiondestinationstring() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.url = data3;
  }
  function onexitatxheadingsequence(token) {
    let node2 = this.stack[this.stack.length - 1];
    if (!node2.depth) {
      let depth = this.sliceSerialize(token).length;
      node2.depth = depth;
    }
  }
  function onexitsetextheadingtext() {
    this.data.setextHeadingSlurpLineEnding = !0;
  }
  function onexitsetextheadinglinesequence(token) {
    let node2 = this.stack[this.stack.length - 1];
    node2.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;
  }
  function onexitsetextheading() {
    this.data.setextHeadingSlurpLineEnding = void 0;
  }
  function onenterdata(token) {
    let siblings = this.stack[this.stack.length - 1].children, tail = siblings[siblings.length - 1];
    (!tail || tail.type !== "text") && (tail = text5(), tail.position = {
      start: point3(token.start),
      // @ts-expect-error: we’ll add `end` later.
      end: void 0
    }, siblings.push(tail)), this.stack.push(tail);
  }
  function onexitdata(token) {
    let tail = this.stack.pop();
    tail.value += this.sliceSerialize(token), tail.position.end = point3(token.end);
  }
  function onexitlineending(token) {
    let context = this.stack[this.stack.length - 1];
    if (this.data.atHardBreak) {
      let tail = context.children[context.children.length - 1];
      tail.position.end = point3(token.end), this.data.atHardBreak = void 0;
      return;
    }
    !this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type) && (onenterdata.call(this, token), onexitdata.call(this, token));
  }
  function onexithardbreak() {
    this.data.atHardBreak = !0;
  }
  function onexithtmlflow() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.value = data3;
  }
  function onexithtmltext() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.value = data3;
  }
  function onexitcodetext() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.value = data3;
  }
  function onexitlink() {
    let node2 = this.stack[this.stack.length - 1];
    if (this.data.inReference) {
      let referenceType = this.data.referenceType || "shortcut";
      node2.type += "Reference", node2.referenceType = referenceType, delete node2.url, delete node2.title;
    } else
      delete node2.identifier, delete node2.label;
    this.data.referenceType = void 0;
  }
  function onexitimage() {
    let node2 = this.stack[this.stack.length - 1];
    if (this.data.inReference) {
      let referenceType = this.data.referenceType || "shortcut";
      node2.type += "Reference", node2.referenceType = referenceType, delete node2.url, delete node2.title;
    } else
      delete node2.identifier, delete node2.label;
    this.data.referenceType = void 0;
  }
  function onexitlabeltext(token) {
    let string3 = this.sliceSerialize(token), ancestor = this.stack[this.stack.length - 2];
    ancestor.label = decodeString(string3), ancestor.identifier = normalizeIdentifier(string3).toLowerCase();
  }
  function onexitlabel() {
    let fragment = this.stack[this.stack.length - 1], value = this.resume(), node2 = this.stack[this.stack.length - 1];
    if (this.data.inReference = !0, node2.type === "link") {
      let children = fragment.children;
      node2.children = children;
    } else
      node2.alt = value;
  }
  function onexitresourcedestinationstring() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.url = data3;
  }
  function onexitresourcetitlestring() {
    let data3 = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.title = data3;
  }
  function onexitresource() {
    this.data.inReference = void 0;
  }
  function onenterreference() {
    this.data.referenceType = "collapsed";
  }
  function onexitreferencestring(token) {
    let label = this.resume(), node2 = this.stack[this.stack.length - 1];
    node2.label = label, node2.identifier = normalizeIdentifier(
      this.sliceSerialize(token)
    ).toLowerCase(), this.data.referenceType = "full";
  }
  function onexitcharacterreferencemarker(token) {
    this.data.characterReferenceType = token.type;
  }
  function onexitcharacterreferencevalue(token) {
    let data3 = this.sliceSerialize(token), type = this.data.characterReferenceType, value;
    type ? (value = decodeNumericCharacterReference(
      data3,
      type === "characterReferenceMarkerNumeric" ? 10 : 16
    ), this.data.characterReferenceType = void 0) : value = decodeNamedCharacterReference(data3);
    let tail = this.stack.pop();
    tail.value += value, tail.position.end = point3(token.end);
  }
  function onexitautolinkprotocol(token) {
    onexitdata.call(this, token);
    let node2 = this.stack[this.stack.length - 1];
    node2.url = this.sliceSerialize(token);
  }
  function onexitautolinkemail(token) {
    onexitdata.call(this, token);
    let node2 = this.stack[this.stack.length - 1];
    node2.url = "mailto:" + this.sliceSerialize(token);
  }
  function blockQuote2() {
    return {
      type: "blockquote",
      children: []
    };
  }
  function codeFlow() {
    return {
      type: "code",
      lang: null,
      meta: null,
      value: ""
    };
  }
  function codeText2() {
    return {
      type: "inlineCode",
      value: ""
    };
  }
  function definition2() {
    return {
      type: "definition",
      identifier: "",
      label: null,
      title: null,
      url: ""
    };
  }
  function emphasis2() {
    return {
      type: "emphasis",
      children: []
    };
  }
  function heading2() {
    return {
      type: "heading",
      // @ts-expect-error `depth` will be set later.
      depth: 0,
      children: []
    };
  }
  function hardBreak2() {
    return {
      type: "break"
    };
  }
  function html5() {
    return {
      type: "html",
      value: ""
    };
  }
  function image2() {
    return {
      type: "image",
      title: null,
      url: "",
      alt: null
    };
  }
  function link2() {
    return {
      type: "link",
      title: null,
      url: "",
      children: []
    };
  }
  function list3(token) {
    return {
      type: "list",
      ordered: token.type === "listOrdered",
      start: null,
      spread: token._spread,
      children: []
    };
  }
  function listItem2(token) {
    return {
      type: "listItem",
      spread: token._spread,
      checked: null,
      children: []
    };
  }
  function paragraph2() {
    return {
      type: "paragraph",
      children: []
    };
  }
  function strong2() {
    return {
      type: "strong",
      children: []
    };
  }
  function text5() {
    return {
      type: "text",
      value: ""
    };
  }
  function thematicBreak3() {
    return {
      type: "thematicBreak"
    };
  }
}
function point3(d) {
  return {
    line: d.line,
    column: d.column,
    offset: d.offset
  };
}
function configure(combined, extensions) {
  let index2 = -1;
  for (; ++index2 < extensions.length; ) {
    let value = extensions[index2];
    Array.isArray(value) ? configure(combined, value) : extension(combined, value);
  }
}
function extension(combined, extension2) {
  let key2;
  for (key2 in extension2)
    if (own8.call(extension2, key2))
      switch (key2) {
        case "canContainEols": {
          let right = extension2[key2];
          right && combined[key2].push(...right);
          break;
        }
        case "transforms": {
          let right = extension2[key2];
          right && combined[key2].push(...right);
          break;
        }
        case "enter":
        case "exit": {
          let right = extension2[key2];
          right && Object.assign(combined[key2], right);
          break;
        }
      }
}
function defaultOnError(left, right) {
  throw left ? new Error(
    "Cannot close `" + left.type + "` (" + stringifyPosition({
      start: left.start,
      end: left.end
    }) + "): a different token (`" + right.type + "`, " + stringifyPosition({
      start: right.start,
      end: right.end
    }) + ") is open"
  ) : new Error(
    "Cannot close document, a token (`" + right.type + "`, " + stringifyPosition({
      start: right.start,
      end: right.end
    }) + ") is still open"
  );
}

// ../../../node_modules/remark-parse/lib/index.js
function remarkParse(options) {
  let self2 = this;
  self2.parser = parser;
  function parser(doc) {
    return fromMarkdown(doc, {
      ...self2.data("settings"),
      ...options,
      // Note: these options are not in the readme.
      // The goal is for them to be set by plugins on `data` instead of being
      // passed by users.
      extensions: self2.data("micromarkExtensions") || [],
      mdastExtensions: self2.data("fromMarkdownExtensions") || []
    });
  }
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js
function blockquote(state, node2) {
  let result = {
    type: "element",
    tagName: "blockquote",
    properties: {},
    children: state.wrap(state.all(node2), !0)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/break.js
function hardBreak(state, node2) {
  let result = { type: "element", tagName: "br", properties: {}, children: [] };
  return state.patch(node2, result), [state.applyData(node2, result), { type: "text", value: `
` }];
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/code.js
function code(state, node2) {
  let value = node2.value ? node2.value + `
` : "", properties = {};
  node2.lang && (properties.className = ["language-" + node2.lang]);
  let result = {
    type: "element",
    tagName: "code",
    properties,
    children: [{ type: "text", value }]
  };
  return node2.meta && (result.data = { meta: node2.meta }), state.patch(node2, result), result = state.applyData(node2, result), result = { type: "element", tagName: "pre", properties: {}, children: [result] }, state.patch(node2, result), result;
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/delete.js
function strikethrough(state, node2) {
  let result = {
    type: "element",
    tagName: "del",
    properties: {},
    children: state.all(node2)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js
function emphasis(state, node2) {
  let result = {
    type: "element",
    tagName: "em",
    properties: {},
    children: state.all(node2)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js
function footnoteReference(state, node2) {
  let clobberPrefix = typeof state.options.clobberPrefix == "string" ? state.options.clobberPrefix : "user-content-", id = String(node2.identifier).toUpperCase(), safeId = normalizeUri(id.toLowerCase()), index2 = state.footnoteOrder.indexOf(id), counter, reuseCounter = state.footnoteCounts.get(id);
  reuseCounter === void 0 ? (reuseCounter = 0, state.footnoteOrder.push(id), counter = state.footnoteOrder.length) : counter = index2 + 1, reuseCounter += 1, state.footnoteCounts.set(id, reuseCounter);
  let link2 = {
    type: "element",
    tagName: "a",
    properties: {
      href: "#" + clobberPrefix + "fn-" + safeId,
      id: clobberPrefix + "fnref-" + safeId + (reuseCounter > 1 ? "-" + reuseCounter : ""),
      dataFootnoteRef: !0,
      ariaDescribedBy: ["footnote-label"]
    },
    children: [{ type: "text", value: String(counter) }]
  };
  state.patch(node2, link2);
  let sup = {
    type: "element",
    tagName: "sup",
    properties: {},
    children: [link2]
  };
  return state.patch(node2, sup), state.applyData(node2, sup);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/heading.js
function heading(state, node2) {
  let result = {
    type: "element",
    tagName: "h" + node2.depth,
    properties: {},
    children: state.all(node2)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/html.js
function html3(state, node2) {
  if (state.options.allowDangerousHtml) {
    let result = { type: "raw", value: node2.value };
    return state.patch(node2, result), state.applyData(node2, result);
  }
}

// ../../../node_modules/mdast-util-to-hast/lib/revert.js
function revert(state, node2) {
  let subtype = node2.referenceType, suffix = "]";
  if (subtype === "collapsed" ? suffix += "[]" : subtype === "full" && (suffix += "[" + (node2.label || node2.identifier) + "]"), node2.type === "imageReference")
    return [{ type: "text", value: "![" + node2.alt + suffix }];
  let contents = state.all(node2), head = contents[0];
  head && head.type === "text" ? head.value = "[" + head.value : contents.unshift({ type: "text", value: "[" });
  let tail = contents[contents.length - 1];
  return tail && tail.type === "text" ? tail.value += suffix : contents.push({ type: "text", value: suffix }), contents;
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js
function imageReference(state, node2) {
  let id = String(node2.identifier).toUpperCase(), definition2 = state.definitionById.get(id);
  if (!definition2)
    return revert(state, node2);
  let properties = { src: normalizeUri(definition2.url || ""), alt: node2.alt };
  definition2.title !== null && definition2.title !== void 0 && (properties.title = definition2.title);
  let result = { type: "element", tagName: "img", properties, children: [] };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/image.js
function image(state, node2) {
  let properties = { src: normalizeUri(node2.url) };
  node2.alt !== null && node2.alt !== void 0 && (properties.alt = node2.alt), node2.title !== null && node2.title !== void 0 && (properties.title = node2.title);
  let result = { type: "element", tagName: "img", properties, children: [] };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js
function inlineCode(state, node2) {
  let text5 = { type: "text", value: node2.value.replace(/\r?\n|\r/g, " ") };
  state.patch(node2, text5);
  let result = {
    type: "element",
    tagName: "code",
    properties: {},
    children: [text5]
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js
function linkReference(state, node2) {
  let id = String(node2.identifier).toUpperCase(), definition2 = state.definitionById.get(id);
  if (!definition2)
    return revert(state, node2);
  let properties = { href: normalizeUri(definition2.url || "") };
  definition2.title !== null && definition2.title !== void 0 && (properties.title = definition2.title);
  let result = {
    type: "element",
    tagName: "a",
    properties,
    children: state.all(node2)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/link.js
function link(state, node2) {
  let properties = { href: normalizeUri(node2.url) };
  node2.title !== null && node2.title !== void 0 && (properties.title = node2.title);
  let result = {
    type: "element",
    tagName: "a",
    properties,
    children: state.all(node2)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/list-item.js
function listItem(state, node2, parent) {
  let results = state.all(node2), loose = parent ? listLoose(parent) : listItemLoose(node2), properties = {}, children = [];
  if (typeof node2.checked == "boolean") {
    let head = results[0], paragraph2;
    head && head.type === "element" && head.tagName === "p" ? paragraph2 = head : (paragraph2 = { type: "element", tagName: "p", properties: {}, children: [] }, results.unshift(paragraph2)), paragraph2.children.length > 0 && paragraph2.children.unshift({ type: "text", value: " " }), paragraph2.children.unshift({
      type: "element",
      tagName: "input",
      properties: { type: "checkbox", checked: node2.checked, disabled: !0 },
      children: []
    }), properties.className = ["task-list-item"];
  }
  let index2 = -1;
  for (; ++index2 < results.length; ) {
    let child = results[index2];
    (loose || index2 !== 0 || child.type !== "element" || child.tagName !== "p") && children.push({ type: "text", value: `
` }), child.type === "element" && child.tagName === "p" && !loose ? children.push(...child.children) : children.push(child);
  }
  let tail = results[results.length - 1];
  tail && (loose || tail.type !== "element" || tail.tagName !== "p") && children.push({ type: "text", value: `
` });
  let result = { type: "element", tagName: "li", properties, children };
  return state.patch(node2, result), state.applyData(node2, result);
}
function listLoose(node2) {
  let loose = !1;
  if (node2.type === "list") {
    loose = node2.spread || !1;
    let children = node2.children, index2 = -1;
    for (; !loose && ++index2 < children.length; )
      loose = listItemLoose(children[index2]);
  }
  return loose;
}
function listItemLoose(node2) {
  let spread = node2.spread;
  return spread ?? node2.children.length > 1;
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/list.js
function list2(state, node2) {
  let properties = {}, results = state.all(node2), index2 = -1;
  for (typeof node2.start == "number" && node2.start !== 1 && (properties.start = node2.start); ++index2 < results.length; ) {
    let child = results[index2];
    if (child.type === "element" && child.tagName === "li" && child.properties && Array.isArray(child.properties.className) && child.properties.className.includes("task-list-item")) {
      properties.className = ["contains-task-list"];
      break;
    }
  }
  let result = {
    type: "element",
    tagName: node2.ordered ? "ol" : "ul",
    properties,
    children: state.wrap(results, !0)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js
function paragraph(state, node2) {
  let result = {
    type: "element",
    tagName: "p",
    properties: {},
    children: state.all(node2)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/root.js
function root2(state, node2) {
  let result = { type: "root", children: state.wrap(state.all(node2)) };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/strong.js
function strong(state, node2) {
  let result = {
    type: "element",
    tagName: "strong",
    properties: {},
    children: state.all(node2)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/table.js
function table(state, node2) {
  let rows = state.all(node2), firstRow = rows.shift(), tableContent = [];
  if (firstRow) {
    let head = {
      type: "element",
      tagName: "thead",
      properties: {},
      children: state.wrap([firstRow], !0)
    };
    state.patch(node2.children[0], head), tableContent.push(head);
  }
  if (rows.length > 0) {
    let body = {
      type: "element",
      tagName: "tbody",
      properties: {},
      children: state.wrap(rows, !0)
    }, start2 = pointStart(node2.children[1]), end = pointEnd(node2.children[node2.children.length - 1]);
    start2 && end && (body.position = { start: start2, end }), tableContent.push(body);
  }
  let result = {
    type: "element",
    tagName: "table",
    properties: {},
    children: state.wrap(tableContent, !0)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/table-row.js
function tableRow(state, node2, parent) {
  let siblings = parent ? parent.children : void 0, tagName = (siblings ? siblings.indexOf(node2) : 1) === 0 ? "th" : "td", align = parent && parent.type === "table" ? parent.align : void 0, length = align ? align.length : node2.children.length, cellIndex = -1, cells = [];
  for (; ++cellIndex < length; ) {
    let cell = node2.children[cellIndex], properties = {}, alignValue = align ? align[cellIndex] : void 0;
    alignValue && (properties.align = alignValue);
    let result2 = { type: "element", tagName, properties, children: [] };
    cell && (result2.children = state.all(cell), state.patch(cell, result2), result2 = state.applyData(cell, result2)), cells.push(result2);
  }
  let result = {
    type: "element",
    tagName: "tr",
    properties: {},
    children: state.wrap(cells, !0)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js
function tableCell(state, node2) {
  let result = {
    type: "element",
    tagName: "td",
    // Assume body cell.
    properties: {},
    children: state.all(node2)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/trim-lines/index.js
function trimLines(value) {
  let source = String(value), search2 = /\r?\n|\r/g, match = search2.exec(source), last = 0, lines = [];
  for (; match; )
    lines.push(
      trimLine(source.slice(last, match.index), last > 0, !0),
      match[0]
    ), last = match.index + match[0].length, match = search2.exec(source);
  return lines.push(trimLine(source.slice(last), last > 0, !1)), lines.join("");
}
function trimLine(value, start2, end) {
  let startIndex = 0, endIndex = value.length;
  if (start2) {
    let code2 = value.codePointAt(startIndex);
    for (; code2 === 9 || code2 === 32; )
      startIndex++, code2 = value.codePointAt(startIndex);
  }
  if (end) {
    let code2 = value.codePointAt(endIndex - 1);
    for (; code2 === 9 || code2 === 32; )
      endIndex--, code2 = value.codePointAt(endIndex - 1);
  }
  return endIndex > startIndex ? value.slice(startIndex, endIndex) : "";
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/text.js
function text4(state, node2) {
  let result = { type: "text", value: trimLines(String(node2.value)) };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js
function thematicBreak2(state, node2) {
  let result = {
    type: "element",
    tagName: "hr",
    properties: {},
    children: []
  };
  return state.patch(node2, result), state.applyData(node2, result);
}

// ../../../node_modules/mdast-util-to-hast/lib/handlers/index.js
var handlers2 = {
  blockquote,
  break: hardBreak,
  code,
  delete: strikethrough,
  emphasis,
  footnoteReference,
  heading,
  html: html3,
  imageReference,
  image,
  inlineCode,
  linkReference,
  link,
  listItem,
  list: list2,
  paragraph,
  // @ts-expect-error: root is different, but hard to type.
  root: root2,
  strong,
  table,
  tableCell,
  tableRow,
  text: text4,
  thematicBreak: thematicBreak2,
  toml: ignore2,
  yaml: ignore2,
  definition: ignore2,
  footnoteDefinition: ignore2
};
function ignore2() {
}

// ../../../node_modules/mdast-util-to-hast/lib/footer.js
function defaultFootnoteBackContent(_, rereferenceIndex) {
  let result = [{ type: "text", value: "\u21A9" }];
  return rereferenceIndex > 1 && result.push({
    type: "element",
    tagName: "sup",
    properties: {},
    children: [{ type: "text", value: String(rereferenceIndex) }]
  }), result;
}
function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {
  return "Back to reference " + (referenceIndex + 1) + (rereferenceIndex > 1 ? "-" + rereferenceIndex : "");
}
function footer(state) {
  let clobberPrefix = typeof state.options.clobberPrefix == "string" ? state.options.clobberPrefix : "user-content-", footnoteBackContent = state.options.footnoteBackContent || defaultFootnoteBackContent, footnoteBackLabel = state.options.footnoteBackLabel || defaultFootnoteBackLabel, footnoteLabel = state.options.footnoteLabel || "Footnotes", footnoteLabelTagName = state.options.footnoteLabelTagName || "h2", footnoteLabelProperties = state.options.footnoteLabelProperties || {
    className: ["sr-only"]
  }, listItems = [], referenceIndex = -1;
  for (; ++referenceIndex < state.footnoteOrder.length; ) {
    let definition2 = state.footnoteById.get(
      state.footnoteOrder[referenceIndex]
    );
    if (!definition2)
      continue;
    let content3 = state.all(definition2), id = String(definition2.identifier).toUpperCase(), safeId = normalizeUri(id.toLowerCase()), rereferenceIndex = 0, backReferences = [], counts = state.footnoteCounts.get(id);
    for (; counts !== void 0 && ++rereferenceIndex <= counts; ) {
      backReferences.length > 0 && backReferences.push({ type: "text", value: " " });
      let children = typeof footnoteBackContent == "string" ? footnoteBackContent : footnoteBackContent(referenceIndex, rereferenceIndex);
      typeof children == "string" && (children = { type: "text", value: children }), backReferences.push({
        type: "element",
        tagName: "a",
        properties: {
          href: "#" + clobberPrefix + "fnref-" + safeId + (rereferenceIndex > 1 ? "-" + rereferenceIndex : ""),
          dataFootnoteBackref: "",
          ariaLabel: typeof footnoteBackLabel == "string" ? footnoteBackLabel : footnoteBackLabel(referenceIndex, rereferenceIndex),
          className: ["data-footnote-backref"]
        },
        children: Array.isArray(children) ? children : [children]
      });
    }
    let tail = content3[content3.length - 1];
    if (tail && tail.type === "element" && tail.tagName === "p") {
      let tailTail = tail.children[tail.children.length - 1];
      tailTail && tailTail.type === "text" ? tailTail.value += " " : tail.children.push({ type: "text", value: " " }), tail.children.push(...backReferences);
    } else
      content3.push(...backReferences);
    let listItem2 = {
      type: "element",
      tagName: "li",
      properties: { id: clobberPrefix + "fn-" + safeId },
      children: state.wrap(content3, !0)
    };
    state.patch(definition2, listItem2), listItems.push(listItem2);
  }
  if (listItems.length !== 0)
    return {
      type: "element",
      tagName: "section",
      properties: { dataFootnotes: !0, className: ["footnotes"] },
      children: [
        {
          type: "element",
          tagName: footnoteLabelTagName,
          properties: {
            ...esm_default(footnoteLabelProperties),
            id: "footnote-label"
          },
          children: [{ type: "text", value: footnoteLabel }]
        },
        { type: "text", value: `
` },
        {
          type: "element",
          tagName: "ol",
          properties: {},
          children: state.wrap(listItems, !0)
        },
        { type: "text", value: `
` }
      ]
    };
}

// ../../../node_modules/mdast-util-to-hast/lib/state.js
var own9 = {}.hasOwnProperty, emptyOptions5 = {};
function createState2(tree, options) {
  let settings = options || emptyOptions5, definitionById = /* @__PURE__ */ new Map(), footnoteById = /* @__PURE__ */ new Map(), footnoteCounts = /* @__PURE__ */ new Map(), handlers3 = { ...handlers2, ...settings.handlers }, state = {
    all: all3,
    applyData,
    definitionById,
    footnoteById,
    footnoteCounts,
    footnoteOrder: [],
    handlers: handlers3,
    one: one2,
    options: settings,
    patch: patch2,
    wrap
  };
  return visit(tree, function(node2) {
    if (node2.type === "definition" || node2.type === "footnoteDefinition") {
      let map = node2.type === "definition" ? definitionById : footnoteById, id = String(node2.identifier).toUpperCase();
      map.has(id) || map.set(id, node2);
    }
  }), state;
  function one2(node2, parent) {
    let type = node2.type, handle = state.handlers[type];
    if (own9.call(state.handlers, type) && handle)
      return handle(state, node2, parent);
    if (state.options.passThrough && state.options.passThrough.includes(type)) {
      if ("children" in node2) {
        let { children, ...shallow } = node2, result = esm_default(shallow);
        return result.children = state.all(node2), result;
      }
      return esm_default(node2);
    }
    return (state.options.unknownHandler || defaultUnknownHandler)(state, node2, parent);
  }
  function all3(parent) {
    let values = [];
    if ("children" in parent) {
      let nodes = parent.children, index2 = -1;
      for (; ++index2 < nodes.length; ) {
        let result = state.one(nodes[index2], parent);
        if (result) {
          if (index2 && nodes[index2 - 1].type === "break" && (!Array.isArray(result) && result.type === "text" && (result.value = trimMarkdownSpaceStart(result.value)), !Array.isArray(result) && result.type === "element")) {
            let head = result.children[0];
            head && head.type === "text" && (head.value = trimMarkdownSpaceStart(head.value));
          }
          Array.isArray(result) ? values.push(...result) : values.push(result);
        }
      }
    }
    return values;
  }
}
function patch2(from, to) {
  from.position && (to.position = position2(from));
}
function applyData(from, to) {
  let result = to;
  if (from && from.data) {
    let hName = from.data.hName, hChildren = from.data.hChildren, hProperties = from.data.hProperties;
    if (typeof hName == "string")
      if (result.type === "element")
        result.tagName = hName;
      else {
        let children = "children" in result ? result.children : [result];
        result = { type: "element", tagName: hName, properties: {}, children };
      }
    result.type === "element" && hProperties && Object.assign(result.properties, esm_default(hProperties)), "children" in result && result.children && hChildren !== null && hChildren !== void 0 && (result.children = hChildren);
  }
  return result;
}
function defaultUnknownHandler(state, node2) {
  let data2 = node2.data || {}, result = "value" in node2 && !(own9.call(data2, "hProperties") || own9.call(data2, "hChildren")) ? { type: "text", value: node2.value } : {
    type: "element",
    tagName: "div",
    properties: {},
    children: state.all(node2)
  };
  return state.patch(node2, result), state.applyData(node2, result);
}
function wrap(nodes, loose) {
  let result = [], index2 = -1;
  for (loose && result.push({ type: "text", value: `
` }); ++index2 < nodes.length; )
    index2 && result.push({ type: "text", value: `
` }), result.push(nodes[index2]);
  return loose && nodes.length > 0 && result.push({ type: "text", value: `
` }), result;
}
function trimMarkdownSpaceStart(value) {
  let index2 = 0, code2 = value.charCodeAt(index2);
  for (; code2 === 9 || code2 === 32; )
    index2++, code2 = value.charCodeAt(index2);
  return value.slice(index2);
}

// ../../../node_modules/mdast-util-to-hast/lib/index.js
function toHast(tree, options) {
  let state = createState2(tree, options), node2 = state.one(tree, void 0), foot = footer(state), result = Array.isArray(node2) ? { type: "root", children: node2 } : node2 || { type: "root", children: [] };
  return foot && ("children" in result, result.children.push({ type: "text", value: `
` }, foot)), result;
}

// ../../../node_modules/remark-rehype/lib/index.js
function remarkRehype(destination, options) {
  return destination && "run" in destination ? async function(tree, file) {
    let hastTree = (
      /** @type {HastRoot} */
      toHast(tree, { file, ...options })
    );
    await destination.run(hastTree, file);
  } : function(tree, file) {
    return (
      /** @type {HastRoot} */
      toHast(tree, { file, ...destination || options })
    );
  };
}

// ../../../node_modules/bail/index.js
function bail(error) {
  if (error)
    throw error;
}

// ../../../node_modules/unified/lib/index.js
var import_extend = __toESM(require_extend(), 1);

// ../../../node_modules/is-plain-obj/index.js
function isPlainObject(value) {
  if (typeof value != "object" || value === null)
    return !1;
  let prototype = Object.getPrototypeOf(value);
  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);
}

// ../../../node_modules/trough/lib/index.js
function trough() {
  let fns = [], pipeline = { run: run2, use };
  return pipeline;
  function run2(...values) {
    let middlewareIndex = -1, callback = values.pop();
    if (typeof callback != "function")
      throw new TypeError("Expected function as last argument, not " + callback);
    next(null, ...values);
    function next(error, ...output) {
      let fn = fns[++middlewareIndex], index2 = -1;
      if (error) {
        callback(error);
        return;
      }
      for (; ++index2 < values.length; )
        (output[index2] === null || output[index2] === void 0) && (output[index2] = values[index2]);
      values = output, fn ? wrap2(fn, next)(...output) : callback(null, ...output);
    }
  }
  function use(middelware) {
    if (typeof middelware != "function")
      throw new TypeError(
        "Expected `middelware` to be a function, not " + middelware
      );
    return fns.push(middelware), pipeline;
  }
}
function wrap2(middleware, callback) {
  let called;
  return wrapped;
  function wrapped(...parameters) {
    let fnExpectsCallback = middleware.length > parameters.length, result;
    fnExpectsCallback && parameters.push(done);
    try {
      result = middleware.apply(this, parameters);
    } catch (error) {
      let exception = (
        /** @type {Error} */
        error
      );
      if (fnExpectsCallback && called)
        throw exception;
      return done(exception);
    }
    fnExpectsCallback || (result && result.then && typeof result.then == "function" ? result.then(then, done) : result instanceof Error ? done(result) : then(result));
  }
  function done(error, ...output) {
    called || (called = !0, callback(error, ...output));
  }
  function then(value) {
    done(null, value);
  }
}

// ../../../node_modules/unified/lib/callable-instance.js
var CallableInstance = (
  /**
   * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}
   */
  /** @type {unknown} */
  /**
   * @this {Function}
   * @param {string | symbol} property
   * @returns {(...parameters: Array<unknown>) => unknown}
   */
  (function(property) {
    let proto = (
      /** @type {Record<string | symbol, Function>} */
      // Prototypes do exist.
      // type-coverage:ignore-next-line
      this.constructor.prototype
    ), value = proto[property], apply = function() {
      return value.apply(apply, arguments);
    };
    return Object.setPrototypeOf(apply, proto), apply;
  })
);

// ../../../node_modules/unified/lib/index.js
var own10 = {}.hasOwnProperty, Processor = class _Processor extends CallableInstance {
  /**
   * Create a processor.
   */
  constructor() {
    super("copy"), this.Compiler = void 0, this.Parser = void 0, this.attachers = [], this.compiler = void 0, this.freezeIndex = -1, this.frozen = void 0, this.namespace = {}, this.parser = void 0, this.transformers = trough();
  }
  /**
   * Copy a processor.
   *
   * @deprecated
   *   This is a private internal method and should not be used.
   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
   *   New *unfrozen* processor ({@linkcode Processor}) that is
   *   configured to work the same as its ancestor.
   *   When the descendant processor is configured in the future it does not
   *   affect the ancestral processor.
   */
  copy() {
    let destination = (
      /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */
      new _Processor()
    ), index2 = -1;
    for (; ++index2 < this.attachers.length; ) {
      let attacher = this.attachers[index2];
      destination.use(...attacher);
    }
    return destination.data((0, import_extend.default)(!0, {}, this.namespace)), destination;
  }
  /**
   * Configure the processor with info available to all plugins.
   * Information is stored in an object.
   *
   * Typically, options can be given to a specific plugin, but sometimes it
   * makes sense to have information shared with several plugins.
   * For example, a list of HTML elements that are self-closing, which is
   * needed during all phases.
   *
   * > **Note**: setting information cannot occur on *frozen* processors.
   * > Call the processor first to create a new unfrozen processor.
   *
   * > **Note**: to register custom data in TypeScript, augment the
   * > {@linkcode Data} interface.
   *
   * @example
   *   This example show how to get and set info:
   *
   *   ```js
   *   import {unified} from 'unified'
   *
   *   const processor = unified().data('alpha', 'bravo')
   *
   *   processor.data('alpha') // => 'bravo'
   *
   *   processor.data() // => {alpha: 'bravo'}
   *
   *   processor.data({charlie: 'delta'})
   *
   *   processor.data() // => {charlie: 'delta'}
   *   ```
   *
   * @template {keyof Data} Key
   *
   * @overload
   * @returns {Data}
   *
   * @overload
   * @param {Data} dataset
   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
   *
   * @overload
   * @param {Key} key
   * @returns {Data[Key]}
   *
   * @overload
   * @param {Key} key
   * @param {Data[Key]} value
   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
   *
   * @param {Data | Key} [key]
   *   Key to get or set, or entire dataset to set, or nothing to get the
   *   entire dataset (optional).
   * @param {Data[Key]} [value]
   *   Value to set (optional).
   * @returns {unknown}
   *   The current processor when setting, the value at `key` when getting, or
   *   the entire dataset when getting without key.
   */
  data(key2, value) {
    return typeof key2 == "string" ? arguments.length === 2 ? (assertUnfrozen("data", this.frozen), this.namespace[key2] = value, this) : own10.call(this.namespace, key2) && this.namespace[key2] || void 0 : key2 ? (assertUnfrozen("data", this.frozen), this.namespace = key2, this) : this.namespace;
  }
  /**
   * Freeze a processor.
   *
   * Frozen processors are meant to be extended and not to be configured
   * directly.
   *
   * When a processor is frozen it cannot be unfrozen.
   * New processors working the same way can be created by calling the
   * processor.
   *
   * It’s possible to freeze processors explicitly by calling `.freeze()`.
   * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,
   * `.stringify()`, `.process()`, or `.processSync()` are called.
   *
   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
   *   The current processor.
   */
  freeze() {
    if (this.frozen)
      return this;
    let self2 = (
      /** @type {Processor} */
      /** @type {unknown} */
      this
    );
    for (; ++this.freezeIndex < this.attachers.length; ) {
      let [attacher, ...options] = this.attachers[this.freezeIndex];
      if (options[0] === !1)
        continue;
      options[0] === !0 && (options[0] = void 0);
      let transformer = attacher.call(self2, ...options);
      typeof transformer == "function" && this.transformers.use(transformer);
    }
    return this.frozen = !0, this.freezeIndex = Number.POSITIVE_INFINITY, this;
  }
  /**
   * Parse text to a syntax tree.
   *
   * > **Note**: `parse` freezes the processor if not already *frozen*.
   *
   * > **Note**: `parse` performs the parse phase, not the run phase or other
   * > phases.
   *
   * @param {Compatible | undefined} [file]
   *   file to parse (optional); typically `string` or `VFile`; any value
   *   accepted as `x` in `new VFile(x)`.
   * @returns {ParseTree extends undefined ? Node : ParseTree}
   *   Syntax tree representing `file`.
   */
  parse(file) {
    this.freeze();
    let realFile = vfile(file), parser = this.parser || this.Parser;
    return assertParser("parse", parser), parser(String(realFile), realFile);
  }
  /**
   * Process the given file as configured on the processor.
   *
   * > **Note**: `process` freezes the processor if not already *frozen*.
   *
   * > **Note**: `process` performs the parse, run, and stringify phases.
   *
   * @overload
   * @param {Compatible | undefined} file
   * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done
   * @returns {undefined}
   *
   * @overload
   * @param {Compatible | undefined} [file]
   * @returns {Promise<VFileWithOutput<CompileResult>>}
   *
   * @param {Compatible | undefined} [file]
   *   File (optional); typically `string` or `VFile`]; any value accepted as
   *   `x` in `new VFile(x)`.
   * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]
   *   Callback (optional).
   * @returns {Promise<VFile> | undefined}
   *   Nothing if `done` is given.
   *   Otherwise a promise, rejected with a fatal error or resolved with the
   *   processed file.
   *
   *   The parsed, transformed, and compiled value is available at
   *   `file.value` (see note).
   *
   *   > **Note**: unified typically compiles by serializing: most
   *   > compilers return `string` (or `Uint8Array`).
   *   > Some compilers, such as the one configured with
   *   > [`rehype-react`][rehype-react], return other values (in this case, a
   *   > React tree).
   *   > If you’re using a compiler that doesn’t serialize, expect different
   *   > result values.
   *   >
   *   > To register custom results in TypeScript, add them to
   *   > {@linkcode CompileResultMap}.
   *
   *   [rehype-react]: https://github.com/rehypejs/rehype-react
   */
  process(file, done) {
    let self2 = this;
    return this.freeze(), assertParser("process", this.parser || this.Parser), assertCompiler("process", this.compiler || this.Compiler), done ? executor(void 0, done) : new Promise(executor);
    function executor(resolve, reject) {
      let realFile = vfile(file), parseTree = (
        /** @type {HeadTree extends undefined ? Node : HeadTree} */
        /** @type {unknown} */
        self2.parse(realFile)
      );
      self2.run(parseTree, realFile, function(error, tree, file2) {
        if (error || !tree || !file2)
          return realDone(error);
        let compileTree = (
          /** @type {CompileTree extends undefined ? Node : CompileTree} */
          /** @type {unknown} */
          tree
        ), compileResult = self2.stringify(compileTree, file2);
        looksLikeAValue(compileResult) ? file2.value = compileResult : file2.result = compileResult, realDone(
          error,
          /** @type {VFileWithOutput<CompileResult>} */
          file2
        );
      });
      function realDone(error, file2) {
        error || !file2 ? reject(error) : resolve ? resolve(file2) : done(void 0, file2);
      }
    }
  }
  /**
   * Process the given file as configured on the processor.
   *
   * An error is thrown if asynchronous transforms are configured.
   *
   * > **Note**: `processSync` freezes the processor if not already *frozen*.
   *
   * > **Note**: `processSync` performs the parse, run, and stringify phases.
   *
   * @param {Compatible | undefined} [file]
   *   File (optional); typically `string` or `VFile`; any value accepted as
   *   `x` in `new VFile(x)`.
   * @returns {VFileWithOutput<CompileResult>}
   *   The processed file.
   *
   *   The parsed, transformed, and compiled value is available at
   *   `file.value` (see note).
   *
   *   > **Note**: unified typically compiles by serializing: most
   *   > compilers return `string` (or `Uint8Array`).
   *   > Some compilers, such as the one configured with
   *   > [`rehype-react`][rehype-react], return other values (in this case, a
   *   > React tree).
   *   > If you’re using a compiler that doesn’t serialize, expect different
   *   > result values.
   *   >
   *   > To register custom results in TypeScript, add them to
   *   > {@linkcode CompileResultMap}.
   *
   *   [rehype-react]: https://github.com/rehypejs/rehype-react
   */
  processSync(file) {
    let complete = !1, result;
    return this.freeze(), assertParser("processSync", this.parser || this.Parser), assertCompiler("processSync", this.compiler || this.Compiler), this.process(file, realDone), assertDone("processSync", "process", complete), result;
    function realDone(error, file2) {
      complete = !0, bail(error), result = file2;
    }
  }
  /**
   * Run *transformers* on a syntax tree.
   *
   * > **Note**: `run` freezes the processor if not already *frozen*.
   *
   * > **Note**: `run` performs the run phase, not other phases.
   *
   * @overload
   * @param {HeadTree extends undefined ? Node : HeadTree} tree
   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done
   * @returns {undefined}
   *
   * @overload
   * @param {HeadTree extends undefined ? Node : HeadTree} tree
   * @param {Compatible | undefined} file
   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done
   * @returns {undefined}
   *
   * @overload
   * @param {HeadTree extends undefined ? Node : HeadTree} tree
   * @param {Compatible | undefined} [file]
   * @returns {Promise<TailTree extends undefined ? Node : TailTree>}
   *
   * @param {HeadTree extends undefined ? Node : HeadTree} tree
   *   Tree to transform and inspect.
   * @param {(
   *   RunCallback<TailTree extends undefined ? Node : TailTree> |
   *   Compatible
   * )} [file]
   *   File associated with `node` (optional); any value accepted as `x` in
   *   `new VFile(x)`.
   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]
   *   Callback (optional).
   * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}
   *   Nothing if `done` is given.
   *   Otherwise, a promise rejected with a fatal error or resolved with the
   *   transformed tree.
   */
  run(tree, file, done) {
    assertNode(tree), this.freeze();
    let transformers = this.transformers;
    return !done && typeof file == "function" && (done = file, file = void 0), done ? executor(void 0, done) : new Promise(executor);
    function executor(resolve, reject) {
      let realFile = vfile(file);
      transformers.run(tree, realFile, realDone);
      function realDone(error, outputTree, file2) {
        let resultingTree = (
          /** @type {TailTree extends undefined ? Node : TailTree} */
          outputTree || tree
        );
        error ? reject(error) : resolve ? resolve(resultingTree) : done(void 0, resultingTree, file2);
      }
    }
  }
  /**
   * Run *transformers* on a syntax tree.
   *
   * An error is thrown if asynchronous transforms are configured.
   *
   * > **Note**: `runSync` freezes the processor if not already *frozen*.
   *
   * > **Note**: `runSync` performs the run phase, not other phases.
   *
   * @param {HeadTree extends undefined ? Node : HeadTree} tree
   *   Tree to transform and inspect.
   * @param {Compatible | undefined} [file]
   *   File associated with `node` (optional); any value accepted as `x` in
   *   `new VFile(x)`.
   * @returns {TailTree extends undefined ? Node : TailTree}
   *   Transformed tree.
   */
  runSync(tree, file) {
    let complete = !1, result;
    return this.run(tree, file, realDone), assertDone("runSync", "run", complete), result;
    function realDone(error, tree2) {
      bail(error), result = tree2, complete = !0;
    }
  }
  /**
   * Compile a syntax tree.
   *
   * > **Note**: `stringify` freezes the processor if not already *frozen*.
   *
   * > **Note**: `stringify` performs the stringify phase, not the run phase
   * > or other phases.
   *
   * @param {CompileTree extends undefined ? Node : CompileTree} tree
   *   Tree to compile.
   * @param {Compatible | undefined} [file]
   *   File associated with `node` (optional); any value accepted as `x` in
   *   `new VFile(x)`.
   * @returns {CompileResult extends undefined ? Value : CompileResult}
   *   Textual representation of the tree (see note).
   *
   *   > **Note**: unified typically compiles by serializing: most compilers
   *   > return `string` (or `Uint8Array`).
   *   > Some compilers, such as the one configured with
   *   > [`rehype-react`][rehype-react], return other values (in this case, a
   *   > React tree).
   *   > If you’re using a compiler that doesn’t serialize, expect different
   *   > result values.
   *   >
   *   > To register custom results in TypeScript, add them to
   *   > {@linkcode CompileResultMap}.
   *
   *   [rehype-react]: https://github.com/rehypejs/rehype-react
   */
  stringify(tree, file) {
    this.freeze();
    let realFile = vfile(file), compiler2 = this.compiler || this.Compiler;
    return assertCompiler("stringify", compiler2), assertNode(tree), compiler2(tree, realFile);
  }
  /**
   * Configure the processor to use a plugin, a list of usable values, or a
   * preset.
   *
   * If the processor is already using a plugin, the previous plugin
   * configuration is changed based on the options that are passed in.
   * In other words, the plugin is not added a second time.
   *
   * > **Note**: `use` cannot be called on *frozen* processors.
   * > Call the processor first to create a new unfrozen processor.
   *
   * @example
   *   There are many ways to pass plugins to `.use()`.
   *   This example gives an overview:
   *
   *   ```js
   *   import {unified} from 'unified'
   *
   *   unified()
   *     // Plugin with options:
   *     .use(pluginA, {x: true, y: true})
   *     // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):
   *     .use(pluginA, {y: false, z: true})
   *     // Plugins:
   *     .use([pluginB, pluginC])
   *     // Two plugins, the second with options:
   *     .use([pluginD, [pluginE, {}]])
   *     // Preset with plugins and settings:
   *     .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})
   *     // Settings only:
   *     .use({settings: {position: false}})
   *   ```
   *
   * @template {Array<unknown>} [Parameters=[]]
   * @template {Node | string | undefined} [Input=undefined]
   * @template [Output=Input]
   *
   * @overload
   * @param {Preset | null | undefined} [preset]
   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
   *
   * @overload
   * @param {PluggableList} list
   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
   *
   * @overload
   * @param {Plugin<Parameters, Input, Output>} plugin
   * @param {...(Parameters | [boolean])} parameters
   * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}
   *
   * @param {PluggableList | Plugin | Preset | null | undefined} value
   *   Usable value.
   * @param {...unknown} parameters
   *   Parameters, when a plugin is given as a usable value.
   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}
   *   Current processor.
   */
  use(value, ...parameters) {
    let attachers = this.attachers, namespace = this.namespace;
    if (assertUnfrozen("use", this.frozen), value != null)
      if (typeof value == "function")
        addPlugin(value, parameters);
      else if (typeof value == "object")
        Array.isArray(value) ? addList(value) : addPreset(value);
      else
        throw new TypeError("Expected usable value, not `" + value + "`");
    return this;
    function add(value2) {
      if (typeof value2 == "function")
        addPlugin(value2, []);
      else if (typeof value2 == "object")
        if (Array.isArray(value2)) {
          let [plugin, ...parameters2] = (
            /** @type {PluginTuple<Array<unknown>>} */
            value2
          );
          addPlugin(plugin, parameters2);
        } else
          addPreset(value2);
      else
        throw new TypeError("Expected usable value, not `" + value2 + "`");
    }
    function addPreset(result) {
      if (!("plugins" in result) && !("settings" in result))
        throw new Error(
          "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"
        );
      addList(result.plugins), result.settings && (namespace.settings = (0, import_extend.default)(!0, namespace.settings, result.settings));
    }
    function addList(plugins) {
      let index2 = -1;
      if (plugins != null)
        if (Array.isArray(plugins))
          for (; ++index2 < plugins.length; ) {
            let thing = plugins[index2];
            add(thing);
          }
        else
          throw new TypeError("Expected a list of plugins, not `" + plugins + "`");
    }
    function addPlugin(plugin, parameters2) {
      let index2 = -1, entryIndex = -1;
      for (; ++index2 < attachers.length; )
        if (attachers[index2][0] === plugin) {
          entryIndex = index2;
          break;
        }
      if (entryIndex === -1)
        attachers.push([plugin, ...parameters2]);
      else if (parameters2.length > 0) {
        let [primary, ...rest] = parameters2, currentPrimary = attachers[entryIndex][1];
        isPlainObject(currentPrimary) && isPlainObject(primary) && (primary = (0, import_extend.default)(!0, currentPrimary, primary)), attachers[entryIndex] = [plugin, primary, ...rest];
      }
    }
  }
}, unified = new Processor().freeze();
function assertParser(name2, value) {
  if (typeof value != "function")
    throw new TypeError("Cannot `" + name2 + "` without `parser`");
}
function assertCompiler(name2, value) {
  if (typeof value != "function")
    throw new TypeError("Cannot `" + name2 + "` without `compiler`");
}
function assertUnfrozen(name2, frozen) {
  if (frozen)
    throw new Error(
      "Cannot call `" + name2 + "` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`."
    );
}
function assertNode(node2) {
  if (!isPlainObject(node2) || typeof node2.type != "string")
    throw new TypeError("Expected node, got `" + node2 + "`");
}
function assertDone(name2, asyncName, complete) {
  if (!complete)
    throw new Error(
      "`" + name2 + "` finished async. Use `" + asyncName + "` instead"
    );
}
function vfile(value) {
  return looksLikeAVFile2(value) ? value : new VFile(value);
}
function looksLikeAVFile2(value) {
  return !!(value && typeof value == "object" && "message" in value && "messages" in value);
}
function looksLikeAValue(value) {
  return typeof value == "string" || isUint8Array2(value);
}
function isUint8Array2(value) {
  return !!(value && typeof value == "object" && "byteLength" in value && "byteOffset" in value);
}

// ../../../node_modules/@mdx-js/mdx/lib/util/estree-util-create.js
function create3(from, to) {
  let fields = ["start", "end", "loc", "range"], index2 = -1;
  for (; ++index2 < fields.length; ) {
    let field = fields[index2];
    field in from && (to[field] = from[field]);
  }
}

// ../../../node_modules/@mdx-js/mdx/lib/util/estree-util-specifiers-to-declarations.js
function specifiersToDeclarations(specifiers, init) {
  let index2 = -1, declarations = [], otherSpecifiers = [], importNamespaceSpecifier;
  for (; ++index2 < specifiers.length; ) {
    let specifier = specifiers[index2];
    specifier.type === "ImportNamespaceSpecifier" ? importNamespaceSpecifier = specifier : otherSpecifiers.push(specifier);
  }
  if (importNamespaceSpecifier) {
    let declarator = {
      type: "VariableDeclarator",
      id: importNamespaceSpecifier.local,
      init
    };
    create3(importNamespaceSpecifier, declarator), declarations.push(declarator);
  }
  return declarations.push({
    type: "VariableDeclarator",
    id: {
      type: "ObjectPattern",
      properties: otherSpecifiers.map(function(specifier) {
        let key2 = specifier.type === "ImportSpecifier" ? specifier.imported : specifier.type === "ExportSpecifier" ? specifier.exported : { type: "Identifier", name: "default" }, value = specifier.local;
        specifier.type === "ExportSpecifier" && (value = key2, key2 = specifier.local), value.type;
        let property = {
          type: "Property",
          kind: "init",
          shorthand: key2.type === "Identifier" && value.type === "Identifier" && key2.name === value.name,
          method: !1,
          computed: !1,
          key: key2,
          value
        };
        return create3(specifier, property), property;
      })
    },
    init: importNamespaceSpecifier ? { type: "Identifier", name: importNamespaceSpecifier.local.name } : init
  }), declarations;
}

// ../../../node_modules/@mdx-js/mdx/lib/util/estree-util-to-id-or-member-expression.js
function toIdOrMemberExpression(ids) {
  let index2 = -1, object;
  for (; ++index2 < ids.length; ) {
    let name2 = ids[index2], id = typeof name2 == "string" && name(name2) ? { type: "Identifier", name: name2 } : { type: "Literal", value: name2 };
    object = object ? {
      type: "MemberExpression",
      object,
      property: id,
      computed: id.type === "Literal",
      optional: !1
    } : id;
  }
  return object.type, object;
}
function toJsxIdOrMemberExpression(ids) {
  let index2 = -1, object;
  for (; ++index2 < ids.length; ) {
    let name2 = ids[index2];
    typeof name2 == "string" && name(name2, { jsx: !0 }), "" + name2;
    let id = { type: "JSXIdentifier", name: name2 };
    object = object ? { type: "JSXMemberExpression", object, property: id } : id;
  }
  return object;
}

// ../../../node_modules/@mdx-js/mdx/lib/plugin/recma-build-jsx-transform.js
function recmaBuildJsxTransform(options) {
  let { outputFormat } = options || {};
  return function(tree) {
    if (tree.comments && (tree.comments = tree.comments.filter(function(d) {
      return !d.data?._mdxIsPragmaComment;
    })), outputFormat === "function-body") {
      let index2 = 0;
      for (; index2 < tree.body.length; ) {
        let child = tree.body[index2];
        if ("directive" in child && child.directive)
          index2++;
        else
          break;
      }
      let declaration = tree.body[index2];
      declaration && declaration.type === "ImportDeclaration" && typeof declaration.source.value == "string" && /\/jsx-(dev-)?runtime$/.test(declaration.source.value) && (tree.body[index2] = {
        type: "VariableDeclaration",
        kind: "const",
        declarations: specifiersToDeclarations(
          declaration.specifiers,
          toIdOrMemberExpression(["arguments", 0])
        )
      });
    }
  };
}

// ../../../node_modules/estree-util-scope/lib/index.js
function createVisitors() {
  let scopes = [{ block: !1, defined: [] }];
  return { enter, exit: exit2, scopes };
  function enter(node2) {
    if (node2.type === "ArrowFunctionExpression") {
      scopes.push({ block: !1, defined: [] });
      for (let parameter of node2.params)
        definePattern(parameter, !1);
    } else if (node2.type === "BlockStatement" || node2.type === "DoWhileStatement" || node2.type === "ForInStatement" || node2.type === "ForOfStatement" || node2.type === "ForStatement" || node2.type === "WhileStatement")
      scopes.push({ block: !0, defined: [] });
    else if (node2.type === "CatchClause")
      scopes.push({ block: !0, defined: [] }), node2.param && definePattern(node2.param, !0);
    else if (node2.type === "ClassDeclaration")
      defineIdentifier(node2.id.name, !1);
    else if (node2.type === "FunctionDeclaration") {
      defineIdentifier(node2.id.name, !1), scopes.push({ block: !1, defined: [] });
      for (let parameter of node2.params)
        definePattern(parameter, !1);
    } else if (node2.type === "FunctionExpression") {
      node2.id && defineIdentifier(node2.id.name, !1), scopes.push({ block: !1, defined: [] });
      for (let parameter of node2.params)
        definePattern(parameter, !1);
    } else if (node2.type === "ImportDeclaration")
      for (let specifier of node2.specifiers)
        defineIdentifier(specifier.local.name, !1);
    else if (node2.type === "VariableDeclaration")
      for (let declaration of node2.declarations)
        definePattern(declaration.id, node2.kind !== "var");
  }
  function exit2(node2) {
    if (node2.type === "ArrowFunctionExpression" || node2.type === "FunctionDeclaration" || node2.type === "FunctionExpression") {
      let scope = scopes.pop();
      scope.block;
    } else if (node2.type === "BlockStatement" || node2.type === "CatchClause" || node2.type === "DoWhileStatement" || node2.type === "ForInStatement" || node2.type === "ForOfStatement" || node2.type === "ForStatement" || node2.type === "WhileStatement") {
      let scope = scopes.pop();
      scope.block;
    }
  }
  function defineIdentifier(id, block) {
    let index2 = scopes.length, scope;
    for (; index2-- && (scope = scopes[index2], !(block || !scope.block)); )
      ;
    scope.defined.push(id);
  }
  function definePattern(pattern, block) {
    if (pattern.type === "ArrayPattern")
      for (let element2 of pattern.elements)
        element2 && definePattern(element2, block);
    else if (pattern.type === "AssignmentPattern")
      definePattern(pattern.left, block);
    else if (pattern.type === "Identifier")
      defineIdentifier(pattern.name, block);
    else if (pattern.type === "ObjectPattern")
      for (let property of pattern.properties)
        property.type === "Property" ? definePattern(property.value, block) : (property.type, definePattern(property, block));
    else
      pattern.type, definePattern(pattern.argument, block);
  }
}

// ../../../node_modules/@mdx-js/mdx/lib/util/estree-util-declaration-to-expression.js
function declarationToExpression(declaration) {
  return declaration.type === "FunctionDeclaration" ? { ...declaration, type: "FunctionExpression" } : (declaration.type, { ...declaration, type: "ClassExpression" });
}

// ../../../node_modules/@mdx-js/mdx/lib/util/estree-util-is-declaration.js
function isDeclaration(node2) {
  return node2.type === "FunctionDeclaration" || node2.type === "ClassDeclaration" || node2.type === "VariableDeclaration";
}

// ../../../node_modules/@mdx-js/mdx/lib/plugin/recma-document.js
function recmaDocument(options) {
  let baseUrl = options.baseUrl || void 0, baseHref = typeof baseUrl == "object" ? baseUrl.href : baseUrl, outputFormat = options.outputFormat || "program", pragma = options.pragma === void 0 ? "React.createElement" : options.pragma, pragmaFrag = options.pragmaFrag === void 0 ? "React.Fragment" : options.pragmaFrag, pragmaImportSource = options.pragmaImportSource || "react", jsxImportSource = options.jsxImportSource || "react", jsxRuntime = options.jsxRuntime || "automatic";
  return function(tree, file) {
    let exportedValues = [], replacement = [], exportAllCount = 0, layout, content3, child;
    if (jsxRuntime === "classic" && pragmaFrag && injectPragma(tree, "@jsxFrag", pragmaFrag), jsxRuntime === "classic" && pragma && injectPragma(tree, "@jsx", pragma), jsxRuntime === "automatic" && jsxImportSource && injectPragma(tree, "@jsxImportSource", jsxImportSource), jsxRuntime && injectPragma(tree, "@jsxRuntime", jsxRuntime), jsxRuntime === "classic" && pragmaImportSource) {
      if (!pragma)
        throw new Error(
          "Missing `pragma` in classic runtime with `pragmaImportSource`"
        );
      handleEsm({
        type: "ImportDeclaration",
        specifiers: [
          {
            type: "ImportDefaultSpecifier",
            local: { type: "Identifier", name: pragma.split(".")[0] }
          }
        ],
        attributes: [],
        source: { type: "Literal", value: pragmaImportSource }
      });
    }
    for (child of tree.body)
      if (child.type === "ExportDefaultDeclaration")
        layout && file.fail(
          "Unexpected duplicate layout, expected a single layout (previous: " + stringifyPosition(positionFromEstree(layout)) + ")",
          {
            ancestors: [tree, child],
            place: positionFromEstree(child),
            ruleId: "duplicate-layout",
            source: "recma-document"
          }
        ), layout = child, replacement.push({
          type: "VariableDeclaration",
          kind: "const",
          declarations: [
            {
              type: "VariableDeclarator",
              id: { type: "Identifier", name: "MDXLayout" },
              init: isDeclaration(child.declaration) ? declarationToExpression(child.declaration) : child.declaration
            }
          ]
        });
      else if (child.type === "ExportNamedDeclaration" && child.source) {
        let source = (
          /** @type {SimpleLiteral} */
          child.source
        );
        child.specifiers = child.specifiers.filter(function(specifier) {
          if (specifier.exported.type === "Identifier" && specifier.exported.name === "default") {
            layout && file.fail(
              "Unexpected duplicate layout, expected a single layout (previous: " + stringifyPosition(positionFromEstree(layout)) + ")",
              {
                ancestors: [tree, child, specifier],
                place: positionFromEstree(child),
                ruleId: "duplicate-layout",
                source: "recma-document"
              }
            ), layout = specifier;
            let specifiers = [];
            if (specifier.local.type === "Identifier" && specifier.local.name === "default")
              specifiers.push({
                type: "ImportDefaultSpecifier",
                local: { type: "Identifier", name: "MDXLayout" }
              });
            else {
              let importSpecifier = {
                type: "ImportSpecifier",
                imported: specifier.local,
                local: { type: "Identifier", name: "MDXLayout" }
              };
              create3(specifier.local, importSpecifier), specifiers.push(importSpecifier);
            }
            let from = { type: "Literal", value: source.value };
            create3(source, from);
            let declaration = {
              type: "ImportDeclaration",
              specifiers,
              attributes: [],
              source: from
            };
            return create3(specifier, declaration), handleEsm(declaration), !1;
          }
          return !0;
        }), child.specifiers.length > 0 && handleExport(child);
      } else child.type === "ExportNamedDeclaration" || child.type === "ExportAllDeclaration" ? handleExport(child) : child.type === "ImportDeclaration" ? handleEsm(child) : child.type === "ExpressionStatement" && (child.expression.type === "JSXElement" || child.expression.type === "JSXFragment") ? (content3 = !0, replacement.push(
        ...createMdxContent(child.expression, outputFormat, !!layout)
      )) : replacement.push(child);
    content3 || replacement.push(
      ...createMdxContent(void 0, outputFormat, !!layout)
    ), exportedValues.push(["MDXContent", "default"]), outputFormat === "function-body" && replacement.push({
      type: "ReturnStatement",
      argument: {
        type: "ObjectExpression",
        properties: [
          ...Array.from({ length: exportAllCount }).map(
            /**
             * @param {undefined} _
             *   Nothing.
             * @param {number} index
             *   Index.
             * @returns {SpreadElement}
             *   Node.
             */
            function(_, index2) {
              return {
                type: "SpreadElement",
                argument: {
                  type: "Identifier",
                  name: "_exportAll" + (index2 + 1)
                }
              };
            }
          ),
          ...exportedValues.map(function(d) {
            return {
              type: "Property",
              kind: "init",
              method: !1,
              computed: !1,
              shorthand: typeof d == "string",
              key: {
                type: "Identifier",
                name: typeof d == "string" ? d : d[1]
              },
              value: {
                type: "Identifier",
                name: typeof d == "string" ? d : d[0]
              }
            };
          })
        ]
      }
    }), tree.body = replacement;
    let usesImportMetaUrlVariable = !1, usesResolveDynamicHelper = !1;
    (baseHref || outputFormat === "function-body") && walk(tree, {
      enter(node2) {
        if ((node2.type === "ExportAllDeclaration" || node2.type === "ExportNamedDeclaration" || node2.type === "ImportDeclaration") && node2.source) {
          let value = node2.source.value;
          try {
            new URL(value);
          } catch {
            (value.startsWith("/") || value.startsWith("./") || value.startsWith("../")) && (value = new URL(value, baseHref).href);
          }
          let replacement2 = { type: "Literal", value };
          create3(node2.source, replacement2), node2.source = replacement2;
          return;
        }
        if (node2.type === "ImportExpression") {
          usesResolveDynamicHelper = !0;
          let replacement2 = {
            type: "CallExpression",
            callee: { type: "Identifier", name: "_resolveDynamicMdxSpecifier" },
            arguments: [node2.source],
            optional: !1
          };
          node2.source = replacement2;
          return;
        }
        if (node2.type === "MemberExpression" && "object" in node2 && node2.object.type === "MetaProperty" && node2.property.type === "Identifier" && node2.object.meta.name === "import" && node2.object.property.name === "meta" && node2.property.name === "url") {
          usesImportMetaUrlVariable = !0;
          let replacement2 = { type: "Identifier", name: "_importMetaUrl" };
          create3(node2, replacement2), this.replace(replacement2);
        }
      }
    }), usesResolveDynamicHelper && (baseHref || (usesImportMetaUrlVariable = !0), tree.body.push(
      resolveDynamicMdxSpecifier(
        baseHref ? { type: "Literal", value: baseHref } : { type: "Identifier", name: "_importMetaUrl" }
      )
    )), usesImportMetaUrlVariable && tree.body.unshift(...createImportMetaUrlVariable());
    function handleExport(node2) {
      if (node2.type === "ExportNamedDeclaration") {
        if (node2.declaration) {
          let visitors = createVisitors();
          walk(node2, {
            enter(node3) {
              visitors.enter(node3), (node3.type === "ArrowFunctionExpression" || node3.type === "FunctionDeclaration" || node3.type === "FunctionExpression") && (this.skip(), visitors.exit(node3));
            },
            leave: visitors.exit
          }), exportedValues.push(...visitors.scopes[0].defined);
        }
        for (child of node2.specifiers)
          child.exported.type === "Identifier" ? exportedValues.push(child.exported.name) : (child.exported.value, exportedValues.push(child.exported.value));
      }
      handleEsm(node2);
    }
    function handleEsm(node2) {
      let replace, init;
      if (outputFormat === "function-body")
        if (
          // Always have a source:
          node2.type === "ImportDeclaration" || node2.type === "ExportAllDeclaration" || // Source optional:
          node2.type === "ExportNamedDeclaration" && node2.source
        ) {
          node2.source;
          let argument = { type: "ImportExpression", source: node2.source };
          create3(node2, argument), init = { type: "AwaitExpression", argument }, (node2.type === "ImportDeclaration" || node2.type === "ExportNamedDeclaration") && node2.specifiers.length === 0 ? replace = { type: "ExpressionStatement", expression: init } : replace = {
            type: "VariableDeclaration",
            kind: "const",
            declarations: node2.type === "ExportAllDeclaration" ? [
              {
                type: "VariableDeclarator",
                id: {
                  type: "Identifier",
                  name: "_exportAll" + ++exportAllCount
                },
                init
              }
            ] : specifiersToDeclarations(node2.specifiers, init)
          };
        } else if (node2.declaration)
          replace = node2.declaration;
        else {
          let declarators = [];
          for (let specifier of node2.specifiers)
            specifier.exported.type === "Identifier" && specifier.local.type === "Identifier" && specifier.local.name !== specifier.exported.name && declarators.push({
              type: "VariableDeclarator",
              id: specifier.exported,
              init: specifier.local
            });
          declarators.length > 0 && (replace = {
            type: "VariableDeclaration",
            kind: "const",
            declarations: declarators
          });
        }
      else
        replace = node2;
      replace && replacement.push(replace);
    }
  };
  function createMdxContent(content3, outputFormat2, hasInternalLayout) {
    let result = {
      type: "JSXElement",
      openingElement: {
        type: "JSXOpeningElement",
        name: { type: "JSXIdentifier", name: "MDXLayout" },
        attributes: [
          {
            type: "JSXSpreadAttribute",
            argument: { type: "Identifier", name: "props" }
          }
        ],
        selfClosing: !1
      },
      closingElement: {
        type: "JSXClosingElement",
        name: { type: "JSXIdentifier", name: "MDXLayout" }
      },
      children: [
        {
          type: "JSXElement",
          openingElement: {
            type: "JSXOpeningElement",
            name: { type: "JSXIdentifier", name: "_createMdxContent" },
            attributes: [
              {
                type: "JSXSpreadAttribute",
                argument: { type: "Identifier", name: "props" }
              }
            ],
            selfClosing: !0
          },
          closingElement: null,
          children: []
        }
      ]
    };
    hasInternalLayout || (result = {
      type: "ConditionalExpression",
      test: { type: "Identifier", name: "MDXLayout" },
      consequent: result,
      alternate: {
        type: "CallExpression",
        callee: { type: "Identifier", name: "_createMdxContent" },
        arguments: [{ type: "Identifier", name: "props" }],
        optional: !1
      }
    });
    let argument = (
      // Cast because TS otherwise does not think `JSXFragment`s are expressions.
      /** @type {Readonly<Expression> | Readonly<JSXFragment>} */
      content3 || { type: "Identifier", name: "undefined" }
    );
    argument.type === "JSXFragment" && argument.children.length === 1 && argument.children[0].type === "JSXElement" && (argument = argument.children[0]);
    let awaitExpression = !1;
    walk(argument, {
      enter(node2) {
        if (node2.type === "ArrowFunctionExpression" || node2.type === "FunctionDeclaration" || node2.type === "FunctionExpression")
          return this.skip();
        (node2.type === "AwaitExpression" || /* c8 ignore next 2 -- can only occur in a function (which then can
         * only be async, so skipped it) */
        node2.type === "ForOfStatement" && node2.await) && (awaitExpression = !0);
      }
    });
    let declaration = {
      type: "FunctionDeclaration",
      id: { type: "Identifier", name: "MDXContent" },
      params: [
        {
          type: "AssignmentPattern",
          left: { type: "Identifier", name: "props" },
          right: { type: "ObjectExpression", properties: [] }
        }
      ],
      body: {
        type: "BlockStatement",
        body: [{ type: "ReturnStatement", argument: result }]
      }
    };
    return [
      {
        type: "FunctionDeclaration",
        async: awaitExpression,
        id: { type: "Identifier", name: "_createMdxContent" },
        params: [{ type: "Identifier", name: "props" }],
        body: {
          type: "BlockStatement",
          body: [
            {
              type: "ReturnStatement",
              // Cast because TS doesn’t think `JSXFragment` is an expression.
              // eslint-disable-next-line object-shorthand
              argument: (
                /** @type {Expression} */
                argument
              )
            }
          ]
        }
      },
      outputFormat2 === "program" ? { type: "ExportDefaultDeclaration", declaration } : declaration
    ];
  }
}
function injectPragma(tree, name2, value) {
  tree.comments?.unshift({
    type: "Block",
    value: name2 + " " + value,
    data: { _mdxIsPragmaComment: !0 }
  });
}
function resolveDynamicMdxSpecifier(importMetaUrl) {
  return {
    type: "FunctionDeclaration",
    id: { type: "Identifier", name: "_resolveDynamicMdxSpecifier" },
    generator: !1,
    async: !1,
    params: [{ type: "Identifier", name: "d" }],
    body: {
      type: "BlockStatement",
      body: [
        {
          type: "IfStatement",
          test: {
            type: "BinaryExpression",
            left: {
              type: "UnaryExpression",
              operator: "typeof",
              prefix: !0,
              argument: { type: "Identifier", name: "d" }
            },
            operator: "!==",
            right: { type: "Literal", value: "string" }
          },
          consequent: {
            type: "ReturnStatement",
            argument: { type: "Identifier", name: "d" }
          },
          alternate: null
        },
        // To do: use `URL.canParse` when widely supported (see commented
        // out code below).
        {
          type: "TryStatement",
          block: {
            type: "BlockStatement",
            body: [
              {
                type: "ExpressionStatement",
                expression: {
                  type: "NewExpression",
                  callee: { type: "Identifier", name: "URL" },
                  arguments: [{ type: "Identifier", name: "d" }]
                }
              },
              {
                type: "ReturnStatement",
                argument: { type: "Identifier", name: "d" }
              }
            ]
          },
          handler: {
            type: "CatchClause",
            param: null,
            body: { type: "BlockStatement", body: [] }
          },
          finalizer: null
        },
        // To do: use `URL.canParse` when widely supported.
        // {
        //   type: 'IfStatement',
        //   test: {
        //     type: 'CallExpression',
        //     callee: toIdOrMemberExpression(['URL', 'canParse']),
        //     arguments: [{type: 'Identifier', name: 'd'}],
        //     optional: false
        //   },
        //   consequent: {
        //     type: 'ReturnStatement',
        //     argument: {type: 'Identifier', name: 'd'}
        //   },
        //   alternate: null
        // },
        {
          type: "IfStatement",
          test: {
            type: "LogicalExpression",
            left: {
              type: "LogicalExpression",
              left: {
                type: "CallExpression",
                callee: toIdOrMemberExpression(["d", "startsWith"]),
                arguments: [{ type: "Literal", value: "/" }],
                optional: !1
              },
              operator: "||",
              right: {
                type: "CallExpression",
                callee: toIdOrMemberExpression(["d", "startsWith"]),
                arguments: [{ type: "Literal", value: "./" }],
                optional: !1
              }
            },
            operator: "||",
            right: {
              type: "CallExpression",
              callee: toIdOrMemberExpression(["d", "startsWith"]),
              arguments: [{ type: "Literal", value: "../" }],
              optional: !1
            }
          },
          consequent: {
            type: "ReturnStatement",
            argument: {
              type: "MemberExpression",
              object: {
                type: "NewExpression",
                callee: { type: "Identifier", name: "URL" },
                arguments: [{ type: "Identifier", name: "d" }, importMetaUrl]
              },
              property: { type: "Identifier", name: "href" },
              computed: !1,
              optional: !1
            }
          },
          alternate: null
        },
        {
          type: "ReturnStatement",
          argument: { type: "Identifier", name: "d" }
        }
      ]
    }
  };
}
function createImportMetaUrlVariable() {
  return [
    {
      type: "VariableDeclaration",
      declarations: [
        {
          type: "VariableDeclarator",
          id: { type: "Identifier", name: "_importMetaUrl" },
          init: toIdOrMemberExpression(["arguments", 0, "baseUrl"])
        }
      ],
      kind: "const"
    },
    {
      type: "IfStatement",
      test: {
        type: "UnaryExpression",
        operator: "!",
        prefix: !0,
        argument: { type: "Identifier", name: "_importMetaUrl" }
      },
      consequent: {
        type: "ThrowStatement",
        argument: {
          type: "NewExpression",
          callee: { type: "Identifier", name: "Error" },
          arguments: [
            {
              type: "Literal",
              value: "Unexpected missing `options.baseUrl` needed to support `export \u2026 from`, `import`, or `import.meta.url` when generating `function-body`"
            }
          ]
        }
      },
      alternate: null
    }
  ];
}

// ../../../node_modules/@mdx-js/mdx/lib/util/estree-util-to-binary-addition.js
function toBinaryAddition(expressions) {
  let index2 = -1, left;
  for (; ++index2 < expressions.length; ) {
    let right = expressions[index2];
    left = left ? { type: "BinaryExpression", left, operator: "+", right } : right;
  }
  return left;
}

// ../../../node_modules/@mdx-js/mdx/lib/plugin/recma-jsx-rewrite.js
function recmaJsxRewrite(options) {
  let { development, outputFormat, providerImportSource } = options;
  return function(tree, file) {
    let visitors = createVisitors(), functionStack = [], importProvider = !1, createErrorHelper = !1;
    if (walk(tree, {
      enter(node2) {
        visitors.enter(node2), (node2.type === "FunctionDeclaration" || node2.type === "FunctionExpression" || node2.type === "ArrowFunctionExpression") && (functionStack.push({
          components: [],
          idToInvalidComponentName: /* @__PURE__ */ new Map(),
          node: node2,
          objects: [],
          references: {},
          tags: []
        }), isNamedFunction(node2, "MDXContent") && !inScope(visitors.scopes, "MDXLayout") && functionStack[0].components.push("MDXLayout"));
        let functionInfo = functionStack[0];
        if (!(!functionInfo || !isNamedFunction(functionInfo.node, "_createMdxContent") && !providerImportSource) && node2.type === "JSXElement") {
          let name2 = node2.openingElement.name;
          if (name2.type === "JSXMemberExpression") {
            let ids = [];
            for (; name2.type === "JSXMemberExpression"; )
              ids.unshift(name2.property.name), name2 = name2.object;
            ids.unshift(name2.name);
            let fullId = ids.join("."), id = name2.name, isInScope = inScope(visitors.scopes, id);
            !Object.hasOwn(functionInfo.references, fullId) && (!isInScope || // If the parent scope is `_createMdxContent`, then this
            // references a component we can add a check statement for.
            functionStack.length === 1 && functionStack[0].node.type === "FunctionDeclaration" && isNamedFunction(functionStack[0].node, "_createMdxContent")) && (functionInfo.references[fullId] = { component: !0, node: node2 }), !functionInfo.objects.includes(id) && !isInScope && functionInfo.objects.push(id);
          } else if (name2.type !== "JSXNamespacedName") {
            if (name(name2.name) && !/^[a-z]/.test(name2.name)) {
              let id = name2.name;
              inScope(visitors.scopes, id) || (id !== "MDXLayout" && !Object.hasOwn(functionInfo.references, id) && (functionInfo.references[id] = { component: !0, node: node2 }), functionInfo.components.includes(id) || functionInfo.components.push(id));
            } else if (!(node2.data && node2.data._mdxExplicitJsx)) {
              let id = name2.name;
              functionInfo.tags.includes(id) || functionInfo.tags.push(id);
              let jsxIdExpression = ["_components", id];
              if (name(id) === !1) {
                let invalidComponentName = functionInfo.idToInvalidComponentName.get(id);
                invalidComponentName === void 0 && (invalidComponentName = `_component${functionInfo.idToInvalidComponentName.size}`, functionInfo.idToInvalidComponentName.set(
                  id,
                  invalidComponentName
                )), jsxIdExpression = [invalidComponentName];
              }
              node2.openingElement.name = toJsxIdOrMemberExpression(jsxIdExpression), node2.closingElement && (node2.closingElement.name = toJsxIdOrMemberExpression(jsxIdExpression));
            }
          }
        }
      },
      leave(node2) {
        visitors.exit(node2);
        let defaults = [], actual = [], parameters = [], declarations = [];
        if (node2.type === "FunctionDeclaration" || node2.type === "FunctionExpression" || node2.type === "ArrowFunctionExpression") {
          let functionInfo = functionStack[functionStack.length - 1], name2;
          for (name2 of functionInfo.tags.sort())
            defaults.push({
              type: "Property",
              kind: "init",
              key: name(name2) ? { type: "Identifier", name: name2 } : { type: "Literal", value: name2 },
              value: { type: "Literal", value: name2 },
              method: !1,
              shorthand: !1,
              computed: !1
            });
          actual.push(...functionInfo.components);
          for (name2 of functionInfo.objects)
            actual.includes(name2) || actual.push(name2);
          actual.sort();
          let statements = [];
          if (defaults.length > 0 || actual.length > 0 || functionInfo.idToInvalidComponentName.size > 0) {
            if (providerImportSource && (importProvider = !0, parameters.push({
              type: "CallExpression",
              callee: { type: "Identifier", name: "_provideComponents" },
              arguments: [],
              optional: !1
            })), (isNamedFunction(functionInfo.node, "MDXContent") || isNamedFunction(functionInfo.node, "_createMdxContent")) && parameters.push(toIdOrMemberExpression(["props", "components"])), defaults.length > 0 || parameters.length > 1)
              for (let parameter of parameters)
                defaults.push({ type: "SpreadElement", argument: parameter });
            let componentsInit = defaults.length > 0 ? { type: "ObjectExpression", properties: defaults } : (
              // If we’re only getting components from `props.components`,
              // make sure it’s defined.
              {
                type: "LogicalExpression",
                operator: "||",
                left: parameters[0],
                right: { type: "ObjectExpression", properties: [] }
              }
            ), componentsPattern;
            if (actual.length > 0 && (componentsPattern = {
              type: "ObjectPattern",
              properties: actual.map(function(name3) {
                return {
                  type: "Property",
                  kind: "init",
                  key: {
                    type: "Identifier",
                    name: name3 === "MDXLayout" ? "wrapper" : name3
                  },
                  value: { type: "Identifier", name: name3 },
                  method: !1,
                  shorthand: name3 !== "MDXLayout",
                  computed: !1
                };
              })
            }), functionInfo.tags.length > 0 && (declarations.push({
              type: "VariableDeclarator",
              id: { type: "Identifier", name: "_components" },
              init: componentsInit
            }), componentsInit = { type: "Identifier", name: "_components" }), isNamedFunction(functionInfo.node, "_createMdxContent"))
              for (let [id, componentName] of [
                ...functionInfo.idToInvalidComponentName
              ].sort(function([a], [b]) {
                return a.localeCompare(b);
              }))
                declarations.push({
                  type: "VariableDeclarator",
                  id: {
                    type: "Identifier",
                    name: componentName
                  },
                  init: {
                    type: "MemberExpression",
                    object: { type: "Identifier", name: "_components" },
                    property: { type: "Literal", value: id },
                    computed: !0,
                    optional: !1
                  }
                });
            componentsPattern && declarations.push({
              type: "VariableDeclarator",
              id: componentsPattern,
              init: componentsInit
            }), declarations.length > 0 && statements.push({
              type: "VariableDeclaration",
              kind: "const",
              declarations
            });
          }
          let key2;
          for (key2 in functionInfo.references)
            if (Object.hasOwn(functionInfo.references, key2)) {
              let parts = key2.split("."), index3 = 0;
              for (; ++index3 < parts.length; ) {
                let partial = parts.slice(0, index3).join(".");
                Object.hasOwn(functionInfo.references, partial) || (functionInfo.references[partial] = {
                  component: !1,
                  node: functionInfo.references[key2].node
                });
              }
            }
          let references = Object.keys(functionInfo.references).sort(), index2 = -1;
          for (; ++index2 < references.length; ) {
            let id = references[index2], info = functionInfo.references[id], place = stringifyPosition(positionFromEstree(info.node)), parameters2 = [
              { type: "Literal", value: id },
              { type: "Literal", value: info.component }
            ];
            createErrorHelper = !0, development && place && parameters2.push({ type: "Literal", value: place }), statements.push({
              type: "IfStatement",
              test: {
                type: "UnaryExpression",
                operator: "!",
                prefix: !0,
                argument: toIdOrMemberExpression(id.split("."))
              },
              consequent: {
                type: "ExpressionStatement",
                expression: {
                  type: "CallExpression",
                  callee: { type: "Identifier", name: "_missingMdxReference" },
                  arguments: parameters2,
                  optional: !1
                }
              },
              alternate: void 0
            });
          }
          statements.length > 0 && (node2.body.type !== "BlockStatement" && (node2.body = {
            type: "BlockStatement",
            body: [{ type: "ReturnStatement", argument: node2.body }]
          }), node2.body.body.unshift(...statements)), functionStack.pop();
        }
      }
    }), importProvider && providerImportSource && tree.body.unshift(
      createImportProvider(providerImportSource, outputFormat)
    ), createErrorHelper) {
      let message = [
        { type: "Literal", value: "Expected " },
        {
          type: "ConditionalExpression",
          test: { type: "Identifier", name: "component" },
          consequent: { type: "Literal", value: "component" },
          alternate: { type: "Literal", value: "object" }
        },
        { type: "Literal", value: " `" },
        { type: "Identifier", name: "id" },
        {
          type: "Literal",
          value: "` to be defined: you likely forgot to import, pass, or provide it."
        }
      ], parameters = [
        { type: "Identifier", name: "id" },
        { type: "Identifier", name: "component" }
      ];
      development && (message.push({
        type: "ConditionalExpression",
        test: { type: "Identifier", name: "place" },
        consequent: toBinaryAddition([
          { type: "Literal", value: "\nIt\u2019s referenced in your code at `" },
          { type: "Identifier", name: "place" },
          {
            type: "Literal",
            value: (file.path ? "` in `" + file.path : "") + "`"
          }
        ]),
        alternate: { type: "Literal", value: "" }
      }), parameters.push({ type: "Identifier", name: "place" })), tree.body.push({
        type: "FunctionDeclaration",
        id: { type: "Identifier", name: "_missingMdxReference" },
        generator: !1,
        async: !1,
        params: parameters,
        body: {
          type: "BlockStatement",
          body: [
            {
              type: "ThrowStatement",
              argument: {
                type: "NewExpression",
                callee: { type: "Identifier", name: "Error" },
                arguments: [toBinaryAddition(message)]
              }
            }
          ]
        }
      });
    }
    outputFormat === "function-body" && tree.body.unshift({
      type: "ExpressionStatement",
      expression: { type: "Literal", value: "use strict" },
      directive: "use strict"
    });
  };
}
function createImportProvider(providerImportSource, outputFormat) {
  let specifiers = [
    {
      type: "ImportSpecifier",
      imported: { type: "Identifier", name: "useMDXComponents" },
      local: { type: "Identifier", name: "_provideComponents" }
    }
  ];
  return outputFormat === "function-body" ? {
    type: "VariableDeclaration",
    kind: "const",
    declarations: specifiersToDeclarations(
      specifiers,
      toIdOrMemberExpression(["arguments", 0])
    )
  } : {
    type: "ImportDeclaration",
    specifiers,
    attributes: [],
    source: { type: "Literal", value: providerImportSource }
  };
}
function isNamedFunction(node2, name2) {
  return !!(node2 && "id" in node2 && node2.id && node2.id.name === name2);
}
function inScope(scopes, id) {
  let index2 = scopes.length;
  for (; index2--; )
    if (scopes[index2].defined.includes(id))
      return !0;
  return !1;
}

// ../../../node_modules/@mdx-js/mdx/lib/plugin/rehype-remove-raw.js
function rehypeRemoveRaw() {
  return function(tree) {
    visit(tree, "raw", function(_, index2, parent) {
      if (parent && typeof index2 == "number")
        return parent.children.splice(index2, 1), index2;
    });
  };
}

// ../../../node_modules/collapse-white-space/index.js
var js = /\s+/g, html4 = /[\t\n\v\f\r ]+/g;
function collapseWhiteSpace(value, options) {
  options ? typeof options == "string" && (options = { style: options }) : options = {};
  let replace = options.preserveLineEndings ? replaceLineEnding : replaceSpace;
  return String(value).replace(
    options.style === "html" ? html4 : js,
    options.trim ? trimFactory(replace) : replace
  );
}
function replaceLineEnding(value) {
  let match = /\r?\n|\r/.exec(value);
  return match ? match[0] : " ";
}
function replaceSpace() {
  return " ";
}
function trimFactory(replace) {
  return dropOrReplace;
  function dropOrReplace(value, index2, all3) {
    return index2 === 0 || index2 + value.length === all3.length ? "" : replace(value);
  }
}

// ../../../node_modules/@mdx-js/mdx/lib/plugin/remark-mark-and-unravel.js
function remarkMarkAndUnravel() {
  return function(tree) {
    visit(tree, function(node2, index2, parent) {
      let offset2 = -1, all3 = !0, oneOrMore = !1;
      if (parent && typeof index2 == "number" && node2.type === "paragraph") {
        let children = node2.children;
        for (; ++offset2 < children.length; ) {
          let child = children[offset2];
          if (child.type === "mdxJsxTextElement" || child.type === "mdxTextExpression")
            oneOrMore = !0;
          else if (!(child.type === "text" && collapseWhiteSpace(child.value, { style: "html", trim: !0 }) === "")) {
            all3 = !1;
            break;
          }
        }
        if (all3 && oneOrMore) {
          offset2 = -1;
          let newChildren = [];
          for (; ++offset2 < children.length; ) {
            let child = children[offset2];
            child.type === "mdxJsxTextElement" && (child.type = "mdxJsxFlowElement"), child.type === "mdxTextExpression" && (child.type = "mdxFlowExpression"), child.type === "text" && /^[\t\r\n ]+$/.test(String(child.value)) || newChildren.push(child);
          }
          return parent.children.splice(index2, 1, ...newChildren), index2;
        }
      }
      if (node2.type === "mdxJsxFlowElement" || node2.type === "mdxJsxTextElement") {
        let data2 = node2.data || (node2.data = {});
        data2._mdxExplicitJsx = !0;
      }
      (node2.type === "mdxFlowExpression" || node2.type === "mdxTextExpression" || node2.type === "mdxjsEsm") && node2.data && node2.data.estree && walk(node2.data.estree, {
        enter(node3) {
          if (node3.type === "JSXElement") {
            let data2 = node3.data || (node3.data = {});
            data2._mdxExplicitJsx = !0;
          }
        }
      });
    });
  };
}

// ../../../node_modules/@mdx-js/mdx/lib/node-types.js
var nodeTypes = (
  /** @type {const} */
  [
    "mdxFlowExpression",
    "mdxJsxFlowElement",
    "mdxJsxTextElement",
    "mdxTextExpression",
    "mdxjsEsm"
  ]
);

// ../../../node_modules/@mdx-js/mdx/lib/core.js
var removedOptions = [
  "compilers",
  "filepath",
  "hastPlugins",
  "mdPlugins",
  "skipExport",
  "wrapExport"
], warned = !1;
function createProcessor(options) {
  let settings = options || {}, index2 = -1;
  for (; ++index2 < removedOptions.length; ) {
    let key2 = removedOptions[index2];
    key2 in settings && ("" + key2, void 0);
  }
  settings.format === "detect" && void 0, (settings.jsxRuntime === "classic" || settings.pragma || settings.pragmaFrag || settings.pragmaImportSource) && !warned && (warned = !0, console.warn(
    "Unexpected deprecated option `jsxRuntime: 'classic'`, `pragma`, `pragmaFrag`, or `pragmaImportSource`; see <https://mdxjs.com/migrating/v3/> on how to migrate"
  ));
  let pipeline = unified().use(remarkParse);
  settings.format !== "md" && pipeline.use(remarkMdx);
  let remarkRehypeOptions = settings.remarkRehypeOptions || {};
  return pipeline.use(remarkMarkAndUnravel).use(settings.remarkPlugins || []).use(remarkRehype, {
    ...remarkRehypeOptions,
    allowDangerousHtml: !0,
    passThrough: [...remarkRehypeOptions.passThrough || [], ...nodeTypes]
  }).use(settings.rehypePlugins || []), settings.format === "md" && pipeline.use(rehypeRemoveRaw), pipeline.use(rehypeRecma, settings).use(recmaDocument, settings).use(recmaJsxRewrite, settings), settings.jsx || pipeline.use(recmaJsx, settings).use(recmaBuildJsxTransform, settings), pipeline.use(recmaJsx2).use(recmaStringify, settings).use(settings.recmaPlugins || []), pipeline;
}

// ../../../node_modules/@mdx-js/mdx/lib/compile.js
function compile2(vfileCompatible, compileOptions) {
  let { file, options } = resolveFileAndOptions(vfileCompatible, compileOptions);
  return createProcessor(options).process(file);
}

// ../../../node_modules/@mdx-js/mdx/lib/run.js
var AsyncFunction = Object.getPrototypeOf(run).constructor;
async function run(code2, options) {
  return new AsyncFunction(String(code2))(options);
}

// src/compiler/index.ts
var compile3 = async (input, { mdxCompileOptions = {} } = {}) => {
  let options = getCompilerOptions(mdxCompileOptions);
  return (await compile2(input, options)).toString();
};
function getCompilerOptions(mdxCompileOptions) {
  return {
    providerImportSource: "@mdx-js/react",
    rehypePlugins: [],
    ...mdxCompileOptions
  };
}

export {
  compile3 as compile
};
