diff --git a/miniapp/miniprogram_npm/@babel/helper-string-parser/index.js b/miniapp/miniprogram_npm/@babel/helper-string-parser/index.js
new file mode 100644
index 0000000..ddfde4a
--- /dev/null
+++ b/miniapp/miniprogram_npm/@babel/helper-string-parser/index.js
@@ -0,0 +1,308 @@
+module.exports = (function() {
+var __MODS__ = {};
+var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
+var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
+var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
+var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
+__DEFINE__(1771034509014, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.readCodePoint = readCodePoint;
+exports.readInt = readInt;
+exports.readStringContents = readStringContents;
+var _isDigit = function isDigit(code) {
+ return code >= 48 && code <= 57;
+};
+const forbiddenNumericSeparatorSiblings = {
+ decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
+ hex: new Set([46, 88, 95, 120])
+};
+const isAllowedNumericSeparatorSibling = {
+ bin: ch => ch === 48 || ch === 49,
+ oct: ch => ch >= 48 && ch <= 55,
+ dec: ch => ch >= 48 && ch <= 57,
+ hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102
+};
+function readStringContents(type, input, pos, lineStart, curLine, errors) {
+ const initialPos = pos;
+ const initialLineStart = lineStart;
+ const initialCurLine = curLine;
+ let out = "";
+ let firstInvalidLoc = null;
+ let chunkStart = pos;
+ const {
+ length
+ } = input;
+ for (;;) {
+ if (pos >= length) {
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
+ out += input.slice(chunkStart, pos);
+ break;
+ }
+ const ch = input.charCodeAt(pos);
+ if (isStringEnd(type, ch, input, pos)) {
+ out += input.slice(chunkStart, pos);
+ break;
+ }
+ if (ch === 92) {
+ out += input.slice(chunkStart, pos);
+ const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
+ if (res.ch === null && !firstInvalidLoc) {
+ firstInvalidLoc = {
+ pos,
+ lineStart,
+ curLine
+ };
+ } else {
+ out += res.ch;
+ }
+ ({
+ pos,
+ lineStart,
+ curLine
+ } = res);
+ chunkStart = pos;
+ } else if (ch === 8232 || ch === 8233) {
+ ++pos;
+ ++curLine;
+ lineStart = pos;
+ } else if (ch === 10 || ch === 13) {
+ if (type === "template") {
+ out += input.slice(chunkStart, pos) + "\n";
+ ++pos;
+ if (ch === 13 && input.charCodeAt(pos) === 10) {
+ ++pos;
+ }
+ ++curLine;
+ chunkStart = lineStart = pos;
+ } else {
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
+ }
+ } else {
+ ++pos;
+ }
+ }
+ return {
+ pos,
+ str: out,
+ firstInvalidLoc,
+ lineStart,
+ curLine,
+ containsInvalid: !!firstInvalidLoc
+ };
+}
+function isStringEnd(type, ch, input, pos) {
+ if (type === "template") {
+ return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
+ }
+ return ch === (type === "double" ? 34 : 39);
+}
+function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
+ const throwOnInvalid = !inTemplate;
+ pos++;
+ const res = ch => ({
+ pos,
+ ch,
+ lineStart,
+ curLine
+ });
+ const ch = input.charCodeAt(pos++);
+ switch (ch) {
+ case 110:
+ return res("\n");
+ case 114:
+ return res("\r");
+ case 120:
+ {
+ let code;
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));
+ return res(code === null ? null : String.fromCharCode(code));
+ }
+ case 117:
+ {
+ let code;
+ ({
+ code,
+ pos
+ } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));
+ return res(code === null ? null : String.fromCodePoint(code));
+ }
+ case 116:
+ return res("\t");
+ case 98:
+ return res("\b");
+ case 118:
+ return res("\u000b");
+ case 102:
+ return res("\f");
+ case 13:
+ if (input.charCodeAt(pos) === 10) {
+ ++pos;
+ }
+ case 10:
+ lineStart = pos;
+ ++curLine;
+ case 8232:
+ case 8233:
+ return res("");
+ case 56:
+ case 57:
+ if (inTemplate) {
+ return res(null);
+ } else {
+ errors.strictNumericEscape(pos - 1, lineStart, curLine);
+ }
+ default:
+ if (ch >= 48 && ch <= 55) {
+ const startPos = pos - 1;
+ const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));
+ let octalStr = match[0];
+ let octal = parseInt(octalStr, 8);
+ if (octal > 255) {
+ octalStr = octalStr.slice(0, -1);
+ octal = parseInt(octalStr, 8);
+ }
+ pos += octalStr.length - 1;
+ const next = input.charCodeAt(pos);
+ if (octalStr !== "0" || next === 56 || next === 57) {
+ if (inTemplate) {
+ return res(null);
+ } else {
+ errors.strictNumericEscape(startPos, lineStart, curLine);
+ }
+ }
+ return res(String.fromCharCode(octal));
+ }
+ return res(String.fromCharCode(ch));
+ }
+}
+function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
+ const initialPos = pos;
+ let n;
+ ({
+ n,
+ pos
+ } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));
+ if (n === null) {
+ if (throwOnInvalid) {
+ errors.invalidEscapeSequence(initialPos, lineStart, curLine);
+ } else {
+ pos = initialPos - 1;
+ }
+ }
+ return {
+ code: n,
+ pos
+ };
+}
+function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
+ const start = pos;
+ const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
+ const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
+ let invalid = false;
+ let total = 0;
+ for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {
+ const code = input.charCodeAt(pos);
+ let val;
+ if (code === 95 && allowNumSeparator !== "bail") {
+ const prev = input.charCodeAt(pos - 1);
+ const next = input.charCodeAt(pos + 1);
+ if (!allowNumSeparator) {
+ if (bailOnError) return {
+ n: null,
+ pos
+ };
+ errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
+ } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
+ if (bailOnError) return {
+ n: null,
+ pos
+ };
+ errors.unexpectedNumericSeparator(pos, lineStart, curLine);
+ }
+ ++pos;
+ continue;
+ }
+ if (code >= 97) {
+ val = code - 97 + 10;
+ } else if (code >= 65) {
+ val = code - 65 + 10;
+ } else if (_isDigit(code)) {
+ val = code - 48;
+ } else {
+ val = Infinity;
+ }
+ if (val >= radix) {
+ if (val <= 9 && bailOnError) {
+ return {
+ n: null,
+ pos
+ };
+ } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
+ val = 0;
+ } else if (forceLen) {
+ val = 0;
+ invalid = true;
+ } else {
+ break;
+ }
+ }
+ ++pos;
+ total = total * radix + val;
+ }
+ if (pos === start || len != null && pos - start !== len || invalid) {
+ return {
+ n: null,
+ pos
+ };
+ }
+ return {
+ n: total,
+ pos
+ };
+}
+function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
+ const ch = input.charCodeAt(pos);
+ let code;
+ if (ch === 123) {
+ ++pos;
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors));
+ ++pos;
+ if (code !== null && code > 0x10ffff) {
+ if (throwOnInvalid) {
+ errors.invalidCodePoint(pos, lineStart, curLine);
+ } else {
+ return {
+ code: null,
+ pos
+ };
+ }
+ }
+ } else {
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));
+ }
+ return {
+ code,
+ pos
+ };
+}
+
+//# sourceMappingURL=index.js.map
+
+}, function(modId) {var map = {}; return __REQUIRE__(map[modId], modId); })
+return __REQUIRE__(1771034509014);
+})()
+//miniprogram-npm-outsideDeps=[]
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@babel/helper-string-parser/index.js.map b/miniapp/miniprogram_npm/@babel/helper-string-parser/index.js.map
new file mode 100644
index 0000000..7adf785
--- /dev/null
+++ b/miniapp/miniprogram_npm/@babel/helper-string-parser/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["index.js"],"names":[],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.js","sourcesContent":["\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.readCodePoint = readCodePoint;\nexports.readInt = readInt;\nexports.readStringContents = readStringContents;\nvar _isDigit = function isDigit(code) {\n return code >= 48 && code <= 57;\n};\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),\n hex: new Set([46, 88, 95, 120])\n};\nconst isAllowedNumericSeparatorSibling = {\n bin: ch => ch === 48 || ch === 49,\n oct: ch => ch >= 48 && ch <= 55,\n dec: ch => ch >= 48 && ch <= 57,\n hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102\n};\nfunction readStringContents(type, input, pos, lineStart, curLine, errors) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const {\n length\n } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === 92) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(input, pos, lineStart, curLine, type === \"template\", errors);\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = {\n pos,\n lineStart,\n curLine\n };\n } else {\n out += res.ch;\n }\n ({\n pos,\n lineStart,\n curLine\n } = res);\n chunkStart = pos;\n } else if (ch === 8232 || ch === 8233) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === 10 || ch === 13) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (ch === 13 && input.charCodeAt(pos) === 10) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc\n };\n}\nfunction isStringEnd(type, ch, input, pos) {\n if (type === \"template\") {\n return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;\n }\n return ch === (type === \"double\" ? 34 : 39);\n}\nfunction readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {\n const throwOnInvalid = !inTemplate;\n pos++;\n const res = ch => ({\n pos,\n ch,\n lineStart,\n curLine\n });\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case 110:\n return res(\"\\n\");\n case 114:\n return res(\"\\r\");\n case 120:\n {\n let code;\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case 117:\n {\n let code;\n ({\n code,\n pos\n } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case 116:\n return res(\"\\t\");\n case 98:\n return res(\"\\b\");\n case 118:\n return res(\"\\u000b\");\n case 102:\n return res(\"\\f\");\n case 13:\n if (input.charCodeAt(pos) === 10) {\n ++pos;\n }\n case 10:\n lineStart = pos;\n ++curLine;\n case 8232:\n case 8233:\n return res(\"\");\n case 56:\n case 57:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n default:\n if (ch >= 48 && ch <= 55) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n let octalStr = match[0];\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (octalStr !== \"0\" || next === 56 || next === 57) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n return res(String.fromCharCode(octal));\n }\n return res(String.fromCharCode(ch));\n }\n}\nfunction readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {\n const initialPos = pos;\n let n;\n ({\n n,\n pos\n } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return {\n code: n,\n pos\n };\n}\nfunction readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {\n const start = pos;\n const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;\n let invalid = false;\n let total = 0;\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n if (code === 95 && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n if (!allowNumSeparator) {\n if (bailOnError) return {\n n: null,\n pos\n };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {\n if (bailOnError) return {\n n: null,\n pos\n };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n ++pos;\n continue;\n }\n if (code >= 97) {\n val = code - 97 + 10;\n } else if (code >= 65) {\n val = code - 65 + 10;\n } else if (_isDigit(code)) {\n val = code - 48;\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n if (val <= 9 && bailOnError) {\n return {\n n: null,\n pos\n };\n } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || len != null && pos - start !== len || invalid) {\n return {\n n: null,\n pos\n };\n }\n return {\n n: total,\n pos\n };\n}\nfunction readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {\n const ch = input.charCodeAt(pos);\n let code;\n if (ch === 123) {\n ++pos;\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, input.indexOf(\"}\", pos) - pos, true, throwOnInvalid, errors));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return {\n code: null,\n pos\n };\n }\n }\n } else {\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));\n }\n return {\n code,\n pos\n };\n}\n\n//# sourceMappingURL=index.js.map\n"]}
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@babel/helper-validator-identifier/index.js b/miniapp/miniprogram_npm/@babel/helper-validator-identifier/index.js
new file mode 100644
index 0000000..d4cf9ae
--- /dev/null
+++ b/miniapp/miniprogram_npm/@babel/helper-validator-identifier/index.js
@@ -0,0 +1,181 @@
+module.exports = (function() {
+var __MODS__ = {};
+var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
+var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
+var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
+var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
+__DEFINE__(1771034509015, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "isIdentifierChar", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierChar;
+ }
+});
+Object.defineProperty(exports, "isIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierName;
+ }
+});
+Object.defineProperty(exports, "isIdentifierStart", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierStart;
+ }
+});
+Object.defineProperty(exports, "isKeyword", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isKeyword;
+ }
+});
+Object.defineProperty(exports, "isReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindOnlyReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictReservedWord;
+ }
+});
+var _identifier = require("./identifier.js");
+var _keyword = require("./keyword.js");
+
+//# sourceMappingURL=index.js.map
+
+}, function(modId) {var map = {"./identifier.js":1771034509016,"./keyword.js":1771034509017}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509016, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isIdentifierChar = isIdentifierChar;
+exports.isIdentifierName = isIdentifierName;
+exports.isIdentifierStart = isIdentifierStart;
+let 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-\u088f\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\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\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-\ua7dc\ua7f1-\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";
+let nonASCIIidentifierChars = "\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-\u1add\u1ae0-\u1aeb\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";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const 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, 7, 25, 39, 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, 5, 57, 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, 24, 43, 261, 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, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 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, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 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, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];
+const 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, 78, 5, 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, 199, 7, 137, 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, 55, 9, 266, 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, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
+ }
+ return false;
+}
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes);
+}
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
+}
+function isIdentifierName(name) {
+ let isFirst = true;
+ for (let i = 0; i < name.length; i++) {
+ let cp = name.charCodeAt(i);
+ if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
+ const trail = name.charCodeAt(++i);
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
+ if (isFirst) {
+ isFirst = false;
+ if (!isIdentifierStart(cp)) {
+ return false;
+ }
+ } else if (!isIdentifierChar(cp)) {
+ return false;
+ }
+ }
+ return !isFirst;
+}
+
+//# sourceMappingURL=identifier.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509017, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isKeyword = isKeyword;
+exports.isReservedWord = isReservedWord;
+exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
+exports.isStrictBindReservedWord = isStrictBindReservedWord;
+exports.isStrictReservedWord = isStrictReservedWord;
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
+}
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+}
+function isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
+}
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
+}
+function isKeyword(word) {
+ return keywords.has(word);
+}
+
+//# sourceMappingURL=keyword.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+return __REQUIRE__(1771034509015);
+})()
+//miniprogram-npm-outsideDeps=[]
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@babel/helper-validator-identifier/index.js.map b/miniapp/miniprogram_npm/@babel/helper-validator-identifier/index.js.map
new file mode 100644
index 0000000..c9a45b3
--- /dev/null
+++ b/miniapp/miniprogram_npm/@babel/helper-validator-identifier/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["index.js","identifier.js","keyword.js"],"names":[],"mappings":";;;;;;;AAAA;AACA;AACA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA,AENA;ADIA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.js","sourcesContent":["\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isIdentifierChar\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierChar;\n }\n});\nObject.defineProperty(exports, \"isIdentifierName\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierName;\n }\n});\nObject.defineProperty(exports, \"isIdentifierStart\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierStart;\n }\n});\nObject.defineProperty(exports, \"isKeyword\", {\n enumerable: true,\n get: function () {\n return _keyword.isKeyword;\n }\n});\nObject.defineProperty(exports, \"isReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindOnlyReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindOnlyReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictReservedWord;\n }\n});\nvar _identifier = require(\"./identifier.js\");\nvar _keyword = require(\"./keyword.js\");\n\n//# sourceMappingURL=index.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isIdentifierChar = isIdentifierChar;\nexports.isIdentifierName = isIdentifierName;\nexports.isIdentifierStart = isIdentifierStart;\nlet 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-\\u088f\\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\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\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-\\ua7dc\\ua7f1-\\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\";\nlet nonASCIIidentifierChars = \"\\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-\\u1add\\u1ae0-\\u1aeb\\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\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst 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, 7, 25, 39, 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, 5, 57, 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, 24, 43, 261, 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, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 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, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 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, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\nconst 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, 78, 5, 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, 199, 7, 137, 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, 55, 9, 266, 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, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\nfunction isIdentifierName(name) {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n\n//# sourceMappingURL=identifier.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isKeyword = isKeyword;\nexports.isReservedWord = isReservedWord;\nexports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;\nexports.isStrictBindReservedWord = isStrictBindReservedWord;\nexports.isStrictReservedWord = isStrictReservedWord;\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\n\n//# sourceMappingURL=keyword.js.map\n"]}
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@babel/parser/index.js b/miniapp/miniprogram_npm/@babel/parser/index.js
new file mode 100644
index 0000000..8db633e
--- /dev/null
+++ b/miniapp/miniprogram_npm/@babel/parser/index.js
@@ -0,0 +1,14595 @@
+module.exports = (function() {
+var __MODS__ = {};
+var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
+var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
+var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
+var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
+__DEFINE__(1771034509018, function(require, module, exports) {
+
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+function _objectWithoutPropertiesLoose(r, e) {
+ if (null == r) return {};
+ var t = {};
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
+ if (-1 !== e.indexOf(n)) continue;
+ t[n] = r[n];
+ }
+ return t;
+}
+class Position {
+ constructor(line, col, index) {
+ this.line = void 0;
+ this.column = void 0;
+ this.index = void 0;
+ this.line = line;
+ this.column = col;
+ this.index = index;
+ }
+}
+class SourceLocation {
+ constructor(start, end) {
+ this.start = void 0;
+ this.end = void 0;
+ this.filename = void 0;
+ this.identifierName = void 0;
+ this.start = start;
+ this.end = end;
+ }
+}
+function createPositionWithColumnOffset(position, columnOffset) {
+ const {
+ line,
+ column,
+ index
+ } = position;
+ return new Position(line, column + columnOffset, index + columnOffset);
+}
+const code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED";
+var ModuleErrors = {
+ ImportMetaOutsideModule: {
+ message: `import.meta may appear only with 'sourceType: "module"'`,
+ code
+ },
+ ImportOutsideModule: {
+ message: `'import' and 'export' may appear only with 'sourceType: "module"'`,
+ code
+ }
+};
+const NodeDescriptions = {
+ ArrayPattern: "array destructuring pattern",
+ AssignmentExpression: "assignment expression",
+ AssignmentPattern: "assignment expression",
+ ArrowFunctionExpression: "arrow function expression",
+ ConditionalExpression: "conditional expression",
+ CatchClause: "catch clause",
+ ForOfStatement: "for-of statement",
+ ForInStatement: "for-in statement",
+ ForStatement: "for-loop",
+ FormalParameters: "function parameter list",
+ Identifier: "identifier",
+ ImportSpecifier: "import specifier",
+ ImportDefaultSpecifier: "import default specifier",
+ ImportNamespaceSpecifier: "import namespace specifier",
+ ObjectPattern: "object destructuring pattern",
+ ParenthesizedExpression: "parenthesized expression",
+ RestElement: "rest element",
+ UpdateExpression: {
+ true: "prefix operation",
+ false: "postfix operation"
+ },
+ VariableDeclarator: "variable declaration",
+ YieldExpression: "yield expression"
+};
+const toNodeDescription = node => node.type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[`${node.prefix}`] : NodeDescriptions[node.type];
+var StandardErrors = {
+ AccessorIsGenerator: ({
+ kind
+ }) => `A ${kind}ter cannot be a generator.`,
+ ArgumentsInClass: "'arguments' is only allowed in functions and class methods.",
+ AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",
+ AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.",
+ AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.",
+ AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.",
+ AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.",
+ AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.",
+ BadGetterArity: "A 'get' accessor must not have any formal parameters.",
+ BadSetterArity: "A 'set' accessor must have exactly one formal parameter.",
+ BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.",
+ ConstructorClassField: "Classes may not have a field named 'constructor'.",
+ ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.",
+ ConstructorIsAccessor: "Class constructor may not be an accessor.",
+ ConstructorIsAsync: "Constructor can't be an async function.",
+ ConstructorIsGenerator: "Constructor can't be a generator.",
+ DeclarationMissingInitializer: ({
+ kind
+ }) => `Missing initializer in ${kind} declaration.`,
+ DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.",
+ DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.",
+ DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.",
+ DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",
+ DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.",
+ DecoratorSemicolon: "Decorators must not be followed by a semicolon.",
+ DecoratorStaticBlock: "Decorators can't be used with a static block.",
+ DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.',
+ DeletePrivateField: "Deleting a private field is not allowed.",
+ DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",
+ DuplicateConstructor: "Duplicate constructor in the same class.",
+ DuplicateDefaultExport: "Only one default export allowed per module.",
+ DuplicateExport: ({
+ exportName
+ }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`,
+ DuplicateProto: "Redefinition of __proto__ property.",
+ DuplicateRegExpFlags: "Duplicate regular expression flag.",
+ ElementAfterRest: "Rest element must be last element.",
+ EscapedCharNotAnIdentifier: "Invalid Unicode escape.",
+ ExportBindingIsString: ({
+ localName,
+ exportName
+ }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`,
+ ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.",
+ ForInOfLoopInitializer: ({
+ type
+ }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`,
+ ForInUsing: "For-in loop may not start with 'using' declaration.",
+ ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.",
+ ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.",
+ GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",
+ IllegalBreakContinue: ({
+ type
+ }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`,
+ IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.",
+ IllegalReturn: "'return' outside of function.",
+ ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.",
+ ImportBindingIsString: ({
+ importName
+ }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`,
+ ImportCallArity: `\`import()\` requires exactly one or two arguments.`,
+ ImportCallNotNewExpression: "Cannot use new with import(...).",
+ ImportCallSpreadArgument: "`...` is not allowed in `import()`.",
+ ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.",
+ ImportReflectionHasAssertion: "`import module x` cannot have assertions.",
+ ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.',
+ IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.",
+ InvalidBigIntLiteral: "Invalid BigIntLiteral.",
+ InvalidCodePoint: "Code point out of bounds.",
+ InvalidCoverDiscardElement: "'void' must be followed by an expression when not used in a binding position.",
+ InvalidCoverInitializedName: "Invalid shorthand property initializer.",
+ InvalidDecimal: "Invalid decimal.",
+ InvalidDigit: ({
+ radix
+ }) => `Expected number in radix ${radix}.`,
+ InvalidEscapeSequence: "Bad character escape sequence.",
+ InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",
+ InvalidEscapedReservedWord: ({
+ reservedWord
+ }) => `Escape sequence in keyword ${reservedWord}.`,
+ InvalidIdentifier: ({
+ identifierName
+ }) => `Invalid identifier ${identifierName}.`,
+ InvalidLhs: ({
+ ancestor
+ }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,
+ InvalidLhsBinding: ({
+ ancestor
+ }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,
+ InvalidLhsOptionalChaining: ({
+ ancestor
+ }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`,
+ InvalidNumber: "Invalid number.",
+ InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.",
+ InvalidOrUnexpectedToken: ({
+ unexpected
+ }) => `Unexpected character '${unexpected}'.`,
+ InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",
+ InvalidPrivateFieldResolution: ({
+ identifierName
+ }) => `Private name #${identifierName} is not defined.`,
+ InvalidPropertyBindingPattern: "Binding member expression.",
+ InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",
+ InvalidRestAssignmentPattern: "Invalid rest operator's argument.",
+ LabelRedeclaration: ({
+ labelName
+ }) => `Label '${labelName}' is already declared.`,
+ LetInLexicalBinding: "'let' is disallowed as a lexically bound name.",
+ LineTerminatorBeforeArrow: "No line break is allowed before '=>'.",
+ MalformedRegExpFlags: "Invalid regular expression flag.",
+ MissingClassName: "A class name is required.",
+ MissingEqInAssignment: "Only '=' operator can be used for specifying default value.",
+ MissingSemicolon: "Missing semicolon.",
+ MissingPlugin: ({
+ missingPlugin
+ }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`,
+ MissingOneOfPlugins: ({
+ missingPlugin
+ }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`,
+ MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.",
+ MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",
+ ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",
+ ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",
+ ModuleAttributesWithDuplicateKeys: ({
+ key
+ }) => `Duplicate key "${key}" is not allowed in module attributes.`,
+ ModuleExportNameHasLoneSurrogate: ({
+ surrogateCharCode
+ }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`,
+ ModuleExportUndefined: ({
+ localName
+ }) => `Export '${localName}' is not defined.`,
+ MultipleDefaultsInSwitch: "Multiple default clauses.",
+ NewlineAfterThrow: "Illegal newline after throw.",
+ NoCatchOrFinally: "Missing catch or finally clause.",
+ NumberIdentifier: "Identifier directly after number.",
+ NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",
+ ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.",
+ OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",
+ OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",
+ OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.",
+ ParamDupe: "Argument name clash.",
+ PatternHasAccessor: "Object pattern can't contain getter or setter.",
+ PatternHasMethod: "Object pattern can't contain methods.",
+ PrivateInExpectedIn: ({
+ identifierName
+ }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`,
+ PrivateNameRedeclaration: ({
+ identifierName
+ }) => `Duplicate private name #${identifierName}.`,
+ RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
+ RecordNoProto: "'__proto__' is not allowed in Record expressions.",
+ RestTrailingComma: "Unexpected trailing comma after rest element.",
+ SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.",
+ SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",
+ SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.',
+ StaticPrototype: "Classes may not have static property named prototype.",
+ SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",
+ SuperPrivateField: "Private fields can't be accessed on super.",
+ TrailingDecorator: "Decorators must be attached to a class element.",
+ TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
+ UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",
+ UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.',
+ UnexpectedDigitAfterHash: "Unexpected digit after hash token.",
+ UnexpectedImportExport: "'import' and 'export' may only appear at the top level.",
+ UnexpectedKeyword: ({
+ keyword
+ }) => `Unexpected keyword '${keyword}'.`,
+ UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",
+ UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",
+ UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",
+ UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",
+ UnexpectedPrivateField: "Unexpected private name.",
+ UnexpectedReservedWord: ({
+ reservedWord
+ }) => `Unexpected reserved word '${reservedWord}'.`,
+ UnexpectedSuper: "'super' is only allowed in object methods and classes.",
+ UnexpectedToken: ({
+ expected,
+ unexpected
+ }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`,
+ UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",
+ UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.",
+ UnexpectedVoidPattern: "Unexpected void binding.",
+ UnsupportedBind: "Binding should be performed on object property.",
+ UnsupportedDecoratorExport: "A decorated export must export a class declaration.",
+ UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",
+ UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",
+ UnsupportedMetaProperty: ({
+ target,
+ onlyValidPropertyName
+ }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,
+ UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",
+ UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",
+ UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",
+ UnterminatedComment: "Unterminated comment.",
+ UnterminatedRegExp: "Unterminated regular expression.",
+ UnterminatedString: "Unterminated string constant.",
+ UnterminatedTemplate: "Unterminated template.",
+ UsingDeclarationExport: "Using declaration cannot be exported.",
+ UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.",
+ VarRedeclaration: ({
+ identifierName
+ }) => `Identifier '${identifierName}' has already been declared.`,
+ VoidPatternCatchClauseParam: "A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.",
+ VoidPatternInitializer: "A void binding may not have an initializer.",
+ YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.",
+ YieldInParameter: "Yield expression is not allowed in formal parameters.",
+ YieldNotInGeneratorFunction: "'yield' is only allowed within generator functions.",
+ ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."
+};
+var StrictModeErrors = {
+ StrictDelete: "Deleting local variable in strict mode.",
+ StrictEvalArguments: ({
+ referenceName
+ }) => `Assigning to '${referenceName}' in strict mode.`,
+ StrictEvalArgumentsBinding: ({
+ bindingName
+ }) => `Binding '${bindingName}' in strict mode.`,
+ StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",
+ StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.",
+ StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",
+ StrictWith: "'with' in strict mode."
+};
+var ParseExpressionErrors = {
+ ParseExpressionEmptyInput: "Unexpected parseExpression() input: The input is empty or contains only comments.",
+ ParseExpressionExpectsEOF: ({
+ unexpected
+ }) => `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`${String.fromCodePoint(unexpected)}\`.`
+};
+const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]);
+var PipelineOperatorErrors = Object.assign({
+ PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",
+ PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',
+ PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",
+ PipeTopicUnconfiguredToken: ({
+ token
+ }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`,
+ PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",
+ PipeUnparenthesizedBody: ({
+ type
+ }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({
+ type
+ })}; please wrap it in parentheses.`
+}, {
+ PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.',
+ PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",
+ PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",
+ PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",
+ PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",
+ PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'
+});
+const _excluded = ["message"];
+function defineHidden(obj, key, value) {
+ Object.defineProperty(obj, key, {
+ enumerable: false,
+ configurable: true,
+ value
+ });
+}
+function toParseErrorConstructor({
+ toMessage,
+ code,
+ reasonCode,
+ syntaxPlugin
+}) {
+ const hasMissingPlugin = reasonCode === "MissingPlugin" || reasonCode === "MissingOneOfPlugins";
+ const oldReasonCodes = {
+ AccessorCannotDeclareThisParameter: "AccesorCannotDeclareThisParameter",
+ AccessorCannotHaveTypeParameters: "AccesorCannotHaveTypeParameters",
+ ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference",
+ SetAccessorCannotHaveOptionalParameter: "SetAccesorCannotHaveOptionalParameter",
+ SetAccessorCannotHaveRestParameter: "SetAccesorCannotHaveRestParameter",
+ SetAccessorCannotHaveReturnType: "SetAccesorCannotHaveReturnType"
+ };
+ if (oldReasonCodes[reasonCode]) {
+ reasonCode = oldReasonCodes[reasonCode];
+ }
+ return function constructor(loc, details) {
+ const error = new SyntaxError();
+ error.code = code;
+ error.reasonCode = reasonCode;
+ error.loc = loc;
+ error.pos = loc.index;
+ error.syntaxPlugin = syntaxPlugin;
+ if (hasMissingPlugin) {
+ error.missingPlugin = details.missingPlugin;
+ }
+ defineHidden(error, "clone", function clone(overrides = {}) {
+ var _overrides$loc;
+ const {
+ line,
+ column,
+ index
+ } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc;
+ return constructor(new Position(line, column, index), Object.assign({}, details, overrides.details));
+ });
+ defineHidden(error, "details", details);
+ Object.defineProperty(error, "message", {
+ configurable: true,
+ get() {
+ const message = `${toMessage(details)} (${loc.line}:${loc.column})`;
+ this.message = message;
+ return message;
+ },
+ set(value) {
+ Object.defineProperty(this, "message", {
+ value,
+ writable: true
+ });
+ }
+ });
+ return error;
+ };
+}
+function ParseErrorEnum(argument, syntaxPlugin) {
+ if (Array.isArray(argument)) {
+ return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]);
+ }
+ const ParseErrorConstructors = {};
+ for (const reasonCode of Object.keys(argument)) {
+ const template = argument[reasonCode];
+ const _ref = typeof template === "string" ? {
+ message: () => template
+ } : typeof template === "function" ? {
+ message: template
+ } : template,
+ {
+ message
+ } = _ref,
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
+ const toMessage = typeof message === "string" ? () => message : message;
+ ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({
+ code: "BABEL_PARSER_SYNTAX_ERROR",
+ reasonCode,
+ toMessage
+ }, syntaxPlugin ? {
+ syntaxPlugin
+ } : {}, rest));
+ }
+ return ParseErrorConstructors;
+}
+const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum(ParseExpressionErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors));
+function createDefaultOptions() {
+ return {
+ sourceType: "script",
+ sourceFilename: undefined,
+ startIndex: 0,
+ startColumn: 0,
+ startLine: 1,
+ allowAwaitOutsideFunction: false,
+ allowReturnOutsideFunction: false,
+ allowNewTargetOutsideFunction: false,
+ allowImportExportEverywhere: false,
+ allowSuperOutsideMethod: false,
+ allowUndeclaredExports: false,
+ allowYieldOutsideFunction: false,
+ plugins: [],
+ strictMode: undefined,
+ ranges: false,
+ tokens: false,
+ createImportExpressions: false,
+ createParenthesizedExpressions: false,
+ errorRecovery: false,
+ attachComment: true,
+ annexB: true
+ };
+}
+function getOptions(opts) {
+ const options = createDefaultOptions();
+ if (opts == null) {
+ return options;
+ }
+ if (opts.annexB != null && opts.annexB !== false) {
+ throw new Error("The `annexB` option can only be set to `false`.");
+ }
+ for (const key of Object.keys(options)) {
+ if (opts[key] != null) options[key] = opts[key];
+ }
+ if (options.startLine === 1) {
+ if (opts.startIndex == null && options.startColumn > 0) {
+ options.startIndex = options.startColumn;
+ } else if (opts.startColumn == null && options.startIndex > 0) {
+ options.startColumn = options.startIndex;
+ }
+ } else if (opts.startColumn == null || opts.startIndex == null) {
+ if (opts.startIndex != null) {
+ throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`.");
+ }
+ }
+ if (options.sourceType === "commonjs") {
+ if (opts.allowAwaitOutsideFunction != null) {
+ throw new Error("The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.");
+ }
+ if (opts.allowReturnOutsideFunction != null) {
+ throw new Error("`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.");
+ }
+ if (opts.allowNewTargetOutsideFunction != null) {
+ throw new Error("`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.");
+ }
+ }
+ return options;
+}
+const {
+ defineProperty
+} = Object;
+const toUnenumerable = (object, key) => {
+ if (object) {
+ defineProperty(object, key, {
+ enumerable: false,
+ value: object[key]
+ });
+ }
+};
+function toESTreeLocation(node) {
+ toUnenumerable(node.loc.start, "index");
+ toUnenumerable(node.loc.end, "index");
+ return node;
+}
+var estree = superClass => class ESTreeParserMixin extends superClass {
+ parse() {
+ const file = toESTreeLocation(super.parse());
+ if (this.optionFlags & 256) {
+ file.tokens = file.tokens.map(toESTreeLocation);
+ }
+ return file;
+ }
+ parseRegExpLiteral({
+ pattern,
+ flags
+ }) {
+ let regex = null;
+ try {
+ regex = new RegExp(pattern, flags);
+ } catch (_) {}
+ const node = this.estreeParseLiteral(regex);
+ node.regex = {
+ pattern,
+ flags
+ };
+ return node;
+ }
+ parseBigIntLiteral(value) {
+ let bigInt;
+ try {
+ bigInt = BigInt(value);
+ } catch (_unused) {
+ bigInt = null;
+ }
+ const node = this.estreeParseLiteral(bigInt);
+ node.bigint = String(node.value || value);
+ return node;
+ }
+ parseDecimalLiteral(value) {
+ const decimal = null;
+ const node = this.estreeParseLiteral(decimal);
+ node.decimal = String(node.value || value);
+ return node;
+ }
+ estreeParseLiteral(value) {
+ return this.parseLiteral(value, "Literal");
+ }
+ parseStringLiteral(value) {
+ return this.estreeParseLiteral(value);
+ }
+ parseNumericLiteral(value) {
+ return this.estreeParseLiteral(value);
+ }
+ parseNullLiteral() {
+ return this.estreeParseLiteral(null);
+ }
+ parseBooleanLiteral(value) {
+ return this.estreeParseLiteral(value);
+ }
+ estreeParseChainExpression(node, endLoc) {
+ const chain = this.startNodeAtNode(node);
+ chain.expression = node;
+ return this.finishNodeAt(chain, "ChainExpression", endLoc);
+ }
+ directiveToStmt(directive) {
+ const expression = directive.value;
+ delete directive.value;
+ this.castNodeTo(expression, "Literal");
+ expression.raw = expression.extra.raw;
+ expression.value = expression.extra.expressionValue;
+ const stmt = this.castNodeTo(directive, "ExpressionStatement");
+ stmt.expression = expression;
+ stmt.directive = expression.extra.rawValue;
+ delete expression.extra;
+ return stmt;
+ }
+ fillOptionalPropertiesForTSESLint(node) {}
+ cloneEstreeStringLiteral(node) {
+ const {
+ start,
+ end,
+ loc,
+ range,
+ raw,
+ value
+ } = node;
+ const cloned = Object.create(node.constructor.prototype);
+ cloned.type = "Literal";
+ cloned.start = start;
+ cloned.end = end;
+ cloned.loc = loc;
+ cloned.range = range;
+ cloned.raw = raw;
+ cloned.value = value;
+ return cloned;
+ }
+ initFunction(node, isAsync) {
+ super.initFunction(node, isAsync);
+ node.expression = false;
+ }
+ checkDeclaration(node) {
+ if (node != null && this.isObjectProperty(node)) {
+ this.checkDeclaration(node.value);
+ } else {
+ super.checkDeclaration(node);
+ }
+ }
+ getObjectOrClassMethodParams(method) {
+ return method.value.params;
+ }
+ isValidDirective(stmt) {
+ var _stmt$expression$extr;
+ return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);
+ }
+ parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
+ super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse);
+ const directiveStatements = node.directives.map(d => this.directiveToStmt(d));
+ node.body = directiveStatements.concat(node.body);
+ delete node.directives;
+ }
+ parsePrivateName() {
+ const node = super.parsePrivateName();
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return node;
+ }
+ return this.convertPrivateNameToPrivateIdentifier(node);
+ }
+ convertPrivateNameToPrivateIdentifier(node) {
+ const name = super.getPrivateNameSV(node);
+ delete node.id;
+ node.name = name;
+ return this.castNodeTo(node, "PrivateIdentifier");
+ }
+ isPrivateName(node) {
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return super.isPrivateName(node);
+ }
+ return node.type === "PrivateIdentifier";
+ }
+ getPrivateNameSV(node) {
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return super.getPrivateNameSV(node);
+ }
+ return node.name;
+ }
+ parseLiteral(value, type) {
+ const node = super.parseLiteral(value, type);
+ node.raw = node.extra.raw;
+ delete node.extra;
+ return node;
+ }
+ parseFunctionBody(node, allowExpression, isMethod = false) {
+ super.parseFunctionBody(node, allowExpression, isMethod);
+ node.expression = node.body.type !== "BlockStatement";
+ }
+ parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
+ let funcNode = this.startNode();
+ funcNode.kind = node.kind;
+ funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
+ delete funcNode.kind;
+ const {
+ typeParameters
+ } = node;
+ if (typeParameters) {
+ delete node.typeParameters;
+ funcNode.typeParameters = typeParameters;
+ this.resetStartLocationFromNode(funcNode, typeParameters);
+ }
+ const valueNode = this.castNodeTo(funcNode, "FunctionExpression");
+ node.value = valueNode;
+ if (type === "ClassPrivateMethod") {
+ node.computed = false;
+ }
+ if (type === "ObjectMethod") {
+ if (node.kind === "method") {
+ node.kind = "init";
+ }
+ node.shorthand = false;
+ return this.finishNode(node, "Property");
+ } else {
+ return this.finishNode(node, "MethodDefinition");
+ }
+ }
+ nameIsConstructor(key) {
+ if (key.type === "Literal") return key.value === "constructor";
+ return super.nameIsConstructor(key);
+ }
+ parseClassProperty(...args) {
+ const propertyNode = super.parseClassProperty(...args);
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return propertyNode;
+ }
+ this.castNodeTo(propertyNode, "PropertyDefinition");
+ return propertyNode;
+ }
+ parseClassPrivateProperty(...args) {
+ const propertyNode = super.parseClassPrivateProperty(...args);
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return propertyNode;
+ }
+ this.castNodeTo(propertyNode, "PropertyDefinition");
+ propertyNode.computed = false;
+ return propertyNode;
+ }
+ parseClassAccessorProperty(node) {
+ const accessorPropertyNode = super.parseClassAccessorProperty(node);
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return accessorPropertyNode;
+ }
+ if (accessorPropertyNode.abstract && this.hasPlugin("typescript")) {
+ delete accessorPropertyNode.abstract;
+ this.castNodeTo(accessorPropertyNode, "TSAbstractAccessorProperty");
+ } else {
+ this.castNodeTo(accessorPropertyNode, "AccessorProperty");
+ }
+ return accessorPropertyNode;
+ }
+ parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
+ const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);
+ if (node) {
+ node.kind = "init";
+ this.castNodeTo(node, "Property");
+ }
+ return node;
+ }
+ finishObjectProperty(node) {
+ node.kind = "init";
+ return this.finishNode(node, "Property");
+ }
+ isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {
+ return type === "Property" ? "value" : super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding);
+ }
+ isAssignable(node, isBinding) {
+ if (node != null && this.isObjectProperty(node)) {
+ return this.isAssignable(node.value, isBinding);
+ }
+ return super.isAssignable(node, isBinding);
+ }
+ toAssignable(node, isLHS = false) {
+ if (node != null && this.isObjectProperty(node)) {
+ const {
+ key,
+ value
+ } = node;
+ if (this.isPrivateName(key)) {
+ this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
+ }
+ this.toAssignable(value, isLHS);
+ } else {
+ super.toAssignable(node, isLHS);
+ }
+ }
+ toAssignableObjectExpressionProp(prop, isLast, isLHS) {
+ if (prop.type === "Property" && (prop.kind === "get" || prop.kind === "set")) {
+ this.raise(Errors.PatternHasAccessor, prop.key);
+ } else if (prop.type === "Property" && prop.method) {
+ this.raise(Errors.PatternHasMethod, prop.key);
+ } else {
+ super.toAssignableObjectExpressionProp(prop, isLast, isLHS);
+ }
+ }
+ finishCallExpression(unfinished, optional) {
+ const node = super.finishCallExpression(unfinished, optional);
+ if (node.callee.type === "Import") {
+ var _ref, _ref2;
+ this.castNodeTo(node, "ImportExpression");
+ node.source = node.arguments[0];
+ node.options = (_ref = node.arguments[1]) != null ? _ref : null;
+ node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null;
+ delete node.arguments;
+ delete node.callee;
+ } else if (node.type === "OptionalCallExpression") {
+ this.castNodeTo(node, "CallExpression");
+ } else {
+ node.optional = false;
+ }
+ return node;
+ }
+ toReferencedArguments(node) {
+ if (node.type === "ImportExpression") {
+ return;
+ }
+ super.toReferencedArguments(node);
+ }
+ parseExport(unfinished, decorators) {
+ const exportStartLoc = this.state.lastTokStartLoc;
+ const node = super.parseExport(unfinished, decorators);
+ switch (node.type) {
+ case "ExportAllDeclaration":
+ node.exported = null;
+ break;
+ case "ExportNamedDeclaration":
+ if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {
+ this.castNodeTo(node, "ExportAllDeclaration");
+ node.exported = node.specifiers[0].exported;
+ delete node.specifiers;
+ }
+ case "ExportDefaultDeclaration":
+ {
+ var _declaration$decorato;
+ const {
+ declaration
+ } = node;
+ if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) {
+ this.resetStartLocation(node, exportStartLoc);
+ }
+ }
+ break;
+ }
+ return node;
+ }
+ stopParseSubscript(base, state) {
+ const node = super.stopParseSubscript(base, state);
+ if (state.optionalChainMember) {
+ return this.estreeParseChainExpression(node, base.loc.end);
+ }
+ return node;
+ }
+ parseMember(base, startLoc, state, computed, optional) {
+ const node = super.parseMember(base, startLoc, state, computed, optional);
+ if (node.type === "OptionalMemberExpression") {
+ this.castNodeTo(node, "MemberExpression");
+ } else {
+ node.optional = false;
+ }
+ return node;
+ }
+ isOptionalMemberExpression(node) {
+ if (node.type === "ChainExpression") {
+ return node.expression.type === "MemberExpression";
+ }
+ return super.isOptionalMemberExpression(node);
+ }
+ hasPropertyAsPrivateName(node) {
+ if (node.type === "ChainExpression") {
+ node = node.expression;
+ }
+ return super.hasPropertyAsPrivateName(node);
+ }
+ isObjectProperty(node) {
+ return node.type === "Property" && node.kind === "init" && !node.method;
+ }
+ isObjectMethod(node) {
+ return node.type === "Property" && (node.method || node.kind === "get" || node.kind === "set");
+ }
+ castNodeTo(node, type) {
+ const result = super.castNodeTo(node, type);
+ this.fillOptionalPropertiesForTSESLint(result);
+ return result;
+ }
+ cloneIdentifier(node) {
+ const cloned = super.cloneIdentifier(node);
+ this.fillOptionalPropertiesForTSESLint(cloned);
+ return cloned;
+ }
+ cloneStringLiteral(node) {
+ if (node.type === "Literal") {
+ return this.cloneEstreeStringLiteral(node);
+ }
+ return super.cloneStringLiteral(node);
+ }
+ finishNodeAt(node, type, endLoc) {
+ return toESTreeLocation(super.finishNodeAt(node, type, endLoc));
+ }
+ finishNode(node, type) {
+ const result = super.finishNode(node, type);
+ this.fillOptionalPropertiesForTSESLint(result);
+ return result;
+ }
+ resetStartLocation(node, startLoc) {
+ super.resetStartLocation(node, startLoc);
+ toESTreeLocation(node);
+ }
+ resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {
+ super.resetEndLocation(node, endLoc);
+ toESTreeLocation(node);
+ }
+};
+class TokContext {
+ constructor(token, preserveSpace) {
+ this.token = void 0;
+ this.preserveSpace = void 0;
+ this.token = token;
+ this.preserveSpace = !!preserveSpace;
+ }
+}
+const types = {
+ brace: new TokContext("{"),
+ j_oTag: new TokContext("...", true)
+};
+types.template = new TokContext("`", true);
+const beforeExpr = true;
+const startsExpr = true;
+const isLoop = true;
+const isAssign = true;
+const prefix = true;
+const postfix = true;
+class ExportedTokenType {
+ constructor(label, conf = {}) {
+ this.label = void 0;
+ this.keyword = void 0;
+ this.beforeExpr = void 0;
+ this.startsExpr = void 0;
+ this.rightAssociative = void 0;
+ this.isLoop = void 0;
+ this.isAssign = void 0;
+ this.prefix = void 0;
+ this.postfix = void 0;
+ this.binop = void 0;
+ this.label = label;
+ this.keyword = conf.keyword;
+ this.beforeExpr = !!conf.beforeExpr;
+ this.startsExpr = !!conf.startsExpr;
+ this.rightAssociative = !!conf.rightAssociative;
+ this.isLoop = !!conf.isLoop;
+ this.isAssign = !!conf.isAssign;
+ this.prefix = !!conf.prefix;
+ this.postfix = !!conf.postfix;
+ this.binop = conf.binop != null ? conf.binop : null;
+ this.updateContext = null;
+ }
+}
+const keywords$1 = new Map();
+function createKeyword(name, options = {}) {
+ options.keyword = name;
+ const token = createToken(name, options);
+ keywords$1.set(name, token);
+ return token;
+}
+function createBinop(name, binop) {
+ return createToken(name, {
+ beforeExpr,
+ binop
+ });
+}
+let tokenTypeCounter = -1;
+const tokenTypes = [];
+const tokenLabels = [];
+const tokenBinops = [];
+const tokenBeforeExprs = [];
+const tokenStartsExprs = [];
+const tokenPrefixes = [];
+function createToken(name, options = {}) {
+ var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;
+ ++tokenTypeCounter;
+ tokenLabels.push(name);
+ tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);
+ tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);
+ tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);
+ tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);
+ tokenTypes.push(new ExportedTokenType(name, options));
+ return tokenTypeCounter;
+}
+function createKeywordLike(name, options = {}) {
+ var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;
+ ++tokenTypeCounter;
+ keywords$1.set(name, tokenTypeCounter);
+ tokenLabels.push(name);
+ tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);
+ tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);
+ tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);
+ tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);
+ tokenTypes.push(new ExportedTokenType("name", options));
+ return tokenTypeCounter;
+}
+const tt = {
+ bracketL: createToken("[", {
+ beforeExpr,
+ startsExpr
+ }),
+ bracketHashL: createToken("#[", {
+ beforeExpr,
+ startsExpr
+ }),
+ bracketBarL: createToken("[|", {
+ beforeExpr,
+ startsExpr
+ }),
+ bracketR: createToken("]"),
+ bracketBarR: createToken("|]"),
+ braceL: createToken("{", {
+ beforeExpr,
+ startsExpr
+ }),
+ braceBarL: createToken("{|", {
+ beforeExpr,
+ startsExpr
+ }),
+ braceHashL: createToken("#{", {
+ beforeExpr,
+ startsExpr
+ }),
+ braceR: createToken("}"),
+ braceBarR: createToken("|}"),
+ parenL: createToken("(", {
+ beforeExpr,
+ startsExpr
+ }),
+ parenR: createToken(")"),
+ comma: createToken(",", {
+ beforeExpr
+ }),
+ semi: createToken(";", {
+ beforeExpr
+ }),
+ colon: createToken(":", {
+ beforeExpr
+ }),
+ doubleColon: createToken("::", {
+ beforeExpr
+ }),
+ dot: createToken("."),
+ question: createToken("?", {
+ beforeExpr
+ }),
+ questionDot: createToken("?."),
+ arrow: createToken("=>", {
+ beforeExpr
+ }),
+ template: createToken("template"),
+ ellipsis: createToken("...", {
+ beforeExpr
+ }),
+ backQuote: createToken("`", {
+ startsExpr
+ }),
+ dollarBraceL: createToken("${", {
+ beforeExpr,
+ startsExpr
+ }),
+ templateTail: createToken("...`", {
+ startsExpr
+ }),
+ templateNonTail: createToken("...${", {
+ beforeExpr,
+ startsExpr
+ }),
+ at: createToken("@"),
+ hash: createToken("#", {
+ startsExpr
+ }),
+ interpreterDirective: createToken("#!..."),
+ eq: createToken("=", {
+ beforeExpr,
+ isAssign
+ }),
+ assign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ slashAssign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ xorAssign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ moduloAssign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ incDec: createToken("++/--", {
+ prefix,
+ postfix,
+ startsExpr
+ }),
+ bang: createToken("!", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ tilde: createToken("~", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ doubleCaret: createToken("^^", {
+ startsExpr
+ }),
+ doubleAt: createToken("@@", {
+ startsExpr
+ }),
+ pipeline: createBinop("|>", 0),
+ nullishCoalescing: createBinop("??", 1),
+ logicalOR: createBinop("||", 1),
+ logicalAND: createBinop("&&", 2),
+ bitwiseOR: createBinop("|", 3),
+ bitwiseXOR: createBinop("^", 4),
+ bitwiseAND: createBinop("&", 5),
+ equality: createBinop("==/!=/===/!==", 6),
+ lt: createBinop(">/<=/>=", 7),
+ gt: createBinop(">/<=/>=", 7),
+ relational: createBinop(">/<=/>=", 7),
+ bitShift: createBinop("<>>/>>>", 8),
+ bitShiftL: createBinop("<>>/>>>", 8),
+ bitShiftR: createBinop("<>>/>>>", 8),
+ plusMin: createToken("+/-", {
+ beforeExpr,
+ binop: 9,
+ prefix,
+ startsExpr
+ }),
+ modulo: createToken("%", {
+ binop: 10,
+ startsExpr
+ }),
+ star: createToken("*", {
+ binop: 10
+ }),
+ slash: createBinop("/", 10),
+ exponent: createToken("**", {
+ beforeExpr,
+ binop: 11,
+ rightAssociative: true
+ }),
+ _in: createKeyword("in", {
+ beforeExpr,
+ binop: 7
+ }),
+ _instanceof: createKeyword("instanceof", {
+ beforeExpr,
+ binop: 7
+ }),
+ _break: createKeyword("break"),
+ _case: createKeyword("case", {
+ beforeExpr
+ }),
+ _catch: createKeyword("catch"),
+ _continue: createKeyword("continue"),
+ _debugger: createKeyword("debugger"),
+ _default: createKeyword("default", {
+ beforeExpr
+ }),
+ _else: createKeyword("else", {
+ beforeExpr
+ }),
+ _finally: createKeyword("finally"),
+ _function: createKeyword("function", {
+ startsExpr
+ }),
+ _if: createKeyword("if"),
+ _return: createKeyword("return", {
+ beforeExpr
+ }),
+ _switch: createKeyword("switch"),
+ _throw: createKeyword("throw", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _try: createKeyword("try"),
+ _var: createKeyword("var"),
+ _const: createKeyword("const"),
+ _with: createKeyword("with"),
+ _new: createKeyword("new", {
+ beforeExpr,
+ startsExpr
+ }),
+ _this: createKeyword("this", {
+ startsExpr
+ }),
+ _super: createKeyword("super", {
+ startsExpr
+ }),
+ _class: createKeyword("class", {
+ startsExpr
+ }),
+ _extends: createKeyword("extends", {
+ beforeExpr
+ }),
+ _export: createKeyword("export"),
+ _import: createKeyword("import", {
+ startsExpr
+ }),
+ _null: createKeyword("null", {
+ startsExpr
+ }),
+ _true: createKeyword("true", {
+ startsExpr
+ }),
+ _false: createKeyword("false", {
+ startsExpr
+ }),
+ _typeof: createKeyword("typeof", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _void: createKeyword("void", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _delete: createKeyword("delete", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _do: createKeyword("do", {
+ isLoop,
+ beforeExpr
+ }),
+ _for: createKeyword("for", {
+ isLoop
+ }),
+ _while: createKeyword("while", {
+ isLoop
+ }),
+ _as: createKeywordLike("as", {
+ startsExpr
+ }),
+ _assert: createKeywordLike("assert", {
+ startsExpr
+ }),
+ _async: createKeywordLike("async", {
+ startsExpr
+ }),
+ _await: createKeywordLike("await", {
+ startsExpr
+ }),
+ _defer: createKeywordLike("defer", {
+ startsExpr
+ }),
+ _from: createKeywordLike("from", {
+ startsExpr
+ }),
+ _get: createKeywordLike("get", {
+ startsExpr
+ }),
+ _let: createKeywordLike("let", {
+ startsExpr
+ }),
+ _meta: createKeywordLike("meta", {
+ startsExpr
+ }),
+ _of: createKeywordLike("of", {
+ startsExpr
+ }),
+ _sent: createKeywordLike("sent", {
+ startsExpr
+ }),
+ _set: createKeywordLike("set", {
+ startsExpr
+ }),
+ _source: createKeywordLike("source", {
+ startsExpr
+ }),
+ _static: createKeywordLike("static", {
+ startsExpr
+ }),
+ _using: createKeywordLike("using", {
+ startsExpr
+ }),
+ _yield: createKeywordLike("yield", {
+ startsExpr
+ }),
+ _asserts: createKeywordLike("asserts", {
+ startsExpr
+ }),
+ _checks: createKeywordLike("checks", {
+ startsExpr
+ }),
+ _exports: createKeywordLike("exports", {
+ startsExpr
+ }),
+ _global: createKeywordLike("global", {
+ startsExpr
+ }),
+ _implements: createKeywordLike("implements", {
+ startsExpr
+ }),
+ _intrinsic: createKeywordLike("intrinsic", {
+ startsExpr
+ }),
+ _infer: createKeywordLike("infer", {
+ startsExpr
+ }),
+ _is: createKeywordLike("is", {
+ startsExpr
+ }),
+ _mixins: createKeywordLike("mixins", {
+ startsExpr
+ }),
+ _proto: createKeywordLike("proto", {
+ startsExpr
+ }),
+ _require: createKeywordLike("require", {
+ startsExpr
+ }),
+ _satisfies: createKeywordLike("satisfies", {
+ startsExpr
+ }),
+ _keyof: createKeywordLike("keyof", {
+ startsExpr
+ }),
+ _readonly: createKeywordLike("readonly", {
+ startsExpr
+ }),
+ _unique: createKeywordLike("unique", {
+ startsExpr
+ }),
+ _abstract: createKeywordLike("abstract", {
+ startsExpr
+ }),
+ _declare: createKeywordLike("declare", {
+ startsExpr
+ }),
+ _enum: createKeywordLike("enum", {
+ startsExpr
+ }),
+ _module: createKeywordLike("module", {
+ startsExpr
+ }),
+ _namespace: createKeywordLike("namespace", {
+ startsExpr
+ }),
+ _interface: createKeywordLike("interface", {
+ startsExpr
+ }),
+ _type: createKeywordLike("type", {
+ startsExpr
+ }),
+ _opaque: createKeywordLike("opaque", {
+ startsExpr
+ }),
+ name: createToken("name", {
+ startsExpr
+ }),
+ placeholder: createToken("%%", {
+ startsExpr
+ }),
+ string: createToken("string", {
+ startsExpr
+ }),
+ num: createToken("num", {
+ startsExpr
+ }),
+ bigint: createToken("bigint", {
+ startsExpr
+ }),
+ decimal: createToken("decimal", {
+ startsExpr
+ }),
+ regexp: createToken("regexp", {
+ startsExpr
+ }),
+ privateName: createToken("#name", {
+ startsExpr
+ }),
+ eof: createToken("eof"),
+ jsxName: createToken("jsxName"),
+ jsxText: createToken("jsxText", {
+ beforeExpr
+ }),
+ jsxTagStart: createToken("jsxTagStart", {
+ startsExpr
+ }),
+ jsxTagEnd: createToken("jsxTagEnd")
+};
+function tokenIsIdentifier(token) {
+ return token >= 93 && token <= 133;
+}
+function tokenKeywordOrIdentifierIsKeyword(token) {
+ return token <= 92;
+}
+function tokenIsKeywordOrIdentifier(token) {
+ return token >= 58 && token <= 133;
+}
+function tokenIsLiteralPropertyName(token) {
+ return token >= 58 && token <= 137;
+}
+function tokenComesBeforeExpression(token) {
+ return tokenBeforeExprs[token];
+}
+function tokenCanStartExpression(token) {
+ return tokenStartsExprs[token];
+}
+function tokenIsAssignment(token) {
+ return token >= 29 && token <= 33;
+}
+function tokenIsFlowInterfaceOrTypeOrOpaque(token) {
+ return token >= 129 && token <= 131;
+}
+function tokenIsLoop(token) {
+ return token >= 90 && token <= 92;
+}
+function tokenIsKeyword(token) {
+ return token >= 58 && token <= 92;
+}
+function tokenIsOperator(token) {
+ return token >= 39 && token <= 59;
+}
+function tokenIsPostfix(token) {
+ return token === 34;
+}
+function tokenIsPrefix(token) {
+ return tokenPrefixes[token];
+}
+function tokenIsTSTypeOperator(token) {
+ return token >= 121 && token <= 123;
+}
+function tokenIsTSDeclarationStart(token) {
+ return token >= 124 && token <= 130;
+}
+function tokenLabelName(token) {
+ return tokenLabels[token];
+}
+function tokenOperatorPrecedence(token) {
+ return tokenBinops[token];
+}
+function tokenIsRightAssociative(token) {
+ return token === 57;
+}
+function tokenIsTemplate(token) {
+ return token >= 24 && token <= 25;
+}
+function getExportedToken(token) {
+ return tokenTypes[token];
+}
+tokenTypes[8].updateContext = context => {
+ context.pop();
+};
+tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {
+ context.push(types.brace);
+};
+tokenTypes[22].updateContext = context => {
+ if (context[context.length - 1] === types.template) {
+ context.pop();
+ } else {
+ context.push(types.template);
+ }
+};
+tokenTypes[143].updateContext = context => {
+ context.push(types.j_expr, types.j_oTag);
+};
+let 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-\u088f\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\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\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-\ua7dc\ua7f1-\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";
+let nonASCIIidentifierChars = "\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-\u1add\u1ae0-\u1aeb\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";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const 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, 7, 25, 39, 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, 5, 57, 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, 24, 43, 261, 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, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 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, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 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, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];
+const 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, 78, 5, 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, 199, 7, 137, 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, 55, 9, 266, 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, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
+ }
+ return false;
+}
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes);
+}
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
+}
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
+}
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+}
+function isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
+}
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
+}
+function isKeyword(word) {
+ return keywords.has(word);
+}
+function isIteratorStart(current, next, next2) {
+ return current === 64 && next === 64 && isIdentifierStart(next2);
+}
+const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]);
+function canBeReservedWord(word) {
+ return reservedWordLikeSet.has(word);
+}
+class Scope {
+ constructor(flags) {
+ this.flags = 0;
+ this.names = new Map();
+ this.firstLexicalName = "";
+ this.flags = flags;
+ }
+}
+class ScopeHandler {
+ constructor(parser, inModule) {
+ this.parser = void 0;
+ this.scopeStack = [];
+ this.inModule = void 0;
+ this.undefinedExports = new Map();
+ this.parser = parser;
+ this.inModule = inModule;
+ }
+ get inTopLevel() {
+ return (this.currentScope().flags & 1) > 0;
+ }
+ get inFunction() {
+ return (this.currentVarScopeFlags() & 2) > 0;
+ }
+ get allowSuper() {
+ return (this.currentThisScopeFlags() & 16) > 0;
+ }
+ get allowDirectSuper() {
+ return (this.currentThisScopeFlags() & 32) > 0;
+ }
+ get allowNewTarget() {
+ return (this.currentThisScopeFlags() & 512) > 0;
+ }
+ get inClass() {
+ return (this.currentThisScopeFlags() & 64) > 0;
+ }
+ get inClassAndNotInNonArrowFunction() {
+ const flags = this.currentThisScopeFlags();
+ return (flags & 64) > 0 && (flags & 2) === 0;
+ }
+ get inStaticBlock() {
+ for (let i = this.scopeStack.length - 1;; i--) {
+ const {
+ flags
+ } = this.scopeStack[i];
+ if (flags & 128) {
+ return true;
+ }
+ if (flags & (1667 | 64)) {
+ return false;
+ }
+ }
+ }
+ get inNonArrowFunction() {
+ return (this.currentThisScopeFlags() & 2) > 0;
+ }
+ get inBareCaseStatement() {
+ return (this.currentScope().flags & 256) > 0;
+ }
+ get treatFunctionsAsVar() {
+ return this.treatFunctionsAsVarInScope(this.currentScope());
+ }
+ createScope(flags) {
+ return new Scope(flags);
+ }
+ enter(flags) {
+ this.scopeStack.push(this.createScope(flags));
+ }
+ exit() {
+ const scope = this.scopeStack.pop();
+ return scope.flags;
+ }
+ treatFunctionsAsVarInScope(scope) {
+ return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1);
+ }
+ declareName(name, bindingType, loc) {
+ let scope = this.currentScope();
+ if (bindingType & 8 || bindingType & 16) {
+ this.checkRedeclarationInScope(scope, name, bindingType, loc);
+ let type = scope.names.get(name) || 0;
+ if (bindingType & 16) {
+ type = type | 4;
+ } else {
+ if (!scope.firstLexicalName) {
+ scope.firstLexicalName = name;
+ }
+ type = type | 2;
+ }
+ scope.names.set(name, type);
+ if (bindingType & 8) {
+ this.maybeExportDefined(scope, name);
+ }
+ } else if (bindingType & 4) {
+ for (let i = this.scopeStack.length - 1; i >= 0; --i) {
+ scope = this.scopeStack[i];
+ this.checkRedeclarationInScope(scope, name, bindingType, loc);
+ scope.names.set(name, (scope.names.get(name) || 0) | 1);
+ this.maybeExportDefined(scope, name);
+ if (scope.flags & 1667) break;
+ }
+ }
+ if (this.parser.inModule && scope.flags & 1) {
+ this.undefinedExports.delete(name);
+ }
+ }
+ maybeExportDefined(scope, name) {
+ if (this.parser.inModule && scope.flags & 1) {
+ this.undefinedExports.delete(name);
+ }
+ }
+ checkRedeclarationInScope(scope, name, bindingType, loc) {
+ if (this.isRedeclaredInScope(scope, name, bindingType)) {
+ this.parser.raise(Errors.VarRedeclaration, loc, {
+ identifierName: name
+ });
+ }
+ }
+ isRedeclaredInScope(scope, name, bindingType) {
+ if (!(bindingType & 1)) return false;
+ if (bindingType & 8) {
+ return scope.names.has(name);
+ }
+ const type = scope.names.get(name) || 0;
+ if (bindingType & 16) {
+ return (type & 2) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & 1) > 0;
+ }
+ return (type & 2) > 0 && !(scope.flags & 8 && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & 4) > 0;
+ }
+ checkLocalExport(id) {
+ const {
+ name
+ } = id;
+ const topLevelScope = this.scopeStack[0];
+ if (!topLevelScope.names.has(name)) {
+ this.undefinedExports.set(name, id.loc.start);
+ }
+ }
+ currentScope() {
+ return this.scopeStack[this.scopeStack.length - 1];
+ }
+ currentVarScopeFlags() {
+ for (let i = this.scopeStack.length - 1;; i--) {
+ const {
+ flags
+ } = this.scopeStack[i];
+ if (flags & 1667) {
+ return flags;
+ }
+ }
+ }
+ currentThisScopeFlags() {
+ for (let i = this.scopeStack.length - 1;; i--) {
+ const {
+ flags
+ } = this.scopeStack[i];
+ if (flags & (1667 | 64) && !(flags & 4)) {
+ return flags;
+ }
+ }
+ }
+}
+class FlowScope extends Scope {
+ constructor(...args) {
+ super(...args);
+ this.declareFunctions = new Set();
+ }
+}
+class FlowScopeHandler extends ScopeHandler {
+ createScope(flags) {
+ return new FlowScope(flags);
+ }
+ declareName(name, bindingType, loc) {
+ const scope = this.currentScope();
+ if (bindingType & 2048) {
+ this.checkRedeclarationInScope(scope, name, bindingType, loc);
+ this.maybeExportDefined(scope, name);
+ scope.declareFunctions.add(name);
+ return;
+ }
+ super.declareName(name, bindingType, loc);
+ }
+ isRedeclaredInScope(scope, name, bindingType) {
+ if (super.isRedeclaredInScope(scope, name, bindingType)) return true;
+ if (bindingType & 2048 && !scope.declareFunctions.has(name)) {
+ const type = scope.names.get(name);
+ return (type & 4) > 0 || (type & 2) > 0;
+ }
+ return false;
+ }
+ checkLocalExport(id) {
+ if (!this.scopeStack[0].declareFunctions.has(id.name)) {
+ super.checkLocalExport(id);
+ }
+ }
+}
+const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]);
+const FlowErrors = ParseErrorEnum`flow`({
+ AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.",
+ AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.",
+ AssignReservedType: ({
+ reservedType
+ }) => `Cannot overwrite reserved type ${reservedType}.`,
+ DeclareClassElement: "The `declare` modifier can only appear on class fields.",
+ DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.",
+ DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.",
+ EnumBooleanMemberNotInitialized: ({
+ memberName,
+ enumName
+ }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`,
+ EnumDuplicateMemberName: ({
+ memberName,
+ enumName
+ }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`,
+ EnumInconsistentMemberValues: ({
+ enumName
+ }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,
+ EnumInvalidExplicitType: ({
+ invalidEnumType,
+ enumName
+ }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`,
+ EnumInvalidExplicitTypeUnknownSupplied: ({
+ enumName
+ }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`,
+ EnumInvalidMemberInitializerPrimaryType: ({
+ enumName,
+ memberName,
+ explicitType
+ }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`,
+ EnumInvalidMemberInitializerSymbolType: ({
+ enumName,
+ memberName
+ }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`,
+ EnumInvalidMemberInitializerUnknownType: ({
+ enumName,
+ memberName
+ }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`,
+ EnumInvalidMemberName: ({
+ enumName,
+ memberName,
+ suggestion
+ }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`,
+ EnumNumberMemberNotInitialized: ({
+ enumName,
+ memberName
+ }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`,
+ EnumStringMemberInconsistentlyInitialized: ({
+ enumName
+ }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`,
+ GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.",
+ ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.",
+ ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.",
+ InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.",
+ InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.",
+ InexactVariance: "Explicit inexact syntax cannot have variance.",
+ InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.",
+ MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.",
+ NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.",
+ NestedFlowComment: "Cannot have a flow comment inside another flow comment.",
+ PatternIsOptional: Object.assign({
+ message: "A binding pattern parameter cannot be optional in an implementation signature."
+ }, {
+ reasonCode: "OptionalBindingPattern"
+ }),
+ SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.",
+ SpreadVariance: "Spread properties cannot have variance.",
+ ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.",
+ ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.",
+ ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.",
+ ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.",
+ ThisParamNoDefault: "The `this` parameter may not have a default value.",
+ TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
+ TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.",
+ UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.",
+ UnexpectedReservedType: ({
+ reservedType
+ }) => `Unexpected reserved type ${reservedType}.`,
+ UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.",
+ UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.",
+ UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.",
+ UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".',
+ UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.",
+ UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.",
+ UnsupportedDeclareExportKind: ({
+ unsupportedExportKind,
+ suggestion
+ }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`,
+ UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.",
+ UnterminatedFlowComment: "Unterminated flow-comment."
+});
+function isEsModuleType(bodyElement) {
+ return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration");
+}
+function hasTypeImportKind(node) {
+ return node.importKind === "type" || node.importKind === "typeof";
+}
+const exportSuggestions = {
+ const: "declare export var",
+ let: "declare export var",
+ type: "export type",
+ interface: "export interface"
+};
+function partition(list, test) {
+ const list1 = [];
+ const list2 = [];
+ for (let i = 0; i < list.length; i++) {
+ (test(list[i], i, list) ? list1 : list2).push(list[i]);
+ }
+ return [list1, list2];
+}
+const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/;
+var flow = superClass => class FlowParserMixin extends superClass {
+ constructor(...args) {
+ super(...args);
+ this.flowPragma = undefined;
+ }
+ getScopeHandler() {
+ return FlowScopeHandler;
+ }
+ shouldParseTypes() {
+ return this.getPluginOption("flow", "all") || this.flowPragma === "flow";
+ }
+ finishToken(type, val) {
+ if (type !== 134 && type !== 13 && type !== 28) {
+ if (this.flowPragma === undefined) {
+ this.flowPragma = null;
+ }
+ }
+ super.finishToken(type, val);
+ }
+ addComment(comment) {
+ if (this.flowPragma === undefined) {
+ const matches = FLOW_PRAGMA_REGEX.exec(comment.value);
+ if (!matches) ;else if (matches[1] === "flow") {
+ this.flowPragma = "flow";
+ } else if (matches[1] === "noflow") {
+ this.flowPragma = "noflow";
+ } else {
+ throw new Error("Unexpected flow pragma");
+ }
+ }
+ super.addComment(comment);
+ }
+ flowParseTypeInitialiser(tok) {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ this.expect(tok || 14);
+ const type = this.flowParseType();
+ this.state.inType = oldInType;
+ return type;
+ }
+ flowParsePredicate() {
+ const node = this.startNode();
+ const moduloLoc = this.state.startLoc;
+ this.next();
+ this.expectContextual(110);
+ if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {
+ this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);
+ }
+ if (this.eat(10)) {
+ node.value = super.parseExpression();
+ this.expect(11);
+ return this.finishNode(node, "DeclaredPredicate");
+ } else {
+ return this.finishNode(node, "InferredPredicate");
+ }
+ }
+ flowParseTypeAndPredicateInitialiser() {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ this.expect(14);
+ let type = null;
+ let predicate = null;
+ if (this.match(54)) {
+ this.state.inType = oldInType;
+ predicate = this.flowParsePredicate();
+ } else {
+ type = this.flowParseType();
+ this.state.inType = oldInType;
+ if (this.match(54)) {
+ predicate = this.flowParsePredicate();
+ }
+ }
+ return [type, predicate];
+ }
+ flowParseDeclareClass(node) {
+ this.next();
+ this.flowParseInterfaceish(node, true);
+ return this.finishNode(node, "DeclareClass");
+ }
+ flowParseDeclareFunction(node) {
+ this.next();
+ const id = node.id = this.parseIdentifier();
+ const typeNode = this.startNode();
+ const typeContainer = this.startNode();
+ if (this.match(47)) {
+ typeNode.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ typeNode.typeParameters = null;
+ }
+ this.expect(10);
+ const tmp = this.flowParseFunctionTypeParams();
+ typeNode.params = tmp.params;
+ typeNode.rest = tmp.rest;
+ typeNode.this = tmp._this;
+ this.expect(11);
+ [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
+ typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");
+ id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");
+ this.resetEndLocation(id);
+ this.semicolon();
+ this.scope.declareName(node.id.name, 2048, node.id.loc.start);
+ return this.finishNode(node, "DeclareFunction");
+ }
+ flowParseDeclare(node, insideModule) {
+ if (this.match(80)) {
+ return this.flowParseDeclareClass(node);
+ } else if (this.match(68)) {
+ return this.flowParseDeclareFunction(node);
+ } else if (this.match(74)) {
+ return this.flowParseDeclareVariable(node);
+ } else if (this.eatContextual(127)) {
+ if (this.match(16)) {
+ return this.flowParseDeclareModuleExports(node);
+ } else {
+ if (insideModule) {
+ this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc);
+ }
+ return this.flowParseDeclareModule(node);
+ }
+ } else if (this.isContextual(130)) {
+ return this.flowParseDeclareTypeAlias(node);
+ } else if (this.isContextual(131)) {
+ return this.flowParseDeclareOpaqueType(node);
+ } else if (this.isContextual(129)) {
+ return this.flowParseDeclareInterface(node);
+ } else if (this.match(82)) {
+ return this.flowParseDeclareExportDeclaration(node, insideModule);
+ }
+ throw this.unexpected();
+ }
+ flowParseDeclareVariable(node) {
+ this.next();
+ node.id = this.flowParseTypeAnnotatableIdentifier(true);
+ this.scope.declareName(node.id.name, 5, node.id.loc.start);
+ this.semicolon();
+ return this.finishNode(node, "DeclareVariable");
+ }
+ flowParseDeclareModule(node) {
+ this.scope.enter(0);
+ if (this.match(134)) {
+ node.id = super.parseExprAtom();
+ } else {
+ node.id = this.parseIdentifier();
+ }
+ const bodyNode = node.body = this.startNode();
+ const body = bodyNode.body = [];
+ this.expect(5);
+ while (!this.match(8)) {
+ const bodyNode = this.startNode();
+ if (this.match(83)) {
+ this.next();
+ if (!this.isContextual(130) && !this.match(87)) {
+ this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc);
+ }
+ body.push(super.parseImport(bodyNode));
+ } else {
+ this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule);
+ body.push(this.flowParseDeclare(bodyNode, true));
+ }
+ }
+ this.scope.exit();
+ this.expect(8);
+ this.finishNode(bodyNode, "BlockStatement");
+ let kind = null;
+ let hasModuleExport = false;
+ body.forEach(bodyElement => {
+ if (isEsModuleType(bodyElement)) {
+ if (kind === "CommonJS") {
+ this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);
+ }
+ kind = "ES";
+ } else if (bodyElement.type === "DeclareModuleExports") {
+ if (hasModuleExport) {
+ this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);
+ }
+ if (kind === "ES") {
+ this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);
+ }
+ kind = "CommonJS";
+ hasModuleExport = true;
+ }
+ });
+ node.kind = kind || "CommonJS";
+ return this.finishNode(node, "DeclareModule");
+ }
+ flowParseDeclareExportDeclaration(node, insideModule) {
+ this.expect(82);
+ if (this.eat(65)) {
+ if (this.match(68) || this.match(80)) {
+ node.declaration = this.flowParseDeclare(this.startNode());
+ } else {
+ node.declaration = this.flowParseType();
+ this.semicolon();
+ }
+ node.default = true;
+ return this.finishNode(node, "DeclareExportDeclaration");
+ } else {
+ if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) {
+ const label = this.state.value;
+ throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, {
+ unsupportedExportKind: label,
+ suggestion: exportSuggestions[label]
+ });
+ }
+ if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) {
+ node.declaration = this.flowParseDeclare(this.startNode());
+ node.default = false;
+ return this.finishNode(node, "DeclareExportDeclaration");
+ } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) {
+ node = this.parseExport(node, null);
+ if (node.type === "ExportNamedDeclaration") {
+ node.default = false;
+ delete node.exportKind;
+ return this.castNodeTo(node, "DeclareExportDeclaration");
+ } else {
+ return this.castNodeTo(node, "DeclareExportAllDeclaration");
+ }
+ }
+ }
+ throw this.unexpected();
+ }
+ flowParseDeclareModuleExports(node) {
+ this.next();
+ this.expectContextual(111);
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ this.semicolon();
+ return this.finishNode(node, "DeclareModuleExports");
+ }
+ flowParseDeclareTypeAlias(node) {
+ this.next();
+ const finished = this.flowParseTypeAlias(node);
+ this.castNodeTo(finished, "DeclareTypeAlias");
+ return finished;
+ }
+ flowParseDeclareOpaqueType(node) {
+ this.next();
+ const finished = this.flowParseOpaqueType(node, true);
+ this.castNodeTo(finished, "DeclareOpaqueType");
+ return finished;
+ }
+ flowParseDeclareInterface(node) {
+ this.next();
+ this.flowParseInterfaceish(node, false);
+ return this.finishNode(node, "DeclareInterface");
+ }
+ flowParseInterfaceish(node, isClass) {
+ node.id = this.flowParseRestrictedIdentifier(!isClass, true);
+ this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+ node.extends = [];
+ if (this.eat(81)) {
+ do {
+ node.extends.push(this.flowParseInterfaceExtends());
+ } while (!isClass && this.eat(12));
+ }
+ if (isClass) {
+ node.implements = [];
+ node.mixins = [];
+ if (this.eatContextual(117)) {
+ do {
+ node.mixins.push(this.flowParseInterfaceExtends());
+ } while (this.eat(12));
+ }
+ if (this.eatContextual(113)) {
+ do {
+ node.implements.push(this.flowParseInterfaceExtends());
+ } while (this.eat(12));
+ }
+ }
+ node.body = this.flowParseObjectType({
+ allowStatic: isClass,
+ allowExact: false,
+ allowSpread: false,
+ allowProto: isClass,
+ allowInexact: false
+ });
+ }
+ flowParseInterfaceExtends() {
+ const node = this.startNode();
+ node.id = this.flowParseQualifiedTypeIdentifier();
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ } else {
+ node.typeParameters = null;
+ }
+ return this.finishNode(node, "InterfaceExtends");
+ }
+ flowParseInterface(node) {
+ this.flowParseInterfaceish(node, false);
+ return this.finishNode(node, "InterfaceDeclaration");
+ }
+ checkNotUnderscore(word) {
+ if (word === "_") {
+ this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc);
+ }
+ }
+ checkReservedType(word, startLoc, declaration) {
+ if (!reservedTypes.has(word)) return;
+ this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, {
+ reservedType: word
+ });
+ }
+ flowParseRestrictedIdentifier(liberal, declaration) {
+ this.checkReservedType(this.state.value, this.state.startLoc, declaration);
+ return this.parseIdentifier(liberal);
+ }
+ flowParseTypeAlias(node) {
+ node.id = this.flowParseRestrictedIdentifier(false, true);
+ this.scope.declareName(node.id.name, 8201, node.id.loc.start);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+ node.right = this.flowParseTypeInitialiser(29);
+ this.semicolon();
+ return this.finishNode(node, "TypeAlias");
+ }
+ flowParseOpaqueType(node, declare) {
+ this.expectContextual(130);
+ node.id = this.flowParseRestrictedIdentifier(true, true);
+ this.scope.declareName(node.id.name, 8201, node.id.loc.start);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+ node.supertype = null;
+ if (this.match(14)) {
+ node.supertype = this.flowParseTypeInitialiser(14);
+ }
+ node.impltype = null;
+ if (!declare) {
+ node.impltype = this.flowParseTypeInitialiser(29);
+ }
+ this.semicolon();
+ return this.finishNode(node, "OpaqueType");
+ }
+ flowParseTypeParameter(requireDefault = false) {
+ const nodeStartLoc = this.state.startLoc;
+ const node = this.startNode();
+ const variance = this.flowParseVariance();
+ const ident = this.flowParseTypeAnnotatableIdentifier();
+ node.name = ident.name;
+ node.variance = variance;
+ node.bound = ident.typeAnnotation;
+ if (this.match(29)) {
+ this.eat(29);
+ node.default = this.flowParseType();
+ } else {
+ if (requireDefault) {
+ this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);
+ }
+ }
+ return this.finishNode(node, "TypeParameter");
+ }
+ flowParseTypeParameterDeclaration() {
+ const oldInType = this.state.inType;
+ const node = this.startNode();
+ node.params = [];
+ this.state.inType = true;
+ if (this.match(47) || this.match(143)) {
+ this.next();
+ } else {
+ this.unexpected();
+ }
+ let defaultRequired = false;
+ do {
+ const typeParameter = this.flowParseTypeParameter(defaultRequired);
+ node.params.push(typeParameter);
+ if (typeParameter.default) {
+ defaultRequired = true;
+ }
+ if (!this.match(48)) {
+ this.expect(12);
+ }
+ } while (!this.match(48));
+ this.expect(48);
+ this.state.inType = oldInType;
+ return this.finishNode(node, "TypeParameterDeclaration");
+ }
+ flowInTopLevelContext(cb) {
+ if (this.curContext() !== types.brace) {
+ const oldContext = this.state.context;
+ this.state.context = [oldContext[0]];
+ try {
+ return cb();
+ } finally {
+ this.state.context = oldContext;
+ }
+ } else {
+ return cb();
+ }
+ }
+ flowParseTypeParameterInstantiationInExpression() {
+ if (this.reScan_lt() !== 47) return;
+ return this.flowParseTypeParameterInstantiation();
+ }
+ flowParseTypeParameterInstantiation() {
+ const node = this.startNode();
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ node.params = [];
+ this.flowInTopLevelContext(() => {
+ this.expect(47);
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ this.state.noAnonFunctionType = false;
+ while (!this.match(48)) {
+ node.params.push(this.flowParseType());
+ if (!this.match(48)) {
+ this.expect(12);
+ }
+ }
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ });
+ this.state.inType = oldInType;
+ if (!this.state.inType && this.curContext() === types.brace) {
+ this.reScan_lt_gt();
+ }
+ this.expect(48);
+ return this.finishNode(node, "TypeParameterInstantiation");
+ }
+ flowParseTypeParameterInstantiationCallOrNew() {
+ if (this.reScan_lt() !== 47) return null;
+ const node = this.startNode();
+ const oldInType = this.state.inType;
+ node.params = [];
+ this.state.inType = true;
+ this.expect(47);
+ while (!this.match(48)) {
+ node.params.push(this.flowParseTypeOrImplicitInstantiation());
+ if (!this.match(48)) {
+ this.expect(12);
+ }
+ }
+ this.expect(48);
+ this.state.inType = oldInType;
+ return this.finishNode(node, "TypeParameterInstantiation");
+ }
+ flowParseInterfaceType() {
+ const node = this.startNode();
+ this.expectContextual(129);
+ node.extends = [];
+ if (this.eat(81)) {
+ do {
+ node.extends.push(this.flowParseInterfaceExtends());
+ } while (this.eat(12));
+ }
+ node.body = this.flowParseObjectType({
+ allowStatic: false,
+ allowExact: false,
+ allowSpread: false,
+ allowProto: false,
+ allowInexact: false
+ });
+ return this.finishNode(node, "InterfaceTypeAnnotation");
+ }
+ flowParseObjectPropertyKey() {
+ return this.match(135) || this.match(134) ? super.parseExprAtom() : this.parseIdentifier(true);
+ }
+ flowParseObjectTypeIndexer(node, isStatic, variance) {
+ node.static = isStatic;
+ if (this.lookahead().type === 14) {
+ node.id = this.flowParseObjectPropertyKey();
+ node.key = this.flowParseTypeInitialiser();
+ } else {
+ node.id = null;
+ node.key = this.flowParseType();
+ }
+ this.expect(3);
+ node.value = this.flowParseTypeInitialiser();
+ node.variance = variance;
+ return this.finishNode(node, "ObjectTypeIndexer");
+ }
+ flowParseObjectTypeInternalSlot(node, isStatic) {
+ node.static = isStatic;
+ node.id = this.flowParseObjectPropertyKey();
+ this.expect(3);
+ this.expect(3);
+ if (this.match(47) || this.match(10)) {
+ node.method = true;
+ node.optional = false;
+ node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));
+ } else {
+ node.method = false;
+ if (this.eat(17)) {
+ node.optional = true;
+ }
+ node.value = this.flowParseTypeInitialiser();
+ }
+ return this.finishNode(node, "ObjectTypeInternalSlot");
+ }
+ flowParseObjectTypeMethodish(node) {
+ node.params = [];
+ node.rest = null;
+ node.typeParameters = null;
+ node.this = null;
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ this.expect(10);
+ if (this.match(78)) {
+ node.this = this.flowParseFunctionTypeParam(true);
+ node.this.name = null;
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+ while (!this.match(11) && !this.match(21)) {
+ node.params.push(this.flowParseFunctionTypeParam(false));
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+ if (this.eat(21)) {
+ node.rest = this.flowParseFunctionTypeParam(false);
+ }
+ this.expect(11);
+ node.returnType = this.flowParseTypeInitialiser();
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+ flowParseObjectTypeCallProperty(node, isStatic) {
+ const valueNode = this.startNode();
+ node.static = isStatic;
+ node.value = this.flowParseObjectTypeMethodish(valueNode);
+ return this.finishNode(node, "ObjectTypeCallProperty");
+ }
+ flowParseObjectType({
+ allowStatic,
+ allowExact,
+ allowSpread,
+ allowProto,
+ allowInexact
+ }) {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ const nodeStart = this.startNode();
+ nodeStart.callProperties = [];
+ nodeStart.properties = [];
+ nodeStart.indexers = [];
+ nodeStart.internalSlots = [];
+ let endDelim;
+ let exact;
+ let inexact = false;
+ if (allowExact && this.match(6)) {
+ this.expect(6);
+ endDelim = 9;
+ exact = true;
+ } else {
+ this.expect(5);
+ endDelim = 8;
+ exact = false;
+ }
+ nodeStart.exact = exact;
+ while (!this.match(endDelim)) {
+ let isStatic = false;
+ let protoStartLoc = null;
+ let inexactStartLoc = null;
+ const node = this.startNode();
+ if (allowProto && this.isContextual(118)) {
+ const lookahead = this.lookahead();
+ if (lookahead.type !== 14 && lookahead.type !== 17) {
+ this.next();
+ protoStartLoc = this.state.startLoc;
+ allowStatic = false;
+ }
+ }
+ if (allowStatic && this.isContextual(106)) {
+ const lookahead = this.lookahead();
+ if (lookahead.type !== 14 && lookahead.type !== 17) {
+ this.next();
+ isStatic = true;
+ }
+ }
+ const variance = this.flowParseVariance();
+ if (this.eat(0)) {
+ if (protoStartLoc != null) {
+ this.unexpected(protoStartLoc);
+ }
+ if (this.eat(0)) {
+ if (variance) {
+ this.unexpected(variance.loc.start);
+ }
+ nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));
+ } else {
+ nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));
+ }
+ } else if (this.match(10) || this.match(47)) {
+ if (protoStartLoc != null) {
+ this.unexpected(protoStartLoc);
+ }
+ if (variance) {
+ this.unexpected(variance.loc.start);
+ }
+ nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));
+ } else {
+ let kind = "init";
+ if (this.isContextual(99) || this.isContextual(104)) {
+ const lookahead = this.lookahead();
+ if (tokenIsLiteralPropertyName(lookahead.type)) {
+ kind = this.state.value;
+ this.next();
+ }
+ }
+ const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);
+ if (propOrInexact === null) {
+ inexact = true;
+ inexactStartLoc = this.state.lastTokStartLoc;
+ } else {
+ nodeStart.properties.push(propOrInexact);
+ }
+ }
+ this.flowObjectTypeSemicolon();
+ if (inexactStartLoc && !this.match(8) && !this.match(9)) {
+ this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc);
+ }
+ }
+ this.expect(endDelim);
+ if (allowSpread) {
+ nodeStart.inexact = inexact;
+ }
+ const out = this.finishNode(nodeStart, "ObjectTypeAnnotation");
+ this.state.inType = oldInType;
+ return out;
+ }
+ flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) {
+ if (this.eat(21)) {
+ const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);
+ if (isInexactToken) {
+ if (!allowSpread) {
+ this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc);
+ } else if (!allowInexact) {
+ this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc);
+ }
+ if (variance) {
+ this.raise(FlowErrors.InexactVariance, variance);
+ }
+ return null;
+ }
+ if (!allowSpread) {
+ this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc);
+ }
+ if (protoStartLoc != null) {
+ this.unexpected(protoStartLoc);
+ }
+ if (variance) {
+ this.raise(FlowErrors.SpreadVariance, variance);
+ }
+ node.argument = this.flowParseType();
+ return this.finishNode(node, "ObjectTypeSpreadProperty");
+ } else {
+ node.key = this.flowParseObjectPropertyKey();
+ node.static = isStatic;
+ node.proto = protoStartLoc != null;
+ node.kind = kind;
+ let optional = false;
+ if (this.match(47) || this.match(10)) {
+ node.method = true;
+ if (protoStartLoc != null) {
+ this.unexpected(protoStartLoc);
+ }
+ if (variance) {
+ this.unexpected(variance.loc.start);
+ }
+ node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));
+ if (kind === "get" || kind === "set") {
+ this.flowCheckGetterSetterParams(node);
+ }
+ if (!allowSpread && node.key.name === "constructor" && node.value.this) {
+ this.raise(FlowErrors.ThisParamBannedInConstructor, node.value.this);
+ }
+ } else {
+ if (kind !== "init") this.unexpected();
+ node.method = false;
+ if (this.eat(17)) {
+ optional = true;
+ }
+ node.value = this.flowParseTypeInitialiser();
+ node.variance = variance;
+ }
+ node.optional = optional;
+ return this.finishNode(node, "ObjectTypeProperty");
+ }
+ }
+ flowCheckGetterSetterParams(property) {
+ const paramCount = property.kind === "get" ? 0 : 1;
+ const length = property.value.params.length + (property.value.rest ? 1 : 0);
+ if (property.value.this) {
+ this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, property.value.this);
+ }
+ if (length !== paramCount) {
+ this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, property);
+ }
+ if (property.kind === "set" && property.value.rest) {
+ this.raise(Errors.BadSetterRestParameter, property);
+ }
+ }
+ flowObjectTypeSemicolon() {
+ if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {
+ this.unexpected();
+ }
+ }
+ flowParseQualifiedTypeIdentifier(startLoc, id) {
+ startLoc != null ? startLoc : startLoc = this.state.startLoc;
+ let node = id || this.flowParseRestrictedIdentifier(true);
+ while (this.eat(16)) {
+ const node2 = this.startNodeAt(startLoc);
+ node2.qualification = node;
+ node2.id = this.flowParseRestrictedIdentifier(true);
+ node = this.finishNode(node2, "QualifiedTypeIdentifier");
+ }
+ return node;
+ }
+ flowParseGenericType(startLoc, id) {
+ const node = this.startNodeAt(startLoc);
+ node.typeParameters = null;
+ node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ }
+ return this.finishNode(node, "GenericTypeAnnotation");
+ }
+ flowParseTypeofType() {
+ const node = this.startNode();
+ this.expect(87);
+ node.argument = this.flowParsePrimaryType();
+ return this.finishNode(node, "TypeofTypeAnnotation");
+ }
+ flowParseTupleType() {
+ const node = this.startNode();
+ node.types = [];
+ this.expect(0);
+ while (this.state.pos < this.length && !this.match(3)) {
+ node.types.push(this.flowParseType());
+ if (this.match(3)) break;
+ this.expect(12);
+ }
+ this.expect(3);
+ return this.finishNode(node, "TupleTypeAnnotation");
+ }
+ flowParseFunctionTypeParam(first) {
+ let name = null;
+ let optional = false;
+ let typeAnnotation = null;
+ const node = this.startNode();
+ const lh = this.lookahead();
+ const isThis = this.state.type === 78;
+ if (lh.type === 14 || lh.type === 17) {
+ if (isThis && !first) {
+ this.raise(FlowErrors.ThisParamMustBeFirst, node);
+ }
+ name = this.parseIdentifier(isThis);
+ if (this.eat(17)) {
+ optional = true;
+ if (isThis) {
+ this.raise(FlowErrors.ThisParamMayNotBeOptional, node);
+ }
+ }
+ typeAnnotation = this.flowParseTypeInitialiser();
+ } else {
+ typeAnnotation = this.flowParseType();
+ }
+ node.name = name;
+ node.optional = optional;
+ node.typeAnnotation = typeAnnotation;
+ return this.finishNode(node, "FunctionTypeParam");
+ }
+ reinterpretTypeAsFunctionTypeParam(type) {
+ const node = this.startNodeAt(type.loc.start);
+ node.name = null;
+ node.optional = false;
+ node.typeAnnotation = type;
+ return this.finishNode(node, "FunctionTypeParam");
+ }
+ flowParseFunctionTypeParams(params = []) {
+ let rest = null;
+ let _this = null;
+ if (this.match(78)) {
+ _this = this.flowParseFunctionTypeParam(true);
+ _this.name = null;
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+ while (!this.match(11) && !this.match(21)) {
+ params.push(this.flowParseFunctionTypeParam(false));
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+ if (this.eat(21)) {
+ rest = this.flowParseFunctionTypeParam(false);
+ }
+ return {
+ params,
+ rest,
+ _this
+ };
+ }
+ flowIdentToTypeAnnotation(startLoc, node, id) {
+ switch (id.name) {
+ case "any":
+ return this.finishNode(node, "AnyTypeAnnotation");
+ case "bool":
+ case "boolean":
+ return this.finishNode(node, "BooleanTypeAnnotation");
+ case "mixed":
+ return this.finishNode(node, "MixedTypeAnnotation");
+ case "empty":
+ return this.finishNode(node, "EmptyTypeAnnotation");
+ case "number":
+ return this.finishNode(node, "NumberTypeAnnotation");
+ case "string":
+ return this.finishNode(node, "StringTypeAnnotation");
+ case "symbol":
+ return this.finishNode(node, "SymbolTypeAnnotation");
+ default:
+ this.checkNotUnderscore(id.name);
+ return this.flowParseGenericType(startLoc, id);
+ }
+ }
+ flowParsePrimaryType() {
+ const startLoc = this.state.startLoc;
+ const node = this.startNode();
+ let tmp;
+ let type;
+ let isGroupedType = false;
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ switch (this.state.type) {
+ case 5:
+ return this.flowParseObjectType({
+ allowStatic: false,
+ allowExact: false,
+ allowSpread: true,
+ allowProto: false,
+ allowInexact: true
+ });
+ case 6:
+ return this.flowParseObjectType({
+ allowStatic: false,
+ allowExact: true,
+ allowSpread: true,
+ allowProto: false,
+ allowInexact: false
+ });
+ case 0:
+ this.state.noAnonFunctionType = false;
+ type = this.flowParseTupleType();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ return type;
+ case 47:
+ {
+ const node = this.startNode();
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ this.expect(10);
+ tmp = this.flowParseFunctionTypeParams();
+ node.params = tmp.params;
+ node.rest = tmp.rest;
+ node.this = tmp._this;
+ this.expect(11);
+ this.expect(19);
+ node.returnType = this.flowParseType();
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+ case 10:
+ {
+ const node = this.startNode();
+ this.next();
+ if (!this.match(11) && !this.match(21)) {
+ if (tokenIsIdentifier(this.state.type) || this.match(78)) {
+ const token = this.lookahead().type;
+ isGroupedType = token !== 17 && token !== 14;
+ } else {
+ isGroupedType = true;
+ }
+ }
+ if (isGroupedType) {
+ this.state.noAnonFunctionType = false;
+ type = this.flowParseType();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {
+ this.expect(11);
+ return type;
+ } else {
+ this.eat(12);
+ }
+ }
+ if (type) {
+ tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);
+ } else {
+ tmp = this.flowParseFunctionTypeParams();
+ }
+ node.params = tmp.params;
+ node.rest = tmp.rest;
+ node.this = tmp._this;
+ this.expect(11);
+ this.expect(19);
+ node.returnType = this.flowParseType();
+ node.typeParameters = null;
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+ case 134:
+ return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation");
+ case 85:
+ case 86:
+ node.value = this.match(85);
+ this.next();
+ return this.finishNode(node, "BooleanLiteralTypeAnnotation");
+ case 53:
+ if (this.state.value === "-") {
+ this.next();
+ if (this.match(135)) {
+ return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node);
+ }
+ if (this.match(136)) {
+ return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node);
+ }
+ throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc);
+ }
+ throw this.unexpected();
+ case 135:
+ return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation");
+ case 136:
+ return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation");
+ case 88:
+ this.next();
+ return this.finishNode(node, "VoidTypeAnnotation");
+ case 84:
+ this.next();
+ return this.finishNode(node, "NullLiteralTypeAnnotation");
+ case 78:
+ this.next();
+ return this.finishNode(node, "ThisTypeAnnotation");
+ case 55:
+ this.next();
+ return this.finishNode(node, "ExistsTypeAnnotation");
+ case 87:
+ return this.flowParseTypeofType();
+ default:
+ if (tokenIsKeyword(this.state.type)) {
+ const label = tokenLabelName(this.state.type);
+ this.next();
+ return super.createIdentifier(node, label);
+ } else if (tokenIsIdentifier(this.state.type)) {
+ if (this.isContextual(129)) {
+ return this.flowParseInterfaceType();
+ }
+ return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier());
+ }
+ }
+ throw this.unexpected();
+ }
+ flowParsePostfixType() {
+ const startLoc = this.state.startLoc;
+ let type = this.flowParsePrimaryType();
+ let seenOptionalIndexedAccess = false;
+ while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {
+ const node = this.startNodeAt(startLoc);
+ const optional = this.eat(18);
+ seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;
+ this.expect(0);
+ if (!optional && this.match(3)) {
+ node.elementType = type;
+ this.next();
+ type = this.finishNode(node, "ArrayTypeAnnotation");
+ } else {
+ node.objectType = type;
+ node.indexType = this.flowParseType();
+ this.expect(3);
+ if (seenOptionalIndexedAccess) {
+ node.optional = optional;
+ type = this.finishNode(node, "OptionalIndexedAccessType");
+ } else {
+ type = this.finishNode(node, "IndexedAccessType");
+ }
+ }
+ }
+ return type;
+ }
+ flowParsePrefixType() {
+ const node = this.startNode();
+ if (this.eat(17)) {
+ node.typeAnnotation = this.flowParsePrefixType();
+ return this.finishNode(node, "NullableTypeAnnotation");
+ } else {
+ return this.flowParsePostfixType();
+ }
+ }
+ flowParseAnonFunctionWithoutParens() {
+ const param = this.flowParsePrefixType();
+ if (!this.state.noAnonFunctionType && this.eat(19)) {
+ const node = this.startNodeAt(param.loc.start);
+ node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];
+ node.rest = null;
+ node.this = null;
+ node.returnType = this.flowParseType();
+ node.typeParameters = null;
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+ return param;
+ }
+ flowParseIntersectionType() {
+ const node = this.startNode();
+ this.eat(45);
+ const type = this.flowParseAnonFunctionWithoutParens();
+ node.types = [type];
+ while (this.eat(45)) {
+ node.types.push(this.flowParseAnonFunctionWithoutParens());
+ }
+ return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation");
+ }
+ flowParseUnionType() {
+ const node = this.startNode();
+ this.eat(43);
+ const type = this.flowParseIntersectionType();
+ node.types = [type];
+ while (this.eat(43)) {
+ node.types.push(this.flowParseIntersectionType());
+ }
+ return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation");
+ }
+ flowParseType() {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ const type = this.flowParseUnionType();
+ this.state.inType = oldInType;
+ return type;
+ }
+ flowParseTypeOrImplicitInstantiation() {
+ if (this.state.type === 132 && this.state.value === "_") {
+ const startLoc = this.state.startLoc;
+ const node = this.parseIdentifier();
+ return this.flowParseGenericType(startLoc, node);
+ } else {
+ return this.flowParseType();
+ }
+ }
+ flowParseTypeAnnotation() {
+ const node = this.startNode();
+ node.typeAnnotation = this.flowParseTypeInitialiser();
+ return this.finishNode(node, "TypeAnnotation");
+ }
+ flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {
+ const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();
+ if (this.match(14)) {
+ ident.typeAnnotation = this.flowParseTypeAnnotation();
+ this.resetEndLocation(ident);
+ }
+ return ident;
+ }
+ typeCastToParameter(node) {
+ node.expression.typeAnnotation = node.typeAnnotation;
+ this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);
+ return node.expression;
+ }
+ flowParseVariance() {
+ let variance = null;
+ if (this.match(53)) {
+ variance = this.startNode();
+ if (this.state.value === "+") {
+ variance.kind = "plus";
+ } else {
+ variance.kind = "minus";
+ }
+ this.next();
+ return this.finishNode(variance, "Variance");
+ }
+ return variance;
+ }
+ parseFunctionBody(node, allowExpressionBody, isMethod = false) {
+ if (allowExpressionBody) {
+ this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));
+ return;
+ }
+ super.parseFunctionBody(node, false, isMethod);
+ }
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
+ if (this.match(14)) {
+ const typeNode = this.startNode();
+ [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
+ node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null;
+ }
+ return super.parseFunctionBodyAndFinish(node, type, isMethod);
+ }
+ parseStatementLike(flags) {
+ if (this.state.strict && this.isContextual(129)) {
+ const lookahead = this.lookahead();
+ if (tokenIsKeywordOrIdentifier(lookahead.type)) {
+ const node = this.startNode();
+ this.next();
+ return this.flowParseInterface(node);
+ }
+ } else if (this.isContextual(126)) {
+ const node = this.startNode();
+ this.next();
+ return this.flowParseEnumDeclaration(node);
+ }
+ const stmt = super.parseStatementLike(flags);
+ if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {
+ this.flowPragma = null;
+ }
+ return stmt;
+ }
+ parseExpressionStatement(node, expr, decorators) {
+ if (expr.type === "Identifier") {
+ if (expr.name === "declare") {
+ if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) {
+ return this.flowParseDeclare(node);
+ }
+ } else if (tokenIsIdentifier(this.state.type)) {
+ if (expr.name === "interface") {
+ return this.flowParseInterface(node);
+ } else if (expr.name === "type") {
+ return this.flowParseTypeAlias(node);
+ } else if (expr.name === "opaque") {
+ return this.flowParseOpaqueType(node, false);
+ }
+ }
+ }
+ return super.parseExpressionStatement(node, expr, decorators);
+ }
+ shouldParseExportDeclaration() {
+ const {
+ type
+ } = this.state;
+ if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {
+ return !this.state.containsEsc;
+ }
+ return super.shouldParseExportDeclaration();
+ }
+ isExportDefaultSpecifier() {
+ const {
+ type
+ } = this.state;
+ if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {
+ return this.state.containsEsc;
+ }
+ return super.isExportDefaultSpecifier();
+ }
+ parseExportDefaultExpression() {
+ if (this.isContextual(126)) {
+ const node = this.startNode();
+ this.next();
+ return this.flowParseEnumDeclaration(node);
+ }
+ return super.parseExportDefaultExpression();
+ }
+ parseConditional(expr, startLoc, refExpressionErrors) {
+ if (!this.match(17)) return expr;
+ if (this.state.maybeInArrowParameters) {
+ const nextCh = this.lookaheadCharCode();
+ if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {
+ this.setOptionalParametersError(refExpressionErrors);
+ return expr;
+ }
+ }
+ this.expect(17);
+ const state = this.state.clone();
+ const originalNoArrowAt = this.state.noArrowAt;
+ const node = this.startNodeAt(startLoc);
+ let {
+ consequent,
+ failed
+ } = this.tryParseConditionalConsequent();
+ let [valid, invalid] = this.getArrowLikeExpressions(consequent);
+ if (failed || invalid.length > 0) {
+ const noArrowAt = [...originalNoArrowAt];
+ if (invalid.length > 0) {
+ this.state = state;
+ this.state.noArrowAt = noArrowAt;
+ for (let i = 0; i < invalid.length; i++) {
+ noArrowAt.push(invalid[i].start);
+ }
+ ({
+ consequent,
+ failed
+ } = this.tryParseConditionalConsequent());
+ [valid, invalid] = this.getArrowLikeExpressions(consequent);
+ }
+ if (failed && valid.length > 1) {
+ this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);
+ }
+ if (failed && valid.length === 1) {
+ this.state = state;
+ noArrowAt.push(valid[0].start);
+ this.state.noArrowAt = noArrowAt;
+ ({
+ consequent,
+ failed
+ } = this.tryParseConditionalConsequent());
+ }
+ }
+ this.getArrowLikeExpressions(consequent, true);
+ this.state.noArrowAt = originalNoArrowAt;
+ this.expect(14);
+ node.test = expr;
+ node.consequent = consequent;
+ node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined));
+ return this.finishNode(node, "ConditionalExpression");
+ }
+ tryParseConditionalConsequent() {
+ this.state.noArrowParamsConversionAt.push(this.state.start);
+ const consequent = this.parseMaybeAssignAllowIn();
+ const failed = !this.match(14);
+ this.state.noArrowParamsConversionAt.pop();
+ return {
+ consequent,
+ failed
+ };
+ }
+ getArrowLikeExpressions(node, disallowInvalid) {
+ const stack = [node];
+ const arrows = [];
+ while (stack.length !== 0) {
+ const node = stack.pop();
+ if (node.type === "ArrowFunctionExpression" && node.body.type !== "BlockStatement") {
+ if (node.typeParameters || !node.returnType) {
+ this.finishArrowValidation(node);
+ } else {
+ arrows.push(node);
+ }
+ stack.push(node.body);
+ } else if (node.type === "ConditionalExpression") {
+ stack.push(node.consequent);
+ stack.push(node.alternate);
+ }
+ }
+ if (disallowInvalid) {
+ arrows.forEach(node => this.finishArrowValidation(node));
+ return [arrows, []];
+ }
+ return partition(arrows, node => node.params.every(param => this.isAssignable(param, true)));
+ }
+ finishArrowValidation(node) {
+ var _node$extra;
+ this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false);
+ this.scope.enter(514 | 4);
+ super.checkParams(node, false, true);
+ this.scope.exit();
+ }
+ forwardNoArrowParamsConversionAt(node, parse) {
+ let result;
+ if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {
+ this.state.noArrowParamsConversionAt.push(this.state.start);
+ result = parse();
+ this.state.noArrowParamsConversionAt.pop();
+ } else {
+ result = parse();
+ }
+ return result;
+ }
+ parseParenItem(node, startLoc) {
+ const newNode = super.parseParenItem(node, startLoc);
+ if (this.eat(17)) {
+ newNode.optional = true;
+ this.resetEndLocation(node);
+ }
+ if (this.match(14)) {
+ const typeCastNode = this.startNodeAt(startLoc);
+ typeCastNode.expression = newNode;
+ typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();
+ return this.finishNode(typeCastNode, "TypeCastExpression");
+ }
+ return newNode;
+ }
+ assertModuleNodeAllowed(node) {
+ if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") {
+ return;
+ }
+ super.assertModuleNodeAllowed(node);
+ }
+ parseExportDeclaration(node) {
+ if (this.isContextual(130)) {
+ node.exportKind = "type";
+ const declarationNode = this.startNode();
+ this.next();
+ if (this.match(5)) {
+ node.specifiers = this.parseExportSpecifiers(true);
+ super.parseExportFrom(node);
+ return null;
+ } else {
+ return this.flowParseTypeAlias(declarationNode);
+ }
+ } else if (this.isContextual(131)) {
+ node.exportKind = "type";
+ const declarationNode = this.startNode();
+ this.next();
+ return this.flowParseOpaqueType(declarationNode, false);
+ } else if (this.isContextual(129)) {
+ node.exportKind = "type";
+ const declarationNode = this.startNode();
+ this.next();
+ return this.flowParseInterface(declarationNode);
+ } else if (this.isContextual(126)) {
+ node.exportKind = "value";
+ const declarationNode = this.startNode();
+ this.next();
+ return this.flowParseEnumDeclaration(declarationNode);
+ } else {
+ return super.parseExportDeclaration(node);
+ }
+ }
+ eatExportStar(node) {
+ if (super.eatExportStar(node)) return true;
+ if (this.isContextual(130) && this.lookahead().type === 55) {
+ node.exportKind = "type";
+ this.next();
+ this.next();
+ return true;
+ }
+ return false;
+ }
+ maybeParseExportNamespaceSpecifier(node) {
+ const {
+ startLoc
+ } = this.state;
+ const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);
+ if (hasNamespace && node.exportKind === "type") {
+ this.unexpected(startLoc);
+ }
+ return hasNamespace;
+ }
+ parseClassId(node, isStatement, optionalId) {
+ super.parseClassId(node, isStatement, optionalId);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ }
+ parseClassMember(classBody, member, state) {
+ const {
+ startLoc
+ } = this.state;
+ if (this.isContextual(125)) {
+ if (super.parseClassMemberFromModifier(classBody, member)) {
+ return;
+ }
+ member.declare = true;
+ }
+ super.parseClassMember(classBody, member, state);
+ if (member.declare) {
+ if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") {
+ this.raise(FlowErrors.DeclareClassElement, startLoc);
+ } else if (member.value) {
+ this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);
+ }
+ }
+ }
+ isIterator(word) {
+ return word === "iterator" || word === "asyncIterator";
+ }
+ readIterator() {
+ const word = super.readWord1();
+ const fullWord = "@@" + word;
+ if (!this.isIterator(word) || !this.state.inType) {
+ this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {
+ identifierName: fullWord
+ });
+ }
+ this.finishToken(132, fullWord);
+ }
+ getTokenFromCode(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (code === 123 && next === 124) {
+ this.finishOp(6, 2);
+ } else if (this.state.inType && (code === 62 || code === 60)) {
+ this.finishOp(code === 62 ? 48 : 47, 1);
+ } else if (this.state.inType && code === 63) {
+ if (next === 46) {
+ this.finishOp(18, 2);
+ } else {
+ this.finishOp(17, 1);
+ }
+ } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {
+ this.state.pos += 2;
+ this.readIterator();
+ } else {
+ super.getTokenFromCode(code);
+ }
+ }
+ isAssignable(node, isBinding) {
+ if (node.type === "TypeCastExpression") {
+ return this.isAssignable(node.expression, isBinding);
+ } else {
+ return super.isAssignable(node, isBinding);
+ }
+ }
+ toAssignable(node, isLHS = false) {
+ if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") {
+ node.left = this.typeCastToParameter(node.left);
+ }
+ super.toAssignable(node, isLHS);
+ }
+ toAssignableList(exprList, trailingCommaLoc, isLHS) {
+ for (let i = 0; i < exprList.length; i++) {
+ const expr = exprList[i];
+ if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") {
+ exprList[i] = this.typeCastToParameter(expr);
+ }
+ }
+ super.toAssignableList(exprList, trailingCommaLoc, isLHS);
+ }
+ toReferencedList(exprList, isParenthesizedExpr) {
+ for (let i = 0; i < exprList.length; i++) {
+ var _expr$extra;
+ const expr = exprList[i];
+ if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {
+ this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);
+ }
+ }
+ return exprList;
+ }
+ parseArrayLike(close, isTuple, refExpressionErrors) {
+ const node = super.parseArrayLike(close, isTuple, refExpressionErrors);
+ if (refExpressionErrors != null && !this.state.maybeInArrowParameters) {
+ this.toReferencedList(node.elements);
+ }
+ return node;
+ }
+ isValidLVal(type, disallowCallExpression, isParenthesized, binding) {
+ return type === "TypeCastExpression" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding);
+ }
+ parseClassProperty(node) {
+ if (this.match(14)) {
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ }
+ return super.parseClassProperty(node);
+ }
+ parseClassPrivateProperty(node) {
+ if (this.match(14)) {
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ }
+ return super.parseClassPrivateProperty(node);
+ }
+ isClassMethod() {
+ return this.match(47) || super.isClassMethod();
+ }
+ isClassProperty() {
+ return this.match(14) || super.isClassProperty();
+ }
+ isNonstaticConstructor(method) {
+ return !this.match(14) && super.isNonstaticConstructor(method);
+ }
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ if (method.variance) {
+ this.unexpected(method.variance.loc.start);
+ }
+ delete method.variance;
+ if (this.match(47)) {
+ method.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
+ if (method.params && isConstructor) {
+ const params = method.params;
+ if (params.length > 0 && this.isThisParam(params[0])) {
+ this.raise(FlowErrors.ThisParamBannedInConstructor, method);
+ }
+ } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) {
+ const params = method.value.params;
+ if (params.length > 0 && this.isThisParam(params[0])) {
+ this.raise(FlowErrors.ThisParamBannedInConstructor, method);
+ }
+ }
+ }
+ pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
+ if (method.variance) {
+ this.unexpected(method.variance.loc.start);
+ }
+ delete method.variance;
+ if (this.match(47)) {
+ method.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);
+ }
+ parseClassSuper(node) {
+ super.parseClassSuper(node);
+ if (node.superClass && (this.match(47) || this.match(51))) {
+ node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression();
+ }
+ if (this.isContextual(113)) {
+ this.next();
+ const implemented = node.implements = [];
+ do {
+ const node = this.startNode();
+ node.id = this.flowParseRestrictedIdentifier(true);
+ if (this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ } else {
+ node.typeParameters = null;
+ }
+ implemented.push(this.finishNode(node, "ClassImplements"));
+ } while (this.eat(12));
+ }
+ }
+ checkGetterSetterParams(method) {
+ super.checkGetterSetterParams(method);
+ const params = this.getObjectOrClassMethodParams(method);
+ if (params.length > 0) {
+ const param = params[0];
+ if (this.isThisParam(param) && method.kind === "get") {
+ this.raise(FlowErrors.GetterMayNotHaveThisParam, param);
+ } else if (this.isThisParam(param)) {
+ this.raise(FlowErrors.SetterMayNotHaveThisParam, param);
+ }
+ }
+ }
+ parsePropertyNamePrefixOperator(node) {
+ node.variance = this.flowParseVariance();
+ }
+ parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
+ if (prop.variance) {
+ this.unexpected(prop.variance.loc.start);
+ }
+ delete prop.variance;
+ let typeParameters;
+ if (this.match(47) && !isAccessor) {
+ typeParameters = this.flowParseTypeParameterDeclaration();
+ if (!this.match(10)) this.unexpected();
+ }
+ const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);
+ if (typeParameters) {
+ (result.value || result).typeParameters = typeParameters;
+ }
+ return result;
+ }
+ parseFunctionParamType(param) {
+ if (this.eat(17)) {
+ if (param.type !== "Identifier") {
+ this.raise(FlowErrors.PatternIsOptional, param);
+ }
+ if (this.isThisParam(param)) {
+ this.raise(FlowErrors.ThisParamMayNotBeOptional, param);
+ }
+ param.optional = true;
+ }
+ if (this.match(14)) {
+ param.typeAnnotation = this.flowParseTypeAnnotation();
+ } else if (this.isThisParam(param)) {
+ this.raise(FlowErrors.ThisParamAnnotationRequired, param);
+ }
+ if (this.match(29) && this.isThisParam(param)) {
+ this.raise(FlowErrors.ThisParamNoDefault, param);
+ }
+ this.resetEndLocation(param);
+ return param;
+ }
+ parseMaybeDefault(startLoc, left) {
+ const node = super.parseMaybeDefault(startLoc, left);
+ if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
+ this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);
+ }
+ return node;
+ }
+ checkImportReflection(node) {
+ super.checkImportReflection(node);
+ if (node.module && node.importKind !== "value") {
+ this.raise(FlowErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start);
+ }
+ }
+ parseImportSpecifierLocal(node, specifier, type) {
+ specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();
+ node.specifiers.push(this.finishImportSpecifier(specifier, type));
+ }
+ isPotentialImportPhase(isExport) {
+ if (super.isPotentialImportPhase(isExport)) return true;
+ if (this.isContextual(130)) {
+ if (!isExport) return true;
+ const ch = this.lookaheadCharCode();
+ return ch === 123 || ch === 42;
+ }
+ return !isExport && this.isContextual(87);
+ }
+ applyImportPhase(node, isExport, phase, loc) {
+ super.applyImportPhase(node, isExport, phase, loc);
+ if (isExport) {
+ if (!phase && this.match(65)) {
+ return;
+ }
+ node.exportKind = phase === "type" ? phase : "value";
+ } else {
+ if (phase === "type" && this.match(55)) this.unexpected();
+ node.importKind = phase === "type" || phase === "typeof" ? phase : "value";
+ }
+ }
+ parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
+ const firstIdent = specifier.imported;
+ let specifierTypeKind = null;
+ if (firstIdent.type === "Identifier") {
+ if (firstIdent.name === "type") {
+ specifierTypeKind = "type";
+ } else if (firstIdent.name === "typeof") {
+ specifierTypeKind = "typeof";
+ }
+ }
+ let isBinding = false;
+ if (this.isContextual(93) && !this.isLookaheadContextual("as")) {
+ const as_ident = this.parseIdentifier(true);
+ if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {
+ specifier.imported = as_ident;
+ specifier.importKind = specifierTypeKind;
+ specifier.local = this.cloneIdentifier(as_ident);
+ } else {
+ specifier.imported = firstIdent;
+ specifier.importKind = null;
+ specifier.local = this.parseIdentifier();
+ }
+ } else {
+ if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {
+ specifier.imported = this.parseIdentifier(true);
+ specifier.importKind = specifierTypeKind;
+ } else {
+ if (importedIsString) {
+ throw this.raise(Errors.ImportBindingIsString, specifier, {
+ importName: firstIdent.value
+ });
+ }
+ specifier.imported = firstIdent;
+ specifier.importKind = null;
+ }
+ if (this.eatContextual(93)) {
+ specifier.local = this.parseIdentifier();
+ } else {
+ isBinding = true;
+ specifier.local = this.cloneIdentifier(specifier.imported);
+ }
+ }
+ const specifierIsTypeImport = hasTypeImportKind(specifier);
+ if (isInTypeOnlyImport && specifierIsTypeImport) {
+ this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);
+ }
+ if (isInTypeOnlyImport || specifierIsTypeImport) {
+ this.checkReservedType(specifier.local.name, specifier.local.loc.start, true);
+ }
+ if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {
+ this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true);
+ }
+ return this.finishImportSpecifier(specifier, "ImportSpecifier");
+ }
+ parseBindingAtom() {
+ switch (this.state.type) {
+ case 78:
+ return this.parseIdentifier(true);
+ default:
+ return super.parseBindingAtom();
+ }
+ }
+ parseFunctionParams(node, isConstructor) {
+ const kind = node.kind;
+ if (kind !== "get" && kind !== "set" && this.match(47)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ super.parseFunctionParams(node, isConstructor);
+ }
+ parseVarId(decl, kind) {
+ super.parseVarId(decl, kind);
+ if (this.match(14)) {
+ decl.id.typeAnnotation = this.flowParseTypeAnnotation();
+ this.resetEndLocation(decl.id);
+ }
+ }
+ parseAsyncArrowFromCallExpression(node, call) {
+ if (this.match(14)) {
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ this.state.noAnonFunctionType = true;
+ node.returnType = this.flowParseTypeAnnotation();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ }
+ return super.parseAsyncArrowFromCallExpression(node, call);
+ }
+ shouldParseAsyncArrow() {
+ return this.match(14) || super.shouldParseAsyncArrow();
+ }
+ parseMaybeAssign(refExpressionErrors, afterLeftParse) {
+ var _jsx;
+ let state = null;
+ let jsx;
+ if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) {
+ state = this.state.clone();
+ jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);
+ if (!jsx.error) return jsx.node;
+ const {
+ context
+ } = this.state;
+ const currentContext = context[context.length - 1];
+ if (currentContext === types.j_oTag || currentContext === types.j_expr) {
+ context.pop();
+ }
+ }
+ if ((_jsx = jsx) != null && _jsx.error || this.match(47)) {
+ var _jsx2, _jsx3;
+ state = state || this.state.clone();
+ let typeParameters;
+ const arrow = this.tryParse(abort => {
+ var _arrowExpression$extr;
+ typeParameters = this.flowParseTypeParameterDeclaration();
+ const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => {
+ const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ this.resetStartLocationFromNode(result, typeParameters);
+ return result;
+ });
+ if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();
+ const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);
+ if (expr.type !== "ArrowFunctionExpression") abort();
+ expr.typeParameters = typeParameters;
+ this.resetStartLocationFromNode(expr, typeParameters);
+ return arrowExpression;
+ }, state);
+ let arrowExpression = null;
+ if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") {
+ if (!arrow.error && !arrow.aborted) {
+ if (arrow.node.async) {
+ this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters);
+ }
+ return arrow.node;
+ }
+ arrowExpression = arrow.node;
+ }
+ if ((_jsx2 = jsx) != null && _jsx2.node) {
+ this.state = jsx.failState;
+ return jsx.node;
+ }
+ if (arrowExpression) {
+ this.state = arrow.failState;
+ return arrowExpression;
+ }
+ if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;
+ if (arrow.thrown) throw arrow.error;
+ throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters);
+ }
+ return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ }
+ parseArrow(node) {
+ if (this.match(14)) {
+ const result = this.tryParse(() => {
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ this.state.noAnonFunctionType = true;
+ const typeNode = this.startNode();
+ [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ if (this.canInsertSemicolon()) this.unexpected();
+ if (!this.match(19)) this.unexpected();
+ return typeNode;
+ });
+ if (result.thrown) return null;
+ if (result.error) this.state = result.failState;
+ node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null;
+ }
+ return super.parseArrow(node);
+ }
+ shouldParseArrow(params) {
+ return this.match(14) || super.shouldParseArrow(params);
+ }
+ setArrowFunctionParameters(node, params) {
+ if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {
+ node.params = params;
+ } else {
+ super.setArrowFunctionParameters(node, params);
+ }
+ }
+ checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {
+ if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {
+ return;
+ }
+ for (let i = 0; i < node.params.length; i++) {
+ if (this.isThisParam(node.params[i]) && i > 0) {
+ this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);
+ }
+ }
+ super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged);
+ }
+ parseParenAndDistinguishExpression(canBeArrow) {
+ return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start)));
+ }
+ parseSubscripts(base, startLoc, noCalls) {
+ if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.includes(startLoc.index)) {
+ this.next();
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ node.arguments = super.parseCallExpressionArguments();
+ base = this.finishNode(node, "CallExpression");
+ } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) {
+ const state = this.state.clone();
+ const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state);
+ if (!arrow.error && !arrow.aborted) return arrow.node;
+ const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state);
+ if (result.node && !result.error) return result.node;
+ if (arrow.node) {
+ this.state = arrow.failState;
+ return arrow.node;
+ }
+ if (result.node) {
+ this.state = result.failState;
+ return result.node;
+ }
+ throw arrow.error || result.error;
+ }
+ return super.parseSubscripts(base, startLoc, noCalls);
+ }
+ parseSubscript(base, startLoc, noCalls, subscriptState) {
+ if (this.match(18) && this.isLookaheadToken_lt()) {
+ subscriptState.optionalChainMember = true;
+ if (noCalls) {
+ subscriptState.stop = true;
+ return base;
+ }
+ this.next();
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();
+ this.expect(10);
+ node.arguments = this.parseCallExpressionArguments();
+ node.optional = true;
+ return this.finishCallExpression(node, true);
+ } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) {
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ const result = this.tryParse(() => {
+ node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();
+ this.expect(10);
+ node.arguments = super.parseCallExpressionArguments();
+ if (subscriptState.optionalChainMember) {
+ node.optional = false;
+ }
+ return this.finishCallExpression(node, subscriptState.optionalChainMember);
+ });
+ if (result.node) {
+ if (result.error) this.state = result.failState;
+ return result.node;
+ }
+ }
+ return super.parseSubscript(base, startLoc, noCalls, subscriptState);
+ }
+ parseNewCallee(node) {
+ super.parseNewCallee(node);
+ let targs = null;
+ if (this.shouldParseTypes() && this.match(47)) {
+ targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node;
+ }
+ node.typeArguments = targs;
+ }
+ parseAsyncArrowWithTypeParameters(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ this.parseFunctionParams(node, false);
+ if (!this.parseArrow(node)) return;
+ return super.parseArrowExpression(node, undefined, true);
+ }
+ readToken_mult_modulo(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (code === 42 && next === 47 && this.state.hasFlowComment) {
+ this.state.hasFlowComment = false;
+ this.state.pos += 2;
+ this.nextToken();
+ return;
+ }
+ super.readToken_mult_modulo(code);
+ }
+ readToken_pipe_amp(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (code === 124 && next === 125) {
+ this.finishOp(9, 2);
+ return;
+ }
+ super.readToken_pipe_amp(code);
+ }
+ parseTopLevel(file, program) {
+ const fileNode = super.parseTopLevel(file, program);
+ if (this.state.hasFlowComment) {
+ this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition());
+ }
+ return fileNode;
+ }
+ skipBlockComment() {
+ if (this.hasPlugin("flowComments") && this.skipFlowComment()) {
+ if (this.state.hasFlowComment) {
+ throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);
+ }
+ this.hasFlowCommentCompletion();
+ const commentSkip = this.skipFlowComment();
+ if (commentSkip) {
+ this.state.pos += commentSkip;
+ this.state.hasFlowComment = true;
+ }
+ return;
+ }
+ return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/");
+ }
+ skipFlowComment() {
+ const {
+ pos
+ } = this.state;
+ let shiftToFirstNonWhiteSpace = 2;
+ while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {
+ shiftToFirstNonWhiteSpace++;
+ }
+ const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);
+ const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);
+ if (ch2 === 58 && ch3 === 58) {
+ return shiftToFirstNonWhiteSpace + 2;
+ }
+ if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") {
+ return shiftToFirstNonWhiteSpace + 12;
+ }
+ if (ch2 === 58 && ch3 !== 58) {
+ return shiftToFirstNonWhiteSpace;
+ }
+ return false;
+ }
+ hasFlowCommentCompletion() {
+ const end = this.input.indexOf("*/", this.state.pos);
+ if (end === -1) {
+ throw this.raise(Errors.UnterminatedComment, this.state.curPosition());
+ }
+ }
+ flowEnumErrorBooleanMemberNotInitialized(loc, {
+ enumName,
+ memberName
+ }) {
+ this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {
+ memberName,
+ enumName
+ });
+ }
+ flowEnumErrorInvalidMemberInitializer(loc, enumContext) {
+ return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext);
+ }
+ flowEnumErrorNumberMemberNotInitialized(loc, details) {
+ this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);
+ }
+ flowEnumErrorStringMemberInconsistentlyInitialized(node, details) {
+ this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details);
+ }
+ flowEnumMemberInit() {
+ const startLoc = this.state.startLoc;
+ const endOfInit = () => this.match(12) || this.match(8);
+ switch (this.state.type) {
+ case 135:
+ {
+ const literal = this.parseNumericLiteral(this.state.value);
+ if (endOfInit()) {
+ return {
+ type: "number",
+ loc: literal.loc.start,
+ value: literal
+ };
+ }
+ return {
+ type: "invalid",
+ loc: startLoc
+ };
+ }
+ case 134:
+ {
+ const literal = this.parseStringLiteral(this.state.value);
+ if (endOfInit()) {
+ return {
+ type: "string",
+ loc: literal.loc.start,
+ value: literal
+ };
+ }
+ return {
+ type: "invalid",
+ loc: startLoc
+ };
+ }
+ case 85:
+ case 86:
+ {
+ const literal = this.parseBooleanLiteral(this.match(85));
+ if (endOfInit()) {
+ return {
+ type: "boolean",
+ loc: literal.loc.start,
+ value: literal
+ };
+ }
+ return {
+ type: "invalid",
+ loc: startLoc
+ };
+ }
+ default:
+ return {
+ type: "invalid",
+ loc: startLoc
+ };
+ }
+ }
+ flowEnumMemberRaw() {
+ const loc = this.state.startLoc;
+ const id = this.parseIdentifier(true);
+ const init = this.eat(29) ? this.flowEnumMemberInit() : {
+ type: "none",
+ loc
+ };
+ return {
+ id,
+ init
+ };
+ }
+ flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) {
+ const {
+ explicitType
+ } = context;
+ if (explicitType === null) {
+ return;
+ }
+ if (explicitType !== expectedType) {
+ this.flowEnumErrorInvalidMemberInitializer(loc, context);
+ }
+ }
+ flowEnumMembers({
+ enumName,
+ explicitType
+ }) {
+ const seenNames = new Set();
+ const members = {
+ booleanMembers: [],
+ numberMembers: [],
+ stringMembers: [],
+ defaultedMembers: []
+ };
+ let hasUnknownMembers = false;
+ while (!this.match(8)) {
+ if (this.eat(21)) {
+ hasUnknownMembers = true;
+ break;
+ }
+ const memberNode = this.startNode();
+ const {
+ id,
+ init
+ } = this.flowEnumMemberRaw();
+ const memberName = id.name;
+ if (memberName === "") {
+ continue;
+ }
+ if (/^[a-z]/.test(memberName)) {
+ this.raise(FlowErrors.EnumInvalidMemberName, id, {
+ memberName,
+ suggestion: memberName[0].toUpperCase() + memberName.slice(1),
+ enumName
+ });
+ }
+ if (seenNames.has(memberName)) {
+ this.raise(FlowErrors.EnumDuplicateMemberName, id, {
+ memberName,
+ enumName
+ });
+ }
+ seenNames.add(memberName);
+ const context = {
+ enumName,
+ explicitType,
+ memberName
+ };
+ memberNode.id = id;
+ switch (init.type) {
+ case "boolean":
+ {
+ this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean");
+ memberNode.init = init.value;
+ members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember"));
+ break;
+ }
+ case "number":
+ {
+ this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number");
+ memberNode.init = init.value;
+ members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember"));
+ break;
+ }
+ case "string":
+ {
+ this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string");
+ memberNode.init = init.value;
+ members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember"));
+ break;
+ }
+ case "invalid":
+ {
+ throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);
+ }
+ case "none":
+ {
+ switch (explicitType) {
+ case "boolean":
+ this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context);
+ break;
+ case "number":
+ this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);
+ break;
+ default:
+ members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember"));
+ }
+ }
+ }
+ if (!this.match(8)) {
+ this.expect(12);
+ }
+ }
+ return {
+ members,
+ hasUnknownMembers
+ };
+ }
+ flowEnumStringMembers(initializedMembers, defaultedMembers, {
+ enumName
+ }) {
+ if (initializedMembers.length === 0) {
+ return defaultedMembers;
+ } else if (defaultedMembers.length === 0) {
+ return initializedMembers;
+ } else if (defaultedMembers.length > initializedMembers.length) {
+ for (const member of initializedMembers) {
+ this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {
+ enumName
+ });
+ }
+ return defaultedMembers;
+ } else {
+ for (const member of defaultedMembers) {
+ this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {
+ enumName
+ });
+ }
+ return initializedMembers;
+ }
+ }
+ flowEnumParseExplicitType({
+ enumName
+ }) {
+ if (!this.eatContextual(102)) return null;
+ if (!tokenIsIdentifier(this.state.type)) {
+ throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, {
+ enumName
+ });
+ }
+ const {
+ value
+ } = this.state;
+ this.next();
+ if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") {
+ this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {
+ enumName,
+ invalidEnumType: value
+ });
+ }
+ return value;
+ }
+ flowEnumBody(node, id) {
+ const enumName = id.name;
+ const nameLoc = id.loc.start;
+ const explicitType = this.flowEnumParseExplicitType({
+ enumName
+ });
+ this.expect(5);
+ const {
+ members,
+ hasUnknownMembers
+ } = this.flowEnumMembers({
+ enumName,
+ explicitType
+ });
+ node.hasUnknownMembers = hasUnknownMembers;
+ switch (explicitType) {
+ case "boolean":
+ node.explicitType = true;
+ node.members = members.booleanMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumBooleanBody");
+ case "number":
+ node.explicitType = true;
+ node.members = members.numberMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumNumberBody");
+ case "string":
+ node.explicitType = true;
+ node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
+ enumName
+ });
+ this.expect(8);
+ return this.finishNode(node, "EnumStringBody");
+ case "symbol":
+ node.members = members.defaultedMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumSymbolBody");
+ default:
+ {
+ const empty = () => {
+ node.members = [];
+ this.expect(8);
+ return this.finishNode(node, "EnumStringBody");
+ };
+ node.explicitType = false;
+ const boolsLen = members.booleanMembers.length;
+ const numsLen = members.numberMembers.length;
+ const strsLen = members.stringMembers.length;
+ const defaultedLen = members.defaultedMembers.length;
+ if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {
+ return empty();
+ } else if (!boolsLen && !numsLen) {
+ node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
+ enumName
+ });
+ this.expect(8);
+ return this.finishNode(node, "EnumStringBody");
+ } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {
+ for (const member of members.defaultedMembers) {
+ this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {
+ enumName,
+ memberName: member.id.name
+ });
+ }
+ node.members = members.booleanMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumBooleanBody");
+ } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {
+ for (const member of members.defaultedMembers) {
+ this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {
+ enumName,
+ memberName: member.id.name
+ });
+ }
+ node.members = members.numberMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumNumberBody");
+ } else {
+ this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {
+ enumName
+ });
+ return empty();
+ }
+ }
+ }
+ }
+ flowParseEnumDeclaration(node) {
+ const id = this.parseIdentifier();
+ node.id = id;
+ node.body = this.flowEnumBody(this.startNode(), id);
+ return this.finishNode(node, "EnumDeclaration");
+ }
+ jsxParseOpeningElementAfterName(node) {
+ if (this.shouldParseTypes()) {
+ if (this.match(47) || this.match(51)) {
+ node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();
+ }
+ }
+ return super.jsxParseOpeningElementAfterName(node);
+ }
+ isLookaheadToken_lt() {
+ const next = this.nextTokenStart();
+ if (this.input.charCodeAt(next) === 60) {
+ const afterNext = this.input.charCodeAt(next + 1);
+ return afterNext !== 60 && afterNext !== 61;
+ }
+ return false;
+ }
+ reScan_lt_gt() {
+ const {
+ type
+ } = this.state;
+ if (type === 47) {
+ this.state.pos -= 1;
+ this.readToken_lt();
+ } else if (type === 48) {
+ this.state.pos -= 1;
+ this.readToken_gt();
+ }
+ }
+ reScan_lt() {
+ const {
+ type
+ } = this.state;
+ if (type === 51) {
+ this.state.pos -= 2;
+ this.finishOp(47, 1);
+ return 47;
+ }
+ return type;
+ }
+ maybeUnwrapTypeCastExpression(node) {
+ return node.type === "TypeCastExpression" ? node.expression : node;
+ }
+};
+const entities = {
+ __proto__: null,
+ quot: "\u0022",
+ amp: "&",
+ apos: "\u0027",
+ lt: "<",
+ gt: ">",
+ nbsp: "\u00A0",
+ iexcl: "\u00A1",
+ cent: "\u00A2",
+ pound: "\u00A3",
+ curren: "\u00A4",
+ yen: "\u00A5",
+ brvbar: "\u00A6",
+ sect: "\u00A7",
+ uml: "\u00A8",
+ copy: "\u00A9",
+ ordf: "\u00AA",
+ laquo: "\u00AB",
+ not: "\u00AC",
+ shy: "\u00AD",
+ reg: "\u00AE",
+ macr: "\u00AF",
+ deg: "\u00B0",
+ plusmn: "\u00B1",
+ sup2: "\u00B2",
+ sup3: "\u00B3",
+ acute: "\u00B4",
+ micro: "\u00B5",
+ para: "\u00B6",
+ middot: "\u00B7",
+ cedil: "\u00B8",
+ sup1: "\u00B9",
+ ordm: "\u00BA",
+ raquo: "\u00BB",
+ frac14: "\u00BC",
+ frac12: "\u00BD",
+ frac34: "\u00BE",
+ iquest: "\u00BF",
+ Agrave: "\u00C0",
+ Aacute: "\u00C1",
+ Acirc: "\u00C2",
+ Atilde: "\u00C3",
+ Auml: "\u00C4",
+ Aring: "\u00C5",
+ AElig: "\u00C6",
+ Ccedil: "\u00C7",
+ Egrave: "\u00C8",
+ Eacute: "\u00C9",
+ Ecirc: "\u00CA",
+ Euml: "\u00CB",
+ Igrave: "\u00CC",
+ Iacute: "\u00CD",
+ Icirc: "\u00CE",
+ Iuml: "\u00CF",
+ ETH: "\u00D0",
+ Ntilde: "\u00D1",
+ Ograve: "\u00D2",
+ Oacute: "\u00D3",
+ Ocirc: "\u00D4",
+ Otilde: "\u00D5",
+ Ouml: "\u00D6",
+ times: "\u00D7",
+ Oslash: "\u00D8",
+ Ugrave: "\u00D9",
+ Uacute: "\u00DA",
+ Ucirc: "\u00DB",
+ Uuml: "\u00DC",
+ Yacute: "\u00DD",
+ THORN: "\u00DE",
+ szlig: "\u00DF",
+ agrave: "\u00E0",
+ aacute: "\u00E1",
+ acirc: "\u00E2",
+ atilde: "\u00E3",
+ auml: "\u00E4",
+ aring: "\u00E5",
+ aelig: "\u00E6",
+ ccedil: "\u00E7",
+ egrave: "\u00E8",
+ eacute: "\u00E9",
+ ecirc: "\u00EA",
+ euml: "\u00EB",
+ igrave: "\u00EC",
+ iacute: "\u00ED",
+ icirc: "\u00EE",
+ iuml: "\u00EF",
+ eth: "\u00F0",
+ ntilde: "\u00F1",
+ ograve: "\u00F2",
+ oacute: "\u00F3",
+ ocirc: "\u00F4",
+ otilde: "\u00F5",
+ ouml: "\u00F6",
+ divide: "\u00F7",
+ oslash: "\u00F8",
+ ugrave: "\u00F9",
+ uacute: "\u00FA",
+ ucirc: "\u00FB",
+ uuml: "\u00FC",
+ yacute: "\u00FD",
+ thorn: "\u00FE",
+ yuml: "\u00FF",
+ 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"
+};
+const lineBreak = /\r\n|[\r\n\u2028\u2029]/;
+const lineBreakG = new RegExp(lineBreak.source, "g");
+function isNewLine(code) {
+ switch (code) {
+ case 10:
+ case 13:
+ case 8232:
+ case 8233:
+ return true;
+ default:
+ return false;
+ }
+}
+function hasNewLine(input, start, end) {
+ for (let i = start; i < end; i++) {
+ if (isNewLine(input.charCodeAt(i))) {
+ return true;
+ }
+ }
+ return false;
+}
+const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
+const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g;
+function isWhitespace(code) {
+ switch (code) {
+ case 0x0009:
+ case 0x000b:
+ case 0x000c:
+ case 32:
+ case 160:
+ case 5760:
+ case 0x2000:
+ case 0x2001:
+ case 0x2002:
+ case 0x2003:
+ case 0x2004:
+ case 0x2005:
+ case 0x2006:
+ case 0x2007:
+ case 0x2008:
+ case 0x2009:
+ case 0x200a:
+ case 0x202f:
+ case 0x205f:
+ case 0x3000:
+ case 0xfeff:
+ return true;
+ default:
+ return false;
+ }
+}
+const JsxErrors = ParseErrorEnum`jsx`({
+ AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.",
+ MissingClosingTagElement: ({
+ openingTagName
+ }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`,
+ MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.",
+ UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?",
+ UnexpectedToken: ({
+ unexpected,
+ HTMLEntity
+ }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`,
+ UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.",
+ UnterminatedJsxContent: "Unterminated JSX contents.",
+ UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...>?"
+});
+function isFragment(object) {
+ return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false;
+}
+function getQualifiedJSXName(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);
+ }
+ throw new Error("Node had unexpected type: " + object.type);
+}
+var jsx = superClass => class JSXParserMixin extends superClass {
+ jsxReadToken() {
+ let out = "";
+ let chunkStart = this.state.pos;
+ for (;;) {
+ if (this.state.pos >= this.length) {
+ throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc);
+ }
+ const ch = this.input.charCodeAt(this.state.pos);
+ switch (ch) {
+ case 60:
+ case 123:
+ if (this.state.pos === this.state.start) {
+ if (ch === 60 && this.state.canStartJSXElement) {
+ ++this.state.pos;
+ this.finishToken(143);
+ } else {
+ super.getTokenFromCode(ch);
+ }
+ return;
+ }
+ out += this.input.slice(chunkStart, this.state.pos);
+ this.finishToken(142, out);
+ return;
+ case 38:
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadEntity();
+ chunkStart = this.state.pos;
+ break;
+ case 62:
+ case 125:
+ default:
+ if (isNewLine(ch)) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadNewLine(true);
+ chunkStart = this.state.pos;
+ } else {
+ ++this.state.pos;
+ }
+ }
+ }
+ }
+ jsxReadNewLine(normalizeCRLF) {
+ const ch = this.input.charCodeAt(this.state.pos);
+ let out;
+ ++this.state.pos;
+ if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {
+ ++this.state.pos;
+ out = normalizeCRLF ? "\n" : "\r\n";
+ } else {
+ out = String.fromCharCode(ch);
+ }
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+ return out;
+ }
+ jsxReadString(quote) {
+ let out = "";
+ let chunkStart = ++this.state.pos;
+ for (;;) {
+ if (this.state.pos >= this.length) {
+ throw this.raise(Errors.UnterminatedString, this.state.startLoc);
+ }
+ const ch = this.input.charCodeAt(this.state.pos);
+ if (ch === quote) break;
+ if (ch === 38) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadEntity();
+ chunkStart = this.state.pos;
+ } else if (isNewLine(ch)) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadNewLine(false);
+ chunkStart = this.state.pos;
+ } else {
+ ++this.state.pos;
+ }
+ }
+ out += this.input.slice(chunkStart, this.state.pos++);
+ this.finishToken(134, out);
+ }
+ jsxReadEntity() {
+ const startPos = ++this.state.pos;
+ if (this.codePointAtPos(this.state.pos) === 35) {
+ ++this.state.pos;
+ let radix = 10;
+ if (this.codePointAtPos(this.state.pos) === 120) {
+ radix = 16;
+ ++this.state.pos;
+ }
+ const codePoint = this.readInt(radix, undefined, false, "bail");
+ if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) {
+ ++this.state.pos;
+ return String.fromCodePoint(codePoint);
+ }
+ } else {
+ let count = 0;
+ let semi = false;
+ while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) {
+ ++this.state.pos;
+ }
+ if (semi) {
+ const desc = this.input.slice(startPos, this.state.pos);
+ const entity = entities[desc];
+ ++this.state.pos;
+ if (entity) {
+ return entity;
+ }
+ }
+ }
+ this.state.pos = startPos;
+ return "&";
+ }
+ jsxReadWord() {
+ let ch;
+ const start = this.state.pos;
+ do {
+ ch = this.input.charCodeAt(++this.state.pos);
+ } while (isIdentifierChar(ch) || ch === 45);
+ this.finishToken(141, this.input.slice(start, this.state.pos));
+ }
+ jsxParseIdentifier() {
+ const node = this.startNode();
+ if (this.match(141)) {
+ node.name = this.state.value;
+ } else if (tokenIsKeyword(this.state.type)) {
+ node.name = tokenLabelName(this.state.type);
+ } else {
+ this.unexpected();
+ }
+ this.next();
+ return this.finishNode(node, "JSXIdentifier");
+ }
+ jsxParseNamespacedName() {
+ const startLoc = this.state.startLoc;
+ const name = this.jsxParseIdentifier();
+ if (!this.eat(14)) return name;
+ const node = this.startNodeAt(startLoc);
+ node.namespace = name;
+ node.name = this.jsxParseIdentifier();
+ return this.finishNode(node, "JSXNamespacedName");
+ }
+ jsxParseElementName() {
+ const startLoc = this.state.startLoc;
+ let node = this.jsxParseNamespacedName();
+ if (node.type === "JSXNamespacedName") {
+ return node;
+ }
+ while (this.eat(16)) {
+ const newNode = this.startNodeAt(startLoc);
+ newNode.object = node;
+ newNode.property = this.jsxParseIdentifier();
+ node = this.finishNode(newNode, "JSXMemberExpression");
+ }
+ return node;
+ }
+ jsxParseAttributeValue() {
+ let node;
+ switch (this.state.type) {
+ case 5:
+ node = this.startNode();
+ this.setContext(types.brace);
+ this.next();
+ node = this.jsxParseExpressionContainer(node, types.j_oTag);
+ if (node.expression.type === "JSXEmptyExpression") {
+ this.raise(JsxErrors.AttributeIsEmpty, node);
+ }
+ return node;
+ case 143:
+ case 134:
+ return this.parseExprAtom();
+ default:
+ throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);
+ }
+ }
+ jsxParseEmptyExpression() {
+ const node = this.startNodeAt(this.state.lastTokEndLoc);
+ return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc);
+ }
+ jsxParseSpreadChild(node) {
+ this.next();
+ node.expression = this.parseExpression();
+ this.setContext(types.j_expr);
+ this.state.canStartJSXElement = true;
+ this.expect(8);
+ return this.finishNode(node, "JSXSpreadChild");
+ }
+ jsxParseExpressionContainer(node, previousContext) {
+ if (this.match(8)) {
+ node.expression = this.jsxParseEmptyExpression();
+ } else {
+ const expression = this.parseExpression();
+ node.expression = expression;
+ }
+ this.setContext(previousContext);
+ this.state.canStartJSXElement = true;
+ this.expect(8);
+ return this.finishNode(node, "JSXExpressionContainer");
+ }
+ jsxParseAttribute() {
+ const node = this.startNode();
+ if (this.match(5)) {
+ this.setContext(types.brace);
+ this.next();
+ this.expect(21);
+ node.argument = this.parseMaybeAssignAllowIn();
+ this.setContext(types.j_oTag);
+ this.state.canStartJSXElement = true;
+ this.expect(8);
+ return this.finishNode(node, "JSXSpreadAttribute");
+ }
+ node.name = this.jsxParseNamespacedName();
+ node.value = this.eat(29) ? this.jsxParseAttributeValue() : null;
+ return this.finishNode(node, "JSXAttribute");
+ }
+ jsxParseOpeningElementAt(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ if (this.eat(144)) {
+ return this.finishNode(node, "JSXOpeningFragment");
+ }
+ node.name = this.jsxParseElementName();
+ return this.jsxParseOpeningElementAfterName(node);
+ }
+ jsxParseOpeningElementAfterName(node) {
+ const attributes = [];
+ while (!this.match(56) && !this.match(144)) {
+ attributes.push(this.jsxParseAttribute());
+ }
+ node.attributes = attributes;
+ node.selfClosing = this.eat(56);
+ this.expect(144);
+ return this.finishNode(node, "JSXOpeningElement");
+ }
+ jsxParseClosingElementAt(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ if (this.eat(144)) {
+ return this.finishNode(node, "JSXClosingFragment");
+ }
+ node.name = this.jsxParseElementName();
+ this.expect(144);
+ return this.finishNode(node, "JSXClosingElement");
+ }
+ jsxParseElementAt(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ const children = [];
+ const openingElement = this.jsxParseOpeningElementAt(startLoc);
+ let closingElement = null;
+ if (!openingElement.selfClosing) {
+ contents: for (;;) {
+ switch (this.state.type) {
+ case 143:
+ startLoc = this.state.startLoc;
+ this.next();
+ if (this.eat(56)) {
+ closingElement = this.jsxParseClosingElementAt(startLoc);
+ break contents;
+ }
+ children.push(this.jsxParseElementAt(startLoc));
+ break;
+ case 142:
+ children.push(this.parseLiteral(this.state.value, "JSXText"));
+ break;
+ case 5:
+ {
+ const node = this.startNode();
+ this.setContext(types.brace);
+ this.next();
+ if (this.match(21)) {
+ children.push(this.jsxParseSpreadChild(node));
+ } else {
+ children.push(this.jsxParseExpressionContainer(node, types.j_expr));
+ }
+ break;
+ }
+ default:
+ this.unexpected();
+ }
+ }
+ if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {
+ this.raise(JsxErrors.MissingClosingTagFragment, closingElement);
+ } else if (!isFragment(openingElement) && isFragment(closingElement)) {
+ this.raise(JsxErrors.MissingClosingTagElement, closingElement, {
+ openingTagName: getQualifiedJSXName(openingElement.name)
+ });
+ } else if (!isFragment(openingElement) && !isFragment(closingElement)) {
+ if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {
+ this.raise(JsxErrors.MissingClosingTagElement, closingElement, {
+ openingTagName: getQualifiedJSXName(openingElement.name)
+ });
+ }
+ }
+ }
+ if (isFragment(openingElement)) {
+ node.openingFragment = openingElement;
+ node.closingFragment = closingElement;
+ } else {
+ node.openingElement = openingElement;
+ node.closingElement = closingElement;
+ }
+ node.children = children;
+ if (this.match(47)) {
+ throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc);
+ }
+ return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement");
+ }
+ jsxParseElement() {
+ const startLoc = this.state.startLoc;
+ this.next();
+ return this.jsxParseElementAt(startLoc);
+ }
+ setContext(newContext) {
+ const {
+ context
+ } = this.state;
+ context[context.length - 1] = newContext;
+ }
+ parseExprAtom(refExpressionErrors) {
+ if (this.match(143)) {
+ return this.jsxParseElement();
+ } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) {
+ this.replaceToken(143);
+ return this.jsxParseElement();
+ } else {
+ return super.parseExprAtom(refExpressionErrors);
+ }
+ }
+ skipSpace() {
+ const curContext = this.curContext();
+ if (!curContext.preserveSpace) super.skipSpace();
+ }
+ getTokenFromCode(code) {
+ const context = this.curContext();
+ if (context === types.j_expr) {
+ this.jsxReadToken();
+ return;
+ }
+ if (context === types.j_oTag || context === types.j_cTag) {
+ if (isIdentifierStart(code)) {
+ this.jsxReadWord();
+ return;
+ }
+ if (code === 62) {
+ ++this.state.pos;
+ this.finishToken(144);
+ return;
+ }
+ if ((code === 34 || code === 39) && context === types.j_oTag) {
+ this.jsxReadString(code);
+ return;
+ }
+ }
+ if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {
+ ++this.state.pos;
+ this.finishToken(143);
+ return;
+ }
+ super.getTokenFromCode(code);
+ }
+ updateContext(prevType) {
+ const {
+ context,
+ type
+ } = this.state;
+ if (type === 56 && prevType === 143) {
+ context.splice(-2, 2, types.j_cTag);
+ this.state.canStartJSXElement = false;
+ } else if (type === 143) {
+ context.push(types.j_oTag);
+ } else if (type === 144) {
+ const out = context[context.length - 1];
+ if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) {
+ context.pop();
+ this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;
+ } else {
+ this.setContext(types.j_expr);
+ this.state.canStartJSXElement = true;
+ }
+ } else {
+ this.state.canStartJSXElement = tokenComesBeforeExpression(type);
+ }
+ }
+};
+class TypeScriptScope extends Scope {
+ constructor(...args) {
+ super(...args);
+ this.tsNames = new Map();
+ }
+}
+class TypeScriptScopeHandler extends ScopeHandler {
+ constructor(...args) {
+ super(...args);
+ this.importsStack = [];
+ }
+ createScope(flags) {
+ this.importsStack.push(new Set());
+ return new TypeScriptScope(flags);
+ }
+ enter(flags) {
+ if (flags === 1024) {
+ this.importsStack.push(new Set());
+ }
+ super.enter(flags);
+ }
+ exit() {
+ const flags = super.exit();
+ if (flags === 1024) {
+ this.importsStack.pop();
+ }
+ return flags;
+ }
+ hasImport(name, allowShadow) {
+ const len = this.importsStack.length;
+ if (this.importsStack[len - 1].has(name)) {
+ return true;
+ }
+ if (!allowShadow && len > 1) {
+ for (let i = 0; i < len - 1; i++) {
+ if (this.importsStack[i].has(name)) return true;
+ }
+ }
+ return false;
+ }
+ declareName(name, bindingType, loc) {
+ if (bindingType & 4096) {
+ if (this.hasImport(name, true)) {
+ this.parser.raise(Errors.VarRedeclaration, loc, {
+ identifierName: name
+ });
+ }
+ this.importsStack[this.importsStack.length - 1].add(name);
+ return;
+ }
+ const scope = this.currentScope();
+ let type = scope.tsNames.get(name) || 0;
+ if (bindingType & 1024) {
+ this.maybeExportDefined(scope, name);
+ scope.tsNames.set(name, type | 16);
+ return;
+ }
+ super.declareName(name, bindingType, loc);
+ if (bindingType & 2) {
+ if (!(bindingType & 1)) {
+ this.checkRedeclarationInScope(scope, name, bindingType, loc);
+ this.maybeExportDefined(scope, name);
+ }
+ type = type | 1;
+ }
+ if (bindingType & 256) {
+ type = type | 2;
+ }
+ if (bindingType & 512) {
+ type = type | 4;
+ }
+ if (bindingType & 128) {
+ type = type | 8;
+ }
+ if (type) scope.tsNames.set(name, type);
+ }
+ isRedeclaredInScope(scope, name, bindingType) {
+ const type = scope.tsNames.get(name);
+ if ((type & 2) > 0) {
+ if (bindingType & 256) {
+ const isConst = !!(bindingType & 512);
+ const wasConst = (type & 4) > 0;
+ return isConst !== wasConst;
+ }
+ return true;
+ }
+ if (bindingType & 128 && (type & 8) > 0) {
+ if (scope.names.get(name) & 2) {
+ return !!(bindingType & 1);
+ } else {
+ return false;
+ }
+ }
+ if (bindingType & 2 && (type & 1) > 0) {
+ return true;
+ }
+ return super.isRedeclaredInScope(scope, name, bindingType);
+ }
+ checkLocalExport(id) {
+ const {
+ name
+ } = id;
+ if (this.hasImport(name)) return;
+ const len = this.scopeStack.length;
+ for (let i = len - 1; i >= 0; i--) {
+ const scope = this.scopeStack[i];
+ const type = scope.tsNames.get(name);
+ if ((type & 1) > 0 || (type & 16) > 0) {
+ return;
+ }
+ }
+ super.checkLocalExport(id);
+ }
+}
+class ProductionParameterHandler {
+ constructor() {
+ this.stacks = [];
+ }
+ enter(flags) {
+ this.stacks.push(flags);
+ }
+ exit() {
+ this.stacks.pop();
+ }
+ currentFlags() {
+ return this.stacks[this.stacks.length - 1];
+ }
+ get hasAwait() {
+ return (this.currentFlags() & 2) > 0;
+ }
+ get hasYield() {
+ return (this.currentFlags() & 1) > 0;
+ }
+ get hasReturn() {
+ return (this.currentFlags() & 4) > 0;
+ }
+ get hasIn() {
+ return (this.currentFlags() & 8) > 0;
+ }
+}
+function functionFlags(isAsync, isGenerator) {
+ return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0);
+}
+class BaseParser {
+ constructor() {
+ this.sawUnambiguousESM = false;
+ this.ambiguousScriptDifferentAst = false;
+ }
+ sourceToOffsetPos(sourcePos) {
+ return sourcePos + this.startIndex;
+ }
+ offsetToSourcePos(offsetPos) {
+ return offsetPos - this.startIndex;
+ }
+ hasPlugin(pluginConfig) {
+ if (typeof pluginConfig === "string") {
+ return this.plugins.has(pluginConfig);
+ } else {
+ const [pluginName, pluginOptions] = pluginConfig;
+ if (!this.hasPlugin(pluginName)) {
+ return false;
+ }
+ const actualOptions = this.plugins.get(pluginName);
+ for (const key of Object.keys(pluginOptions)) {
+ if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+ getPluginOption(plugin, name) {
+ var _this$plugins$get;
+ return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];
+ }
+}
+function setTrailingComments(node, comments) {
+ if (node.trailingComments === undefined) {
+ node.trailingComments = comments;
+ } else {
+ node.trailingComments.unshift(...comments);
+ }
+}
+function setLeadingComments(node, comments) {
+ if (node.leadingComments === undefined) {
+ node.leadingComments = comments;
+ } else {
+ node.leadingComments.unshift(...comments);
+ }
+}
+function setInnerComments(node, comments) {
+ if (node.innerComments === undefined) {
+ node.innerComments = comments;
+ } else {
+ node.innerComments.unshift(...comments);
+ }
+}
+function adjustInnerComments(node, elements, commentWS) {
+ let lastElement = null;
+ let i = elements.length;
+ while (lastElement === null && i > 0) {
+ lastElement = elements[--i];
+ }
+ if (lastElement === null || lastElement.start > commentWS.start) {
+ setInnerComments(node, commentWS.comments);
+ } else {
+ setTrailingComments(lastElement, commentWS.comments);
+ }
+}
+class CommentsParser extends BaseParser {
+ addComment(comment) {
+ if (this.filename) comment.loc.filename = this.filename;
+ const {
+ commentsLen
+ } = this.state;
+ if (this.comments.length !== commentsLen) {
+ this.comments.length = commentsLen;
+ }
+ this.comments.push(comment);
+ this.state.commentsLen++;
+ }
+ processComment(node) {
+ const {
+ commentStack
+ } = this.state;
+ const commentStackLength = commentStack.length;
+ if (commentStackLength === 0) return;
+ let i = commentStackLength - 1;
+ const lastCommentWS = commentStack[i];
+ if (lastCommentWS.start === node.end) {
+ lastCommentWS.leadingNode = node;
+ i--;
+ }
+ const {
+ start: nodeStart
+ } = node;
+ for (; i >= 0; i--) {
+ const commentWS = commentStack[i];
+ const commentEnd = commentWS.end;
+ if (commentEnd > nodeStart) {
+ commentWS.containingNode = node;
+ this.finalizeComment(commentWS);
+ commentStack.splice(i, 1);
+ } else {
+ if (commentEnd === nodeStart) {
+ commentWS.trailingNode = node;
+ }
+ break;
+ }
+ }
+ }
+ finalizeComment(commentWS) {
+ var _node$options;
+ const {
+ comments
+ } = commentWS;
+ if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {
+ if (commentWS.leadingNode !== null) {
+ setTrailingComments(commentWS.leadingNode, comments);
+ }
+ if (commentWS.trailingNode !== null) {
+ setLeadingComments(commentWS.trailingNode, comments);
+ }
+ } else {
+ const node = commentWS.containingNode;
+ const commentStart = commentWS.start;
+ if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) {
+ switch (node.type) {
+ case "ObjectExpression":
+ case "ObjectPattern":
+ adjustInnerComments(node, node.properties, commentWS);
+ break;
+ case "CallExpression":
+ case "OptionalCallExpression":
+ adjustInnerComments(node, node.arguments, commentWS);
+ break;
+ case "ImportExpression":
+ adjustInnerComments(node, [node.source, (_node$options = node.options) != null ? _node$options : null], commentWS);
+ break;
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "ArrowFunctionExpression":
+ case "ObjectMethod":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ adjustInnerComments(node, node.params, commentWS);
+ break;
+ case "ArrayExpression":
+ case "ArrayPattern":
+ adjustInnerComments(node, node.elements, commentWS);
+ break;
+ case "ExportNamedDeclaration":
+ case "ImportDeclaration":
+ adjustInnerComments(node, node.specifiers, commentWS);
+ break;
+ case "TSEnumDeclaration":
+ adjustInnerComments(node, node.members, commentWS);
+ break;
+ case "TSEnumBody":
+ adjustInnerComments(node, node.members, commentWS);
+ break;
+ default:
+ {
+ if (node.type === "RecordExpression") {
+ adjustInnerComments(node, node.properties, commentWS);
+ break;
+ }
+ if (node.type === "TupleExpression") {
+ adjustInnerComments(node, node.elements, commentWS);
+ break;
+ }
+ setInnerComments(node, comments);
+ }
+ }
+ } else {
+ setInnerComments(node, comments);
+ }
+ }
+ }
+ finalizeRemainingComments() {
+ const {
+ commentStack
+ } = this.state;
+ for (let i = commentStack.length - 1; i >= 0; i--) {
+ this.finalizeComment(commentStack[i]);
+ }
+ this.state.commentStack = [];
+ }
+ resetPreviousNodeTrailingComments(node) {
+ const {
+ commentStack
+ } = this.state;
+ const {
+ length
+ } = commentStack;
+ if (length === 0) return;
+ const commentWS = commentStack[length - 1];
+ if (commentWS.leadingNode === node) {
+ commentWS.leadingNode = null;
+ }
+ }
+ takeSurroundingComments(node, start, end) {
+ const {
+ commentStack
+ } = this.state;
+ const commentStackLength = commentStack.length;
+ if (commentStackLength === 0) return;
+ let i = commentStackLength - 1;
+ for (; i >= 0; i--) {
+ const commentWS = commentStack[i];
+ const commentEnd = commentWS.end;
+ const commentStart = commentWS.start;
+ if (commentStart === end) {
+ commentWS.leadingNode = node;
+ } else if (commentEnd === start) {
+ commentWS.trailingNode = node;
+ } else if (commentEnd < start) {
+ break;
+ }
+ }
+ }
+}
+class State {
+ constructor() {
+ this.flags = 1024;
+ this.startIndex = void 0;
+ this.curLine = void 0;
+ this.lineStart = void 0;
+ this.startLoc = void 0;
+ this.endLoc = void 0;
+ this.errors = [];
+ this.potentialArrowAt = -1;
+ this.noArrowAt = [];
+ this.noArrowParamsConversionAt = [];
+ this.topicContext = {
+ maxNumOfResolvableTopics: 0,
+ maxTopicIndex: null
+ };
+ this.labels = [];
+ this.commentsLen = 0;
+ this.commentStack = [];
+ this.pos = 0;
+ this.type = 140;
+ this.value = null;
+ this.start = 0;
+ this.end = 0;
+ this.lastTokEndLoc = null;
+ this.lastTokStartLoc = null;
+ this.context = [types.brace];
+ this.firstInvalidTemplateEscapePos = null;
+ this.strictErrors = new Map();
+ this.tokensLength = 0;
+ }
+ get strict() {
+ return (this.flags & 1) > 0;
+ }
+ set strict(v) {
+ if (v) this.flags |= 1;else this.flags &= -2;
+ }
+ init({
+ strictMode,
+ sourceType,
+ startIndex,
+ startLine,
+ startColumn
+ }) {
+ this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module";
+ this.startIndex = startIndex;
+ this.curLine = startLine;
+ this.lineStart = -startColumn;
+ this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex);
+ }
+ get maybeInArrowParameters() {
+ return (this.flags & 2) > 0;
+ }
+ set maybeInArrowParameters(v) {
+ if (v) this.flags |= 2;else this.flags &= -3;
+ }
+ get inType() {
+ return (this.flags & 4) > 0;
+ }
+ set inType(v) {
+ if (v) this.flags |= 4;else this.flags &= -5;
+ }
+ get noAnonFunctionType() {
+ return (this.flags & 8) > 0;
+ }
+ set noAnonFunctionType(v) {
+ if (v) this.flags |= 8;else this.flags &= -9;
+ }
+ get hasFlowComment() {
+ return (this.flags & 16) > 0;
+ }
+ set hasFlowComment(v) {
+ if (v) this.flags |= 16;else this.flags &= -17;
+ }
+ get isAmbientContext() {
+ return (this.flags & 32) > 0;
+ }
+ set isAmbientContext(v) {
+ if (v) this.flags |= 32;else this.flags &= -33;
+ }
+ get inAbstractClass() {
+ return (this.flags & 64) > 0;
+ }
+ set inAbstractClass(v) {
+ if (v) this.flags |= 64;else this.flags &= -65;
+ }
+ get inDisallowConditionalTypesContext() {
+ return (this.flags & 128) > 0;
+ }
+ set inDisallowConditionalTypesContext(v) {
+ if (v) this.flags |= 128;else this.flags &= -129;
+ }
+ get soloAwait() {
+ return (this.flags & 256) > 0;
+ }
+ set soloAwait(v) {
+ if (v) this.flags |= 256;else this.flags &= -257;
+ }
+ get inFSharpPipelineDirectBody() {
+ return (this.flags & 512) > 0;
+ }
+ set inFSharpPipelineDirectBody(v) {
+ if (v) this.flags |= 512;else this.flags &= -513;
+ }
+ get canStartJSXElement() {
+ return (this.flags & 1024) > 0;
+ }
+ set canStartJSXElement(v) {
+ if (v) this.flags |= 1024;else this.flags &= -1025;
+ }
+ get containsEsc() {
+ return (this.flags & 2048) > 0;
+ }
+ set containsEsc(v) {
+ if (v) this.flags |= 2048;else this.flags &= -2049;
+ }
+ get hasTopLevelAwait() {
+ return (this.flags & 4096) > 0;
+ }
+ set hasTopLevelAwait(v) {
+ if (v) this.flags |= 4096;else this.flags &= -4097;
+ }
+ curPosition() {
+ return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex);
+ }
+ clone() {
+ const state = new State();
+ state.flags = this.flags;
+ state.startIndex = this.startIndex;
+ state.curLine = this.curLine;
+ state.lineStart = this.lineStart;
+ state.startLoc = this.startLoc;
+ state.endLoc = this.endLoc;
+ state.errors = this.errors.slice();
+ state.potentialArrowAt = this.potentialArrowAt;
+ state.noArrowAt = this.noArrowAt.slice();
+ state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();
+ state.topicContext = this.topicContext;
+ state.labels = this.labels.slice();
+ state.commentsLen = this.commentsLen;
+ state.commentStack = this.commentStack.slice();
+ state.pos = this.pos;
+ state.type = this.type;
+ state.value = this.value;
+ state.start = this.start;
+ state.end = this.end;
+ state.lastTokEndLoc = this.lastTokEndLoc;
+ state.lastTokStartLoc = this.lastTokStartLoc;
+ state.context = this.context.slice();
+ state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;
+ state.strictErrors = this.strictErrors;
+ state.tokensLength = this.tokensLength;
+ return state;
+ }
+}
+var _isDigit = function isDigit(code) {
+ return code >= 48 && code <= 57;
+};
+const forbiddenNumericSeparatorSiblings = {
+ decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
+ hex: new Set([46, 88, 95, 120])
+};
+const isAllowedNumericSeparatorSibling = {
+ bin: ch => ch === 48 || ch === 49,
+ oct: ch => ch >= 48 && ch <= 55,
+ dec: ch => ch >= 48 && ch <= 57,
+ hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102
+};
+function readStringContents(type, input, pos, lineStart, curLine, errors) {
+ const initialPos = pos;
+ const initialLineStart = lineStart;
+ const initialCurLine = curLine;
+ let out = "";
+ let firstInvalidLoc = null;
+ let chunkStart = pos;
+ const {
+ length
+ } = input;
+ for (;;) {
+ if (pos >= length) {
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
+ out += input.slice(chunkStart, pos);
+ break;
+ }
+ const ch = input.charCodeAt(pos);
+ if (isStringEnd(type, ch, input, pos)) {
+ out += input.slice(chunkStart, pos);
+ break;
+ }
+ if (ch === 92) {
+ out += input.slice(chunkStart, pos);
+ const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
+ if (res.ch === null && !firstInvalidLoc) {
+ firstInvalidLoc = {
+ pos,
+ lineStart,
+ curLine
+ };
+ } else {
+ out += res.ch;
+ }
+ ({
+ pos,
+ lineStart,
+ curLine
+ } = res);
+ chunkStart = pos;
+ } else if (ch === 8232 || ch === 8233) {
+ ++pos;
+ ++curLine;
+ lineStart = pos;
+ } else if (ch === 10 || ch === 13) {
+ if (type === "template") {
+ out += input.slice(chunkStart, pos) + "\n";
+ ++pos;
+ if (ch === 13 && input.charCodeAt(pos) === 10) {
+ ++pos;
+ }
+ ++curLine;
+ chunkStart = lineStart = pos;
+ } else {
+ errors.unterminated(initialPos, initialLineStart, initialCurLine);
+ }
+ } else {
+ ++pos;
+ }
+ }
+ return {
+ pos,
+ str: out,
+ firstInvalidLoc,
+ lineStart,
+ curLine,
+ containsInvalid: !!firstInvalidLoc
+ };
+}
+function isStringEnd(type, ch, input, pos) {
+ if (type === "template") {
+ return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
+ }
+ return ch === (type === "double" ? 34 : 39);
+}
+function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
+ const throwOnInvalid = !inTemplate;
+ pos++;
+ const res = ch => ({
+ pos,
+ ch,
+ lineStart,
+ curLine
+ });
+ const ch = input.charCodeAt(pos++);
+ switch (ch) {
+ case 110:
+ return res("\n");
+ case 114:
+ return res("\r");
+ case 120:
+ {
+ let code;
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));
+ return res(code === null ? null : String.fromCharCode(code));
+ }
+ case 117:
+ {
+ let code;
+ ({
+ code,
+ pos
+ } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));
+ return res(code === null ? null : String.fromCodePoint(code));
+ }
+ case 116:
+ return res("\t");
+ case 98:
+ return res("\b");
+ case 118:
+ return res("\u000b");
+ case 102:
+ return res("\f");
+ case 13:
+ if (input.charCodeAt(pos) === 10) {
+ ++pos;
+ }
+ case 10:
+ lineStart = pos;
+ ++curLine;
+ case 8232:
+ case 8233:
+ return res("");
+ case 56:
+ case 57:
+ if (inTemplate) {
+ return res(null);
+ } else {
+ errors.strictNumericEscape(pos - 1, lineStart, curLine);
+ }
+ default:
+ if (ch >= 48 && ch <= 55) {
+ const startPos = pos - 1;
+ const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));
+ let octalStr = match[0];
+ let octal = parseInt(octalStr, 8);
+ if (octal > 255) {
+ octalStr = octalStr.slice(0, -1);
+ octal = parseInt(octalStr, 8);
+ }
+ pos += octalStr.length - 1;
+ const next = input.charCodeAt(pos);
+ if (octalStr !== "0" || next === 56 || next === 57) {
+ if (inTemplate) {
+ return res(null);
+ } else {
+ errors.strictNumericEscape(startPos, lineStart, curLine);
+ }
+ }
+ return res(String.fromCharCode(octal));
+ }
+ return res(String.fromCharCode(ch));
+ }
+}
+function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
+ const initialPos = pos;
+ let n;
+ ({
+ n,
+ pos
+ } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));
+ if (n === null) {
+ if (throwOnInvalid) {
+ errors.invalidEscapeSequence(initialPos, lineStart, curLine);
+ } else {
+ pos = initialPos - 1;
+ }
+ }
+ return {
+ code: n,
+ pos
+ };
+}
+function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
+ const start = pos;
+ const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
+ const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
+ let invalid = false;
+ let total = 0;
+ for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {
+ const code = input.charCodeAt(pos);
+ let val;
+ if (code === 95 && allowNumSeparator !== "bail") {
+ const prev = input.charCodeAt(pos - 1);
+ const next = input.charCodeAt(pos + 1);
+ if (!allowNumSeparator) {
+ if (bailOnError) return {
+ n: null,
+ pos
+ };
+ errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
+ } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
+ if (bailOnError) return {
+ n: null,
+ pos
+ };
+ errors.unexpectedNumericSeparator(pos, lineStart, curLine);
+ }
+ ++pos;
+ continue;
+ }
+ if (code >= 97) {
+ val = code - 97 + 10;
+ } else if (code >= 65) {
+ val = code - 65 + 10;
+ } else if (_isDigit(code)) {
+ val = code - 48;
+ } else {
+ val = Infinity;
+ }
+ if (val >= radix) {
+ if (val <= 9 && bailOnError) {
+ return {
+ n: null,
+ pos
+ };
+ } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
+ val = 0;
+ } else if (forceLen) {
+ val = 0;
+ invalid = true;
+ } else {
+ break;
+ }
+ }
+ ++pos;
+ total = total * radix + val;
+ }
+ if (pos === start || len != null && pos - start !== len || invalid) {
+ return {
+ n: null,
+ pos
+ };
+ }
+ return {
+ n: total,
+ pos
+ };
+}
+function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
+ const ch = input.charCodeAt(pos);
+ let code;
+ if (ch === 123) {
+ ++pos;
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors));
+ ++pos;
+ if (code !== null && code > 0x10ffff) {
+ if (throwOnInvalid) {
+ errors.invalidCodePoint(pos, lineStart, curLine);
+ } else {
+ return {
+ code: null,
+ pos
+ };
+ }
+ }
+ } else {
+ ({
+ code,
+ pos
+ } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));
+ }
+ return {
+ code,
+ pos
+ };
+}
+function buildPosition(pos, lineStart, curLine) {
+ return new Position(curLine, pos - lineStart, pos);
+}
+const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]);
+class Token {
+ constructor(state) {
+ const startIndex = state.startIndex || 0;
+ this.type = state.type;
+ this.value = state.value;
+ this.start = startIndex + state.start;
+ this.end = startIndex + state.end;
+ this.loc = new SourceLocation(state.startLoc, state.endLoc);
+ }
+}
+class Tokenizer extends CommentsParser {
+ constructor(options, input) {
+ super();
+ this.isLookahead = void 0;
+ this.tokens = [];
+ this.errorHandlers_readInt = {
+ invalidDigit: (pos, lineStart, curLine, radix) => {
+ if (!(this.optionFlags & 2048)) return false;
+ this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {
+ radix
+ });
+ return true;
+ },
+ numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence),
+ unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator)
+ };
+ this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, {
+ invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence),
+ invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint)
+ });
+ this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, {
+ strictNumericEscape: (pos, lineStart, curLine) => {
+ this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine));
+ },
+ unterminated: (pos, lineStart, curLine) => {
+ throw this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine));
+ }
+ });
+ this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, {
+ strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape),
+ unterminated: (pos, lineStart, curLine) => {
+ throw this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine));
+ }
+ });
+ this.state = new State();
+ this.state.init(options);
+ this.input = input;
+ this.length = input.length;
+ this.comments = [];
+ this.isLookahead = false;
+ }
+ pushToken(token) {
+ this.tokens.length = this.state.tokensLength;
+ this.tokens.push(token);
+ ++this.state.tokensLength;
+ }
+ next() {
+ this.checkKeywordEscapes();
+ if (this.optionFlags & 256) {
+ this.pushToken(new Token(this.state));
+ }
+ this.state.lastTokEndLoc = this.state.endLoc;
+ this.state.lastTokStartLoc = this.state.startLoc;
+ this.nextToken();
+ }
+ eat(type) {
+ if (this.match(type)) {
+ this.next();
+ return true;
+ } else {
+ return false;
+ }
+ }
+ match(type) {
+ return this.state.type === type;
+ }
+ createLookaheadState(state) {
+ return {
+ pos: state.pos,
+ value: null,
+ type: state.type,
+ start: state.start,
+ end: state.end,
+ context: [this.curContext()],
+ inType: state.inType,
+ startLoc: state.startLoc,
+ lastTokEndLoc: state.lastTokEndLoc,
+ curLine: state.curLine,
+ lineStart: state.lineStart,
+ curPosition: state.curPosition
+ };
+ }
+ lookahead() {
+ const old = this.state;
+ this.state = this.createLookaheadState(old);
+ this.isLookahead = true;
+ this.nextToken();
+ this.isLookahead = false;
+ const curr = this.state;
+ this.state = old;
+ return curr;
+ }
+ nextTokenStart() {
+ return this.nextTokenStartSince(this.state.pos);
+ }
+ nextTokenStartSince(pos) {
+ skipWhiteSpace.lastIndex = pos;
+ return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;
+ }
+ lookaheadCharCode() {
+ return this.lookaheadCharCodeSince(this.state.pos);
+ }
+ lookaheadCharCodeSince(pos) {
+ return this.input.charCodeAt(this.nextTokenStartSince(pos));
+ }
+ nextTokenInLineStart() {
+ return this.nextTokenInLineStartSince(this.state.pos);
+ }
+ nextTokenInLineStartSince(pos) {
+ skipWhiteSpaceInLine.lastIndex = pos;
+ return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos;
+ }
+ lookaheadInLineCharCode() {
+ return this.input.charCodeAt(this.nextTokenInLineStart());
+ }
+ codePointAtPos(pos) {
+ let cp = this.input.charCodeAt(pos);
+ if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {
+ const trail = this.input.charCodeAt(pos);
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
+ return cp;
+ }
+ setStrict(strict) {
+ this.state.strict = strict;
+ if (strict) {
+ this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, at));
+ this.state.strictErrors.clear();
+ }
+ }
+ curContext() {
+ return this.state.context[this.state.context.length - 1];
+ }
+ nextToken() {
+ this.skipSpace();
+ this.state.start = this.state.pos;
+ if (!this.isLookahead) this.state.startLoc = this.state.curPosition();
+ if (this.state.pos >= this.length) {
+ this.finishToken(140);
+ return;
+ }
+ this.getTokenFromCode(this.codePointAtPos(this.state.pos));
+ }
+ skipBlockComment(commentEnd) {
+ let startLoc;
+ if (!this.isLookahead) startLoc = this.state.curPosition();
+ const start = this.state.pos;
+ const end = this.input.indexOf(commentEnd, start + 2);
+ if (end === -1) {
+ throw this.raise(Errors.UnterminatedComment, this.state.curPosition());
+ }
+ this.state.pos = end + commentEnd.length;
+ lineBreakG.lastIndex = start + 2;
+ while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {
+ ++this.state.curLine;
+ this.state.lineStart = lineBreakG.lastIndex;
+ }
+ if (this.isLookahead) return;
+ const comment = {
+ type: "CommentBlock",
+ value: this.input.slice(start + 2, end),
+ start: this.sourceToOffsetPos(start),
+ end: this.sourceToOffsetPos(end + commentEnd.length),
+ loc: new SourceLocation(startLoc, this.state.curPosition())
+ };
+ if (this.optionFlags & 256) this.pushToken(comment);
+ return comment;
+ }
+ skipLineComment(startSkip) {
+ const start = this.state.pos;
+ let startLoc;
+ if (!this.isLookahead) startLoc = this.state.curPosition();
+ let ch = this.input.charCodeAt(this.state.pos += startSkip);
+ if (this.state.pos < this.length) {
+ while (!isNewLine(ch) && ++this.state.pos < this.length) {
+ ch = this.input.charCodeAt(this.state.pos);
+ }
+ }
+ if (this.isLookahead) return;
+ const end = this.state.pos;
+ const value = this.input.slice(start + startSkip, end);
+ const comment = {
+ type: "CommentLine",
+ value,
+ start: this.sourceToOffsetPos(start),
+ end: this.sourceToOffsetPos(end),
+ loc: new SourceLocation(startLoc, this.state.curPosition())
+ };
+ if (this.optionFlags & 256) this.pushToken(comment);
+ return comment;
+ }
+ skipSpace() {
+ const spaceStart = this.state.pos;
+ const comments = this.optionFlags & 4096 ? [] : null;
+ loop: while (this.state.pos < this.length) {
+ const ch = this.input.charCodeAt(this.state.pos);
+ switch (ch) {
+ case 32:
+ case 160:
+ case 9:
+ ++this.state.pos;
+ break;
+ case 13:
+ if (this.input.charCodeAt(this.state.pos + 1) === 10) {
+ ++this.state.pos;
+ }
+ case 10:
+ case 8232:
+ case 8233:
+ ++this.state.pos;
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+ break;
+ case 47:
+ switch (this.input.charCodeAt(this.state.pos + 1)) {
+ case 42:
+ {
+ const comment = this.skipBlockComment("*/");
+ if (comment !== undefined) {
+ this.addComment(comment);
+ comments == null || comments.push(comment);
+ }
+ break;
+ }
+ case 47:
+ {
+ const comment = this.skipLineComment(2);
+ if (comment !== undefined) {
+ this.addComment(comment);
+ comments == null || comments.push(comment);
+ }
+ break;
+ }
+ default:
+ break loop;
+ }
+ break;
+ default:
+ if (isWhitespace(ch)) {
+ ++this.state.pos;
+ } else if (ch === 45 && !this.inModule && this.optionFlags & 8192) {
+ const pos = this.state.pos;
+ if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {
+ const comment = this.skipLineComment(3);
+ if (comment !== undefined) {
+ this.addComment(comment);
+ comments == null || comments.push(comment);
+ }
+ } else {
+ break loop;
+ }
+ } else if (ch === 60 && !this.inModule && this.optionFlags & 8192) {
+ const pos = this.state.pos;
+ if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {
+ const comment = this.skipLineComment(4);
+ if (comment !== undefined) {
+ this.addComment(comment);
+ comments == null || comments.push(comment);
+ }
+ } else {
+ break loop;
+ }
+ } else {
+ break loop;
+ }
+ }
+ }
+ if ((comments == null ? void 0 : comments.length) > 0) {
+ const end = this.state.pos;
+ const commentWhitespace = {
+ start: this.sourceToOffsetPos(spaceStart),
+ end: this.sourceToOffsetPos(end),
+ comments: comments,
+ leadingNode: null,
+ trailingNode: null,
+ containingNode: null
+ };
+ this.state.commentStack.push(commentWhitespace);
+ }
+ }
+ finishToken(type, val) {
+ this.state.end = this.state.pos;
+ this.state.endLoc = this.state.curPosition();
+ const prevType = this.state.type;
+ this.state.type = type;
+ this.state.value = val;
+ if (!this.isLookahead) {
+ this.updateContext(prevType);
+ }
+ }
+ replaceToken(type) {
+ this.state.type = type;
+ this.updateContext();
+ }
+ readToken_numberSign() {
+ if (this.state.pos === 0 && this.readToken_interpreter()) {
+ return;
+ }
+ const nextPos = this.state.pos + 1;
+ const next = this.codePointAtPos(nextPos);
+ if (next >= 48 && next <= 57) {
+ throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition());
+ }
+ if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) {
+ this.expectPlugin("recordAndTuple");
+ if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") {
+ throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ if (next === 123) {
+ this.finishToken(7);
+ } else {
+ this.finishToken(1);
+ }
+ } else if (isIdentifierStart(next)) {
+ ++this.state.pos;
+ this.finishToken(139, this.readWord1(next));
+ } else if (next === 92) {
+ ++this.state.pos;
+ this.finishToken(139, this.readWord1());
+ } else {
+ this.finishOp(27, 1);
+ }
+ }
+ readToken_dot() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next >= 48 && next <= 57) {
+ this.readNumber(true);
+ return;
+ }
+ if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {
+ this.state.pos += 3;
+ this.finishToken(21);
+ } else {
+ ++this.state.pos;
+ this.finishToken(16);
+ }
+ }
+ readToken_slash() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 61) {
+ this.finishOp(31, 2);
+ } else {
+ this.finishOp(56, 1);
+ }
+ }
+ readToken_interpreter() {
+ if (this.state.pos !== 0 || this.length < 2) return false;
+ let ch = this.input.charCodeAt(this.state.pos + 1);
+ if (ch !== 33) return false;
+ const start = this.state.pos;
+ this.state.pos += 1;
+ while (!isNewLine(ch) && ++this.state.pos < this.length) {
+ ch = this.input.charCodeAt(this.state.pos);
+ }
+ const value = this.input.slice(start + 2, this.state.pos);
+ this.finishToken(28, value);
+ return true;
+ }
+ readToken_mult_modulo(code) {
+ let type = code === 42 ? 55 : 54;
+ let width = 1;
+ let next = this.input.charCodeAt(this.state.pos + 1);
+ if (code === 42 && next === 42) {
+ width++;
+ next = this.input.charCodeAt(this.state.pos + 2);
+ type = 57;
+ }
+ if (next === 61 && !this.state.inType) {
+ width++;
+ type = code === 37 ? 33 : 30;
+ }
+ this.finishOp(type, width);
+ }
+ readToken_pipe_amp(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === code) {
+ if (this.input.charCodeAt(this.state.pos + 2) === 61) {
+ this.finishOp(30, 3);
+ } else {
+ this.finishOp(code === 124 ? 41 : 42, 2);
+ }
+ return;
+ }
+ if (code === 124) {
+ if (next === 62) {
+ this.finishOp(39, 2);
+ return;
+ }
+ if (this.hasPlugin("recordAndTuple") && next === 125) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ this.finishToken(9);
+ return;
+ }
+ if (this.hasPlugin("recordAndTuple") && next === 93) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ this.finishToken(4);
+ return;
+ }
+ }
+ if (next === 61) {
+ this.finishOp(30, 2);
+ return;
+ }
+ this.finishOp(code === 124 ? 43 : 45, 1);
+ }
+ readToken_caret() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 61 && !this.state.inType) {
+ this.finishOp(32, 2);
+ } else if (next === 94 && this.hasPlugin(["pipelineOperator", {
+ proposal: "hack",
+ topicToken: "^^"
+ }])) {
+ this.finishOp(37, 2);
+ const lookaheadCh = this.input.codePointAt(this.state.pos);
+ if (lookaheadCh === 94) {
+ this.unexpected();
+ }
+ } else {
+ this.finishOp(44, 1);
+ }
+ }
+ readToken_atSign() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 64 && this.hasPlugin(["pipelineOperator", {
+ proposal: "hack",
+ topicToken: "@@"
+ }])) {
+ this.finishOp(38, 2);
+ } else {
+ this.finishOp(26, 1);
+ }
+ }
+ readToken_plus_min(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === code) {
+ this.finishOp(34, 2);
+ return;
+ }
+ if (next === 61) {
+ this.finishOp(30, 2);
+ } else {
+ this.finishOp(53, 1);
+ }
+ }
+ readToken_lt() {
+ const {
+ pos
+ } = this.state;
+ const next = this.input.charCodeAt(pos + 1);
+ if (next === 60) {
+ if (this.input.charCodeAt(pos + 2) === 61) {
+ this.finishOp(30, 3);
+ return;
+ }
+ this.finishOp(51, 2);
+ return;
+ }
+ if (next === 61) {
+ this.finishOp(49, 2);
+ return;
+ }
+ this.finishOp(47, 1);
+ }
+ readToken_gt() {
+ const {
+ pos
+ } = this.state;
+ const next = this.input.charCodeAt(pos + 1);
+ if (next === 62) {
+ const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;
+ if (this.input.charCodeAt(pos + size) === 61) {
+ this.finishOp(30, size + 1);
+ return;
+ }
+ this.finishOp(52, size);
+ return;
+ }
+ if (next === 61) {
+ this.finishOp(49, 2);
+ return;
+ }
+ this.finishOp(48, 1);
+ }
+ readToken_eq_excl(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 61) {
+ this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);
+ return;
+ }
+ if (code === 61 && next === 62) {
+ this.state.pos += 2;
+ this.finishToken(19);
+ return;
+ }
+ this.finishOp(code === 61 ? 29 : 35, 1);
+ }
+ readToken_question() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ const next2 = this.input.charCodeAt(this.state.pos + 2);
+ if (next === 63) {
+ if (next2 === 61) {
+ this.finishOp(30, 3);
+ } else {
+ this.finishOp(40, 2);
+ }
+ } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {
+ this.state.pos += 2;
+ this.finishToken(18);
+ } else {
+ ++this.state.pos;
+ this.finishToken(17);
+ }
+ }
+ getTokenFromCode(code) {
+ switch (code) {
+ case 46:
+ this.readToken_dot();
+ return;
+ case 40:
+ ++this.state.pos;
+ this.finishToken(10);
+ return;
+ case 41:
+ ++this.state.pos;
+ this.finishToken(11);
+ return;
+ case 59:
+ ++this.state.pos;
+ this.finishToken(13);
+ return;
+ case 44:
+ ++this.state.pos;
+ this.finishToken(12);
+ return;
+ case 91:
+ if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ this.finishToken(2);
+ } else {
+ ++this.state.pos;
+ this.finishToken(0);
+ }
+ return;
+ case 93:
+ ++this.state.pos;
+ this.finishToken(3);
+ return;
+ case 123:
+ if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, this.state.curPosition());
+ }
+ this.state.pos += 2;
+ this.finishToken(6);
+ } else {
+ ++this.state.pos;
+ this.finishToken(5);
+ }
+ return;
+ case 125:
+ ++this.state.pos;
+ this.finishToken(8);
+ return;
+ case 58:
+ if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) {
+ this.finishOp(15, 2);
+ } else {
+ ++this.state.pos;
+ this.finishToken(14);
+ }
+ return;
+ case 63:
+ this.readToken_question();
+ return;
+ case 96:
+ this.readTemplateToken();
+ return;
+ case 48:
+ {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 120 || next === 88) {
+ this.readRadixNumber(16);
+ return;
+ }
+ if (next === 111 || next === 79) {
+ this.readRadixNumber(8);
+ return;
+ }
+ if (next === 98 || next === 66) {
+ this.readRadixNumber(2);
+ return;
+ }
+ }
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ this.readNumber(false);
+ return;
+ case 34:
+ case 39:
+ this.readString(code);
+ return;
+ case 47:
+ this.readToken_slash();
+ return;
+ case 37:
+ case 42:
+ this.readToken_mult_modulo(code);
+ return;
+ case 124:
+ case 38:
+ this.readToken_pipe_amp(code);
+ return;
+ case 94:
+ this.readToken_caret();
+ return;
+ case 43:
+ case 45:
+ this.readToken_plus_min(code);
+ return;
+ case 60:
+ this.readToken_lt();
+ return;
+ case 62:
+ this.readToken_gt();
+ return;
+ case 61:
+ case 33:
+ this.readToken_eq_excl(code);
+ return;
+ case 126:
+ this.finishOp(36, 1);
+ return;
+ case 64:
+ this.readToken_atSign();
+ return;
+ case 35:
+ this.readToken_numberSign();
+ return;
+ case 92:
+ this.readWord();
+ return;
+ default:
+ if (isIdentifierStart(code)) {
+ this.readWord(code);
+ return;
+ }
+ }
+ throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), {
+ unexpected: String.fromCodePoint(code)
+ });
+ }
+ finishOp(type, size) {
+ const str = this.input.slice(this.state.pos, this.state.pos + size);
+ this.state.pos += size;
+ this.finishToken(type, str);
+ }
+ readRegexp() {
+ const startLoc = this.state.startLoc;
+ const start = this.state.start + 1;
+ let escaped, inClass;
+ let {
+ pos
+ } = this.state;
+ for (;; ++pos) {
+ if (pos >= this.length) {
+ throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));
+ }
+ const ch = this.input.charCodeAt(pos);
+ if (isNewLine(ch)) {
+ throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));
+ }
+ if (escaped) {
+ escaped = false;
+ } else {
+ if (ch === 91) {
+ inClass = true;
+ } else if (ch === 93 && inClass) {
+ inClass = false;
+ } else if (ch === 47 && !inClass) {
+ break;
+ }
+ escaped = ch === 92;
+ }
+ }
+ const content = this.input.slice(start, pos);
+ ++pos;
+ let mods = "";
+ const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start);
+ while (pos < this.length) {
+ const cp = this.codePointAtPos(pos);
+ const char = String.fromCharCode(cp);
+ if (VALID_REGEX_FLAGS.has(cp)) {
+ if (cp === 118) {
+ if (mods.includes("u")) {
+ this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());
+ }
+ } else if (cp === 117) {
+ if (mods.includes("v")) {
+ this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());
+ }
+ }
+ if (mods.includes(char)) {
+ this.raise(Errors.DuplicateRegExpFlags, nextPos());
+ }
+ } else if (isIdentifierChar(cp) || cp === 92) {
+ this.raise(Errors.MalformedRegExpFlags, nextPos());
+ } else {
+ break;
+ }
+ ++pos;
+ mods += char;
+ }
+ this.state.pos = pos;
+ this.finishToken(138, {
+ pattern: content,
+ flags: mods
+ });
+ }
+ readInt(radix, len, forceLen = false, allowNumSeparator = true) {
+ const {
+ n,
+ pos
+ } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false);
+ this.state.pos = pos;
+ return n;
+ }
+ readRadixNumber(radix) {
+ const start = this.state.pos;
+ const startLoc = this.state.curPosition();
+ let isBigInt = false;
+ this.state.pos += 2;
+ const val = this.readInt(radix);
+ if (val == null) {
+ this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), {
+ radix
+ });
+ }
+ const next = this.input.charCodeAt(this.state.pos);
+ if (next === 110) {
+ ++this.state.pos;
+ isBigInt = true;
+ } else if (next === 109) {
+ throw this.raise(Errors.InvalidDecimal, startLoc);
+ }
+ if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
+ throw this.raise(Errors.NumberIdentifier, this.state.curPosition());
+ }
+ if (isBigInt) {
+ const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, "");
+ this.finishToken(136, str);
+ return;
+ }
+ this.finishToken(135, val);
+ }
+ readNumber(startsWithDot) {
+ const start = this.state.pos;
+ const startLoc = this.state.curPosition();
+ let isFloat = false;
+ let isBigInt = false;
+ let hasExponent = false;
+ let isOctal = false;
+ if (!startsWithDot && this.readInt(10) === null) {
+ this.raise(Errors.InvalidNumber, this.state.curPosition());
+ }
+ const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;
+ if (hasLeadingZero) {
+ const integer = this.input.slice(start, this.state.pos);
+ this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);
+ if (!this.state.strict) {
+ const underscorePos = integer.indexOf("_");
+ if (underscorePos > 0) {
+ this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos));
+ }
+ }
+ isOctal = hasLeadingZero && !/[89]/.test(integer);
+ }
+ let next = this.input.charCodeAt(this.state.pos);
+ if (next === 46 && !isOctal) {
+ ++this.state.pos;
+ this.readInt(10);
+ isFloat = true;
+ next = this.input.charCodeAt(this.state.pos);
+ }
+ if ((next === 69 || next === 101) && !isOctal) {
+ next = this.input.charCodeAt(++this.state.pos);
+ if (next === 43 || next === 45) {
+ ++this.state.pos;
+ }
+ if (this.readInt(10) === null) {
+ this.raise(Errors.InvalidOrMissingExponent, startLoc);
+ }
+ isFloat = true;
+ hasExponent = true;
+ next = this.input.charCodeAt(this.state.pos);
+ }
+ if (next === 110) {
+ if (isFloat || hasLeadingZero) {
+ this.raise(Errors.InvalidBigIntLiteral, startLoc);
+ }
+ ++this.state.pos;
+ isBigInt = true;
+ }
+ if (next === 109) {
+ this.expectPlugin("decimal", this.state.curPosition());
+ if (hasExponent || hasLeadingZero) {
+ this.raise(Errors.InvalidDecimal, startLoc);
+ }
+ ++this.state.pos;
+ var isDecimal = true;
+ }
+ if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
+ throw this.raise(Errors.NumberIdentifier, this.state.curPosition());
+ }
+ const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, "");
+ if (isBigInt) {
+ this.finishToken(136, str);
+ return;
+ }
+ if (isDecimal) {
+ this.finishToken(137, str);
+ return;
+ }
+ const val = isOctal ? parseInt(str, 8) : parseFloat(str);
+ this.finishToken(135, val);
+ }
+ readCodePoint(throwOnInvalid) {
+ const {
+ code,
+ pos
+ } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint);
+ this.state.pos = pos;
+ return code;
+ }
+ readString(quote) {
+ const {
+ str,
+ pos,
+ curLine,
+ lineStart
+ } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string);
+ this.state.pos = pos + 1;
+ this.state.lineStart = lineStart;
+ this.state.curLine = curLine;
+ this.finishToken(134, str);
+ }
+ readTemplateContinuation() {
+ if (!this.match(8)) {
+ this.unexpected(null, 8);
+ }
+ this.state.pos--;
+ this.readTemplateToken();
+ }
+ readTemplateToken() {
+ const opening = this.input[this.state.pos];
+ const {
+ str,
+ firstInvalidLoc,
+ pos,
+ curLine,
+ lineStart
+ } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template);
+ this.state.pos = pos + 1;
+ this.state.lineStart = lineStart;
+ this.state.curLine = curLine;
+ if (firstInvalidLoc) {
+ this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos));
+ }
+ if (this.input.codePointAt(pos) === 96) {
+ this.finishToken(24, firstInvalidLoc ? null : opening + str + "`");
+ } else {
+ this.state.pos++;
+ this.finishToken(25, firstInvalidLoc ? null : opening + str + "${");
+ }
+ }
+ recordStrictModeErrors(toParseError, at) {
+ const index = at.index;
+ if (this.state.strict && !this.state.strictErrors.has(index)) {
+ this.raise(toParseError, at);
+ } else {
+ this.state.strictErrors.set(index, [toParseError, at]);
+ }
+ }
+ readWord1(firstCode) {
+ this.state.containsEsc = false;
+ let word = "";
+ const start = this.state.pos;
+ let chunkStart = this.state.pos;
+ if (firstCode !== undefined) {
+ this.state.pos += firstCode <= 0xffff ? 1 : 2;
+ }
+ while (this.state.pos < this.length) {
+ const ch = this.codePointAtPos(this.state.pos);
+ if (isIdentifierChar(ch)) {
+ this.state.pos += ch <= 0xffff ? 1 : 2;
+ } else if (ch === 92) {
+ this.state.containsEsc = true;
+ word += this.input.slice(chunkStart, this.state.pos);
+ const escStart = this.state.curPosition();
+ const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;
+ if (this.input.charCodeAt(++this.state.pos) !== 117) {
+ this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());
+ chunkStart = this.state.pos - 1;
+ continue;
+ }
+ ++this.state.pos;
+ const esc = this.readCodePoint(true);
+ if (esc !== null) {
+ if (!identifierCheck(esc)) {
+ this.raise(Errors.EscapedCharNotAnIdentifier, escStart);
+ }
+ word += String.fromCodePoint(esc);
+ }
+ chunkStart = this.state.pos;
+ } else {
+ break;
+ }
+ }
+ return word + this.input.slice(chunkStart, this.state.pos);
+ }
+ readWord(firstCode) {
+ const word = this.readWord1(firstCode);
+ const type = keywords$1.get(word);
+ if (type !== undefined) {
+ this.finishToken(type, tokenLabelName(type));
+ } else {
+ this.finishToken(132, word);
+ }
+ }
+ checkKeywordEscapes() {
+ const {
+ type
+ } = this.state;
+ if (tokenIsKeyword(type) && this.state.containsEsc) {
+ this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {
+ reservedWord: tokenLabelName(type)
+ });
+ }
+ }
+ raise(toParseError, at, details = {}) {
+ const loc = at instanceof Position ? at : at.loc.start;
+ const error = toParseError(loc, details);
+ if (!(this.optionFlags & 2048)) throw error;
+ if (!this.isLookahead) this.state.errors.push(error);
+ return error;
+ }
+ raiseOverwrite(toParseError, at, details = {}) {
+ const loc = at instanceof Position ? at : at.loc.start;
+ const pos = loc.index;
+ const errors = this.state.errors;
+ for (let i = errors.length - 1; i >= 0; i--) {
+ const error = errors[i];
+ if (error.loc.index === pos) {
+ return errors[i] = toParseError(loc, details);
+ }
+ if (error.loc.index < pos) break;
+ }
+ return this.raise(toParseError, at, details);
+ }
+ updateContext(prevType) {}
+ unexpected(loc, type) {
+ throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, {
+ expected: type ? tokenLabelName(type) : null
+ });
+ }
+ expectPlugin(pluginName, loc) {
+ if (this.hasPlugin(pluginName)) {
+ return true;
+ }
+ throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, {
+ missingPlugin: [pluginName]
+ });
+ }
+ expectOnePlugin(pluginNames) {
+ if (!pluginNames.some(name => this.hasPlugin(name))) {
+ throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {
+ missingPlugin: pluginNames
+ });
+ }
+ }
+ errorBuilder(error) {
+ return (pos, lineStart, curLine) => {
+ this.raise(error, buildPosition(pos, lineStart, curLine));
+ };
+ }
+}
+class ClassScope {
+ constructor() {
+ this.privateNames = new Set();
+ this.loneAccessors = new Map();
+ this.undefinedPrivateNames = new Map();
+ }
+}
+class ClassScopeHandler {
+ constructor(parser) {
+ this.parser = void 0;
+ this.stack = [];
+ this.undefinedPrivateNames = new Map();
+ this.parser = parser;
+ }
+ current() {
+ return this.stack[this.stack.length - 1];
+ }
+ enter() {
+ this.stack.push(new ClassScope());
+ }
+ exit() {
+ const oldClassScope = this.stack.pop();
+ const current = this.current();
+ for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {
+ if (current) {
+ if (!current.undefinedPrivateNames.has(name)) {
+ current.undefinedPrivateNames.set(name, loc);
+ }
+ } else {
+ this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {
+ identifierName: name
+ });
+ }
+ }
+ }
+ declarePrivateName(name, elementType, loc) {
+ const {
+ privateNames,
+ loneAccessors,
+ undefinedPrivateNames
+ } = this.current();
+ let redefined = privateNames.has(name);
+ if (elementType & 3) {
+ const accessor = redefined && loneAccessors.get(name);
+ if (accessor) {
+ const oldStatic = accessor & 4;
+ const newStatic = elementType & 4;
+ const oldKind = accessor & 3;
+ const newKind = elementType & 3;
+ redefined = oldKind === newKind || oldStatic !== newStatic;
+ if (!redefined) loneAccessors.delete(name);
+ } else if (!redefined) {
+ loneAccessors.set(name, elementType);
+ }
+ }
+ if (redefined) {
+ this.parser.raise(Errors.PrivateNameRedeclaration, loc, {
+ identifierName: name
+ });
+ }
+ privateNames.add(name);
+ undefinedPrivateNames.delete(name);
+ }
+ usePrivateName(name, loc) {
+ let classScope;
+ for (classScope of this.stack) {
+ if (classScope.privateNames.has(name)) return;
+ }
+ if (classScope) {
+ classScope.undefinedPrivateNames.set(name, loc);
+ } else {
+ this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {
+ identifierName: name
+ });
+ }
+ }
+}
+class ExpressionScope {
+ constructor(type = 0) {
+ this.type = type;
+ }
+ canBeArrowParameterDeclaration() {
+ return this.type === 2 || this.type === 1;
+ }
+ isCertainlyParameterDeclaration() {
+ return this.type === 3;
+ }
+}
+class ArrowHeadParsingScope extends ExpressionScope {
+ constructor(type) {
+ super(type);
+ this.declarationErrors = new Map();
+ }
+ recordDeclarationError(ParsingErrorClass, at) {
+ const index = at.index;
+ this.declarationErrors.set(index, [ParsingErrorClass, at]);
+ }
+ clearDeclarationError(index) {
+ this.declarationErrors.delete(index);
+ }
+ iterateErrors(iterator) {
+ this.declarationErrors.forEach(iterator);
+ }
+}
+class ExpressionScopeHandler {
+ constructor(parser) {
+ this.parser = void 0;
+ this.stack = [new ExpressionScope()];
+ this.parser = parser;
+ }
+ enter(scope) {
+ this.stack.push(scope);
+ }
+ exit() {
+ this.stack.pop();
+ }
+ recordParameterInitializerError(toParseError, node) {
+ const origin = node.loc.start;
+ const {
+ stack
+ } = this;
+ let i = stack.length - 1;
+ let scope = stack[i];
+ while (!scope.isCertainlyParameterDeclaration()) {
+ if (scope.canBeArrowParameterDeclaration()) {
+ scope.recordDeclarationError(toParseError, origin);
+ } else {
+ return;
+ }
+ scope = stack[--i];
+ }
+ this.parser.raise(toParseError, origin);
+ }
+ recordArrowParameterBindingError(error, node) {
+ const {
+ stack
+ } = this;
+ const scope = stack[stack.length - 1];
+ const origin = node.loc.start;
+ if (scope.isCertainlyParameterDeclaration()) {
+ this.parser.raise(error, origin);
+ } else if (scope.canBeArrowParameterDeclaration()) {
+ scope.recordDeclarationError(error, origin);
+ } else {
+ return;
+ }
+ }
+ recordAsyncArrowParametersError(at) {
+ const {
+ stack
+ } = this;
+ let i = stack.length - 1;
+ let scope = stack[i];
+ while (scope.canBeArrowParameterDeclaration()) {
+ if (scope.type === 2) {
+ scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);
+ }
+ scope = stack[--i];
+ }
+ }
+ validateAsPattern() {
+ const {
+ stack
+ } = this;
+ const currentScope = stack[stack.length - 1];
+ if (!currentScope.canBeArrowParameterDeclaration()) return;
+ currentScope.iterateErrors(([toParseError, loc]) => {
+ this.parser.raise(toParseError, loc);
+ let i = stack.length - 2;
+ let scope = stack[i];
+ while (scope.canBeArrowParameterDeclaration()) {
+ scope.clearDeclarationError(loc.index);
+ scope = stack[--i];
+ }
+ });
+ }
+}
+function newParameterDeclarationScope() {
+ return new ExpressionScope(3);
+}
+function newArrowHeadScope() {
+ return new ArrowHeadParsingScope(1);
+}
+function newAsyncArrowScope() {
+ return new ArrowHeadParsingScope(2);
+}
+function newExpressionScope() {
+ return new ExpressionScope();
+}
+class UtilParser extends Tokenizer {
+ addExtra(node, key, value, enumerable = true) {
+ if (!node) return;
+ let {
+ extra
+ } = node;
+ if (extra == null) {
+ extra = {};
+ node.extra = extra;
+ }
+ if (enumerable) {
+ extra[key] = value;
+ } else {
+ Object.defineProperty(extra, key, {
+ enumerable,
+ value
+ });
+ }
+ }
+ isContextual(token) {
+ return this.state.type === token && !this.state.containsEsc;
+ }
+ isUnparsedContextual(nameStart, name) {
+ if (this.input.startsWith(name, nameStart)) {
+ const nextCh = this.input.charCodeAt(nameStart + name.length);
+ return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);
+ }
+ return false;
+ }
+ isLookaheadContextual(name) {
+ const next = this.nextTokenStart();
+ return this.isUnparsedContextual(next, name);
+ }
+ eatContextual(token) {
+ if (this.isContextual(token)) {
+ this.next();
+ return true;
+ }
+ return false;
+ }
+ expectContextual(token, toParseError) {
+ if (!this.eatContextual(token)) {
+ if (toParseError != null) {
+ throw this.raise(toParseError, this.state.startLoc);
+ }
+ this.unexpected(null, token);
+ }
+ }
+ canInsertSemicolon() {
+ return this.match(140) || this.match(8) || this.hasPrecedingLineBreak();
+ }
+ hasPrecedingLineBreak() {
+ return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start);
+ }
+ hasFollowingLineBreak() {
+ return hasNewLine(this.input, this.state.end, this.nextTokenStart());
+ }
+ isLineTerminator() {
+ return this.eat(13) || this.canInsertSemicolon();
+ }
+ semicolon(allowAsi = true) {
+ if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;
+ this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc);
+ }
+ expect(type, loc) {
+ if (!this.eat(type)) {
+ this.unexpected(loc, type);
+ }
+ }
+ tryParse(fn, oldState = this.state.clone()) {
+ const abortSignal = {
+ node: null
+ };
+ try {
+ const node = fn((node = null) => {
+ abortSignal.node = node;
+ throw abortSignal;
+ });
+ if (this.state.errors.length > oldState.errors.length) {
+ const failState = this.state;
+ this.state = oldState;
+ this.state.tokensLength = failState.tokensLength;
+ return {
+ node,
+ error: failState.errors[oldState.errors.length],
+ thrown: false,
+ aborted: false,
+ failState
+ };
+ }
+ return {
+ node: node,
+ error: null,
+ thrown: false,
+ aborted: false,
+ failState: null
+ };
+ } catch (error) {
+ const failState = this.state;
+ this.state = oldState;
+ if (error instanceof SyntaxError) {
+ return {
+ node: null,
+ error,
+ thrown: true,
+ aborted: false,
+ failState
+ };
+ }
+ if (error === abortSignal) {
+ return {
+ node: abortSignal.node,
+ error: null,
+ thrown: false,
+ aborted: true,
+ failState
+ };
+ }
+ throw error;
+ }
+ }
+ checkExpressionErrors(refExpressionErrors, andThrow) {
+ if (!refExpressionErrors) return false;
+ const {
+ shorthandAssignLoc,
+ doubleProtoLoc,
+ privateKeyLoc,
+ optionalParametersLoc,
+ voidPatternLoc
+ } = refExpressionErrors;
+ const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc || !!voidPatternLoc;
+ if (!andThrow) {
+ return hasErrors;
+ }
+ if (shorthandAssignLoc != null) {
+ this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);
+ }
+ if (doubleProtoLoc != null) {
+ this.raise(Errors.DuplicateProto, doubleProtoLoc);
+ }
+ if (privateKeyLoc != null) {
+ this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);
+ }
+ if (optionalParametersLoc != null) {
+ this.unexpected(optionalParametersLoc);
+ }
+ if (voidPatternLoc != null) {
+ this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc);
+ }
+ }
+ isLiteralPropertyName() {
+ return tokenIsLiteralPropertyName(this.state.type);
+ }
+ isPrivateName(node) {
+ return node.type === "PrivateName";
+ }
+ getPrivateNameSV(node) {
+ return node.id.name;
+ }
+ hasPropertyAsPrivateName(node) {
+ return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property);
+ }
+ isObjectProperty(node) {
+ return node.type === "ObjectProperty";
+ }
+ isObjectMethod(node) {
+ return node.type === "ObjectMethod";
+ }
+ initializeScopes(inModule = this.options.sourceType === "module") {
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ const oldExportedIdentifiers = this.exportedIdentifiers;
+ this.exportedIdentifiers = new Set();
+ const oldInModule = this.inModule;
+ this.inModule = inModule;
+ const oldScope = this.scope;
+ const ScopeHandler = this.getScopeHandler();
+ this.scope = new ScopeHandler(this, inModule);
+ const oldProdParam = this.prodParam;
+ this.prodParam = new ProductionParameterHandler();
+ const oldClassScope = this.classScope;
+ this.classScope = new ClassScopeHandler(this);
+ const oldExpressionScope = this.expressionScope;
+ this.expressionScope = new ExpressionScopeHandler(this);
+ return () => {
+ this.state.labels = oldLabels;
+ this.exportedIdentifiers = oldExportedIdentifiers;
+ this.inModule = oldInModule;
+ this.scope = oldScope;
+ this.prodParam = oldProdParam;
+ this.classScope = oldClassScope;
+ this.expressionScope = oldExpressionScope;
+ };
+ }
+ enterInitialScopes() {
+ let paramFlags = 0;
+ if (this.inModule || this.optionFlags & 1) {
+ paramFlags |= 2;
+ }
+ if (this.optionFlags & 32) {
+ paramFlags |= 1;
+ }
+ const isCommonJS = !this.inModule && this.options.sourceType === "commonjs";
+ if (isCommonJS || this.optionFlags & 2) {
+ paramFlags |= 4;
+ }
+ this.prodParam.enter(paramFlags);
+ let scopeFlags = isCommonJS ? 514 : 1;
+ if (this.optionFlags & 4) {
+ scopeFlags |= 512;
+ }
+ this.scope.enter(scopeFlags);
+ }
+ checkDestructuringPrivate(refExpressionErrors) {
+ const {
+ privateKeyLoc
+ } = refExpressionErrors;
+ if (privateKeyLoc !== null) {
+ this.expectPlugin("destructuringPrivate", privateKeyLoc);
+ }
+ }
+}
+class ExpressionErrors {
+ constructor() {
+ this.shorthandAssignLoc = null;
+ this.doubleProtoLoc = null;
+ this.privateKeyLoc = null;
+ this.optionalParametersLoc = null;
+ this.voidPatternLoc = null;
+ }
+}
+class Node {
+ constructor(parser, pos, loc) {
+ this.type = "";
+ this.start = pos;
+ this.end = 0;
+ this.loc = new SourceLocation(loc);
+ if ((parser == null ? void 0 : parser.optionFlags) & 128) this.range = [pos, 0];
+ if (parser != null && parser.filename) this.loc.filename = parser.filename;
+ }
+}
+const NodePrototype = Node.prototype;
+NodePrototype.__clone = function () {
+ const newNode = new Node(undefined, this.start, this.loc.start);
+ const keys = Object.keys(this);
+ for (let i = 0, length = keys.length; i < length; i++) {
+ const key = keys[i];
+ if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") {
+ newNode[key] = this[key];
+ }
+ }
+ return newNode;
+};
+class NodeUtils extends UtilParser {
+ startNode() {
+ const loc = this.state.startLoc;
+ return new Node(this, loc.index, loc);
+ }
+ startNodeAt(loc) {
+ return new Node(this, loc.index, loc);
+ }
+ startNodeAtNode(type) {
+ return this.startNodeAt(type.loc.start);
+ }
+ finishNode(node, type) {
+ return this.finishNodeAt(node, type, this.state.lastTokEndLoc);
+ }
+ finishNodeAt(node, type, endLoc) {
+ node.type = type;
+ node.end = endLoc.index;
+ node.loc.end = endLoc;
+ if (this.optionFlags & 128) node.range[1] = endLoc.index;
+ if (this.optionFlags & 4096) {
+ this.processComment(node);
+ }
+ return node;
+ }
+ resetStartLocation(node, startLoc) {
+ node.start = startLoc.index;
+ node.loc.start = startLoc;
+ if (this.optionFlags & 128) node.range[0] = startLoc.index;
+ }
+ resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {
+ node.end = endLoc.index;
+ node.loc.end = endLoc;
+ if (this.optionFlags & 128) node.range[1] = endLoc.index;
+ }
+ resetStartLocationFromNode(node, locationNode) {
+ this.resetStartLocation(node, locationNode.loc.start);
+ }
+ castNodeTo(node, type) {
+ node.type = type;
+ return node;
+ }
+ cloneIdentifier(node) {
+ const {
+ type,
+ start,
+ end,
+ loc,
+ range,
+ name
+ } = node;
+ const cloned = Object.create(NodePrototype);
+ cloned.type = type;
+ cloned.start = start;
+ cloned.end = end;
+ cloned.loc = loc;
+ cloned.range = range;
+ cloned.name = name;
+ if (node.extra) cloned.extra = node.extra;
+ return cloned;
+ }
+ cloneStringLiteral(node) {
+ const {
+ type,
+ start,
+ end,
+ loc,
+ range,
+ extra
+ } = node;
+ const cloned = Object.create(NodePrototype);
+ cloned.type = type;
+ cloned.start = start;
+ cloned.end = end;
+ cloned.loc = loc;
+ cloned.range = range;
+ cloned.extra = extra;
+ cloned.value = node.value;
+ return cloned;
+ }
+}
+const unwrapParenthesizedExpression = node => {
+ return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node;
+};
+class LValParser extends NodeUtils {
+ toAssignable(node, isLHS = false) {
+ var _node$extra, _node$extra3;
+ let parenthesized = undefined;
+ if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {
+ parenthesized = unwrapParenthesizedExpression(node);
+ if (isLHS) {
+ if (parenthesized.type === "Identifier") {
+ this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node);
+ } else if (parenthesized.type !== "CallExpression" && parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) {
+ this.raise(Errors.InvalidParenthesizedAssignment, node);
+ }
+ } else {
+ this.raise(Errors.InvalidParenthesizedAssignment, node);
+ }
+ }
+ switch (node.type) {
+ case "Identifier":
+ case "ObjectPattern":
+ case "ArrayPattern":
+ case "AssignmentPattern":
+ case "RestElement":
+ case "VoidPattern":
+ break;
+ case "ObjectExpression":
+ this.castNodeTo(node, "ObjectPattern");
+ for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) {
+ var _node$extra2;
+ const prop = node.properties[i];
+ const isLast = i === last;
+ this.toAssignableObjectExpressionProp(prop, isLast, isLHS);
+ if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) {
+ this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);
+ }
+ }
+ break;
+ case "ObjectProperty":
+ {
+ const {
+ key,
+ value
+ } = node;
+ if (this.isPrivateName(key)) {
+ this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
+ }
+ this.toAssignable(value, isLHS);
+ break;
+ }
+ case "SpreadElement":
+ {
+ throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller.");
+ }
+ case "ArrayExpression":
+ this.castNodeTo(node, "ArrayPattern");
+ this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS);
+ break;
+ case "AssignmentExpression":
+ if (node.operator !== "=") {
+ this.raise(Errors.MissingEqInAssignment, node.left.loc.end);
+ }
+ this.castNodeTo(node, "AssignmentPattern");
+ delete node.operator;
+ if (node.left.type === "VoidPattern") {
+ this.raise(Errors.VoidPatternInitializer, node.left);
+ }
+ this.toAssignable(node.left, isLHS);
+ break;
+ case "ParenthesizedExpression":
+ this.toAssignable(parenthesized, isLHS);
+ break;
+ }
+ }
+ toAssignableObjectExpressionProp(prop, isLast, isLHS) {
+ if (prop.type === "ObjectMethod") {
+ this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key);
+ } else if (prop.type === "SpreadElement") {
+ this.castNodeTo(prop, "RestElement");
+ const arg = prop.argument;
+ this.checkToRestConversion(arg, false);
+ this.toAssignable(arg, isLHS);
+ if (!isLast) {
+ this.raise(Errors.RestTrailingComma, prop);
+ }
+ } else {
+ this.toAssignable(prop, isLHS);
+ }
+ }
+ toAssignableList(exprList, trailingCommaLoc, isLHS) {
+ const end = exprList.length - 1;
+ for (let i = 0; i <= end; i++) {
+ const elt = exprList[i];
+ if (!elt) continue;
+ this.toAssignableListItem(exprList, i, isLHS);
+ if (elt.type === "RestElement") {
+ if (i < end) {
+ this.raise(Errors.RestTrailingComma, elt);
+ } else if (trailingCommaLoc) {
+ this.raise(Errors.RestTrailingComma, trailingCommaLoc);
+ }
+ }
+ }
+ }
+ toAssignableListItem(exprList, index, isLHS) {
+ const node = exprList[index];
+ if (node.type === "SpreadElement") {
+ this.castNodeTo(node, "RestElement");
+ const arg = node.argument;
+ this.checkToRestConversion(arg, true);
+ this.toAssignable(arg, isLHS);
+ } else {
+ this.toAssignable(node, isLHS);
+ }
+ }
+ isAssignable(node, isBinding) {
+ switch (node.type) {
+ case "Identifier":
+ case "ObjectPattern":
+ case "ArrayPattern":
+ case "AssignmentPattern":
+ case "RestElement":
+ case "VoidPattern":
+ return true;
+ case "ObjectExpression":
+ {
+ const last = node.properties.length - 1;
+ return node.properties.every((prop, i) => {
+ return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop);
+ });
+ }
+ case "ObjectProperty":
+ return this.isAssignable(node.value);
+ case "SpreadElement":
+ return this.isAssignable(node.argument);
+ case "ArrayExpression":
+ return node.elements.every(element => element === null || this.isAssignable(element));
+ case "AssignmentExpression":
+ return node.operator === "=";
+ case "ParenthesizedExpression":
+ return this.isAssignable(node.expression);
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return !isBinding;
+ default:
+ return false;
+ }
+ }
+ toReferencedList(exprList, isParenthesizedExpr) {
+ return exprList;
+ }
+ toReferencedListDeep(exprList, isParenthesizedExpr) {
+ this.toReferencedList(exprList, isParenthesizedExpr);
+ for (const expr of exprList) {
+ if ((expr == null ? void 0 : expr.type) === "ArrayExpression") {
+ this.toReferencedListDeep(expr.elements);
+ }
+ }
+ }
+ parseSpread(refExpressionErrors) {
+ const node = this.startNode();
+ this.next();
+ node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined);
+ return this.finishNode(node, "SpreadElement");
+ }
+ parseRestBinding() {
+ const node = this.startNode();
+ this.next();
+ const argument = this.parseBindingAtom();
+ if (argument.type === "VoidPattern") {
+ this.raise(Errors.UnexpectedVoidPattern, argument);
+ }
+ node.argument = argument;
+ return this.finishNode(node, "RestElement");
+ }
+ parseBindingAtom() {
+ switch (this.state.type) {
+ case 0:
+ {
+ const node = this.startNode();
+ this.next();
+ node.elements = this.parseBindingList(3, 93, 1);
+ return this.finishNode(node, "ArrayPattern");
+ }
+ case 5:
+ return this.parseObjectLike(8, true);
+ case 88:
+ return this.parseVoidPattern(null);
+ }
+ return this.parseIdentifier();
+ }
+ parseBindingList(close, closeCharCode, flags) {
+ const allowEmpty = flags & 1;
+ const elts = [];
+ let first = true;
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ }
+ if (allowEmpty && this.match(12)) {
+ elts.push(null);
+ } else if (this.eat(close)) {
+ break;
+ } else if (this.match(21)) {
+ let rest = this.parseRestBinding();
+ if (this.hasPlugin("flow") || flags & 2) {
+ rest = this.parseFunctionParamType(rest);
+ }
+ elts.push(rest);
+ if (!this.checkCommaAfterRest(closeCharCode)) {
+ this.expect(close);
+ break;
+ }
+ } else {
+ const decorators = [];
+ if (flags & 2) {
+ if (this.match(26) && this.hasPlugin("decorators")) {
+ this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc);
+ }
+ while (this.match(26)) {
+ decorators.push(this.parseDecorator());
+ }
+ }
+ elts.push(this.parseBindingElement(flags, decorators));
+ }
+ }
+ return elts;
+ }
+ parseBindingRestProperty(prop) {
+ this.next();
+ if (this.hasPlugin("discardBinding") && this.match(88)) {
+ prop.argument = this.parseVoidPattern(null);
+ this.raise(Errors.UnexpectedVoidPattern, prop.argument);
+ } else {
+ prop.argument = this.parseIdentifier();
+ }
+ this.checkCommaAfterRest(125);
+ return this.finishNode(prop, "RestElement");
+ }
+ parseBindingProperty() {
+ const {
+ type,
+ startLoc
+ } = this.state;
+ if (type === 21) {
+ return this.parseBindingRestProperty(this.startNode());
+ }
+ const prop = this.startNode();
+ if (type === 139) {
+ this.expectPlugin("destructuringPrivate", startLoc);
+ this.classScope.usePrivateName(this.state.value, startLoc);
+ prop.key = this.parsePrivateName();
+ } else {
+ this.parsePropertyName(prop);
+ }
+ prop.method = false;
+ return this.parseObjPropValue(prop, startLoc, false, false, true, false);
+ }
+ parseBindingElement(flags, decorators) {
+ const left = this.parseMaybeDefault();
+ if (this.hasPlugin("flow") || flags & 2) {
+ this.parseFunctionParamType(left);
+ }
+ if (decorators.length) {
+ left.decorators = decorators;
+ this.resetStartLocationFromNode(left, decorators[0]);
+ }
+ const elt = this.parseMaybeDefault(left.loc.start, left);
+ return elt;
+ }
+ parseFunctionParamType(param) {
+ return param;
+ }
+ parseMaybeDefault(startLoc, left) {
+ startLoc != null ? startLoc : startLoc = this.state.startLoc;
+ left = left != null ? left : this.parseBindingAtom();
+ if (!this.eat(29)) return left;
+ const node = this.startNodeAt(startLoc);
+ if (left.type === "VoidPattern") {
+ this.raise(Errors.VoidPatternInitializer, left);
+ }
+ node.left = left;
+ node.right = this.parseMaybeAssignAllowIn();
+ return this.finishNode(node, "AssignmentPattern");
+ }
+ isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {
+ switch (type) {
+ case "AssignmentPattern":
+ return "left";
+ case "RestElement":
+ return "argument";
+ case "ObjectProperty":
+ return "value";
+ case "ParenthesizedExpression":
+ return "expression";
+ case "ArrayPattern":
+ return "elements";
+ case "ObjectPattern":
+ return "properties";
+ case "VoidPattern":
+ return true;
+ case "CallExpression":
+ if (!disallowCallExpression && !this.state.strict && this.optionFlags & 8192) {
+ return true;
+ }
+ }
+ return false;
+ }
+ isOptionalMemberExpression(expression) {
+ return expression.type === "OptionalMemberExpression";
+ }
+ checkLVal(expression, ancestor, binding = 64, checkClashes = false, strictModeChanged = false, hasParenthesizedAncestor = false, disallowCallExpression = false) {
+ var _expression$extra;
+ const type = expression.type;
+ if (this.isObjectMethod(expression)) return;
+ const isOptionalMemberExpression = this.isOptionalMemberExpression(expression);
+ if (isOptionalMemberExpression || type === "MemberExpression") {
+ if (isOptionalMemberExpression) {
+ this.expectPlugin("optionalChainingAssign", expression.loc.start);
+ if (ancestor.type !== "AssignmentExpression") {
+ this.raise(Errors.InvalidLhsOptionalChaining, expression, {
+ ancestor
+ });
+ }
+ }
+ if (binding !== 64) {
+ this.raise(Errors.InvalidPropertyBindingPattern, expression);
+ }
+ return;
+ }
+ if (type === "Identifier") {
+ this.checkIdentifier(expression, binding, strictModeChanged);
+ const {
+ name
+ } = expression;
+ if (checkClashes) {
+ if (checkClashes.has(name)) {
+ this.raise(Errors.ParamDupe, expression);
+ } else {
+ checkClashes.add(name);
+ }
+ }
+ return;
+ } else if (type === "VoidPattern" && ancestor.type === "CatchClause") {
+ this.raise(Errors.VoidPatternCatchClauseParam, expression);
+ }
+ const unwrappedExpression = unwrapParenthesizedExpression(expression);
+ disallowCallExpression || (disallowCallExpression = unwrappedExpression.type === "CallExpression" && (unwrappedExpression.callee.type === "Import" || unwrappedExpression.callee.type === "Super"));
+ const validity = this.isValidLVal(type, disallowCallExpression, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding);
+ if (validity === true) return;
+ if (validity === false) {
+ const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding;
+ this.raise(ParseErrorClass, expression, {
+ ancestor
+ });
+ return;
+ }
+ let key, isParenthesizedExpression;
+ if (typeof validity === "string") {
+ key = validity;
+ isParenthesizedExpression = type === "ParenthesizedExpression";
+ } else {
+ [key, isParenthesizedExpression] = validity;
+ }
+ const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? {
+ type
+ } : ancestor;
+ const val = expression[key];
+ if (Array.isArray(val)) {
+ for (const child of val) {
+ if (child) {
+ this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, true);
+ }
+ }
+ } else if (val) {
+ this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, disallowCallExpression);
+ }
+ }
+ checkIdentifier(at, bindingType, strictModeChanged = false) {
+ if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) {
+ if (bindingType === 64) {
+ this.raise(Errors.StrictEvalArguments, at, {
+ referenceName: at.name
+ });
+ } else {
+ this.raise(Errors.StrictEvalArgumentsBinding, at, {
+ bindingName: at.name
+ });
+ }
+ }
+ if (bindingType & 8192 && at.name === "let") {
+ this.raise(Errors.LetInLexicalBinding, at);
+ }
+ if (!(bindingType & 64)) {
+ this.declareNameFromIdentifier(at, bindingType);
+ }
+ }
+ declareNameFromIdentifier(identifier, binding) {
+ this.scope.declareName(identifier.name, binding, identifier.loc.start);
+ }
+ checkToRestConversion(node, allowPattern) {
+ switch (node.type) {
+ case "ParenthesizedExpression":
+ this.checkToRestConversion(node.expression, allowPattern);
+ break;
+ case "Identifier":
+ case "MemberExpression":
+ break;
+ case "ArrayExpression":
+ case "ObjectExpression":
+ if (allowPattern) break;
+ default:
+ this.raise(Errors.InvalidRestAssignmentPattern, node);
+ }
+ }
+ checkCommaAfterRest(close) {
+ if (!this.match(12)) {
+ return false;
+ }
+ this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc);
+ return true;
+ }
+}
+const keywordAndTSRelationalOperator = /in(?:stanceof)?|as|satisfies/y;
+function nonNull(x) {
+ if (x == null) {
+ throw new Error(`Unexpected ${x} value.`);
+ }
+ return x;
+}
+function assert(x) {
+ if (!x) {
+ throw new Error("Assert fail");
+ }
+}
+const TSErrors = ParseErrorEnum`typescript`({
+ AbstractMethodHasImplementation: ({
+ methodName
+ }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`,
+ AbstractPropertyHasInitializer: ({
+ propertyName
+ }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`,
+ AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.",
+ AccessorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.",
+ AccessorCannotHaveTypeParameters: "An accessor cannot have type parameters.",
+ ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.",
+ ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.",
+ ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.",
+ ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.",
+ DeclareAccessor: ({
+ kind
+ }) => `'declare' is not allowed in ${kind}ters.`,
+ DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.",
+ DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.",
+ DuplicateAccessibilityModifier: ({
+ modifier
+ }) => `Accessibility modifier already seen: '${modifier}'.`,
+ DuplicateModifier: ({
+ modifier
+ }) => `Duplicate modifier: '${modifier}'.`,
+ EmptyHeritageClauseType: ({
+ token
+ }) => `'${token}' list cannot be empty.`,
+ EmptyTypeArguments: "Type argument list cannot be empty.",
+ EmptyTypeParameters: "Type parameter list cannot be empty.",
+ ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.",
+ ImportAliasHasImportType: "An import alias can not use 'import type'.",
+ ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier",
+ IncompatibleModifiers: ({
+ modifiers
+ }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`,
+ IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.",
+ IndexSignatureHasAccessibility: ({
+ modifier
+ }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`,
+ IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.",
+ IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.",
+ IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.",
+ InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.",
+ InvalidHeritageClauseType: ({
+ token
+ }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`,
+ InvalidModifierOnAwaitUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on an await using declaration.`,
+ InvalidModifierOnTypeMember: ({
+ modifier
+ }) => `'${modifier}' modifier cannot appear on a type member.`,
+ InvalidModifierOnTypeParameter: ({
+ modifier
+ }) => `'${modifier}' modifier cannot appear on a type parameter.`,
+ InvalidModifierOnTypeParameterPositions: ({
+ modifier
+ }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`,
+ InvalidModifierOnUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on a using declaration.`,
+ InvalidModifiersOrder: ({
+ orderedModifiers
+ }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`,
+ InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.",
+ InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.",
+ MissingInterfaceName: "'interface' declarations must be followed by an identifier.",
+ NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.",
+ NonClassMethodPropertyHasAbstractModifier: "'abstract' modifier can only appear on a class, method, or property declaration.",
+ OptionalTypeBeforeRequired: "A required element cannot follow an optional element.",
+ OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.",
+ PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.",
+ PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.",
+ PrivateElementHasAccessibility: ({
+ modifier
+ }) => `Private elements cannot have an accessibility modifier ('${modifier}').`,
+ ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.",
+ ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.",
+ ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.",
+ SetAccessorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.",
+ SetAccessorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.",
+ SetAccessorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.",
+ SingleTypeParameterWithoutTrailingComma: ({
+ typeParameterName
+ }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,
+ StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.",
+ TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).",
+ TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
+ TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.",
+ TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.",
+ TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.",
+ UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.",
+ UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.",
+ UnexpectedTypeAnnotation: "Did not expect a type annotation here.",
+ UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.",
+ UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.",
+ UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.",
+ UnsupportedSignatureParameterKind: ({
+ type
+ }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`,
+ UsingDeclarationInAmbientContext: kind => `'${kind}' declarations are not allowed in ambient contexts.`
+});
+function keywordTypeFromName(value) {
+ switch (value) {
+ case "any":
+ return "TSAnyKeyword";
+ case "boolean":
+ return "TSBooleanKeyword";
+ case "bigint":
+ return "TSBigIntKeyword";
+ case "never":
+ return "TSNeverKeyword";
+ case "number":
+ return "TSNumberKeyword";
+ case "object":
+ return "TSObjectKeyword";
+ case "string":
+ return "TSStringKeyword";
+ case "symbol":
+ return "TSSymbolKeyword";
+ case "undefined":
+ return "TSUndefinedKeyword";
+ case "unknown":
+ return "TSUnknownKeyword";
+ default:
+ return undefined;
+ }
+}
+function tsIsAccessModifier(modifier) {
+ return modifier === "private" || modifier === "public" || modifier === "protected";
+}
+function tsIsVarianceAnnotations(modifier) {
+ return modifier === "in" || modifier === "out";
+}
+var typescript = superClass => class TypeScriptParserMixin extends superClass {
+ constructor(...args) {
+ super(...args);
+ this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, {
+ allowedModifiers: ["in", "out"],
+ disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"],
+ errorTemplate: TSErrors.InvalidModifierOnTypeParameter
+ });
+ this.tsParseConstModifier = this.tsParseModifiers.bind(this, {
+ allowedModifiers: ["const"],
+ disallowedModifiers: ["in", "out"],
+ errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions
+ });
+ this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, {
+ allowedModifiers: ["in", "out", "const"],
+ disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"],
+ errorTemplate: TSErrors.InvalidModifierOnTypeParameter
+ });
+ }
+ getScopeHandler() {
+ return TypeScriptScopeHandler;
+ }
+ tsIsIdentifier() {
+ return tokenIsIdentifier(this.state.type);
+ }
+ tsTokenCanFollowModifier() {
+ return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(139) || this.isLiteralPropertyName();
+ }
+ tsNextTokenOnSameLineAndCanFollowModifier() {
+ this.next();
+ if (this.hasPrecedingLineBreak()) {
+ return false;
+ }
+ return this.tsTokenCanFollowModifier();
+ }
+ tsNextTokenCanFollowModifier() {
+ if (this.match(106)) {
+ this.next();
+ return this.tsTokenCanFollowModifier();
+ }
+ return this.tsNextTokenOnSameLineAndCanFollowModifier();
+ }
+ tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) {
+ if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) {
+ return undefined;
+ }
+ const modifier = this.state.value;
+ if (allowedModifiers.includes(modifier)) {
+ if (hasSeenStaticModifier && this.match(106)) {
+ return undefined;
+ }
+ if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {
+ return undefined;
+ }
+ if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {
+ return modifier;
+ }
+ }
+ return undefined;
+ }
+ tsParseModifiers({
+ allowedModifiers,
+ disallowedModifiers,
+ stopOnStartOfClassStaticBlock,
+ errorTemplate = TSErrors.InvalidModifierOnTypeMember
+ }, modified) {
+ const enforceOrder = (loc, modifier, before, after) => {
+ if (modifier === before && modified[after]) {
+ this.raise(TSErrors.InvalidModifiersOrder, loc, {
+ orderedModifiers: [before, after]
+ });
+ }
+ };
+ const incompatible = (loc, modifier, mod1, mod2) => {
+ if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {
+ this.raise(TSErrors.IncompatibleModifiers, loc, {
+ modifiers: [mod1, mod2]
+ });
+ }
+ };
+ for (;;) {
+ const {
+ startLoc
+ } = this.state;
+ const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock, modified.static);
+ if (!modifier) break;
+ if (tsIsAccessModifier(modifier)) {
+ if (modified.accessibility) {
+ this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {
+ modifier
+ });
+ } else {
+ enforceOrder(startLoc, modifier, modifier, "override");
+ enforceOrder(startLoc, modifier, modifier, "static");
+ enforceOrder(startLoc, modifier, modifier, "readonly");
+ modified.accessibility = modifier;
+ }
+ } else if (tsIsVarianceAnnotations(modifier)) {
+ if (modified[modifier]) {
+ this.raise(TSErrors.DuplicateModifier, startLoc, {
+ modifier
+ });
+ }
+ modified[modifier] = true;
+ enforceOrder(startLoc, modifier, "in", "out");
+ } else {
+ if (hasOwnProperty.call(modified, modifier)) {
+ this.raise(TSErrors.DuplicateModifier, startLoc, {
+ modifier
+ });
+ } else {
+ enforceOrder(startLoc, modifier, "static", "readonly");
+ enforceOrder(startLoc, modifier, "static", "override");
+ enforceOrder(startLoc, modifier, "override", "readonly");
+ enforceOrder(startLoc, modifier, "abstract", "override");
+ incompatible(startLoc, modifier, "declare", "override");
+ incompatible(startLoc, modifier, "static", "abstract");
+ }
+ modified[modifier] = true;
+ }
+ if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {
+ this.raise(errorTemplate, startLoc, {
+ modifier
+ });
+ }
+ }
+ }
+ tsIsListTerminator(kind) {
+ switch (kind) {
+ case "EnumMembers":
+ case "TypeMembers":
+ return this.match(8);
+ case "HeritageClauseElement":
+ return this.match(5);
+ case "TupleElementTypes":
+ return this.match(3);
+ case "TypeParametersOrArguments":
+ return this.match(48);
+ }
+ }
+ tsParseList(kind, parseElement) {
+ const result = [];
+ while (!this.tsIsListTerminator(kind)) {
+ result.push(parseElement());
+ }
+ return result;
+ }
+ tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {
+ return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));
+ }
+ tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {
+ const result = [];
+ let trailingCommaPos = -1;
+ for (;;) {
+ if (this.tsIsListTerminator(kind)) {
+ break;
+ }
+ trailingCommaPos = -1;
+ const element = parseElement();
+ if (element == null) {
+ return undefined;
+ }
+ result.push(element);
+ if (this.eat(12)) {
+ trailingCommaPos = this.state.lastTokStartLoc.index;
+ continue;
+ }
+ if (this.tsIsListTerminator(kind)) {
+ break;
+ }
+ if (expectSuccess) {
+ this.expect(12);
+ }
+ return undefined;
+ }
+ if (refTrailingCommaPos) {
+ refTrailingCommaPos.value = trailingCommaPos;
+ }
+ return result;
+ }
+ tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {
+ if (!skipFirstToken) {
+ if (bracket) {
+ this.expect(0);
+ } else {
+ this.expect(47);
+ }
+ }
+ const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);
+ if (bracket) {
+ this.expect(3);
+ } else {
+ this.expect(48);
+ }
+ return result;
+ }
+ tsParseImportType() {
+ const node = this.startNode();
+ this.expect(83);
+ this.expect(10);
+ if (!this.match(134)) {
+ this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);
+ node.argument = super.parseExprAtom();
+ } else {
+ node.argument = this.parseStringLiteral(this.state.value);
+ }
+ if (this.eat(12)) {
+ node.options = this.tsParseImportTypeOptions();
+ } else {
+ node.options = null;
+ }
+ this.expect(11);
+ if (this.eat(16)) {
+ node.qualifier = this.tsParseEntityName(1 | 2);
+ }
+ if (this.match(47)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+ return this.finishNode(node, "TSImportType");
+ }
+ tsParseImportTypeOptions() {
+ const node = this.startNode();
+ this.expect(5);
+ const withProperty = this.startNode();
+ if (this.isContextual(76)) {
+ withProperty.method = false;
+ withProperty.key = this.parseIdentifier(true);
+ withProperty.computed = false;
+ withProperty.shorthand = false;
+ } else {
+ this.unexpected(null, 76);
+ }
+ this.expect(14);
+ withProperty.value = this.tsParseImportTypeWithPropertyValue();
+ node.properties = [this.finishObjectProperty(withProperty)];
+ this.eat(12);
+ this.expect(8);
+ return this.finishNode(node, "ObjectExpression");
+ }
+ tsParseImportTypeWithPropertyValue() {
+ const node = this.startNode();
+ const properties = [];
+ this.expect(5);
+ while (!this.match(8)) {
+ const type = this.state.type;
+ if (tokenIsIdentifier(type) || type === 134) {
+ properties.push(super.parsePropertyDefinition(null));
+ } else {
+ this.unexpected();
+ }
+ this.eat(12);
+ }
+ node.properties = properties;
+ this.next();
+ return this.finishNode(node, "ObjectExpression");
+ }
+ tsParseEntityName(flags) {
+ let entity;
+ if (flags & 1 && this.match(78)) {
+ if (flags & 2) {
+ entity = this.parseIdentifier(true);
+ } else {
+ const node = this.startNode();
+ this.next();
+ entity = this.finishNode(node, "ThisExpression");
+ }
+ } else {
+ entity = this.parseIdentifier(!!(flags & 1));
+ }
+ while (this.eat(16)) {
+ const node = this.startNodeAtNode(entity);
+ node.left = entity;
+ node.right = this.parseIdentifier(!!(flags & 1));
+ entity = this.finishNode(node, "TSQualifiedName");
+ }
+ return entity;
+ }
+ tsParseTypeReference() {
+ const node = this.startNode();
+ node.typeName = this.tsParseEntityName(1);
+ if (!this.hasPrecedingLineBreak() && this.match(47)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+ return this.finishNode(node, "TSTypeReference");
+ }
+ tsParseThisTypePredicate(lhs) {
+ this.next();
+ const node = this.startNodeAtNode(lhs);
+ node.parameterName = lhs;
+ node.typeAnnotation = this.tsParseTypeAnnotation(false);
+ node.asserts = false;
+ return this.finishNode(node, "TSTypePredicate");
+ }
+ tsParseThisTypeNode() {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, "TSThisType");
+ }
+ tsParseTypeQuery() {
+ const node = this.startNode();
+ this.expect(87);
+ if (this.match(83)) {
+ node.exprName = this.tsParseImportType();
+ } else {
+ node.exprName = this.tsParseEntityName(1 | 2);
+ }
+ if (!this.hasPrecedingLineBreak() && this.match(47)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+ return this.finishNode(node, "TSTypeQuery");
+ }
+ tsParseTypeParameter(parseModifiers) {
+ const node = this.startNode();
+ parseModifiers(node);
+ node.name = this.tsParseTypeParameterName();
+ node.constraint = this.tsEatThenParseType(81);
+ node.default = this.tsEatThenParseType(29);
+ return this.finishNode(node, "TSTypeParameter");
+ }
+ tsTryParseTypeParameters(parseModifiers) {
+ if (this.match(47)) {
+ return this.tsParseTypeParameters(parseModifiers);
+ }
+ }
+ tsParseTypeParameters(parseModifiers) {
+ const node = this.startNode();
+ if (this.match(47) || this.match(143)) {
+ this.next();
+ } else {
+ this.unexpected();
+ }
+ const refTrailingCommaPos = {
+ value: -1
+ };
+ node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos);
+ if (node.params.length === 0) {
+ this.raise(TSErrors.EmptyTypeParameters, node);
+ }
+ if (refTrailingCommaPos.value !== -1) {
+ this.addExtra(node, "trailingComma", refTrailingCommaPos.value);
+ }
+ return this.finishNode(node, "TSTypeParameterDeclaration");
+ }
+ tsFillSignature(returnToken, signature) {
+ const returnTokenRequired = returnToken === 19;
+ const paramsKey = "parameters";
+ const returnTypeKey = "typeAnnotation";
+ signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ this.expect(10);
+ signature[paramsKey] = this.tsParseBindingListForSignature();
+ if (returnTokenRequired) {
+ signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
+ } else if (this.match(returnToken)) {
+ signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
+ }
+ }
+ tsParseBindingListForSignature() {
+ const list = super.parseBindingList(11, 41, 2);
+ for (const pattern of list) {
+ const {
+ type
+ } = pattern;
+ if (type === "AssignmentPattern" || type === "TSParameterProperty") {
+ this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {
+ type
+ });
+ }
+ }
+ return list;
+ }
+ tsParseTypeMemberSemicolon() {
+ if (!this.eat(12) && !this.isLineTerminator()) {
+ this.expect(13);
+ }
+ }
+ tsParseSignatureMember(kind, node) {
+ this.tsFillSignature(14, node);
+ this.tsParseTypeMemberSemicolon();
+ return this.finishNode(node, kind);
+ }
+ tsIsUnambiguouslyIndexSignature() {
+ this.next();
+ if (tokenIsIdentifier(this.state.type)) {
+ this.next();
+ return this.match(14);
+ }
+ return false;
+ }
+ tsTryParseIndexSignature(node) {
+ if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {
+ return;
+ }
+ this.expect(0);
+ const id = this.parseIdentifier();
+ id.typeAnnotation = this.tsParseTypeAnnotation();
+ this.resetEndLocation(id);
+ this.expect(3);
+ node.parameters = [id];
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) node.typeAnnotation = type;
+ this.tsParseTypeMemberSemicolon();
+ return this.finishNode(node, "TSIndexSignature");
+ }
+ tsParsePropertyOrMethodSignature(node, readonly) {
+ if (this.eat(17)) node.optional = true;
+ if (this.match(10) || this.match(47)) {
+ if (readonly) {
+ this.raise(TSErrors.ReadonlyForMethodSignature, node);
+ }
+ const method = node;
+ if (method.kind && this.match(47)) {
+ this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition());
+ }
+ this.tsFillSignature(14, method);
+ this.tsParseTypeMemberSemicolon();
+ const paramsKey = "parameters";
+ const returnTypeKey = "typeAnnotation";
+ if (method.kind === "get") {
+ if (method[paramsKey].length > 0) {
+ this.raise(Errors.BadGetterArity, this.state.curPosition());
+ if (this.isThisParam(method[paramsKey][0])) {
+ this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());
+ }
+ }
+ } else if (method.kind === "set") {
+ if (method[paramsKey].length !== 1) {
+ this.raise(Errors.BadSetterArity, this.state.curPosition());
+ } else {
+ const firstParameter = method[paramsKey][0];
+ if (this.isThisParam(firstParameter)) {
+ this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());
+ }
+ if (firstParameter.type === "Identifier" && firstParameter.optional) {
+ this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition());
+ }
+ if (firstParameter.type === "RestElement") {
+ this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition());
+ }
+ }
+ if (method[returnTypeKey]) {
+ this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]);
+ }
+ } else {
+ method.kind = "method";
+ }
+ return this.finishNode(method, "TSMethodSignature");
+ } else {
+ const property = node;
+ if (readonly) property.readonly = true;
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) property.typeAnnotation = type;
+ this.tsParseTypeMemberSemicolon();
+ return this.finishNode(property, "TSPropertySignature");
+ }
+ }
+ tsParseTypeMember() {
+ const node = this.startNode();
+ if (this.match(10) || this.match(47)) {
+ return this.tsParseSignatureMember("TSCallSignatureDeclaration", node);
+ }
+ if (this.match(77)) {
+ const id = this.startNode();
+ this.next();
+ if (this.match(10) || this.match(47)) {
+ return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node);
+ } else {
+ node.key = this.createIdentifier(id, "new");
+ return this.tsParsePropertyOrMethodSignature(node, false);
+ }
+ }
+ this.tsParseModifiers({
+ allowedModifiers: ["readonly"],
+ disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"]
+ }, node);
+ const idx = this.tsTryParseIndexSignature(node);
+ if (idx) {
+ return idx;
+ }
+ super.parsePropertyName(node);
+ if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) {
+ node.kind = node.key.name;
+ super.parsePropertyName(node);
+ if (!this.match(10) && !this.match(47)) {
+ this.unexpected(null, 10);
+ }
+ }
+ return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);
+ }
+ tsParseTypeLiteral() {
+ const node = this.startNode();
+ node.members = this.tsParseObjectTypeMembers();
+ return this.finishNode(node, "TSTypeLiteral");
+ }
+ tsParseObjectTypeMembers() {
+ this.expect(5);
+ const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this));
+ this.expect(8);
+ return members;
+ }
+ tsIsStartOfMappedType() {
+ this.next();
+ if (this.eat(53)) {
+ return this.isContextual(122);
+ }
+ if (this.isContextual(122)) {
+ this.next();
+ }
+ if (!this.match(0)) {
+ return false;
+ }
+ this.next();
+ if (!this.tsIsIdentifier()) {
+ return false;
+ }
+ this.next();
+ return this.match(58);
+ }
+ tsParseMappedType() {
+ const node = this.startNode();
+ this.expect(5);
+ if (this.match(53)) {
+ node.readonly = this.state.value;
+ this.next();
+ this.expectContextual(122);
+ } else if (this.eatContextual(122)) {
+ node.readonly = true;
+ }
+ this.expect(0);
+ const typeParameter = this.startNode();
+ typeParameter.name = this.tsParseTypeParameterName();
+ typeParameter.constraint = this.tsExpectThenParseType(58);
+ node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
+ node.nameType = this.eatContextual(93) ? this.tsParseType() : null;
+ this.expect(3);
+ if (this.match(53)) {
+ node.optional = this.state.value;
+ this.next();
+ this.expect(17);
+ } else if (this.eat(17)) {
+ node.optional = true;
+ }
+ node.typeAnnotation = this.tsTryParseType();
+ this.semicolon();
+ this.expect(8);
+ return this.finishNode(node, "TSMappedType");
+ }
+ tsParseTupleType() {
+ const node = this.startNode();
+ node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false);
+ let seenOptionalElement = false;
+ node.elementTypes.forEach(elementNode => {
+ const {
+ type
+ } = elementNode;
+ if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) {
+ this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);
+ }
+ seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType");
+ });
+ return this.finishNode(node, "TSTupleType");
+ }
+ tsParseTupleElementType() {
+ const restStartLoc = this.state.startLoc;
+ const rest = this.eat(21);
+ const {
+ startLoc
+ } = this.state;
+ let labeled;
+ let label;
+ let optional;
+ let type;
+ const isWord = tokenIsKeywordOrIdentifier(this.state.type);
+ const chAfterWord = isWord ? this.lookaheadCharCode() : null;
+ if (chAfterWord === 58) {
+ labeled = true;
+ optional = false;
+ label = this.parseIdentifier(true);
+ this.expect(14);
+ type = this.tsParseType();
+ } else if (chAfterWord === 63) {
+ optional = true;
+ const wordName = this.state.value;
+ const typeOrLabel = this.tsParseNonArrayType();
+ if (this.lookaheadCharCode() === 58) {
+ labeled = true;
+ label = this.createIdentifier(this.startNodeAt(startLoc), wordName);
+ this.expect(17);
+ this.expect(14);
+ type = this.tsParseType();
+ } else {
+ labeled = false;
+ type = typeOrLabel;
+ this.expect(17);
+ }
+ } else {
+ type = this.tsParseType();
+ optional = this.eat(17);
+ labeled = this.eat(14);
+ }
+ if (labeled) {
+ let labeledNode;
+ if (label) {
+ labeledNode = this.startNodeAt(startLoc);
+ labeledNode.optional = optional;
+ labeledNode.label = label;
+ labeledNode.elementType = type;
+ if (this.eat(17)) {
+ labeledNode.optional = true;
+ this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc);
+ }
+ } else {
+ labeledNode = this.startNodeAt(startLoc);
+ labeledNode.optional = optional;
+ this.raise(TSErrors.InvalidTupleMemberLabel, type);
+ labeledNode.label = type;
+ labeledNode.elementType = this.tsParseType();
+ }
+ type = this.finishNode(labeledNode, "TSNamedTupleMember");
+ } else if (optional) {
+ const optionalTypeNode = this.startNodeAt(startLoc);
+ optionalTypeNode.typeAnnotation = type;
+ type = this.finishNode(optionalTypeNode, "TSOptionalType");
+ }
+ if (rest) {
+ const restNode = this.startNodeAt(restStartLoc);
+ restNode.typeAnnotation = type;
+ type = this.finishNode(restNode, "TSRestType");
+ }
+ return type;
+ }
+ tsParseParenthesizedType() {
+ const node = this.startNode();
+ this.expect(10);
+ node.typeAnnotation = this.tsParseType();
+ this.expect(11);
+ return this.finishNode(node, "TSParenthesizedType");
+ }
+ tsParseFunctionOrConstructorType(type, abstract) {
+ const node = this.startNode();
+ if (type === "TSConstructorType") {
+ node.abstract = !!abstract;
+ if (abstract) this.next();
+ this.next();
+ }
+ this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node));
+ return this.finishNode(node, type);
+ }
+ tsParseLiteralTypeNode() {
+ const node = this.startNode();
+ switch (this.state.type) {
+ case 135:
+ case 136:
+ case 134:
+ case 85:
+ case 86:
+ node.literal = super.parseExprAtom();
+ break;
+ default:
+ this.unexpected();
+ }
+ return this.finishNode(node, "TSLiteralType");
+ }
+ tsParseTemplateLiteralType() {
+ const node = this.startNode();
+ node.literal = super.parseTemplate(false);
+ return this.finishNode(node, "TSLiteralType");
+ }
+ parseTemplateSubstitution() {
+ if (this.state.inType) return this.tsParseType();
+ return super.parseTemplateSubstitution();
+ }
+ tsParseThisTypeOrThisTypePredicate() {
+ const thisKeyword = this.tsParseThisTypeNode();
+ if (this.isContextual(116) && !this.hasPrecedingLineBreak()) {
+ return this.tsParseThisTypePredicate(thisKeyword);
+ } else {
+ return thisKeyword;
+ }
+ }
+ tsParseNonArrayType() {
+ switch (this.state.type) {
+ case 134:
+ case 135:
+ case 136:
+ case 85:
+ case 86:
+ return this.tsParseLiteralTypeNode();
+ case 53:
+ if (this.state.value === "-") {
+ const node = this.startNode();
+ const nextToken = this.lookahead();
+ if (nextToken.type !== 135 && nextToken.type !== 136) {
+ this.unexpected();
+ }
+ node.literal = this.parseMaybeUnary();
+ return this.finishNode(node, "TSLiteralType");
+ }
+ break;
+ case 78:
+ return this.tsParseThisTypeOrThisTypePredicate();
+ case 87:
+ return this.tsParseTypeQuery();
+ case 83:
+ return this.tsParseImportType();
+ case 5:
+ return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();
+ case 0:
+ return this.tsParseTupleType();
+ case 10:
+ return this.tsParseParenthesizedType();
+ case 25:
+ case 24:
+ return this.tsParseTemplateLiteralType();
+ default:
+ {
+ const {
+ type
+ } = this.state;
+ if (tokenIsIdentifier(type) || type === 88 || type === 84) {
+ const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value);
+ if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, nodeType);
+ }
+ return this.tsParseTypeReference();
+ }
+ }
+ }
+ throw this.unexpected();
+ }
+ tsParseArrayTypeOrHigher() {
+ const {
+ startLoc
+ } = this.state;
+ let type = this.tsParseNonArrayType();
+ while (!this.hasPrecedingLineBreak() && this.eat(0)) {
+ if (this.match(3)) {
+ const node = this.startNodeAt(startLoc);
+ node.elementType = type;
+ this.expect(3);
+ type = this.finishNode(node, "TSArrayType");
+ } else {
+ const node = this.startNodeAt(startLoc);
+ node.objectType = type;
+ node.indexType = this.tsParseType();
+ this.expect(3);
+ type = this.finishNode(node, "TSIndexedAccessType");
+ }
+ }
+ return type;
+ }
+ tsParseTypeOperator() {
+ const node = this.startNode();
+ const operator = this.state.value;
+ this.next();
+ node.operator = operator;
+ node.typeAnnotation = this.tsParseTypeOperatorOrHigher();
+ if (operator === "readonly") {
+ this.tsCheckTypeAnnotationForReadOnly(node);
+ }
+ return this.finishNode(node, "TSTypeOperator");
+ }
+ tsCheckTypeAnnotationForReadOnly(node) {
+ switch (node.typeAnnotation.type) {
+ case "TSTupleType":
+ case "TSArrayType":
+ return;
+ default:
+ this.raise(TSErrors.UnexpectedReadonly, node);
+ }
+ }
+ tsParseInferType() {
+ const node = this.startNode();
+ this.expectContextual(115);
+ const typeParameter = this.startNode();
+ typeParameter.name = this.tsParseTypeParameterName();
+ typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType());
+ node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
+ return this.finishNode(node, "TSInferType");
+ }
+ tsParseConstraintForInferType() {
+ if (this.eat(81)) {
+ const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType());
+ if (this.state.inDisallowConditionalTypesContext || !this.match(17)) {
+ return constraint;
+ }
+ }
+ }
+ tsParseTypeOperatorOrHigher() {
+ const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;
+ return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher());
+ }
+ tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {
+ const node = this.startNode();
+ const hasLeadingOperator = this.eat(operator);
+ const types = [];
+ do {
+ types.push(parseConstituentType());
+ } while (this.eat(operator));
+ if (types.length === 1 && !hasLeadingOperator) {
+ return types[0];
+ }
+ node.types = types;
+ return this.finishNode(node, kind);
+ }
+ tsParseIntersectionTypeOrHigher() {
+ return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45);
+ }
+ tsParseUnionTypeOrHigher() {
+ return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43);
+ }
+ tsIsStartOfFunctionType() {
+ if (this.match(47)) {
+ return true;
+ }
+ return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));
+ }
+ tsSkipParameterStart() {
+ if (tokenIsIdentifier(this.state.type) || this.match(78)) {
+ this.next();
+ return true;
+ }
+ if (this.match(5)) {
+ const {
+ errors
+ } = this.state;
+ const previousErrorCount = errors.length;
+ try {
+ this.parseObjectLike(8, true);
+ return errors.length === previousErrorCount;
+ } catch (_unused) {
+ return false;
+ }
+ }
+ if (this.match(0)) {
+ this.next();
+ const {
+ errors
+ } = this.state;
+ const previousErrorCount = errors.length;
+ try {
+ super.parseBindingList(3, 93, 1);
+ return errors.length === previousErrorCount;
+ } catch (_unused2) {
+ return false;
+ }
+ }
+ return false;
+ }
+ tsIsUnambiguouslyStartOfFunctionType() {
+ this.next();
+ if (this.match(11) || this.match(21)) {
+ return true;
+ }
+ if (this.tsSkipParameterStart()) {
+ if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) {
+ return true;
+ }
+ if (this.match(11)) {
+ this.next();
+ if (this.match(19)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ tsParseTypeOrTypePredicateAnnotation(returnToken) {
+ return this.tsInType(() => {
+ const t = this.startNode();
+ this.expect(returnToken);
+ const node = this.startNode();
+ const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));
+ if (asserts && this.match(78)) {
+ let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();
+ if (thisTypePredicate.type === "TSThisType") {
+ node.parameterName = thisTypePredicate;
+ node.asserts = true;
+ node.typeAnnotation = null;
+ thisTypePredicate = this.finishNode(node, "TSTypePredicate");
+ } else {
+ this.resetStartLocationFromNode(thisTypePredicate, node);
+ thisTypePredicate.asserts = true;
+ }
+ t.typeAnnotation = thisTypePredicate;
+ return this.finishNode(t, "TSTypeAnnotation");
+ }
+ const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));
+ if (!typePredicateVariable) {
+ if (!asserts) {
+ return this.tsParseTypeAnnotation(false, t);
+ }
+ node.parameterName = this.parseIdentifier();
+ node.asserts = asserts;
+ node.typeAnnotation = null;
+ t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
+ return this.finishNode(t, "TSTypeAnnotation");
+ }
+ const type = this.tsParseTypeAnnotation(false);
+ node.parameterName = typePredicateVariable;
+ node.typeAnnotation = type;
+ node.asserts = asserts;
+ t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
+ return this.finishNode(t, "TSTypeAnnotation");
+ });
+ }
+ tsTryParseTypeOrTypePredicateAnnotation() {
+ if (this.match(14)) {
+ return this.tsParseTypeOrTypePredicateAnnotation(14);
+ }
+ }
+ tsTryParseTypeAnnotation() {
+ if (this.match(14)) {
+ return this.tsParseTypeAnnotation();
+ }
+ }
+ tsTryParseType() {
+ return this.tsEatThenParseType(14);
+ }
+ tsParseTypePredicatePrefix() {
+ const id = this.parseIdentifier();
+ if (this.isContextual(116) && !this.hasPrecedingLineBreak()) {
+ this.next();
+ return id;
+ }
+ }
+ tsParseTypePredicateAsserts() {
+ if (this.state.type !== 109) {
+ return false;
+ }
+ const containsEsc = this.state.containsEsc;
+ this.next();
+ if (!tokenIsIdentifier(this.state.type) && !this.match(78)) {
+ return false;
+ }
+ if (containsEsc) {
+ this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, {
+ reservedWord: "asserts"
+ });
+ }
+ return true;
+ }
+ tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {
+ this.tsInType(() => {
+ if (eatColon) this.expect(14);
+ t.typeAnnotation = this.tsParseType();
+ });
+ return this.finishNode(t, "TSTypeAnnotation");
+ }
+ tsParseType() {
+ assert(this.state.inType);
+ const type = this.tsParseNonConditionalType();
+ if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) {
+ return type;
+ }
+ const node = this.startNodeAtNode(type);
+ node.checkType = type;
+ node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType());
+ this.expect(17);
+ node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());
+ this.expect(14);
+ node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());
+ return this.finishNode(node, "TSConditionalType");
+ }
+ isAbstractConstructorSignature() {
+ return this.isContextual(124) && this.isLookaheadContextual("new");
+ }
+ tsParseNonConditionalType() {
+ if (this.tsIsStartOfFunctionType()) {
+ return this.tsParseFunctionOrConstructorType("TSFunctionType");
+ }
+ if (this.match(77)) {
+ return this.tsParseFunctionOrConstructorType("TSConstructorType");
+ } else if (this.isAbstractConstructorSignature()) {
+ return this.tsParseFunctionOrConstructorType("TSConstructorType", true);
+ }
+ return this.tsParseUnionTypeOrHigher();
+ }
+ tsParseTypeAssertion() {
+ if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
+ this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);
+ }
+ const node = this.startNode();
+ node.typeAnnotation = this.tsInType(() => {
+ this.next();
+ return this.match(75) ? this.tsParseTypeReference() : this.tsParseType();
+ });
+ this.expect(48);
+ node.expression = this.parseMaybeUnary();
+ return this.finishNode(node, "TSTypeAssertion");
+ }
+ tsParseHeritageClause(token) {
+ const originalStartLoc = this.state.startLoc;
+ const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => {
+ const node = this.startNode();
+ node.expression = this.tsParseEntityName(1 | 2);
+ if (this.match(47)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+ return this.finishNode(node, "TSExpressionWithTypeArguments");
+ });
+ if (!delimitedList.length) {
+ this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {
+ token
+ });
+ }
+ return delimitedList;
+ }
+ tsParseInterfaceDeclaration(node, properties = {}) {
+ if (this.hasFollowingLineBreak()) return null;
+ this.expectContextual(129);
+ if (properties.declare) node.declare = true;
+ if (tokenIsIdentifier(this.state.type)) {
+ node.id = this.parseIdentifier();
+ this.checkIdentifier(node.id, 130);
+ } else {
+ node.id = null;
+ this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);
+ }
+ node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);
+ if (this.eat(81)) {
+ node.extends = this.tsParseHeritageClause("extends");
+ }
+ const body = this.startNode();
+ body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));
+ node.body = this.finishNode(body, "TSInterfaceBody");
+ return this.finishNode(node, "TSInterfaceDeclaration");
+ }
+ tsParseTypeAliasDeclaration(node) {
+ node.id = this.parseIdentifier();
+ this.checkIdentifier(node.id, 2);
+ node.typeAnnotation = this.tsInType(() => {
+ node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers);
+ this.expect(29);
+ if (this.isContextual(114) && this.lookaheadCharCode() !== 46) {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, "TSIntrinsicKeyword");
+ }
+ return this.tsParseType();
+ });
+ this.semicolon();
+ return this.finishNode(node, "TSTypeAliasDeclaration");
+ }
+ tsInTopLevelContext(cb) {
+ if (this.curContext() !== types.brace) {
+ const oldContext = this.state.context;
+ this.state.context = [oldContext[0]];
+ try {
+ return cb();
+ } finally {
+ this.state.context = oldContext;
+ }
+ } else {
+ return cb();
+ }
+ }
+ tsInType(cb) {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ try {
+ return cb();
+ } finally {
+ this.state.inType = oldInType;
+ }
+ }
+ tsInDisallowConditionalTypesContext(cb) {
+ const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;
+ this.state.inDisallowConditionalTypesContext = true;
+ try {
+ return cb();
+ } finally {
+ this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;
+ }
+ }
+ tsInAllowConditionalTypesContext(cb) {
+ const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;
+ this.state.inDisallowConditionalTypesContext = false;
+ try {
+ return cb();
+ } finally {
+ this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;
+ }
+ }
+ tsEatThenParseType(token) {
+ if (this.match(token)) {
+ return this.tsNextThenParseType();
+ }
+ }
+ tsExpectThenParseType(token) {
+ return this.tsInType(() => {
+ this.expect(token);
+ return this.tsParseType();
+ });
+ }
+ tsNextThenParseType() {
+ return this.tsInType(() => {
+ this.next();
+ return this.tsParseType();
+ });
+ }
+ tsParseEnumMember() {
+ const node = this.startNode();
+ node.id = this.match(134) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true);
+ if (this.eat(29)) {
+ node.initializer = super.parseMaybeAssignAllowIn();
+ }
+ return this.finishNode(node, "TSEnumMember");
+ }
+ tsParseEnumDeclaration(node, properties = {}) {
+ if (properties.const) node.const = true;
+ if (properties.declare) node.declare = true;
+ this.expectContextual(126);
+ node.id = this.parseIdentifier();
+ this.checkIdentifier(node.id, node.const ? 8971 : 8459);
+ this.expect(5);
+ node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
+ this.expect(8);
+ return this.finishNode(node, "TSEnumDeclaration");
+ }
+ tsParseEnumBody() {
+ const node = this.startNode();
+ this.expect(5);
+ node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
+ this.expect(8);
+ return this.finishNode(node, "TSEnumBody");
+ }
+ tsParseModuleBlock() {
+ const node = this.startNode();
+ this.scope.enter(0);
+ this.expect(5);
+ super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8);
+ this.scope.exit();
+ return this.finishNode(node, "TSModuleBlock");
+ }
+ tsParseModuleOrNamespaceDeclaration(node, nested = false) {
+ node.id = this.parseIdentifier();
+ if (!nested) {
+ this.checkIdentifier(node.id, 1024);
+ }
+ if (this.eat(16)) {
+ const inner = this.startNode();
+ this.tsParseModuleOrNamespaceDeclaration(inner, true);
+ node.body = inner;
+ } else {
+ this.scope.enter(1024);
+ this.prodParam.enter(0);
+ node.body = this.tsParseModuleBlock();
+ this.prodParam.exit();
+ this.scope.exit();
+ }
+ return this.finishNode(node, "TSModuleDeclaration");
+ }
+ tsParseAmbientExternalModuleDeclaration(node) {
+ if (this.isContextual(112)) {
+ node.kind = "global";
+ node.global = true;
+ node.id = this.parseIdentifier();
+ } else if (this.match(134)) {
+ node.kind = "module";
+ node.id = super.parseStringLiteral(this.state.value);
+ } else {
+ this.unexpected();
+ }
+ if (this.match(5)) {
+ this.scope.enter(1024);
+ this.prodParam.enter(0);
+ node.body = this.tsParseModuleBlock();
+ this.prodParam.exit();
+ this.scope.exit();
+ } else {
+ this.semicolon();
+ }
+ return this.finishNode(node, "TSModuleDeclaration");
+ }
+ tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) {
+ node.isExport = isExport || false;
+ node.id = maybeDefaultIdentifier || this.parseIdentifier();
+ this.checkIdentifier(node.id, 4096);
+ this.expect(29);
+ const moduleReference = this.tsParseModuleReference();
+ if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") {
+ this.raise(TSErrors.ImportAliasHasImportType, moduleReference);
+ }
+ node.moduleReference = moduleReference;
+ this.semicolon();
+ return this.finishNode(node, "TSImportEqualsDeclaration");
+ }
+ tsIsExternalModuleReference() {
+ return this.isContextual(119) && this.lookaheadCharCode() === 40;
+ }
+ tsParseModuleReference() {
+ return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0);
+ }
+ tsParseExternalModuleReference() {
+ const node = this.startNode();
+ this.expectContextual(119);
+ this.expect(10);
+ if (!this.match(134)) {
+ this.unexpected();
+ }
+ node.expression = super.parseExprAtom();
+ this.expect(11);
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node, "TSExternalModuleReference");
+ }
+ tsLookAhead(f) {
+ const state = this.state.clone();
+ const res = f();
+ this.state = state;
+ return res;
+ }
+ tsTryParseAndCatch(f) {
+ const result = this.tryParse(abort => f() || abort());
+ if (result.aborted || !result.node) return;
+ if (result.error) this.state = result.failState;
+ return result.node;
+ }
+ tsTryParse(f) {
+ const state = this.state.clone();
+ const result = f();
+ if (result !== undefined && result !== false) {
+ return result;
+ }
+ this.state = state;
+ }
+ tsTryParseDeclare(node) {
+ if (this.isLineTerminator()) {
+ return;
+ }
+ const startType = this.state.type;
+ return this.tsInAmbientContext(() => {
+ switch (startType) {
+ case 68:
+ node.declare = true;
+ return super.parseFunctionStatement(node, false, false);
+ case 80:
+ node.declare = true;
+ return this.parseClass(node, true, false);
+ case 126:
+ return this.tsParseEnumDeclaration(node, {
+ declare: true
+ });
+ case 112:
+ return this.tsParseAmbientExternalModuleDeclaration(node);
+ case 100:
+ if (this.state.containsEsc) {
+ return;
+ }
+ case 75:
+ case 74:
+ if (!this.match(75) || !this.isLookaheadContextual("enum")) {
+ node.declare = true;
+ return this.parseVarStatement(node, this.state.value, true);
+ }
+ this.expect(75);
+ return this.tsParseEnumDeclaration(node, {
+ const: true,
+ declare: true
+ });
+ case 107:
+ if (this.isUsing()) {
+ this.raise(TSErrors.InvalidModifierOnUsingDeclaration, this.state.startLoc, "declare");
+ node.declare = true;
+ return this.parseVarStatement(node, "using", true);
+ }
+ break;
+ case 96:
+ if (this.isAwaitUsing()) {
+ this.raise(TSErrors.InvalidModifierOnAwaitUsingDeclaration, this.state.startLoc, "declare");
+ node.declare = true;
+ this.next();
+ return this.parseVarStatement(node, "await using", true);
+ }
+ break;
+ case 129:
+ {
+ const result = this.tsParseInterfaceDeclaration(node, {
+ declare: true
+ });
+ if (result) return result;
+ }
+ default:
+ if (tokenIsIdentifier(startType)) {
+ return this.tsParseDeclaration(node, this.state.type, true, null);
+ }
+ }
+ });
+ }
+ tsTryParseExportDeclaration() {
+ return this.tsParseDeclaration(this.startNode(), this.state.type, true, null);
+ }
+ tsParseDeclaration(node, type, next, decorators) {
+ switch (type) {
+ case 124:
+ if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) {
+ return this.tsParseAbstractDeclaration(node, decorators);
+ }
+ break;
+ case 127:
+ if (this.tsCheckLineTerminator(next)) {
+ if (this.match(134)) {
+ return this.tsParseAmbientExternalModuleDeclaration(node);
+ } else if (tokenIsIdentifier(this.state.type)) {
+ node.kind = "module";
+ return this.tsParseModuleOrNamespaceDeclaration(node);
+ }
+ }
+ break;
+ case 128:
+ if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
+ node.kind = "namespace";
+ return this.tsParseModuleOrNamespaceDeclaration(node);
+ }
+ break;
+ case 130:
+ if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
+ return this.tsParseTypeAliasDeclaration(node);
+ }
+ break;
+ }
+ }
+ tsCheckLineTerminator(next) {
+ if (next) {
+ if (this.hasFollowingLineBreak()) return false;
+ this.next();
+ return true;
+ }
+ return !this.isLineTerminator();
+ }
+ tsTryParseGenericAsyncArrowFunction(startLoc) {
+ if (!this.match(47)) return;
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ this.state.maybeInArrowParameters = true;
+ const res = this.tsTryParseAndCatch(() => {
+ const node = this.startNodeAt(startLoc);
+ node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);
+ super.parseFunctionParams(node);
+ node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();
+ this.expect(19);
+ return node;
+ });
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ if (!res) return;
+ return super.parseArrowExpression(res, null, true);
+ }
+ tsParseTypeArgumentsInExpression() {
+ if (this.reScan_lt() !== 47) return;
+ return this.tsParseTypeArguments();
+ }
+ tsParseTypeArguments() {
+ const node = this.startNode();
+ node.params = this.tsInType(() => this.tsInTopLevelContext(() => {
+ this.expect(47);
+ return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this));
+ }));
+ if (node.params.length === 0) {
+ this.raise(TSErrors.EmptyTypeArguments, node);
+ } else if (!this.state.inType && this.curContext() === types.brace) {
+ this.reScan_lt_gt();
+ }
+ this.expect(48);
+ return this.finishNode(node, "TSTypeParameterInstantiation");
+ }
+ tsIsDeclarationStart() {
+ return tokenIsTSDeclarationStart(this.state.type);
+ }
+ isExportDefaultSpecifier() {
+ if (this.tsIsDeclarationStart()) return false;
+ return super.isExportDefaultSpecifier();
+ }
+ parseBindingElement(flags, decorators) {
+ const startLoc = decorators.length ? decorators[0].loc.start : this.state.startLoc;
+ const modified = {};
+ this.tsParseModifiers({
+ allowedModifiers: ["public", "private", "protected", "override", "readonly"]
+ }, modified);
+ const accessibility = modified.accessibility;
+ const override = modified.override;
+ const readonly = modified.readonly;
+ if (!(flags & 4) && (accessibility || readonly || override)) {
+ this.raise(TSErrors.UnexpectedParameterModifier, startLoc);
+ }
+ const left = this.parseMaybeDefault();
+ if (flags & 2) {
+ this.parseFunctionParamType(left);
+ }
+ const elt = this.parseMaybeDefault(left.loc.start, left);
+ if (accessibility || readonly || override) {
+ const pp = this.startNodeAt(startLoc);
+ if (decorators.length) {
+ pp.decorators = decorators;
+ }
+ if (accessibility) pp.accessibility = accessibility;
+ if (readonly) pp.readonly = readonly;
+ if (override) pp.override = override;
+ if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") {
+ this.raise(TSErrors.UnsupportedParameterPropertyKind, pp);
+ }
+ pp.parameter = elt;
+ return this.finishNode(pp, "TSParameterProperty");
+ }
+ if (decorators.length) {
+ left.decorators = decorators;
+ }
+ return elt;
+ }
+ isSimpleParameter(node) {
+ return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node);
+ }
+ tsDisallowOptionalPattern(node) {
+ for (const param of node.params) {
+ if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) {
+ this.raise(TSErrors.PatternIsOptional, param);
+ }
+ }
+ }
+ setArrowFunctionParameters(node, params, trailingCommaLoc) {
+ super.setArrowFunctionParameters(node, params, trailingCommaLoc);
+ this.tsDisallowOptionalPattern(node);
+ }
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
+ if (this.match(14)) {
+ node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);
+ }
+ const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined;
+ if (bodilessType && !this.match(5) && this.isLineTerminator()) {
+ return this.finishNode(node, bodilessType);
+ }
+ if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) {
+ this.raise(TSErrors.DeclareFunctionHasImplementation, node);
+ if (node.declare) {
+ return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);
+ }
+ }
+ this.tsDisallowOptionalPattern(node);
+ return super.parseFunctionBodyAndFinish(node, type, isMethod);
+ }
+ registerFunctionStatementId(node) {
+ if (!node.body && node.id) {
+ this.checkIdentifier(node.id, 1024);
+ } else {
+ super.registerFunctionStatementId(node);
+ }
+ }
+ tsCheckForInvalidTypeCasts(items) {
+ items.forEach(node => {
+ if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") {
+ this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);
+ }
+ });
+ }
+ toReferencedList(exprList, isInParens) {
+ this.tsCheckForInvalidTypeCasts(exprList);
+ return exprList;
+ }
+ parseArrayLike(close, isTuple, refExpressionErrors) {
+ const node = super.parseArrayLike(close, isTuple, refExpressionErrors);
+ if (node.type === "ArrayExpression") {
+ this.tsCheckForInvalidTypeCasts(node.elements);
+ }
+ return node;
+ }
+ parseSubscript(base, startLoc, noCalls, state) {
+ if (!this.hasPrecedingLineBreak() && this.match(35)) {
+ this.state.canStartJSXElement = false;
+ this.next();
+ const nonNullExpression = this.startNodeAt(startLoc);
+ nonNullExpression.expression = base;
+ return this.finishNode(nonNullExpression, "TSNonNullExpression");
+ }
+ let isOptionalCall = false;
+ if (this.match(18) && this.lookaheadCharCode() === 60) {
+ if (noCalls) {
+ state.stop = true;
+ return base;
+ }
+ state.optionalChainMember = isOptionalCall = true;
+ this.next();
+ }
+ if (this.match(47) || this.match(51)) {
+ let missingParenErrorLoc;
+ const result = this.tsTryParseAndCatch(() => {
+ if (!noCalls && this.atPossibleAsyncArrow(base)) {
+ const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc);
+ if (asyncArrowFn) {
+ state.stop = true;
+ return asyncArrowFn;
+ }
+ }
+ const typeArguments = this.tsParseTypeArgumentsInExpression();
+ if (!typeArguments) return;
+ if (isOptionalCall && !this.match(10)) {
+ missingParenErrorLoc = this.state.curPosition();
+ return;
+ }
+ if (tokenIsTemplate(this.state.type)) {
+ const result = super.parseTaggedTemplateExpression(base, startLoc, state);
+ result.typeParameters = typeArguments;
+ return result;
+ }
+ if (!noCalls && this.eat(10)) {
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ node.arguments = this.parseCallExpressionArguments();
+ this.tsCheckForInvalidTypeCasts(node.arguments);
+ node.typeParameters = typeArguments;
+ if (state.optionalChainMember) {
+ node.optional = isOptionalCall;
+ }
+ return this.finishCallExpression(node, state.optionalChainMember);
+ }
+ const tokenType = this.state.type;
+ if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenType !== 93 && tokenType !== 120 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) {
+ return;
+ }
+ const node = this.startNodeAt(startLoc);
+ node.expression = base;
+ node.typeParameters = typeArguments;
+ return this.finishNode(node, "TSInstantiationExpression");
+ });
+ if (missingParenErrorLoc) {
+ this.unexpected(missingParenErrorLoc, 10);
+ }
+ if (result) {
+ if (result.type === "TSInstantiationExpression") {
+ if (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40) {
+ this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc);
+ }
+ if (!this.match(16) && !this.match(18)) {
+ result.expression = super.stopParseSubscript(base, state);
+ }
+ }
+ return result;
+ }
+ }
+ return super.parseSubscript(base, startLoc, noCalls, state);
+ }
+ parseNewCallee(node) {
+ var _callee$extra;
+ super.parseNewCallee(node);
+ const {
+ callee
+ } = node;
+ if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) {
+ node.typeParameters = callee.typeParameters;
+ node.callee = callee.expression;
+ }
+ }
+ parseExprOp(left, leftStartLoc, minPrec) {
+ let isSatisfies;
+ if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) {
+ const node = this.startNodeAt(leftStartLoc);
+ node.expression = left;
+ node.typeAnnotation = this.tsInType(() => {
+ this.next();
+ if (this.match(75)) {
+ if (isSatisfies) {
+ this.raise(Errors.UnexpectedKeyword, this.state.startLoc, {
+ keyword: "const"
+ });
+ }
+ return this.tsParseTypeReference();
+ }
+ return this.tsParseType();
+ });
+ this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression");
+ this.reScan_lt_gt();
+ return this.parseExprOp(node, leftStartLoc, minPrec);
+ }
+ return super.parseExprOp(left, leftStartLoc, minPrec);
+ }
+ checkReservedWord(word, startLoc, checkKeywords, isBinding) {
+ if (!this.state.isAmbientContext) {
+ super.checkReservedWord(word, startLoc, checkKeywords, isBinding);
+ }
+ }
+ checkImportReflection(node) {
+ super.checkImportReflection(node);
+ if (node.module && node.importKind !== "value") {
+ this.raise(TSErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start);
+ }
+ }
+ checkDuplicateExports() {}
+ isPotentialImportPhase(isExport) {
+ if (super.isPotentialImportPhase(isExport)) return true;
+ if (this.isContextual(130)) {
+ const ch = this.lookaheadCharCode();
+ return isExport ? ch === 123 || ch === 42 : ch !== 61;
+ }
+ return !isExport && this.isContextual(87);
+ }
+ applyImportPhase(node, isExport, phase, loc) {
+ super.applyImportPhase(node, isExport, phase, loc);
+ if (isExport) {
+ node.exportKind = phase === "type" ? "type" : "value";
+ } else {
+ node.importKind = phase === "type" || phase === "typeof" ? phase : "value";
+ }
+ }
+ parseImport(node) {
+ if (this.match(134)) {
+ node.importKind = "value";
+ return super.parseImport(node);
+ }
+ let importNode;
+ if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) {
+ node.importKind = "value";
+ return this.tsParseImportEqualsDeclaration(node);
+ } else if (this.isContextual(130)) {
+ const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false);
+ if (this.lookaheadCharCode() === 61) {
+ return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier);
+ } else {
+ importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier);
+ }
+ } else {
+ importNode = super.parseImport(node);
+ }
+ if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") {
+ this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);
+ }
+ return importNode;
+ }
+ parseExport(node, decorators) {
+ if (this.match(83)) {
+ const nodeImportEquals = node;
+ this.next();
+ let maybeDefaultIdentifier = null;
+ if (this.isContextual(130) && this.isPotentialImportPhase(false)) {
+ maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false);
+ } else {
+ nodeImportEquals.importKind = "value";
+ }
+ const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true);
+ return declaration;
+ } else if (this.eat(29)) {
+ const assign = node;
+ assign.expression = super.parseExpression();
+ this.semicolon();
+ this.sawUnambiguousESM = true;
+ return this.finishNode(assign, "TSExportAssignment");
+ } else if (this.eatContextual(93)) {
+ const decl = node;
+ this.expectContextual(128);
+ decl.id = this.parseIdentifier();
+ this.semicolon();
+ return this.finishNode(decl, "TSNamespaceExportDeclaration");
+ } else {
+ return super.parseExport(node, decorators);
+ }
+ }
+ isAbstractClass() {
+ return this.isContextual(124) && this.isLookaheadContextual("class");
+ }
+ parseExportDefaultExpression() {
+ if (this.isAbstractClass()) {
+ const cls = this.startNode();
+ this.next();
+ cls.abstract = true;
+ return this.parseClass(cls, true, true);
+ }
+ if (this.match(129)) {
+ const result = this.tsParseInterfaceDeclaration(this.startNode());
+ if (result) return result;
+ }
+ return super.parseExportDefaultExpression();
+ }
+ parseVarStatement(node, kind, allowMissingInitializer = false) {
+ const {
+ isAmbientContext
+ } = this.state;
+ const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext);
+ if (!isAmbientContext) return declaration;
+ if (!node.declare && (kind === "using" || kind === "await using")) {
+ this.raiseOverwrite(TSErrors.UsingDeclarationInAmbientContext, node, kind);
+ return declaration;
+ }
+ for (const {
+ id,
+ init
+ } of declaration.declarations) {
+ if (!init) continue;
+ if (kind === "var" || kind === "let" || !!id.typeAnnotation) {
+ this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);
+ } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) {
+ this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init);
+ }
+ }
+ return declaration;
+ }
+ parseStatementContent(flags, decorators) {
+ if (!this.state.containsEsc) {
+ switch (this.state.type) {
+ case 75:
+ {
+ if (this.isLookaheadContextual("enum")) {
+ const node = this.startNode();
+ this.expect(75);
+ return this.tsParseEnumDeclaration(node, {
+ const: true
+ });
+ }
+ break;
+ }
+ case 124:
+ case 125:
+ {
+ if (this.nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine()) {
+ const token = this.state.type;
+ const node = this.startNode();
+ this.next();
+ const declaration = token === 125 ? this.tsTryParseDeclare(node) : this.tsParseAbstractDeclaration(node, decorators);
+ if (declaration) {
+ if (token === 125) {
+ declaration.declare = true;
+ }
+ return declaration;
+ } else {
+ node.expression = this.createIdentifier(this.startNodeAt(node.loc.start), token === 125 ? "declare" : "abstract");
+ this.semicolon(false);
+ return this.finishNode(node, "ExpressionStatement");
+ }
+ }
+ break;
+ }
+ case 126:
+ return this.tsParseEnumDeclaration(this.startNode());
+ case 112:
+ {
+ const nextCh = this.lookaheadCharCode();
+ if (nextCh === 123) {
+ const node = this.startNode();
+ return this.tsParseAmbientExternalModuleDeclaration(node);
+ }
+ break;
+ }
+ case 129:
+ {
+ const result = this.tsParseInterfaceDeclaration(this.startNode());
+ if (result) return result;
+ break;
+ }
+ case 127:
+ {
+ if (this.nextTokenIsIdentifierOrStringLiteralOnSameLine()) {
+ const node = this.startNode();
+ this.next();
+ return this.tsParseDeclaration(node, 127, false, decorators);
+ }
+ break;
+ }
+ case 128:
+ {
+ if (this.nextTokenIsIdentifierOnSameLine()) {
+ const node = this.startNode();
+ this.next();
+ return this.tsParseDeclaration(node, 128, false, decorators);
+ }
+ break;
+ }
+ case 130:
+ {
+ if (this.nextTokenIsIdentifierOnSameLine()) {
+ const node = this.startNode();
+ this.next();
+ return this.tsParseTypeAliasDeclaration(node);
+ }
+ break;
+ }
+ }
+ }
+ return super.parseStatementContent(flags, decorators);
+ }
+ parseAccessModifier() {
+ return this.tsParseModifier(["public", "protected", "private"]);
+ }
+ tsHasSomeModifiers(member, modifiers) {
+ return modifiers.some(modifier => {
+ if (tsIsAccessModifier(modifier)) {
+ return member.accessibility === modifier;
+ }
+ return !!member[modifier];
+ });
+ }
+ tsIsStartOfStaticBlocks() {
+ return this.isContextual(106) && this.lookaheadCharCode() === 123;
+ }
+ parseClassMember(classBody, member, state) {
+ const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"];
+ this.tsParseModifiers({
+ allowedModifiers: modifiers,
+ disallowedModifiers: ["in", "out"],
+ stopOnStartOfClassStaticBlock: true,
+ errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions
+ }, member);
+ const callParseClassMemberWithIsStatic = () => {
+ if (this.tsIsStartOfStaticBlocks()) {
+ this.next();
+ this.next();
+ if (this.tsHasSomeModifiers(member, modifiers)) {
+ this.raise(TSErrors.StaticBlockCannotHaveModifier, this.state.curPosition());
+ }
+ super.parseClassStaticBlock(classBody, member);
+ } else {
+ this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static);
+ }
+ };
+ if (member.declare) {
+ this.tsInAmbientContext(callParseClassMemberWithIsStatic);
+ } else {
+ callParseClassMemberWithIsStatic();
+ }
+ }
+ parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
+ const idx = this.tsTryParseIndexSignature(member);
+ if (idx) {
+ classBody.body.push(idx);
+ if (member.abstract) {
+ this.raise(TSErrors.IndexSignatureHasAbstract, member);
+ }
+ if (member.accessibility) {
+ this.raise(TSErrors.IndexSignatureHasAccessibility, member, {
+ modifier: member.accessibility
+ });
+ }
+ if (member.declare) {
+ this.raise(TSErrors.IndexSignatureHasDeclare, member);
+ }
+ if (member.override) {
+ this.raise(TSErrors.IndexSignatureHasOverride, member);
+ }
+ return;
+ }
+ if (!this.state.inAbstractClass && member.abstract) {
+ this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);
+ }
+ if (member.override) {
+ if (!state.hadSuperClass) {
+ this.raise(TSErrors.OverrideNotInSubClass, member);
+ }
+ }
+ super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);
+ }
+ parsePostMemberNameModifiers(methodOrProp) {
+ const optional = this.eat(17);
+ if (optional) methodOrProp.optional = true;
+ if (methodOrProp.readonly && this.match(10)) {
+ this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);
+ }
+ if (methodOrProp.declare && this.match(10)) {
+ this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);
+ }
+ }
+ shouldParseExportDeclaration() {
+ if (this.tsIsDeclarationStart()) return true;
+ return super.shouldParseExportDeclaration();
+ }
+ parseConditional(expr, startLoc, refExpressionErrors) {
+ if (!this.match(17)) return expr;
+ if (this.state.maybeInArrowParameters) {
+ const nextCh = this.lookaheadCharCode();
+ if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {
+ this.setOptionalParametersError(refExpressionErrors);
+ return expr;
+ }
+ }
+ return super.parseConditional(expr, startLoc, refExpressionErrors);
+ }
+ parseParenItem(node, startLoc) {
+ const newNode = super.parseParenItem(node, startLoc);
+ if (this.eat(17)) {
+ newNode.optional = true;
+ this.resetEndLocation(node);
+ }
+ if (this.match(14)) {
+ const typeCastNode = this.startNodeAt(startLoc);
+ typeCastNode.expression = node;
+ typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();
+ return this.finishNode(typeCastNode, "TSTypeCastExpression");
+ }
+ return node;
+ }
+ parseExportDeclaration(node) {
+ if (!this.state.isAmbientContext && this.isContextual(125)) {
+ return this.tsInAmbientContext(() => this.parseExportDeclaration(node));
+ }
+ const startLoc = this.state.startLoc;
+ const isDeclare = this.eatContextual(125);
+ if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) {
+ throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc);
+ }
+ const isIdentifier = tokenIsIdentifier(this.state.type);
+ const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node);
+ if (!declaration) return null;
+ if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) {
+ node.exportKind = "type";
+ }
+ if (isDeclare && declaration.type !== "TSImportEqualsDeclaration") {
+ this.resetStartLocation(declaration, startLoc);
+ declaration.declare = true;
+ }
+ return declaration;
+ }
+ parseClassId(node, isStatement, optionalId, bindingType) {
+ if ((!isStatement || optionalId) && this.isContextual(113)) {
+ return;
+ }
+ super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331);
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);
+ if (typeParameters) node.typeParameters = typeParameters;
+ }
+ parseClassPropertyAnnotation(node) {
+ if (!node.optional) {
+ if (this.eat(35)) {
+ node.definite = true;
+ } else if (this.eat(17)) {
+ node.optional = true;
+ }
+ }
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) node.typeAnnotation = type;
+ }
+ parseClassProperty(node) {
+ this.parseClassPropertyAnnotation(node);
+ if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) {
+ this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc);
+ }
+ if (node.abstract && this.match(29)) {
+ const {
+ key
+ } = node;
+ this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, {
+ propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`
+ });
+ }
+ return super.parseClassProperty(node);
+ }
+ parseClassPrivateProperty(node) {
+ if (node.abstract) {
+ this.raise(TSErrors.PrivateElementHasAbstract, node);
+ }
+ if (node.accessibility) {
+ this.raise(TSErrors.PrivateElementHasAccessibility, node, {
+ modifier: node.accessibility
+ });
+ }
+ this.parseClassPropertyAnnotation(node);
+ return super.parseClassPrivateProperty(node);
+ }
+ parseClassAccessorProperty(node) {
+ this.parseClassPropertyAnnotation(node);
+ if (node.optional) {
+ this.raise(TSErrors.AccessorCannotBeOptional, node);
+ }
+ return super.parseClassAccessorProperty(node);
+ }
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ if (typeParameters && isConstructor) {
+ this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);
+ }
+ const {
+ declare = false,
+ kind
+ } = method;
+ if (declare && (kind === "get" || kind === "set")) {
+ this.raise(TSErrors.DeclareAccessor, method, {
+ kind
+ });
+ }
+ if (typeParameters) method.typeParameters = typeParameters;
+ super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
+ }
+ pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ if (typeParameters) method.typeParameters = typeParameters;
+ super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);
+ }
+ declareClassPrivateMethodInScope(node, kind) {
+ if (node.type === "TSDeclareMethod") return;
+ if (node.type === "MethodDefinition" && node.value.body == null) {
+ return;
+ }
+ super.declareClassPrivateMethodInScope(node, kind);
+ }
+ parseClassSuper(node) {
+ super.parseClassSuper(node);
+ if (node.superClass) {
+ if (node.superClass.type === "TSInstantiationExpression") {
+ const tsInstantiationExpression = node.superClass;
+ const superClass = tsInstantiationExpression.expression;
+ this.takeSurroundingComments(superClass, superClass.start, superClass.end);
+ const superTypeArguments = tsInstantiationExpression.typeParameters;
+ this.takeSurroundingComments(superTypeArguments, superTypeArguments.start, superTypeArguments.end);
+ node.superClass = superClass;
+ node.superTypeParameters = superTypeArguments;
+ } else if (this.match(47) || this.match(51)) {
+ node.superTypeParameters = this.tsParseTypeArgumentsInExpression();
+ }
+ }
+ if (this.eatContextual(113)) {
+ node.implements = this.tsParseHeritageClause("implements");
+ }
+ }
+ parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ if (typeParameters) prop.typeParameters = typeParameters;
+ return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);
+ }
+ parseFunctionParams(node, isConstructor) {
+ const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
+ if (typeParameters) node.typeParameters = typeParameters;
+ super.parseFunctionParams(node, isConstructor);
+ }
+ parseVarId(decl, kind) {
+ super.parseVarId(decl, kind);
+ if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) {
+ decl.definite = true;
+ }
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) {
+ decl.id.typeAnnotation = type;
+ this.resetEndLocation(decl.id);
+ }
+ }
+ parseAsyncArrowFromCallExpression(node, call) {
+ if (this.match(14)) {
+ node.returnType = this.tsParseTypeAnnotation();
+ }
+ return super.parseAsyncArrowFromCallExpression(node, call);
+ }
+ parseMaybeAssign(refExpressionErrors, afterLeftParse) {
+ var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2;
+ let state;
+ let jsx;
+ let typeCast;
+ if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) {
+ state = this.state.clone();
+ jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);
+ if (!jsx.error) return jsx.node;
+ const {
+ context
+ } = this.state;
+ const currentContext = context[context.length - 1];
+ if (currentContext === types.j_oTag || currentContext === types.j_expr) {
+ context.pop();
+ }
+ }
+ if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) {
+ return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ }
+ if (!state || state === this.state) state = this.state.clone();
+ let typeParameters;
+ const arrow = this.tryParse(abort => {
+ var _expr$extra, _typeParameters;
+ typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);
+ const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {
+ abort();
+ }
+ if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {
+ this.resetStartLocationFromNode(expr, typeParameters);
+ }
+ expr.typeParameters = typeParameters;
+ return expr;
+ }, state);
+ if (!arrow.error && !arrow.aborted) {
+ if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
+ return arrow.node;
+ }
+ if (!jsx) {
+ assert(!this.hasPlugin("jsx"));
+ typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);
+ if (!typeCast.error) return typeCast.node;
+ }
+ if ((_jsx2 = jsx) != null && _jsx2.node) {
+ this.state = jsx.failState;
+ return jsx.node;
+ }
+ if (arrow.node) {
+ this.state = arrow.failState;
+ if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
+ return arrow.node;
+ }
+ if ((_typeCast = typeCast) != null && _typeCast.node) {
+ this.state = typeCast.failState;
+ return typeCast.node;
+ }
+ throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error);
+ }
+ reportReservedArrowTypeParam(node) {
+ var _node$extra2;
+ if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra2 = node.extra) != null && _node$extra2.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
+ this.raise(TSErrors.ReservedArrowTypeParam, node);
+ }
+ }
+ parseMaybeUnary(refExpressionErrors, sawUnary) {
+ if (!this.hasPlugin("jsx") && this.match(47)) {
+ return this.tsParseTypeAssertion();
+ }
+ return super.parseMaybeUnary(refExpressionErrors, sawUnary);
+ }
+ parseArrow(node) {
+ if (this.match(14)) {
+ const result = this.tryParse(abort => {
+ const returnType = this.tsParseTypeOrTypePredicateAnnotation(14);
+ if (this.canInsertSemicolon() || !this.match(19)) abort();
+ return returnType;
+ });
+ if (result.aborted) return;
+ if (!result.thrown) {
+ if (result.error) this.state = result.failState;
+ node.returnType = result.node;
+ }
+ }
+ return super.parseArrow(node);
+ }
+ parseFunctionParamType(param) {
+ if (this.eat(17)) {
+ param.optional = true;
+ }
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) param.typeAnnotation = type;
+ this.resetEndLocation(param);
+ return param;
+ }
+ isAssignable(node, isBinding) {
+ switch (node.type) {
+ case "TSTypeCastExpression":
+ return this.isAssignable(node.expression, isBinding);
+ case "TSParameterProperty":
+ return true;
+ default:
+ return super.isAssignable(node, isBinding);
+ }
+ }
+ toAssignable(node, isLHS = false) {
+ switch (node.type) {
+ case "ParenthesizedExpression":
+ this.toAssignableParenthesizedExpression(node, isLHS);
+ break;
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSNonNullExpression":
+ case "TSTypeAssertion":
+ if (isLHS) {
+ this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node);
+ } else {
+ this.raise(TSErrors.UnexpectedTypeCastInParameter, node);
+ }
+ this.toAssignable(node.expression, isLHS);
+ break;
+ case "AssignmentExpression":
+ if (!isLHS && node.left.type === "TSTypeCastExpression") {
+ node.left = this.typeCastToParameter(node.left);
+ }
+ default:
+ super.toAssignable(node, isLHS);
+ }
+ }
+ toAssignableParenthesizedExpression(node, isLHS) {
+ switch (node.expression.type) {
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSNonNullExpression":
+ case "TSTypeAssertion":
+ case "ParenthesizedExpression":
+ this.toAssignable(node.expression, isLHS);
+ break;
+ default:
+ super.toAssignable(node, isLHS);
+ }
+ }
+ checkToRestConversion(node, allowPattern) {
+ switch (node.type) {
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSNonNullExpression":
+ this.checkToRestConversion(node.expression, false);
+ break;
+ default:
+ super.checkToRestConversion(node, allowPattern);
+ }
+ }
+ isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {
+ switch (type) {
+ case "TSTypeCastExpression":
+ return true;
+ case "TSParameterProperty":
+ return "parameter";
+ case "TSNonNullExpression":
+ return "expression";
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ return (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true];
+ default:
+ return super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding);
+ }
+ }
+ parseBindingAtom() {
+ if (this.state.type === 78) {
+ return this.parseIdentifier(true);
+ }
+ return super.parseBindingAtom();
+ }
+ parseMaybeDecoratorArguments(expr, startLoc) {
+ if (this.match(47) || this.match(51)) {
+ const typeArguments = this.tsParseTypeArgumentsInExpression();
+ if (this.match(10)) {
+ const call = super.parseMaybeDecoratorArguments(expr, startLoc);
+ call.typeParameters = typeArguments;
+ return call;
+ }
+ this.unexpected(null, 10);
+ }
+ return super.parseMaybeDecoratorArguments(expr, startLoc);
+ }
+ checkCommaAfterRest(close) {
+ if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {
+ this.next();
+ return false;
+ }
+ return super.checkCommaAfterRest(close);
+ }
+ isClassMethod() {
+ return this.match(47) || super.isClassMethod();
+ }
+ isClassProperty() {
+ return this.match(35) || this.match(14) || super.isClassProperty();
+ }
+ parseMaybeDefault(startLoc, left) {
+ const node = super.parseMaybeDefault(startLoc, left);
+ if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
+ this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);
+ }
+ return node;
+ }
+ getTokenFromCode(code) {
+ if (this.state.inType) {
+ if (code === 62) {
+ this.finishOp(48, 1);
+ return;
+ }
+ if (code === 60) {
+ this.finishOp(47, 1);
+ return;
+ }
+ }
+ super.getTokenFromCode(code);
+ }
+ reScan_lt_gt() {
+ const {
+ type
+ } = this.state;
+ if (type === 47) {
+ this.state.pos -= 1;
+ this.readToken_lt();
+ } else if (type === 48) {
+ this.state.pos -= 1;
+ this.readToken_gt();
+ }
+ }
+ reScan_lt() {
+ const {
+ type
+ } = this.state;
+ if (type === 51) {
+ this.state.pos -= 2;
+ this.finishOp(47, 1);
+ return 47;
+ }
+ return type;
+ }
+ toAssignableListItem(exprList, index, isLHS) {
+ const node = exprList[index];
+ if (node.type === "TSTypeCastExpression") {
+ exprList[index] = this.typeCastToParameter(node);
+ }
+ super.toAssignableListItem(exprList, index, isLHS);
+ }
+ typeCastToParameter(node) {
+ node.expression.typeAnnotation = node.typeAnnotation;
+ this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);
+ return node.expression;
+ }
+ shouldParseArrow(params) {
+ if (this.match(14)) {
+ return params.every(expr => this.isAssignable(expr, true));
+ }
+ return super.shouldParseArrow(params);
+ }
+ shouldParseAsyncArrow() {
+ return this.match(14) || super.shouldParseAsyncArrow();
+ }
+ canHaveLeadingDecorator() {
+ return super.canHaveLeadingDecorator() || this.isAbstractClass();
+ }
+ jsxParseOpeningElementAfterName(node) {
+ if (this.match(47) || this.match(51)) {
+ const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression());
+ if (typeArguments) {
+ node.typeParameters = typeArguments;
+ }
+ }
+ return super.jsxParseOpeningElementAfterName(node);
+ }
+ getGetterSetterExpectedParamCount(method) {
+ const baseCount = super.getGetterSetterExpectedParamCount(method);
+ const params = this.getObjectOrClassMethodParams(method);
+ const firstParam = params[0];
+ const hasContextParam = firstParam && this.isThisParam(firstParam);
+ return hasContextParam ? baseCount + 1 : baseCount;
+ }
+ parseCatchClauseParam() {
+ const param = super.parseCatchClauseParam();
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) {
+ param.typeAnnotation = type;
+ this.resetEndLocation(param);
+ }
+ return param;
+ }
+ tsInAmbientContext(cb) {
+ const {
+ isAmbientContext: oldIsAmbientContext,
+ strict: oldStrict
+ } = this.state;
+ this.state.isAmbientContext = true;
+ this.state.strict = false;
+ try {
+ return cb();
+ } finally {
+ this.state.isAmbientContext = oldIsAmbientContext;
+ this.state.strict = oldStrict;
+ }
+ }
+ parseClass(node, isStatement, optionalId) {
+ const oldInAbstractClass = this.state.inAbstractClass;
+ this.state.inAbstractClass = !!node.abstract;
+ try {
+ return super.parseClass(node, isStatement, optionalId);
+ } finally {
+ this.state.inAbstractClass = oldInAbstractClass;
+ }
+ }
+ tsParseAbstractDeclaration(node, decorators) {
+ if (this.match(80)) {
+ node.abstract = true;
+ return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false));
+ } else if (this.isContextual(129)) {
+ if (!this.hasFollowingLineBreak()) {
+ node.abstract = true;
+ this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node);
+ return this.tsParseInterfaceDeclaration(node);
+ } else {
+ return null;
+ }
+ }
+ throw this.unexpected(null, 80);
+ }
+ parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {
+ const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
+ if (method.abstract || method.type === "TSAbstractMethodDefinition") {
+ const hasEstreePlugin = this.hasPlugin("estree");
+ const methodFn = hasEstreePlugin ? method.value : method;
+ if (methodFn.body) {
+ const {
+ key
+ } = method;
+ this.raise(TSErrors.AbstractMethodHasImplementation, method, {
+ methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`
+ });
+ }
+ }
+ return method;
+ }
+ tsParseTypeParameterName() {
+ const typeName = this.parseIdentifier();
+ return typeName.name;
+ }
+ shouldParseAsAmbientContext() {
+ return !!this.getPluginOption("typescript", "dts");
+ }
+ parse() {
+ if (this.shouldParseAsAmbientContext()) {
+ this.state.isAmbientContext = true;
+ }
+ return super.parse();
+ }
+ getExpression() {
+ if (this.shouldParseAsAmbientContext()) {
+ this.state.isAmbientContext = true;
+ }
+ return super.getExpression();
+ }
+ parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
+ if (!isString && isMaybeTypeOnly) {
+ this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);
+ return this.finishNode(node, "ExportSpecifier");
+ }
+ node.exportKind = "value";
+ return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly);
+ }
+ parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
+ if (!importedIsString && isMaybeTypeOnly) {
+ this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);
+ return this.finishNode(specifier, "ImportSpecifier");
+ }
+ specifier.importKind = "value";
+ return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096);
+ }
+ parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {
+ const leftOfAsKey = isImport ? "imported" : "local";
+ const rightOfAsKey = isImport ? "local" : "exported";
+ let leftOfAs = node[leftOfAsKey];
+ let rightOfAs;
+ let hasTypeSpecifier = false;
+ let canParseAsKeyword = true;
+ const loc = leftOfAs.loc.start;
+ if (this.isContextual(93)) {
+ const firstAs = this.parseIdentifier();
+ if (this.isContextual(93)) {
+ const secondAs = this.parseIdentifier();
+ if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ hasTypeSpecifier = true;
+ leftOfAs = firstAs;
+ rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();
+ canParseAsKeyword = false;
+ } else {
+ rightOfAs = secondAs;
+ canParseAsKeyword = false;
+ }
+ } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ canParseAsKeyword = false;
+ rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();
+ } else {
+ hasTypeSpecifier = true;
+ leftOfAs = firstAs;
+ }
+ } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ hasTypeSpecifier = true;
+ if (isImport) {
+ leftOfAs = this.parseIdentifier(true);
+ if (!this.isContextual(93)) {
+ this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true);
+ }
+ } else {
+ leftOfAs = this.parseModuleExportName();
+ }
+ }
+ if (hasTypeSpecifier && isInTypeOnlyImportExport) {
+ this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc);
+ }
+ node[leftOfAsKey] = leftOfAs;
+ node[rightOfAsKey] = rightOfAs;
+ const kindKey = isImport ? "importKind" : "exportKind";
+ node[kindKey] = hasTypeSpecifier ? "type" : "value";
+ if (canParseAsKeyword && this.eatContextual(93)) {
+ node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();
+ }
+ if (!node[rightOfAsKey]) {
+ node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]);
+ }
+ if (isImport) {
+ this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096);
+ }
+ }
+ fillOptionalPropertiesForTSESLint(node) {
+ var _node$directive, _node$decorators, _node$optional, _node$typeAnnotation, _node$accessibility, _node$decorators2, _node$override, _node$readonly, _node$static, _node$declare, _node$returnType, _node$typeParameters, _node$optional2, _node$optional3, _node$accessibility2, _node$readonly2, _node$static2, _node$declare2, _node$definite, _node$readonly3, _node$typeAnnotation2, _node$accessibility3, _node$decorators3, _node$override2, _node$optional4, _node$id, _node$abstract, _node$declare3, _node$decorators4, _node$implements, _node$superTypeArgume, _node$typeParameters2, _node$declare4, _node$definite2, _node$const, _node$declare5, _node$computed, _node$qualifier, _node$options, _node$declare6, _node$extends, _node$optional5, _node$readonly4, _node$declare7, _node$global, _node$const2, _node$in, _node$out;
+ switch (node.type) {
+ case "ExpressionStatement":
+ (_node$directive = node.directive) != null ? _node$directive : node.directive = undefined;
+ return;
+ case "RestElement":
+ node.value = undefined;
+ case "Identifier":
+ case "ArrayPattern":
+ case "AssignmentPattern":
+ case "ObjectPattern":
+ (_node$decorators = node.decorators) != null ? _node$decorators : node.decorators = [];
+ (_node$optional = node.optional) != null ? _node$optional : node.optional = false;
+ (_node$typeAnnotation = node.typeAnnotation) != null ? _node$typeAnnotation : node.typeAnnotation = undefined;
+ return;
+ case "TSParameterProperty":
+ (_node$accessibility = node.accessibility) != null ? _node$accessibility : node.accessibility = undefined;
+ (_node$decorators2 = node.decorators) != null ? _node$decorators2 : node.decorators = [];
+ (_node$override = node.override) != null ? _node$override : node.override = false;
+ (_node$readonly = node.readonly) != null ? _node$readonly : node.readonly = false;
+ (_node$static = node.static) != null ? _node$static : node.static = false;
+ return;
+ case "TSEmptyBodyFunctionExpression":
+ node.body = null;
+ case "TSDeclareFunction":
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ (_node$declare = node.declare) != null ? _node$declare : node.declare = false;
+ (_node$returnType = node.returnType) != null ? _node$returnType : node.returnType = undefined;
+ (_node$typeParameters = node.typeParameters) != null ? _node$typeParameters : node.typeParameters = undefined;
+ return;
+ case "Property":
+ (_node$optional2 = node.optional) != null ? _node$optional2 : node.optional = false;
+ return;
+ case "TSMethodSignature":
+ case "TSPropertySignature":
+ (_node$optional3 = node.optional) != null ? _node$optional3 : node.optional = false;
+ case "TSIndexSignature":
+ (_node$accessibility2 = node.accessibility) != null ? _node$accessibility2 : node.accessibility = undefined;
+ (_node$readonly2 = node.readonly) != null ? _node$readonly2 : node.readonly = false;
+ (_node$static2 = node.static) != null ? _node$static2 : node.static = false;
+ return;
+ case "TSAbstractPropertyDefinition":
+ case "PropertyDefinition":
+ case "TSAbstractAccessorProperty":
+ case "AccessorProperty":
+ (_node$declare2 = node.declare) != null ? _node$declare2 : node.declare = false;
+ (_node$definite = node.definite) != null ? _node$definite : node.definite = false;
+ (_node$readonly3 = node.readonly) != null ? _node$readonly3 : node.readonly = false;
+ (_node$typeAnnotation2 = node.typeAnnotation) != null ? _node$typeAnnotation2 : node.typeAnnotation = undefined;
+ case "TSAbstractMethodDefinition":
+ case "MethodDefinition":
+ (_node$accessibility3 = node.accessibility) != null ? _node$accessibility3 : node.accessibility = undefined;
+ (_node$decorators3 = node.decorators) != null ? _node$decorators3 : node.decorators = [];
+ (_node$override2 = node.override) != null ? _node$override2 : node.override = false;
+ (_node$optional4 = node.optional) != null ? _node$optional4 : node.optional = false;
+ return;
+ case "ClassExpression":
+ (_node$id = node.id) != null ? _node$id : node.id = null;
+ case "ClassDeclaration":
+ (_node$abstract = node.abstract) != null ? _node$abstract : node.abstract = false;
+ (_node$declare3 = node.declare) != null ? _node$declare3 : node.declare = false;
+ (_node$decorators4 = node.decorators) != null ? _node$decorators4 : node.decorators = [];
+ (_node$implements = node.implements) != null ? _node$implements : node.implements = [];
+ (_node$superTypeArgume = node.superTypeArguments) != null ? _node$superTypeArgume : node.superTypeArguments = undefined;
+ (_node$typeParameters2 = node.typeParameters) != null ? _node$typeParameters2 : node.typeParameters = undefined;
+ return;
+ case "TSTypeAliasDeclaration":
+ case "VariableDeclaration":
+ (_node$declare4 = node.declare) != null ? _node$declare4 : node.declare = false;
+ return;
+ case "VariableDeclarator":
+ (_node$definite2 = node.definite) != null ? _node$definite2 : node.definite = false;
+ return;
+ case "TSEnumDeclaration":
+ (_node$const = node.const) != null ? _node$const : node.const = false;
+ (_node$declare5 = node.declare) != null ? _node$declare5 : node.declare = false;
+ return;
+ case "TSEnumMember":
+ (_node$computed = node.computed) != null ? _node$computed : node.computed = false;
+ return;
+ case "TSImportType":
+ (_node$qualifier = node.qualifier) != null ? _node$qualifier : node.qualifier = null;
+ (_node$options = node.options) != null ? _node$options : node.options = null;
+ return;
+ case "TSInterfaceDeclaration":
+ (_node$declare6 = node.declare) != null ? _node$declare6 : node.declare = false;
+ (_node$extends = node.extends) != null ? _node$extends : node.extends = [];
+ return;
+ case "TSMappedType":
+ (_node$optional5 = node.optional) != null ? _node$optional5 : node.optional = false;
+ (_node$readonly4 = node.readonly) != null ? _node$readonly4 : node.readonly = undefined;
+ return;
+ case "TSModuleDeclaration":
+ (_node$declare7 = node.declare) != null ? _node$declare7 : node.declare = false;
+ (_node$global = node.global) != null ? _node$global : node.global = node.kind === "global";
+ return;
+ case "TSTypeParameter":
+ (_node$const2 = node.const) != null ? _node$const2 : node.const = false;
+ (_node$in = node.in) != null ? _node$in : node.in = false;
+ (_node$out = node.out) != null ? _node$out : node.out = false;
+ return;
+ }
+ }
+ chStartsBindingIdentifierAndNotRelationalOperator(ch, pos) {
+ if (isIdentifierStart(ch)) {
+ keywordAndTSRelationalOperator.lastIndex = pos;
+ if (keywordAndTSRelationalOperator.test(this.input)) {
+ const endCh = this.codePointAtPos(keywordAndTSRelationalOperator.lastIndex);
+ if (!isIdentifierChar(endCh) && endCh !== 92) {
+ return false;
+ }
+ }
+ return true;
+ } else if (ch === 92) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine() {
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ return this.chStartsBindingIdentifierAndNotRelationalOperator(nextCh, next);
+ }
+ nextTokenIsIdentifierOrStringLiteralOnSameLine() {
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ return this.chStartsBindingIdentifier(nextCh, next) || nextCh === 34 || nextCh === 39;
+ }
+};
+function isPossiblyLiteralEnum(expression) {
+ if (expression.type !== "MemberExpression") return false;
+ const {
+ computed,
+ property
+ } = expression;
+ if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) {
+ return false;
+ }
+ return isUncomputedMemberExpressionChain(expression.object);
+}
+function isValidAmbientConstInitializer(expression, estree) {
+ var _expression$extra;
+ const {
+ type
+ } = expression;
+ if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) {
+ return false;
+ }
+ if (estree) {
+ if (type === "Literal") {
+ const {
+ value
+ } = expression;
+ if (typeof value === "string" || typeof value === "boolean") {
+ return true;
+ }
+ }
+ } else {
+ if (type === "StringLiteral" || type === "BooleanLiteral") {
+ return true;
+ }
+ }
+ if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {
+ return true;
+ }
+ if (type === "TemplateLiteral" && expression.expressions.length === 0) {
+ return true;
+ }
+ if (isPossiblyLiteralEnum(expression)) {
+ return true;
+ }
+ return false;
+}
+function isNumber(expression, estree) {
+ if (estree) {
+ return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression);
+ }
+ return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral";
+}
+function isNegativeNumber(expression, estree) {
+ if (expression.type === "UnaryExpression") {
+ const {
+ operator,
+ argument
+ } = expression;
+ if (operator === "-" && isNumber(argument, estree)) {
+ return true;
+ }
+ }
+ return false;
+}
+function isUncomputedMemberExpressionChain(expression) {
+ if (expression.type === "Identifier") return true;
+ if (expression.type !== "MemberExpression" || expression.computed) {
+ return false;
+ }
+ return isUncomputedMemberExpressionChain(expression.object);
+}
+const PlaceholderErrors = ParseErrorEnum`placeholders`({
+ ClassNameIsRequired: "A class name is required.",
+ UnexpectedSpace: "Unexpected space in placeholder."
+});
+var placeholders = superClass => class PlaceholdersParserMixin extends superClass {
+ parsePlaceholder(expectedNode) {
+ if (this.match(133)) {
+ const node = this.startNode();
+ this.next();
+ this.assertNoSpace();
+ node.name = super.parseIdentifier(true);
+ this.assertNoSpace();
+ this.expect(133);
+ return this.finishPlaceholder(node, expectedNode);
+ }
+ }
+ finishPlaceholder(node, expectedNode) {
+ let placeholder = node;
+ if (!placeholder.expectedNode || !placeholder.type) {
+ placeholder = this.finishNode(placeholder, "Placeholder");
+ }
+ placeholder.expectedNode = expectedNode;
+ return placeholder;
+ }
+ getTokenFromCode(code) {
+ if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {
+ this.finishOp(133, 2);
+ } else {
+ super.getTokenFromCode(code);
+ }
+ }
+ parseExprAtom(refExpressionErrors) {
+ return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors);
+ }
+ parseIdentifier(liberal) {
+ return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal);
+ }
+ checkReservedWord(word, startLoc, checkKeywords, isBinding) {
+ if (word !== undefined) {
+ super.checkReservedWord(word, startLoc, checkKeywords, isBinding);
+ }
+ }
+ cloneIdentifier(node) {
+ const cloned = super.cloneIdentifier(node);
+ if (cloned.type === "Placeholder") {
+ cloned.expectedNode = node.expectedNode;
+ }
+ return cloned;
+ }
+ cloneStringLiteral(node) {
+ if (node.type === "Placeholder") {
+ return this.cloneIdentifier(node);
+ }
+ return super.cloneStringLiteral(node);
+ }
+ parseBindingAtom() {
+ return this.parsePlaceholder("Pattern") || super.parseBindingAtom();
+ }
+ isValidLVal(type, disallowCallExpression, isParenthesized, binding) {
+ return type === "Placeholder" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding);
+ }
+ toAssignable(node, isLHS) {
+ if (node && node.type === "Placeholder" && node.expectedNode === "Expression") {
+ node.expectedNode = "Pattern";
+ } else {
+ super.toAssignable(node, isLHS);
+ }
+ }
+ chStartsBindingIdentifier(ch, pos) {
+ if (super.chStartsBindingIdentifier(ch, pos)) {
+ return true;
+ }
+ const next = this.nextTokenStart();
+ if (this.input.charCodeAt(next) === 37 && this.input.charCodeAt(next + 1) === 37) {
+ return true;
+ }
+ return false;
+ }
+ verifyBreakContinue(node, isBreak) {
+ var _node$label;
+ if (((_node$label = node.label) == null ? void 0 : _node$label.type) === "Placeholder") return;
+ super.verifyBreakContinue(node, isBreak);
+ }
+ parseExpressionStatement(node, expr) {
+ var _expr$extra;
+ if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {
+ return super.parseExpressionStatement(node, expr);
+ }
+ if (this.match(14)) {
+ const stmt = node;
+ stmt.label = this.finishPlaceholder(expr, "Identifier");
+ this.next();
+ stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration();
+ return this.finishNode(stmt, "LabeledStatement");
+ }
+ this.semicolon();
+ const stmtPlaceholder = node;
+ stmtPlaceholder.name = expr.name;
+ return this.finishPlaceholder(stmtPlaceholder, "Statement");
+ }
+ parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) {
+ return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse);
+ }
+ parseFunctionId(requireId) {
+ return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId);
+ }
+ parseClass(node, isStatement, optionalId) {
+ const type = isStatement ? "ClassDeclaration" : "ClassExpression";
+ this.next();
+ const oldStrict = this.state.strict;
+ const placeholder = this.parsePlaceholder("Identifier");
+ if (placeholder) {
+ if (this.match(81) || this.match(133) || this.match(5)) {
+ node.id = placeholder;
+ } else if (optionalId || !isStatement) {
+ node.id = null;
+ node.body = this.finishPlaceholder(placeholder, "ClassBody");
+ return this.finishNode(node, type);
+ } else {
+ throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc);
+ }
+ } else {
+ this.parseClassId(node, isStatement, optionalId);
+ }
+ super.parseClassSuper(node);
+ node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict);
+ return this.finishNode(node, type);
+ }
+ parseExport(node, decorators) {
+ const placeholder = this.parsePlaceholder("Identifier");
+ if (!placeholder) return super.parseExport(node, decorators);
+ const node2 = node;
+ if (!this.isContextual(98) && !this.match(12)) {
+ node2.specifiers = [];
+ node2.source = null;
+ node2.declaration = this.finishPlaceholder(placeholder, "Declaration");
+ return this.finishNode(node2, "ExportNamedDeclaration");
+ }
+ this.expectPlugin("exportDefaultFrom");
+ const specifier = this.startNode();
+ specifier.exported = placeholder;
+ node2.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
+ return super.parseExport(node2, decorators);
+ }
+ isExportDefaultSpecifier() {
+ if (this.match(65)) {
+ const next = this.nextTokenStart();
+ if (this.isUnparsedContextual(next, "from")) {
+ if (this.input.startsWith(tokenLabelName(133), this.nextTokenStartSince(next + 4))) {
+ return true;
+ }
+ }
+ }
+ return super.isExportDefaultSpecifier();
+ }
+ maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {
+ var _specifiers;
+ if ((_specifiers = node.specifiers) != null && _specifiers.length) {
+ return true;
+ }
+ return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier);
+ }
+ checkExport(node) {
+ const {
+ specifiers
+ } = node;
+ if (specifiers != null && specifiers.length) {
+ node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder");
+ }
+ super.checkExport(node);
+ node.specifiers = specifiers;
+ }
+ parseImport(node) {
+ const placeholder = this.parsePlaceholder("Identifier");
+ if (!placeholder) return super.parseImport(node);
+ node.specifiers = [];
+ if (!this.isContextual(98) && !this.match(12)) {
+ node.source = this.finishPlaceholder(placeholder, "StringLiteral");
+ this.semicolon();
+ return this.finishNode(node, "ImportDeclaration");
+ }
+ const specifier = this.startNodeAtNode(placeholder);
+ specifier.local = placeholder;
+ node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier"));
+ if (this.eat(12)) {
+ const hasStarImport = this.maybeParseStarImportSpecifier(node);
+ if (!hasStarImport) this.parseNamedImportSpecifiers(node);
+ }
+ this.expectContextual(98);
+ node.source = this.parseImportSource();
+ this.semicolon();
+ return this.finishNode(node, "ImportDeclaration");
+ }
+ parseImportSource() {
+ return this.parsePlaceholder("StringLiteral") || super.parseImportSource();
+ }
+ assertNoSpace() {
+ if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) {
+ this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc);
+ }
+ }
+};
+var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass {
+ parseV8Intrinsic() {
+ if (this.match(54)) {
+ const v8IntrinsicStartLoc = this.state.startLoc;
+ const node = this.startNode();
+ this.next();
+ if (tokenIsIdentifier(this.state.type)) {
+ const name = this.parseIdentifierName();
+ const identifier = this.createIdentifier(node, name);
+ this.castNodeTo(identifier, "V8IntrinsicIdentifier");
+ if (this.match(10)) {
+ return identifier;
+ }
+ }
+ this.unexpected(v8IntrinsicStartLoc);
+ }
+ }
+ parseExprAtom(refExpressionErrors) {
+ return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors);
+ }
+};
+const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"];
+const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"];
+function validatePlugins(pluginsMap) {
+ if (pluginsMap.has("decorators")) {
+ if (pluginsMap.has("decorators-legacy")) {
+ throw new Error("Cannot use the decorators and decorators-legacy plugin together");
+ }
+ const decoratorsBeforeExport = pluginsMap.get("decorators").decoratorsBeforeExport;
+ if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") {
+ throw new Error("'decoratorsBeforeExport' must be a boolean, if specified.");
+ }
+ const allowCallParenthesized = pluginsMap.get("decorators").allowCallParenthesized;
+ if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") {
+ throw new Error("'allowCallParenthesized' must be a boolean.");
+ }
+ }
+ if (pluginsMap.has("flow") && pluginsMap.has("typescript")) {
+ throw new Error("Cannot combine flow and typescript plugins.");
+ }
+ if (pluginsMap.has("placeholders") && pluginsMap.has("v8intrinsic")) {
+ throw new Error("Cannot combine placeholders and v8intrinsic plugins.");
+ }
+ if (pluginsMap.has("pipelineOperator")) {
+ var _pluginsMap$get2;
+ const proposal = pluginsMap.get("pipelineOperator").proposal;
+ if (!PIPELINE_PROPOSALS.includes(proposal)) {
+ const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", ");
+ throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`);
+ }
+ if (proposal === "hack") {
+ var _pluginsMap$get;
+ if (pluginsMap.has("placeholders")) {
+ throw new Error("Cannot combine placeholders plugin and Hack-style pipes.");
+ }
+ if (pluginsMap.has("v8intrinsic")) {
+ throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes.");
+ }
+ const topicToken = pluginsMap.get("pipelineOperator").topicToken;
+ if (!TOPIC_TOKENS.includes(topicToken)) {
+ const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", ");
+ throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`);
+ }
+ if (topicToken === "#" && ((_pluginsMap$get = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get.syntaxType) === "hash") {
+ throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "hack", topicToken: "#" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`);
+ }
+ } else if (proposal === "smart" && ((_pluginsMap$get2 = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get2.syntaxType) === "hash") {
+ throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "smart" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`);
+ }
+ }
+ if (pluginsMap.has("moduleAttributes")) {
+ if (pluginsMap.has("deprecatedImportAssert") || pluginsMap.has("importAssertions")) {
+ throw new Error("Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins.");
+ }
+ const moduleAttributesVersionPluginOption = pluginsMap.get("moduleAttributes").version;
+ if (moduleAttributesVersionPluginOption !== "may-2020") {
+ throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'.");
+ }
+ }
+ if (pluginsMap.has("importAssertions")) {
+ if (pluginsMap.has("deprecatedImportAssert")) {
+ throw new Error("Cannot combine importAssertions and deprecatedImportAssert plugins.");
+ }
+ }
+ if (pluginsMap.has("deprecatedImportAssert")) ;else if (pluginsMap.has("importAttributes") && pluginsMap.get("importAttributes").deprecatedAssertSyntax) {
+ pluginsMap.set("deprecatedImportAssert", {});
+ }
+ if (pluginsMap.has("recordAndTuple")) {
+ const syntaxType = pluginsMap.get("recordAndTuple").syntaxType;
+ if (syntaxType != null) {
+ const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"];
+ if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) {
+ throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", "));
+ }
+ }
+ }
+ if (pluginsMap.has("asyncDoExpressions") && !pluginsMap.has("doExpressions")) {
+ const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.");
+ error.missingPlugins = "doExpressions";
+ throw error;
+ }
+ if (pluginsMap.has("optionalChainingAssign") && pluginsMap.get("optionalChainingAssign").version !== "2023-07") {
+ throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'.");
+ }
+ if (pluginsMap.has("discardBinding") && pluginsMap.get("discardBinding").syntaxType !== "void") {
+ throw new Error("The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'.");
+ }
+}
+const mixinPlugins = {
+ estree,
+ jsx,
+ flow,
+ typescript,
+ v8intrinsic,
+ placeholders
+};
+const mixinPluginNames = Object.keys(mixinPlugins);
+class ExpressionParser extends LValParser {
+ checkProto(prop, isRecord, sawProto, refExpressionErrors) {
+ if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {
+ return sawProto;
+ }
+ const key = prop.key;
+ const name = key.type === "Identifier" ? key.name : key.value;
+ if (name === "__proto__") {
+ if (isRecord) {
+ this.raise(Errors.RecordNoProto, key);
+ return true;
+ }
+ if (sawProto) {
+ if (refExpressionErrors) {
+ if (refExpressionErrors.doubleProtoLoc === null) {
+ refExpressionErrors.doubleProtoLoc = key.loc.start;
+ }
+ } else {
+ this.raise(Errors.DuplicateProto, key);
+ }
+ }
+ return true;
+ }
+ return sawProto;
+ }
+ shouldExitDescending(expr, potentialArrowAt) {
+ return expr.type === "ArrowFunctionExpression" && this.offsetToSourcePos(expr.start) === potentialArrowAt;
+ }
+ getExpression() {
+ this.enterInitialScopes();
+ this.nextToken();
+ if (this.match(140)) {
+ throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc);
+ }
+ const expr = this.parseExpression();
+ if (!this.match(140)) {
+ throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, {
+ unexpected: this.input.codePointAt(this.state.start)
+ });
+ }
+ this.finalizeRemainingComments();
+ expr.comments = this.comments;
+ expr.errors = this.state.errors;
+ if (this.optionFlags & 256) {
+ expr.tokens = this.tokens;
+ }
+ return expr;
+ }
+ parseExpression(disallowIn, refExpressionErrors) {
+ if (disallowIn) {
+ return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors));
+ }
+ return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));
+ }
+ parseExpressionBase(refExpressionErrors) {
+ const startLoc = this.state.startLoc;
+ const expr = this.parseMaybeAssign(refExpressionErrors);
+ if (this.match(12)) {
+ const node = this.startNodeAt(startLoc);
+ node.expressions = [expr];
+ while (this.eat(12)) {
+ node.expressions.push(this.parseMaybeAssign(refExpressionErrors));
+ }
+ this.toReferencedList(node.expressions);
+ return this.finishNode(node, "SequenceExpression");
+ }
+ return expr;
+ }
+ parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {
+ return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));
+ }
+ parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {
+ return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));
+ }
+ setOptionalParametersError(refExpressionErrors) {
+ refExpressionErrors.optionalParametersLoc = this.state.startLoc;
+ }
+ parseMaybeAssign(refExpressionErrors, afterLeftParse) {
+ const startLoc = this.state.startLoc;
+ const isYield = this.isContextual(108);
+ if (isYield) {
+ if (this.prodParam.hasYield) {
+ this.next();
+ let left = this.parseYield(startLoc);
+ if (afterLeftParse) {
+ left = afterLeftParse.call(this, left, startLoc);
+ }
+ return left;
+ }
+ }
+ let ownExpressionErrors;
+ if (refExpressionErrors) {
+ ownExpressionErrors = false;
+ } else {
+ refExpressionErrors = new ExpressionErrors();
+ ownExpressionErrors = true;
+ }
+ const {
+ type
+ } = this.state;
+ if (type === 10 || tokenIsIdentifier(type)) {
+ this.state.potentialArrowAt = this.state.start;
+ }
+ let left = this.parseMaybeConditional(refExpressionErrors);
+ if (afterLeftParse) {
+ left = afterLeftParse.call(this, left, startLoc);
+ }
+ if (tokenIsAssignment(this.state.type)) {
+ const node = this.startNodeAt(startLoc);
+ const operator = this.state.value;
+ node.operator = operator;
+ if (this.match(29)) {
+ this.toAssignable(left, true);
+ node.left = left;
+ const startIndex = startLoc.index;
+ if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) {
+ refExpressionErrors.doubleProtoLoc = null;
+ }
+ if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) {
+ refExpressionErrors.shorthandAssignLoc = null;
+ }
+ if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) {
+ this.checkDestructuringPrivate(refExpressionErrors);
+ refExpressionErrors.privateKeyLoc = null;
+ }
+ if (refExpressionErrors.voidPatternLoc != null && refExpressionErrors.voidPatternLoc.index >= startIndex) {
+ refExpressionErrors.voidPatternLoc = null;
+ }
+ } else {
+ node.left = left;
+ }
+ this.next();
+ node.right = this.parseMaybeAssign();
+ this.checkLVal(left, this.finishNode(node, "AssignmentExpression"), undefined, undefined, undefined, undefined, operator === "||=" || operator === "&&=" || operator === "??=");
+ return node;
+ } else if (ownExpressionErrors) {
+ this.checkExpressionErrors(refExpressionErrors, true);
+ }
+ if (isYield) {
+ const {
+ type
+ } = this.state;
+ const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);
+ if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {
+ this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc);
+ return this.parseYield(startLoc);
+ }
+ }
+ return left;
+ }
+ parseMaybeConditional(refExpressionErrors) {
+ const startLoc = this.state.startLoc;
+ const potentialArrowAt = this.state.potentialArrowAt;
+ const expr = this.parseExprOps(refExpressionErrors);
+ if (this.shouldExitDescending(expr, potentialArrowAt)) {
+ return expr;
+ }
+ return this.parseConditional(expr, startLoc, refExpressionErrors);
+ }
+ parseConditional(expr, startLoc, refExpressionErrors) {
+ if (this.eat(17)) {
+ const node = this.startNodeAt(startLoc);
+ node.test = expr;
+ node.consequent = this.parseMaybeAssignAllowIn();
+ this.expect(14);
+ node.alternate = this.parseMaybeAssign();
+ return this.finishNode(node, "ConditionalExpression");
+ }
+ return expr;
+ }
+ parseMaybeUnaryOrPrivate(refExpressionErrors) {
+ return this.match(139) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);
+ }
+ parseExprOps(refExpressionErrors) {
+ const startLoc = this.state.startLoc;
+ const potentialArrowAt = this.state.potentialArrowAt;
+ const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);
+ if (this.shouldExitDescending(expr, potentialArrowAt)) {
+ return expr;
+ }
+ return this.parseExprOp(expr, startLoc, -1);
+ }
+ parseExprOp(left, leftStartLoc, minPrec) {
+ if (this.isPrivateName(left)) {
+ const value = this.getPrivateNameSV(left);
+ if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) {
+ this.raise(Errors.PrivateInExpectedIn, left, {
+ identifierName: value
+ });
+ }
+ this.classScope.usePrivateName(value, left.loc.start);
+ }
+ const op = this.state.type;
+ if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) {
+ let prec = tokenOperatorPrecedence(op);
+ if (prec > minPrec) {
+ if (op === 39) {
+ this.expectPlugin("pipelineOperator");
+ if (this.state.inFSharpPipelineDirectBody) {
+ return left;
+ }
+ this.checkPipelineAtInfixOperator(left, leftStartLoc);
+ }
+ const node = this.startNodeAt(leftStartLoc);
+ node.left = left;
+ node.operator = this.state.value;
+ const logical = op === 41 || op === 42;
+ const coalesce = op === 40;
+ if (coalesce) {
+ prec = tokenOperatorPrecedence(42);
+ }
+ this.next();
+ if (op === 39 && this.hasPlugin(["pipelineOperator", {
+ proposal: "minimal"
+ }])) {
+ if (this.state.type === 96 && this.prodParam.hasAwait) {
+ throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, this.state.startLoc);
+ }
+ }
+ node.right = this.parseExprOpRightExpr(op, prec);
+ const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression");
+ const nextOp = this.state.type;
+ if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) {
+ throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc);
+ }
+ return this.parseExprOp(finishedNode, leftStartLoc, minPrec);
+ }
+ }
+ return left;
+ }
+ parseExprOpRightExpr(op, prec) {
+ const startLoc = this.state.startLoc;
+ switch (op) {
+ case 39:
+ switch (this.getPluginOption("pipelineOperator", "proposal")) {
+ case "hack":
+ return this.withTopicBindingContext(() => {
+ return this.parseHackPipeBody();
+ });
+ case "fsharp":
+ return this.withSoloAwaitPermittingContext(() => {
+ return this.parseFSharpPipelineBody(prec);
+ });
+ }
+ if (this.getPluginOption("pipelineOperator", "proposal") === "smart") {
+ return this.withTopicBindingContext(() => {
+ if (this.prodParam.hasYield && this.isContextual(108)) {
+ throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc);
+ }
+ return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc);
+ });
+ }
+ default:
+ return this.parseExprOpBaseRightExpr(op, prec);
+ }
+ }
+ parseExprOpBaseRightExpr(op, prec) {
+ const startLoc = this.state.startLoc;
+ return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);
+ }
+ parseHackPipeBody() {
+ var _body$extra;
+ const {
+ startLoc
+ } = this.state;
+ const body = this.parseMaybeAssign();
+ const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type);
+ if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {
+ this.raise(Errors.PipeUnparenthesizedBody, startLoc, {
+ type: body.type
+ });
+ }
+ if (!this.topicReferenceWasUsedInCurrentContext()) {
+ this.raise(Errors.PipeTopicUnused, startLoc);
+ }
+ return body;
+ }
+ checkExponentialAfterUnary(node) {
+ if (this.match(57)) {
+ this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);
+ }
+ }
+ parseMaybeUnary(refExpressionErrors, sawUnary) {
+ const startLoc = this.state.startLoc;
+ const isAwait = this.isContextual(96);
+ if (isAwait && this.recordAwaitIfAllowed()) {
+ this.next();
+ const expr = this.parseAwait(startLoc);
+ if (!sawUnary) this.checkExponentialAfterUnary(expr);
+ return expr;
+ }
+ const update = this.match(34);
+ const node = this.startNode();
+ if (tokenIsPrefix(this.state.type)) {
+ node.operator = this.state.value;
+ node.prefix = true;
+ if (this.match(72)) {
+ this.expectPlugin("throwExpressions");
+ }
+ const isDelete = this.match(89);
+ this.next();
+ node.argument = this.parseMaybeUnary(null, true);
+ this.checkExpressionErrors(refExpressionErrors, true);
+ if (this.state.strict && isDelete) {
+ const arg = node.argument;
+ if (arg.type === "Identifier") {
+ this.raise(Errors.StrictDelete, node);
+ } else if (this.hasPropertyAsPrivateName(arg)) {
+ this.raise(Errors.DeletePrivateField, node);
+ }
+ }
+ if (!update) {
+ if (!sawUnary) {
+ this.checkExponentialAfterUnary(node);
+ }
+ return this.finishNode(node, "UnaryExpression");
+ }
+ }
+ const expr = this.parseUpdate(node, update, refExpressionErrors);
+ if (isAwait) {
+ const {
+ type
+ } = this.state;
+ const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);
+ if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {
+ this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);
+ return this.parseAwait(startLoc);
+ }
+ }
+ return expr;
+ }
+ parseUpdate(node, update, refExpressionErrors) {
+ if (update) {
+ const updateExpressionNode = node;
+ this.checkLVal(updateExpressionNode.argument, this.finishNode(updateExpressionNode, "UpdateExpression"));
+ return node;
+ }
+ const startLoc = this.state.startLoc;
+ let expr = this.parseExprSubscripts(refExpressionErrors);
+ if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;
+ while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {
+ const node = this.startNodeAt(startLoc);
+ node.operator = this.state.value;
+ node.prefix = false;
+ node.argument = expr;
+ this.next();
+ this.checkLVal(expr, expr = this.finishNode(node, "UpdateExpression"));
+ }
+ return expr;
+ }
+ parseExprSubscripts(refExpressionErrors) {
+ const startLoc = this.state.startLoc;
+ const potentialArrowAt = this.state.potentialArrowAt;
+ const expr = this.parseExprAtom(refExpressionErrors);
+ if (this.shouldExitDescending(expr, potentialArrowAt)) {
+ return expr;
+ }
+ return this.parseSubscripts(expr, startLoc);
+ }
+ parseSubscripts(base, startLoc, noCalls) {
+ const state = {
+ optionalChainMember: false,
+ maybeAsyncArrow: this.atPossibleAsyncArrow(base),
+ stop: false
+ };
+ do {
+ base = this.parseSubscript(base, startLoc, noCalls, state);
+ state.maybeAsyncArrow = false;
+ } while (!state.stop);
+ return base;
+ }
+ parseSubscript(base, startLoc, noCalls, state) {
+ const {
+ type
+ } = this.state;
+ if (!noCalls && type === 15) {
+ return this.parseBind(base, startLoc, noCalls, state);
+ } else if (tokenIsTemplate(type)) {
+ return this.parseTaggedTemplateExpression(base, startLoc, state);
+ }
+ let optional = false;
+ if (type === 18) {
+ if (noCalls) {
+ this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);
+ if (this.lookaheadCharCode() === 40) {
+ return this.stopParseSubscript(base, state);
+ }
+ }
+ state.optionalChainMember = optional = true;
+ this.next();
+ }
+ if (!noCalls && this.match(10)) {
+ return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional);
+ } else {
+ const computed = this.eat(0);
+ if (computed || optional || this.eat(16)) {
+ return this.parseMember(base, startLoc, state, computed, optional);
+ } else {
+ return this.stopParseSubscript(base, state);
+ }
+ }
+ }
+ stopParseSubscript(base, state) {
+ state.stop = true;
+ return base;
+ }
+ parseMember(base, startLoc, state, computed, optional) {
+ const node = this.startNodeAt(startLoc);
+ node.object = base;
+ node.computed = computed;
+ if (computed) {
+ node.property = this.parseExpression();
+ this.expect(3);
+ } else if (this.match(139)) {
+ if (base.type === "Super") {
+ this.raise(Errors.SuperPrivateField, startLoc);
+ }
+ this.classScope.usePrivateName(this.state.value, this.state.startLoc);
+ node.property = this.parsePrivateName();
+ } else {
+ node.property = this.parseIdentifier(true);
+ }
+ if (state.optionalChainMember) {
+ node.optional = optional;
+ return this.finishNode(node, "OptionalMemberExpression");
+ } else {
+ return this.finishNode(node, "MemberExpression");
+ }
+ }
+ parseBind(base, startLoc, noCalls, state) {
+ const node = this.startNodeAt(startLoc);
+ node.object = base;
+ this.next();
+ node.callee = this.parseNoCallExpr();
+ state.stop = true;
+ return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls);
+ }
+ parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) {
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ let refExpressionErrors = null;
+ this.state.maybeInArrowParameters = true;
+ this.next();
+ const node = this.startNodeAt(startLoc);
+ node.callee = base;
+ const {
+ maybeAsyncArrow,
+ optionalChainMember
+ } = state;
+ if (maybeAsyncArrow) {
+ this.expressionScope.enter(newAsyncArrowScope());
+ refExpressionErrors = new ExpressionErrors();
+ }
+ if (optionalChainMember) {
+ node.optional = optional;
+ }
+ if (optional) {
+ node.arguments = this.parseCallExpressionArguments();
+ } else {
+ node.arguments = this.parseCallExpressionArguments(base.type !== "Super", node, refExpressionErrors);
+ }
+ let finishedNode = this.finishCallExpression(node, optionalChainMember);
+ if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {
+ state.stop = true;
+ this.checkDestructuringPrivate(refExpressionErrors);
+ this.expressionScope.validateAsPattern();
+ this.expressionScope.exit();
+ finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode);
+ } else {
+ if (maybeAsyncArrow) {
+ this.checkExpressionErrors(refExpressionErrors, true);
+ this.expressionScope.exit();
+ }
+ this.toReferencedArguments(finishedNode);
+ }
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ return finishedNode;
+ }
+ toReferencedArguments(node, isParenthesizedExpr) {
+ this.toReferencedListDeep(node.arguments, isParenthesizedExpr);
+ }
+ parseTaggedTemplateExpression(base, startLoc, state) {
+ const node = this.startNodeAt(startLoc);
+ node.tag = base;
+ node.quasi = this.parseTemplate(true);
+ if (state.optionalChainMember) {
+ this.raise(Errors.OptionalChainingNoTemplate, startLoc);
+ }
+ return this.finishNode(node, "TaggedTemplateExpression");
+ }
+ atPossibleAsyncArrow(base) {
+ return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.offsetToSourcePos(base.start) === this.state.potentialArrowAt;
+ }
+ finishCallExpression(node, optional) {
+ if (node.callee.type === "Import") {
+ if (node.arguments.length === 0 || node.arguments.length > 2) {
+ this.raise(Errors.ImportCallArity, node);
+ } else {
+ for (const arg of node.arguments) {
+ if (arg.type === "SpreadElement") {
+ this.raise(Errors.ImportCallSpreadArgument, arg);
+ }
+ }
+ }
+ }
+ return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression");
+ }
+ parseCallExpressionArguments(allowPlaceholder, nodeForExtra, refExpressionErrors) {
+ const elts = [];
+ let first = true;
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = false;
+ while (!this.eat(11)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ if (this.match(11)) {
+ if (nodeForExtra) {
+ this.addTrailingCommaExtraToNode(nodeForExtra);
+ }
+ this.next();
+ break;
+ }
+ }
+ elts.push(this.parseExprListItem(11, false, refExpressionErrors, allowPlaceholder));
+ }
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ return elts;
+ }
+ shouldParseAsyncArrow() {
+ return this.match(19) && !this.canInsertSemicolon();
+ }
+ parseAsyncArrowFromCallExpression(node, call) {
+ var _call$extra;
+ this.resetPreviousNodeTrailingComments(call);
+ this.expect(19);
+ this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc);
+ if (call.innerComments) {
+ setInnerComments(node, call.innerComments);
+ }
+ if (call.callee.trailingComments) {
+ setInnerComments(node, call.callee.trailingComments);
+ }
+ return node;
+ }
+ parseNoCallExpr() {
+ const startLoc = this.state.startLoc;
+ return this.parseSubscripts(this.parseExprAtom(), startLoc, true);
+ }
+ parseExprAtom(refExpressionErrors) {
+ let node;
+ let decorators = null;
+ const {
+ type
+ } = this.state;
+ switch (type) {
+ case 79:
+ return this.parseSuper();
+ case 83:
+ node = this.startNode();
+ this.next();
+ if (this.match(16)) {
+ return this.parseImportMetaPropertyOrPhaseCall(node);
+ }
+ if (this.match(10)) {
+ if (this.optionFlags & 512) {
+ return this.parseImportCall(node);
+ } else {
+ return this.finishNode(node, "Import");
+ }
+ } else {
+ this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc);
+ return this.finishNode(node, "Import");
+ }
+ case 78:
+ node = this.startNode();
+ this.next();
+ return this.finishNode(node, "ThisExpression");
+ case 90:
+ {
+ return this.parseDo(this.startNode(), false);
+ }
+ case 56:
+ case 31:
+ {
+ this.readRegexp();
+ return this.parseRegExpLiteral(this.state.value);
+ }
+ case 135:
+ return this.parseNumericLiteral(this.state.value);
+ case 136:
+ return this.parseBigIntLiteral(this.state.value);
+ case 134:
+ return this.parseStringLiteral(this.state.value);
+ case 84:
+ return this.parseNullLiteral();
+ case 85:
+ return this.parseBooleanLiteral(true);
+ case 86:
+ return this.parseBooleanLiteral(false);
+ case 10:
+ {
+ const canBeArrow = this.state.potentialArrowAt === this.state.start;
+ return this.parseParenAndDistinguishExpression(canBeArrow);
+ }
+ case 0:
+ {
+ return this.parseArrayLike(3, false, refExpressionErrors);
+ }
+ case 5:
+ {
+ return this.parseObjectLike(8, false, false, refExpressionErrors);
+ }
+ case 68:
+ return this.parseFunctionOrFunctionSent();
+ case 26:
+ decorators = this.parseDecorators();
+ case 80:
+ return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false);
+ case 77:
+ return this.parseNewOrNewTarget();
+ case 25:
+ case 24:
+ return this.parseTemplate(false);
+ case 15:
+ {
+ node = this.startNode();
+ this.next();
+ node.object = null;
+ const callee = node.callee = this.parseNoCallExpr();
+ if (callee.type === "MemberExpression") {
+ return this.finishNode(node, "BindExpression");
+ } else {
+ throw this.raise(Errors.UnsupportedBind, callee);
+ }
+ }
+ case 139:
+ {
+ this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {
+ identifierName: this.state.value
+ });
+ return this.parsePrivateName();
+ }
+ case 33:
+ {
+ return this.parseTopicReferenceThenEqualsSign(54, "%");
+ }
+ case 32:
+ {
+ return this.parseTopicReferenceThenEqualsSign(44, "^");
+ }
+ case 37:
+ case 38:
+ {
+ return this.parseTopicReference("hack");
+ }
+ case 44:
+ case 54:
+ case 27:
+ {
+ const pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
+ if (pipeProposal) {
+ return this.parseTopicReference(pipeProposal);
+ }
+ throw this.unexpected();
+ }
+ case 47:
+ {
+ const lookaheadCh = this.input.codePointAt(this.nextTokenStart());
+ if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {
+ throw this.expectOnePlugin(["jsx", "flow", "typescript"]);
+ }
+ throw this.unexpected();
+ }
+ default:
+ if (type === 137) {
+ return this.parseDecimalLiteral(this.state.value);
+ } else if (type === 2 || type === 1) {
+ return this.parseArrayLike(this.state.type === 2 ? 4 : 3, true);
+ } else if (type === 6 || type === 7) {
+ return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);
+ }
+ if (tokenIsIdentifier(type)) {
+ if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) {
+ return this.parseModuleExpression();
+ }
+ const canBeArrow = this.state.potentialArrowAt === this.state.start;
+ const containsEsc = this.state.containsEsc;
+ const id = this.parseIdentifier();
+ if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) {
+ const {
+ type
+ } = this.state;
+ if (type === 68) {
+ this.resetPreviousNodeTrailingComments(id);
+ this.next();
+ return this.parseAsyncFunctionExpression(this.startNodeAtNode(id));
+ } else if (tokenIsIdentifier(type)) {
+ if (this.lookaheadCharCode() === 61) {
+ return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));
+ } else {
+ return id;
+ }
+ } else if (type === 90) {
+ this.resetPreviousNodeTrailingComments(id);
+ return this.parseDo(this.startNodeAtNode(id), true);
+ }
+ }
+ if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) {
+ this.next();
+ return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);
+ }
+ return id;
+ } else {
+ throw this.unexpected();
+ }
+ }
+ }
+ parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {
+ const pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
+ if (pipeProposal) {
+ this.state.type = topicTokenType;
+ this.state.value = topicTokenValue;
+ this.state.pos--;
+ this.state.end--;
+ this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);
+ return this.parseTopicReference(pipeProposal);
+ }
+ throw this.unexpected();
+ }
+ parseTopicReference(pipeProposal) {
+ const node = this.startNode();
+ const startLoc = this.state.startLoc;
+ const tokenType = this.state.type;
+ this.next();
+ return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);
+ }
+ finishTopicReference(node, startLoc, pipeProposal, tokenType) {
+ if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) {
+ if (pipeProposal === "hack") {
+ if (!this.topicReferenceIsAllowedInCurrentContext()) {
+ this.raise(Errors.PipeTopicUnbound, startLoc);
+ }
+ this.registerTopicReference();
+ return this.finishNode(node, "TopicReference");
+ } else {
+ if (!this.topicReferenceIsAllowedInCurrentContext()) {
+ this.raise(Errors.PrimaryTopicNotAllowed, startLoc);
+ }
+ this.registerTopicReference();
+ return this.finishNode(node, "PipelinePrimaryTopicReference");
+ }
+ } else {
+ throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {
+ token: tokenLabelName(tokenType)
+ });
+ }
+ }
+ testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) {
+ switch (pipeProposal) {
+ case "hack":
+ {
+ return this.hasPlugin(["pipelineOperator", {
+ topicToken: tokenLabelName(tokenType)
+ }]);
+ }
+ case "smart":
+ return tokenType === 27;
+ default:
+ throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);
+ }
+ }
+ parseAsyncArrowUnaryFunction(node) {
+ this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));
+ const params = [this.parseIdentifier()];
+ this.prodParam.exit();
+ if (this.hasPrecedingLineBreak()) {
+ this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());
+ }
+ this.expect(19);
+ return this.parseArrowExpression(node, params, true);
+ }
+ parseDo(node, isAsync) {
+ this.expectPlugin("doExpressions");
+ if (isAsync) {
+ this.expectPlugin("asyncDoExpressions");
+ }
+ node.async = isAsync;
+ this.next();
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ if (isAsync) {
+ this.prodParam.enter(2);
+ node.body = this.parseBlock();
+ this.prodParam.exit();
+ } else {
+ node.body = this.parseBlock();
+ }
+ this.state.labels = oldLabels;
+ return this.finishNode(node, "DoExpression");
+ }
+ parseSuper() {
+ const node = this.startNode();
+ this.next();
+ if (this.match(10) && !this.scope.allowDirectSuper) {
+ if (!(this.optionFlags & 16)) {
+ this.raise(Errors.SuperNotAllowed, node);
+ }
+ } else if (!this.scope.allowSuper) {
+ if (!(this.optionFlags & 16)) {
+ this.raise(Errors.UnexpectedSuper, node);
+ }
+ }
+ if (!this.match(10) && !this.match(0) && !this.match(16)) {
+ this.raise(Errors.UnsupportedSuper, node);
+ }
+ return this.finishNode(node, "Super");
+ }
+ parsePrivateName() {
+ const node = this.startNode();
+ const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1));
+ const name = this.state.value;
+ this.next();
+ node.id = this.createIdentifier(id, name);
+ return this.finishNode(node, "PrivateName");
+ }
+ parseFunctionOrFunctionSent() {
+ const node = this.startNode();
+ this.next();
+ if (this.prodParam.hasYield && this.match(16)) {
+ const meta = this.createIdentifier(this.startNodeAtNode(node), "function");
+ this.next();
+ if (this.match(103)) {
+ this.expectPlugin("functionSent");
+ } else if (!this.hasPlugin("functionSent")) {
+ this.unexpected();
+ }
+ return this.parseMetaProperty(node, meta, "sent");
+ }
+ return this.parseFunction(node);
+ }
+ parseMetaProperty(node, meta, propertyName) {
+ node.meta = meta;
+ const containsEsc = this.state.containsEsc;
+ node.property = this.parseIdentifier(true);
+ if (node.property.name !== propertyName || containsEsc) {
+ this.raise(Errors.UnsupportedMetaProperty, node.property, {
+ target: meta.name,
+ onlyValidPropertyName: propertyName
+ });
+ }
+ return this.finishNode(node, "MetaProperty");
+ }
+ parseImportMetaPropertyOrPhaseCall(node) {
+ this.next();
+ if (this.isContextual(105) || this.isContextual(97)) {
+ const isSource = this.isContextual(105);
+ this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation");
+ this.next();
+ node.phase = isSource ? "source" : "defer";
+ return this.parseImportCall(node);
+ } else {
+ const id = this.createIdentifierAt(this.startNodeAtNode(node), "import", this.state.lastTokStartLoc);
+ if (this.isContextual(101)) {
+ if (!this.inModule) {
+ this.raise(Errors.ImportMetaOutsideModule, id);
+ }
+ this.sawUnambiguousESM = true;
+ }
+ return this.parseMetaProperty(node, id, "meta");
+ }
+ }
+ parseLiteralAtNode(value, type, node) {
+ this.addExtra(node, "rawValue", value);
+ this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end));
+ node.value = value;
+ this.next();
+ return this.finishNode(node, type);
+ }
+ parseLiteral(value, type) {
+ const node = this.startNode();
+ return this.parseLiteralAtNode(value, type, node);
+ }
+ parseStringLiteral(value) {
+ return this.parseLiteral(value, "StringLiteral");
+ }
+ parseNumericLiteral(value) {
+ return this.parseLiteral(value, "NumericLiteral");
+ }
+ parseBigIntLiteral(value) {
+ return this.parseLiteral(value, "BigIntLiteral");
+ }
+ parseDecimalLiteral(value) {
+ return this.parseLiteral(value, "DecimalLiteral");
+ }
+ parseRegExpLiteral(value) {
+ const node = this.startNode();
+ this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end));
+ node.pattern = value.pattern;
+ node.flags = value.flags;
+ this.next();
+ return this.finishNode(node, "RegExpLiteral");
+ }
+ parseBooleanLiteral(value) {
+ const node = this.startNode();
+ node.value = value;
+ this.next();
+ return this.finishNode(node, "BooleanLiteral");
+ }
+ parseNullLiteral() {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, "NullLiteral");
+ }
+ parseParenAndDistinguishExpression(canBeArrow) {
+ const startLoc = this.state.startLoc;
+ let val;
+ this.next();
+ this.expressionScope.enter(newArrowHeadScope());
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.maybeInArrowParameters = true;
+ this.state.inFSharpPipelineDirectBody = false;
+ const innerStartLoc = this.state.startLoc;
+ const exprList = [];
+ const refExpressionErrors = new ExpressionErrors();
+ let first = true;
+ let spreadStartLoc;
+ let optionalCommaStartLoc;
+ while (!this.match(11)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc);
+ if (this.match(11)) {
+ optionalCommaStartLoc = this.state.startLoc;
+ break;
+ }
+ }
+ if (this.match(21)) {
+ const spreadNodeStartLoc = this.state.startLoc;
+ spreadStartLoc = this.state.startLoc;
+ exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc));
+ if (!this.checkCommaAfterRest(41)) {
+ break;
+ }
+ } else {
+ exprList.push(this.parseMaybeAssignAllowInOrVoidPattern(11, refExpressionErrors, this.parseParenItem));
+ }
+ }
+ const innerEndLoc = this.state.lastTokEndLoc;
+ this.expect(11);
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ let arrowNode = this.startNodeAt(startLoc);
+ if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {
+ this.checkDestructuringPrivate(refExpressionErrors);
+ this.expressionScope.validateAsPattern();
+ this.expressionScope.exit();
+ this.parseArrowExpression(arrowNode, exprList, false);
+ return arrowNode;
+ }
+ this.expressionScope.exit();
+ if (!exprList.length) {
+ this.unexpected(this.state.lastTokStartLoc);
+ }
+ if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);
+ if (spreadStartLoc) this.unexpected(spreadStartLoc);
+ this.checkExpressionErrors(refExpressionErrors, true);
+ this.toReferencedListDeep(exprList, true);
+ if (exprList.length > 1) {
+ val = this.startNodeAt(innerStartLoc);
+ val.expressions = exprList;
+ this.finishNode(val, "SequenceExpression");
+ this.resetEndLocation(val, innerEndLoc);
+ } else {
+ val = exprList[0];
+ }
+ return this.wrapParenthesis(startLoc, val);
+ }
+ wrapParenthesis(startLoc, expression) {
+ if (!(this.optionFlags & 1024)) {
+ this.addExtra(expression, "parenthesized", true);
+ this.addExtra(expression, "parenStart", startLoc.index);
+ this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index);
+ return expression;
+ }
+ const parenExpression = this.startNodeAt(startLoc);
+ parenExpression.expression = expression;
+ return this.finishNode(parenExpression, "ParenthesizedExpression");
+ }
+ shouldParseArrow(params) {
+ return !this.canInsertSemicolon();
+ }
+ parseArrow(node) {
+ if (this.eat(19)) {
+ return node;
+ }
+ }
+ parseParenItem(node, startLoc) {
+ return node;
+ }
+ parseNewOrNewTarget() {
+ const node = this.startNode();
+ this.next();
+ if (this.match(16)) {
+ const meta = this.createIdentifier(this.startNodeAtNode(node), "new");
+ this.next();
+ const metaProp = this.parseMetaProperty(node, meta, "target");
+ if (!this.scope.allowNewTarget) {
+ this.raise(Errors.UnexpectedNewTarget, metaProp);
+ }
+ return metaProp;
+ }
+ return this.parseNew(node);
+ }
+ parseNew(node) {
+ this.parseNewCallee(node);
+ if (this.eat(10)) {
+ const args = this.parseExprList(11);
+ this.toReferencedList(args);
+ node.arguments = args;
+ } else {
+ node.arguments = [];
+ }
+ return this.finishNode(node, "NewExpression");
+ }
+ parseNewCallee(node) {
+ const isImport = this.match(83);
+ const callee = this.parseNoCallExpr();
+ node.callee = callee;
+ if (isImport && (callee.type === "Import" || callee.type === "ImportExpression")) {
+ this.raise(Errors.ImportCallNotNewExpression, callee);
+ }
+ }
+ parseTemplateElement(isTagged) {
+ const {
+ start,
+ startLoc,
+ end,
+ value
+ } = this.state;
+ const elemStart = start + 1;
+ const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1));
+ if (value === null) {
+ if (!isTagged) {
+ this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1));
+ }
+ }
+ const isTail = this.match(24);
+ const endOffset = isTail ? -1 : -2;
+ const elemEnd = end + endOffset;
+ elem.value = {
+ raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"),
+ cooked: value === null ? null : value.slice(1, endOffset)
+ };
+ elem.tail = isTail;
+ this.next();
+ const finishedNode = this.finishNode(elem, "TemplateElement");
+ this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset));
+ return finishedNode;
+ }
+ parseTemplate(isTagged) {
+ const node = this.startNode();
+ let curElt = this.parseTemplateElement(isTagged);
+ const quasis = [curElt];
+ const substitutions = [];
+ while (!curElt.tail) {
+ substitutions.push(this.parseTemplateSubstitution());
+ this.readTemplateContinuation();
+ quasis.push(curElt = this.parseTemplateElement(isTagged));
+ }
+ node.expressions = substitutions;
+ node.quasis = quasis;
+ return this.finishNode(node, "TemplateLiteral");
+ }
+ parseTemplateSubstitution() {
+ return this.parseExpression();
+ }
+ parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {
+ if (isRecord) {
+ this.expectPlugin("recordAndTuple");
+ }
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = false;
+ let sawProto = false;
+ let first = true;
+ const node = this.startNode();
+ node.properties = [];
+ this.next();
+ while (!this.match(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ if (this.match(close)) {
+ this.addTrailingCommaExtraToNode(node);
+ break;
+ }
+ }
+ let prop;
+ if (isPattern) {
+ prop = this.parseBindingProperty();
+ } else {
+ prop = this.parsePropertyDefinition(refExpressionErrors);
+ sawProto = this.checkProto(prop, isRecord, sawProto, refExpressionErrors);
+ }
+ if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") {
+ this.raise(Errors.InvalidRecordProperty, prop);
+ }
+ if (prop.shorthand) {
+ this.addExtra(prop, "shorthand", true);
+ }
+ node.properties.push(prop);
+ }
+ this.next();
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ let type = "ObjectExpression";
+ if (isPattern) {
+ type = "ObjectPattern";
+ } else if (isRecord) {
+ type = "RecordExpression";
+ }
+ return this.finishNode(node, type);
+ }
+ addTrailingCommaExtraToNode(node) {
+ this.addExtra(node, "trailingComma", this.state.lastTokStartLoc.index);
+ this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false);
+ }
+ maybeAsyncOrAccessorProp(prop) {
+ return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55));
+ }
+ parsePropertyDefinition(refExpressionErrors) {
+ let decorators = [];
+ if (this.match(26)) {
+ if (this.hasPlugin("decorators")) {
+ this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);
+ }
+ while (this.match(26)) {
+ decorators.push(this.parseDecorator());
+ }
+ }
+ const prop = this.startNode();
+ let isAsync = false;
+ let isAccessor = false;
+ let startLoc;
+ if (this.match(21)) {
+ if (decorators.length) this.unexpected();
+ return this.parseSpread();
+ }
+ if (decorators.length) {
+ prop.decorators = decorators;
+ decorators = [];
+ }
+ prop.method = false;
+ if (refExpressionErrors) {
+ startLoc = this.state.startLoc;
+ }
+ let isGenerator = this.eat(55);
+ this.parsePropertyNamePrefixOperator(prop);
+ const containsEsc = this.state.containsEsc;
+ this.parsePropertyName(prop, refExpressionErrors);
+ if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {
+ const {
+ key
+ } = prop;
+ const keyName = key.name;
+ if (keyName === "async" && !this.hasPrecedingLineBreak()) {
+ isAsync = true;
+ this.resetPreviousNodeTrailingComments(key);
+ isGenerator = this.eat(55);
+ this.parsePropertyName(prop);
+ }
+ if (keyName === "get" || keyName === "set") {
+ isAccessor = true;
+ this.resetPreviousNodeTrailingComments(key);
+ prop.kind = keyName;
+ if (this.match(55)) {
+ isGenerator = true;
+ this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {
+ kind: keyName
+ });
+ this.next();
+ }
+ this.parsePropertyName(prop);
+ }
+ }
+ return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);
+ }
+ getGetterSetterExpectedParamCount(method) {
+ return method.kind === "get" ? 0 : 1;
+ }
+ getObjectOrClassMethodParams(method) {
+ return method.params;
+ }
+ checkGetterSetterParams(method) {
+ var _params;
+ const paramCount = this.getGetterSetterExpectedParamCount(method);
+ const params = this.getObjectOrClassMethodParams(method);
+ if (params.length !== paramCount) {
+ this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, method);
+ }
+ if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") {
+ this.raise(Errors.BadSetterRestParameter, method);
+ }
+ }
+ parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
+ if (isAccessor) {
+ const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod");
+ this.checkGetterSetterParams(finishedProp);
+ return finishedProp;
+ }
+ if (isAsync || isGenerator || this.match(10)) {
+ if (isPattern) this.unexpected();
+ prop.kind = "method";
+ prop.method = true;
+ return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod");
+ }
+ }
+ parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
+ prop.shorthand = false;
+ if (this.eat(14)) {
+ prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowInOrVoidPattern(8, refExpressionErrors);
+ return this.finishObjectProperty(prop);
+ }
+ if (!prop.computed && prop.key.type === "Identifier") {
+ this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);
+ if (isPattern) {
+ prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key));
+ } else if (this.match(29)) {
+ const shorthandAssignLoc = this.state.startLoc;
+ if (refExpressionErrors != null) {
+ if (refExpressionErrors.shorthandAssignLoc === null) {
+ refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;
+ }
+ } else {
+ this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);
+ }
+ prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key));
+ } else {
+ prop.value = this.cloneIdentifier(prop.key);
+ }
+ prop.shorthand = true;
+ return this.finishObjectProperty(prop);
+ }
+ }
+ finishObjectProperty(node) {
+ return this.finishNode(node, "ObjectProperty");
+ }
+ parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
+ const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);
+ if (!node) this.unexpected();
+ return node;
+ }
+ parsePropertyName(prop, refExpressionErrors) {
+ if (this.eat(0)) {
+ prop.computed = true;
+ prop.key = this.parseMaybeAssignAllowIn();
+ this.expect(3);
+ } else {
+ const {
+ type,
+ value
+ } = this.state;
+ let key;
+ if (tokenIsKeywordOrIdentifier(type)) {
+ key = this.parseIdentifier(true);
+ } else {
+ switch (type) {
+ case 135:
+ key = this.parseNumericLiteral(value);
+ break;
+ case 134:
+ key = this.parseStringLiteral(value);
+ break;
+ case 136:
+ key = this.parseBigIntLiteral(value);
+ break;
+ case 139:
+ {
+ const privateKeyLoc = this.state.startLoc;
+ if (refExpressionErrors != null) {
+ if (refExpressionErrors.privateKeyLoc === null) {
+ refExpressionErrors.privateKeyLoc = privateKeyLoc;
+ }
+ } else {
+ this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);
+ }
+ key = this.parsePrivateName();
+ break;
+ }
+ default:
+ if (type === 137) {
+ key = this.parseDecimalLiteral(value);
+ break;
+ }
+ this.unexpected();
+ }
+ }
+ prop.key = key;
+ if (type !== 139) {
+ prop.computed = false;
+ }
+ }
+ }
+ initFunction(node, isAsync) {
+ node.id = null;
+ node.generator = false;
+ node.async = isAsync;
+ }
+ parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
+ this.initFunction(node, isAsync);
+ node.generator = isGenerator;
+ this.scope.enter(514 | 16 | (inClassScope ? 576 : 0) | (allowDirectSuper ? 32 : 0));
+ this.prodParam.enter(functionFlags(isAsync, node.generator));
+ this.parseFunctionParams(node, isConstructor);
+ const finishedNode = this.parseFunctionBodyAndFinish(node, type, true);
+ this.prodParam.exit();
+ this.scope.exit();
+ return finishedNode;
+ }
+ parseArrayLike(close, isTuple, refExpressionErrors) {
+ if (isTuple) {
+ this.expectPlugin("recordAndTuple");
+ }
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = false;
+ const node = this.startNode();
+ this.next();
+ node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression");
+ }
+ parseArrowExpression(node, params, isAsync, trailingCommaLoc) {
+ this.scope.enter(514 | 4);
+ let flags = functionFlags(isAsync, false);
+ if (!this.match(5) && this.prodParam.hasIn) {
+ flags |= 8;
+ }
+ this.prodParam.enter(flags);
+ this.initFunction(node, isAsync);
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ if (params) {
+ this.state.maybeInArrowParameters = true;
+ this.setArrowFunctionParameters(node, params, trailingCommaLoc);
+ }
+ this.state.maybeInArrowParameters = false;
+ this.parseFunctionBody(node, true);
+ this.prodParam.exit();
+ this.scope.exit();
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ return this.finishNode(node, "ArrowFunctionExpression");
+ }
+ setArrowFunctionParameters(node, params, trailingCommaLoc) {
+ this.toAssignableList(params, trailingCommaLoc, false);
+ node.params = params;
+ }
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
+ this.parseFunctionBody(node, false, isMethod);
+ return this.finishNode(node, type);
+ }
+ parseFunctionBody(node, allowExpression, isMethod = false) {
+ const isExpression = allowExpression && !this.match(5);
+ this.expressionScope.enter(newExpressionScope());
+ if (isExpression) {
+ node.body = this.parseMaybeAssign();
+ this.checkParams(node, false, allowExpression, false);
+ } else {
+ const oldStrict = this.state.strict;
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ this.prodParam.enter(this.prodParam.currentFlags() | 4);
+ node.body = this.parseBlock(true, false, hasStrictModeDirective => {
+ const nonSimple = !this.isSimpleParamList(node.params);
+ if (hasStrictModeDirective && nonSimple) {
+ this.raise(Errors.IllegalLanguageModeDirective, (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node);
+ }
+ const strictModeChanged = !oldStrict && this.state.strict;
+ this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);
+ if (this.state.strict && node.id) {
+ this.checkIdentifier(node.id, 65, strictModeChanged);
+ }
+ });
+ this.prodParam.exit();
+ this.state.labels = oldLabels;
+ }
+ this.expressionScope.exit();
+ }
+ isSimpleParameter(node) {
+ return node.type === "Identifier";
+ }
+ isSimpleParamList(params) {
+ for (let i = 0, len = params.length; i < len; i++) {
+ if (!this.isSimpleParameter(params[i])) return false;
+ }
+ return true;
+ }
+ checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {
+ const checkClashes = !allowDuplicates && new Set();
+ const formalParameters = {
+ type: "FormalParameters"
+ };
+ for (const param of node.params) {
+ this.checkLVal(param, formalParameters, 5, checkClashes, strictModeChanged);
+ }
+ }
+ parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {
+ const elts = [];
+ let first = true;
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ if (this.match(close)) {
+ if (nodeForExtra) {
+ this.addTrailingCommaExtraToNode(nodeForExtra);
+ }
+ this.next();
+ break;
+ }
+ }
+ elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors));
+ }
+ return elts;
+ }
+ parseExprListItem(close, allowEmpty, refExpressionErrors, allowPlaceholder) {
+ let elt;
+ if (this.match(12)) {
+ if (!allowEmpty) {
+ this.raise(Errors.UnexpectedToken, this.state.curPosition(), {
+ unexpected: ","
+ });
+ }
+ elt = null;
+ } else if (this.match(21)) {
+ const spreadNodeStartLoc = this.state.startLoc;
+ elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc);
+ } else if (this.match(17)) {
+ this.expectPlugin("partialApplication");
+ if (!allowPlaceholder) {
+ this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);
+ }
+ const node = this.startNode();
+ this.next();
+ elt = this.finishNode(node, "ArgumentPlaceholder");
+ } else {
+ elt = this.parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, this.parseParenItem);
+ }
+ return elt;
+ }
+ parseIdentifier(liberal) {
+ const node = this.startNode();
+ const name = this.parseIdentifierName(liberal);
+ return this.createIdentifier(node, name);
+ }
+ createIdentifier(node, name) {
+ node.name = name;
+ node.loc.identifierName = name;
+ return this.finishNode(node, "Identifier");
+ }
+ createIdentifierAt(node, name, endLoc) {
+ node.name = name;
+ node.loc.identifierName = name;
+ return this.finishNodeAt(node, "Identifier", endLoc);
+ }
+ parseIdentifierName(liberal) {
+ let name;
+ const {
+ startLoc,
+ type
+ } = this.state;
+ if (tokenIsKeywordOrIdentifier(type)) {
+ name = this.state.value;
+ } else {
+ this.unexpected();
+ }
+ const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);
+ if (liberal) {
+ if (tokenIsKeyword) {
+ this.replaceToken(132);
+ }
+ } else {
+ this.checkReservedWord(name, startLoc, tokenIsKeyword, false);
+ }
+ this.next();
+ return name;
+ }
+ checkReservedWord(word, startLoc, checkKeywords, isBinding) {
+ if (word.length > 10) {
+ return;
+ }
+ if (!canBeReservedWord(word)) {
+ return;
+ }
+ if (checkKeywords && isKeyword(word)) {
+ this.raise(Errors.UnexpectedKeyword, startLoc, {
+ keyword: word
+ });
+ return;
+ }
+ const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;
+ if (reservedTest(word, this.inModule)) {
+ this.raise(Errors.UnexpectedReservedWord, startLoc, {
+ reservedWord: word
+ });
+ return;
+ } else if (word === "yield") {
+ if (this.prodParam.hasYield) {
+ this.raise(Errors.YieldBindingIdentifier, startLoc);
+ return;
+ }
+ } else if (word === "await") {
+ if (this.prodParam.hasAwait) {
+ this.raise(Errors.AwaitBindingIdentifier, startLoc);
+ return;
+ }
+ if (this.scope.inStaticBlock) {
+ this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);
+ return;
+ }
+ this.expressionScope.recordAsyncArrowParametersError(startLoc);
+ } else if (word === "arguments") {
+ if (this.scope.inClassAndNotInNonArrowFunction) {
+ this.raise(Errors.ArgumentsInClass, startLoc);
+ return;
+ }
+ }
+ }
+ recordAwaitIfAllowed() {
+ const isAwaitAllowed = this.prodParam.hasAwait;
+ if (isAwaitAllowed && !this.scope.inFunction) {
+ this.state.hasTopLevelAwait = true;
+ }
+ return isAwaitAllowed;
+ }
+ parseAwait(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, node);
+ if (this.eat(55)) {
+ this.raise(Errors.ObsoleteAwaitStar, node);
+ }
+ if (!this.scope.inFunction && !(this.optionFlags & 1)) {
+ if (this.isAmbiguousPrefixOrIdentifier()) {
+ this.ambiguousScriptDifferentAst = true;
+ } else {
+ this.sawUnambiguousESM = true;
+ }
+ }
+ if (!this.state.soloAwait) {
+ node.argument = this.parseMaybeUnary(null, true);
+ }
+ return this.finishNode(node, "AwaitExpression");
+ }
+ isAmbiguousPrefixOrIdentifier() {
+ if (this.hasPrecedingLineBreak()) return true;
+ const {
+ type
+ } = this.state;
+ return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 138 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54;
+ }
+ parseYield(startLoc) {
+ const node = this.startNodeAt(startLoc);
+ this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, node);
+ let delegating = false;
+ let argument = null;
+ if (!this.hasPrecedingLineBreak()) {
+ delegating = this.eat(55);
+ switch (this.state.type) {
+ case 13:
+ case 140:
+ case 8:
+ case 11:
+ case 3:
+ case 9:
+ case 14:
+ case 12:
+ if (!delegating) break;
+ default:
+ argument = this.parseMaybeAssign();
+ }
+ }
+ node.delegate = delegating;
+ node.argument = argument;
+ return this.finishNode(node, "YieldExpression");
+ }
+ parseImportCall(node) {
+ this.next();
+ node.source = this.parseMaybeAssignAllowIn();
+ node.options = null;
+ if (this.eat(12)) {
+ if (!this.match(11)) {
+ node.options = this.parseMaybeAssignAllowIn();
+ if (this.eat(12)) {
+ this.addTrailingCommaExtraToNode(node.options);
+ if (!this.match(11)) {
+ do {
+ this.parseMaybeAssignAllowIn();
+ } while (this.eat(12) && !this.match(11));
+ this.raise(Errors.ImportCallArity, node);
+ }
+ }
+ } else {
+ this.addTrailingCommaExtraToNode(node.source);
+ }
+ }
+ this.expect(11);
+ return this.finishNode(node, "ImportExpression");
+ }
+ checkPipelineAtInfixOperator(left, leftStartLoc) {
+ if (this.hasPlugin(["pipelineOperator", {
+ proposal: "smart"
+ }])) {
+ if (left.type === "SequenceExpression") {
+ this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc);
+ }
+ }
+ }
+ parseSmartPipelineBodyInStyle(childExpr, startLoc) {
+ if (this.isSimpleReference(childExpr)) {
+ const bodyNode = this.startNodeAt(startLoc);
+ bodyNode.callee = childExpr;
+ return this.finishNode(bodyNode, "PipelineBareFunction");
+ } else {
+ const bodyNode = this.startNodeAt(startLoc);
+ this.checkSmartPipeTopicBodyEarlyErrors(startLoc);
+ bodyNode.expression = childExpr;
+ return this.finishNode(bodyNode, "PipelineTopicExpression");
+ }
+ }
+ isSimpleReference(expression) {
+ switch (expression.type) {
+ case "MemberExpression":
+ return !expression.computed && this.isSimpleReference(expression.object);
+ case "Identifier":
+ return true;
+ default:
+ return false;
+ }
+ }
+ checkSmartPipeTopicBodyEarlyErrors(startLoc) {
+ if (this.match(19)) {
+ throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc);
+ }
+ if (!this.topicReferenceWasUsedInCurrentContext()) {
+ this.raise(Errors.PipelineTopicUnused, startLoc);
+ }
+ }
+ withTopicBindingContext(callback) {
+ const outerContextTopicState = this.state.topicContext;
+ this.state.topicContext = {
+ maxNumOfResolvableTopics: 1,
+ maxTopicIndex: null
+ };
+ try {
+ return callback();
+ } finally {
+ this.state.topicContext = outerContextTopicState;
+ }
+ }
+ withSmartMixTopicForbiddingContext(callback) {
+ if (this.hasPlugin(["pipelineOperator", {
+ proposal: "smart"
+ }])) {
+ const outerContextTopicState = this.state.topicContext;
+ this.state.topicContext = {
+ maxNumOfResolvableTopics: 0,
+ maxTopicIndex: null
+ };
+ try {
+ return callback();
+ } finally {
+ this.state.topicContext = outerContextTopicState;
+ }
+ } else {
+ return callback();
+ }
+ }
+ withSoloAwaitPermittingContext(callback) {
+ const outerContextSoloAwaitState = this.state.soloAwait;
+ this.state.soloAwait = true;
+ try {
+ return callback();
+ } finally {
+ this.state.soloAwait = outerContextSoloAwaitState;
+ }
+ }
+ allowInAnd(callback) {
+ const flags = this.prodParam.currentFlags();
+ const prodParamToSet = 8 & ~flags;
+ if (prodParamToSet) {
+ this.prodParam.enter(flags | 8);
+ try {
+ return callback();
+ } finally {
+ this.prodParam.exit();
+ }
+ }
+ return callback();
+ }
+ disallowInAnd(callback) {
+ const flags = this.prodParam.currentFlags();
+ const prodParamToClear = 8 & flags;
+ if (prodParamToClear) {
+ this.prodParam.enter(flags & ~8);
+ try {
+ return callback();
+ } finally {
+ this.prodParam.exit();
+ }
+ }
+ return callback();
+ }
+ registerTopicReference() {
+ this.state.topicContext.maxTopicIndex = 0;
+ }
+ topicReferenceIsAllowedInCurrentContext() {
+ return this.state.topicContext.maxNumOfResolvableTopics >= 1;
+ }
+ topicReferenceWasUsedInCurrentContext() {
+ return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;
+ }
+ parseFSharpPipelineBody(prec) {
+ const startLoc = this.state.startLoc;
+ this.state.potentialArrowAt = this.state.start;
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = true;
+ const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec);
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ return ret;
+ }
+ parseModuleExpression() {
+ this.expectPlugin("moduleBlocks");
+ const node = this.startNode();
+ this.next();
+ if (!this.match(5)) {
+ this.unexpected(null, 5);
+ }
+ const program = this.startNodeAt(this.state.endLoc);
+ this.next();
+ const revertScopes = this.initializeScopes(true);
+ this.enterInitialScopes();
+ try {
+ node.body = this.parseProgram(program, 8, "module");
+ } finally {
+ revertScopes();
+ }
+ return this.finishNode(node, "ModuleExpression");
+ }
+ parseVoidPattern(refExpressionErrors) {
+ this.expectPlugin("discardBinding");
+ const node = this.startNode();
+ if (refExpressionErrors != null) {
+ refExpressionErrors.voidPatternLoc = this.state.startLoc;
+ }
+ this.next();
+ return this.finishNode(node, "VoidPattern");
+ }
+ parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, afterLeftParse) {
+ if (refExpressionErrors != null && this.match(88)) {
+ const nextCode = this.lookaheadCharCode();
+ if (nextCode === 44 || nextCode === (close === 3 ? 93 : close === 8 ? 125 : 41) || nextCode === 61) {
+ return this.parseMaybeDefault(this.state.startLoc, this.parseVoidPattern(refExpressionErrors));
+ }
+ }
+ return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse);
+ }
+ parsePropertyNamePrefixOperator(prop) {}
+}
+const loopLabel = {
+ kind: 1
+ },
+ switchLabel = {
+ kind: 2
+ };
+const loneSurrogate = /[\uD800-\uDFFF]/u;
+const keywordRelationalOperator = /in(?:stanceof)?/y;
+function babel7CompatTokens(tokens, input, startIndex) {
+ for (let i = 0; i < tokens.length; i++) {
+ const token = tokens[i];
+ const {
+ type
+ } = token;
+ if (typeof type === "number") {
+ if (type === 139) {
+ const {
+ loc,
+ start,
+ value,
+ end
+ } = token;
+ const hashEndPos = start + 1;
+ const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);
+ tokens.splice(i, 1, new Token({
+ type: getExportedToken(27),
+ value: "#",
+ start: start,
+ end: hashEndPos,
+ startLoc: loc.start,
+ endLoc: hashEndLoc
+ }), new Token({
+ type: getExportedToken(132),
+ value: value,
+ start: hashEndPos,
+ end: end,
+ startLoc: hashEndLoc,
+ endLoc: loc.end
+ }));
+ i++;
+ continue;
+ }
+ if (tokenIsTemplate(type)) {
+ const {
+ loc,
+ start,
+ value,
+ end
+ } = token;
+ const backquoteEnd = start + 1;
+ const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);
+ let startToken;
+ if (input.charCodeAt(start - startIndex) === 96) {
+ startToken = new Token({
+ type: getExportedToken(22),
+ value: "`",
+ start: start,
+ end: backquoteEnd,
+ startLoc: loc.start,
+ endLoc: backquoteEndLoc
+ });
+ } else {
+ startToken = new Token({
+ type: getExportedToken(8),
+ value: "}",
+ start: start,
+ end: backquoteEnd,
+ startLoc: loc.start,
+ endLoc: backquoteEndLoc
+ });
+ }
+ let templateValue, templateElementEnd, templateElementEndLoc, endToken;
+ if (type === 24) {
+ templateElementEnd = end - 1;
+ templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);
+ templateValue = value === null ? null : value.slice(1, -1);
+ endToken = new Token({
+ type: getExportedToken(22),
+ value: "`",
+ start: templateElementEnd,
+ end: end,
+ startLoc: templateElementEndLoc,
+ endLoc: loc.end
+ });
+ } else {
+ templateElementEnd = end - 2;
+ templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);
+ templateValue = value === null ? null : value.slice(1, -2);
+ endToken = new Token({
+ type: getExportedToken(23),
+ value: "${",
+ start: templateElementEnd,
+ end: end,
+ startLoc: templateElementEndLoc,
+ endLoc: loc.end
+ });
+ }
+ tokens.splice(i, 1, startToken, new Token({
+ type: getExportedToken(20),
+ value: templateValue,
+ start: backquoteEnd,
+ end: templateElementEnd,
+ startLoc: backquoteEndLoc,
+ endLoc: templateElementEndLoc
+ }), endToken);
+ i += 2;
+ continue;
+ }
+ token.type = getExportedToken(type);
+ }
+ }
+ return tokens;
+}
+class StatementParser extends ExpressionParser {
+ parseTopLevel(file, program) {
+ file.program = this.parseProgram(program, 140, this.options.sourceType === "module" ? "module" : "script");
+ file.comments = this.comments;
+ if (this.optionFlags & 256) {
+ file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex);
+ }
+ return this.finishNode(file, "File");
+ }
+ parseProgram(program, end, sourceType) {
+ program.sourceType = sourceType;
+ program.interpreter = this.parseInterpreterDirective();
+ this.parseBlockBody(program, true, true, end);
+ if (this.inModule) {
+ if (!(this.optionFlags & 64) && this.scope.undefinedExports.size > 0) {
+ for (const [localName, at] of Array.from(this.scope.undefinedExports)) {
+ this.raise(Errors.ModuleExportUndefined, at, {
+ localName
+ });
+ }
+ }
+ this.addExtra(program, "topLevelAwait", this.state.hasTopLevelAwait);
+ }
+ let finishedProgram;
+ if (end === 140) {
+ finishedProgram = this.finishNode(program, "Program");
+ } else {
+ finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1));
+ }
+ return finishedProgram;
+ }
+ stmtToDirective(stmt) {
+ const directive = this.castNodeTo(stmt, "Directive");
+ const directiveLiteral = this.castNodeTo(stmt.expression, "DirectiveLiteral");
+ const expressionValue = directiveLiteral.value;
+ const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end));
+ const val = directiveLiteral.value = raw.slice(1, -1);
+ this.addExtra(directiveLiteral, "raw", raw);
+ this.addExtra(directiveLiteral, "rawValue", val);
+ this.addExtra(directiveLiteral, "expressionValue", expressionValue);
+ directive.value = directiveLiteral;
+ delete stmt.expression;
+ return directive;
+ }
+ parseInterpreterDirective() {
+ if (!this.match(28)) {
+ return null;
+ }
+ const node = this.startNode();
+ node.value = this.state.value;
+ this.next();
+ return this.finishNode(node, "InterpreterDirective");
+ }
+ isLet() {
+ if (!this.isContextual(100)) {
+ return false;
+ }
+ return this.hasFollowingBindingAtom();
+ }
+ isUsing() {
+ if (!this.isContextual(107)) {
+ return false;
+ }
+ return this.nextTokenIsIdentifierOnSameLine();
+ }
+ isForUsing() {
+ if (!this.isContextual(107)) {
+ return false;
+ }
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ if (this.isUnparsedContextual(next, "of")) {
+ const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2);
+ if (nextCharAfterOf !== 61 && nextCharAfterOf !== 58 && nextCharAfterOf !== 59) {
+ return false;
+ }
+ }
+ if (this.chStartsBindingIdentifier(nextCh, next) || this.isUnparsedContextual(next, "void")) {
+ return true;
+ }
+ return false;
+ }
+ nextTokenIsIdentifierOnSameLine() {
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ return this.chStartsBindingIdentifier(nextCh, next);
+ }
+ isAwaitUsing() {
+ if (!this.isContextual(96)) {
+ return false;
+ }
+ let next = this.nextTokenInLineStart();
+ if (this.isUnparsedContextual(next, "using")) {
+ next = this.nextTokenInLineStartSince(next + 5);
+ const nextCh = this.codePointAtPos(next);
+ if (this.chStartsBindingIdentifier(nextCh, next)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ chStartsBindingIdentifier(ch, pos) {
+ if (isIdentifierStart(ch)) {
+ keywordRelationalOperator.lastIndex = pos;
+ if (keywordRelationalOperator.test(this.input)) {
+ const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);
+ if (!isIdentifierChar(endCh) && endCh !== 92) {
+ return false;
+ }
+ }
+ return true;
+ } else if (ch === 92) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ chStartsBindingPattern(ch) {
+ return ch === 91 || ch === 123;
+ }
+ hasFollowingBindingAtom() {
+ const next = this.nextTokenStart();
+ const nextCh = this.codePointAtPos(next);
+ return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next);
+ }
+ hasInLineFollowingBindingIdentifierOrBrace() {
+ const next = this.nextTokenInLineStart();
+ const nextCh = this.codePointAtPos(next);
+ return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next);
+ }
+ allowsUsing() {
+ return (this.scope.inModule || !this.scope.inTopLevel) && !this.scope.inBareCaseStatement;
+ }
+ parseModuleItem() {
+ return this.parseStatementLike(1 | 2 | 4 | 8);
+ }
+ parseStatementListItem() {
+ return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8));
+ }
+ parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) {
+ let flags = 0;
+ if (this.options.annexB && !this.state.strict) {
+ flags |= 4;
+ if (allowLabeledFunction) {
+ flags |= 8;
+ }
+ }
+ return this.parseStatementLike(flags);
+ }
+ parseStatement() {
+ return this.parseStatementLike(0);
+ }
+ parseStatementLike(flags) {
+ let decorators = null;
+ if (this.match(26)) {
+ decorators = this.parseDecorators(true);
+ }
+ return this.parseStatementContent(flags, decorators);
+ }
+ parseStatementContent(flags, decorators) {
+ const startType = this.state.type;
+ const node = this.startNode();
+ const allowDeclaration = !!(flags & 2);
+ const allowFunctionDeclaration = !!(flags & 4);
+ const topLevel = flags & 1;
+ switch (startType) {
+ case 60:
+ return this.parseBreakContinueStatement(node, true);
+ case 63:
+ return this.parseBreakContinueStatement(node, false);
+ case 64:
+ return this.parseDebuggerStatement(node);
+ case 90:
+ return this.parseDoWhileStatement(node);
+ case 91:
+ return this.parseForStatement(node);
+ case 68:
+ if (this.lookaheadCharCode() === 46) break;
+ if (!allowFunctionDeclaration) {
+ this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc);
+ }
+ return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration);
+ case 80:
+ if (!allowDeclaration) this.unexpected();
+ return this.parseClass(this.maybeTakeDecorators(decorators, node), true);
+ case 69:
+ return this.parseIfStatement(node);
+ case 70:
+ return this.parseReturnStatement(node);
+ case 71:
+ return this.parseSwitchStatement(node);
+ case 72:
+ return this.parseThrowStatement(node);
+ case 73:
+ return this.parseTryStatement(node);
+ case 96:
+ if (this.isAwaitUsing()) {
+ if (!this.allowsUsing()) {
+ this.raise(Errors.UnexpectedUsingDeclaration, node);
+ } else if (!allowDeclaration) {
+ this.raise(Errors.UnexpectedLexicalDeclaration, node);
+ } else if (!this.recordAwaitIfAllowed()) {
+ this.raise(Errors.AwaitUsingNotInAsyncContext, node);
+ }
+ this.next();
+ return this.parseVarStatement(node, "await using");
+ }
+ break;
+ case 107:
+ if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) {
+ break;
+ }
+ if (!this.allowsUsing()) {
+ this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);
+ } else if (!allowDeclaration) {
+ this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);
+ }
+ return this.parseVarStatement(node, "using");
+ case 100:
+ {
+ if (this.state.containsEsc) {
+ break;
+ }
+ const next = this.nextTokenStart();
+ const nextCh = this.codePointAtPos(next);
+ if (nextCh !== 91) {
+ if (!allowDeclaration && this.hasFollowingLineBreak()) break;
+ if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) {
+ break;
+ }
+ }
+ }
+ case 75:
+ {
+ if (!allowDeclaration) {
+ this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);
+ }
+ }
+ case 74:
+ {
+ const kind = this.state.value;
+ return this.parseVarStatement(node, kind);
+ }
+ case 92:
+ return this.parseWhileStatement(node);
+ case 76:
+ return this.parseWithStatement(node);
+ case 5:
+ return this.parseBlock();
+ case 13:
+ return this.parseEmptyStatement(node);
+ case 83:
+ {
+ const nextTokenCharCode = this.lookaheadCharCode();
+ if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {
+ break;
+ }
+ }
+ case 82:
+ {
+ if (!(this.optionFlags & 8) && !topLevel) {
+ this.raise(Errors.UnexpectedImportExport, this.state.startLoc);
+ }
+ this.next();
+ let result;
+ if (startType === 83) {
+ result = this.parseImport(node);
+ } else {
+ result = this.parseExport(node, decorators);
+ }
+ this.assertModuleNodeAllowed(result);
+ return result;
+ }
+ default:
+ {
+ if (this.isAsyncFunction()) {
+ if (!allowDeclaration) {
+ this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc);
+ }
+ this.next();
+ return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration);
+ }
+ }
+ }
+ const maybeName = this.state.value;
+ const expr = this.parseExpression();
+ if (tokenIsIdentifier(startType) && expr.type === "Identifier" && this.eat(14)) {
+ return this.parseLabeledStatement(node, maybeName, expr, flags);
+ } else {
+ return this.parseExpressionStatement(node, expr, decorators);
+ }
+ }
+ assertModuleNodeAllowed(node) {
+ if (!(this.optionFlags & 8) && !this.inModule) {
+ this.raise(Errors.ImportOutsideModule, node);
+ }
+ }
+ decoratorsEnabledBeforeExport() {
+ if (this.hasPlugin("decorators-legacy")) return true;
+ return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false;
+ }
+ maybeTakeDecorators(maybeDecorators, classNode, exportNode) {
+ if (maybeDecorators) {
+ var _classNode$decorators;
+ if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) {
+ if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") {
+ this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]);
+ }
+ classNode.decorators.unshift(...maybeDecorators);
+ } else {
+ classNode.decorators = maybeDecorators;
+ }
+ this.resetStartLocationFromNode(classNode, maybeDecorators[0]);
+ if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);
+ }
+ return classNode;
+ }
+ canHaveLeadingDecorator() {
+ return this.match(80);
+ }
+ parseDecorators(allowExport) {
+ const decorators = [];
+ do {
+ decorators.push(this.parseDecorator());
+ } while (this.match(26));
+ if (this.match(82)) {
+ if (!allowExport) {
+ this.unexpected();
+ }
+ if (!this.decoratorsEnabledBeforeExport()) {
+ this.raise(Errors.DecoratorExportClass, this.state.startLoc);
+ }
+ } else if (!this.canHaveLeadingDecorator()) {
+ throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);
+ }
+ return decorators;
+ }
+ parseDecorator() {
+ this.expectOnePlugin(["decorators", "decorators-legacy"]);
+ const node = this.startNode();
+ this.next();
+ if (this.hasPlugin("decorators")) {
+ const startLoc = this.state.startLoc;
+ let expr;
+ if (this.match(10)) {
+ const startLoc = this.state.startLoc;
+ this.next();
+ expr = this.parseExpression();
+ this.expect(11);
+ expr = this.wrapParenthesis(startLoc, expr);
+ const paramsStartLoc = this.state.startLoc;
+ node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);
+ if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) {
+ this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc);
+ }
+ } else {
+ expr = this.parseIdentifier(false);
+ while (this.eat(16)) {
+ const node = this.startNodeAt(startLoc);
+ node.object = expr;
+ if (this.match(139)) {
+ this.classScope.usePrivateName(this.state.value, this.state.startLoc);
+ node.property = this.parsePrivateName();
+ } else {
+ node.property = this.parseIdentifier(true);
+ }
+ node.computed = false;
+ expr = this.finishNode(node, "MemberExpression");
+ }
+ node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);
+ }
+ } else {
+ node.expression = this.parseExprSubscripts();
+ }
+ return this.finishNode(node, "Decorator");
+ }
+ parseMaybeDecoratorArguments(expr, startLoc) {
+ if (this.eat(10)) {
+ const node = this.startNodeAt(startLoc);
+ node.callee = expr;
+ node.arguments = this.parseCallExpressionArguments();
+ this.toReferencedList(node.arguments);
+ return this.finishNode(node, "CallExpression");
+ }
+ return expr;
+ }
+ parseBreakContinueStatement(node, isBreak) {
+ this.next();
+ if (this.isLineTerminator()) {
+ node.label = null;
+ } else {
+ node.label = this.parseIdentifier();
+ this.semicolon();
+ }
+ this.verifyBreakContinue(node, isBreak);
+ return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
+ }
+ verifyBreakContinue(node, isBreak) {
+ let i;
+ for (i = 0; i < this.state.labels.length; ++i) {
+ const lab = this.state.labels[i];
+ if (node.label == null || lab.name === node.label.name) {
+ if (lab.kind != null && (isBreak || lab.kind === 1)) {
+ break;
+ }
+ if (node.label && isBreak) break;
+ }
+ }
+ if (i === this.state.labels.length) {
+ const type = isBreak ? "BreakStatement" : "ContinueStatement";
+ this.raise(Errors.IllegalBreakContinue, node, {
+ type
+ });
+ }
+ }
+ parseDebuggerStatement(node) {
+ this.next();
+ this.semicolon();
+ return this.finishNode(node, "DebuggerStatement");
+ }
+ parseHeaderExpression() {
+ this.expect(10);
+ const val = this.parseExpression();
+ this.expect(11);
+ return val;
+ }
+ parseDoWhileStatement(node) {
+ this.next();
+ this.state.labels.push(loopLabel);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ this.state.labels.pop();
+ this.expect(92);
+ node.test = this.parseHeaderExpression();
+ this.eat(13);
+ return this.finishNode(node, "DoWhileStatement");
+ }
+ parseForStatement(node) {
+ this.next();
+ this.state.labels.push(loopLabel);
+ let awaitAt = null;
+ if (this.isContextual(96) && this.recordAwaitIfAllowed()) {
+ awaitAt = this.state.startLoc;
+ this.next();
+ }
+ this.scope.enter(0);
+ this.expect(10);
+ if (this.match(13)) {
+ if (awaitAt !== null) {
+ this.unexpected(awaitAt);
+ }
+ return this.parseFor(node, null);
+ }
+ const startsWithLet = this.isContextual(100);
+ {
+ const startsWithAwaitUsing = this.isAwaitUsing();
+ const starsWithUsingDeclaration = startsWithAwaitUsing || this.isForUsing();
+ const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration;
+ if (this.match(74) || this.match(75) || isLetOrUsing) {
+ const initNode = this.startNode();
+ let kind;
+ if (startsWithAwaitUsing) {
+ kind = "await using";
+ if (!this.recordAwaitIfAllowed()) {
+ this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);
+ }
+ this.next();
+ } else {
+ kind = this.state.value;
+ }
+ this.next();
+ this.parseVar(initNode, true, kind);
+ const init = this.finishNode(initNode, "VariableDeclaration");
+ const isForIn = this.match(58);
+ if (isForIn && starsWithUsingDeclaration) {
+ this.raise(Errors.ForInUsing, init);
+ }
+ if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) {
+ return this.parseForIn(node, init, awaitAt);
+ }
+ if (awaitAt !== null) {
+ this.unexpected(awaitAt);
+ }
+ return this.parseFor(node, init);
+ }
+ }
+ const startsWithAsync = this.isContextual(95);
+ const refExpressionErrors = new ExpressionErrors();
+ const init = this.parseExpression(true, refExpressionErrors);
+ const isForOf = this.isContextual(102);
+ if (isForOf) {
+ if (startsWithLet) {
+ this.raise(Errors.ForOfLet, init);
+ }
+ if (awaitAt === null && startsWithAsync && init.type === "Identifier") {
+ this.raise(Errors.ForOfAsync, init);
+ }
+ }
+ if (isForOf || this.match(58)) {
+ this.checkDestructuringPrivate(refExpressionErrors);
+ this.toAssignable(init, true);
+ const type = isForOf ? "ForOfStatement" : "ForInStatement";
+ this.checkLVal(init, {
+ type
+ });
+ return this.parseForIn(node, init, awaitAt);
+ } else {
+ this.checkExpressionErrors(refExpressionErrors, true);
+ }
+ if (awaitAt !== null) {
+ this.unexpected(awaitAt);
+ }
+ return this.parseFor(node, init);
+ }
+ parseFunctionStatement(node, isAsync, isHangingDeclaration) {
+ this.next();
+ return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0));
+ }
+ parseIfStatement(node) {
+ this.next();
+ node.test = this.parseHeaderExpression();
+ node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();
+ node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null;
+ return this.finishNode(node, "IfStatement");
+ }
+ parseReturnStatement(node) {
+ if (!this.prodParam.hasReturn) {
+ this.raise(Errors.IllegalReturn, this.state.startLoc);
+ }
+ this.next();
+ if (this.isLineTerminator()) {
+ node.argument = null;
+ } else {
+ node.argument = this.parseExpression();
+ this.semicolon();
+ }
+ return this.finishNode(node, "ReturnStatement");
+ }
+ parseSwitchStatement(node) {
+ this.next();
+ node.discriminant = this.parseHeaderExpression();
+ const cases = node.cases = [];
+ this.expect(5);
+ this.state.labels.push(switchLabel);
+ this.scope.enter(256);
+ let cur;
+ for (let sawDefault; !this.match(8);) {
+ if (this.match(61) || this.match(65)) {
+ const isCase = this.match(61);
+ if (cur) this.finishNode(cur, "SwitchCase");
+ cases.push(cur = this.startNode());
+ cur.consequent = [];
+ this.next();
+ if (isCase) {
+ cur.test = this.parseExpression();
+ } else {
+ if (sawDefault) {
+ this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc);
+ }
+ sawDefault = true;
+ cur.test = null;
+ }
+ this.expect(14);
+ } else {
+ if (cur) {
+ cur.consequent.push(this.parseStatementListItem());
+ } else {
+ this.unexpected();
+ }
+ }
+ }
+ this.scope.exit();
+ if (cur) this.finishNode(cur, "SwitchCase");
+ this.next();
+ this.state.labels.pop();
+ return this.finishNode(node, "SwitchStatement");
+ }
+ parseThrowStatement(node) {
+ this.next();
+ if (this.hasPrecedingLineBreak()) {
+ this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc);
+ }
+ node.argument = this.parseExpression();
+ this.semicolon();
+ return this.finishNode(node, "ThrowStatement");
+ }
+ parseCatchClauseParam() {
+ const param = this.parseBindingAtom();
+ this.scope.enter(this.options.annexB && param.type === "Identifier" ? 8 : 0);
+ this.checkLVal(param, {
+ type: "CatchClause"
+ }, 9);
+ return param;
+ }
+ parseTryStatement(node) {
+ this.next();
+ node.block = this.parseBlock();
+ node.handler = null;
+ if (this.match(62)) {
+ const clause = this.startNode();
+ this.next();
+ if (this.match(10)) {
+ this.expect(10);
+ clause.param = this.parseCatchClauseParam();
+ this.expect(11);
+ } else {
+ clause.param = null;
+ this.scope.enter(0);
+ }
+ clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false));
+ this.scope.exit();
+ node.handler = this.finishNode(clause, "CatchClause");
+ }
+ node.finalizer = this.eat(67) ? this.parseBlock() : null;
+ if (!node.handler && !node.finalizer) {
+ this.raise(Errors.NoCatchOrFinally, node);
+ }
+ return this.finishNode(node, "TryStatement");
+ }
+ parseVarStatement(node, kind, allowMissingInitializer = false) {
+ this.next();
+ this.parseVar(node, false, kind, allowMissingInitializer);
+ this.semicolon();
+ return this.finishNode(node, "VariableDeclaration");
+ }
+ parseWhileStatement(node) {
+ this.next();
+ node.test = this.parseHeaderExpression();
+ this.state.labels.push(loopLabel);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ this.state.labels.pop();
+ return this.finishNode(node, "WhileStatement");
+ }
+ parseWithStatement(node) {
+ if (this.state.strict) {
+ this.raise(Errors.StrictWith, this.state.startLoc);
+ }
+ this.next();
+ node.object = this.parseHeaderExpression();
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ return this.finishNode(node, "WithStatement");
+ }
+ parseEmptyStatement(node) {
+ this.next();
+ return this.finishNode(node, "EmptyStatement");
+ }
+ parseLabeledStatement(node, maybeName, expr, flags) {
+ for (const label of this.state.labels) {
+ if (label.name === maybeName) {
+ this.raise(Errors.LabelRedeclaration, expr, {
+ labelName: maybeName
+ });
+ }
+ }
+ const kind = tokenIsLoop(this.state.type) ? 1 : this.match(71) ? 2 : null;
+ for (let i = this.state.labels.length - 1; i >= 0; i--) {
+ const label = this.state.labels[i];
+ if (label.statementStart === node.start) {
+ label.statementStart = this.sourceToOffsetPos(this.state.start);
+ label.kind = kind;
+ } else {
+ break;
+ }
+ }
+ this.state.labels.push({
+ name: maybeName,
+ kind: kind,
+ statementStart: this.sourceToOffsetPos(this.state.start)
+ });
+ node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement();
+ this.state.labels.pop();
+ node.label = expr;
+ return this.finishNode(node, "LabeledStatement");
+ }
+ parseExpressionStatement(node, expr, decorators) {
+ node.expression = expr;
+ this.semicolon();
+ return this.finishNode(node, "ExpressionStatement");
+ }
+ parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) {
+ const node = this.startNode();
+ if (allowDirectives) {
+ this.state.strictErrors.clear();
+ }
+ this.expect(5);
+ if (createNewLexicalScope) {
+ this.scope.enter(0);
+ }
+ this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);
+ if (createNewLexicalScope) {
+ this.scope.exit();
+ }
+ return this.finishNode(node, "BlockStatement");
+ }
+ isValidDirective(stmt) {
+ return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized;
+ }
+ parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
+ const body = node.body = [];
+ const directives = node.directives = [];
+ this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);
+ }
+ parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {
+ const oldStrict = this.state.strict;
+ let hasStrictModeDirective = false;
+ let parsedNonDirective = false;
+ while (!this.match(end)) {
+ const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem();
+ if (directives && !parsedNonDirective) {
+ if (this.isValidDirective(stmt)) {
+ const directive = this.stmtToDirective(stmt);
+ directives.push(directive);
+ if (!hasStrictModeDirective && directive.value.value === "use strict") {
+ hasStrictModeDirective = true;
+ this.setStrict(true);
+ }
+ continue;
+ }
+ parsedNonDirective = true;
+ this.state.strictErrors.clear();
+ }
+ body.push(stmt);
+ }
+ afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective);
+ if (!oldStrict) {
+ this.setStrict(false);
+ }
+ this.next();
+ }
+ parseFor(node, init) {
+ node.init = init;
+ this.semicolon(false);
+ node.test = this.match(13) ? null : this.parseExpression();
+ this.semicolon(false);
+ node.update = this.match(11) ? null : this.parseExpression();
+ this.expect(11);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ this.scope.exit();
+ this.state.labels.pop();
+ return this.finishNode(node, "ForStatement");
+ }
+ parseForIn(node, init, awaitAt) {
+ const isForIn = this.match(58);
+ this.next();
+ if (isForIn) {
+ if (awaitAt !== null) this.unexpected(awaitAt);
+ } else {
+ node.await = awaitAt !== null;
+ }
+ if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) {
+ this.raise(Errors.ForInOfLoopInitializer, init, {
+ type: isForIn ? "ForInStatement" : "ForOfStatement"
+ });
+ }
+ if (init.type === "AssignmentPattern") {
+ this.raise(Errors.InvalidLhs, init, {
+ ancestor: {
+ type: "ForStatement"
+ }
+ });
+ }
+ node.left = init;
+ node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();
+ this.expect(11);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());
+ this.scope.exit();
+ this.state.labels.pop();
+ return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement");
+ }
+ parseVar(node, isFor, kind, allowMissingInitializer = false) {
+ const declarations = node.declarations = [];
+ node.kind = kind;
+ for (;;) {
+ const decl = this.startNode();
+ this.parseVarId(decl, kind);
+ decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();
+ if (decl.init === null && !allowMissingInitializer) {
+ if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) {
+ this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {
+ kind: "destructuring"
+ });
+ } else if ((kind === "const" || kind === "using" || kind === "await using") && !(this.match(58) || this.isContextual(102))) {
+ this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {
+ kind
+ });
+ }
+ }
+ declarations.push(this.finishNode(decl, "VariableDeclarator"));
+ if (!this.eat(12)) break;
+ }
+ return node;
+ }
+ parseVarId(decl, kind) {
+ const id = this.parseBindingAtom();
+ if (kind === "using" || kind === "await using") {
+ if (id.type === "ArrayPattern" || id.type === "ObjectPattern") {
+ this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start);
+ }
+ } else {
+ if (id.type === "VoidPattern") {
+ this.raise(Errors.UnexpectedVoidPattern, id.loc.start);
+ }
+ }
+ this.checkLVal(id, {
+ type: "VariableDeclarator"
+ }, kind === "var" ? 5 : 8201);
+ decl.id = id;
+ }
+ parseAsyncFunctionExpression(node) {
+ return this.parseFunction(node, 8);
+ }
+ parseFunction(node, flags = 0) {
+ const hangingDeclaration = flags & 2;
+ const isDeclaration = !!(flags & 1);
+ const requireId = isDeclaration && !(flags & 4);
+ const isAsync = !!(flags & 8);
+ this.initFunction(node, isAsync);
+ if (this.match(55)) {
+ if (hangingDeclaration) {
+ this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc);
+ }
+ this.next();
+ node.generator = true;
+ }
+ if (isDeclaration) {
+ node.id = this.parseFunctionId(requireId);
+ }
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ this.state.maybeInArrowParameters = false;
+ this.scope.enter(514);
+ this.prodParam.enter(functionFlags(isAsync, node.generator));
+ if (!isDeclaration) {
+ node.id = this.parseFunctionId();
+ }
+ this.parseFunctionParams(node, false);
+ this.withSmartMixTopicForbiddingContext(() => {
+ this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression");
+ });
+ this.prodParam.exit();
+ this.scope.exit();
+ if (isDeclaration && !hangingDeclaration) {
+ this.registerFunctionStatementId(node);
+ }
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ return node;
+ }
+ parseFunctionId(requireId) {
+ return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;
+ }
+ parseFunctionParams(node, isConstructor) {
+ this.expect(10);
+ this.expressionScope.enter(newParameterDeclarationScope());
+ node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0));
+ this.expressionScope.exit();
+ }
+ registerFunctionStatementId(node) {
+ if (!node.id) return;
+ this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start);
+ }
+ parseClass(node, isStatement, optionalId) {
+ this.next();
+ const oldStrict = this.state.strict;
+ this.state.strict = true;
+ this.parseClassId(node, isStatement, optionalId);
+ this.parseClassSuper(node);
+ node.body = this.parseClassBody(!!node.superClass, oldStrict);
+ return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");
+ }
+ isClassProperty() {
+ return this.match(29) || this.match(13) || this.match(8);
+ }
+ isClassMethod() {
+ return this.match(10);
+ }
+ nameIsConstructor(key) {
+ return key.type === "Identifier" && key.name === "constructor" || key.type === "StringLiteral" && key.value === "constructor";
+ }
+ isNonstaticConstructor(method) {
+ return !method.computed && !method.static && this.nameIsConstructor(method.key);
+ }
+ parseClassBody(hadSuperClass, oldStrict) {
+ this.classScope.enter();
+ const state = {
+ hadConstructor: false,
+ hadSuperClass
+ };
+ let decorators = [];
+ const classBody = this.startNode();
+ classBody.body = [];
+ this.expect(5);
+ this.withSmartMixTopicForbiddingContext(() => {
+ while (!this.match(8)) {
+ if (this.eat(13)) {
+ if (decorators.length > 0) {
+ throw this.raise(Errors.DecoratorSemicolon, this.state.lastTokEndLoc);
+ }
+ continue;
+ }
+ if (this.match(26)) {
+ decorators.push(this.parseDecorator());
+ continue;
+ }
+ const member = this.startNode();
+ if (decorators.length) {
+ member.decorators = decorators;
+ this.resetStartLocationFromNode(member, decorators[0]);
+ decorators = [];
+ }
+ this.parseClassMember(classBody, member, state);
+ if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) {
+ this.raise(Errors.DecoratorConstructor, member);
+ }
+ }
+ });
+ this.state.strict = oldStrict;
+ this.next();
+ if (decorators.length) {
+ throw this.raise(Errors.TrailingDecorator, this.state.startLoc);
+ }
+ this.classScope.exit();
+ return this.finishNode(classBody, "ClassBody");
+ }
+ parseClassMemberFromModifier(classBody, member) {
+ const key = this.parseIdentifier(true);
+ if (this.isClassMethod()) {
+ const method = member;
+ method.kind = "method";
+ method.computed = false;
+ method.key = key;
+ method.static = false;
+ this.pushClassMethod(classBody, method, false, false, false, false);
+ return true;
+ } else if (this.isClassProperty()) {
+ const prop = member;
+ prop.computed = false;
+ prop.key = key;
+ prop.static = false;
+ classBody.body.push(this.parseClassProperty(prop));
+ return true;
+ }
+ this.resetPreviousNodeTrailingComments(key);
+ return false;
+ }
+ parseClassMember(classBody, member, state) {
+ const isStatic = this.isContextual(106);
+ if (isStatic) {
+ if (this.parseClassMemberFromModifier(classBody, member)) {
+ return;
+ }
+ if (this.eat(5)) {
+ this.parseClassStaticBlock(classBody, member);
+ return;
+ }
+ }
+ this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);
+ }
+ parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
+ const publicMethod = member;
+ const privateMethod = member;
+ const publicProp = member;
+ const privateProp = member;
+ const accessorProp = member;
+ const method = publicMethod;
+ const publicMember = publicMethod;
+ member.static = isStatic;
+ this.parsePropertyNamePrefixOperator(member);
+ if (this.eat(55)) {
+ method.kind = "method";
+ const isPrivateName = this.match(139);
+ this.parseClassElementName(method);
+ this.parsePostMemberNameModifiers(method);
+ if (isPrivateName) {
+ this.pushClassPrivateMethod(classBody, privateMethod, true, false);
+ return;
+ }
+ if (this.isNonstaticConstructor(publicMethod)) {
+ this.raise(Errors.ConstructorIsGenerator, publicMethod.key);
+ }
+ this.pushClassMethod(classBody, publicMethod, true, false, false, false);
+ return;
+ }
+ const isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type);
+ const key = this.parseClassElementName(member);
+ const maybeContextualKw = isContextual ? key.name : null;
+ const isPrivate = this.isPrivateName(key);
+ const maybeQuestionTokenStartLoc = this.state.startLoc;
+ this.parsePostMemberNameModifiers(publicMember);
+ if (this.isClassMethod()) {
+ method.kind = "method";
+ if (isPrivate) {
+ this.pushClassPrivateMethod(classBody, privateMethod, false, false);
+ return;
+ }
+ const isConstructor = this.isNonstaticConstructor(publicMethod);
+ let allowsDirectSuper = false;
+ if (isConstructor) {
+ publicMethod.kind = "constructor";
+ if (state.hadConstructor && !this.hasPlugin("typescript")) {
+ this.raise(Errors.DuplicateConstructor, key);
+ }
+ if (isConstructor && this.hasPlugin("typescript") && member.override) {
+ this.raise(Errors.OverrideOnConstructor, key);
+ }
+ state.hadConstructor = true;
+ allowsDirectSuper = state.hadSuperClass;
+ }
+ this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);
+ } else if (this.isClassProperty()) {
+ if (isPrivate) {
+ this.pushClassPrivateProperty(classBody, privateProp);
+ } else {
+ this.pushClassProperty(classBody, publicProp);
+ }
+ } else if (maybeContextualKw === "async" && !this.isLineTerminator()) {
+ this.resetPreviousNodeTrailingComments(key);
+ const isGenerator = this.eat(55);
+ if (publicMember.optional) {
+ this.unexpected(maybeQuestionTokenStartLoc);
+ }
+ method.kind = "method";
+ const isPrivate = this.match(139);
+ this.parseClassElementName(method);
+ this.parsePostMemberNameModifiers(publicMember);
+ if (isPrivate) {
+ this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);
+ } else {
+ if (this.isNonstaticConstructor(publicMethod)) {
+ this.raise(Errors.ConstructorIsAsync, publicMethod.key);
+ }
+ this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);
+ }
+ } else if ((maybeContextualKw === "get" || maybeContextualKw === "set") && !(this.match(55) && this.isLineTerminator())) {
+ this.resetPreviousNodeTrailingComments(key);
+ method.kind = maybeContextualKw;
+ const isPrivate = this.match(139);
+ this.parseClassElementName(publicMethod);
+ if (isPrivate) {
+ this.pushClassPrivateMethod(classBody, privateMethod, false, false);
+ } else {
+ if (this.isNonstaticConstructor(publicMethod)) {
+ this.raise(Errors.ConstructorIsAccessor, publicMethod.key);
+ }
+ this.pushClassMethod(classBody, publicMethod, false, false, false, false);
+ }
+ this.checkGetterSetterParams(publicMethod);
+ } else if (maybeContextualKw === "accessor" && !this.isLineTerminator()) {
+ this.expectPlugin("decoratorAutoAccessors");
+ this.resetPreviousNodeTrailingComments(key);
+ const isPrivate = this.match(139);
+ this.parseClassElementName(publicProp);
+ this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);
+ } else if (this.isLineTerminator()) {
+ if (isPrivate) {
+ this.pushClassPrivateProperty(classBody, privateProp);
+ } else {
+ this.pushClassProperty(classBody, publicProp);
+ }
+ } else {
+ this.unexpected();
+ }
+ }
+ parseClassElementName(member) {
+ const {
+ type,
+ value
+ } = this.state;
+ if ((type === 132 || type === 134) && member.static && value === "prototype") {
+ this.raise(Errors.StaticPrototype, this.state.startLoc);
+ }
+ if (type === 139) {
+ if (value === "constructor") {
+ this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);
+ }
+ const key = this.parsePrivateName();
+ member.key = key;
+ return key;
+ }
+ this.parsePropertyName(member);
+ return member.key;
+ }
+ parseClassStaticBlock(classBody, member) {
+ var _member$decorators;
+ this.scope.enter(576 | 128 | 16);
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ this.prodParam.enter(0);
+ const body = member.body = [];
+ this.parseBlockOrModuleBlockBody(body, undefined, false, 8);
+ this.prodParam.exit();
+ this.scope.exit();
+ this.state.labels = oldLabels;
+ classBody.body.push(this.finishNode(member, "StaticBlock"));
+ if ((_member$decorators = member.decorators) != null && _member$decorators.length) {
+ this.raise(Errors.DecoratorStaticBlock, member);
+ }
+ }
+ pushClassProperty(classBody, prop) {
+ if (!prop.computed && this.nameIsConstructor(prop.key)) {
+ this.raise(Errors.ConstructorClassField, prop.key);
+ }
+ classBody.body.push(this.parseClassProperty(prop));
+ }
+ pushClassPrivateProperty(classBody, prop) {
+ const node = this.parseClassPrivateProperty(prop);
+ classBody.body.push(node);
+ this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start);
+ }
+ pushClassAccessorProperty(classBody, prop, isPrivate) {
+ if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {
+ this.raise(Errors.ConstructorClassField, prop.key);
+ }
+ const node = this.parseClassAccessorProperty(prop);
+ classBody.body.push(node);
+ if (isPrivate) {
+ this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start);
+ }
+ }
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true));
+ }
+ pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
+ const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true);
+ classBody.body.push(node);
+ const kind = node.kind === "get" ? node.static ? 6 : 2 : node.kind === "set" ? node.static ? 5 : 1 : 0;
+ this.declareClassPrivateMethodInScope(node, kind);
+ }
+ declareClassPrivateMethodInScope(node, kind) {
+ this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start);
+ }
+ parsePostMemberNameModifiers(methodOrProp) {}
+ parseClassPrivateProperty(node) {
+ this.parseInitializer(node);
+ this.semicolon();
+ return this.finishNode(node, "ClassPrivateProperty");
+ }
+ parseClassProperty(node) {
+ this.parseInitializer(node);
+ this.semicolon();
+ return this.finishNode(node, "ClassProperty");
+ }
+ parseClassAccessorProperty(node) {
+ this.parseInitializer(node);
+ this.semicolon();
+ return this.finishNode(node, "ClassAccessorProperty");
+ }
+ parseInitializer(node) {
+ this.scope.enter(576 | 16);
+ this.expressionScope.enter(newExpressionScope());
+ this.prodParam.enter(0);
+ node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null;
+ this.expressionScope.exit();
+ this.prodParam.exit();
+ this.scope.exit();
+ }
+ parseClassId(node, isStatement, optionalId, bindingType = 8331) {
+ if (tokenIsIdentifier(this.state.type)) {
+ node.id = this.parseIdentifier();
+ if (isStatement) {
+ this.declareNameFromIdentifier(node.id, bindingType);
+ }
+ } else {
+ if (optionalId || !isStatement) {
+ node.id = null;
+ } else {
+ throw this.raise(Errors.MissingClassName, this.state.startLoc);
+ }
+ }
+ }
+ parseClassSuper(node) {
+ node.superClass = this.eat(81) ? this.parseExprSubscripts() : null;
+ }
+ parseExport(node, decorators) {
+ const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true);
+ const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier);
+ const parseAfterDefault = !hasDefault || this.eat(12);
+ const hasStar = parseAfterDefault && this.eatExportStar(node);
+ const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);
+ const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));
+ const isFromRequired = hasDefault || hasStar;
+ if (hasStar && !hasNamespace) {
+ if (hasDefault) this.unexpected();
+ if (decorators) {
+ throw this.raise(Errors.UnsupportedDecoratorExport, node);
+ }
+ this.parseExportFrom(node, true);
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node, "ExportAllDeclaration");
+ }
+ const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);
+ if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {
+ this.unexpected(null, 5);
+ }
+ if (hasNamespace && parseAfterNamespace) {
+ this.unexpected(null, 98);
+ }
+ let hasDeclaration;
+ if (isFromRequired || hasSpecifiers) {
+ hasDeclaration = false;
+ if (decorators) {
+ throw this.raise(Errors.UnsupportedDecoratorExport, node);
+ }
+ this.parseExportFrom(node, isFromRequired);
+ } else {
+ hasDeclaration = this.maybeParseExportDeclaration(node);
+ }
+ if (isFromRequired || hasSpecifiers || hasDeclaration) {
+ var _node2$declaration;
+ const node2 = node;
+ this.checkExport(node2, true, false, !!node2.source);
+ if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") {
+ this.maybeTakeDecorators(decorators, node2.declaration, node2);
+ } else if (decorators) {
+ throw this.raise(Errors.UnsupportedDecoratorExport, node);
+ }
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node2, "ExportNamedDeclaration");
+ }
+ if (this.eat(65)) {
+ const node2 = node;
+ const decl = this.parseExportDefaultExpression();
+ node2.declaration = decl;
+ if (decl.type === "ClassDeclaration") {
+ this.maybeTakeDecorators(decorators, decl, node2);
+ } else if (decorators) {
+ throw this.raise(Errors.UnsupportedDecoratorExport, node);
+ }
+ this.checkExport(node2, true, true);
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node2, "ExportDefaultDeclaration");
+ }
+ throw this.unexpected(null, 5);
+ }
+ eatExportStar(node) {
+ return this.eat(55);
+ }
+ maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {
+ if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {
+ this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start);
+ const id = maybeDefaultIdentifier || this.parseIdentifier(true);
+ const specifier = this.startNodeAtNode(id);
+ specifier.exported = id;
+ node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
+ return true;
+ }
+ return false;
+ }
+ maybeParseExportNamespaceSpecifier(node) {
+ if (this.isContextual(93)) {
+ var _ref, _ref$specifiers;
+ (_ref$specifiers = (_ref = node).specifiers) != null ? _ref$specifiers : _ref.specifiers = [];
+ const specifier = this.startNodeAt(this.state.lastTokStartLoc);
+ this.next();
+ specifier.exported = this.parseModuleExportName();
+ node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier"));
+ return true;
+ }
+ return false;
+ }
+ maybeParseExportNamedSpecifiers(node) {
+ if (this.match(5)) {
+ const node2 = node;
+ if (!node2.specifiers) node2.specifiers = [];
+ const isTypeExport = node2.exportKind === "type";
+ node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport));
+ node2.source = null;
+ if (this.hasPlugin("importAssertions")) {
+ node2.assertions = [];
+ } else {
+ node2.attributes = [];
+ }
+ node2.declaration = null;
+ return true;
+ }
+ return false;
+ }
+ maybeParseExportDeclaration(node) {
+ if (this.shouldParseExportDeclaration()) {
+ node.specifiers = [];
+ node.source = null;
+ if (this.hasPlugin("importAssertions")) {
+ node.assertions = [];
+ } else {
+ node.attributes = [];
+ }
+ node.declaration = this.parseExportDeclaration(node);
+ return true;
+ }
+ return false;
+ }
+ isAsyncFunction() {
+ if (!this.isContextual(95)) return false;
+ const next = this.nextTokenInLineStart();
+ return this.isUnparsedContextual(next, "function");
+ }
+ parseExportDefaultExpression() {
+ const expr = this.startNode();
+ if (this.match(68)) {
+ this.next();
+ return this.parseFunction(expr, 1 | 4);
+ } else if (this.isAsyncFunction()) {
+ this.next();
+ this.next();
+ return this.parseFunction(expr, 1 | 4 | 8);
+ }
+ if (this.match(80)) {
+ return this.parseClass(expr, true, true);
+ }
+ if (this.match(26)) {
+ if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) {
+ this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);
+ }
+ return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true);
+ }
+ if (this.match(75) || this.match(74) || this.isLet() || this.isUsing() || this.isAwaitUsing()) {
+ throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);
+ }
+ const res = this.parseMaybeAssignAllowIn();
+ this.semicolon();
+ return res;
+ }
+ parseExportDeclaration(node) {
+ if (this.match(80)) {
+ const node = this.parseClass(this.startNode(), true, false);
+ return node;
+ }
+ return this.parseStatementListItem();
+ }
+ isExportDefaultSpecifier() {
+ const {
+ type
+ } = this.state;
+ if (tokenIsIdentifier(type)) {
+ if (type === 95 && !this.state.containsEsc || type === 100) {
+ return false;
+ }
+ if ((type === 130 || type === 129) && !this.state.containsEsc) {
+ const next = this.nextTokenStart();
+ const nextChar = this.input.charCodeAt(next);
+ if (nextChar === 123 || this.chStartsBindingIdentifier(nextChar, next) && !this.input.startsWith("from", next)) {
+ this.expectOnePlugin(["flow", "typescript"]);
+ return false;
+ }
+ }
+ } else if (!this.match(65)) {
+ return false;
+ }
+ const next = this.nextTokenStart();
+ const hasFrom = this.isUnparsedContextual(next, "from");
+ if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {
+ return true;
+ }
+ if (this.match(65) && hasFrom) {
+ const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));
+ return nextAfterFrom === 34 || nextAfterFrom === 39;
+ }
+ return false;
+ }
+ parseExportFrom(node, expect) {
+ if (this.eatContextual(98)) {
+ node.source = this.parseImportSource();
+ this.checkExport(node);
+ this.maybeParseImportAttributes(node);
+ this.checkJSONModuleImport(node);
+ } else if (expect) {
+ this.unexpected();
+ }
+ this.semicolon();
+ }
+ shouldParseExportDeclaration() {
+ const {
+ type
+ } = this.state;
+ if (type === 26) {
+ this.expectOnePlugin(["decorators", "decorators-legacy"]);
+ if (this.hasPlugin("decorators")) {
+ if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) {
+ this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);
+ }
+ return true;
+ }
+ }
+ if (this.isUsing()) {
+ this.raise(Errors.UsingDeclarationExport, this.state.startLoc);
+ return true;
+ }
+ if (this.isAwaitUsing()) {
+ this.raise(Errors.UsingDeclarationExport, this.state.startLoc);
+ return true;
+ }
+ return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction();
+ }
+ checkExport(node, checkNames, isDefault, isFrom) {
+ if (checkNames) {
+ var _node$specifiers;
+ if (isDefault) {
+ this.checkDuplicateExports(node, "default");
+ if (this.hasPlugin("exportDefaultFrom")) {
+ var _declaration$extra;
+ const declaration = node.declaration;
+ if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {
+ this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);
+ }
+ }
+ } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) {
+ for (const specifier of node.specifiers) {
+ const {
+ exported
+ } = specifier;
+ const exportName = exported.type === "Identifier" ? exported.name : exported.value;
+ this.checkDuplicateExports(specifier, exportName);
+ if (!isFrom && specifier.local) {
+ const {
+ local
+ } = specifier;
+ if (local.type !== "Identifier") {
+ this.raise(Errors.ExportBindingIsString, specifier, {
+ localName: local.value,
+ exportName
+ });
+ } else {
+ this.checkReservedWord(local.name, local.loc.start, true, false);
+ this.scope.checkLocalExport(local);
+ }
+ }
+ }
+ } else if (node.declaration) {
+ const decl = node.declaration;
+ if (decl.type === "FunctionDeclaration" || decl.type === "ClassDeclaration") {
+ const {
+ id
+ } = decl;
+ if (!id) throw new Error("Assertion failure");
+ this.checkDuplicateExports(node, id.name);
+ } else if (decl.type === "VariableDeclaration") {
+ for (const declaration of decl.declarations) {
+ this.checkDeclaration(declaration.id);
+ }
+ }
+ }
+ }
+ }
+ checkDeclaration(node) {
+ if (node.type === "Identifier") {
+ this.checkDuplicateExports(node, node.name);
+ } else if (node.type === "ObjectPattern") {
+ for (const prop of node.properties) {
+ this.checkDeclaration(prop);
+ }
+ } else if (node.type === "ArrayPattern") {
+ for (const elem of node.elements) {
+ if (elem) {
+ this.checkDeclaration(elem);
+ }
+ }
+ } else if (node.type === "ObjectProperty") {
+ this.checkDeclaration(node.value);
+ } else if (node.type === "RestElement") {
+ this.checkDeclaration(node.argument);
+ } else if (node.type === "AssignmentPattern") {
+ this.checkDeclaration(node.left);
+ }
+ }
+ checkDuplicateExports(node, exportName) {
+ if (this.exportedIdentifiers.has(exportName)) {
+ if (exportName === "default") {
+ this.raise(Errors.DuplicateDefaultExport, node);
+ } else {
+ this.raise(Errors.DuplicateExport, node, {
+ exportName
+ });
+ }
+ }
+ this.exportedIdentifiers.add(exportName);
+ }
+ parseExportSpecifiers(isInTypeExport) {
+ const nodes = [];
+ let first = true;
+ this.expect(5);
+ while (!this.eat(8)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ if (this.eat(8)) break;
+ }
+ const isMaybeTypeOnly = this.isContextual(130);
+ const isString = this.match(134);
+ const node = this.startNode();
+ node.local = this.parseModuleExportName();
+ nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly));
+ }
+ return nodes;
+ }
+ parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
+ if (this.eatContextual(93)) {
+ node.exported = this.parseModuleExportName();
+ } else if (isString) {
+ node.exported = this.cloneStringLiteral(node.local);
+ } else if (!node.exported) {
+ node.exported = this.cloneIdentifier(node.local);
+ }
+ return this.finishNode(node, "ExportSpecifier");
+ }
+ parseModuleExportName() {
+ if (this.match(134)) {
+ const result = this.parseStringLiteral(this.state.value);
+ const surrogate = loneSurrogate.exec(result.value);
+ if (surrogate) {
+ this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {
+ surrogateCharCode: surrogate[0].charCodeAt(0)
+ });
+ }
+ return result;
+ }
+ return this.parseIdentifier(true);
+ }
+ isJSONModuleImport(node) {
+ if (node.assertions != null) {
+ return node.assertions.some(({
+ key,
+ value
+ }) => {
+ return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type");
+ });
+ }
+ return false;
+ }
+ checkImportReflection(node) {
+ const {
+ specifiers
+ } = node;
+ const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null;
+ if (node.phase === "source") {
+ if (singleBindingType !== "ImportDefaultSpecifier") {
+ this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0].loc.start);
+ }
+ } else if (node.phase === "defer") {
+ if (singleBindingType !== "ImportNamespaceSpecifier") {
+ this.raise(Errors.DeferImportRequiresNamespace, specifiers[0].loc.start);
+ }
+ } else if (node.module) {
+ var _node$assertions;
+ if (singleBindingType !== "ImportDefaultSpecifier") {
+ this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start);
+ }
+ if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) {
+ this.raise(Errors.ImportReflectionHasAssertion, specifiers[0].loc.start);
+ }
+ }
+ }
+ checkJSONModuleImport(node) {
+ if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") {
+ const {
+ specifiers
+ } = node;
+ if (specifiers != null) {
+ const nonDefaultNamedSpecifier = specifiers.find(specifier => {
+ let imported;
+ if (specifier.type === "ExportSpecifier") {
+ imported = specifier.local;
+ } else if (specifier.type === "ImportSpecifier") {
+ imported = specifier.imported;
+ }
+ if (imported !== undefined) {
+ return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default";
+ }
+ });
+ if (nonDefaultNamedSpecifier !== undefined) {
+ this.raise(Errors.ImportJSONBindingNotDefault, nonDefaultNamedSpecifier.loc.start);
+ }
+ }
+ }
+ }
+ isPotentialImportPhase(isExport) {
+ if (isExport) return false;
+ return this.isContextual(105) || this.isContextual(97) || this.isContextual(127);
+ }
+ applyImportPhase(node, isExport, phase, loc) {
+ if (isExport) {
+ return;
+ }
+ if (phase === "module") {
+ this.expectPlugin("importReflection", loc);
+ node.module = true;
+ } else if (this.hasPlugin("importReflection")) {
+ node.module = false;
+ }
+ if (phase === "source") {
+ this.expectPlugin("sourcePhaseImports", loc);
+ node.phase = "source";
+ } else if (phase === "defer") {
+ this.expectPlugin("deferredImportEvaluation", loc);
+ node.phase = "defer";
+ } else if (this.hasPlugin("sourcePhaseImports")) {
+ node.phase = null;
+ }
+ }
+ parseMaybeImportPhase(node, isExport) {
+ if (!this.isPotentialImportPhase(isExport)) {
+ this.applyImportPhase(node, isExport, null);
+ return null;
+ }
+ const phaseIdentifier = this.startNode();
+ const phaseIdentifierName = this.parseIdentifierName(true);
+ const {
+ type
+ } = this.state;
+ const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12;
+ if (isImportPhase) {
+ this.applyImportPhase(node, isExport, phaseIdentifierName, phaseIdentifier.loc.start);
+ return null;
+ } else {
+ this.applyImportPhase(node, isExport, null);
+ return this.createIdentifier(phaseIdentifier, phaseIdentifierName);
+ }
+ }
+ isPrecedingIdImportPhase(phase) {
+ const {
+ type
+ } = this.state;
+ return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12;
+ }
+ parseImport(node) {
+ if (this.match(134)) {
+ return this.parseImportSourceAndAttributes(node);
+ }
+ return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false));
+ }
+ parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) {
+ node.specifiers = [];
+ const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier);
+ const parseNext = !hasDefault || this.eat(12);
+ const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);
+ if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);
+ this.expectContextual(98);
+ return this.parseImportSourceAndAttributes(node);
+ }
+ parseImportSourceAndAttributes(node) {
+ var _node$specifiers2;
+ (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = [];
+ node.source = this.parseImportSource();
+ this.maybeParseImportAttributes(node);
+ this.checkImportReflection(node);
+ this.checkJSONModuleImport(node);
+ this.semicolon();
+ this.sawUnambiguousESM = true;
+ return this.finishNode(node, "ImportDeclaration");
+ }
+ parseImportSource() {
+ if (!this.match(134)) this.unexpected();
+ return this.parseExprAtom();
+ }
+ parseImportSpecifierLocal(node, specifier, type) {
+ specifier.local = this.parseIdentifier();
+ node.specifiers.push(this.finishImportSpecifier(specifier, type));
+ }
+ finishImportSpecifier(specifier, type, bindingType = 8201) {
+ this.checkLVal(specifier.local, {
+ type
+ }, bindingType);
+ return this.finishNode(specifier, type);
+ }
+ parseImportAttributes() {
+ this.expect(5);
+ const attrs = [];
+ const attrNames = new Set();
+ do {
+ if (this.match(8)) {
+ break;
+ }
+ const node = this.startNode();
+ const keyName = this.state.value;
+ if (attrNames.has(keyName)) {
+ this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, {
+ key: keyName
+ });
+ }
+ attrNames.add(keyName);
+ if (this.match(134)) {
+ node.key = this.parseStringLiteral(keyName);
+ } else {
+ node.key = this.parseIdentifier(true);
+ }
+ this.expect(14);
+ if (!this.match(134)) {
+ throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc);
+ }
+ node.value = this.parseStringLiteral(this.state.value);
+ attrs.push(this.finishNode(node, "ImportAttribute"));
+ } while (this.eat(12));
+ this.expect(8);
+ return attrs;
+ }
+ parseModuleAttributes() {
+ const attrs = [];
+ const attributes = new Set();
+ do {
+ const node = this.startNode();
+ node.key = this.parseIdentifier(true);
+ if (node.key.name !== "type") {
+ this.raise(Errors.ModuleAttributeDifferentFromType, node.key);
+ }
+ if (attributes.has(node.key.name)) {
+ this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, {
+ key: node.key.name
+ });
+ }
+ attributes.add(node.key.name);
+ this.expect(14);
+ if (!this.match(134)) {
+ throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc);
+ }
+ node.value = this.parseStringLiteral(this.state.value);
+ attrs.push(this.finishNode(node, "ImportAttribute"));
+ } while (this.eat(12));
+ return attrs;
+ }
+ maybeParseImportAttributes(node) {
+ let attributes;
+ var useWith = false;
+ if (this.match(76)) {
+ if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) {
+ return;
+ }
+ this.next();
+ if (this.hasPlugin("moduleAttributes")) {
+ attributes = this.parseModuleAttributes();
+ this.addExtra(node, "deprecatedWithLegacySyntax", true);
+ } else {
+ attributes = this.parseImportAttributes();
+ }
+ useWith = true;
+ } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) {
+ if (!this.hasPlugin("deprecatedImportAssert") && !this.hasPlugin("importAssertions")) {
+ this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc);
+ }
+ if (!this.hasPlugin("importAssertions")) {
+ this.addExtra(node, "deprecatedAssertSyntax", true);
+ }
+ this.next();
+ attributes = this.parseImportAttributes();
+ } else {
+ attributes = [];
+ }
+ if (!useWith && this.hasPlugin("importAssertions")) {
+ node.assertions = attributes;
+ } else {
+ node.attributes = attributes;
+ }
+ }
+ maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) {
+ if (maybeDefaultIdentifier) {
+ const specifier = this.startNodeAtNode(maybeDefaultIdentifier);
+ specifier.local = maybeDefaultIdentifier;
+ node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier"));
+ return true;
+ } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier");
+ return true;
+ }
+ return false;
+ }
+ maybeParseStarImportSpecifier(node) {
+ if (this.match(55)) {
+ const specifier = this.startNode();
+ this.next();
+ this.expectContextual(93);
+ this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier");
+ return true;
+ }
+ return false;
+ }
+ parseNamedImportSpecifiers(node) {
+ let first = true;
+ this.expect(5);
+ while (!this.eat(8)) {
+ if (first) {
+ first = false;
+ } else {
+ if (this.eat(14)) {
+ throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);
+ }
+ this.expect(12);
+ if (this.eat(8)) break;
+ }
+ const specifier = this.startNode();
+ const importedIsString = this.match(134);
+ const isMaybeTypeOnly = this.isContextual(130);
+ specifier.imported = this.parseModuleExportName();
+ const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined);
+ node.specifiers.push(importSpecifier);
+ }
+ }
+ parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
+ if (this.eatContextual(93)) {
+ specifier.local = this.parseIdentifier();
+ } else {
+ const {
+ imported
+ } = specifier;
+ if (importedIsString) {
+ throw this.raise(Errors.ImportBindingIsString, specifier, {
+ importName: imported.value
+ });
+ }
+ this.checkReservedWord(imported.name, specifier.loc.start, true, true);
+ if (!specifier.local) {
+ specifier.local = this.cloneIdentifier(imported);
+ }
+ }
+ return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType);
+ }
+ isThisParam(param) {
+ return param.type === "Identifier" && param.name === "this";
+ }
+}
+class Parser extends StatementParser {
+ constructor(options, input, pluginsMap) {
+ const normalizedOptions = getOptions(options);
+ super(normalizedOptions, input);
+ this.options = normalizedOptions;
+ this.initializeScopes();
+ this.plugins = pluginsMap;
+ this.filename = normalizedOptions.sourceFilename;
+ this.startIndex = normalizedOptions.startIndex;
+ let optionFlags = 0;
+ if (normalizedOptions.allowAwaitOutsideFunction) {
+ optionFlags |= 1;
+ }
+ if (normalizedOptions.allowReturnOutsideFunction) {
+ optionFlags |= 2;
+ }
+ if (normalizedOptions.allowImportExportEverywhere) {
+ optionFlags |= 8;
+ }
+ if (normalizedOptions.allowSuperOutsideMethod) {
+ optionFlags |= 16;
+ }
+ if (normalizedOptions.allowUndeclaredExports) {
+ optionFlags |= 64;
+ }
+ if (normalizedOptions.allowNewTargetOutsideFunction) {
+ optionFlags |= 4;
+ }
+ if (normalizedOptions.allowYieldOutsideFunction) {
+ optionFlags |= 32;
+ }
+ if (normalizedOptions.ranges) {
+ optionFlags |= 128;
+ }
+ if (normalizedOptions.tokens) {
+ optionFlags |= 256;
+ }
+ if (normalizedOptions.createImportExpressions) {
+ optionFlags |= 512;
+ }
+ if (normalizedOptions.createParenthesizedExpressions) {
+ optionFlags |= 1024;
+ }
+ if (normalizedOptions.errorRecovery) {
+ optionFlags |= 2048;
+ }
+ if (normalizedOptions.attachComment) {
+ optionFlags |= 4096;
+ }
+ if (normalizedOptions.annexB) {
+ optionFlags |= 8192;
+ }
+ this.optionFlags = optionFlags;
+ }
+ getScopeHandler() {
+ return ScopeHandler;
+ }
+ parse() {
+ this.enterInitialScopes();
+ const file = this.startNode();
+ const program = this.startNode();
+ this.nextToken();
+ file.errors = null;
+ const result = this.parseTopLevel(file, program);
+ result.errors = this.state.errors;
+ result.comments.length = this.state.commentsLen;
+ return result;
+ }
+}
+function parse(input, options) {
+ var _options;
+ if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") {
+ options = Object.assign({}, options);
+ try {
+ options.sourceType = "module";
+ const parser = getParser(options, input);
+ const ast = parser.parse();
+ if (parser.sawUnambiguousESM) {
+ return ast;
+ }
+ if (parser.ambiguousScriptDifferentAst) {
+ try {
+ options.sourceType = "script";
+ return getParser(options, input).parse();
+ } catch (_unused) {}
+ } else {
+ ast.program.sourceType = "script";
+ }
+ return ast;
+ } catch (moduleError) {
+ try {
+ options.sourceType = "script";
+ return getParser(options, input).parse();
+ } catch (_unused2) {}
+ throw moduleError;
+ }
+ } else {
+ return getParser(options, input).parse();
+ }
+}
+function parseExpression(input, options) {
+ const parser = getParser(options, input);
+ if (parser.options.strictMode) {
+ parser.state.strict = true;
+ }
+ return parser.getExpression();
+}
+function generateExportedTokenTypes(internalTokenTypes) {
+ const tokenTypes = {};
+ for (const typeName of Object.keys(internalTokenTypes)) {
+ tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);
+ }
+ return tokenTypes;
+}
+const tokTypes = generateExportedTokenTypes(tt);
+function getParser(options, input) {
+ let cls = Parser;
+ const pluginsMap = new Map();
+ if (options != null && options.plugins) {
+ for (const plugin of options.plugins) {
+ let name, opts;
+ if (typeof plugin === "string") {
+ name = plugin;
+ } else {
+ [name, opts] = plugin;
+ }
+ if (!pluginsMap.has(name)) {
+ pluginsMap.set(name, opts || {});
+ }
+ }
+ validatePlugins(pluginsMap);
+ cls = getParserClass(pluginsMap);
+ }
+ return new cls(options, input, pluginsMap);
+}
+const parserClassCache = new Map();
+function getParserClass(pluginsMap) {
+ const pluginList = [];
+ for (const name of mixinPluginNames) {
+ if (pluginsMap.has(name)) {
+ pluginList.push(name);
+ }
+ }
+ const key = pluginList.join("|");
+ let cls = parserClassCache.get(key);
+ if (!cls) {
+ cls = Parser;
+ for (const plugin of pluginList) {
+ cls = mixinPlugins[plugin](cls);
+ }
+ parserClassCache.set(key, cls);
+ }
+ return cls;
+}
+exports.parse = parse;
+exports.parseExpression = parseExpression;
+exports.tokTypes = tokTypes;
+//# sourceMappingURL=index.js.map
+
+}, function(modId) {var map = {}; return __REQUIRE__(map[modId], modId); })
+return __REQUIRE__(1771034509018);
+})()
+//miniprogram-npm-outsideDeps=[]
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@babel/parser/index.js.map b/miniapp/miniprogram_npm/@babel/parser/index.js.map
new file mode 100644
index 0000000..98fc0e1
--- /dev/null
+++ b/miniapp/miniprogram_npm/@babel/parser/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["index.js"],"names":[],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.js","sourcesContent":["\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nclass Position {\n constructor(line, col, index) {\n this.line = void 0;\n this.column = void 0;\n this.index = void 0;\n this.line = line;\n this.column = col;\n this.index = index;\n }\n}\nclass SourceLocation {\n constructor(start, end) {\n this.start = void 0;\n this.end = void 0;\n this.filename = void 0;\n this.identifierName = void 0;\n this.start = start;\n this.end = end;\n }\n}\nfunction createPositionWithColumnOffset(position, columnOffset) {\n const {\n line,\n column,\n index\n } = position;\n return new Position(line, column + columnOffset, index + columnOffset);\n}\nconst code = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\nvar ModuleErrors = {\n ImportMetaOutsideModule: {\n message: `import.meta may appear only with 'sourceType: \"module\"'`,\n code\n },\n ImportOutsideModule: {\n message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n code\n }\n};\nconst NodeDescriptions = {\n ArrayPattern: \"array destructuring pattern\",\n AssignmentExpression: \"assignment expression\",\n AssignmentPattern: \"assignment expression\",\n ArrowFunctionExpression: \"arrow function expression\",\n ConditionalExpression: \"conditional expression\",\n CatchClause: \"catch clause\",\n ForOfStatement: \"for-of statement\",\n ForInStatement: \"for-in statement\",\n ForStatement: \"for-loop\",\n FormalParameters: \"function parameter list\",\n Identifier: \"identifier\",\n ImportSpecifier: \"import specifier\",\n ImportDefaultSpecifier: \"import default specifier\",\n ImportNamespaceSpecifier: \"import namespace specifier\",\n ObjectPattern: \"object destructuring pattern\",\n ParenthesizedExpression: \"parenthesized expression\",\n RestElement: \"rest element\",\n UpdateExpression: {\n true: \"prefix operation\",\n false: \"postfix operation\"\n },\n VariableDeclarator: \"variable declaration\",\n YieldExpression: \"yield expression\"\n};\nconst toNodeDescription = node => node.type === \"UpdateExpression\" ? NodeDescriptions.UpdateExpression[`${node.prefix}`] : NodeDescriptions[node.type];\nvar StandardErrors = {\n AccessorIsGenerator: ({\n kind\n }) => `A ${kind}ter cannot be a generator.`,\n ArgumentsInClass: \"'arguments' is only allowed in functions and class methods.\",\n AsyncFunctionInSingleStatementContext: \"Async functions can only be declared at the top level or inside a block.\",\n AwaitBindingIdentifier: \"Can not use 'await' as identifier inside an async function.\",\n AwaitBindingIdentifierInStaticBlock: \"Can not use 'await' as identifier inside a static block.\",\n AwaitExpressionFormalParameter: \"'await' is not allowed in async function parameters.\",\n AwaitUsingNotInAsyncContext: \"'await using' is only allowed within async functions and at the top levels of modules.\",\n AwaitNotInAsyncContext: \"'await' is only allowed within async functions and at the top levels of modules.\",\n BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n BadSetterRestParameter: \"A 'set' accessor function argument must not be a rest parameter.\",\n ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n ConstructorClassPrivateField: \"Classes may not have a private field named '#constructor'.\",\n ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n ConstructorIsAsync: \"Constructor can't be an async function.\",\n ConstructorIsGenerator: \"Constructor can't be a generator.\",\n DeclarationMissingInitializer: ({\n kind\n }) => `Missing initializer in ${kind} declaration.`,\n DecoratorArgumentsOutsideParentheses: \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n DecoratorBeforeExport: \"Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.\",\n DecoratorsBeforeAfterExport: \"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.\",\n DecoratorConstructor: \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n DecoratorExportClass: \"Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.\",\n DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n DeferImportRequiresNamespace: 'Only `import defer * as x from \"./module\"` is valid.',\n DeletePrivateField: \"Deleting a private field is not allowed.\",\n DestructureNamedImport: \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n DuplicateConstructor: \"Duplicate constructor in the same class.\",\n DuplicateDefaultExport: \"Only one default export allowed per module.\",\n DuplicateExport: ({\n exportName\n }) => `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n DuplicateProto: \"Redefinition of __proto__ property.\",\n DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n ElementAfterRest: \"Rest element must be last element.\",\n EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n ExportBindingIsString: ({\n localName,\n exportName\n }) => `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n ExportDefaultFromAsIdentifier: \"'from' is not allowed as an identifier after 'export default'.\",\n ForInOfLoopInitializer: ({\n type\n }) => `'${type === \"ForInStatement\" ? \"for-in\" : \"for-of\"}' loop variable declaration may not have an initializer.`,\n ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n GeneratorInSingleStatementContext: \"Generators can only be declared at the top level or inside a block.\",\n IllegalBreakContinue: ({\n type\n }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n IllegalLanguageModeDirective: \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n IllegalReturn: \"'return' outside of function.\",\n ImportAttributesUseAssert: \"The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.\",\n ImportBindingIsString: ({\n importName\n }) => `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n ImportCallArity: `\\`import()\\` requires exactly one or two arguments.`,\n ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n ImportJSONBindingNotDefault: \"A JSON module can only be imported with `default`.\",\n ImportReflectionHasAssertion: \"`import module x` cannot have assertions.\",\n ImportReflectionNotBinding: 'Only `import module x from \"./module\"` is valid.',\n IncompatibleRegExpUVFlags: \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n InvalidCodePoint: \"Code point out of bounds.\",\n InvalidCoverDiscardElement: \"'void' must be followed by an expression when not used in a binding position.\",\n InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n InvalidDecimal: \"Invalid decimal.\",\n InvalidDigit: ({\n radix\n }) => `Expected number in radix ${radix}.`,\n InvalidEscapeSequence: \"Bad character escape sequence.\",\n InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n InvalidEscapedReservedWord: ({\n reservedWord\n }) => `Escape sequence in keyword ${reservedWord}.`,\n InvalidIdentifier: ({\n identifierName\n }) => `Invalid identifier ${identifierName}.`,\n InvalidLhs: ({\n ancestor\n }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsBinding: ({\n ancestor\n }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsOptionalChaining: ({\n ancestor\n }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`,\n InvalidNumber: \"Invalid number.\",\n InvalidOrMissingExponent: \"Floating-point numbers require a valid exponent after the 'e'.\",\n InvalidOrUnexpectedToken: ({\n unexpected\n }) => `Unexpected character '${unexpected}'.`,\n InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n InvalidPrivateFieldResolution: ({\n identifierName\n }) => `Private name #${identifierName} is not defined.`,\n InvalidPropertyBindingPattern: \"Binding member expression.\",\n InvalidRecordProperty: \"Only properties and spread elements are allowed in record definitions.\",\n InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n LabelRedeclaration: ({\n labelName\n }) => `Label '${labelName}' is already declared.`,\n LetInLexicalBinding: \"'let' is disallowed as a lexically bound name.\",\n LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n MalformedRegExpFlags: \"Invalid regular expression flag.\",\n MissingClassName: \"A class name is required.\",\n MissingEqInAssignment: \"Only '=' operator can be used for specifying default value.\",\n MissingSemicolon: \"Missing semicolon.\",\n MissingPlugin: ({\n missingPlugin\n }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(\", \")}.`,\n MissingOneOfPlugins: ({\n missingPlugin\n }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(\", \")}.`,\n MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n MixingCoalesceWithLogical: \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n ModuleAttributeDifferentFromType: \"The only accepted module attribute is `type`.\",\n ModuleAttributeInvalidValue: \"Only string literals are allowed as module attribute values.\",\n ModuleAttributesWithDuplicateKeys: ({\n key\n }) => `Duplicate key \"${key}\" is not allowed in module attributes.`,\n ModuleExportNameHasLoneSurrogate: ({\n surrogateCharCode\n }) => `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(16)}'.`,\n ModuleExportUndefined: ({\n localName\n }) => `Export '${localName}' is not defined.`,\n MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n NewlineAfterThrow: \"Illegal newline after throw.\",\n NoCatchOrFinally: \"Missing catch or finally clause.\",\n NumberIdentifier: \"Identifier directly after number.\",\n NumericSeparatorInEscapeSequence: \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n ObsoleteAwaitStar: \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n OptionalChainingNoNew: \"Constructors in/after an Optional Chain are not allowed.\",\n OptionalChainingNoTemplate: \"Tagged Template Literals are not allowed in optionalChain.\",\n OverrideOnConstructor: \"'override' modifier cannot appear on a constructor declaration.\",\n ParamDupe: \"Argument name clash.\",\n PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n PatternHasMethod: \"Object pattern can't contain methods.\",\n PrivateInExpectedIn: ({\n identifierName\n }) => `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n PrivateNameRedeclaration: ({\n identifierName\n }) => `Duplicate private name #${identifierName}.`,\n RecordExpressionBarIncorrectEndSyntaxType: \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionBarIncorrectStartSyntaxType: \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionHashIncorrectStartSyntaxType: \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n SloppyFunction: \"In non-strict mode code, functions can only be declared at top level or inside a block.\",\n SloppyFunctionAnnexB: \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n SourcePhaseImportRequiresDefault: 'Only `import source x from \"./module\"` is valid.',\n StaticPrototype: \"Classes may not have static property named prototype.\",\n SuperNotAllowed: \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n SuperPrivateField: \"Private fields can't be accessed on super.\",\n TrailingDecorator: \"Decorators must be attached to a class element.\",\n TupleExpressionBarIncorrectEndSyntaxType: \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionBarIncorrectStartSyntaxType: \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionHashIncorrectStartSyntaxType: \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n UnexpectedAwaitAfterPipelineBody: 'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n UnexpectedImportExport: \"'import' and 'export' may only appear at the top level.\",\n UnexpectedKeyword: ({\n keyword\n }) => `Unexpected keyword '${keyword}'.`,\n UnexpectedLeadingDecorator: \"Leading decorators must be attached to a class declaration.\",\n UnexpectedLexicalDeclaration: \"Lexical declaration cannot appear in a single-statement context.\",\n UnexpectedNewTarget: \"`new.target` can only be used in functions or class properties.\",\n UnexpectedNumericSeparator: \"A numeric separator is only allowed between two digits.\",\n UnexpectedPrivateField: \"Unexpected private name.\",\n UnexpectedReservedWord: ({\n reservedWord\n }) => `Unexpected reserved word '${reservedWord}'.`,\n UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n UnexpectedToken: ({\n expected,\n unexpected\n }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${expected ? `, expected \"${expected}\"` : \"\"}`,\n UnexpectedTokenUnaryExponentiation: \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n UnexpectedUsingDeclaration: \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.\",\n UnexpectedVoidPattern: \"Unexpected void binding.\",\n UnsupportedBind: \"Binding should be performed on object property.\",\n UnsupportedDecoratorExport: \"A decorated export must export a class declaration.\",\n UnsupportedDefaultExport: \"Only expressions, functions or classes are allowed as the `default` export.\",\n UnsupportedImport: \"`import` can only be used in `import()` or `import.meta`.\",\n UnsupportedMetaProperty: ({\n target,\n onlyValidPropertyName\n }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n UnsupportedParameterDecorator: \"Decorators cannot be used to decorate parameters.\",\n UnsupportedPropertyDecorator: \"Decorators cannot be used to decorate object literal properties.\",\n UnsupportedSuper: \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n UnterminatedComment: \"Unterminated comment.\",\n UnterminatedRegExp: \"Unterminated regular expression.\",\n UnterminatedString: \"Unterminated string constant.\",\n UnterminatedTemplate: \"Unterminated template.\",\n UsingDeclarationExport: \"Using declaration cannot be exported.\",\n UsingDeclarationHasBindingPattern: \"Using declaration cannot have destructuring patterns.\",\n VarRedeclaration: ({\n identifierName\n }) => `Identifier '${identifierName}' has already been declared.`,\n VoidPatternCatchClauseParam: \"A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.\",\n VoidPatternInitializer: \"A void binding may not have an initializer.\",\n YieldBindingIdentifier: \"Can not use 'yield' as identifier inside a generator.\",\n YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n YieldNotInGeneratorFunction: \"'yield' is only allowed within generator functions.\",\n ZeroDigitNumericSeparator: \"Numeric separator can not be used after leading 0.\"\n};\nvar StrictModeErrors = {\n StrictDelete: \"Deleting local variable in strict mode.\",\n StrictEvalArguments: ({\n referenceName\n }) => `Assigning to '${referenceName}' in strict mode.`,\n StrictEvalArgumentsBinding: ({\n bindingName\n }) => `Binding '${bindingName}' in strict mode.`,\n StrictFunction: \"In strict mode code, functions can only be declared at top level or inside a block.\",\n StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n StrictWith: \"'with' in strict mode.\"\n};\nvar ParseExpressionErrors = {\n ParseExpressionEmptyInput: \"Unexpected parseExpression() input: The input is empty or contains only comments.\",\n ParseExpressionExpectsEOF: ({\n unexpected\n }) => `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \\`${String.fromCodePoint(unexpected)}\\`.`\n};\nconst UnparenthesizedPipeBodyDescriptions = new Set([\"ArrowFunctionExpression\", \"AssignmentExpression\", \"ConditionalExpression\", \"YieldExpression\"]);\nvar PipelineOperatorErrors = Object.assign({\n PipeBodyIsTighter: \"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n PipeTopicUnbound: \"Topic reference is unbound; it must be inside a pipe body.\",\n PipeTopicUnconfiguredToken: ({\n token\n }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n PipeTopicUnused: \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n PipeUnparenthesizedBody: ({\n type\n }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n type\n })}; please wrap it in parentheses.`\n}, {\n PipelineBodyNoArrow: 'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n PipelineBodySequenceExpression: \"Pipeline body may not be a comma-separated sequence expression.\",\n PipelineHeadSequenceExpression: \"Pipeline head should not be a comma-separated sequence expression.\",\n PipelineTopicUnused: \"Pipeline is in topic style but does not use topic reference.\",\n PrimaryTopicNotAllowed: \"Topic reference was used in a lexical context without topic binding.\",\n PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.'\n});\nconst _excluded = [\"message\"];\nfunction defineHidden(obj, key, value) {\n Object.defineProperty(obj, key, {\n enumerable: false,\n configurable: true,\n value\n });\n}\nfunction toParseErrorConstructor({\n toMessage,\n code,\n reasonCode,\n syntaxPlugin\n}) {\n const hasMissingPlugin = reasonCode === \"MissingPlugin\" || reasonCode === \"MissingOneOfPlugins\";\n const oldReasonCodes = {\n AccessorCannotDeclareThisParameter: \"AccesorCannotDeclareThisParameter\",\n AccessorCannotHaveTypeParameters: \"AccesorCannotHaveTypeParameters\",\n ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: \"ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference\",\n SetAccessorCannotHaveOptionalParameter: \"SetAccesorCannotHaveOptionalParameter\",\n SetAccessorCannotHaveRestParameter: \"SetAccesorCannotHaveRestParameter\",\n SetAccessorCannotHaveReturnType: \"SetAccesorCannotHaveReturnType\"\n };\n if (oldReasonCodes[reasonCode]) {\n reasonCode = oldReasonCodes[reasonCode];\n }\n return function constructor(loc, details) {\n const error = new SyntaxError();\n error.code = code;\n error.reasonCode = reasonCode;\n error.loc = loc;\n error.pos = loc.index;\n error.syntaxPlugin = syntaxPlugin;\n if (hasMissingPlugin) {\n error.missingPlugin = details.missingPlugin;\n }\n defineHidden(error, \"clone\", function clone(overrides = {}) {\n var _overrides$loc;\n const {\n line,\n column,\n index\n } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc;\n return constructor(new Position(line, column, index), Object.assign({}, details, overrides.details));\n });\n defineHidden(error, \"details\", details);\n Object.defineProperty(error, \"message\", {\n configurable: true,\n get() {\n const message = `${toMessage(details)} (${loc.line}:${loc.column})`;\n this.message = message;\n return message;\n },\n set(value) {\n Object.defineProperty(this, \"message\", {\n value,\n writable: true\n });\n }\n });\n return error;\n };\n}\nfunction ParseErrorEnum(argument, syntaxPlugin) {\n if (Array.isArray(argument)) {\n return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]);\n }\n const ParseErrorConstructors = {};\n for (const reasonCode of Object.keys(argument)) {\n const template = argument[reasonCode];\n const _ref = typeof template === \"string\" ? {\n message: () => template\n } : typeof template === \"function\" ? {\n message: template\n } : template,\n {\n message\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n const toMessage = typeof message === \"string\" ? () => message : message;\n ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({\n code: \"BABEL_PARSER_SYNTAX_ERROR\",\n reasonCode,\n toMessage\n }, syntaxPlugin ? {\n syntaxPlugin\n } : {}, rest));\n }\n return ParseErrorConstructors;\n}\nconst Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum(ParseExpressionErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors));\nfunction createDefaultOptions() {\n return {\n sourceType: \"script\",\n sourceFilename: undefined,\n startIndex: 0,\n startColumn: 0,\n startLine: 1,\n allowAwaitOutsideFunction: false,\n allowReturnOutsideFunction: false,\n allowNewTargetOutsideFunction: false,\n allowImportExportEverywhere: false,\n allowSuperOutsideMethod: false,\n allowUndeclaredExports: false,\n allowYieldOutsideFunction: false,\n plugins: [],\n strictMode: undefined,\n ranges: false,\n tokens: false,\n createImportExpressions: false,\n createParenthesizedExpressions: false,\n errorRecovery: false,\n attachComment: true,\n annexB: true\n };\n}\nfunction getOptions(opts) {\n const options = createDefaultOptions();\n if (opts == null) {\n return options;\n }\n if (opts.annexB != null && opts.annexB !== false) {\n throw new Error(\"The `annexB` option can only be set to `false`.\");\n }\n for (const key of Object.keys(options)) {\n if (opts[key] != null) options[key] = opts[key];\n }\n if (options.startLine === 1) {\n if (opts.startIndex == null && options.startColumn > 0) {\n options.startIndex = options.startColumn;\n } else if (opts.startColumn == null && options.startIndex > 0) {\n options.startColumn = options.startIndex;\n }\n } else if (opts.startColumn == null || opts.startIndex == null) {\n if (opts.startIndex != null) {\n throw new Error(\"With a `startLine > 1` you must also specify `startIndex` and `startColumn`.\");\n }\n }\n if (options.sourceType === \"commonjs\") {\n if (opts.allowAwaitOutsideFunction != null) {\n throw new Error(\"The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.\");\n }\n if (opts.allowReturnOutsideFunction != null) {\n throw new Error(\"`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.\");\n }\n if (opts.allowNewTargetOutsideFunction != null) {\n throw new Error(\"`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.\");\n }\n }\n return options;\n}\nconst {\n defineProperty\n} = Object;\nconst toUnenumerable = (object, key) => {\n if (object) {\n defineProperty(object, key, {\n enumerable: false,\n value: object[key]\n });\n }\n};\nfunction toESTreeLocation(node) {\n toUnenumerable(node.loc.start, \"index\");\n toUnenumerable(node.loc.end, \"index\");\n return node;\n}\nvar estree = superClass => class ESTreeParserMixin extends superClass {\n parse() {\n const file = toESTreeLocation(super.parse());\n if (this.optionFlags & 256) {\n file.tokens = file.tokens.map(toESTreeLocation);\n }\n return file;\n }\n parseRegExpLiteral({\n pattern,\n flags\n }) {\n let regex = null;\n try {\n regex = new RegExp(pattern, flags);\n } catch (_) {}\n const node = this.estreeParseLiteral(regex);\n node.regex = {\n pattern,\n flags\n };\n return node;\n }\n parseBigIntLiteral(value) {\n let bigInt;\n try {\n bigInt = BigInt(value);\n } catch (_unused) {\n bigInt = null;\n }\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n return node;\n }\n parseDecimalLiteral(value) {\n const decimal = null;\n const node = this.estreeParseLiteral(decimal);\n node.decimal = String(node.value || value);\n return node;\n }\n estreeParseLiteral(value) {\n return this.parseLiteral(value, \"Literal\");\n }\n parseStringLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n parseNumericLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n parseNullLiteral() {\n return this.estreeParseLiteral(null);\n }\n parseBooleanLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n estreeParseChainExpression(node, endLoc) {\n const chain = this.startNodeAtNode(node);\n chain.expression = node;\n return this.finishNodeAt(chain, \"ChainExpression\", endLoc);\n }\n directiveToStmt(directive) {\n const expression = directive.value;\n delete directive.value;\n this.castNodeTo(expression, \"Literal\");\n expression.raw = expression.extra.raw;\n expression.value = expression.extra.expressionValue;\n const stmt = this.castNodeTo(directive, \"ExpressionStatement\");\n stmt.expression = expression;\n stmt.directive = expression.extra.rawValue;\n delete expression.extra;\n return stmt;\n }\n fillOptionalPropertiesForTSESLint(node) {}\n cloneEstreeStringLiteral(node) {\n const {\n start,\n end,\n loc,\n range,\n raw,\n value\n } = node;\n const cloned = Object.create(node.constructor.prototype);\n cloned.type = \"Literal\";\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.raw = raw;\n cloned.value = value;\n return cloned;\n }\n initFunction(node, isAsync) {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n checkDeclaration(node) {\n if (node != null && this.isObjectProperty(node)) {\n this.checkDeclaration(node.value);\n } else {\n super.checkDeclaration(node);\n }\n }\n getObjectOrClassMethodParams(method) {\n return method.value.params;\n }\n isValidDirective(stmt) {\n var _stmt$expression$extr;\n return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"Literal\" && typeof stmt.expression.value === \"string\" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);\n }\n parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {\n super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse);\n const directiveStatements = node.directives.map(d => this.directiveToStmt(d));\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n parsePrivateName() {\n const node = super.parsePrivateName();\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return node;\n }\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n convertPrivateNameToPrivateIdentifier(node) {\n const name = super.getPrivateNameSV(node);\n delete node.id;\n node.name = name;\n return this.castNodeTo(node, \"PrivateIdentifier\");\n }\n isPrivateName(node) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.isPrivateName(node);\n }\n return node.type === \"PrivateIdentifier\";\n }\n getPrivateNameSV(node) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.getPrivateNameSV(node);\n }\n return node.name;\n }\n parseLiteral(value, type) {\n const node = super.parseLiteral(value, type);\n node.raw = node.extra.raw;\n delete node.extra;\n return node;\n }\n parseFunctionBody(node, allowExpression, isMethod = false) {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n let funcNode = this.startNode();\n funcNode.kind = node.kind;\n funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);\n delete funcNode.kind;\n const {\n typeParameters\n } = node;\n if (typeParameters) {\n delete node.typeParameters;\n funcNode.typeParameters = typeParameters;\n this.resetStartLocationFromNode(funcNode, typeParameters);\n }\n const valueNode = this.castNodeTo(funcNode, \"FunctionExpression\");\n node.value = valueNode;\n if (type === \"ClassPrivateMethod\") {\n node.computed = false;\n }\n if (type === \"ObjectMethod\") {\n if (node.kind === \"method\") {\n node.kind = \"init\";\n }\n node.shorthand = false;\n return this.finishNode(node, \"Property\");\n } else {\n return this.finishNode(node, \"MethodDefinition\");\n }\n }\n nameIsConstructor(key) {\n if (key.type === \"Literal\") return key.value === \"constructor\";\n return super.nameIsConstructor(key);\n }\n parseClassProperty(...args) {\n const propertyNode = super.parseClassProperty(...args);\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode;\n }\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n return propertyNode;\n }\n parseClassPrivateProperty(...args) {\n const propertyNode = super.parseClassPrivateProperty(...args);\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode;\n }\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n propertyNode.computed = false;\n return propertyNode;\n }\n parseClassAccessorProperty(node) {\n const accessorPropertyNode = super.parseClassAccessorProperty(node);\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return accessorPropertyNode;\n }\n if (accessorPropertyNode.abstract && this.hasPlugin(\"typescript\")) {\n delete accessorPropertyNode.abstract;\n this.castNodeTo(accessorPropertyNode, \"TSAbstractAccessorProperty\");\n } else {\n this.castNodeTo(accessorPropertyNode, \"AccessorProperty\");\n }\n return accessorPropertyNode;\n }\n parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {\n const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);\n if (node) {\n node.kind = \"init\";\n this.castNodeTo(node, \"Property\");\n }\n return node;\n }\n finishObjectProperty(node) {\n node.kind = \"init\";\n return this.finishNode(node, \"Property\");\n }\n isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {\n return type === \"Property\" ? \"value\" : super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding);\n }\n isAssignable(node, isBinding) {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n return super.isAssignable(node, isBinding);\n }\n toAssignable(node, isLHS = false) {\n if (node != null && this.isObjectProperty(node)) {\n const {\n key,\n value\n } = node;\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);\n }\n this.toAssignable(value, isLHS);\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n toAssignableObjectExpressionProp(prop, isLast, isLHS) {\n if (prop.type === \"Property\" && (prop.kind === \"get\" || prop.kind === \"set\")) {\n this.raise(Errors.PatternHasAccessor, prop.key);\n } else if (prop.type === \"Property\" && prop.method) {\n this.raise(Errors.PatternHasMethod, prop.key);\n } else {\n super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n }\n }\n finishCallExpression(unfinished, optional) {\n const node = super.finishCallExpression(unfinished, optional);\n if (node.callee.type === \"Import\") {\n var _ref, _ref2;\n this.castNodeTo(node, \"ImportExpression\");\n node.source = node.arguments[0];\n node.options = (_ref = node.arguments[1]) != null ? _ref : null;\n node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null;\n delete node.arguments;\n delete node.callee;\n } else if (node.type === \"OptionalCallExpression\") {\n this.castNodeTo(node, \"CallExpression\");\n } else {\n node.optional = false;\n }\n return node;\n }\n toReferencedArguments(node) {\n if (node.type === \"ImportExpression\") {\n return;\n }\n super.toReferencedArguments(node);\n }\n parseExport(unfinished, decorators) {\n const exportStartLoc = this.state.lastTokStartLoc;\n const node = super.parseExport(unfinished, decorators);\n switch (node.type) {\n case \"ExportAllDeclaration\":\n node.exported = null;\n break;\n case \"ExportNamedDeclaration\":\n if (node.specifiers.length === 1 && node.specifiers[0].type === \"ExportNamespaceSpecifier\") {\n this.castNodeTo(node, \"ExportAllDeclaration\");\n node.exported = node.specifiers[0].exported;\n delete node.specifiers;\n }\n case \"ExportDefaultDeclaration\":\n {\n var _declaration$decorato;\n const {\n declaration\n } = node;\n if ((declaration == null ? void 0 : declaration.type) === \"ClassDeclaration\" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) {\n this.resetStartLocation(node, exportStartLoc);\n }\n }\n break;\n }\n return node;\n }\n stopParseSubscript(base, state) {\n const node = super.stopParseSubscript(base, state);\n if (state.optionalChainMember) {\n return this.estreeParseChainExpression(node, base.loc.end);\n }\n return node;\n }\n parseMember(base, startLoc, state, computed, optional) {\n const node = super.parseMember(base, startLoc, state, computed, optional);\n if (node.type === \"OptionalMemberExpression\") {\n this.castNodeTo(node, \"MemberExpression\");\n } else {\n node.optional = false;\n }\n return node;\n }\n isOptionalMemberExpression(node) {\n if (node.type === \"ChainExpression\") {\n return node.expression.type === \"MemberExpression\";\n }\n return super.isOptionalMemberExpression(node);\n }\n hasPropertyAsPrivateName(node) {\n if (node.type === \"ChainExpression\") {\n node = node.expression;\n }\n return super.hasPropertyAsPrivateName(node);\n }\n isObjectProperty(node) {\n return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n }\n isObjectMethod(node) {\n return node.type === \"Property\" && (node.method || node.kind === \"get\" || node.kind === \"set\");\n }\n castNodeTo(node, type) {\n const result = super.castNodeTo(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n cloneIdentifier(node) {\n const cloned = super.cloneIdentifier(node);\n this.fillOptionalPropertiesForTSESLint(cloned);\n return cloned;\n }\n cloneStringLiteral(node) {\n if (node.type === \"Literal\") {\n return this.cloneEstreeStringLiteral(node);\n }\n return super.cloneStringLiteral(node);\n }\n finishNodeAt(node, type, endLoc) {\n return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n }\n finishNode(node, type) {\n const result = super.finishNode(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n resetStartLocation(node, startLoc) {\n super.resetStartLocation(node, startLoc);\n toESTreeLocation(node);\n }\n resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n super.resetEndLocation(node, endLoc);\n toESTreeLocation(node);\n }\n};\nclass TokContext {\n constructor(token, preserveSpace) {\n this.token = void 0;\n this.preserveSpace = void 0;\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n }\n}\nconst types = {\n brace: new TokContext(\"{\"),\n j_oTag: new TokContext(\"...\", true)\n};\ntypes.template = new TokContext(\"`\", true);\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\nclass ExportedTokenType {\n constructor(label, conf = {}) {\n this.label = void 0;\n this.keyword = void 0;\n this.beforeExpr = void 0;\n this.startsExpr = void 0;\n this.rightAssociative = void 0;\n this.isLoop = void 0;\n this.isAssign = void 0;\n this.prefix = void 0;\n this.postfix = void 0;\n this.binop = void 0;\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n this.updateContext = null;\n }\n}\nconst keywords$1 = new Map();\nfunction createKeyword(name, options = {}) {\n options.keyword = name;\n const token = createToken(name, options);\n keywords$1.set(name, token);\n return token;\n}\nfunction createBinop(name, binop) {\n return createToken(name, {\n beforeExpr,\n binop\n });\n}\nlet tokenTypeCounter = -1;\nconst tokenTypes = [];\nconst tokenLabels = [];\nconst tokenBinops = [];\nconst tokenBeforeExprs = [];\nconst tokenStartsExprs = [];\nconst tokenPrefixes = [];\nfunction createToken(name, options = {}) {\n var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);\n tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);\n tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);\n tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);\n tokenTypes.push(new ExportedTokenType(name, options));\n return tokenTypeCounter;\n}\nfunction createKeywordLike(name, options = {}) {\n var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;\n ++tokenTypeCounter;\n keywords$1.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);\n tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);\n tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);\n tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);\n tokenTypes.push(new ExportedTokenType(\"name\", options));\n return tokenTypeCounter;\n}\nconst tt = {\n bracketL: createToken(\"[\", {\n beforeExpr,\n startsExpr\n }),\n bracketHashL: createToken(\"#[\", {\n beforeExpr,\n startsExpr\n }),\n bracketBarL: createToken(\"[|\", {\n beforeExpr,\n startsExpr\n }),\n bracketR: createToken(\"]\"),\n bracketBarR: createToken(\"|]\"),\n braceL: createToken(\"{\", {\n beforeExpr,\n startsExpr\n }),\n braceBarL: createToken(\"{|\", {\n beforeExpr,\n startsExpr\n }),\n braceHashL: createToken(\"#{\", {\n beforeExpr,\n startsExpr\n }),\n braceR: createToken(\"}\"),\n braceBarR: createToken(\"|}\"),\n parenL: createToken(\"(\", {\n beforeExpr,\n startsExpr\n }),\n parenR: createToken(\")\"),\n comma: createToken(\",\", {\n beforeExpr\n }),\n semi: createToken(\";\", {\n beforeExpr\n }),\n colon: createToken(\":\", {\n beforeExpr\n }),\n doubleColon: createToken(\"::\", {\n beforeExpr\n }),\n dot: createToken(\".\"),\n question: createToken(\"?\", {\n beforeExpr\n }),\n questionDot: createToken(\"?.\"),\n arrow: createToken(\"=>\", {\n beforeExpr\n }),\n template: createToken(\"template\"),\n ellipsis: createToken(\"...\", {\n beforeExpr\n }),\n backQuote: createToken(\"`\", {\n startsExpr\n }),\n dollarBraceL: createToken(\"${\", {\n beforeExpr,\n startsExpr\n }),\n templateTail: createToken(\"...`\", {\n startsExpr\n }),\n templateNonTail: createToken(\"...${\", {\n beforeExpr,\n startsExpr\n }),\n at: createToken(\"@\"),\n hash: createToken(\"#\", {\n startsExpr\n }),\n interpreterDirective: createToken(\"#!...\"),\n eq: createToken(\"=\", {\n beforeExpr,\n isAssign\n }),\n assign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n slashAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n xorAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n moduloAssign: createToken(\"_=\", {\n beforeExpr,\n isAssign\n }),\n incDec: createToken(\"++/--\", {\n prefix,\n postfix,\n startsExpr\n }),\n bang: createToken(\"!\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n tilde: createToken(\"~\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n doubleCaret: createToken(\"^^\", {\n startsExpr\n }),\n doubleAt: createToken(\"@@\", {\n startsExpr\n }),\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 1),\n logicalAND: createBinop(\"&&\", 2),\n bitwiseOR: createBinop(\"|\", 3),\n bitwiseXOR: createBinop(\"^\", 4),\n bitwiseAND: createBinop(\"&\", 5),\n equality: createBinop(\"==/!=/===/!==\", 6),\n lt: createBinop(\">/<=/>=\", 7),\n gt: createBinop(\">/<=/>=\", 7),\n relational: createBinop(\">/<=/>=\", 7),\n bitShift: createBinop(\"<>>/>>>\", 8),\n bitShiftL: createBinop(\"<>>/>>>\", 8),\n bitShiftR: createBinop(\"<>>/>>>\", 8),\n plusMin: createToken(\"+/-\", {\n beforeExpr,\n binop: 9,\n prefix,\n startsExpr\n }),\n modulo: createToken(\"%\", {\n binop: 10,\n startsExpr\n }),\n star: createToken(\"*\", {\n binop: 10\n }),\n slash: createBinop(\"/\", 10),\n exponent: createToken(\"**\", {\n beforeExpr,\n binop: 11,\n rightAssociative: true\n }),\n _in: createKeyword(\"in\", {\n beforeExpr,\n binop: 7\n }),\n _instanceof: createKeyword(\"instanceof\", {\n beforeExpr,\n binop: 7\n }),\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", {\n beforeExpr\n }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", {\n beforeExpr\n }),\n _else: createKeyword(\"else\", {\n beforeExpr\n }),\n _finally: createKeyword(\"finally\"),\n _function: createKeyword(\"function\", {\n startsExpr\n }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", {\n beforeExpr\n }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", {\n beforeExpr,\n startsExpr\n }),\n _this: createKeyword(\"this\", {\n startsExpr\n }),\n _super: createKeyword(\"super\", {\n startsExpr\n }),\n _class: createKeyword(\"class\", {\n startsExpr\n }),\n _extends: createKeyword(\"extends\", {\n beforeExpr\n }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", {\n startsExpr\n }),\n _null: createKeyword(\"null\", {\n startsExpr\n }),\n _true: createKeyword(\"true\", {\n startsExpr\n }),\n _false: createKeyword(\"false\", {\n startsExpr\n }),\n _typeof: createKeyword(\"typeof\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _void: createKeyword(\"void\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _delete: createKeyword(\"delete\", {\n beforeExpr,\n prefix,\n startsExpr\n }),\n _do: createKeyword(\"do\", {\n isLoop,\n beforeExpr\n }),\n _for: createKeyword(\"for\", {\n isLoop\n }),\n _while: createKeyword(\"while\", {\n isLoop\n }),\n _as: createKeywordLike(\"as\", {\n startsExpr\n }),\n _assert: createKeywordLike(\"assert\", {\n startsExpr\n }),\n _async: createKeywordLike(\"async\", {\n startsExpr\n }),\n _await: createKeywordLike(\"await\", {\n startsExpr\n }),\n _defer: createKeywordLike(\"defer\", {\n startsExpr\n }),\n _from: createKeywordLike(\"from\", {\n startsExpr\n }),\n _get: createKeywordLike(\"get\", {\n startsExpr\n }),\n _let: createKeywordLike(\"let\", {\n startsExpr\n }),\n _meta: createKeywordLike(\"meta\", {\n startsExpr\n }),\n _of: createKeywordLike(\"of\", {\n startsExpr\n }),\n _sent: createKeywordLike(\"sent\", {\n startsExpr\n }),\n _set: createKeywordLike(\"set\", {\n startsExpr\n }),\n _source: createKeywordLike(\"source\", {\n startsExpr\n }),\n _static: createKeywordLike(\"static\", {\n startsExpr\n }),\n _using: createKeywordLike(\"using\", {\n startsExpr\n }),\n _yield: createKeywordLike(\"yield\", {\n startsExpr\n }),\n _asserts: createKeywordLike(\"asserts\", {\n startsExpr\n }),\n _checks: createKeywordLike(\"checks\", {\n startsExpr\n }),\n _exports: createKeywordLike(\"exports\", {\n startsExpr\n }),\n _global: createKeywordLike(\"global\", {\n startsExpr\n }),\n _implements: createKeywordLike(\"implements\", {\n startsExpr\n }),\n _intrinsic: createKeywordLike(\"intrinsic\", {\n startsExpr\n }),\n _infer: createKeywordLike(\"infer\", {\n startsExpr\n }),\n _is: createKeywordLike(\"is\", {\n startsExpr\n }),\n _mixins: createKeywordLike(\"mixins\", {\n startsExpr\n }),\n _proto: createKeywordLike(\"proto\", {\n startsExpr\n }),\n _require: createKeywordLike(\"require\", {\n startsExpr\n }),\n _satisfies: createKeywordLike(\"satisfies\", {\n startsExpr\n }),\n _keyof: createKeywordLike(\"keyof\", {\n startsExpr\n }),\n _readonly: createKeywordLike(\"readonly\", {\n startsExpr\n }),\n _unique: createKeywordLike(\"unique\", {\n startsExpr\n }),\n _abstract: createKeywordLike(\"abstract\", {\n startsExpr\n }),\n _declare: createKeywordLike(\"declare\", {\n startsExpr\n }),\n _enum: createKeywordLike(\"enum\", {\n startsExpr\n }),\n _module: createKeywordLike(\"module\", {\n startsExpr\n }),\n _namespace: createKeywordLike(\"namespace\", {\n startsExpr\n }),\n _interface: createKeywordLike(\"interface\", {\n startsExpr\n }),\n _type: createKeywordLike(\"type\", {\n startsExpr\n }),\n _opaque: createKeywordLike(\"opaque\", {\n startsExpr\n }),\n name: createToken(\"name\", {\n startsExpr\n }),\n placeholder: createToken(\"%%\", {\n startsExpr\n }),\n string: createToken(\"string\", {\n startsExpr\n }),\n num: createToken(\"num\", {\n startsExpr\n }),\n bigint: createToken(\"bigint\", {\n startsExpr\n }),\n decimal: createToken(\"decimal\", {\n startsExpr\n }),\n regexp: createToken(\"regexp\", {\n startsExpr\n }),\n privateName: createToken(\"#name\", {\n startsExpr\n }),\n eof: createToken(\"eof\"),\n jsxName: createToken(\"jsxName\"),\n jsxText: createToken(\"jsxText\", {\n beforeExpr\n }),\n jsxTagStart: createToken(\"jsxTagStart\", {\n startsExpr\n }),\n jsxTagEnd: createToken(\"jsxTagEnd\")\n};\nfunction tokenIsIdentifier(token) {\n return token >= 93 && token <= 133;\n}\nfunction tokenKeywordOrIdentifierIsKeyword(token) {\n return token <= 92;\n}\nfunction tokenIsKeywordOrIdentifier(token) {\n return token >= 58 && token <= 133;\n}\nfunction tokenIsLiteralPropertyName(token) {\n return token >= 58 && token <= 137;\n}\nfunction tokenComesBeforeExpression(token) {\n return tokenBeforeExprs[token];\n}\nfunction tokenCanStartExpression(token) {\n return tokenStartsExprs[token];\n}\nfunction tokenIsAssignment(token) {\n return token >= 29 && token <= 33;\n}\nfunction tokenIsFlowInterfaceOrTypeOrOpaque(token) {\n return token >= 129 && token <= 131;\n}\nfunction tokenIsLoop(token) {\n return token >= 90 && token <= 92;\n}\nfunction tokenIsKeyword(token) {\n return token >= 58 && token <= 92;\n}\nfunction tokenIsOperator(token) {\n return token >= 39 && token <= 59;\n}\nfunction tokenIsPostfix(token) {\n return token === 34;\n}\nfunction tokenIsPrefix(token) {\n return tokenPrefixes[token];\n}\nfunction tokenIsTSTypeOperator(token) {\n return token >= 121 && token <= 123;\n}\nfunction tokenIsTSDeclarationStart(token) {\n return token >= 124 && token <= 130;\n}\nfunction tokenLabelName(token) {\n return tokenLabels[token];\n}\nfunction tokenOperatorPrecedence(token) {\n return tokenBinops[token];\n}\nfunction tokenIsRightAssociative(token) {\n return token === 57;\n}\nfunction tokenIsTemplate(token) {\n return token >= 24 && token <= 25;\n}\nfunction getExportedToken(token) {\n return tokenTypes[token];\n}\ntokenTypes[8].updateContext = context => {\n context.pop();\n};\ntokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {\n context.push(types.brace);\n};\ntokenTypes[22].updateContext = context => {\n if (context[context.length - 1] === types.template) {\n context.pop();\n } else {\n context.push(types.template);\n }\n};\ntokenTypes[143].updateContext = context => {\n context.push(types.j_expr, types.j_oTag);\n};\nlet 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-\\u088f\\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\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\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-\\ua7dc\\ua7f1-\\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\";\nlet nonASCIIidentifierChars = \"\\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-\\u1add\\u1ae0-\\u1aeb\\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\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst 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, 7, 25, 39, 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, 5, 57, 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, 24, 43, 261, 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, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 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, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 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, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\nconst 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, 78, 5, 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, 199, 7, 137, 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, 55, 9, 266, 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, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\nfunction isIteratorStart(current, next, next2) {\n return current === 64 && next === 64 && isIdentifierStart(next2);\n}\nconst reservedWordLikeSet = new Set([\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\", \"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\", \"eval\", \"arguments\", \"enum\", \"await\"]);\nfunction canBeReservedWord(word) {\n return reservedWordLikeSet.has(word);\n}\nclass Scope {\n constructor(flags) {\n this.flags = 0;\n this.names = new Map();\n this.firstLexicalName = \"\";\n this.flags = flags;\n }\n}\nclass ScopeHandler {\n constructor(parser, inModule) {\n this.parser = void 0;\n this.scopeStack = [];\n this.inModule = void 0;\n this.undefinedExports = new Map();\n this.parser = parser;\n this.inModule = inModule;\n }\n get inTopLevel() {\n return (this.currentScope().flags & 1) > 0;\n }\n get inFunction() {\n return (this.currentVarScopeFlags() & 2) > 0;\n }\n get allowSuper() {\n return (this.currentThisScopeFlags() & 16) > 0;\n }\n get allowDirectSuper() {\n return (this.currentThisScopeFlags() & 32) > 0;\n }\n get allowNewTarget() {\n return (this.currentThisScopeFlags() & 512) > 0;\n }\n get inClass() {\n return (this.currentThisScopeFlags() & 64) > 0;\n }\n get inClassAndNotInNonArrowFunction() {\n const flags = this.currentThisScopeFlags();\n return (flags & 64) > 0 && (flags & 2) === 0;\n }\n get inStaticBlock() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n if (flags & 128) {\n return true;\n }\n if (flags & (1667 | 64)) {\n return false;\n }\n }\n }\n get inNonArrowFunction() {\n return (this.currentThisScopeFlags() & 2) > 0;\n }\n get inBareCaseStatement() {\n return (this.currentScope().flags & 256) > 0;\n }\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n createScope(flags) {\n return new Scope(flags);\n }\n enter(flags) {\n this.scopeStack.push(this.createScope(flags));\n }\n exit() {\n const scope = this.scopeStack.pop();\n return scope.flags;\n }\n treatFunctionsAsVarInScope(scope) {\n return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1);\n }\n declareName(name, bindingType, loc) {\n let scope = this.currentScope();\n if (bindingType & 8 || bindingType & 16) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n let type = scope.names.get(name) || 0;\n if (bindingType & 16) {\n type = type | 4;\n } else {\n if (!scope.firstLexicalName) {\n scope.firstLexicalName = name;\n }\n type = type | 2;\n }\n scope.names.set(name, type);\n if (bindingType & 8) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & 4) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n scope.names.set(name, (scope.names.get(name) || 0) | 1);\n this.maybeExportDefined(scope, name);\n if (scope.flags & 1667) break;\n }\n }\n if (this.parser.inModule && scope.flags & 1) {\n this.undefinedExports.delete(name);\n }\n }\n maybeExportDefined(scope, name) {\n if (this.parser.inModule && scope.flags & 1) {\n this.undefinedExports.delete(name);\n }\n }\n checkRedeclarationInScope(scope, name, bindingType, loc) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name\n });\n }\n }\n isRedeclaredInScope(scope, name, bindingType) {\n if (!(bindingType & 1)) return false;\n if (bindingType & 8) {\n return scope.names.has(name);\n }\n const type = scope.names.get(name) || 0;\n if (bindingType & 16) {\n return (type & 2) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & 1) > 0;\n }\n return (type & 2) > 0 && !(scope.flags & 8 && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & 4) > 0;\n }\n checkLocalExport(id) {\n const {\n name\n } = id;\n const topLevelScope = this.scopeStack[0];\n if (!topLevelScope.names.has(name)) {\n this.undefinedExports.set(name, id.loc.start);\n }\n }\n currentScope() {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n currentVarScopeFlags() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n if (flags & 1667) {\n return flags;\n }\n }\n }\n currentThisScopeFlags() {\n for (let i = this.scopeStack.length - 1;; i--) {\n const {\n flags\n } = this.scopeStack[i];\n if (flags & (1667 | 64) && !(flags & 4)) {\n return flags;\n }\n }\n }\n}\nclass FlowScope extends Scope {\n constructor(...args) {\n super(...args);\n this.declareFunctions = new Set();\n }\n}\nclass FlowScopeHandler extends ScopeHandler {\n createScope(flags) {\n return new FlowScope(flags);\n }\n declareName(name, bindingType, loc) {\n const scope = this.currentScope();\n if (bindingType & 2048) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n scope.declareFunctions.add(name);\n return;\n }\n super.declareName(name, bindingType, loc);\n }\n isRedeclaredInScope(scope, name, bindingType) {\n if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n if (bindingType & 2048 && !scope.declareFunctions.has(name)) {\n const type = scope.names.get(name);\n return (type & 4) > 0 || (type & 2) > 0;\n }\n return false;\n }\n checkLocalExport(id) {\n if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n super.checkLocalExport(id);\n }\n }\n}\nconst reservedTypes = new Set([\"_\", \"any\", \"bool\", \"boolean\", \"empty\", \"extends\", \"false\", \"interface\", \"mixed\", \"null\", \"number\", \"static\", \"string\", \"true\", \"typeof\", \"void\"]);\nconst FlowErrors = ParseErrorEnum`flow`({\n AmbiguousConditionalArrow: \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n AmbiguousDeclareModuleKind: \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n AssignReservedType: ({\n reservedType\n }) => `Cannot overwrite reserved type ${reservedType}.`,\n DeclareClassElement: \"The `declare` modifier can only appear on class fields.\",\n DeclareClassFieldInitializer: \"Initializers are not allowed in fields with the `declare` modifier.\",\n DuplicateDeclareModuleExports: \"Duplicate `declare module.exports` statement.\",\n EnumBooleanMemberNotInitialized: ({\n memberName,\n enumName\n }) => `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n EnumDuplicateMemberName: ({\n memberName,\n enumName\n }) => `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`,\n EnumInconsistentMemberValues: ({\n enumName\n }) => `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n EnumInvalidExplicitType: ({\n invalidEnumType,\n enumName\n }) => `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n EnumInvalidExplicitTypeUnknownSupplied: ({\n enumName\n }) => `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n EnumInvalidMemberInitializerPrimaryType: ({\n enumName,\n memberName,\n explicitType\n }) => `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`,\n EnumInvalidMemberInitializerSymbolType: ({\n enumName,\n memberName\n }) => `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`,\n EnumInvalidMemberInitializerUnknownType: ({\n enumName,\n memberName\n }) => `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`,\n EnumInvalidMemberName: ({\n enumName,\n memberName,\n suggestion\n }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n EnumNumberMemberNotInitialized: ({\n enumName,\n memberName\n }) => `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n EnumStringMemberInconsistentlyInitialized: ({\n enumName\n }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`,\n GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n ImportReflectionHasImportType: \"An `import module` declaration can not use `type` or `typeof` keyword.\",\n ImportTypeShorthandOnlyInPureImport: \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n InexactInsideExact: \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n InexactInsideNonObject: \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n InvalidNonTypeImportInDeclareModule: \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n MissingTypeParamDefault: \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n NestedDeclareModule: \"`declare module` cannot be used inside another `declare module`.\",\n NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n PatternIsOptional: Object.assign({\n message: \"A binding pattern parameter cannot be optional in an implementation signature.\"\n }, {\n reasonCode: \"OptionalBindingPattern\"\n }),\n SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n SpreadVariance: \"Spread properties cannot have variance.\",\n ThisParamAnnotationRequired: \"A type annotation is required for the `this` parameter.\",\n ThisParamBannedInConstructor: \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n ThisParamMustBeFirst: \"The `this` parameter must be the first function parameter.\",\n ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n TypeBeforeInitializer: \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeCastInPattern: \"The type cast expression is expected to be wrapped with parenthesis.\",\n UnexpectedExplicitInexactInObject: \"Explicit inexact syntax must appear at the end of an inexact object.\",\n UnexpectedReservedType: ({\n reservedType\n }) => `Unexpected reserved type ${reservedType}.`,\n UnexpectedReservedUnderscore: \"`_` is only allowed as a type argument to call or new.\",\n UnexpectedSpaceBetweenModuloChecks: \"Spaces between `%` and `checks` are not allowed here.\",\n UnexpectedSpreadType: \"Spread operator cannot appear in class or interface definitions.\",\n UnexpectedSubtractionOperand: 'Unexpected token, expected \"number\" or \"bigint\".',\n UnexpectedTokenAfterTypeParameter: \"Expected an arrow function after this type parameter declaration.\",\n UnexpectedTypeParameterBeforeAsyncArrowFunction: \"Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.\",\n UnsupportedDeclareExportKind: ({\n unsupportedExportKind,\n suggestion\n }) => `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`,\n UnsupportedStatementInDeclareModule: \"Only declares and type imports are allowed inside declare module.\",\n UnterminatedFlowComment: \"Unterminated flow-comment.\"\n});\nfunction isEsModuleType(bodyElement) {\n return bodyElement.type === \"DeclareExportAllDeclaration\" || bodyElement.type === \"DeclareExportDeclaration\" && (!bodyElement.declaration || bodyElement.declaration.type !== \"TypeAlias\" && bodyElement.declaration.type !== \"InterfaceDeclaration\");\n}\nfunction hasTypeImportKind(node) {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\nconst exportSuggestions = {\n const: \"declare export var\",\n let: \"declare export var\",\n type: \"export type\",\n interface: \"export interface\"\n};\nfunction partition(list, test) {\n const list1 = [];\n const list2 = [];\n for (let i = 0; i < list.length; i++) {\n (test(list[i], i, list) ? list1 : list2).push(list[i]);\n }\n return [list1, list2];\n}\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\nvar flow = superClass => class FlowParserMixin extends superClass {\n constructor(...args) {\n super(...args);\n this.flowPragma = undefined;\n }\n getScopeHandler() {\n return FlowScopeHandler;\n }\n shouldParseTypes() {\n return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n }\n finishToken(type, val) {\n if (type !== 134 && type !== 13 && type !== 28) {\n if (this.flowPragma === undefined) {\n this.flowPragma = null;\n }\n }\n super.finishToken(type, val);\n }\n addComment(comment) {\n if (this.flowPragma === undefined) {\n const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n if (!matches) ;else if (matches[1] === \"flow\") {\n this.flowPragma = \"flow\";\n } else if (matches[1] === \"noflow\") {\n this.flowPragma = \"noflow\";\n } else {\n throw new Error(\"Unexpected flow pragma\");\n }\n }\n super.addComment(comment);\n }\n flowParseTypeInitialiser(tok) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tok || 14);\n const type = this.flowParseType();\n this.state.inType = oldInType;\n return type;\n }\n flowParsePredicate() {\n const node = this.startNode();\n const moduloLoc = this.state.startLoc;\n this.next();\n this.expectContextual(110);\n if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {\n this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);\n }\n if (this.eat(10)) {\n node.value = super.parseExpression();\n this.expect(11);\n return this.finishNode(node, \"DeclaredPredicate\");\n } else {\n return this.finishNode(node, \"InferredPredicate\");\n }\n }\n flowParseTypeAndPredicateInitialiser() {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(14);\n let type = null;\n let predicate = null;\n if (this.match(54)) {\n this.state.inType = oldInType;\n predicate = this.flowParsePredicate();\n } else {\n type = this.flowParseType();\n this.state.inType = oldInType;\n if (this.match(54)) {\n predicate = this.flowParsePredicate();\n }\n }\n return [type, predicate];\n }\n flowParseDeclareClass(node) {\n this.next();\n this.flowParseInterfaceish(node, true);\n return this.finishNode(node, \"DeclareClass\");\n }\n flowParseDeclareFunction(node) {\n this.next();\n const id = node.id = this.parseIdentifier();\n const typeNode = this.startNode();\n const typeContainer = this.startNode();\n if (this.match(47)) {\n typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n typeNode.typeParameters = null;\n }\n this.expect(10);\n const tmp = this.flowParseFunctionTypeParams();\n typeNode.params = tmp.params;\n typeNode.rest = tmp.rest;\n typeNode.this = tmp._this;\n this.expect(11);\n [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n typeContainer.typeAnnotation = this.finishNode(typeNode, \"FunctionTypeAnnotation\");\n id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n this.resetEndLocation(id);\n this.semicolon();\n this.scope.declareName(node.id.name, 2048, node.id.loc.start);\n return this.finishNode(node, \"DeclareFunction\");\n }\n flowParseDeclare(node, insideModule) {\n if (this.match(80)) {\n return this.flowParseDeclareClass(node);\n } else if (this.match(68)) {\n return this.flowParseDeclareFunction(node);\n } else if (this.match(74)) {\n return this.flowParseDeclareVariable(node);\n } else if (this.eatContextual(127)) {\n if (this.match(16)) {\n return this.flowParseDeclareModuleExports(node);\n } else {\n if (insideModule) {\n this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc);\n }\n return this.flowParseDeclareModule(node);\n }\n } else if (this.isContextual(130)) {\n return this.flowParseDeclareTypeAlias(node);\n } else if (this.isContextual(131)) {\n return this.flowParseDeclareOpaqueType(node);\n } else if (this.isContextual(129)) {\n return this.flowParseDeclareInterface(node);\n } else if (this.match(82)) {\n return this.flowParseDeclareExportDeclaration(node, insideModule);\n }\n throw this.unexpected();\n }\n flowParseDeclareVariable(node) {\n this.next();\n node.id = this.flowParseTypeAnnotatableIdentifier(true);\n this.scope.declareName(node.id.name, 5, node.id.loc.start);\n this.semicolon();\n return this.finishNode(node, \"DeclareVariable\");\n }\n flowParseDeclareModule(node) {\n this.scope.enter(0);\n if (this.match(134)) {\n node.id = super.parseExprAtom();\n } else {\n node.id = this.parseIdentifier();\n }\n const bodyNode = node.body = this.startNode();\n const body = bodyNode.body = [];\n this.expect(5);\n while (!this.match(8)) {\n const bodyNode = this.startNode();\n if (this.match(83)) {\n this.next();\n if (!this.isContextual(130) && !this.match(87)) {\n this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc);\n }\n body.push(super.parseImport(bodyNode));\n } else {\n this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule);\n body.push(this.flowParseDeclare(bodyNode, true));\n }\n }\n this.scope.exit();\n this.expect(8);\n this.finishNode(bodyNode, \"BlockStatement\");\n let kind = null;\n let hasModuleExport = false;\n body.forEach(bodyElement => {\n if (isEsModuleType(bodyElement)) {\n if (kind === \"CommonJS\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"ES\";\n } else if (bodyElement.type === \"DeclareModuleExports\") {\n if (hasModuleExport) {\n this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);\n }\n if (kind === \"ES\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"CommonJS\";\n hasModuleExport = true;\n }\n });\n node.kind = kind || \"CommonJS\";\n return this.finishNode(node, \"DeclareModule\");\n }\n flowParseDeclareExportDeclaration(node, insideModule) {\n this.expect(82);\n if (this.eat(65)) {\n if (this.match(68) || this.match(80)) {\n node.declaration = this.flowParseDeclare(this.startNode());\n } else {\n node.declaration = this.flowParseType();\n this.semicolon();\n }\n node.default = true;\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else {\n if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) {\n const label = this.state.value;\n throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, {\n unsupportedExportKind: label,\n suggestion: exportSuggestions[label]\n });\n }\n if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) {\n node.declaration = this.flowParseDeclare(this.startNode());\n node.default = false;\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) {\n node = this.parseExport(node, null);\n if (node.type === \"ExportNamedDeclaration\") {\n node.default = false;\n delete node.exportKind;\n return this.castNodeTo(node, \"DeclareExportDeclaration\");\n } else {\n return this.castNodeTo(node, \"DeclareExportAllDeclaration\");\n }\n }\n }\n throw this.unexpected();\n }\n flowParseDeclareModuleExports(node) {\n this.next();\n this.expectContextual(111);\n node.typeAnnotation = this.flowParseTypeAnnotation();\n this.semicolon();\n return this.finishNode(node, \"DeclareModuleExports\");\n }\n flowParseDeclareTypeAlias(node) {\n this.next();\n const finished = this.flowParseTypeAlias(node);\n this.castNodeTo(finished, \"DeclareTypeAlias\");\n return finished;\n }\n flowParseDeclareOpaqueType(node) {\n this.next();\n const finished = this.flowParseOpaqueType(node, true);\n this.castNodeTo(finished, \"DeclareOpaqueType\");\n return finished;\n }\n flowParseDeclareInterface(node) {\n this.next();\n this.flowParseInterfaceish(node, false);\n return this.finishNode(node, \"DeclareInterface\");\n }\n flowParseInterfaceish(node, isClass) {\n node.id = this.flowParseRestrictedIdentifier(!isClass, true);\n this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start);\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n node.extends = [];\n if (this.eat(81)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (!isClass && this.eat(12));\n }\n if (isClass) {\n node.implements = [];\n node.mixins = [];\n if (this.eatContextual(117)) {\n do {\n node.mixins.push(this.flowParseInterfaceExtends());\n } while (this.eat(12));\n }\n if (this.eatContextual(113)) {\n do {\n node.implements.push(this.flowParseInterfaceExtends());\n } while (this.eat(12));\n }\n }\n node.body = this.flowParseObjectType({\n allowStatic: isClass,\n allowExact: false,\n allowSpread: false,\n allowProto: isClass,\n allowInexact: false\n });\n }\n flowParseInterfaceExtends() {\n const node = this.startNode();\n node.id = this.flowParseQualifiedTypeIdentifier();\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n return this.finishNode(node, \"InterfaceExtends\");\n }\n flowParseInterface(node) {\n this.flowParseInterfaceish(node, false);\n return this.finishNode(node, \"InterfaceDeclaration\");\n }\n checkNotUnderscore(word) {\n if (word === \"_\") {\n this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc);\n }\n }\n checkReservedType(word, startLoc, declaration) {\n if (!reservedTypes.has(word)) return;\n this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, {\n reservedType: word\n });\n }\n flowParseRestrictedIdentifier(liberal, declaration) {\n this.checkReservedType(this.state.value, this.state.startLoc, declaration);\n return this.parseIdentifier(liberal);\n }\n flowParseTypeAlias(node) {\n node.id = this.flowParseRestrictedIdentifier(false, true);\n this.scope.declareName(node.id.name, 8201, node.id.loc.start);\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n node.right = this.flowParseTypeInitialiser(29);\n this.semicolon();\n return this.finishNode(node, \"TypeAlias\");\n }\n flowParseOpaqueType(node, declare) {\n this.expectContextual(130);\n node.id = this.flowParseRestrictedIdentifier(true, true);\n this.scope.declareName(node.id.name, 8201, node.id.loc.start);\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n node.supertype = null;\n if (this.match(14)) {\n node.supertype = this.flowParseTypeInitialiser(14);\n }\n node.impltype = null;\n if (!declare) {\n node.impltype = this.flowParseTypeInitialiser(29);\n }\n this.semicolon();\n return this.finishNode(node, \"OpaqueType\");\n }\n flowParseTypeParameter(requireDefault = false) {\n const nodeStartLoc = this.state.startLoc;\n const node = this.startNode();\n const variance = this.flowParseVariance();\n const ident = this.flowParseTypeAnnotatableIdentifier();\n node.name = ident.name;\n node.variance = variance;\n node.bound = ident.typeAnnotation;\n if (this.match(29)) {\n this.eat(29);\n node.default = this.flowParseType();\n } else {\n if (requireDefault) {\n this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);\n }\n }\n return this.finishNode(node, \"TypeParameter\");\n }\n flowParseTypeParameterDeclaration() {\n const oldInType = this.state.inType;\n const node = this.startNode();\n node.params = [];\n this.state.inType = true;\n if (this.match(47) || this.match(143)) {\n this.next();\n } else {\n this.unexpected();\n }\n let defaultRequired = false;\n do {\n const typeParameter = this.flowParseTypeParameter(defaultRequired);\n node.params.push(typeParameter);\n if (typeParameter.default) {\n defaultRequired = true;\n }\n if (!this.match(48)) {\n this.expect(12);\n }\n } while (!this.match(48));\n this.expect(48);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterDeclaration\");\n }\n flowInTopLevelContext(cb) {\n if (this.curContext() !== types.brace) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n } else {\n return cb();\n }\n }\n flowParseTypeParameterInstantiationInExpression() {\n if (this.reScan_lt() !== 47) return;\n return this.flowParseTypeParameterInstantiation();\n }\n flowParseTypeParameterInstantiation() {\n const node = this.startNode();\n const oldInType = this.state.inType;\n this.state.inType = true;\n node.params = [];\n this.flowInTopLevelContext(() => {\n this.expect(47);\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = false;\n while (!this.match(48)) {\n node.params.push(this.flowParseType());\n if (!this.match(48)) {\n this.expect(12);\n }\n }\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n });\n this.state.inType = oldInType;\n if (!this.state.inType && this.curContext() === types.brace) {\n this.reScan_lt_gt();\n }\n this.expect(48);\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n flowParseTypeParameterInstantiationCallOrNew() {\n if (this.reScan_lt() !== 47) return null;\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n this.state.inType = true;\n this.expect(47);\n while (!this.match(48)) {\n node.params.push(this.flowParseTypeOrImplicitInstantiation());\n if (!this.match(48)) {\n this.expect(12);\n }\n }\n this.expect(48);\n this.state.inType = oldInType;\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n flowParseInterfaceType() {\n const node = this.startNode();\n this.expectContextual(129);\n node.extends = [];\n if (this.eat(81)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (this.eat(12));\n }\n node.body = this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: false,\n allowProto: false,\n allowInexact: false\n });\n return this.finishNode(node, \"InterfaceTypeAnnotation\");\n }\n flowParseObjectPropertyKey() {\n return this.match(135) || this.match(134) ? super.parseExprAtom() : this.parseIdentifier(true);\n }\n flowParseObjectTypeIndexer(node, isStatic, variance) {\n node.static = isStatic;\n if (this.lookahead().type === 14) {\n node.id = this.flowParseObjectPropertyKey();\n node.key = this.flowParseTypeInitialiser();\n } else {\n node.id = null;\n node.key = this.flowParseType();\n }\n this.expect(3);\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n return this.finishNode(node, \"ObjectTypeIndexer\");\n }\n flowParseObjectTypeInternalSlot(node, isStatic) {\n node.static = isStatic;\n node.id = this.flowParseObjectPropertyKey();\n this.expect(3);\n this.expect(3);\n if (this.match(47) || this.match(10)) {\n node.method = true;\n node.optional = false;\n node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));\n } else {\n node.method = false;\n if (this.eat(17)) {\n node.optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n }\n return this.finishNode(node, \"ObjectTypeInternalSlot\");\n }\n flowParseObjectTypeMethodish(node) {\n node.params = [];\n node.rest = null;\n node.typeParameters = null;\n node.this = null;\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n this.expect(10);\n if (this.match(78)) {\n node.this = this.flowParseFunctionTypeParam(true);\n node.this.name = null;\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n while (!this.match(11) && !this.match(21)) {\n node.params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n if (this.eat(21)) {\n node.rest = this.flowParseFunctionTypeParam(false);\n }\n this.expect(11);\n node.returnType = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n flowParseObjectTypeCallProperty(node, isStatic) {\n const valueNode = this.startNode();\n node.static = isStatic;\n node.value = this.flowParseObjectTypeMethodish(valueNode);\n return this.finishNode(node, \"ObjectTypeCallProperty\");\n }\n flowParseObjectType({\n allowStatic,\n allowExact,\n allowSpread,\n allowProto,\n allowInexact\n }) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const nodeStart = this.startNode();\n nodeStart.callProperties = [];\n nodeStart.properties = [];\n nodeStart.indexers = [];\n nodeStart.internalSlots = [];\n let endDelim;\n let exact;\n let inexact = false;\n if (allowExact && this.match(6)) {\n this.expect(6);\n endDelim = 9;\n exact = true;\n } else {\n this.expect(5);\n endDelim = 8;\n exact = false;\n }\n nodeStart.exact = exact;\n while (!this.match(endDelim)) {\n let isStatic = false;\n let protoStartLoc = null;\n let inexactStartLoc = null;\n const node = this.startNode();\n if (allowProto && this.isContextual(118)) {\n const lookahead = this.lookahead();\n if (lookahead.type !== 14 && lookahead.type !== 17) {\n this.next();\n protoStartLoc = this.state.startLoc;\n allowStatic = false;\n }\n }\n if (allowStatic && this.isContextual(106)) {\n const lookahead = this.lookahead();\n if (lookahead.type !== 14 && lookahead.type !== 17) {\n this.next();\n isStatic = true;\n }\n }\n const variance = this.flowParseVariance();\n if (this.eat(0)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (this.eat(0)) {\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));\n } else {\n nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));\n }\n } else if (this.match(10) || this.match(47)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));\n } else {\n let kind = \"init\";\n if (this.isContextual(99) || this.isContextual(104)) {\n const lookahead = this.lookahead();\n if (tokenIsLiteralPropertyName(lookahead.type)) {\n kind = this.state.value;\n this.next();\n }\n }\n const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);\n if (propOrInexact === null) {\n inexact = true;\n inexactStartLoc = this.state.lastTokStartLoc;\n } else {\n nodeStart.properties.push(propOrInexact);\n }\n }\n this.flowObjectTypeSemicolon();\n if (inexactStartLoc && !this.match(8) && !this.match(9)) {\n this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc);\n }\n }\n this.expect(endDelim);\n if (allowSpread) {\n nodeStart.inexact = inexact;\n }\n const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n this.state.inType = oldInType;\n return out;\n }\n flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) {\n if (this.eat(21)) {\n const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);\n if (isInexactToken) {\n if (!allowSpread) {\n this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc);\n } else if (!allowInexact) {\n this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc);\n }\n if (variance) {\n this.raise(FlowErrors.InexactVariance, variance);\n }\n return null;\n }\n if (!allowSpread) {\n this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc);\n }\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.raise(FlowErrors.SpreadVariance, variance);\n }\n node.argument = this.flowParseType();\n return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n } else {\n node.key = this.flowParseObjectPropertyKey();\n node.static = isStatic;\n node.proto = protoStartLoc != null;\n node.kind = kind;\n let optional = false;\n if (this.match(47) || this.match(10)) {\n node.method = true;\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));\n if (kind === \"get\" || kind === \"set\") {\n this.flowCheckGetterSetterParams(node);\n }\n if (!allowSpread && node.key.name === \"constructor\" && node.value.this) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, node.value.this);\n }\n } else {\n if (kind !== \"init\") this.unexpected();\n node.method = false;\n if (this.eat(17)) {\n optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n }\n node.optional = optional;\n return this.finishNode(node, \"ObjectTypeProperty\");\n }\n }\n flowCheckGetterSetterParams(property) {\n const paramCount = property.kind === \"get\" ? 0 : 1;\n const length = property.value.params.length + (property.value.rest ? 1 : 0);\n if (property.value.this) {\n this.raise(property.kind === \"get\" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, property.value.this);\n }\n if (length !== paramCount) {\n this.raise(property.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity, property);\n }\n if (property.kind === \"set\" && property.value.rest) {\n this.raise(Errors.BadSetterRestParameter, property);\n }\n }\n flowObjectTypeSemicolon() {\n if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {\n this.unexpected();\n }\n }\n flowParseQualifiedTypeIdentifier(startLoc, id) {\n startLoc != null ? startLoc : startLoc = this.state.startLoc;\n let node = id || this.flowParseRestrictedIdentifier(true);\n while (this.eat(16)) {\n const node2 = this.startNodeAt(startLoc);\n node2.qualification = node;\n node2.id = this.flowParseRestrictedIdentifier(true);\n node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n }\n return node;\n }\n flowParseGenericType(startLoc, id) {\n const node = this.startNodeAt(startLoc);\n node.typeParameters = null;\n node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n }\n return this.finishNode(node, \"GenericTypeAnnotation\");\n }\n flowParseTypeofType() {\n const node = this.startNode();\n this.expect(87);\n node.argument = this.flowParsePrimaryType();\n return this.finishNode(node, \"TypeofTypeAnnotation\");\n }\n flowParseTupleType() {\n const node = this.startNode();\n node.types = [];\n this.expect(0);\n while (this.state.pos < this.length && !this.match(3)) {\n node.types.push(this.flowParseType());\n if (this.match(3)) break;\n this.expect(12);\n }\n this.expect(3);\n return this.finishNode(node, \"TupleTypeAnnotation\");\n }\n flowParseFunctionTypeParam(first) {\n let name = null;\n let optional = false;\n let typeAnnotation = null;\n const node = this.startNode();\n const lh = this.lookahead();\n const isThis = this.state.type === 78;\n if (lh.type === 14 || lh.type === 17) {\n if (isThis && !first) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node);\n }\n name = this.parseIdentifier(isThis);\n if (this.eat(17)) {\n optional = true;\n if (isThis) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, node);\n }\n }\n typeAnnotation = this.flowParseTypeInitialiser();\n } else {\n typeAnnotation = this.flowParseType();\n }\n node.name = name;\n node.optional = optional;\n node.typeAnnotation = typeAnnotation;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n reinterpretTypeAsFunctionTypeParam(type) {\n const node = this.startNodeAt(type.loc.start);\n node.name = null;\n node.optional = false;\n node.typeAnnotation = type;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n flowParseFunctionTypeParams(params = []) {\n let rest = null;\n let _this = null;\n if (this.match(78)) {\n _this = this.flowParseFunctionTypeParam(true);\n _this.name = null;\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n while (!this.match(11) && !this.match(21)) {\n params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(11)) {\n this.expect(12);\n }\n }\n if (this.eat(21)) {\n rest = this.flowParseFunctionTypeParam(false);\n }\n return {\n params,\n rest,\n _this\n };\n }\n flowIdentToTypeAnnotation(startLoc, node, id) {\n switch (id.name) {\n case \"any\":\n return this.finishNode(node, \"AnyTypeAnnotation\");\n case \"bool\":\n case \"boolean\":\n return this.finishNode(node, \"BooleanTypeAnnotation\");\n case \"mixed\":\n return this.finishNode(node, \"MixedTypeAnnotation\");\n case \"empty\":\n return this.finishNode(node, \"EmptyTypeAnnotation\");\n case \"number\":\n return this.finishNode(node, \"NumberTypeAnnotation\");\n case \"string\":\n return this.finishNode(node, \"StringTypeAnnotation\");\n case \"symbol\":\n return this.finishNode(node, \"SymbolTypeAnnotation\");\n default:\n this.checkNotUnderscore(id.name);\n return this.flowParseGenericType(startLoc, id);\n }\n }\n flowParsePrimaryType() {\n const startLoc = this.state.startLoc;\n const node = this.startNode();\n let tmp;\n let type;\n let isGroupedType = false;\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n switch (this.state.type) {\n case 5:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: true,\n allowProto: false,\n allowInexact: true\n });\n case 6:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: true,\n allowSpread: true,\n allowProto: false,\n allowInexact: false\n });\n case 0:\n this.state.noAnonFunctionType = false;\n type = this.flowParseTupleType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n return type;\n case 47:\n {\n const node = this.startNode();\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n this.expect(10);\n tmp = this.flowParseFunctionTypeParams();\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(11);\n this.expect(19);\n node.returnType = this.flowParseType();\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n case 10:\n {\n const node = this.startNode();\n this.next();\n if (!this.match(11) && !this.match(21)) {\n if (tokenIsIdentifier(this.state.type) || this.match(78)) {\n const token = this.lookahead().type;\n isGroupedType = token !== 17 && token !== 14;\n } else {\n isGroupedType = true;\n }\n }\n if (isGroupedType) {\n this.state.noAnonFunctionType = false;\n type = this.flowParseType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {\n this.expect(11);\n return type;\n } else {\n this.eat(12);\n }\n }\n if (type) {\n tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);\n } else {\n tmp = this.flowParseFunctionTypeParams();\n }\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(11);\n this.expect(19);\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n case 134:\n return this.parseLiteral(this.state.value, \"StringLiteralTypeAnnotation\");\n case 85:\n case 86:\n node.value = this.match(85);\n this.next();\n return this.finishNode(node, \"BooleanLiteralTypeAnnotation\");\n case 53:\n if (this.state.value === \"-\") {\n this.next();\n if (this.match(135)) {\n return this.parseLiteralAtNode(-this.state.value, \"NumberLiteralTypeAnnotation\", node);\n }\n if (this.match(136)) {\n return this.parseLiteralAtNode(-this.state.value, \"BigIntLiteralTypeAnnotation\", node);\n }\n throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc);\n }\n throw this.unexpected();\n case 135:\n return this.parseLiteral(this.state.value, \"NumberLiteralTypeAnnotation\");\n case 136:\n return this.parseLiteral(this.state.value, \"BigIntLiteralTypeAnnotation\");\n case 88:\n this.next();\n return this.finishNode(node, \"VoidTypeAnnotation\");\n case 84:\n this.next();\n return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n case 78:\n this.next();\n return this.finishNode(node, \"ThisTypeAnnotation\");\n case 55:\n this.next();\n return this.finishNode(node, \"ExistsTypeAnnotation\");\n case 87:\n return this.flowParseTypeofType();\n default:\n if (tokenIsKeyword(this.state.type)) {\n const label = tokenLabelName(this.state.type);\n this.next();\n return super.createIdentifier(node, label);\n } else if (tokenIsIdentifier(this.state.type)) {\n if (this.isContextual(129)) {\n return this.flowParseInterfaceType();\n }\n return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier());\n }\n }\n throw this.unexpected();\n }\n flowParsePostfixType() {\n const startLoc = this.state.startLoc;\n let type = this.flowParsePrimaryType();\n let seenOptionalIndexedAccess = false;\n while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startLoc);\n const optional = this.eat(18);\n seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n this.expect(0);\n if (!optional && this.match(3)) {\n node.elementType = type;\n this.next();\n type = this.finishNode(node, \"ArrayTypeAnnotation\");\n } else {\n node.objectType = type;\n node.indexType = this.flowParseType();\n this.expect(3);\n if (seenOptionalIndexedAccess) {\n node.optional = optional;\n type = this.finishNode(node, \"OptionalIndexedAccessType\");\n } else {\n type = this.finishNode(node, \"IndexedAccessType\");\n }\n }\n }\n return type;\n }\n flowParsePrefixType() {\n const node = this.startNode();\n if (this.eat(17)) {\n node.typeAnnotation = this.flowParsePrefixType();\n return this.finishNode(node, \"NullableTypeAnnotation\");\n } else {\n return this.flowParsePostfixType();\n }\n }\n flowParseAnonFunctionWithoutParens() {\n const param = this.flowParsePrefixType();\n if (!this.state.noAnonFunctionType && this.eat(19)) {\n const node = this.startNodeAt(param.loc.start);\n node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n node.rest = null;\n node.this = null;\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n return param;\n }\n flowParseIntersectionType() {\n const node = this.startNode();\n this.eat(45);\n const type = this.flowParseAnonFunctionWithoutParens();\n node.types = [type];\n while (this.eat(45)) {\n node.types.push(this.flowParseAnonFunctionWithoutParens());\n }\n return node.types.length === 1 ? type : this.finishNode(node, \"IntersectionTypeAnnotation\");\n }\n flowParseUnionType() {\n const node = this.startNode();\n this.eat(43);\n const type = this.flowParseIntersectionType();\n node.types = [type];\n while (this.eat(43)) {\n node.types.push(this.flowParseIntersectionType());\n }\n return node.types.length === 1 ? type : this.finishNode(node, \"UnionTypeAnnotation\");\n }\n flowParseType() {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const type = this.flowParseUnionType();\n this.state.inType = oldInType;\n return type;\n }\n flowParseTypeOrImplicitInstantiation() {\n if (this.state.type === 132 && this.state.value === \"_\") {\n const startLoc = this.state.startLoc;\n const node = this.parseIdentifier();\n return this.flowParseGenericType(startLoc, node);\n } else {\n return this.flowParseType();\n }\n }\n flowParseTypeAnnotation() {\n const node = this.startNode();\n node.typeAnnotation = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {\n const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();\n if (this.match(14)) {\n ident.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(ident);\n }\n return ident;\n }\n typeCastToParameter(node) {\n node.expression.typeAnnotation = node.typeAnnotation;\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n return node.expression;\n }\n flowParseVariance() {\n let variance = null;\n if (this.match(53)) {\n variance = this.startNode();\n if (this.state.value === \"+\") {\n variance.kind = \"plus\";\n } else {\n variance.kind = \"minus\";\n }\n this.next();\n return this.finishNode(variance, \"Variance\");\n }\n return variance;\n }\n parseFunctionBody(node, allowExpressionBody, isMethod = false) {\n if (allowExpressionBody) {\n this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));\n return;\n }\n super.parseFunctionBody(node, false, isMethod);\n }\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n if (this.match(14)) {\n const typeNode = this.startNode();\n [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, \"TypeAnnotation\") : null;\n }\n return super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n parseStatementLike(flags) {\n if (this.state.strict && this.isContextual(129)) {\n const lookahead = this.lookahead();\n if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n const node = this.startNode();\n this.next();\n return this.flowParseInterface(node);\n }\n } else if (this.isContextual(126)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n const stmt = super.parseStatementLike(flags);\n if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n this.flowPragma = null;\n }\n return stmt;\n }\n parseExpressionStatement(node, expr, decorators) {\n if (expr.type === \"Identifier\") {\n if (expr.name === \"declare\") {\n if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) {\n return this.flowParseDeclare(node);\n }\n } else if (tokenIsIdentifier(this.state.type)) {\n if (expr.name === \"interface\") {\n return this.flowParseInterface(node);\n } else if (expr.name === \"type\") {\n return this.flowParseTypeAlias(node);\n } else if (expr.name === \"opaque\") {\n return this.flowParseOpaqueType(node, false);\n }\n }\n }\n return super.parseExpressionStatement(node, expr, decorators);\n }\n shouldParseExportDeclaration() {\n const {\n type\n } = this.state;\n if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return !this.state.containsEsc;\n }\n return super.shouldParseExportDeclaration();\n }\n isExportDefaultSpecifier() {\n const {\n type\n } = this.state;\n if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return this.state.containsEsc;\n }\n return super.isExportDefaultSpecifier();\n }\n parseExportDefaultExpression() {\n if (this.isContextual(126)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n return super.parseExportDefaultExpression();\n }\n parseConditional(expr, startLoc, refExpressionErrors) {\n if (!this.match(17)) return expr;\n if (this.state.maybeInArrowParameters) {\n const nextCh = this.lookaheadCharCode();\n if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {\n this.setOptionalParametersError(refExpressionErrors);\n return expr;\n }\n }\n this.expect(17);\n const state = this.state.clone();\n const originalNoArrowAt = this.state.noArrowAt;\n const node = this.startNodeAt(startLoc);\n let {\n consequent,\n failed\n } = this.tryParseConditionalConsequent();\n let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n if (failed || invalid.length > 0) {\n const noArrowAt = [...originalNoArrowAt];\n if (invalid.length > 0) {\n this.state = state;\n this.state.noArrowAt = noArrowAt;\n for (let i = 0; i < invalid.length; i++) {\n noArrowAt.push(invalid[i].start);\n }\n ({\n consequent,\n failed\n } = this.tryParseConditionalConsequent());\n [valid, invalid] = this.getArrowLikeExpressions(consequent);\n }\n if (failed && valid.length > 1) {\n this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);\n }\n if (failed && valid.length === 1) {\n this.state = state;\n noArrowAt.push(valid[0].start);\n this.state.noArrowAt = noArrowAt;\n ({\n consequent,\n failed\n } = this.tryParseConditionalConsequent());\n }\n }\n this.getArrowLikeExpressions(consequent, true);\n this.state.noArrowAt = originalNoArrowAt;\n this.expect(14);\n node.test = expr;\n node.consequent = consequent;\n node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined));\n return this.finishNode(node, \"ConditionalExpression\");\n }\n tryParseConditionalConsequent() {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n const consequent = this.parseMaybeAssignAllowIn();\n const failed = !this.match(14);\n this.state.noArrowParamsConversionAt.pop();\n return {\n consequent,\n failed\n };\n }\n getArrowLikeExpressions(node, disallowInvalid) {\n const stack = [node];\n const arrows = [];\n while (stack.length !== 0) {\n const node = stack.pop();\n if (node.type === \"ArrowFunctionExpression\" && node.body.type !== \"BlockStatement\") {\n if (node.typeParameters || !node.returnType) {\n this.finishArrowValidation(node);\n } else {\n arrows.push(node);\n }\n stack.push(node.body);\n } else if (node.type === \"ConditionalExpression\") {\n stack.push(node.consequent);\n stack.push(node.alternate);\n }\n }\n if (disallowInvalid) {\n arrows.forEach(node => this.finishArrowValidation(node));\n return [arrows, []];\n }\n return partition(arrows, node => node.params.every(param => this.isAssignable(param, true)));\n }\n finishArrowValidation(node) {\n var _node$extra;\n this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false);\n this.scope.enter(514 | 4);\n super.checkParams(node, false, true);\n this.scope.exit();\n }\n forwardNoArrowParamsConversionAt(node, parse) {\n let result;\n if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n result = parse();\n this.state.noArrowParamsConversionAt.pop();\n } else {\n result = parse();\n }\n return result;\n }\n parseParenItem(node, startLoc) {\n const newNode = super.parseParenItem(node, startLoc);\n if (this.eat(17)) {\n newNode.optional = true;\n this.resetEndLocation(node);\n }\n if (this.match(14)) {\n const typeCastNode = this.startNodeAt(startLoc);\n typeCastNode.expression = newNode;\n typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n return this.finishNode(typeCastNode, \"TypeCastExpression\");\n }\n return newNode;\n }\n assertModuleNodeAllowed(node) {\n if (node.type === \"ImportDeclaration\" && (node.importKind === \"type\" || node.importKind === \"typeof\") || node.type === \"ExportNamedDeclaration\" && node.exportKind === \"type\" || node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\") {\n return;\n }\n super.assertModuleNodeAllowed(node);\n }\n parseExportDeclaration(node) {\n if (this.isContextual(130)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n if (this.match(5)) {\n node.specifiers = this.parseExportSpecifiers(true);\n super.parseExportFrom(node);\n return null;\n } else {\n return this.flowParseTypeAlias(declarationNode);\n }\n } else if (this.isContextual(131)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseOpaqueType(declarationNode, false);\n } else if (this.isContextual(129)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseInterface(declarationNode);\n } else if (this.isContextual(126)) {\n node.exportKind = \"value\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(declarationNode);\n } else {\n return super.parseExportDeclaration(node);\n }\n }\n eatExportStar(node) {\n if (super.eatExportStar(node)) return true;\n if (this.isContextual(130) && this.lookahead().type === 55) {\n node.exportKind = \"type\";\n this.next();\n this.next();\n return true;\n }\n return false;\n }\n maybeParseExportNamespaceSpecifier(node) {\n const {\n startLoc\n } = this.state;\n const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n if (hasNamespace && node.exportKind === \"type\") {\n this.unexpected(startLoc);\n }\n return hasNamespace;\n }\n parseClassId(node, isStatement, optionalId) {\n super.parseClassId(node, isStatement, optionalId);\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n }\n parseClassMember(classBody, member, state) {\n const {\n startLoc\n } = this.state;\n if (this.isContextual(125)) {\n if (super.parseClassMemberFromModifier(classBody, member)) {\n return;\n }\n member.declare = true;\n }\n super.parseClassMember(classBody, member, state);\n if (member.declare) {\n if (member.type !== \"ClassProperty\" && member.type !== \"ClassPrivateProperty\" && member.type !== \"PropertyDefinition\") {\n this.raise(FlowErrors.DeclareClassElement, startLoc);\n } else if (member.value) {\n this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);\n }\n }\n }\n isIterator(word) {\n return word === \"iterator\" || word === \"asyncIterator\";\n }\n readIterator() {\n const word = super.readWord1();\n const fullWord = \"@@\" + word;\n if (!this.isIterator(word) || !this.state.inType) {\n this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {\n identifierName: fullWord\n });\n }\n this.finishToken(132, fullWord);\n }\n getTokenFromCode(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === 123 && next === 124) {\n this.finishOp(6, 2);\n } else if (this.state.inType && (code === 62 || code === 60)) {\n this.finishOp(code === 62 ? 48 : 47, 1);\n } else if (this.state.inType && code === 63) {\n if (next === 46) {\n this.finishOp(18, 2);\n } else {\n this.finishOp(17, 1);\n }\n } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {\n this.state.pos += 2;\n this.readIterator();\n } else {\n super.getTokenFromCode(code);\n }\n }\n isAssignable(node, isBinding) {\n if (node.type === \"TypeCastExpression\") {\n return this.isAssignable(node.expression, isBinding);\n } else {\n return super.isAssignable(node, isBinding);\n }\n }\n toAssignable(node, isLHS = false) {\n if (!isLHS && node.type === \"AssignmentExpression\" && node.left.type === \"TypeCastExpression\") {\n node.left = this.typeCastToParameter(node.left);\n }\n super.toAssignable(node, isLHS);\n }\n toAssignableList(exprList, trailingCommaLoc, isLHS) {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if ((expr == null ? void 0 : expr.type) === \"TypeCastExpression\") {\n exprList[i] = this.typeCastToParameter(expr);\n }\n }\n super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n }\n toReferencedList(exprList, isParenthesizedExpr) {\n for (let i = 0; i < exprList.length; i++) {\n var _expr$extra;\n const expr = exprList[i];\n if (expr && expr.type === \"TypeCastExpression\" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {\n this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);\n }\n }\n return exprList;\n }\n parseArrayLike(close, isTuple, refExpressionErrors) {\n const node = super.parseArrayLike(close, isTuple, refExpressionErrors);\n if (refExpressionErrors != null && !this.state.maybeInArrowParameters) {\n this.toReferencedList(node.elements);\n }\n return node;\n }\n isValidLVal(type, disallowCallExpression, isParenthesized, binding) {\n return type === \"TypeCastExpression\" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding);\n }\n parseClassProperty(node) {\n if (this.match(14)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassProperty(node);\n }\n parseClassPrivateProperty(node) {\n if (this.match(14)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassPrivateProperty(node);\n }\n isClassMethod() {\n return this.match(47) || super.isClassMethod();\n }\n isClassProperty() {\n return this.match(14) || super.isClassProperty();\n }\n isNonstaticConstructor(method) {\n return !this.match(14) && super.isNonstaticConstructor(method);\n }\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n if (method.variance) {\n this.unexpected(method.variance.loc.start);\n }\n delete method.variance;\n if (this.match(47)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n if (method.params && isConstructor) {\n const params = method.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n } else if (method.type === \"MethodDefinition\" && isConstructor && method.value.params) {\n const params = method.value.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n }\n }\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n if (method.variance) {\n this.unexpected(method.variance.loc.start);\n }\n delete method.variance;\n if (this.match(47)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n parseClassSuper(node) {\n super.parseClassSuper(node);\n if (node.superClass && (this.match(47) || this.match(51))) {\n node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression();\n }\n if (this.isContextual(113)) {\n this.next();\n const implemented = node.implements = [];\n do {\n const node = this.startNode();\n node.id = this.flowParseRestrictedIdentifier(true);\n if (this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n implemented.push(this.finishNode(node, \"ClassImplements\"));\n } while (this.eat(12));\n }\n }\n checkGetterSetterParams(method) {\n super.checkGetterSetterParams(method);\n const params = this.getObjectOrClassMethodParams(method);\n if (params.length > 0) {\n const param = params[0];\n if (this.isThisParam(param) && method.kind === \"get\") {\n this.raise(FlowErrors.GetterMayNotHaveThisParam, param);\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.SetterMayNotHaveThisParam, param);\n }\n }\n }\n parsePropertyNamePrefixOperator(node) {\n node.variance = this.flowParseVariance();\n }\n parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n if (prop.variance) {\n this.unexpected(prop.variance.loc.start);\n }\n delete prop.variance;\n let typeParameters;\n if (this.match(47) && !isAccessor) {\n typeParameters = this.flowParseTypeParameterDeclaration();\n if (!this.match(10)) this.unexpected();\n }\n const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);\n if (typeParameters) {\n (result.value || result).typeParameters = typeParameters;\n }\n return result;\n }\n parseFunctionParamType(param) {\n if (this.eat(17)) {\n if (param.type !== \"Identifier\") {\n this.raise(FlowErrors.PatternIsOptional, param);\n }\n if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, param);\n }\n param.optional = true;\n }\n if (this.match(14)) {\n param.typeAnnotation = this.flowParseTypeAnnotation();\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamAnnotationRequired, param);\n }\n if (this.match(29) && this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamNoDefault, param);\n }\n this.resetEndLocation(param);\n return param;\n }\n parseMaybeDefault(startLoc, left) {\n const node = super.parseMaybeDefault(startLoc, left);\n if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);\n }\n return node;\n }\n checkImportReflection(node) {\n super.checkImportReflection(node);\n if (node.module && node.importKind !== \"value\") {\n this.raise(FlowErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start);\n }\n }\n parseImportSpecifierLocal(node, specifier, type) {\n specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n isPotentialImportPhase(isExport) {\n if (super.isPotentialImportPhase(isExport)) return true;\n if (this.isContextual(130)) {\n if (!isExport) return true;\n const ch = this.lookaheadCharCode();\n return ch === 123 || ch === 42;\n }\n return !isExport && this.isContextual(87);\n }\n applyImportPhase(node, isExport, phase, loc) {\n super.applyImportPhase(node, isExport, phase, loc);\n if (isExport) {\n if (!phase && this.match(65)) {\n return;\n }\n node.exportKind = phase === \"type\" ? phase : \"value\";\n } else {\n if (phase === \"type\" && this.match(55)) this.unexpected();\n node.importKind = phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n }\n }\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {\n const firstIdent = specifier.imported;\n let specifierTypeKind = null;\n if (firstIdent.type === \"Identifier\") {\n if (firstIdent.name === \"type\") {\n specifierTypeKind = \"type\";\n } else if (firstIdent.name === \"typeof\") {\n specifierTypeKind = \"typeof\";\n }\n }\n let isBinding = false;\n if (this.isContextual(93) && !this.isLookaheadContextual(\"as\")) {\n const as_ident = this.parseIdentifier(true);\n if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {\n specifier.imported = as_ident;\n specifier.importKind = specifierTypeKind;\n specifier.local = this.cloneIdentifier(as_ident);\n } else {\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = this.parseIdentifier();\n }\n } else {\n if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {\n specifier.imported = this.parseIdentifier(true);\n specifier.importKind = specifierTypeKind;\n } else {\n if (importedIsString) {\n throw this.raise(Errors.ImportBindingIsString, specifier, {\n importName: firstIdent.value\n });\n }\n specifier.imported = firstIdent;\n specifier.importKind = null;\n }\n if (this.eatContextual(93)) {\n specifier.local = this.parseIdentifier();\n } else {\n isBinding = true;\n specifier.local = this.cloneIdentifier(specifier.imported);\n }\n }\n const specifierIsTypeImport = hasTypeImportKind(specifier);\n if (isInTypeOnlyImport && specifierIsTypeImport) {\n this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);\n }\n if (isInTypeOnlyImport || specifierIsTypeImport) {\n this.checkReservedType(specifier.local.name, specifier.local.loc.start, true);\n }\n if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true);\n }\n return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n }\n parseBindingAtom() {\n switch (this.state.type) {\n case 78:\n return this.parseIdentifier(true);\n default:\n return super.parseBindingAtom();\n }\n }\n parseFunctionParams(node, isConstructor) {\n const kind = node.kind;\n if (kind !== \"get\" && kind !== \"set\" && this.match(47)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.parseFunctionParams(node, isConstructor);\n }\n parseVarId(decl, kind) {\n super.parseVarId(decl, kind);\n if (this.match(14)) {\n decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(decl.id);\n }\n }\n parseAsyncArrowFromCallExpression(node, call) {\n if (this.match(14)) {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n node.returnType = this.flowParseTypeAnnotation();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n shouldParseAsyncArrow() {\n return this.match(14) || super.shouldParseAsyncArrow();\n }\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n var _jsx;\n let state = null;\n let jsx;\n if (this.hasPlugin(\"jsx\") && (this.match(143) || this.match(47))) {\n state = this.state.clone();\n jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);\n if (!jsx.error) return jsx.node;\n const {\n context\n } = this.state;\n const currentContext = context[context.length - 1];\n if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n context.pop();\n }\n }\n if ((_jsx = jsx) != null && _jsx.error || this.match(47)) {\n var _jsx2, _jsx3;\n state = state || this.state.clone();\n let typeParameters;\n const arrow = this.tryParse(abort => {\n var _arrowExpression$extr;\n typeParameters = this.flowParseTypeParameterDeclaration();\n const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => {\n const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n this.resetStartLocationFromNode(result, typeParameters);\n return result;\n });\n if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();\n const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n if (expr.type !== \"ArrowFunctionExpression\") abort();\n expr.typeParameters = typeParameters;\n this.resetStartLocationFromNode(expr, typeParameters);\n return arrowExpression;\n }, state);\n let arrowExpression = null;\n if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === \"ArrowFunctionExpression\") {\n if (!arrow.error && !arrow.aborted) {\n if (arrow.node.async) {\n this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters);\n }\n return arrow.node;\n }\n arrowExpression = arrow.node;\n }\n if ((_jsx2 = jsx) != null && _jsx2.node) {\n this.state = jsx.failState;\n return jsx.node;\n }\n if (arrowExpression) {\n this.state = arrow.failState;\n return arrowExpression;\n }\n if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters);\n }\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n parseArrow(node) {\n if (this.match(14)) {\n const result = this.tryParse(() => {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n const typeNode = this.startNode();\n [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n if (this.canInsertSemicolon()) this.unexpected();\n if (!this.match(19)) this.unexpected();\n return typeNode;\n });\n if (result.thrown) return null;\n if (result.error) this.state = result.failState;\n node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, \"TypeAnnotation\") : null;\n }\n return super.parseArrow(node);\n }\n shouldParseArrow(params) {\n return this.match(14) || super.shouldParseArrow(params);\n }\n setArrowFunctionParameters(node, params) {\n if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {\n node.params = params;\n } else {\n super.setArrowFunctionParameters(node, params);\n }\n }\n checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {\n if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) {\n return;\n }\n for (let i = 0; i < node.params.length; i++) {\n if (this.isThisParam(node.params[i]) && i > 0) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);\n }\n }\n super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged);\n }\n parseParenAndDistinguishExpression(canBeArrow) {\n return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start)));\n }\n parseSubscripts(base, startLoc, noCalls) {\n if (base.type === \"Identifier\" && base.name === \"async\" && this.state.noArrowAt.includes(startLoc.index)) {\n this.next();\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.arguments = super.parseCallExpressionArguments();\n base = this.finishNode(node, \"CallExpression\");\n } else if (base.type === \"Identifier\" && base.name === \"async\" && this.match(47)) {\n const state = this.state.clone();\n const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state);\n if (!arrow.error && !arrow.aborted) return arrow.node;\n const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state);\n if (result.node && !result.error) return result.node;\n if (arrow.node) {\n this.state = arrow.failState;\n return arrow.node;\n }\n if (result.node) {\n this.state = result.failState;\n return result.node;\n }\n throw arrow.error || result.error;\n }\n return super.parseSubscripts(base, startLoc, noCalls);\n }\n parseSubscript(base, startLoc, noCalls, subscriptState) {\n if (this.match(18) && this.isLookaheadToken_lt()) {\n subscriptState.optionalChainMember = true;\n if (noCalls) {\n subscriptState.stop = true;\n return base;\n }\n this.next();\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();\n this.expect(10);\n node.arguments = this.parseCallExpressionArguments();\n node.optional = true;\n return this.finishCallExpression(node, true);\n } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) {\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n const result = this.tryParse(() => {\n node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();\n this.expect(10);\n node.arguments = super.parseCallExpressionArguments();\n if (subscriptState.optionalChainMember) {\n node.optional = false;\n }\n return this.finishCallExpression(node, subscriptState.optionalChainMember);\n });\n if (result.node) {\n if (result.error) this.state = result.failState;\n return result.node;\n }\n }\n return super.parseSubscript(base, startLoc, noCalls, subscriptState);\n }\n parseNewCallee(node) {\n super.parseNewCallee(node);\n let targs = null;\n if (this.shouldParseTypes() && this.match(47)) {\n targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node;\n }\n node.typeArguments = targs;\n }\n parseAsyncArrowWithTypeParameters(startLoc) {\n const node = this.startNodeAt(startLoc);\n this.parseFunctionParams(node, false);\n if (!this.parseArrow(node)) return;\n return super.parseArrowExpression(node, undefined, true);\n }\n readToken_mult_modulo(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === 42 && next === 47 && this.state.hasFlowComment) {\n this.state.hasFlowComment = false;\n this.state.pos += 2;\n this.nextToken();\n return;\n }\n super.readToken_mult_modulo(code);\n }\n readToken_pipe_amp(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === 124 && next === 125) {\n this.finishOp(9, 2);\n return;\n }\n super.readToken_pipe_amp(code);\n }\n parseTopLevel(file, program) {\n const fileNode = super.parseTopLevel(file, program);\n if (this.state.hasFlowComment) {\n this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition());\n }\n return fileNode;\n }\n skipBlockComment() {\n if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n if (this.state.hasFlowComment) {\n throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);\n }\n this.hasFlowCommentCompletion();\n const commentSkip = this.skipFlowComment();\n if (commentSkip) {\n this.state.pos += commentSkip;\n this.state.hasFlowComment = true;\n }\n return;\n }\n return super.skipBlockComment(this.state.hasFlowComment ? \"*-/\" : \"*/\");\n }\n skipFlowComment() {\n const {\n pos\n } = this.state;\n let shiftToFirstNonWhiteSpace = 2;\n while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {\n shiftToFirstNonWhiteSpace++;\n }\n const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n if (ch2 === 58 && ch3 === 58) {\n return shiftToFirstNonWhiteSpace + 2;\n }\n if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === \"flow-include\") {\n return shiftToFirstNonWhiteSpace + 12;\n }\n if (ch2 === 58 && ch3 !== 58) {\n return shiftToFirstNonWhiteSpace;\n }\n return false;\n }\n hasFlowCommentCompletion() {\n const end = this.input.indexOf(\"*/\", this.state.pos);\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n }\n flowEnumErrorBooleanMemberNotInitialized(loc, {\n enumName,\n memberName\n }) {\n this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {\n memberName,\n enumName\n });\n }\n flowEnumErrorInvalidMemberInitializer(loc, enumContext) {\n return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === \"symbol\" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext);\n }\n flowEnumErrorNumberMemberNotInitialized(loc, details) {\n this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);\n }\n flowEnumErrorStringMemberInconsistentlyInitialized(node, details) {\n this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details);\n }\n flowEnumMemberInit() {\n const startLoc = this.state.startLoc;\n const endOfInit = () => this.match(12) || this.match(8);\n switch (this.state.type) {\n case 135:\n {\n const literal = this.parseNumericLiteral(this.state.value);\n if (endOfInit()) {\n return {\n type: \"number\",\n loc: literal.loc.start,\n value: literal\n };\n }\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n case 134:\n {\n const literal = this.parseStringLiteral(this.state.value);\n if (endOfInit()) {\n return {\n type: \"string\",\n loc: literal.loc.start,\n value: literal\n };\n }\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n case 85:\n case 86:\n {\n const literal = this.parseBooleanLiteral(this.match(85));\n if (endOfInit()) {\n return {\n type: \"boolean\",\n loc: literal.loc.start,\n value: literal\n };\n }\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n default:\n return {\n type: \"invalid\",\n loc: startLoc\n };\n }\n }\n flowEnumMemberRaw() {\n const loc = this.state.startLoc;\n const id = this.parseIdentifier(true);\n const init = this.eat(29) ? this.flowEnumMemberInit() : {\n type: \"none\",\n loc\n };\n return {\n id,\n init\n };\n }\n flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) {\n const {\n explicitType\n } = context;\n if (explicitType === null) {\n return;\n }\n if (explicitType !== expectedType) {\n this.flowEnumErrorInvalidMemberInitializer(loc, context);\n }\n }\n flowEnumMembers({\n enumName,\n explicitType\n }) {\n const seenNames = new Set();\n const members = {\n booleanMembers: [],\n numberMembers: [],\n stringMembers: [],\n defaultedMembers: []\n };\n let hasUnknownMembers = false;\n while (!this.match(8)) {\n if (this.eat(21)) {\n hasUnknownMembers = true;\n break;\n }\n const memberNode = this.startNode();\n const {\n id,\n init\n } = this.flowEnumMemberRaw();\n const memberName = id.name;\n if (memberName === \"\") {\n continue;\n }\n if (/^[a-z]/.test(memberName)) {\n this.raise(FlowErrors.EnumInvalidMemberName, id, {\n memberName,\n suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n enumName\n });\n }\n if (seenNames.has(memberName)) {\n this.raise(FlowErrors.EnumDuplicateMemberName, id, {\n memberName,\n enumName\n });\n }\n seenNames.add(memberName);\n const context = {\n enumName,\n explicitType,\n memberName\n };\n memberNode.id = id;\n switch (init.type) {\n case \"boolean\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"boolean\");\n memberNode.init = init.value;\n members.booleanMembers.push(this.finishNode(memberNode, \"EnumBooleanMember\"));\n break;\n }\n case \"number\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n memberNode.init = init.value;\n members.numberMembers.push(this.finishNode(memberNode, \"EnumNumberMember\"));\n break;\n }\n case \"string\":\n {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n memberNode.init = init.value;\n members.stringMembers.push(this.finishNode(memberNode, \"EnumStringMember\"));\n break;\n }\n case \"invalid\":\n {\n throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n }\n case \"none\":\n {\n switch (explicitType) {\n case \"boolean\":\n this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context);\n break;\n case \"number\":\n this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n break;\n default:\n members.defaultedMembers.push(this.finishNode(memberNode, \"EnumDefaultedMember\"));\n }\n }\n }\n if (!this.match(8)) {\n this.expect(12);\n }\n }\n return {\n members,\n hasUnknownMembers\n };\n }\n flowEnumStringMembers(initializedMembers, defaultedMembers, {\n enumName\n }) {\n if (initializedMembers.length === 0) {\n return defaultedMembers;\n } else if (defaultedMembers.length === 0) {\n return initializedMembers;\n } else if (defaultedMembers.length > initializedMembers.length) {\n for (const member of initializedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName\n });\n }\n return defaultedMembers;\n } else {\n for (const member of defaultedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName\n });\n }\n return initializedMembers;\n }\n }\n flowEnumParseExplicitType({\n enumName\n }) {\n if (!this.eatContextual(102)) return null;\n if (!tokenIsIdentifier(this.state.type)) {\n throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, {\n enumName\n });\n }\n const {\n value\n } = this.state;\n this.next();\n if (value !== \"boolean\" && value !== \"number\" && value !== \"string\" && value !== \"symbol\") {\n this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {\n enumName,\n invalidEnumType: value\n });\n }\n return value;\n }\n flowEnumBody(node, id) {\n const enumName = id.name;\n const nameLoc = id.loc.start;\n const explicitType = this.flowEnumParseExplicitType({\n enumName\n });\n this.expect(5);\n const {\n members,\n hasUnknownMembers\n } = this.flowEnumMembers({\n enumName,\n explicitType\n });\n node.hasUnknownMembers = hasUnknownMembers;\n switch (explicitType) {\n case \"boolean\":\n node.explicitType = true;\n node.members = members.booleanMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumBooleanBody\");\n case \"number\":\n node.explicitType = true;\n node.members = members.numberMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumNumberBody\");\n case \"string\":\n node.explicitType = true;\n node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n enumName\n });\n this.expect(8);\n return this.finishNode(node, \"EnumStringBody\");\n case \"symbol\":\n node.members = members.defaultedMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumSymbolBody\");\n default:\n {\n const empty = () => {\n node.members = [];\n this.expect(8);\n return this.finishNode(node, \"EnumStringBody\");\n };\n node.explicitType = false;\n const boolsLen = members.booleanMembers.length;\n const numsLen = members.numberMembers.length;\n const strsLen = members.stringMembers.length;\n const defaultedLen = members.defaultedMembers.length;\n if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n return empty();\n } else if (!boolsLen && !numsLen) {\n node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {\n enumName\n });\n this.expect(8);\n return this.finishNode(node, \"EnumStringBody\");\n } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name\n });\n }\n node.members = members.booleanMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumBooleanBody\");\n } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name\n });\n }\n node.members = members.numberMembers;\n this.expect(8);\n return this.finishNode(node, \"EnumNumberBody\");\n } else {\n this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {\n enumName\n });\n return empty();\n }\n }\n }\n }\n flowParseEnumDeclaration(node) {\n const id = this.parseIdentifier();\n node.id = id;\n node.body = this.flowEnumBody(this.startNode(), id);\n return this.finishNode(node, \"EnumDeclaration\");\n }\n jsxParseOpeningElementAfterName(node) {\n if (this.shouldParseTypes()) {\n if (this.match(47) || this.match(51)) {\n node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();\n }\n }\n return super.jsxParseOpeningElementAfterName(node);\n }\n isLookaheadToken_lt() {\n const next = this.nextTokenStart();\n if (this.input.charCodeAt(next) === 60) {\n const afterNext = this.input.charCodeAt(next + 1);\n return afterNext !== 60 && afterNext !== 61;\n }\n return false;\n }\n reScan_lt_gt() {\n const {\n type\n } = this.state;\n if (type === 47) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === 48) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n reScan_lt() {\n const {\n type\n } = this.state;\n if (type === 51) {\n this.state.pos -= 2;\n this.finishOp(47, 1);\n return 47;\n }\n return type;\n }\n maybeUnwrapTypeCastExpression(node) {\n return node.type === \"TypeCastExpression\" ? node.expression : node;\n }\n};\nconst entities = {\n __proto__: null,\n quot: \"\\u0022\",\n amp: \"&\",\n apos: \"\\u0027\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\u00A0\",\n iexcl: \"\\u00A1\",\n cent: \"\\u00A2\",\n pound: \"\\u00A3\",\n curren: \"\\u00A4\",\n yen: \"\\u00A5\",\n brvbar: \"\\u00A6\",\n sect: \"\\u00A7\",\n uml: \"\\u00A8\",\n copy: \"\\u00A9\",\n ordf: \"\\u00AA\",\n laquo: \"\\u00AB\",\n not: \"\\u00AC\",\n shy: \"\\u00AD\",\n reg: \"\\u00AE\",\n macr: \"\\u00AF\",\n deg: \"\\u00B0\",\n plusmn: \"\\u00B1\",\n sup2: \"\\u00B2\",\n sup3: \"\\u00B3\",\n acute: \"\\u00B4\",\n micro: \"\\u00B5\",\n para: \"\\u00B6\",\n middot: \"\\u00B7\",\n cedil: \"\\u00B8\",\n sup1: \"\\u00B9\",\n ordm: \"\\u00BA\",\n raquo: \"\\u00BB\",\n frac14: \"\\u00BC\",\n frac12: \"\\u00BD\",\n frac34: \"\\u00BE\",\n iquest: \"\\u00BF\",\n Agrave: \"\\u00C0\",\n Aacute: \"\\u00C1\",\n Acirc: \"\\u00C2\",\n Atilde: \"\\u00C3\",\n Auml: \"\\u00C4\",\n Aring: \"\\u00C5\",\n AElig: \"\\u00C6\",\n Ccedil: \"\\u00C7\",\n Egrave: \"\\u00C8\",\n Eacute: \"\\u00C9\",\n Ecirc: \"\\u00CA\",\n Euml: \"\\u00CB\",\n Igrave: \"\\u00CC\",\n Iacute: \"\\u00CD\",\n Icirc: \"\\u00CE\",\n Iuml: \"\\u00CF\",\n ETH: \"\\u00D0\",\n Ntilde: \"\\u00D1\",\n Ograve: \"\\u00D2\",\n Oacute: \"\\u00D3\",\n Ocirc: \"\\u00D4\",\n Otilde: \"\\u00D5\",\n Ouml: \"\\u00D6\",\n times: \"\\u00D7\",\n Oslash: \"\\u00D8\",\n Ugrave: \"\\u00D9\",\n Uacute: \"\\u00DA\",\n Ucirc: \"\\u00DB\",\n Uuml: \"\\u00DC\",\n Yacute: \"\\u00DD\",\n THORN: \"\\u00DE\",\n szlig: \"\\u00DF\",\n agrave: \"\\u00E0\",\n aacute: \"\\u00E1\",\n acirc: \"\\u00E2\",\n atilde: \"\\u00E3\",\n auml: \"\\u00E4\",\n aring: \"\\u00E5\",\n aelig: \"\\u00E6\",\n ccedil: \"\\u00E7\",\n egrave: \"\\u00E8\",\n eacute: \"\\u00E9\",\n ecirc: \"\\u00EA\",\n euml: \"\\u00EB\",\n igrave: \"\\u00EC\",\n iacute: \"\\u00ED\",\n icirc: \"\\u00EE\",\n iuml: \"\\u00EF\",\n eth: \"\\u00F0\",\n ntilde: \"\\u00F1\",\n ograve: \"\\u00F2\",\n oacute: \"\\u00F3\",\n ocirc: \"\\u00F4\",\n otilde: \"\\u00F5\",\n ouml: \"\\u00F6\",\n divide: \"\\u00F7\",\n oslash: \"\\u00F8\",\n ugrave: \"\\u00F9\",\n uacute: \"\\u00FA\",\n ucirc: \"\\u00FB\",\n uuml: \"\\u00FC\",\n yacute: \"\\u00FD\",\n thorn: \"\\u00FE\",\n yuml: \"\\u00FF\",\n OElig: \"\\u0152\",\n oelig: \"\\u0153\",\n Scaron: \"\\u0160\",\n scaron: \"\\u0161\",\n Yuml: \"\\u0178\",\n fnof: \"\\u0192\",\n circ: \"\\u02C6\",\n tilde: \"\\u02DC\",\n Alpha: \"\\u0391\",\n Beta: \"\\u0392\",\n Gamma: \"\\u0393\",\n Delta: \"\\u0394\",\n Epsilon: \"\\u0395\",\n Zeta: \"\\u0396\",\n Eta: \"\\u0397\",\n Theta: \"\\u0398\",\n Iota: \"\\u0399\",\n Kappa: \"\\u039A\",\n Lambda: \"\\u039B\",\n Mu: \"\\u039C\",\n Nu: \"\\u039D\",\n Xi: \"\\u039E\",\n Omicron: \"\\u039F\",\n Pi: \"\\u03A0\",\n Rho: \"\\u03A1\",\n Sigma: \"\\u03A3\",\n Tau: \"\\u03A4\",\n Upsilon: \"\\u03A5\",\n Phi: \"\\u03A6\",\n Chi: \"\\u03A7\",\n Psi: \"\\u03A8\",\n Omega: \"\\u03A9\",\n alpha: \"\\u03B1\",\n beta: \"\\u03B2\",\n gamma: \"\\u03B3\",\n delta: \"\\u03B4\",\n epsilon: \"\\u03B5\",\n zeta: \"\\u03B6\",\n eta: \"\\u03B7\",\n theta: \"\\u03B8\",\n iota: \"\\u03B9\",\n kappa: \"\\u03BA\",\n lambda: \"\\u03BB\",\n mu: \"\\u03BC\",\n nu: \"\\u03BD\",\n xi: \"\\u03BE\",\n omicron: \"\\u03BF\",\n pi: \"\\u03C0\",\n rho: \"\\u03C1\",\n sigmaf: \"\\u03C2\",\n sigma: \"\\u03C3\",\n tau: \"\\u03C4\",\n upsilon: \"\\u03C5\",\n phi: \"\\u03C6\",\n chi: \"\\u03C7\",\n psi: \"\\u03C8\",\n omega: \"\\u03C9\",\n thetasym: \"\\u03D1\",\n upsih: \"\\u03D2\",\n piv: \"\\u03D6\",\n ensp: \"\\u2002\",\n emsp: \"\\u2003\",\n thinsp: \"\\u2009\",\n zwnj: \"\\u200C\",\n zwj: \"\\u200D\",\n lrm: \"\\u200E\",\n rlm: \"\\u200F\",\n ndash: \"\\u2013\",\n mdash: \"\\u2014\",\n lsquo: \"\\u2018\",\n rsquo: \"\\u2019\",\n sbquo: \"\\u201A\",\n ldquo: \"\\u201C\",\n rdquo: \"\\u201D\",\n bdquo: \"\\u201E\",\n dagger: \"\\u2020\",\n Dagger: \"\\u2021\",\n bull: \"\\u2022\",\n hellip: \"\\u2026\",\n permil: \"\\u2030\",\n prime: \"\\u2032\",\n Prime: \"\\u2033\",\n lsaquo: \"\\u2039\",\n rsaquo: \"\\u203A\",\n oline: \"\\u203E\",\n frasl: \"\\u2044\",\n euro: \"\\u20AC\",\n image: \"\\u2111\",\n weierp: \"\\u2118\",\n real: \"\\u211C\",\n trade: \"\\u2122\",\n alefsym: \"\\u2135\",\n larr: \"\\u2190\",\n uarr: \"\\u2191\",\n rarr: \"\\u2192\",\n darr: \"\\u2193\",\n harr: \"\\u2194\",\n crarr: \"\\u21B5\",\n lArr: \"\\u21D0\",\n uArr: \"\\u21D1\",\n rArr: \"\\u21D2\",\n dArr: \"\\u21D3\",\n hArr: \"\\u21D4\",\n forall: \"\\u2200\",\n part: \"\\u2202\",\n exist: \"\\u2203\",\n empty: \"\\u2205\",\n nabla: \"\\u2207\",\n isin: \"\\u2208\",\n notin: \"\\u2209\",\n ni: \"\\u220B\",\n prod: \"\\u220F\",\n sum: \"\\u2211\",\n minus: \"\\u2212\",\n lowast: \"\\u2217\",\n radic: \"\\u221A\",\n prop: \"\\u221D\",\n infin: \"\\u221E\",\n ang: \"\\u2220\",\n and: \"\\u2227\",\n or: \"\\u2228\",\n cap: \"\\u2229\",\n cup: \"\\u222A\",\n int: \"\\u222B\",\n there4: \"\\u2234\",\n sim: \"\\u223C\",\n cong: \"\\u2245\",\n asymp: \"\\u2248\",\n ne: \"\\u2260\",\n equiv: \"\\u2261\",\n le: \"\\u2264\",\n ge: \"\\u2265\",\n sub: \"\\u2282\",\n sup: \"\\u2283\",\n nsub: \"\\u2284\",\n sube: \"\\u2286\",\n supe: \"\\u2287\",\n oplus: \"\\u2295\",\n otimes: \"\\u2297\",\n perp: \"\\u22A5\",\n sdot: \"\\u22C5\",\n lceil: \"\\u2308\",\n rceil: \"\\u2309\",\n lfloor: \"\\u230A\",\n rfloor: \"\\u230B\",\n lang: \"\\u2329\",\n rang: \"\\u232A\",\n loz: \"\\u25CA\",\n spades: \"\\u2660\",\n clubs: \"\\u2663\",\n hearts: \"\\u2665\",\n diams: \"\\u2666\"\n};\nconst lineBreak = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\nconst lineBreakG = new RegExp(lineBreak.source, \"g\");\nfunction isNewLine(code) {\n switch (code) {\n case 10:\n case 13:\n case 8232:\n case 8233:\n return true;\n default:\n return false;\n }\n}\nfunction hasNewLine(input, start, end) {\n for (let i = start; i < end; i++) {\n if (isNewLine(input.charCodeAt(i))) {\n return true;\n }\n }\n return false;\n}\nconst skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\nconst skipWhiteSpaceInLine = /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/g;\nfunction isWhitespace(code) {\n switch (code) {\n case 0x0009:\n case 0x000b:\n case 0x000c:\n case 32:\n case 160:\n case 5760:\n case 0x2000:\n case 0x2001:\n case 0x2002:\n case 0x2003:\n case 0x2004:\n case 0x2005:\n case 0x2006:\n case 0x2007:\n case 0x2008:\n case 0x2009:\n case 0x200a:\n case 0x202f:\n case 0x205f:\n case 0x3000:\n case 0xfeff:\n return true;\n default:\n return false;\n }\n}\nconst JsxErrors = ParseErrorEnum`jsx`({\n AttributeIsEmpty: \"JSX attributes must only be assigned a non-empty expression.\",\n MissingClosingTagElement: ({\n openingTagName\n }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`,\n MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n UnexpectedSequenceExpression: \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n UnexpectedToken: ({\n unexpected,\n HTMLEntity\n }) => `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`,\n UnsupportedJsxValue: \"JSX value should be either an expression or a quoted JSX text.\",\n UnterminatedJsxContent: \"Unterminated JSX contents.\",\n UnwrappedAdjacentJSXElements: \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...>?\"\n});\nfunction isFragment(object) {\n return object ? object.type === \"JSXOpeningFragment\" || object.type === \"JSXClosingFragment\" : false;\n}\nfunction getQualifiedJSXName(object) {\n if (object.type === \"JSXIdentifier\") {\n return object.name;\n }\n if (object.type === \"JSXNamespacedName\") {\n return object.namespace.name + \":\" + object.name.name;\n }\n if (object.type === \"JSXMemberExpression\") {\n return getQualifiedJSXName(object.object) + \".\" + getQualifiedJSXName(object.property);\n }\n throw new Error(\"Node had unexpected type: \" + object.type);\n}\nvar jsx = superClass => class JSXParserMixin extends superClass {\n jsxReadToken() {\n let out = \"\";\n let chunkStart = this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc);\n }\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case 60:\n case 123:\n if (this.state.pos === this.state.start) {\n if (ch === 60 && this.state.canStartJSXElement) {\n ++this.state.pos;\n this.finishToken(143);\n } else {\n super.getTokenFromCode(ch);\n }\n return;\n }\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(142, out);\n return;\n case 38:\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n break;\n case 62:\n case 125:\n default:\n if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(true);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n }\n jsxReadNewLine(normalizeCRLF) {\n const ch = this.input.charCodeAt(this.state.pos);\n let out;\n ++this.state.pos;\n if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {\n ++this.state.pos;\n out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n } else {\n out = String.fromCharCode(ch);\n }\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n return out;\n }\n jsxReadString(quote) {\n let out = \"\";\n let chunkStart = ++this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(Errors.UnterminatedString, this.state.startLoc);\n }\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n if (ch === 38) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(false);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos++);\n this.finishToken(134, out);\n }\n jsxReadEntity() {\n const startPos = ++this.state.pos;\n if (this.codePointAtPos(this.state.pos) === 35) {\n ++this.state.pos;\n let radix = 10;\n if (this.codePointAtPos(this.state.pos) === 120) {\n radix = 16;\n ++this.state.pos;\n }\n const codePoint = this.readInt(radix, undefined, false, \"bail\");\n if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) {\n ++this.state.pos;\n return String.fromCodePoint(codePoint);\n }\n } else {\n let count = 0;\n let semi = false;\n while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) {\n ++this.state.pos;\n }\n if (semi) {\n const desc = this.input.slice(startPos, this.state.pos);\n const entity = entities[desc];\n ++this.state.pos;\n if (entity) {\n return entity;\n }\n }\n }\n this.state.pos = startPos;\n return \"&\";\n }\n jsxReadWord() {\n let ch;\n const start = this.state.pos;\n do {\n ch = this.input.charCodeAt(++this.state.pos);\n } while (isIdentifierChar(ch) || ch === 45);\n this.finishToken(141, this.input.slice(start, this.state.pos));\n }\n jsxParseIdentifier() {\n const node = this.startNode();\n if (this.match(141)) {\n node.name = this.state.value;\n } else if (tokenIsKeyword(this.state.type)) {\n node.name = tokenLabelName(this.state.type);\n } else {\n this.unexpected();\n }\n this.next();\n return this.finishNode(node, \"JSXIdentifier\");\n }\n jsxParseNamespacedName() {\n const startLoc = this.state.startLoc;\n const name = this.jsxParseIdentifier();\n if (!this.eat(14)) return name;\n const node = this.startNodeAt(startLoc);\n node.namespace = name;\n node.name = this.jsxParseIdentifier();\n return this.finishNode(node, \"JSXNamespacedName\");\n }\n jsxParseElementName() {\n const startLoc = this.state.startLoc;\n let node = this.jsxParseNamespacedName();\n if (node.type === \"JSXNamespacedName\") {\n return node;\n }\n while (this.eat(16)) {\n const newNode = this.startNodeAt(startLoc);\n newNode.object = node;\n newNode.property = this.jsxParseIdentifier();\n node = this.finishNode(newNode, \"JSXMemberExpression\");\n }\n return node;\n }\n jsxParseAttributeValue() {\n let node;\n switch (this.state.type) {\n case 5:\n node = this.startNode();\n this.setContext(types.brace);\n this.next();\n node = this.jsxParseExpressionContainer(node, types.j_oTag);\n if (node.expression.type === \"JSXEmptyExpression\") {\n this.raise(JsxErrors.AttributeIsEmpty, node);\n }\n return node;\n case 143:\n case 134:\n return this.parseExprAtom();\n default:\n throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);\n }\n }\n jsxParseEmptyExpression() {\n const node = this.startNodeAt(this.state.lastTokEndLoc);\n return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n }\n jsxParseSpreadChild(node) {\n this.next();\n node.expression = this.parseExpression();\n this.setContext(types.j_expr);\n this.state.canStartJSXElement = true;\n this.expect(8);\n return this.finishNode(node, \"JSXSpreadChild\");\n }\n jsxParseExpressionContainer(node, previousContext) {\n if (this.match(8)) {\n node.expression = this.jsxParseEmptyExpression();\n } else {\n const expression = this.parseExpression();\n node.expression = expression;\n }\n this.setContext(previousContext);\n this.state.canStartJSXElement = true;\n this.expect(8);\n return this.finishNode(node, \"JSXExpressionContainer\");\n }\n jsxParseAttribute() {\n const node = this.startNode();\n if (this.match(5)) {\n this.setContext(types.brace);\n this.next();\n this.expect(21);\n node.argument = this.parseMaybeAssignAllowIn();\n this.setContext(types.j_oTag);\n this.state.canStartJSXElement = true;\n this.expect(8);\n return this.finishNode(node, \"JSXSpreadAttribute\");\n }\n node.name = this.jsxParseNamespacedName();\n node.value = this.eat(29) ? this.jsxParseAttributeValue() : null;\n return this.finishNode(node, \"JSXAttribute\");\n }\n jsxParseOpeningElementAt(startLoc) {\n const node = this.startNodeAt(startLoc);\n if (this.eat(144)) {\n return this.finishNode(node, \"JSXOpeningFragment\");\n }\n node.name = this.jsxParseElementName();\n return this.jsxParseOpeningElementAfterName(node);\n }\n jsxParseOpeningElementAfterName(node) {\n const attributes = [];\n while (!this.match(56) && !this.match(144)) {\n attributes.push(this.jsxParseAttribute());\n }\n node.attributes = attributes;\n node.selfClosing = this.eat(56);\n this.expect(144);\n return this.finishNode(node, \"JSXOpeningElement\");\n }\n jsxParseClosingElementAt(startLoc) {\n const node = this.startNodeAt(startLoc);\n if (this.eat(144)) {\n return this.finishNode(node, \"JSXClosingFragment\");\n }\n node.name = this.jsxParseElementName();\n this.expect(144);\n return this.finishNode(node, \"JSXClosingElement\");\n }\n jsxParseElementAt(startLoc) {\n const node = this.startNodeAt(startLoc);\n const children = [];\n const openingElement = this.jsxParseOpeningElementAt(startLoc);\n let closingElement = null;\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.state.type) {\n case 143:\n startLoc = this.state.startLoc;\n this.next();\n if (this.eat(56)) {\n closingElement = this.jsxParseClosingElementAt(startLoc);\n break contents;\n }\n children.push(this.jsxParseElementAt(startLoc));\n break;\n case 142:\n children.push(this.parseLiteral(this.state.value, \"JSXText\"));\n break;\n case 5:\n {\n const node = this.startNode();\n this.setContext(types.brace);\n this.next();\n if (this.match(21)) {\n children.push(this.jsxParseSpreadChild(node));\n } else {\n children.push(this.jsxParseExpressionContainer(node, types.j_expr));\n }\n break;\n }\n default:\n this.unexpected();\n }\n }\n if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {\n this.raise(JsxErrors.MissingClosingTagFragment, closingElement);\n } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name)\n });\n } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name)\n });\n }\n }\n }\n if (isFragment(openingElement)) {\n node.openingFragment = openingElement;\n node.closingFragment = closingElement;\n } else {\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n }\n node.children = children;\n if (this.match(47)) {\n throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc);\n }\n return isFragment(openingElement) ? this.finishNode(node, \"JSXFragment\") : this.finishNode(node, \"JSXElement\");\n }\n jsxParseElement() {\n const startLoc = this.state.startLoc;\n this.next();\n return this.jsxParseElementAt(startLoc);\n }\n setContext(newContext) {\n const {\n context\n } = this.state;\n context[context.length - 1] = newContext;\n }\n parseExprAtom(refExpressionErrors) {\n if (this.match(143)) {\n return this.jsxParseElement();\n } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) {\n this.replaceToken(143);\n return this.jsxParseElement();\n } else {\n return super.parseExprAtom(refExpressionErrors);\n }\n }\n skipSpace() {\n const curContext = this.curContext();\n if (!curContext.preserveSpace) super.skipSpace();\n }\n getTokenFromCode(code) {\n const context = this.curContext();\n if (context === types.j_expr) {\n this.jsxReadToken();\n return;\n }\n if (context === types.j_oTag || context === types.j_cTag) {\n if (isIdentifierStart(code)) {\n this.jsxReadWord();\n return;\n }\n if (code === 62) {\n ++this.state.pos;\n this.finishToken(144);\n return;\n }\n if ((code === 34 || code === 39) && context === types.j_oTag) {\n this.jsxReadString(code);\n return;\n }\n }\n if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {\n ++this.state.pos;\n this.finishToken(143);\n return;\n }\n super.getTokenFromCode(code);\n }\n updateContext(prevType) {\n const {\n context,\n type\n } = this.state;\n if (type === 56 && prevType === 143) {\n context.splice(-2, 2, types.j_cTag);\n this.state.canStartJSXElement = false;\n } else if (type === 143) {\n context.push(types.j_oTag);\n } else if (type === 144) {\n const out = context[context.length - 1];\n if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) {\n context.pop();\n this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;\n } else {\n this.setContext(types.j_expr);\n this.state.canStartJSXElement = true;\n }\n } else {\n this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n }\n }\n};\nclass TypeScriptScope extends Scope {\n constructor(...args) {\n super(...args);\n this.tsNames = new Map();\n }\n}\nclass TypeScriptScopeHandler extends ScopeHandler {\n constructor(...args) {\n super(...args);\n this.importsStack = [];\n }\n createScope(flags) {\n this.importsStack.push(new Set());\n return new TypeScriptScope(flags);\n }\n enter(flags) {\n if (flags === 1024) {\n this.importsStack.push(new Set());\n }\n super.enter(flags);\n }\n exit() {\n const flags = super.exit();\n if (flags === 1024) {\n this.importsStack.pop();\n }\n return flags;\n }\n hasImport(name, allowShadow) {\n const len = this.importsStack.length;\n if (this.importsStack[len - 1].has(name)) {\n return true;\n }\n if (!allowShadow && len > 1) {\n for (let i = 0; i < len - 1; i++) {\n if (this.importsStack[i].has(name)) return true;\n }\n }\n return false;\n }\n declareName(name, bindingType, loc) {\n if (bindingType & 4096) {\n if (this.hasImport(name, true)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name\n });\n }\n this.importsStack[this.importsStack.length - 1].add(name);\n return;\n }\n const scope = this.currentScope();\n let type = scope.tsNames.get(name) || 0;\n if (bindingType & 1024) {\n this.maybeExportDefined(scope, name);\n scope.tsNames.set(name, type | 16);\n return;\n }\n super.declareName(name, bindingType, loc);\n if (bindingType & 2) {\n if (!(bindingType & 1)) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n }\n type = type | 1;\n }\n if (bindingType & 256) {\n type = type | 2;\n }\n if (bindingType & 512) {\n type = type | 4;\n }\n if (bindingType & 128) {\n type = type | 8;\n }\n if (type) scope.tsNames.set(name, type);\n }\n isRedeclaredInScope(scope, name, bindingType) {\n const type = scope.tsNames.get(name);\n if ((type & 2) > 0) {\n if (bindingType & 256) {\n const isConst = !!(bindingType & 512);\n const wasConst = (type & 4) > 0;\n return isConst !== wasConst;\n }\n return true;\n }\n if (bindingType & 128 && (type & 8) > 0) {\n if (scope.names.get(name) & 2) {\n return !!(bindingType & 1);\n } else {\n return false;\n }\n }\n if (bindingType & 2 && (type & 1) > 0) {\n return true;\n }\n return super.isRedeclaredInScope(scope, name, bindingType);\n }\n checkLocalExport(id) {\n const {\n name\n } = id;\n if (this.hasImport(name)) return;\n const len = this.scopeStack.length;\n for (let i = len - 1; i >= 0; i--) {\n const scope = this.scopeStack[i];\n const type = scope.tsNames.get(name);\n if ((type & 1) > 0 || (type & 16) > 0) {\n return;\n }\n }\n super.checkLocalExport(id);\n }\n}\nclass ProductionParameterHandler {\n constructor() {\n this.stacks = [];\n }\n enter(flags) {\n this.stacks.push(flags);\n }\n exit() {\n this.stacks.pop();\n }\n currentFlags() {\n return this.stacks[this.stacks.length - 1];\n }\n get hasAwait() {\n return (this.currentFlags() & 2) > 0;\n }\n get hasYield() {\n return (this.currentFlags() & 1) > 0;\n }\n get hasReturn() {\n return (this.currentFlags() & 4) > 0;\n }\n get hasIn() {\n return (this.currentFlags() & 8) > 0;\n }\n}\nfunction functionFlags(isAsync, isGenerator) {\n return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0);\n}\nclass BaseParser {\n constructor() {\n this.sawUnambiguousESM = false;\n this.ambiguousScriptDifferentAst = false;\n }\n sourceToOffsetPos(sourcePos) {\n return sourcePos + this.startIndex;\n }\n offsetToSourcePos(offsetPos) {\n return offsetPos - this.startIndex;\n }\n hasPlugin(pluginConfig) {\n if (typeof pluginConfig === \"string\") {\n return this.plugins.has(pluginConfig);\n } else {\n const [pluginName, pluginOptions] = pluginConfig;\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n const actualOptions = this.plugins.get(pluginName);\n for (const key of Object.keys(pluginOptions)) {\n if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {\n return false;\n }\n }\n return true;\n }\n }\n getPluginOption(plugin, name) {\n var _this$plugins$get;\n return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];\n }\n}\nfunction setTrailingComments(node, comments) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n node.trailingComments.unshift(...comments);\n }\n}\nfunction setLeadingComments(node, comments) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n node.leadingComments.unshift(...comments);\n }\n}\nfunction setInnerComments(node, comments) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n node.innerComments.unshift(...comments);\n }\n}\nfunction adjustInnerComments(node, elements, commentWS) {\n let lastElement = null;\n let i = elements.length;\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\nclass CommentsParser extends BaseParser {\n addComment(comment) {\n if (this.filename) comment.loc.filename = this.filename;\n const {\n commentsLen\n } = this.state;\n if (this.comments.length !== commentsLen) {\n this.comments.length = commentsLen;\n }\n this.comments.push(comment);\n this.state.commentsLen++;\n }\n processComment(node) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n const lastCommentWS = commentStack[i];\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n const {\n start: nodeStart\n } = node;\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n if (commentEnd > nodeStart) {\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n break;\n }\n }\n }\n finalizeComment(commentWS) {\n var _node$options;\n const {\n comments\n } = commentWS;\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n const node = commentWS.containingNode;\n const commentStart = commentWS.start;\n if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) {\n switch (node.type) {\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n case \"ImportExpression\":\n adjustInnerComments(node, [node.source, (_node$options = node.options) != null ? _node$options : null], commentWS);\n break;\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ArrowFunctionExpression\":\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n adjustInnerComments(node, node.params, commentWS);\n break;\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n case \"TSEnumDeclaration\":\n adjustInnerComments(node, node.members, commentWS);\n break;\n case \"TSEnumBody\":\n adjustInnerComments(node, node.members, commentWS);\n break;\n default:\n {\n if (node.type === \"RecordExpression\") {\n adjustInnerComments(node, node.properties, commentWS);\n break;\n }\n if (node.type === \"TupleExpression\") {\n adjustInnerComments(node, node.elements, commentWS);\n break;\n }\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n finalizeRemainingComments() {\n const {\n commentStack\n } = this.state;\n for (let i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n this.state.commentStack = [];\n }\n resetPreviousNodeTrailingComments(node) {\n const {\n commentStack\n } = this.state;\n const {\n length\n } = commentStack;\n if (length === 0) return;\n const commentWS = commentStack[length - 1];\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n takeSurroundingComments(node, start, end) {\n const {\n commentStack\n } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n const commentStart = commentWS.start;\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n}\nclass State {\n constructor() {\n this.flags = 1024;\n this.startIndex = void 0;\n this.curLine = void 0;\n this.lineStart = void 0;\n this.startLoc = void 0;\n this.endLoc = void 0;\n this.errors = [];\n this.potentialArrowAt = -1;\n this.noArrowAt = [];\n this.noArrowParamsConversionAt = [];\n this.topicContext = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null\n };\n this.labels = [];\n this.commentsLen = 0;\n this.commentStack = [];\n this.pos = 0;\n this.type = 140;\n this.value = null;\n this.start = 0;\n this.end = 0;\n this.lastTokEndLoc = null;\n this.lastTokStartLoc = null;\n this.context = [types.brace];\n this.firstInvalidTemplateEscapePos = null;\n this.strictErrors = new Map();\n this.tokensLength = 0;\n }\n get strict() {\n return (this.flags & 1) > 0;\n }\n set strict(v) {\n if (v) this.flags |= 1;else this.flags &= -2;\n }\n init({\n strictMode,\n sourceType,\n startIndex,\n startLine,\n startColumn\n }) {\n this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === \"module\";\n this.startIndex = startIndex;\n this.curLine = startLine;\n this.lineStart = -startColumn;\n this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex);\n }\n get maybeInArrowParameters() {\n return (this.flags & 2) > 0;\n }\n set maybeInArrowParameters(v) {\n if (v) this.flags |= 2;else this.flags &= -3;\n }\n get inType() {\n return (this.flags & 4) > 0;\n }\n set inType(v) {\n if (v) this.flags |= 4;else this.flags &= -5;\n }\n get noAnonFunctionType() {\n return (this.flags & 8) > 0;\n }\n set noAnonFunctionType(v) {\n if (v) this.flags |= 8;else this.flags &= -9;\n }\n get hasFlowComment() {\n return (this.flags & 16) > 0;\n }\n set hasFlowComment(v) {\n if (v) this.flags |= 16;else this.flags &= -17;\n }\n get isAmbientContext() {\n return (this.flags & 32) > 0;\n }\n set isAmbientContext(v) {\n if (v) this.flags |= 32;else this.flags &= -33;\n }\n get inAbstractClass() {\n return (this.flags & 64) > 0;\n }\n set inAbstractClass(v) {\n if (v) this.flags |= 64;else this.flags &= -65;\n }\n get inDisallowConditionalTypesContext() {\n return (this.flags & 128) > 0;\n }\n set inDisallowConditionalTypesContext(v) {\n if (v) this.flags |= 128;else this.flags &= -129;\n }\n get soloAwait() {\n return (this.flags & 256) > 0;\n }\n set soloAwait(v) {\n if (v) this.flags |= 256;else this.flags &= -257;\n }\n get inFSharpPipelineDirectBody() {\n return (this.flags & 512) > 0;\n }\n set inFSharpPipelineDirectBody(v) {\n if (v) this.flags |= 512;else this.flags &= -513;\n }\n get canStartJSXElement() {\n return (this.flags & 1024) > 0;\n }\n set canStartJSXElement(v) {\n if (v) this.flags |= 1024;else this.flags &= -1025;\n }\n get containsEsc() {\n return (this.flags & 2048) > 0;\n }\n set containsEsc(v) {\n if (v) this.flags |= 2048;else this.flags &= -2049;\n }\n get hasTopLevelAwait() {\n return (this.flags & 4096) > 0;\n }\n set hasTopLevelAwait(v) {\n if (v) this.flags |= 4096;else this.flags &= -4097;\n }\n curPosition() {\n return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex);\n }\n clone() {\n const state = new State();\n state.flags = this.flags;\n state.startIndex = this.startIndex;\n state.curLine = this.curLine;\n state.lineStart = this.lineStart;\n state.startLoc = this.startLoc;\n state.endLoc = this.endLoc;\n state.errors = this.errors.slice();\n state.potentialArrowAt = this.potentialArrowAt;\n state.noArrowAt = this.noArrowAt.slice();\n state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();\n state.topicContext = this.topicContext;\n state.labels = this.labels.slice();\n state.commentsLen = this.commentsLen;\n state.commentStack = this.commentStack.slice();\n state.pos = this.pos;\n state.type = this.type;\n state.value = this.value;\n state.start = this.start;\n state.end = this.end;\n state.lastTokEndLoc = this.lastTokEndLoc;\n state.lastTokStartLoc = this.lastTokStartLoc;\n state.context = this.context.slice();\n state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;\n state.strictErrors = this.strictErrors;\n state.tokensLength = this.tokensLength;\n return state;\n }\n}\nvar _isDigit = function isDigit(code) {\n return code >= 48 && code <= 57;\n};\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),\n hex: new Set([46, 88, 95, 120])\n};\nconst isAllowedNumericSeparatorSibling = {\n bin: ch => ch === 48 || ch === 49,\n oct: ch => ch >= 48 && ch <= 55,\n dec: ch => ch >= 48 && ch <= 57,\n hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102\n};\nfunction readStringContents(type, input, pos, lineStart, curLine, errors) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const {\n length\n } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === 92) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(input, pos, lineStart, curLine, type === \"template\", errors);\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = {\n pos,\n lineStart,\n curLine\n };\n } else {\n out += res.ch;\n }\n ({\n pos,\n lineStart,\n curLine\n } = res);\n chunkStart = pos;\n } else if (ch === 8232 || ch === 8233) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === 10 || ch === 13) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (ch === 13 && input.charCodeAt(pos) === 10) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc\n };\n}\nfunction isStringEnd(type, ch, input, pos) {\n if (type === \"template\") {\n return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;\n }\n return ch === (type === \"double\" ? 34 : 39);\n}\nfunction readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {\n const throwOnInvalid = !inTemplate;\n pos++;\n const res = ch => ({\n pos,\n ch,\n lineStart,\n curLine\n });\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case 110:\n return res(\"\\n\");\n case 114:\n return res(\"\\r\");\n case 120:\n {\n let code;\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case 117:\n {\n let code;\n ({\n code,\n pos\n } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case 116:\n return res(\"\\t\");\n case 98:\n return res(\"\\b\");\n case 118:\n return res(\"\\u000b\");\n case 102:\n return res(\"\\f\");\n case 13:\n if (input.charCodeAt(pos) === 10) {\n ++pos;\n }\n case 10:\n lineStart = pos;\n ++curLine;\n case 8232:\n case 8233:\n return res(\"\");\n case 56:\n case 57:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n default:\n if (ch >= 48 && ch <= 55) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n let octalStr = match[0];\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (octalStr !== \"0\" || next === 56 || next === 57) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n return res(String.fromCharCode(octal));\n }\n return res(String.fromCharCode(ch));\n }\n}\nfunction readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {\n const initialPos = pos;\n let n;\n ({\n n,\n pos\n } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return {\n code: n,\n pos\n };\n}\nfunction readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {\n const start = pos;\n const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;\n let invalid = false;\n let total = 0;\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n if (code === 95 && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n if (!allowNumSeparator) {\n if (bailOnError) return {\n n: null,\n pos\n };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {\n if (bailOnError) return {\n n: null,\n pos\n };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n ++pos;\n continue;\n }\n if (code >= 97) {\n val = code - 97 + 10;\n } else if (code >= 65) {\n val = code - 65 + 10;\n } else if (_isDigit(code)) {\n val = code - 48;\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n if (val <= 9 && bailOnError) {\n return {\n n: null,\n pos\n };\n } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || len != null && pos - start !== len || invalid) {\n return {\n n: null,\n pos\n };\n }\n return {\n n: total,\n pos\n };\n}\nfunction readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {\n const ch = input.charCodeAt(pos);\n let code;\n if (ch === 123) {\n ++pos;\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, input.indexOf(\"}\", pos) - pos, true, throwOnInvalid, errors));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return {\n code: null,\n pos\n };\n }\n }\n } else {\n ({\n code,\n pos\n } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors));\n }\n return {\n code,\n pos\n };\n}\nfunction buildPosition(pos, lineStart, curLine) {\n return new Position(curLine, pos - lineStart, pos);\n}\nconst VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]);\nclass Token {\n constructor(state) {\n const startIndex = state.startIndex || 0;\n this.type = state.type;\n this.value = state.value;\n this.start = startIndex + state.start;\n this.end = startIndex + state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n}\nclass Tokenizer extends CommentsParser {\n constructor(options, input) {\n super();\n this.isLookahead = void 0;\n this.tokens = [];\n this.errorHandlers_readInt = {\n invalidDigit: (pos, lineStart, curLine, radix) => {\n if (!(this.optionFlags & 2048)) return false;\n this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {\n radix\n });\n return true;\n },\n numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence),\n unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator)\n };\n this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, {\n invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence),\n invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint)\n });\n this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, {\n strictNumericEscape: (pos, lineStart, curLine) => {\n this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine));\n },\n unterminated: (pos, lineStart, curLine) => {\n throw this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine));\n }\n });\n this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, {\n strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape),\n unterminated: (pos, lineStart, curLine) => {\n throw this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine));\n }\n });\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.comments = [];\n this.isLookahead = false;\n }\n pushToken(token) {\n this.tokens.length = this.state.tokensLength;\n this.tokens.push(token);\n ++this.state.tokensLength;\n }\n next() {\n this.checkKeywordEscapes();\n if (this.optionFlags & 256) {\n this.pushToken(new Token(this.state));\n }\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n eat(type) {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n match(type) {\n return this.state.type === type;\n }\n createLookaheadState(state) {\n return {\n pos: state.pos,\n value: null,\n type: state.type,\n start: state.start,\n end: state.end,\n context: [this.curContext()],\n inType: state.inType,\n startLoc: state.startLoc,\n lastTokEndLoc: state.lastTokEndLoc,\n curLine: state.curLine,\n lineStart: state.lineStart,\n curPosition: state.curPosition\n };\n }\n lookahead() {\n const old = this.state;\n this.state = this.createLookaheadState(old);\n this.isLookahead = true;\n this.nextToken();\n this.isLookahead = false;\n const curr = this.state;\n this.state = old;\n return curr;\n }\n nextTokenStart() {\n return this.nextTokenStartSince(this.state.pos);\n }\n nextTokenStartSince(pos) {\n skipWhiteSpace.lastIndex = pos;\n return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n }\n lookaheadCharCode() {\n return this.lookaheadCharCodeSince(this.state.pos);\n }\n lookaheadCharCodeSince(pos) {\n return this.input.charCodeAt(this.nextTokenStartSince(pos));\n }\n nextTokenInLineStart() {\n return this.nextTokenInLineStartSince(this.state.pos);\n }\n nextTokenInLineStartSince(pos) {\n skipWhiteSpaceInLine.lastIndex = pos;\n return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos;\n }\n lookaheadInLineCharCode() {\n return this.input.charCodeAt(this.nextTokenInLineStart());\n }\n codePointAtPos(pos) {\n let cp = this.input.charCodeAt(pos);\n if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n const trail = this.input.charCodeAt(pos);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n return cp;\n }\n setStrict(strict) {\n this.state.strict = strict;\n if (strict) {\n this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, at));\n this.state.strictErrors.clear();\n }\n }\n curContext() {\n return this.state.context[this.state.context.length - 1];\n }\n nextToken() {\n this.skipSpace();\n this.state.start = this.state.pos;\n if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n if (this.state.pos >= this.length) {\n this.finishToken(140);\n return;\n }\n this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n }\n skipBlockComment(commentEnd) {\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(commentEnd, start + 2);\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n this.state.pos = end + commentEnd.length;\n lineBreakG.lastIndex = start + 2;\n while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n ++this.state.curLine;\n this.state.lineStart = lineBreakG.lastIndex;\n }\n if (this.isLookahead) return;\n const comment = {\n type: \"CommentBlock\",\n value: this.input.slice(start + 2, end),\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end + commentEnd.length),\n loc: new SourceLocation(startLoc, this.state.curPosition())\n };\n if (this.optionFlags & 256) this.pushToken(comment);\n return comment;\n }\n skipLineComment(startSkip) {\n const start = this.state.pos;\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt(this.state.pos += startSkip);\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n if (this.isLookahead) return;\n const end = this.state.pos;\n const value = this.input.slice(start + startSkip, end);\n const comment = {\n type: \"CommentLine\",\n value,\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end),\n loc: new SourceLocation(startLoc, this.state.curPosition())\n };\n if (this.optionFlags & 256) this.pushToken(comment);\n return comment;\n }\n skipSpace() {\n const spaceStart = this.state.pos;\n const comments = this.optionFlags & 4096 ? [] : null;\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case 32:\n case 160:\n case 9:\n ++this.state.pos;\n break;\n case 13:\n if (this.input.charCodeAt(this.state.pos + 1) === 10) {\n ++this.state.pos;\n }\n case 10:\n case 8232:\n case 8233:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n case 47:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case 42:\n {\n const comment = this.skipBlockComment(\"*/\");\n if (comment !== undefined) {\n this.addComment(comment);\n comments == null || comments.push(comment);\n }\n break;\n }\n case 47:\n {\n const comment = this.skipLineComment(2);\n if (comment !== undefined) {\n this.addComment(comment);\n comments == null || comments.push(comment);\n }\n break;\n }\n default:\n break loop;\n }\n break;\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else if (ch === 45 && !this.inModule && this.optionFlags & 8192) {\n const pos = this.state.pos;\n if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {\n const comment = this.skipLineComment(3);\n if (comment !== undefined) {\n this.addComment(comment);\n comments == null || comments.push(comment);\n }\n } else {\n break loop;\n }\n } else if (ch === 60 && !this.inModule && this.optionFlags & 8192) {\n const pos = this.state.pos;\n if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {\n const comment = this.skipLineComment(4);\n if (comment !== undefined) {\n this.addComment(comment);\n comments == null || comments.push(comment);\n }\n } else {\n break loop;\n }\n } else {\n break loop;\n }\n }\n }\n if ((comments == null ? void 0 : comments.length) > 0) {\n const end = this.state.pos;\n const commentWhitespace = {\n start: this.sourceToOffsetPos(spaceStart),\n end: this.sourceToOffsetPos(end),\n comments: comments,\n leadingNode: null,\n trailingNode: null,\n containingNode: null\n };\n this.state.commentStack.push(commentWhitespace);\n }\n }\n finishToken(type, val) {\n this.state.end = this.state.pos;\n this.state.endLoc = this.state.curPosition();\n const prevType = this.state.type;\n this.state.type = type;\n this.state.value = val;\n if (!this.isLookahead) {\n this.updateContext(prevType);\n }\n }\n replaceToken(type) {\n this.state.type = type;\n this.updateContext();\n }\n readToken_numberSign() {\n if (this.state.pos === 0 && this.readToken_interpreter()) {\n return;\n }\n const nextPos = this.state.pos + 1;\n const next = this.codePointAtPos(nextPos);\n if (next >= 48 && next <= 57) {\n throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition());\n }\n if (next === 123 || next === 91 && this.hasPlugin(\"recordAndTuple\")) {\n this.expectPlugin(\"recordAndTuple\");\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") === \"bar\") {\n throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, this.state.curPosition());\n }\n this.state.pos += 2;\n if (next === 123) {\n this.finishToken(7);\n } else {\n this.finishToken(1);\n }\n } else if (isIdentifierStart(next)) {\n ++this.state.pos;\n this.finishToken(139, this.readWord1(next));\n } else if (next === 92) {\n ++this.state.pos;\n this.finishToken(139, this.readWord1());\n } else {\n this.finishOp(27, 1);\n }\n }\n readToken_dot() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next >= 48 && next <= 57) {\n this.readNumber(true);\n return;\n }\n if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {\n this.state.pos += 3;\n this.finishToken(21);\n } else {\n ++this.state.pos;\n this.finishToken(16);\n }\n }\n readToken_slash() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 61) {\n this.finishOp(31, 2);\n } else {\n this.finishOp(56, 1);\n }\n }\n readToken_interpreter() {\n if (this.state.pos !== 0 || this.length < 2) return false;\n let ch = this.input.charCodeAt(this.state.pos + 1);\n if (ch !== 33) return false;\n const start = this.state.pos;\n this.state.pos += 1;\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n const value = this.input.slice(start + 2, this.state.pos);\n this.finishToken(28, value);\n return true;\n }\n readToken_mult_modulo(code) {\n let type = code === 42 ? 55 : 54;\n let width = 1;\n let next = this.input.charCodeAt(this.state.pos + 1);\n if (code === 42 && next === 42) {\n width++;\n next = this.input.charCodeAt(this.state.pos + 2);\n type = 57;\n }\n if (next === 61 && !this.state.inType) {\n width++;\n type = code === 37 ? 33 : 30;\n }\n this.finishOp(type, width);\n }\n readToken_pipe_amp(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === code) {\n if (this.input.charCodeAt(this.state.pos + 2) === 61) {\n this.finishOp(30, 3);\n } else {\n this.finishOp(code === 124 ? 41 : 42, 2);\n }\n return;\n }\n if (code === 124) {\n if (next === 62) {\n this.finishOp(39, 2);\n return;\n }\n if (this.hasPlugin(\"recordAndTuple\") && next === 125) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, this.state.curPosition());\n }\n this.state.pos += 2;\n this.finishToken(9);\n return;\n }\n if (this.hasPlugin(\"recordAndTuple\") && next === 93) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, this.state.curPosition());\n }\n this.state.pos += 2;\n this.finishToken(4);\n return;\n }\n }\n if (next === 61) {\n this.finishOp(30, 2);\n return;\n }\n this.finishOp(code === 124 ? 43 : 45, 1);\n }\n readToken_caret() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 61 && !this.state.inType) {\n this.finishOp(32, 2);\n } else if (next === 94 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"hack\",\n topicToken: \"^^\"\n }])) {\n this.finishOp(37, 2);\n const lookaheadCh = this.input.codePointAt(this.state.pos);\n if (lookaheadCh === 94) {\n this.unexpected();\n }\n } else {\n this.finishOp(44, 1);\n }\n }\n readToken_atSign() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 64 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"hack\",\n topicToken: \"@@\"\n }])) {\n this.finishOp(38, 2);\n } else {\n this.finishOp(26, 1);\n }\n }\n readToken_plus_min(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === code) {\n this.finishOp(34, 2);\n return;\n }\n if (next === 61) {\n this.finishOp(30, 2);\n } else {\n this.finishOp(53, 1);\n }\n }\n readToken_lt() {\n const {\n pos\n } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n if (next === 60) {\n if (this.input.charCodeAt(pos + 2) === 61) {\n this.finishOp(30, 3);\n return;\n }\n this.finishOp(51, 2);\n return;\n }\n if (next === 61) {\n this.finishOp(49, 2);\n return;\n }\n this.finishOp(47, 1);\n }\n readToken_gt() {\n const {\n pos\n } = this.state;\n const next = this.input.charCodeAt(pos + 1);\n if (next === 62) {\n const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(pos + size) === 61) {\n this.finishOp(30, size + 1);\n return;\n }\n this.finishOp(52, size);\n return;\n }\n if (next === 61) {\n this.finishOp(49, 2);\n return;\n }\n this.finishOp(48, 1);\n }\n readToken_eq_excl(code) {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 61) {\n this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);\n return;\n }\n if (code === 61 && next === 62) {\n this.state.pos += 2;\n this.finishToken(19);\n return;\n }\n this.finishOp(code === 61 ? 29 : 35, 1);\n }\n readToken_question() {\n const next = this.input.charCodeAt(this.state.pos + 1);\n const next2 = this.input.charCodeAt(this.state.pos + 2);\n if (next === 63) {\n if (next2 === 61) {\n this.finishOp(30, 3);\n } else {\n this.finishOp(40, 2);\n }\n } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {\n this.state.pos += 2;\n this.finishToken(18);\n } else {\n ++this.state.pos;\n this.finishToken(17);\n }\n }\n getTokenFromCode(code) {\n switch (code) {\n case 46:\n this.readToken_dot();\n return;\n case 40:\n ++this.state.pos;\n this.finishToken(10);\n return;\n case 41:\n ++this.state.pos;\n this.finishToken(11);\n return;\n case 59:\n ++this.state.pos;\n this.finishToken(13);\n return;\n case 44:\n ++this.state.pos;\n this.finishToken(12);\n return;\n case 91:\n if (this.hasPlugin(\"recordAndTuple\") && this.input.charCodeAt(this.state.pos + 1) === 124) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, this.state.curPosition());\n }\n this.state.pos += 2;\n this.finishToken(2);\n } else {\n ++this.state.pos;\n this.finishToken(0);\n }\n return;\n case 93:\n ++this.state.pos;\n this.finishToken(3);\n return;\n case 123:\n if (this.hasPlugin(\"recordAndTuple\") && this.input.charCodeAt(this.state.pos + 1) === 124) {\n if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, this.state.curPosition());\n }\n this.state.pos += 2;\n this.finishToken(6);\n } else {\n ++this.state.pos;\n this.finishToken(5);\n }\n return;\n case 125:\n ++this.state.pos;\n this.finishToken(8);\n return;\n case 58:\n if (this.hasPlugin(\"functionBind\") && this.input.charCodeAt(this.state.pos + 1) === 58) {\n this.finishOp(15, 2);\n } else {\n ++this.state.pos;\n this.finishToken(14);\n }\n return;\n case 63:\n this.readToken_question();\n return;\n case 96:\n this.readTemplateToken();\n return;\n case 48:\n {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === 120 || next === 88) {\n this.readRadixNumber(16);\n return;\n }\n if (next === 111 || next === 79) {\n this.readRadixNumber(8);\n return;\n }\n if (next === 98 || next === 66) {\n this.readRadixNumber(2);\n return;\n }\n }\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n this.readNumber(false);\n return;\n case 34:\n case 39:\n this.readString(code);\n return;\n case 47:\n this.readToken_slash();\n return;\n case 37:\n case 42:\n this.readToken_mult_modulo(code);\n return;\n case 124:\n case 38:\n this.readToken_pipe_amp(code);\n return;\n case 94:\n this.readToken_caret();\n return;\n case 43:\n case 45:\n this.readToken_plus_min(code);\n return;\n case 60:\n this.readToken_lt();\n return;\n case 62:\n this.readToken_gt();\n return;\n case 61:\n case 33:\n this.readToken_eq_excl(code);\n return;\n case 126:\n this.finishOp(36, 1);\n return;\n case 64:\n this.readToken_atSign();\n return;\n case 35:\n this.readToken_numberSign();\n return;\n case 92:\n this.readWord();\n return;\n default:\n if (isIdentifierStart(code)) {\n this.readWord(code);\n return;\n }\n }\n throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), {\n unexpected: String.fromCodePoint(code)\n });\n }\n finishOp(type, size) {\n const str = this.input.slice(this.state.pos, this.state.pos + size);\n this.state.pos += size;\n this.finishToken(type, str);\n }\n readRegexp() {\n const startLoc = this.state.startLoc;\n const start = this.state.start + 1;\n let escaped, inClass;\n let {\n pos\n } = this.state;\n for (;; ++pos) {\n if (pos >= this.length) {\n throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));\n }\n const ch = this.input.charCodeAt(pos);\n if (isNewLine(ch)) {\n throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));\n }\n if (escaped) {\n escaped = false;\n } else {\n if (ch === 91) {\n inClass = true;\n } else if (ch === 93 && inClass) {\n inClass = false;\n } else if (ch === 47 && !inClass) {\n break;\n }\n escaped = ch === 92;\n }\n }\n const content = this.input.slice(start, pos);\n ++pos;\n let mods = \"\";\n const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start);\n while (pos < this.length) {\n const cp = this.codePointAtPos(pos);\n const char = String.fromCharCode(cp);\n if (VALID_REGEX_FLAGS.has(cp)) {\n if (cp === 118) {\n if (mods.includes(\"u\")) {\n this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n }\n } else if (cp === 117) {\n if (mods.includes(\"v\")) {\n this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n }\n }\n if (mods.includes(char)) {\n this.raise(Errors.DuplicateRegExpFlags, nextPos());\n }\n } else if (isIdentifierChar(cp) || cp === 92) {\n this.raise(Errors.MalformedRegExpFlags, nextPos());\n } else {\n break;\n }\n ++pos;\n mods += char;\n }\n this.state.pos = pos;\n this.finishToken(138, {\n pattern: content,\n flags: mods\n });\n }\n readInt(radix, len, forceLen = false, allowNumSeparator = true) {\n const {\n n,\n pos\n } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false);\n this.state.pos = pos;\n return n;\n }\n readRadixNumber(radix) {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let isBigInt = false;\n this.state.pos += 2;\n const val = this.readInt(radix);\n if (val == null) {\n this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), {\n radix\n });\n }\n const next = this.input.charCodeAt(this.state.pos);\n if (next === 110) {\n ++this.state.pos;\n isBigInt = true;\n } else if (next === 109) {\n throw this.raise(Errors.InvalidDecimal, startLoc);\n }\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n }\n if (isBigInt) {\n const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n this.finishToken(136, str);\n return;\n }\n this.finishToken(135, val);\n }\n readNumber(startsWithDot) {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let isFloat = false;\n let isBigInt = false;\n let hasExponent = false;\n let isOctal = false;\n if (!startsWithDot && this.readInt(10) === null) {\n this.raise(Errors.InvalidNumber, this.state.curPosition());\n }\n const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (hasLeadingZero) {\n const integer = this.input.slice(start, this.state.pos);\n this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);\n if (!this.state.strict) {\n const underscorePos = integer.indexOf(\"_\");\n if (underscorePos > 0) {\n this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos));\n }\n }\n isOctal = hasLeadingZero && !/[89]/.test(integer);\n }\n let next = this.input.charCodeAt(this.state.pos);\n if (next === 46 && !isOctal) {\n ++this.state.pos;\n this.readInt(10);\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n if ((next === 69 || next === 101) && !isOctal) {\n next = this.input.charCodeAt(++this.state.pos);\n if (next === 43 || next === 45) {\n ++this.state.pos;\n }\n if (this.readInt(10) === null) {\n this.raise(Errors.InvalidOrMissingExponent, startLoc);\n }\n isFloat = true;\n hasExponent = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n if (next === 110) {\n if (isFloat || hasLeadingZero) {\n this.raise(Errors.InvalidBigIntLiteral, startLoc);\n }\n ++this.state.pos;\n isBigInt = true;\n }\n if (next === 109) {\n this.expectPlugin(\"decimal\", this.state.curPosition());\n if (hasExponent || hasLeadingZero) {\n this.raise(Errors.InvalidDecimal, startLoc);\n }\n ++this.state.pos;\n var isDecimal = true;\n }\n if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n }\n const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, \"\");\n if (isBigInt) {\n this.finishToken(136, str);\n return;\n }\n if (isDecimal) {\n this.finishToken(137, str);\n return;\n }\n const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n this.finishToken(135, val);\n }\n readCodePoint(throwOnInvalid) {\n const {\n code,\n pos\n } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint);\n this.state.pos = pos;\n return code;\n }\n readString(quote) {\n const {\n str,\n pos,\n curLine,\n lineStart\n } = readStringContents(quote === 34 ? \"double\" : \"single\", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string);\n this.state.pos = pos + 1;\n this.state.lineStart = lineStart;\n this.state.curLine = curLine;\n this.finishToken(134, str);\n }\n readTemplateContinuation() {\n if (!this.match(8)) {\n this.unexpected(null, 8);\n }\n this.state.pos--;\n this.readTemplateToken();\n }\n readTemplateToken() {\n const opening = this.input[this.state.pos];\n const {\n str,\n firstInvalidLoc,\n pos,\n curLine,\n lineStart\n } = readStringContents(\"template\", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template);\n this.state.pos = pos + 1;\n this.state.lineStart = lineStart;\n this.state.curLine = curLine;\n if (firstInvalidLoc) {\n this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos));\n }\n if (this.input.codePointAt(pos) === 96) {\n this.finishToken(24, firstInvalidLoc ? null : opening + str + \"`\");\n } else {\n this.state.pos++;\n this.finishToken(25, firstInvalidLoc ? null : opening + str + \"${\");\n }\n }\n recordStrictModeErrors(toParseError, at) {\n const index = at.index;\n if (this.state.strict && !this.state.strictErrors.has(index)) {\n this.raise(toParseError, at);\n } else {\n this.state.strictErrors.set(index, [toParseError, at]);\n }\n }\n readWord1(firstCode) {\n this.state.containsEsc = false;\n let word = \"\";\n const start = this.state.pos;\n let chunkStart = this.state.pos;\n if (firstCode !== undefined) {\n this.state.pos += firstCode <= 0xffff ? 1 : 2;\n }\n while (this.state.pos < this.length) {\n const ch = this.codePointAtPos(this.state.pos);\n if (isIdentifierChar(ch)) {\n this.state.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) {\n this.state.containsEsc = true;\n word += this.input.slice(chunkStart, this.state.pos);\n const escStart = this.state.curPosition();\n const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n if (this.input.charCodeAt(++this.state.pos) !== 117) {\n this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());\n chunkStart = this.state.pos - 1;\n continue;\n }\n ++this.state.pos;\n const esc = this.readCodePoint(true);\n if (esc !== null) {\n if (!identifierCheck(esc)) {\n this.raise(Errors.EscapedCharNotAnIdentifier, escStart);\n }\n word += String.fromCodePoint(esc);\n }\n chunkStart = this.state.pos;\n } else {\n break;\n }\n }\n return word + this.input.slice(chunkStart, this.state.pos);\n }\n readWord(firstCode) {\n const word = this.readWord1(firstCode);\n const type = keywords$1.get(word);\n if (type !== undefined) {\n this.finishToken(type, tokenLabelName(type));\n } else {\n this.finishToken(132, word);\n }\n }\n checkKeywordEscapes() {\n const {\n type\n } = this.state;\n if (tokenIsKeyword(type) && this.state.containsEsc) {\n this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {\n reservedWord: tokenLabelName(type)\n });\n }\n }\n raise(toParseError, at, details = {}) {\n const loc = at instanceof Position ? at : at.loc.start;\n const error = toParseError(loc, details);\n if (!(this.optionFlags & 2048)) throw error;\n if (!this.isLookahead) this.state.errors.push(error);\n return error;\n }\n raiseOverwrite(toParseError, at, details = {}) {\n const loc = at instanceof Position ? at : at.loc.start;\n const pos = loc.index;\n const errors = this.state.errors;\n for (let i = errors.length - 1; i >= 0; i--) {\n const error = errors[i];\n if (error.loc.index === pos) {\n return errors[i] = toParseError(loc, details);\n }\n if (error.loc.index < pos) break;\n }\n return this.raise(toParseError, at, details);\n }\n updateContext(prevType) {}\n unexpected(loc, type) {\n throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, {\n expected: type ? tokenLabelName(type) : null\n });\n }\n expectPlugin(pluginName, loc) {\n if (this.hasPlugin(pluginName)) {\n return true;\n }\n throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, {\n missingPlugin: [pluginName]\n });\n }\n expectOnePlugin(pluginNames) {\n if (!pluginNames.some(name => this.hasPlugin(name))) {\n throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {\n missingPlugin: pluginNames\n });\n }\n }\n errorBuilder(error) {\n return (pos, lineStart, curLine) => {\n this.raise(error, buildPosition(pos, lineStart, curLine));\n };\n }\n}\nclass ClassScope {\n constructor() {\n this.privateNames = new Set();\n this.loneAccessors = new Map();\n this.undefinedPrivateNames = new Map();\n }\n}\nclass ClassScopeHandler {\n constructor(parser) {\n this.parser = void 0;\n this.stack = [];\n this.undefinedPrivateNames = new Map();\n this.parser = parser;\n }\n current() {\n return this.stack[this.stack.length - 1];\n }\n enter() {\n this.stack.push(new ClassScope());\n }\n exit() {\n const oldClassScope = this.stack.pop();\n const current = this.current();\n for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n if (current) {\n if (!current.undefinedPrivateNames.has(name)) {\n current.undefinedPrivateNames.set(name, loc);\n }\n } else {\n this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n identifierName: name\n });\n }\n }\n }\n declarePrivateName(name, elementType, loc) {\n const {\n privateNames,\n loneAccessors,\n undefinedPrivateNames\n } = this.current();\n let redefined = privateNames.has(name);\n if (elementType & 3) {\n const accessor = redefined && loneAccessors.get(name);\n if (accessor) {\n const oldStatic = accessor & 4;\n const newStatic = elementType & 4;\n const oldKind = accessor & 3;\n const newKind = elementType & 3;\n redefined = oldKind === newKind || oldStatic !== newStatic;\n if (!redefined) loneAccessors.delete(name);\n } else if (!redefined) {\n loneAccessors.set(name, elementType);\n }\n }\n if (redefined) {\n this.parser.raise(Errors.PrivateNameRedeclaration, loc, {\n identifierName: name\n });\n }\n privateNames.add(name);\n undefinedPrivateNames.delete(name);\n }\n usePrivateName(name, loc) {\n let classScope;\n for (classScope of this.stack) {\n if (classScope.privateNames.has(name)) return;\n }\n if (classScope) {\n classScope.undefinedPrivateNames.set(name, loc);\n } else {\n this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n identifierName: name\n });\n }\n }\n}\nclass ExpressionScope {\n constructor(type = 0) {\n this.type = type;\n }\n canBeArrowParameterDeclaration() {\n return this.type === 2 || this.type === 1;\n }\n isCertainlyParameterDeclaration() {\n return this.type === 3;\n }\n}\nclass ArrowHeadParsingScope extends ExpressionScope {\n constructor(type) {\n super(type);\n this.declarationErrors = new Map();\n }\n recordDeclarationError(ParsingErrorClass, at) {\n const index = at.index;\n this.declarationErrors.set(index, [ParsingErrorClass, at]);\n }\n clearDeclarationError(index) {\n this.declarationErrors.delete(index);\n }\n iterateErrors(iterator) {\n this.declarationErrors.forEach(iterator);\n }\n}\nclass ExpressionScopeHandler {\n constructor(parser) {\n this.parser = void 0;\n this.stack = [new ExpressionScope()];\n this.parser = parser;\n }\n enter(scope) {\n this.stack.push(scope);\n }\n exit() {\n this.stack.pop();\n }\n recordParameterInitializerError(toParseError, node) {\n const origin = node.loc.start;\n const {\n stack\n } = this;\n let i = stack.length - 1;\n let scope = stack[i];\n while (!scope.isCertainlyParameterDeclaration()) {\n if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(toParseError, origin);\n } else {\n return;\n }\n scope = stack[--i];\n }\n this.parser.raise(toParseError, origin);\n }\n recordArrowParameterBindingError(error, node) {\n const {\n stack\n } = this;\n const scope = stack[stack.length - 1];\n const origin = node.loc.start;\n if (scope.isCertainlyParameterDeclaration()) {\n this.parser.raise(error, origin);\n } else if (scope.canBeArrowParameterDeclaration()) {\n scope.recordDeclarationError(error, origin);\n } else {\n return;\n }\n }\n recordAsyncArrowParametersError(at) {\n const {\n stack\n } = this;\n let i = stack.length - 1;\n let scope = stack[i];\n while (scope.canBeArrowParameterDeclaration()) {\n if (scope.type === 2) {\n scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);\n }\n scope = stack[--i];\n }\n }\n validateAsPattern() {\n const {\n stack\n } = this;\n const currentScope = stack[stack.length - 1];\n if (!currentScope.canBeArrowParameterDeclaration()) return;\n currentScope.iterateErrors(([toParseError, loc]) => {\n this.parser.raise(toParseError, loc);\n let i = stack.length - 2;\n let scope = stack[i];\n while (scope.canBeArrowParameterDeclaration()) {\n scope.clearDeclarationError(loc.index);\n scope = stack[--i];\n }\n });\n }\n}\nfunction newParameterDeclarationScope() {\n return new ExpressionScope(3);\n}\nfunction newArrowHeadScope() {\n return new ArrowHeadParsingScope(1);\n}\nfunction newAsyncArrowScope() {\n return new ArrowHeadParsingScope(2);\n}\nfunction newExpressionScope() {\n return new ExpressionScope();\n}\nclass UtilParser extends Tokenizer {\n addExtra(node, key, value, enumerable = true) {\n if (!node) return;\n let {\n extra\n } = node;\n if (extra == null) {\n extra = {};\n node.extra = extra;\n }\n if (enumerable) {\n extra[key] = value;\n } else {\n Object.defineProperty(extra, key, {\n enumerable,\n value\n });\n }\n }\n isContextual(token) {\n return this.state.type === token && !this.state.containsEsc;\n }\n isUnparsedContextual(nameStart, name) {\n if (this.input.startsWith(name, nameStart)) {\n const nextCh = this.input.charCodeAt(nameStart + name.length);\n return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);\n }\n return false;\n }\n isLookaheadContextual(name) {\n const next = this.nextTokenStart();\n return this.isUnparsedContextual(next, name);\n }\n eatContextual(token) {\n if (this.isContextual(token)) {\n this.next();\n return true;\n }\n return false;\n }\n expectContextual(token, toParseError) {\n if (!this.eatContextual(token)) {\n if (toParseError != null) {\n throw this.raise(toParseError, this.state.startLoc);\n }\n this.unexpected(null, token);\n }\n }\n canInsertSemicolon() {\n return this.match(140) || this.match(8) || this.hasPrecedingLineBreak();\n }\n hasPrecedingLineBreak() {\n return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start);\n }\n hasFollowingLineBreak() {\n return hasNewLine(this.input, this.state.end, this.nextTokenStart());\n }\n isLineTerminator() {\n return this.eat(13) || this.canInsertSemicolon();\n }\n semicolon(allowAsi = true) {\n if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;\n this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc);\n }\n expect(type, loc) {\n if (!this.eat(type)) {\n this.unexpected(loc, type);\n }\n }\n tryParse(fn, oldState = this.state.clone()) {\n const abortSignal = {\n node: null\n };\n try {\n const node = fn((node = null) => {\n abortSignal.node = node;\n throw abortSignal;\n });\n if (this.state.errors.length > oldState.errors.length) {\n const failState = this.state;\n this.state = oldState;\n this.state.tokensLength = failState.tokensLength;\n return {\n node,\n error: failState.errors[oldState.errors.length],\n thrown: false,\n aborted: false,\n failState\n };\n }\n return {\n node: node,\n error: null,\n thrown: false,\n aborted: false,\n failState: null\n };\n } catch (error) {\n const failState = this.state;\n this.state = oldState;\n if (error instanceof SyntaxError) {\n return {\n node: null,\n error,\n thrown: true,\n aborted: false,\n failState\n };\n }\n if (error === abortSignal) {\n return {\n node: abortSignal.node,\n error: null,\n thrown: false,\n aborted: true,\n failState\n };\n }\n throw error;\n }\n }\n checkExpressionErrors(refExpressionErrors, andThrow) {\n if (!refExpressionErrors) return false;\n const {\n shorthandAssignLoc,\n doubleProtoLoc,\n privateKeyLoc,\n optionalParametersLoc,\n voidPatternLoc\n } = refExpressionErrors;\n const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc || !!voidPatternLoc;\n if (!andThrow) {\n return hasErrors;\n }\n if (shorthandAssignLoc != null) {\n this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n }\n if (doubleProtoLoc != null) {\n this.raise(Errors.DuplicateProto, doubleProtoLoc);\n }\n if (privateKeyLoc != null) {\n this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n }\n if (optionalParametersLoc != null) {\n this.unexpected(optionalParametersLoc);\n }\n if (voidPatternLoc != null) {\n this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc);\n }\n }\n isLiteralPropertyName() {\n return tokenIsLiteralPropertyName(this.state.type);\n }\n isPrivateName(node) {\n return node.type === \"PrivateName\";\n }\n getPrivateNameSV(node) {\n return node.id.name;\n }\n hasPropertyAsPrivateName(node) {\n return (node.type === \"MemberExpression\" || node.type === \"OptionalMemberExpression\") && this.isPrivateName(node.property);\n }\n isObjectProperty(node) {\n return node.type === \"ObjectProperty\";\n }\n isObjectMethod(node) {\n return node.type === \"ObjectMethod\";\n }\n initializeScopes(inModule = this.options.sourceType === \"module\") {\n const oldLabels = this.state.labels;\n this.state.labels = [];\n const oldExportedIdentifiers = this.exportedIdentifiers;\n this.exportedIdentifiers = new Set();\n const oldInModule = this.inModule;\n this.inModule = inModule;\n const oldScope = this.scope;\n const ScopeHandler = this.getScopeHandler();\n this.scope = new ScopeHandler(this, inModule);\n const oldProdParam = this.prodParam;\n this.prodParam = new ProductionParameterHandler();\n const oldClassScope = this.classScope;\n this.classScope = new ClassScopeHandler(this);\n const oldExpressionScope = this.expressionScope;\n this.expressionScope = new ExpressionScopeHandler(this);\n return () => {\n this.state.labels = oldLabels;\n this.exportedIdentifiers = oldExportedIdentifiers;\n this.inModule = oldInModule;\n this.scope = oldScope;\n this.prodParam = oldProdParam;\n this.classScope = oldClassScope;\n this.expressionScope = oldExpressionScope;\n };\n }\n enterInitialScopes() {\n let paramFlags = 0;\n if (this.inModule || this.optionFlags & 1) {\n paramFlags |= 2;\n }\n if (this.optionFlags & 32) {\n paramFlags |= 1;\n }\n const isCommonJS = !this.inModule && this.options.sourceType === \"commonjs\";\n if (isCommonJS || this.optionFlags & 2) {\n paramFlags |= 4;\n }\n this.prodParam.enter(paramFlags);\n let scopeFlags = isCommonJS ? 514 : 1;\n if (this.optionFlags & 4) {\n scopeFlags |= 512;\n }\n this.scope.enter(scopeFlags);\n }\n checkDestructuringPrivate(refExpressionErrors) {\n const {\n privateKeyLoc\n } = refExpressionErrors;\n if (privateKeyLoc !== null) {\n this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n }\n }\n}\nclass ExpressionErrors {\n constructor() {\n this.shorthandAssignLoc = null;\n this.doubleProtoLoc = null;\n this.privateKeyLoc = null;\n this.optionalParametersLoc = null;\n this.voidPatternLoc = null;\n }\n}\nclass Node {\n constructor(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n this.loc = new SourceLocation(loc);\n if ((parser == null ? void 0 : parser.optionFlags) & 128) this.range = [pos, 0];\n if (parser != null && parser.filename) this.loc.filename = parser.filename;\n }\n}\nconst NodePrototype = Node.prototype;\nNodePrototype.__clone = function () {\n const newNode = new Node(undefined, this.start, this.loc.start);\n const keys = Object.keys(this);\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n if (key !== \"leadingComments\" && key !== \"trailingComments\" && key !== \"innerComments\") {\n newNode[key] = this[key];\n }\n }\n return newNode;\n};\nclass NodeUtils extends UtilParser {\n startNode() {\n const loc = this.state.startLoc;\n return new Node(this, loc.index, loc);\n }\n startNodeAt(loc) {\n return new Node(this, loc.index, loc);\n }\n startNodeAtNode(type) {\n return this.startNodeAt(type.loc.start);\n }\n finishNode(node, type) {\n return this.finishNodeAt(node, type, this.state.lastTokEndLoc);\n }\n finishNodeAt(node, type, endLoc) {\n node.type = type;\n node.end = endLoc.index;\n node.loc.end = endLoc;\n if (this.optionFlags & 128) node.range[1] = endLoc.index;\n if (this.optionFlags & 4096) {\n this.processComment(node);\n }\n return node;\n }\n resetStartLocation(node, startLoc) {\n node.start = startLoc.index;\n node.loc.start = startLoc;\n if (this.optionFlags & 128) node.range[0] = startLoc.index;\n }\n resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {\n node.end = endLoc.index;\n node.loc.end = endLoc;\n if (this.optionFlags & 128) node.range[1] = endLoc.index;\n }\n resetStartLocationFromNode(node, locationNode) {\n this.resetStartLocation(node, locationNode.loc.start);\n }\n castNodeTo(node, type) {\n node.type = type;\n return node;\n }\n cloneIdentifier(node) {\n const {\n type,\n start,\n end,\n loc,\n range,\n name\n } = node;\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.name = name;\n if (node.extra) cloned.extra = node.extra;\n return cloned;\n }\n cloneStringLiteral(node) {\n const {\n type,\n start,\n end,\n loc,\n range,\n extra\n } = node;\n const cloned = Object.create(NodePrototype);\n cloned.type = type;\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.extra = extra;\n cloned.value = node.value;\n return cloned;\n }\n}\nconst unwrapParenthesizedExpression = node => {\n return node.type === \"ParenthesizedExpression\" ? unwrapParenthesizedExpression(node.expression) : node;\n};\nclass LValParser extends NodeUtils {\n toAssignable(node, isLHS = false) {\n var _node$extra, _node$extra3;\n let parenthesized = undefined;\n if (node.type === \"ParenthesizedExpression\" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {\n parenthesized = unwrapParenthesizedExpression(node);\n if (isLHS) {\n if (parenthesized.type === \"Identifier\") {\n this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node);\n } else if (parenthesized.type !== \"CallExpression\" && parenthesized.type !== \"MemberExpression\" && !this.isOptionalMemberExpression(parenthesized)) {\n this.raise(Errors.InvalidParenthesizedAssignment, node);\n }\n } else {\n this.raise(Errors.InvalidParenthesizedAssignment, node);\n }\n }\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n case \"VoidPattern\":\n break;\n case \"ObjectExpression\":\n this.castNodeTo(node, \"ObjectPattern\");\n for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) {\n var _node$extra2;\n const prop = node.properties[i];\n const isLast = i === last;\n this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n if (isLast && prop.type === \"RestElement\" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) {\n this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);\n }\n }\n break;\n case \"ObjectProperty\":\n {\n const {\n key,\n value\n } = node;\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);\n }\n this.toAssignable(value, isLHS);\n break;\n }\n case \"SpreadElement\":\n {\n throw new Error(\"Internal @babel/parser error (this is a bug, please report it).\" + \" SpreadElement should be converted by .toAssignable's caller.\");\n }\n case \"ArrayExpression\":\n this.castNodeTo(node, \"ArrayPattern\");\n this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS);\n break;\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") {\n this.raise(Errors.MissingEqInAssignment, node.left.loc.end);\n }\n this.castNodeTo(node, \"AssignmentPattern\");\n delete node.operator;\n if (node.left.type === \"VoidPattern\") {\n this.raise(Errors.VoidPatternInitializer, node.left);\n }\n this.toAssignable(node.left, isLHS);\n break;\n case \"ParenthesizedExpression\":\n this.toAssignable(parenthesized, isLHS);\n break;\n }\n }\n toAssignableObjectExpressionProp(prop, isLast, isLHS) {\n if (prop.type === \"ObjectMethod\") {\n this.raise(prop.kind === \"get\" || prop.kind === \"set\" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key);\n } else if (prop.type === \"SpreadElement\") {\n this.castNodeTo(prop, \"RestElement\");\n const arg = prop.argument;\n this.checkToRestConversion(arg, false);\n this.toAssignable(arg, isLHS);\n if (!isLast) {\n this.raise(Errors.RestTrailingComma, prop);\n }\n } else {\n this.toAssignable(prop, isLHS);\n }\n }\n toAssignableList(exprList, trailingCommaLoc, isLHS) {\n const end = exprList.length - 1;\n for (let i = 0; i <= end; i++) {\n const elt = exprList[i];\n if (!elt) continue;\n this.toAssignableListItem(exprList, i, isLHS);\n if (elt.type === \"RestElement\") {\n if (i < end) {\n this.raise(Errors.RestTrailingComma, elt);\n } else if (trailingCommaLoc) {\n this.raise(Errors.RestTrailingComma, trailingCommaLoc);\n }\n }\n }\n }\n toAssignableListItem(exprList, index, isLHS) {\n const node = exprList[index];\n if (node.type === \"SpreadElement\") {\n this.castNodeTo(node, \"RestElement\");\n const arg = node.argument;\n this.checkToRestConversion(arg, true);\n this.toAssignable(arg, isLHS);\n } else {\n this.toAssignable(node, isLHS);\n }\n }\n isAssignable(node, isBinding) {\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n case \"VoidPattern\":\n return true;\n case \"ObjectExpression\":\n {\n const last = node.properties.length - 1;\n return node.properties.every((prop, i) => {\n return prop.type !== \"ObjectMethod\" && (i === last || prop.type !== \"SpreadElement\") && this.isAssignable(prop);\n });\n }\n case \"ObjectProperty\":\n return this.isAssignable(node.value);\n case \"SpreadElement\":\n return this.isAssignable(node.argument);\n case \"ArrayExpression\":\n return node.elements.every(element => element === null || this.isAssignable(element));\n case \"AssignmentExpression\":\n return node.operator === \"=\";\n case \"ParenthesizedExpression\":\n return this.isAssignable(node.expression);\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return !isBinding;\n default:\n return false;\n }\n }\n toReferencedList(exprList, isParenthesizedExpr) {\n return exprList;\n }\n toReferencedListDeep(exprList, isParenthesizedExpr) {\n this.toReferencedList(exprList, isParenthesizedExpr);\n for (const expr of exprList) {\n if ((expr == null ? void 0 : expr.type) === \"ArrayExpression\") {\n this.toReferencedListDeep(expr.elements);\n }\n }\n }\n parseSpread(refExpressionErrors) {\n const node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined);\n return this.finishNode(node, \"SpreadElement\");\n }\n parseRestBinding() {\n const node = this.startNode();\n this.next();\n const argument = this.parseBindingAtom();\n if (argument.type === \"VoidPattern\") {\n this.raise(Errors.UnexpectedVoidPattern, argument);\n }\n node.argument = argument;\n return this.finishNode(node, \"RestElement\");\n }\n parseBindingAtom() {\n switch (this.state.type) {\n case 0:\n {\n const node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(3, 93, 1);\n return this.finishNode(node, \"ArrayPattern\");\n }\n case 5:\n return this.parseObjectLike(8, true);\n case 88:\n return this.parseVoidPattern(null);\n }\n return this.parseIdentifier();\n }\n parseBindingList(close, closeCharCode, flags) {\n const allowEmpty = flags & 1;\n const elts = [];\n let first = true;\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n }\n if (allowEmpty && this.match(12)) {\n elts.push(null);\n } else if (this.eat(close)) {\n break;\n } else if (this.match(21)) {\n let rest = this.parseRestBinding();\n if (this.hasPlugin(\"flow\") || flags & 2) {\n rest = this.parseFunctionParamType(rest);\n }\n elts.push(rest);\n if (!this.checkCommaAfterRest(closeCharCode)) {\n this.expect(close);\n break;\n }\n } else {\n const decorators = [];\n if (flags & 2) {\n if (this.match(26) && this.hasPlugin(\"decorators\")) {\n this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc);\n }\n while (this.match(26)) {\n decorators.push(this.parseDecorator());\n }\n }\n elts.push(this.parseBindingElement(flags, decorators));\n }\n }\n return elts;\n }\n parseBindingRestProperty(prop) {\n this.next();\n if (this.hasPlugin(\"discardBinding\") && this.match(88)) {\n prop.argument = this.parseVoidPattern(null);\n this.raise(Errors.UnexpectedVoidPattern, prop.argument);\n } else {\n prop.argument = this.parseIdentifier();\n }\n this.checkCommaAfterRest(125);\n return this.finishNode(prop, \"RestElement\");\n }\n parseBindingProperty() {\n const {\n type,\n startLoc\n } = this.state;\n if (type === 21) {\n return this.parseBindingRestProperty(this.startNode());\n }\n const prop = this.startNode();\n if (type === 139) {\n this.expectPlugin(\"destructuringPrivate\", startLoc);\n this.classScope.usePrivateName(this.state.value, startLoc);\n prop.key = this.parsePrivateName();\n } else {\n this.parsePropertyName(prop);\n }\n prop.method = false;\n return this.parseObjPropValue(prop, startLoc, false, false, true, false);\n }\n parseBindingElement(flags, decorators) {\n const left = this.parseMaybeDefault();\n if (this.hasPlugin(\"flow\") || flags & 2) {\n this.parseFunctionParamType(left);\n }\n if (decorators.length) {\n left.decorators = decorators;\n this.resetStartLocationFromNode(left, decorators[0]);\n }\n const elt = this.parseMaybeDefault(left.loc.start, left);\n return elt;\n }\n parseFunctionParamType(param) {\n return param;\n }\n parseMaybeDefault(startLoc, left) {\n startLoc != null ? startLoc : startLoc = this.state.startLoc;\n left = left != null ? left : this.parseBindingAtom();\n if (!this.eat(29)) return left;\n const node = this.startNodeAt(startLoc);\n if (left.type === \"VoidPattern\") {\n this.raise(Errors.VoidPatternInitializer, left);\n }\n node.left = left;\n node.right = this.parseMaybeAssignAllowIn();\n return this.finishNode(node, \"AssignmentPattern\");\n }\n isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {\n switch (type) {\n case \"AssignmentPattern\":\n return \"left\";\n case \"RestElement\":\n return \"argument\";\n case \"ObjectProperty\":\n return \"value\";\n case \"ParenthesizedExpression\":\n return \"expression\";\n case \"ArrayPattern\":\n return \"elements\";\n case \"ObjectPattern\":\n return \"properties\";\n case \"VoidPattern\":\n return true;\n case \"CallExpression\":\n if (!disallowCallExpression && !this.state.strict && this.optionFlags & 8192) {\n return true;\n }\n }\n return false;\n }\n isOptionalMemberExpression(expression) {\n return expression.type === \"OptionalMemberExpression\";\n }\n checkLVal(expression, ancestor, binding = 64, checkClashes = false, strictModeChanged = false, hasParenthesizedAncestor = false, disallowCallExpression = false) {\n var _expression$extra;\n const type = expression.type;\n if (this.isObjectMethod(expression)) return;\n const isOptionalMemberExpression = this.isOptionalMemberExpression(expression);\n if (isOptionalMemberExpression || type === \"MemberExpression\") {\n if (isOptionalMemberExpression) {\n this.expectPlugin(\"optionalChainingAssign\", expression.loc.start);\n if (ancestor.type !== \"AssignmentExpression\") {\n this.raise(Errors.InvalidLhsOptionalChaining, expression, {\n ancestor\n });\n }\n }\n if (binding !== 64) {\n this.raise(Errors.InvalidPropertyBindingPattern, expression);\n }\n return;\n }\n if (type === \"Identifier\") {\n this.checkIdentifier(expression, binding, strictModeChanged);\n const {\n name\n } = expression;\n if (checkClashes) {\n if (checkClashes.has(name)) {\n this.raise(Errors.ParamDupe, expression);\n } else {\n checkClashes.add(name);\n }\n }\n return;\n } else if (type === \"VoidPattern\" && ancestor.type === \"CatchClause\") {\n this.raise(Errors.VoidPatternCatchClauseParam, expression);\n }\n const unwrappedExpression = unwrapParenthesizedExpression(expression);\n disallowCallExpression || (disallowCallExpression = unwrappedExpression.type === \"CallExpression\" && (unwrappedExpression.callee.type === \"Import\" || unwrappedExpression.callee.type === \"Super\"));\n const validity = this.isValidLVal(type, disallowCallExpression, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === \"AssignmentExpression\", binding);\n if (validity === true) return;\n if (validity === false) {\n const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding;\n this.raise(ParseErrorClass, expression, {\n ancestor\n });\n return;\n }\n let key, isParenthesizedExpression;\n if (typeof validity === \"string\") {\n key = validity;\n isParenthesizedExpression = type === \"ParenthesizedExpression\";\n } else {\n [key, isParenthesizedExpression] = validity;\n }\n const nextAncestor = type === \"ArrayPattern\" || type === \"ObjectPattern\" ? {\n type\n } : ancestor;\n const val = expression[key];\n if (Array.isArray(val)) {\n for (const child of val) {\n if (child) {\n this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, true);\n }\n }\n } else if (val) {\n this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, disallowCallExpression);\n }\n }\n checkIdentifier(at, bindingType, strictModeChanged = false) {\n if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) {\n if (bindingType === 64) {\n this.raise(Errors.StrictEvalArguments, at, {\n referenceName: at.name\n });\n } else {\n this.raise(Errors.StrictEvalArgumentsBinding, at, {\n bindingName: at.name\n });\n }\n }\n if (bindingType & 8192 && at.name === \"let\") {\n this.raise(Errors.LetInLexicalBinding, at);\n }\n if (!(bindingType & 64)) {\n this.declareNameFromIdentifier(at, bindingType);\n }\n }\n declareNameFromIdentifier(identifier, binding) {\n this.scope.declareName(identifier.name, binding, identifier.loc.start);\n }\n checkToRestConversion(node, allowPattern) {\n switch (node.type) {\n case \"ParenthesizedExpression\":\n this.checkToRestConversion(node.expression, allowPattern);\n break;\n case \"Identifier\":\n case \"MemberExpression\":\n break;\n case \"ArrayExpression\":\n case \"ObjectExpression\":\n if (allowPattern) break;\n default:\n this.raise(Errors.InvalidRestAssignmentPattern, node);\n }\n }\n checkCommaAfterRest(close) {\n if (!this.match(12)) {\n return false;\n }\n this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc);\n return true;\n }\n}\nconst keywordAndTSRelationalOperator = /in(?:stanceof)?|as|satisfies/y;\nfunction nonNull(x) {\n if (x == null) {\n throw new Error(`Unexpected ${x} value.`);\n }\n return x;\n}\nfunction assert(x) {\n if (!x) {\n throw new Error(\"Assert fail\");\n }\n}\nconst TSErrors = ParseErrorEnum`typescript`({\n AbstractMethodHasImplementation: ({\n methodName\n }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`,\n AbstractPropertyHasInitializer: ({\n propertyName\n }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`,\n AccessorCannotBeOptional: \"An 'accessor' property cannot be declared optional.\",\n AccessorCannotDeclareThisParameter: \"'get' and 'set' accessors cannot declare 'this' parameters.\",\n AccessorCannotHaveTypeParameters: \"An accessor cannot have type parameters.\",\n ClassMethodHasDeclare: \"Class methods cannot have the 'declare' modifier.\",\n ClassMethodHasReadonly: \"Class methods cannot have the 'readonly' modifier.\",\n ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: \"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.\",\n ConstructorHasTypeParameters: \"Type parameters cannot appear on a constructor declaration.\",\n DeclareAccessor: ({\n kind\n }) => `'declare' is not allowed in ${kind}ters.`,\n DeclareClassFieldHasInitializer: \"Initializers are not allowed in ambient contexts.\",\n DeclareFunctionHasImplementation: \"An implementation cannot be declared in ambient contexts.\",\n DuplicateAccessibilityModifier: ({\n modifier\n }) => `Accessibility modifier already seen: '${modifier}'.`,\n DuplicateModifier: ({\n modifier\n }) => `Duplicate modifier: '${modifier}'.`,\n EmptyHeritageClauseType: ({\n token\n }) => `'${token}' list cannot be empty.`,\n EmptyTypeArguments: \"Type argument list cannot be empty.\",\n EmptyTypeParameters: \"Type parameter list cannot be empty.\",\n ExpectedAmbientAfterExportDeclare: \"'export declare' must be followed by an ambient declaration.\",\n ImportAliasHasImportType: \"An import alias can not use 'import type'.\",\n ImportReflectionHasImportType: \"An `import module` declaration can not use `type` modifier\",\n IncompatibleModifiers: ({\n modifiers\n }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`,\n IndexSignatureHasAbstract: \"Index signatures cannot have the 'abstract' modifier.\",\n IndexSignatureHasAccessibility: ({\n modifier\n }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`,\n IndexSignatureHasDeclare: \"Index signatures cannot have the 'declare' modifier.\",\n IndexSignatureHasOverride: \"'override' modifier cannot appear on an index signature.\",\n IndexSignatureHasStatic: \"Index signatures cannot have the 'static' modifier.\",\n InitializerNotAllowedInAmbientContext: \"Initializers are not allowed in ambient contexts.\",\n InvalidHeritageClauseType: ({\n token\n }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`,\n InvalidModifierOnAwaitUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on an await using declaration.`,\n InvalidModifierOnTypeMember: ({\n modifier\n }) => `'${modifier}' modifier cannot appear on a type member.`,\n InvalidModifierOnTypeParameter: ({\n modifier\n }) => `'${modifier}' modifier cannot appear on a type parameter.`,\n InvalidModifierOnTypeParameterPositions: ({\n modifier\n }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`,\n InvalidModifierOnUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on a using declaration.`,\n InvalidModifiersOrder: ({\n orderedModifiers\n }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`,\n InvalidPropertyAccessAfterInstantiationExpression: \"Invalid property access after an instantiation expression. \" + \"You can either wrap the instantiation expression in parentheses, or delete the type arguments.\",\n InvalidTupleMemberLabel: \"Tuple members must be labeled with a simple identifier.\",\n MissingInterfaceName: \"'interface' declarations must be followed by an identifier.\",\n NonAbstractClassHasAbstractMethod: \"Abstract methods can only appear within an abstract class.\",\n NonClassMethodPropertyHasAbstractModifier: \"'abstract' modifier can only appear on a class, method, or property declaration.\",\n OptionalTypeBeforeRequired: \"A required element cannot follow an optional element.\",\n OverrideNotInSubClass: \"This member cannot have an 'override' modifier because its containing class does not extend another class.\",\n PatternIsOptional: \"A binding pattern parameter cannot be optional in an implementation signature.\",\n PrivateElementHasAbstract: \"Private elements cannot have the 'abstract' modifier.\",\n PrivateElementHasAccessibility: ({\n modifier\n }) => `Private elements cannot have an accessibility modifier ('${modifier}').`,\n ReadonlyForMethodSignature: \"'readonly' modifier can only appear on a property declaration or index signature.\",\n ReservedArrowTypeParam: \"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.\",\n ReservedTypeAssertion: \"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\",\n SetAccessorCannotHaveOptionalParameter: \"A 'set' accessor cannot have an optional parameter.\",\n SetAccessorCannotHaveRestParameter: \"A 'set' accessor cannot have rest parameter.\",\n SetAccessorCannotHaveReturnType: \"A 'set' accessor cannot have a return type annotation.\",\n SingleTypeParameterWithoutTrailingComma: ({\n typeParameterName\n }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,\n StaticBlockCannotHaveModifier: \"Static class blocks cannot have any modifier.\",\n TupleOptionalAfterType: \"A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).\",\n TypeAnnotationAfterAssign: \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeImportCannotSpecifyDefaultAndNamed: \"A type-only import can specify a default import or named bindings, but not both.\",\n TypeModifierIsUsedInTypeExports: \"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\",\n TypeModifierIsUsedInTypeImports: \"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\",\n UnexpectedParameterModifier: \"A parameter property is only allowed in a constructor implementation.\",\n UnexpectedReadonly: \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n UnexpectedTypeAnnotation: \"Did not expect a type annotation here.\",\n UnexpectedTypeCastInParameter: \"Unexpected type cast in parameter position.\",\n UnsupportedImportTypeArgument: \"Argument in a type import must be a string literal.\",\n UnsupportedParameterPropertyKind: \"A parameter property may not be declared using a binding pattern.\",\n UnsupportedSignatureParameterKind: ({\n type\n }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`,\n UsingDeclarationInAmbientContext: kind => `'${kind}' declarations are not allowed in ambient contexts.`\n});\nfunction keywordTypeFromName(value) {\n switch (value) {\n case \"any\":\n return \"TSAnyKeyword\";\n case \"boolean\":\n return \"TSBooleanKeyword\";\n case \"bigint\":\n return \"TSBigIntKeyword\";\n case \"never\":\n return \"TSNeverKeyword\";\n case \"number\":\n return \"TSNumberKeyword\";\n case \"object\":\n return \"TSObjectKeyword\";\n case \"string\":\n return \"TSStringKeyword\";\n case \"symbol\":\n return \"TSSymbolKeyword\";\n case \"undefined\":\n return \"TSUndefinedKeyword\";\n case \"unknown\":\n return \"TSUnknownKeyword\";\n default:\n return undefined;\n }\n}\nfunction tsIsAccessModifier(modifier) {\n return modifier === \"private\" || modifier === \"public\" || modifier === \"protected\";\n}\nfunction tsIsVarianceAnnotations(modifier) {\n return modifier === \"in\" || modifier === \"out\";\n}\nvar typescript = superClass => class TypeScriptParserMixin extends superClass {\n constructor(...args) {\n super(...args);\n this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, {\n allowedModifiers: [\"in\", \"out\"],\n disallowedModifiers: [\"const\", \"public\", \"private\", \"protected\", \"readonly\", \"declare\", \"abstract\", \"override\"],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameter\n });\n this.tsParseConstModifier = this.tsParseModifiers.bind(this, {\n allowedModifiers: [\"const\"],\n disallowedModifiers: [\"in\", \"out\"],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions\n });\n this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, {\n allowedModifiers: [\"in\", \"out\", \"const\"],\n disallowedModifiers: [\"public\", \"private\", \"protected\", \"readonly\", \"declare\", \"abstract\", \"override\"],\n errorTemplate: TSErrors.InvalidModifierOnTypeParameter\n });\n }\n getScopeHandler() {\n return TypeScriptScopeHandler;\n }\n tsIsIdentifier() {\n return tokenIsIdentifier(this.state.type);\n }\n tsTokenCanFollowModifier() {\n return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(139) || this.isLiteralPropertyName();\n }\n tsNextTokenOnSameLineAndCanFollowModifier() {\n this.next();\n if (this.hasPrecedingLineBreak()) {\n return false;\n }\n return this.tsTokenCanFollowModifier();\n }\n tsNextTokenCanFollowModifier() {\n if (this.match(106)) {\n this.next();\n return this.tsTokenCanFollowModifier();\n }\n return this.tsNextTokenOnSameLineAndCanFollowModifier();\n }\n tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) {\n if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) {\n return undefined;\n }\n const modifier = this.state.value;\n if (allowedModifiers.includes(modifier)) {\n if (hasSeenStaticModifier && this.match(106)) {\n return undefined;\n }\n if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n return undefined;\n }\n if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n return modifier;\n }\n }\n return undefined;\n }\n tsParseModifiers({\n allowedModifiers,\n disallowedModifiers,\n stopOnStartOfClassStaticBlock,\n errorTemplate = TSErrors.InvalidModifierOnTypeMember\n }, modified) {\n const enforceOrder = (loc, modifier, before, after) => {\n if (modifier === before && modified[after]) {\n this.raise(TSErrors.InvalidModifiersOrder, loc, {\n orderedModifiers: [before, after]\n });\n }\n };\n const incompatible = (loc, modifier, mod1, mod2) => {\n if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {\n this.raise(TSErrors.IncompatibleModifiers, loc, {\n modifiers: [mod1, mod2]\n });\n }\n };\n for (;;) {\n const {\n startLoc\n } = this.state;\n const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock, modified.static);\n if (!modifier) break;\n if (tsIsAccessModifier(modifier)) {\n if (modified.accessibility) {\n this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {\n modifier\n });\n } else {\n enforceOrder(startLoc, modifier, modifier, \"override\");\n enforceOrder(startLoc, modifier, modifier, \"static\");\n enforceOrder(startLoc, modifier, modifier, \"readonly\");\n modified.accessibility = modifier;\n }\n } else if (tsIsVarianceAnnotations(modifier)) {\n if (modified[modifier]) {\n this.raise(TSErrors.DuplicateModifier, startLoc, {\n modifier\n });\n }\n modified[modifier] = true;\n enforceOrder(startLoc, modifier, \"in\", \"out\");\n } else {\n if (hasOwnProperty.call(modified, modifier)) {\n this.raise(TSErrors.DuplicateModifier, startLoc, {\n modifier\n });\n } else {\n enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n enforceOrder(startLoc, modifier, \"static\", \"override\");\n enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n incompatible(startLoc, modifier, \"declare\", \"override\");\n incompatible(startLoc, modifier, \"static\", \"abstract\");\n }\n modified[modifier] = true;\n }\n if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {\n this.raise(errorTemplate, startLoc, {\n modifier\n });\n }\n }\n }\n tsIsListTerminator(kind) {\n switch (kind) {\n case \"EnumMembers\":\n case \"TypeMembers\":\n return this.match(8);\n case \"HeritageClauseElement\":\n return this.match(5);\n case \"TupleElementTypes\":\n return this.match(3);\n case \"TypeParametersOrArguments\":\n return this.match(48);\n }\n }\n tsParseList(kind, parseElement) {\n const result = [];\n while (!this.tsIsListTerminator(kind)) {\n result.push(parseElement());\n }\n return result;\n }\n tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {\n return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));\n }\n tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {\n const result = [];\n let trailingCommaPos = -1;\n for (;;) {\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n trailingCommaPos = -1;\n const element = parseElement();\n if (element == null) {\n return undefined;\n }\n result.push(element);\n if (this.eat(12)) {\n trailingCommaPos = this.state.lastTokStartLoc.index;\n continue;\n }\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n if (expectSuccess) {\n this.expect(12);\n }\n return undefined;\n }\n if (refTrailingCommaPos) {\n refTrailingCommaPos.value = trailingCommaPos;\n }\n return result;\n }\n tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {\n if (!skipFirstToken) {\n if (bracket) {\n this.expect(0);\n } else {\n this.expect(47);\n }\n }\n const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);\n if (bracket) {\n this.expect(3);\n } else {\n this.expect(48);\n }\n return result;\n }\n tsParseImportType() {\n const node = this.startNode();\n this.expect(83);\n this.expect(10);\n if (!this.match(134)) {\n this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);\n node.argument = super.parseExprAtom();\n } else {\n node.argument = this.parseStringLiteral(this.state.value);\n }\n if (this.eat(12)) {\n node.options = this.tsParseImportTypeOptions();\n } else {\n node.options = null;\n }\n this.expect(11);\n if (this.eat(16)) {\n node.qualifier = this.tsParseEntityName(1 | 2);\n }\n if (this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSImportType\");\n }\n tsParseImportTypeOptions() {\n const node = this.startNode();\n this.expect(5);\n const withProperty = this.startNode();\n if (this.isContextual(76)) {\n withProperty.method = false;\n withProperty.key = this.parseIdentifier(true);\n withProperty.computed = false;\n withProperty.shorthand = false;\n } else {\n this.unexpected(null, 76);\n }\n this.expect(14);\n withProperty.value = this.tsParseImportTypeWithPropertyValue();\n node.properties = [this.finishObjectProperty(withProperty)];\n this.eat(12);\n this.expect(8);\n return this.finishNode(node, \"ObjectExpression\");\n }\n tsParseImportTypeWithPropertyValue() {\n const node = this.startNode();\n const properties = [];\n this.expect(5);\n while (!this.match(8)) {\n const type = this.state.type;\n if (tokenIsIdentifier(type) || type === 134) {\n properties.push(super.parsePropertyDefinition(null));\n } else {\n this.unexpected();\n }\n this.eat(12);\n }\n node.properties = properties;\n this.next();\n return this.finishNode(node, \"ObjectExpression\");\n }\n tsParseEntityName(flags) {\n let entity;\n if (flags & 1 && this.match(78)) {\n if (flags & 2) {\n entity = this.parseIdentifier(true);\n } else {\n const node = this.startNode();\n this.next();\n entity = this.finishNode(node, \"ThisExpression\");\n }\n } else {\n entity = this.parseIdentifier(!!(flags & 1));\n }\n while (this.eat(16)) {\n const node = this.startNodeAtNode(entity);\n node.left = entity;\n node.right = this.parseIdentifier(!!(flags & 1));\n entity = this.finishNode(node, \"TSQualifiedName\");\n }\n return entity;\n }\n tsParseTypeReference() {\n const node = this.startNode();\n node.typeName = this.tsParseEntityName(1);\n if (!this.hasPrecedingLineBreak() && this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSTypeReference\");\n }\n tsParseThisTypePredicate(lhs) {\n this.next();\n const node = this.startNodeAtNode(lhs);\n node.parameterName = lhs;\n node.typeAnnotation = this.tsParseTypeAnnotation(false);\n node.asserts = false;\n return this.finishNode(node, \"TSTypePredicate\");\n }\n tsParseThisTypeNode() {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"TSThisType\");\n }\n tsParseTypeQuery() {\n const node = this.startNode();\n this.expect(87);\n if (this.match(83)) {\n node.exprName = this.tsParseImportType();\n } else {\n node.exprName = this.tsParseEntityName(1 | 2);\n }\n if (!this.hasPrecedingLineBreak() && this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSTypeQuery\");\n }\n tsParseTypeParameter(parseModifiers) {\n const node = this.startNode();\n parseModifiers(node);\n node.name = this.tsParseTypeParameterName();\n node.constraint = this.tsEatThenParseType(81);\n node.default = this.tsEatThenParseType(29);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n tsTryParseTypeParameters(parseModifiers) {\n if (this.match(47)) {\n return this.tsParseTypeParameters(parseModifiers);\n }\n }\n tsParseTypeParameters(parseModifiers) {\n const node = this.startNode();\n if (this.match(47) || this.match(143)) {\n this.next();\n } else {\n this.unexpected();\n }\n const refTrailingCommaPos = {\n value: -1\n };\n node.params = this.tsParseBracketedList(\"TypeParametersOrArguments\", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos);\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeParameters, node);\n }\n if (refTrailingCommaPos.value !== -1) {\n this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n }\n return this.finishNode(node, \"TSTypeParameterDeclaration\");\n }\n tsFillSignature(returnToken, signature) {\n const returnTokenRequired = returnToken === 19;\n const paramsKey = \"parameters\";\n const returnTypeKey = \"typeAnnotation\";\n signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n this.expect(10);\n signature[paramsKey] = this.tsParseBindingListForSignature();\n if (returnTokenRequired) {\n signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n } else if (this.match(returnToken)) {\n signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n }\n }\n tsParseBindingListForSignature() {\n const list = super.parseBindingList(11, 41, 2);\n for (const pattern of list) {\n const {\n type\n } = pattern;\n if (type === \"AssignmentPattern\" || type === \"TSParameterProperty\") {\n this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {\n type\n });\n }\n }\n return list;\n }\n tsParseTypeMemberSemicolon() {\n if (!this.eat(12) && !this.isLineTerminator()) {\n this.expect(13);\n }\n }\n tsParseSignatureMember(kind, node) {\n this.tsFillSignature(14, node);\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, kind);\n }\n tsIsUnambiguouslyIndexSignature() {\n this.next();\n if (tokenIsIdentifier(this.state.type)) {\n this.next();\n return this.match(14);\n }\n return false;\n }\n tsTryParseIndexSignature(node) {\n if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {\n return;\n }\n this.expect(0);\n const id = this.parseIdentifier();\n id.typeAnnotation = this.tsParseTypeAnnotation();\n this.resetEndLocation(id);\n this.expect(3);\n node.parameters = [id];\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, \"TSIndexSignature\");\n }\n tsParsePropertyOrMethodSignature(node, readonly) {\n if (this.eat(17)) node.optional = true;\n if (this.match(10) || this.match(47)) {\n if (readonly) {\n this.raise(TSErrors.ReadonlyForMethodSignature, node);\n }\n const method = node;\n if (method.kind && this.match(47)) {\n this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition());\n }\n this.tsFillSignature(14, method);\n this.tsParseTypeMemberSemicolon();\n const paramsKey = \"parameters\";\n const returnTypeKey = \"typeAnnotation\";\n if (method.kind === \"get\") {\n if (method[paramsKey].length > 0) {\n this.raise(Errors.BadGetterArity, this.state.curPosition());\n if (this.isThisParam(method[paramsKey][0])) {\n this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());\n }\n }\n } else if (method.kind === \"set\") {\n if (method[paramsKey].length !== 1) {\n this.raise(Errors.BadSetterArity, this.state.curPosition());\n } else {\n const firstParameter = method[paramsKey][0];\n if (this.isThisParam(firstParameter)) {\n this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());\n }\n if (firstParameter.type === \"Identifier\" && firstParameter.optional) {\n this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition());\n }\n if (firstParameter.type === \"RestElement\") {\n this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition());\n }\n }\n if (method[returnTypeKey]) {\n this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]);\n }\n } else {\n method.kind = \"method\";\n }\n return this.finishNode(method, \"TSMethodSignature\");\n } else {\n const property = node;\n if (readonly) property.readonly = true;\n const type = this.tsTryParseTypeAnnotation();\n if (type) property.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(property, \"TSPropertySignature\");\n }\n }\n tsParseTypeMember() {\n const node = this.startNode();\n if (this.match(10) || this.match(47)) {\n return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n }\n if (this.match(77)) {\n const id = this.startNode();\n this.next();\n if (this.match(10) || this.match(47)) {\n return this.tsParseSignatureMember(\"TSConstructSignatureDeclaration\", node);\n } else {\n node.key = this.createIdentifier(id, \"new\");\n return this.tsParsePropertyOrMethodSignature(node, false);\n }\n }\n this.tsParseModifiers({\n allowedModifiers: [\"readonly\"],\n disallowedModifiers: [\"declare\", \"abstract\", \"private\", \"protected\", \"public\", \"static\", \"override\"]\n }, node);\n const idx = this.tsTryParseIndexSignature(node);\n if (idx) {\n return idx;\n }\n super.parsePropertyName(node);\n if (!node.computed && node.key.type === \"Identifier\" && (node.key.name === \"get\" || node.key.name === \"set\") && this.tsTokenCanFollowModifier()) {\n node.kind = node.key.name;\n super.parsePropertyName(node);\n if (!this.match(10) && !this.match(47)) {\n this.unexpected(null, 10);\n }\n }\n return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n }\n tsParseTypeLiteral() {\n const node = this.startNode();\n node.members = this.tsParseObjectTypeMembers();\n return this.finishNode(node, \"TSTypeLiteral\");\n }\n tsParseObjectTypeMembers() {\n this.expect(5);\n const members = this.tsParseList(\"TypeMembers\", this.tsParseTypeMember.bind(this));\n this.expect(8);\n return members;\n }\n tsIsStartOfMappedType() {\n this.next();\n if (this.eat(53)) {\n return this.isContextual(122);\n }\n if (this.isContextual(122)) {\n this.next();\n }\n if (!this.match(0)) {\n return false;\n }\n this.next();\n if (!this.tsIsIdentifier()) {\n return false;\n }\n this.next();\n return this.match(58);\n }\n tsParseMappedType() {\n const node = this.startNode();\n this.expect(5);\n if (this.match(53)) {\n node.readonly = this.state.value;\n this.next();\n this.expectContextual(122);\n } else if (this.eatContextual(122)) {\n node.readonly = true;\n }\n this.expect(0);\n const typeParameter = this.startNode();\n typeParameter.name = this.tsParseTypeParameterName();\n typeParameter.constraint = this.tsExpectThenParseType(58);\n node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n node.nameType = this.eatContextual(93) ? this.tsParseType() : null;\n this.expect(3);\n if (this.match(53)) {\n node.optional = this.state.value;\n this.next();\n this.expect(17);\n } else if (this.eat(17)) {\n node.optional = true;\n }\n node.typeAnnotation = this.tsTryParseType();\n this.semicolon();\n this.expect(8);\n return this.finishNode(node, \"TSMappedType\");\n }\n tsParseTupleType() {\n const node = this.startNode();\n node.elementTypes = this.tsParseBracketedList(\"TupleElementTypes\", this.tsParseTupleElementType.bind(this), true, false);\n let seenOptionalElement = false;\n node.elementTypes.forEach(elementNode => {\n const {\n type\n } = elementNode;\n if (seenOptionalElement && type !== \"TSRestType\" && type !== \"TSOptionalType\" && !(type === \"TSNamedTupleMember\" && elementNode.optional)) {\n this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);\n }\n seenOptionalElement || (seenOptionalElement = type === \"TSNamedTupleMember\" && elementNode.optional || type === \"TSOptionalType\");\n });\n return this.finishNode(node, \"TSTupleType\");\n }\n tsParseTupleElementType() {\n const restStartLoc = this.state.startLoc;\n const rest = this.eat(21);\n const {\n startLoc\n } = this.state;\n let labeled;\n let label;\n let optional;\n let type;\n const isWord = tokenIsKeywordOrIdentifier(this.state.type);\n const chAfterWord = isWord ? this.lookaheadCharCode() : null;\n if (chAfterWord === 58) {\n labeled = true;\n optional = false;\n label = this.parseIdentifier(true);\n this.expect(14);\n type = this.tsParseType();\n } else if (chAfterWord === 63) {\n optional = true;\n const wordName = this.state.value;\n const typeOrLabel = this.tsParseNonArrayType();\n if (this.lookaheadCharCode() === 58) {\n labeled = true;\n label = this.createIdentifier(this.startNodeAt(startLoc), wordName);\n this.expect(17);\n this.expect(14);\n type = this.tsParseType();\n } else {\n labeled = false;\n type = typeOrLabel;\n this.expect(17);\n }\n } else {\n type = this.tsParseType();\n optional = this.eat(17);\n labeled = this.eat(14);\n }\n if (labeled) {\n let labeledNode;\n if (label) {\n labeledNode = this.startNodeAt(startLoc);\n labeledNode.optional = optional;\n labeledNode.label = label;\n labeledNode.elementType = type;\n if (this.eat(17)) {\n labeledNode.optional = true;\n this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc);\n }\n } else {\n labeledNode = this.startNodeAt(startLoc);\n labeledNode.optional = optional;\n this.raise(TSErrors.InvalidTupleMemberLabel, type);\n labeledNode.label = type;\n labeledNode.elementType = this.tsParseType();\n }\n type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n } else if (optional) {\n const optionalTypeNode = this.startNodeAt(startLoc);\n optionalTypeNode.typeAnnotation = type;\n type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n }\n if (rest) {\n const restNode = this.startNodeAt(restStartLoc);\n restNode.typeAnnotation = type;\n type = this.finishNode(restNode, \"TSRestType\");\n }\n return type;\n }\n tsParseParenthesizedType() {\n const node = this.startNode();\n this.expect(10);\n node.typeAnnotation = this.tsParseType();\n this.expect(11);\n return this.finishNode(node, \"TSParenthesizedType\");\n }\n tsParseFunctionOrConstructorType(type, abstract) {\n const node = this.startNode();\n if (type === \"TSConstructorType\") {\n node.abstract = !!abstract;\n if (abstract) this.next();\n this.next();\n }\n this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node));\n return this.finishNode(node, type);\n }\n tsParseLiteralTypeNode() {\n const node = this.startNode();\n switch (this.state.type) {\n case 135:\n case 136:\n case 134:\n case 85:\n case 86:\n node.literal = super.parseExprAtom();\n break;\n default:\n this.unexpected();\n }\n return this.finishNode(node, \"TSLiteralType\");\n }\n tsParseTemplateLiteralType() {\n const node = this.startNode();\n node.literal = super.parseTemplate(false);\n return this.finishNode(node, \"TSLiteralType\");\n }\n parseTemplateSubstitution() {\n if (this.state.inType) return this.tsParseType();\n return super.parseTemplateSubstitution();\n }\n tsParseThisTypeOrThisTypePredicate() {\n const thisKeyword = this.tsParseThisTypeNode();\n if (this.isContextual(116) && !this.hasPrecedingLineBreak()) {\n return this.tsParseThisTypePredicate(thisKeyword);\n } else {\n return thisKeyword;\n }\n }\n tsParseNonArrayType() {\n switch (this.state.type) {\n case 134:\n case 135:\n case 136:\n case 85:\n case 86:\n return this.tsParseLiteralTypeNode();\n case 53:\n if (this.state.value === \"-\") {\n const node = this.startNode();\n const nextToken = this.lookahead();\n if (nextToken.type !== 135 && nextToken.type !== 136) {\n this.unexpected();\n }\n node.literal = this.parseMaybeUnary();\n return this.finishNode(node, \"TSLiteralType\");\n }\n break;\n case 78:\n return this.tsParseThisTypeOrThisTypePredicate();\n case 87:\n return this.tsParseTypeQuery();\n case 83:\n return this.tsParseImportType();\n case 5:\n return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();\n case 0:\n return this.tsParseTupleType();\n case 10:\n return this.tsParseParenthesizedType();\n case 25:\n case 24:\n return this.tsParseTemplateLiteralType();\n default:\n {\n const {\n type\n } = this.state;\n if (tokenIsIdentifier(type) || type === 88 || type === 84) {\n const nodeType = type === 88 ? \"TSVoidKeyword\" : type === 84 ? \"TSNullKeyword\" : keywordTypeFromName(this.state.value);\n if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, nodeType);\n }\n return this.tsParseTypeReference();\n }\n }\n }\n throw this.unexpected();\n }\n tsParseArrayTypeOrHigher() {\n const {\n startLoc\n } = this.state;\n let type = this.tsParseNonArrayType();\n while (!this.hasPrecedingLineBreak() && this.eat(0)) {\n if (this.match(3)) {\n const node = this.startNodeAt(startLoc);\n node.elementType = type;\n this.expect(3);\n type = this.finishNode(node, \"TSArrayType\");\n } else {\n const node = this.startNodeAt(startLoc);\n node.objectType = type;\n node.indexType = this.tsParseType();\n this.expect(3);\n type = this.finishNode(node, \"TSIndexedAccessType\");\n }\n }\n return type;\n }\n tsParseTypeOperator() {\n const node = this.startNode();\n const operator = this.state.value;\n this.next();\n node.operator = operator;\n node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n if (operator === \"readonly\") {\n this.tsCheckTypeAnnotationForReadOnly(node);\n }\n return this.finishNode(node, \"TSTypeOperator\");\n }\n tsCheckTypeAnnotationForReadOnly(node) {\n switch (node.typeAnnotation.type) {\n case \"TSTupleType\":\n case \"TSArrayType\":\n return;\n default:\n this.raise(TSErrors.UnexpectedReadonly, node);\n }\n }\n tsParseInferType() {\n const node = this.startNode();\n this.expectContextual(115);\n const typeParameter = this.startNode();\n typeParameter.name = this.tsParseTypeParameterName();\n typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType());\n node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n return this.finishNode(node, \"TSInferType\");\n }\n tsParseConstraintForInferType() {\n if (this.eat(81)) {\n const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType());\n if (this.state.inDisallowConditionalTypesContext || !this.match(17)) {\n return constraint;\n }\n }\n }\n tsParseTypeOperatorOrHigher() {\n const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher());\n }\n tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {\n const node = this.startNode();\n const hasLeadingOperator = this.eat(operator);\n const types = [];\n do {\n types.push(parseConstituentType());\n } while (this.eat(operator));\n if (types.length === 1 && !hasLeadingOperator) {\n return types[0];\n }\n node.types = types;\n return this.finishNode(node, kind);\n }\n tsParseIntersectionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\"TSIntersectionType\", this.tsParseTypeOperatorOrHigher.bind(this), 45);\n }\n tsParseUnionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\"TSUnionType\", this.tsParseIntersectionTypeOrHigher.bind(this), 43);\n }\n tsIsStartOfFunctionType() {\n if (this.match(47)) {\n return true;\n }\n return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));\n }\n tsSkipParameterStart() {\n if (tokenIsIdentifier(this.state.type) || this.match(78)) {\n this.next();\n return true;\n }\n if (this.match(5)) {\n const {\n errors\n } = this.state;\n const previousErrorCount = errors.length;\n try {\n this.parseObjectLike(8, true);\n return errors.length === previousErrorCount;\n } catch (_unused) {\n return false;\n }\n }\n if (this.match(0)) {\n this.next();\n const {\n errors\n } = this.state;\n const previousErrorCount = errors.length;\n try {\n super.parseBindingList(3, 93, 1);\n return errors.length === previousErrorCount;\n } catch (_unused2) {\n return false;\n }\n }\n return false;\n }\n tsIsUnambiguouslyStartOfFunctionType() {\n this.next();\n if (this.match(11) || this.match(21)) {\n return true;\n }\n if (this.tsSkipParameterStart()) {\n if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) {\n return true;\n }\n if (this.match(11)) {\n this.next();\n if (this.match(19)) {\n return true;\n }\n }\n }\n return false;\n }\n tsParseTypeOrTypePredicateAnnotation(returnToken) {\n return this.tsInType(() => {\n const t = this.startNode();\n this.expect(returnToken);\n const node = this.startNode();\n const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));\n if (asserts && this.match(78)) {\n let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n if (thisTypePredicate.type === \"TSThisType\") {\n node.parameterName = thisTypePredicate;\n node.asserts = true;\n node.typeAnnotation = null;\n thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n } else {\n this.resetStartLocationFromNode(thisTypePredicate, node);\n thisTypePredicate.asserts = true;\n }\n t.typeAnnotation = thisTypePredicate;\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n if (!typePredicateVariable) {\n if (!asserts) {\n return this.tsParseTypeAnnotation(false, t);\n }\n node.parameterName = this.parseIdentifier();\n node.asserts = asserts;\n node.typeAnnotation = null;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n const type = this.tsParseTypeAnnotation(false);\n node.parameterName = typePredicateVariable;\n node.typeAnnotation = type;\n node.asserts = asserts;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n });\n }\n tsTryParseTypeOrTypePredicateAnnotation() {\n if (this.match(14)) {\n return this.tsParseTypeOrTypePredicateAnnotation(14);\n }\n }\n tsTryParseTypeAnnotation() {\n if (this.match(14)) {\n return this.tsParseTypeAnnotation();\n }\n }\n tsTryParseType() {\n return this.tsEatThenParseType(14);\n }\n tsParseTypePredicatePrefix() {\n const id = this.parseIdentifier();\n if (this.isContextual(116) && !this.hasPrecedingLineBreak()) {\n this.next();\n return id;\n }\n }\n tsParseTypePredicateAsserts() {\n if (this.state.type !== 109) {\n return false;\n }\n const containsEsc = this.state.containsEsc;\n this.next();\n if (!tokenIsIdentifier(this.state.type) && !this.match(78)) {\n return false;\n }\n if (containsEsc) {\n this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, {\n reservedWord: \"asserts\"\n });\n }\n return true;\n }\n tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {\n this.tsInType(() => {\n if (eatColon) this.expect(14);\n t.typeAnnotation = this.tsParseType();\n });\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n tsParseType() {\n assert(this.state.inType);\n const type = this.tsParseNonConditionalType();\n if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) {\n return type;\n }\n const node = this.startNodeAtNode(type);\n node.checkType = type;\n node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType());\n this.expect(17);\n node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());\n this.expect(14);\n node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType());\n return this.finishNode(node, \"TSConditionalType\");\n }\n isAbstractConstructorSignature() {\n return this.isContextual(124) && this.isLookaheadContextual(\"new\");\n }\n tsParseNonConditionalType() {\n if (this.tsIsStartOfFunctionType()) {\n return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n }\n if (this.match(77)) {\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n } else if (this.isAbstractConstructorSignature()) {\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\", true);\n }\n return this.tsParseUnionTypeOrHigher();\n }\n tsParseTypeAssertion() {\n if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);\n }\n const node = this.startNode();\n node.typeAnnotation = this.tsInType(() => {\n this.next();\n return this.match(75) ? this.tsParseTypeReference() : this.tsParseType();\n });\n this.expect(48);\n node.expression = this.parseMaybeUnary();\n return this.finishNode(node, \"TSTypeAssertion\");\n }\n tsParseHeritageClause(token) {\n const originalStartLoc = this.state.startLoc;\n const delimitedList = this.tsParseDelimitedList(\"HeritageClauseElement\", () => {\n const node = this.startNode();\n node.expression = this.tsParseEntityName(1 | 2);\n if (this.match(47)) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSExpressionWithTypeArguments\");\n });\n if (!delimitedList.length) {\n this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {\n token\n });\n }\n return delimitedList;\n }\n tsParseInterfaceDeclaration(node, properties = {}) {\n if (this.hasFollowingLineBreak()) return null;\n this.expectContextual(129);\n if (properties.declare) node.declare = true;\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, 130);\n } else {\n node.id = null;\n this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);\n }\n node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);\n if (this.eat(81)) {\n node.extends = this.tsParseHeritageClause(\"extends\");\n }\n const body = this.startNode();\n body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n node.body = this.finishNode(body, \"TSInterfaceBody\");\n return this.finishNode(node, \"TSInterfaceDeclaration\");\n }\n tsParseTypeAliasDeclaration(node) {\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, 2);\n node.typeAnnotation = this.tsInType(() => {\n node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers);\n this.expect(29);\n if (this.isContextual(114) && this.lookaheadCharCode() !== 46) {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"TSIntrinsicKeyword\");\n }\n return this.tsParseType();\n });\n this.semicolon();\n return this.finishNode(node, \"TSTypeAliasDeclaration\");\n }\n tsInTopLevelContext(cb) {\n if (this.curContext() !== types.brace) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n } else {\n return cb();\n }\n }\n tsInType(cb) {\n const oldInType = this.state.inType;\n this.state.inType = true;\n try {\n return cb();\n } finally {\n this.state.inType = oldInType;\n }\n }\n tsInDisallowConditionalTypesContext(cb) {\n const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;\n this.state.inDisallowConditionalTypesContext = true;\n try {\n return cb();\n } finally {\n this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n }\n }\n tsInAllowConditionalTypesContext(cb) {\n const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;\n this.state.inDisallowConditionalTypesContext = false;\n try {\n return cb();\n } finally {\n this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n }\n }\n tsEatThenParseType(token) {\n if (this.match(token)) {\n return this.tsNextThenParseType();\n }\n }\n tsExpectThenParseType(token) {\n return this.tsInType(() => {\n this.expect(token);\n return this.tsParseType();\n });\n }\n tsNextThenParseType() {\n return this.tsInType(() => {\n this.next();\n return this.tsParseType();\n });\n }\n tsParseEnumMember() {\n const node = this.startNode();\n node.id = this.match(134) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true);\n if (this.eat(29)) {\n node.initializer = super.parseMaybeAssignAllowIn();\n }\n return this.finishNode(node, \"TSEnumMember\");\n }\n tsParseEnumDeclaration(node, properties = {}) {\n if (properties.const) node.const = true;\n if (properties.declare) node.declare = true;\n this.expectContextual(126);\n node.id = this.parseIdentifier();\n this.checkIdentifier(node.id, node.const ? 8971 : 8459);\n this.expect(5);\n node.members = this.tsParseDelimitedList(\"EnumMembers\", this.tsParseEnumMember.bind(this));\n this.expect(8);\n return this.finishNode(node, \"TSEnumDeclaration\");\n }\n tsParseEnumBody() {\n const node = this.startNode();\n this.expect(5);\n node.members = this.tsParseDelimitedList(\"EnumMembers\", this.tsParseEnumMember.bind(this));\n this.expect(8);\n return this.finishNode(node, \"TSEnumBody\");\n }\n tsParseModuleBlock() {\n const node = this.startNode();\n this.scope.enter(0);\n this.expect(5);\n super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8);\n this.scope.exit();\n return this.finishNode(node, \"TSModuleBlock\");\n }\n tsParseModuleOrNamespaceDeclaration(node, nested = false) {\n node.id = this.parseIdentifier();\n if (!nested) {\n this.checkIdentifier(node.id, 1024);\n }\n if (this.eat(16)) {\n const inner = this.startNode();\n this.tsParseModuleOrNamespaceDeclaration(inner, true);\n node.body = inner;\n } else {\n this.scope.enter(1024);\n this.prodParam.enter(0);\n node.body = this.tsParseModuleBlock();\n this.prodParam.exit();\n this.scope.exit();\n }\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n tsParseAmbientExternalModuleDeclaration(node) {\n if (this.isContextual(112)) {\n node.kind = \"global\";\n node.global = true;\n node.id = this.parseIdentifier();\n } else if (this.match(134)) {\n node.kind = \"module\";\n node.id = super.parseStringLiteral(this.state.value);\n } else {\n this.unexpected();\n }\n if (this.match(5)) {\n this.scope.enter(1024);\n this.prodParam.enter(0);\n node.body = this.tsParseModuleBlock();\n this.prodParam.exit();\n this.scope.exit();\n } else {\n this.semicolon();\n }\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) {\n node.isExport = isExport || false;\n node.id = maybeDefaultIdentifier || this.parseIdentifier();\n this.checkIdentifier(node.id, 4096);\n this.expect(29);\n const moduleReference = this.tsParseModuleReference();\n if (node.importKind === \"type\" && moduleReference.type !== \"TSExternalModuleReference\") {\n this.raise(TSErrors.ImportAliasHasImportType, moduleReference);\n }\n node.moduleReference = moduleReference;\n this.semicolon();\n return this.finishNode(node, \"TSImportEqualsDeclaration\");\n }\n tsIsExternalModuleReference() {\n return this.isContextual(119) && this.lookaheadCharCode() === 40;\n }\n tsParseModuleReference() {\n return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0);\n }\n tsParseExternalModuleReference() {\n const node = this.startNode();\n this.expectContextual(119);\n this.expect(10);\n if (!this.match(134)) {\n this.unexpected();\n }\n node.expression = super.parseExprAtom();\n this.expect(11);\n this.sawUnambiguousESM = true;\n return this.finishNode(node, \"TSExternalModuleReference\");\n }\n tsLookAhead(f) {\n const state = this.state.clone();\n const res = f();\n this.state = state;\n return res;\n }\n tsTryParseAndCatch(f) {\n const result = this.tryParse(abort => f() || abort());\n if (result.aborted || !result.node) return;\n if (result.error) this.state = result.failState;\n return result.node;\n }\n tsTryParse(f) {\n const state = this.state.clone();\n const result = f();\n if (result !== undefined && result !== false) {\n return result;\n }\n this.state = state;\n }\n tsTryParseDeclare(node) {\n if (this.isLineTerminator()) {\n return;\n }\n const startType = this.state.type;\n return this.tsInAmbientContext(() => {\n switch (startType) {\n case 68:\n node.declare = true;\n return super.parseFunctionStatement(node, false, false);\n case 80:\n node.declare = true;\n return this.parseClass(node, true, false);\n case 126:\n return this.tsParseEnumDeclaration(node, {\n declare: true\n });\n case 112:\n return this.tsParseAmbientExternalModuleDeclaration(node);\n case 100:\n if (this.state.containsEsc) {\n return;\n }\n case 75:\n case 74:\n if (!this.match(75) || !this.isLookaheadContextual(\"enum\")) {\n node.declare = true;\n return this.parseVarStatement(node, this.state.value, true);\n }\n this.expect(75);\n return this.tsParseEnumDeclaration(node, {\n const: true,\n declare: true\n });\n case 107:\n if (this.isUsing()) {\n this.raise(TSErrors.InvalidModifierOnUsingDeclaration, this.state.startLoc, \"declare\");\n node.declare = true;\n return this.parseVarStatement(node, \"using\", true);\n }\n break;\n case 96:\n if (this.isAwaitUsing()) {\n this.raise(TSErrors.InvalidModifierOnAwaitUsingDeclaration, this.state.startLoc, \"declare\");\n node.declare = true;\n this.next();\n return this.parseVarStatement(node, \"await using\", true);\n }\n break;\n case 129:\n {\n const result = this.tsParseInterfaceDeclaration(node, {\n declare: true\n });\n if (result) return result;\n }\n default:\n if (tokenIsIdentifier(startType)) {\n return this.tsParseDeclaration(node, this.state.type, true, null);\n }\n }\n });\n }\n tsTryParseExportDeclaration() {\n return this.tsParseDeclaration(this.startNode(), this.state.type, true, null);\n }\n tsParseDeclaration(node, type, next, decorators) {\n switch (type) {\n case 124:\n if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) {\n return this.tsParseAbstractDeclaration(node, decorators);\n }\n break;\n case 127:\n if (this.tsCheckLineTerminator(next)) {\n if (this.match(134)) {\n return this.tsParseAmbientExternalModuleDeclaration(node);\n } else if (tokenIsIdentifier(this.state.type)) {\n node.kind = \"module\";\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n }\n break;\n case 128:\n if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n node.kind = \"namespace\";\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n break;\n case 130:\n if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {\n return this.tsParseTypeAliasDeclaration(node);\n }\n break;\n }\n }\n tsCheckLineTerminator(next) {\n if (next) {\n if (this.hasFollowingLineBreak()) return false;\n this.next();\n return true;\n }\n return !this.isLineTerminator();\n }\n tsTryParseGenericAsyncArrowFunction(startLoc) {\n if (!this.match(47)) return;\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n this.state.maybeInArrowParameters = true;\n const res = this.tsTryParseAndCatch(() => {\n const node = this.startNodeAt(startLoc);\n node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);\n super.parseFunctionParams(node);\n node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n this.expect(19);\n return node;\n });\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n if (!res) return;\n return super.parseArrowExpression(res, null, true);\n }\n tsParseTypeArgumentsInExpression() {\n if (this.reScan_lt() !== 47) return;\n return this.tsParseTypeArguments();\n }\n tsParseTypeArguments() {\n const node = this.startNode();\n node.params = this.tsInType(() => this.tsInTopLevelContext(() => {\n this.expect(47);\n return this.tsParseDelimitedList(\"TypeParametersOrArguments\", this.tsParseType.bind(this));\n }));\n if (node.params.length === 0) {\n this.raise(TSErrors.EmptyTypeArguments, node);\n } else if (!this.state.inType && this.curContext() === types.brace) {\n this.reScan_lt_gt();\n }\n this.expect(48);\n return this.finishNode(node, \"TSTypeParameterInstantiation\");\n }\n tsIsDeclarationStart() {\n return tokenIsTSDeclarationStart(this.state.type);\n }\n isExportDefaultSpecifier() {\n if (this.tsIsDeclarationStart()) return false;\n return super.isExportDefaultSpecifier();\n }\n parseBindingElement(flags, decorators) {\n const startLoc = decorators.length ? decorators[0].loc.start : this.state.startLoc;\n const modified = {};\n this.tsParseModifiers({\n allowedModifiers: [\"public\", \"private\", \"protected\", \"override\", \"readonly\"]\n }, modified);\n const accessibility = modified.accessibility;\n const override = modified.override;\n const readonly = modified.readonly;\n if (!(flags & 4) && (accessibility || readonly || override)) {\n this.raise(TSErrors.UnexpectedParameterModifier, startLoc);\n }\n const left = this.parseMaybeDefault();\n if (flags & 2) {\n this.parseFunctionParamType(left);\n }\n const elt = this.parseMaybeDefault(left.loc.start, left);\n if (accessibility || readonly || override) {\n const pp = this.startNodeAt(startLoc);\n if (decorators.length) {\n pp.decorators = decorators;\n }\n if (accessibility) pp.accessibility = accessibility;\n if (readonly) pp.readonly = readonly;\n if (override) pp.override = override;\n if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n this.raise(TSErrors.UnsupportedParameterPropertyKind, pp);\n }\n pp.parameter = elt;\n return this.finishNode(pp, \"TSParameterProperty\");\n }\n if (decorators.length) {\n left.decorators = decorators;\n }\n return elt;\n }\n isSimpleParameter(node) {\n return node.type === \"TSParameterProperty\" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node);\n }\n tsDisallowOptionalPattern(node) {\n for (const param of node.params) {\n if (param.type !== \"Identifier\" && param.optional && !this.state.isAmbientContext) {\n this.raise(TSErrors.PatternIsOptional, param);\n }\n }\n }\n setArrowFunctionParameters(node, params, trailingCommaLoc) {\n super.setArrowFunctionParameters(node, params, trailingCommaLoc);\n this.tsDisallowOptionalPattern(node);\n }\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n if (this.match(14)) {\n node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);\n }\n const bodilessType = type === \"FunctionDeclaration\" ? \"TSDeclareFunction\" : type === \"ClassMethod\" || type === \"ClassPrivateMethod\" ? \"TSDeclareMethod\" : undefined;\n if (bodilessType && !this.match(5) && this.isLineTerminator()) {\n return this.finishNode(node, bodilessType);\n }\n if (bodilessType === \"TSDeclareFunction\" && this.state.isAmbientContext) {\n this.raise(TSErrors.DeclareFunctionHasImplementation, node);\n if (node.declare) {\n return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n }\n }\n this.tsDisallowOptionalPattern(node);\n return super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n registerFunctionStatementId(node) {\n if (!node.body && node.id) {\n this.checkIdentifier(node.id, 1024);\n } else {\n super.registerFunctionStatementId(node);\n }\n }\n tsCheckForInvalidTypeCasts(items) {\n items.forEach(node => {\n if ((node == null ? void 0 : node.type) === \"TSTypeCastExpression\") {\n this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);\n }\n });\n }\n toReferencedList(exprList, isInParens) {\n this.tsCheckForInvalidTypeCasts(exprList);\n return exprList;\n }\n parseArrayLike(close, isTuple, refExpressionErrors) {\n const node = super.parseArrayLike(close, isTuple, refExpressionErrors);\n if (node.type === \"ArrayExpression\") {\n this.tsCheckForInvalidTypeCasts(node.elements);\n }\n return node;\n }\n parseSubscript(base, startLoc, noCalls, state) {\n if (!this.hasPrecedingLineBreak() && this.match(35)) {\n this.state.canStartJSXElement = false;\n this.next();\n const nonNullExpression = this.startNodeAt(startLoc);\n nonNullExpression.expression = base;\n return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n }\n let isOptionalCall = false;\n if (this.match(18) && this.lookaheadCharCode() === 60) {\n if (noCalls) {\n state.stop = true;\n return base;\n }\n state.optionalChainMember = isOptionalCall = true;\n this.next();\n }\n if (this.match(47) || this.match(51)) {\n let missingParenErrorLoc;\n const result = this.tsTryParseAndCatch(() => {\n if (!noCalls && this.atPossibleAsyncArrow(base)) {\n const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc);\n if (asyncArrowFn) {\n state.stop = true;\n return asyncArrowFn;\n }\n }\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n if (!typeArguments) return;\n if (isOptionalCall && !this.match(10)) {\n missingParenErrorLoc = this.state.curPosition();\n return;\n }\n if (tokenIsTemplate(this.state.type)) {\n const result = super.parseTaggedTemplateExpression(base, startLoc, state);\n result.typeParameters = typeArguments;\n return result;\n }\n if (!noCalls && this.eat(10)) {\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.arguments = this.parseCallExpressionArguments();\n this.tsCheckForInvalidTypeCasts(node.arguments);\n node.typeParameters = typeArguments;\n if (state.optionalChainMember) {\n node.optional = isOptionalCall;\n }\n return this.finishCallExpression(node, state.optionalChainMember);\n }\n const tokenType = this.state.type;\n if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenType !== 93 && tokenType !== 120 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) {\n return;\n }\n const node = this.startNodeAt(startLoc);\n node.expression = base;\n node.typeParameters = typeArguments;\n return this.finishNode(node, \"TSInstantiationExpression\");\n });\n if (missingParenErrorLoc) {\n this.unexpected(missingParenErrorLoc, 10);\n }\n if (result) {\n if (result.type === \"TSInstantiationExpression\") {\n if (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40) {\n this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc);\n }\n if (!this.match(16) && !this.match(18)) {\n result.expression = super.stopParseSubscript(base, state);\n }\n }\n return result;\n }\n }\n return super.parseSubscript(base, startLoc, noCalls, state);\n }\n parseNewCallee(node) {\n var _callee$extra;\n super.parseNewCallee(node);\n const {\n callee\n } = node;\n if (callee.type === \"TSInstantiationExpression\" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) {\n node.typeParameters = callee.typeParameters;\n node.callee = callee.expression;\n }\n }\n parseExprOp(left, leftStartLoc, minPrec) {\n let isSatisfies;\n if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) {\n const node = this.startNodeAt(leftStartLoc);\n node.expression = left;\n node.typeAnnotation = this.tsInType(() => {\n this.next();\n if (this.match(75)) {\n if (isSatisfies) {\n this.raise(Errors.UnexpectedKeyword, this.state.startLoc, {\n keyword: \"const\"\n });\n }\n return this.tsParseTypeReference();\n }\n return this.tsParseType();\n });\n this.finishNode(node, isSatisfies ? \"TSSatisfiesExpression\" : \"TSAsExpression\");\n this.reScan_lt_gt();\n return this.parseExprOp(node, leftStartLoc, minPrec);\n }\n return super.parseExprOp(left, leftStartLoc, minPrec);\n }\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n if (!this.state.isAmbientContext) {\n super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n }\n }\n checkImportReflection(node) {\n super.checkImportReflection(node);\n if (node.module && node.importKind !== \"value\") {\n this.raise(TSErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start);\n }\n }\n checkDuplicateExports() {}\n isPotentialImportPhase(isExport) {\n if (super.isPotentialImportPhase(isExport)) return true;\n if (this.isContextual(130)) {\n const ch = this.lookaheadCharCode();\n return isExport ? ch === 123 || ch === 42 : ch !== 61;\n }\n return !isExport && this.isContextual(87);\n }\n applyImportPhase(node, isExport, phase, loc) {\n super.applyImportPhase(node, isExport, phase, loc);\n if (isExport) {\n node.exportKind = phase === \"type\" ? \"type\" : \"value\";\n } else {\n node.importKind = phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n }\n }\n parseImport(node) {\n if (this.match(134)) {\n node.importKind = \"value\";\n return super.parseImport(node);\n }\n let importNode;\n if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) {\n node.importKind = \"value\";\n return this.tsParseImportEqualsDeclaration(node);\n } else if (this.isContextual(130)) {\n const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false);\n if (this.lookaheadCharCode() === 61) {\n return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier);\n } else {\n importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier);\n }\n } else {\n importNode = super.parseImport(node);\n }\n if (importNode.importKind === \"type\" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === \"ImportDefaultSpecifier\") {\n this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);\n }\n return importNode;\n }\n parseExport(node, decorators) {\n if (this.match(83)) {\n const nodeImportEquals = node;\n this.next();\n let maybeDefaultIdentifier = null;\n if (this.isContextual(130) && this.isPotentialImportPhase(false)) {\n maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false);\n } else {\n nodeImportEquals.importKind = \"value\";\n }\n const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true);\n return declaration;\n } else if (this.eat(29)) {\n const assign = node;\n assign.expression = super.parseExpression();\n this.semicolon();\n this.sawUnambiguousESM = true;\n return this.finishNode(assign, \"TSExportAssignment\");\n } else if (this.eatContextual(93)) {\n const decl = node;\n this.expectContextual(128);\n decl.id = this.parseIdentifier();\n this.semicolon();\n return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n } else {\n return super.parseExport(node, decorators);\n }\n }\n isAbstractClass() {\n return this.isContextual(124) && this.isLookaheadContextual(\"class\");\n }\n parseExportDefaultExpression() {\n if (this.isAbstractClass()) {\n const cls = this.startNode();\n this.next();\n cls.abstract = true;\n return this.parseClass(cls, true, true);\n }\n if (this.match(129)) {\n const result = this.tsParseInterfaceDeclaration(this.startNode());\n if (result) return result;\n }\n return super.parseExportDefaultExpression();\n }\n parseVarStatement(node, kind, allowMissingInitializer = false) {\n const {\n isAmbientContext\n } = this.state;\n const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext);\n if (!isAmbientContext) return declaration;\n if (!node.declare && (kind === \"using\" || kind === \"await using\")) {\n this.raiseOverwrite(TSErrors.UsingDeclarationInAmbientContext, node, kind);\n return declaration;\n }\n for (const {\n id,\n init\n } of declaration.declarations) {\n if (!init) continue;\n if (kind === \"var\" || kind === \"let\" || !!id.typeAnnotation) {\n this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);\n } else if (!isValidAmbientConstInitializer(init, this.hasPlugin(\"estree\"))) {\n this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init);\n }\n }\n return declaration;\n }\n parseStatementContent(flags, decorators) {\n if (!this.state.containsEsc) {\n switch (this.state.type) {\n case 75:\n {\n if (this.isLookaheadContextual(\"enum\")) {\n const node = this.startNode();\n this.expect(75);\n return this.tsParseEnumDeclaration(node, {\n const: true\n });\n }\n break;\n }\n case 124:\n case 125:\n {\n if (this.nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine()) {\n const token = this.state.type;\n const node = this.startNode();\n this.next();\n const declaration = token === 125 ? this.tsTryParseDeclare(node) : this.tsParseAbstractDeclaration(node, decorators);\n if (declaration) {\n if (token === 125) {\n declaration.declare = true;\n }\n return declaration;\n } else {\n node.expression = this.createIdentifier(this.startNodeAt(node.loc.start), token === 125 ? \"declare\" : \"abstract\");\n this.semicolon(false);\n return this.finishNode(node, \"ExpressionStatement\");\n }\n }\n break;\n }\n case 126:\n return this.tsParseEnumDeclaration(this.startNode());\n case 112:\n {\n const nextCh = this.lookaheadCharCode();\n if (nextCh === 123) {\n const node = this.startNode();\n return this.tsParseAmbientExternalModuleDeclaration(node);\n }\n break;\n }\n case 129:\n {\n const result = this.tsParseInterfaceDeclaration(this.startNode());\n if (result) return result;\n break;\n }\n case 127:\n {\n if (this.nextTokenIsIdentifierOrStringLiteralOnSameLine()) {\n const node = this.startNode();\n this.next();\n return this.tsParseDeclaration(node, 127, false, decorators);\n }\n break;\n }\n case 128:\n {\n if (this.nextTokenIsIdentifierOnSameLine()) {\n const node = this.startNode();\n this.next();\n return this.tsParseDeclaration(node, 128, false, decorators);\n }\n break;\n }\n case 130:\n {\n if (this.nextTokenIsIdentifierOnSameLine()) {\n const node = this.startNode();\n this.next();\n return this.tsParseTypeAliasDeclaration(node);\n }\n break;\n }\n }\n }\n return super.parseStatementContent(flags, decorators);\n }\n parseAccessModifier() {\n return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n }\n tsHasSomeModifiers(member, modifiers) {\n return modifiers.some(modifier => {\n if (tsIsAccessModifier(modifier)) {\n return member.accessibility === modifier;\n }\n return !!member[modifier];\n });\n }\n tsIsStartOfStaticBlocks() {\n return this.isContextual(106) && this.lookaheadCharCode() === 123;\n }\n parseClassMember(classBody, member, state) {\n const modifiers = [\"declare\", \"private\", \"public\", \"protected\", \"override\", \"abstract\", \"readonly\", \"static\"];\n this.tsParseModifiers({\n allowedModifiers: modifiers,\n disallowedModifiers: [\"in\", \"out\"],\n stopOnStartOfClassStaticBlock: true,\n errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions\n }, member);\n const callParseClassMemberWithIsStatic = () => {\n if (this.tsIsStartOfStaticBlocks()) {\n this.next();\n this.next();\n if (this.tsHasSomeModifiers(member, modifiers)) {\n this.raise(TSErrors.StaticBlockCannotHaveModifier, this.state.curPosition());\n }\n super.parseClassStaticBlock(classBody, member);\n } else {\n this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static);\n }\n };\n if (member.declare) {\n this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n } else {\n callParseClassMemberWithIsStatic();\n }\n }\n parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n const idx = this.tsTryParseIndexSignature(member);\n if (idx) {\n classBody.body.push(idx);\n if (member.abstract) {\n this.raise(TSErrors.IndexSignatureHasAbstract, member);\n }\n if (member.accessibility) {\n this.raise(TSErrors.IndexSignatureHasAccessibility, member, {\n modifier: member.accessibility\n });\n }\n if (member.declare) {\n this.raise(TSErrors.IndexSignatureHasDeclare, member);\n }\n if (member.override) {\n this.raise(TSErrors.IndexSignatureHasOverride, member);\n }\n return;\n }\n if (!this.state.inAbstractClass && member.abstract) {\n this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);\n }\n if (member.override) {\n if (!state.hadSuperClass) {\n this.raise(TSErrors.OverrideNotInSubClass, member);\n }\n }\n super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n }\n parsePostMemberNameModifiers(methodOrProp) {\n const optional = this.eat(17);\n if (optional) methodOrProp.optional = true;\n if (methodOrProp.readonly && this.match(10)) {\n this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);\n }\n if (methodOrProp.declare && this.match(10)) {\n this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);\n }\n }\n shouldParseExportDeclaration() {\n if (this.tsIsDeclarationStart()) return true;\n return super.shouldParseExportDeclaration();\n }\n parseConditional(expr, startLoc, refExpressionErrors) {\n if (!this.match(17)) return expr;\n if (this.state.maybeInArrowParameters) {\n const nextCh = this.lookaheadCharCode();\n if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {\n this.setOptionalParametersError(refExpressionErrors);\n return expr;\n }\n }\n return super.parseConditional(expr, startLoc, refExpressionErrors);\n }\n parseParenItem(node, startLoc) {\n const newNode = super.parseParenItem(node, startLoc);\n if (this.eat(17)) {\n newNode.optional = true;\n this.resetEndLocation(node);\n }\n if (this.match(14)) {\n const typeCastNode = this.startNodeAt(startLoc);\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n }\n return node;\n }\n parseExportDeclaration(node) {\n if (!this.state.isAmbientContext && this.isContextual(125)) {\n return this.tsInAmbientContext(() => this.parseExportDeclaration(node));\n }\n const startLoc = this.state.startLoc;\n const isDeclare = this.eatContextual(125);\n if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) {\n throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc);\n }\n const isIdentifier = tokenIsIdentifier(this.state.type);\n const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node);\n if (!declaration) return null;\n if (declaration.type === \"TSInterfaceDeclaration\" || declaration.type === \"TSTypeAliasDeclaration\" || isDeclare) {\n node.exportKind = \"type\";\n }\n if (isDeclare && declaration.type !== \"TSImportEqualsDeclaration\") {\n this.resetStartLocation(declaration, startLoc);\n declaration.declare = true;\n }\n return declaration;\n }\n parseClassId(node, isStatement, optionalId, bindingType) {\n if ((!isStatement || optionalId) && this.isContextual(113)) {\n return;\n }\n super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331);\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);\n if (typeParameters) node.typeParameters = typeParameters;\n }\n parseClassPropertyAnnotation(node) {\n if (!node.optional) {\n if (this.eat(35)) {\n node.definite = true;\n } else if (this.eat(17)) {\n node.optional = true;\n }\n }\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n }\n parseClassProperty(node) {\n this.parseClassPropertyAnnotation(node);\n if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) {\n this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc);\n }\n if (node.abstract && this.match(29)) {\n const {\n key\n } = node;\n this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, {\n propertyName: key.type === \"Identifier\" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`\n });\n }\n return super.parseClassProperty(node);\n }\n parseClassPrivateProperty(node) {\n if (node.abstract) {\n this.raise(TSErrors.PrivateElementHasAbstract, node);\n }\n if (node.accessibility) {\n this.raise(TSErrors.PrivateElementHasAccessibility, node, {\n modifier: node.accessibility\n });\n }\n this.parseClassPropertyAnnotation(node);\n return super.parseClassPrivateProperty(node);\n }\n parseClassAccessorProperty(node) {\n this.parseClassPropertyAnnotation(node);\n if (node.optional) {\n this.raise(TSErrors.AccessorCannotBeOptional, node);\n }\n return super.parseClassAccessorProperty(node);\n }\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n if (typeParameters && isConstructor) {\n this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);\n }\n const {\n declare = false,\n kind\n } = method;\n if (declare && (kind === \"get\" || kind === \"set\")) {\n this.raise(TSErrors.DeclareAccessor, method, {\n kind\n });\n }\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);\n }\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n declareClassPrivateMethodInScope(node, kind) {\n if (node.type === \"TSDeclareMethod\") return;\n if (node.type === \"MethodDefinition\" && node.value.body == null) {\n return;\n }\n super.declareClassPrivateMethodInScope(node, kind);\n }\n parseClassSuper(node) {\n super.parseClassSuper(node);\n if (node.superClass) {\n if (node.superClass.type === \"TSInstantiationExpression\") {\n const tsInstantiationExpression = node.superClass;\n const superClass = tsInstantiationExpression.expression;\n this.takeSurroundingComments(superClass, superClass.start, superClass.end);\n const superTypeArguments = tsInstantiationExpression.typeParameters;\n this.takeSurroundingComments(superTypeArguments, superTypeArguments.start, superTypeArguments.end);\n node.superClass = superClass;\n node.superTypeParameters = superTypeArguments;\n } else if (this.match(47) || this.match(51)) {\n node.superTypeParameters = this.tsParseTypeArgumentsInExpression();\n }\n }\n if (this.eatContextual(113)) {\n node.implements = this.tsParseHeritageClause(\"implements\");\n }\n }\n parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n if (typeParameters) prop.typeParameters = typeParameters;\n return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);\n }\n parseFunctionParams(node, isConstructor) {\n const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);\n if (typeParameters) node.typeParameters = typeParameters;\n super.parseFunctionParams(node, isConstructor);\n }\n parseVarId(decl, kind) {\n super.parseVarId(decl, kind);\n if (decl.id.type === \"Identifier\" && !this.hasPrecedingLineBreak() && this.eat(35)) {\n decl.definite = true;\n }\n const type = this.tsTryParseTypeAnnotation();\n if (type) {\n decl.id.typeAnnotation = type;\n this.resetEndLocation(decl.id);\n }\n }\n parseAsyncArrowFromCallExpression(node, call) {\n if (this.match(14)) {\n node.returnType = this.tsParseTypeAnnotation();\n }\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2;\n let state;\n let jsx;\n let typeCast;\n if (this.hasPlugin(\"jsx\") && (this.match(143) || this.match(47))) {\n state = this.state.clone();\n jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);\n if (!jsx.error) return jsx.node;\n const {\n context\n } = this.state;\n const currentContext = context[context.length - 1];\n if (currentContext === types.j_oTag || currentContext === types.j_expr) {\n context.pop();\n }\n }\n if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) {\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n if (!state || state === this.state) state = this.state.clone();\n let typeParameters;\n const arrow = this.tryParse(abort => {\n var _expr$extra, _typeParameters;\n typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);\n const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n if (expr.type !== \"ArrowFunctionExpression\" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {\n abort();\n }\n if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {\n this.resetStartLocationFromNode(expr, typeParameters);\n }\n expr.typeParameters = typeParameters;\n return expr;\n }, state);\n if (!arrow.error && !arrow.aborted) {\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n if (!jsx) {\n assert(!this.hasPlugin(\"jsx\"));\n typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);\n if (!typeCast.error) return typeCast.node;\n }\n if ((_jsx2 = jsx) != null && _jsx2.node) {\n this.state = jsx.failState;\n return jsx.node;\n }\n if (arrow.node) {\n this.state = arrow.failState;\n if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n return arrow.node;\n }\n if ((_typeCast = typeCast) != null && _typeCast.node) {\n this.state = typeCast.failState;\n return typeCast.node;\n }\n throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error);\n }\n reportReservedArrowTypeParam(node) {\n var _node$extra2;\n if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra2 = node.extra) != null && _node$extra2.trailingComma) && this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n this.raise(TSErrors.ReservedArrowTypeParam, node);\n }\n }\n parseMaybeUnary(refExpressionErrors, sawUnary) {\n if (!this.hasPlugin(\"jsx\") && this.match(47)) {\n return this.tsParseTypeAssertion();\n }\n return super.parseMaybeUnary(refExpressionErrors, sawUnary);\n }\n parseArrow(node) {\n if (this.match(14)) {\n const result = this.tryParse(abort => {\n const returnType = this.tsParseTypeOrTypePredicateAnnotation(14);\n if (this.canInsertSemicolon() || !this.match(19)) abort();\n return returnType;\n });\n if (result.aborted) return;\n if (!result.thrown) {\n if (result.error) this.state = result.failState;\n node.returnType = result.node;\n }\n }\n return super.parseArrow(node);\n }\n parseFunctionParamType(param) {\n if (this.eat(17)) {\n param.optional = true;\n }\n const type = this.tsTryParseTypeAnnotation();\n if (type) param.typeAnnotation = type;\n this.resetEndLocation(param);\n return param;\n }\n isAssignable(node, isBinding) {\n switch (node.type) {\n case \"TSTypeCastExpression\":\n return this.isAssignable(node.expression, isBinding);\n case \"TSParameterProperty\":\n return true;\n default:\n return super.isAssignable(node, isBinding);\n }\n }\n toAssignable(node, isLHS = false) {\n switch (node.type) {\n case \"ParenthesizedExpression\":\n this.toAssignableParenthesizedExpression(node, isLHS);\n break;\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n if (isLHS) {\n this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node);\n } else {\n this.raise(TSErrors.UnexpectedTypeCastInParameter, node);\n }\n this.toAssignable(node.expression, isLHS);\n break;\n case \"AssignmentExpression\":\n if (!isLHS && node.left.type === \"TSTypeCastExpression\") {\n node.left = this.typeCastToParameter(node.left);\n }\n default:\n super.toAssignable(node, isLHS);\n }\n }\n toAssignableParenthesizedExpression(node, isLHS) {\n switch (node.expression.type) {\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isLHS);\n break;\n default:\n super.toAssignable(node, isLHS);\n }\n }\n checkToRestConversion(node, allowPattern) {\n switch (node.type) {\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n this.checkToRestConversion(node.expression, false);\n break;\n default:\n super.checkToRestConversion(node, allowPattern);\n }\n }\n isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) {\n switch (type) {\n case \"TSTypeCastExpression\":\n return true;\n case \"TSParameterProperty\":\n return \"parameter\";\n case \"TSNonNullExpression\":\n return \"expression\";\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n return (binding !== 64 || !isUnparenthesizedInAssign) && [\"expression\", true];\n default:\n return super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding);\n }\n }\n parseBindingAtom() {\n if (this.state.type === 78) {\n return this.parseIdentifier(true);\n }\n return super.parseBindingAtom();\n }\n parseMaybeDecoratorArguments(expr, startLoc) {\n if (this.match(47) || this.match(51)) {\n const typeArguments = this.tsParseTypeArgumentsInExpression();\n if (this.match(10)) {\n const call = super.parseMaybeDecoratorArguments(expr, startLoc);\n call.typeParameters = typeArguments;\n return call;\n }\n this.unexpected(null, 10);\n }\n return super.parseMaybeDecoratorArguments(expr, startLoc);\n }\n checkCommaAfterRest(close) {\n if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {\n this.next();\n return false;\n }\n return super.checkCommaAfterRest(close);\n }\n isClassMethod() {\n return this.match(47) || super.isClassMethod();\n }\n isClassProperty() {\n return this.match(35) || this.match(14) || super.isClassProperty();\n }\n parseMaybeDefault(startLoc, left) {\n const node = super.parseMaybeDefault(startLoc, left);\n if (node.type === \"AssignmentPattern\" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {\n this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);\n }\n return node;\n }\n getTokenFromCode(code) {\n if (this.state.inType) {\n if (code === 62) {\n this.finishOp(48, 1);\n return;\n }\n if (code === 60) {\n this.finishOp(47, 1);\n return;\n }\n }\n super.getTokenFromCode(code);\n }\n reScan_lt_gt() {\n const {\n type\n } = this.state;\n if (type === 47) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === 48) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n reScan_lt() {\n const {\n type\n } = this.state;\n if (type === 51) {\n this.state.pos -= 2;\n this.finishOp(47, 1);\n return 47;\n }\n return type;\n }\n toAssignableListItem(exprList, index, isLHS) {\n const node = exprList[index];\n if (node.type === \"TSTypeCastExpression\") {\n exprList[index] = this.typeCastToParameter(node);\n }\n super.toAssignableListItem(exprList, index, isLHS);\n }\n typeCastToParameter(node) {\n node.expression.typeAnnotation = node.typeAnnotation;\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n return node.expression;\n }\n shouldParseArrow(params) {\n if (this.match(14)) {\n return params.every(expr => this.isAssignable(expr, true));\n }\n return super.shouldParseArrow(params);\n }\n shouldParseAsyncArrow() {\n return this.match(14) || super.shouldParseAsyncArrow();\n }\n canHaveLeadingDecorator() {\n return super.canHaveLeadingDecorator() || this.isAbstractClass();\n }\n jsxParseOpeningElementAfterName(node) {\n if (this.match(47) || this.match(51)) {\n const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression());\n if (typeArguments) {\n node.typeParameters = typeArguments;\n }\n }\n return super.jsxParseOpeningElementAfterName(node);\n }\n getGetterSetterExpectedParamCount(method) {\n const baseCount = super.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n const firstParam = params[0];\n const hasContextParam = firstParam && this.isThisParam(firstParam);\n return hasContextParam ? baseCount + 1 : baseCount;\n }\n parseCatchClauseParam() {\n const param = super.parseCatchClauseParam();\n const type = this.tsTryParseTypeAnnotation();\n if (type) {\n param.typeAnnotation = type;\n this.resetEndLocation(param);\n }\n return param;\n }\n tsInAmbientContext(cb) {\n const {\n isAmbientContext: oldIsAmbientContext,\n strict: oldStrict\n } = this.state;\n this.state.isAmbientContext = true;\n this.state.strict = false;\n try {\n return cb();\n } finally {\n this.state.isAmbientContext = oldIsAmbientContext;\n this.state.strict = oldStrict;\n }\n }\n parseClass(node, isStatement, optionalId) {\n const oldInAbstractClass = this.state.inAbstractClass;\n this.state.inAbstractClass = !!node.abstract;\n try {\n return super.parseClass(node, isStatement, optionalId);\n } finally {\n this.state.inAbstractClass = oldInAbstractClass;\n }\n }\n tsParseAbstractDeclaration(node, decorators) {\n if (this.match(80)) {\n node.abstract = true;\n return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false));\n } else if (this.isContextual(129)) {\n if (!this.hasFollowingLineBreak()) {\n node.abstract = true;\n this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node);\n return this.tsParseInterfaceDeclaration(node);\n } else {\n return null;\n }\n }\n throw this.unexpected(null, 80);\n }\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {\n const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);\n if (method.abstract || method.type === \"TSAbstractMethodDefinition\") {\n const hasEstreePlugin = this.hasPlugin(\"estree\");\n const methodFn = hasEstreePlugin ? method.value : method;\n if (methodFn.body) {\n const {\n key\n } = method;\n this.raise(TSErrors.AbstractMethodHasImplementation, method, {\n methodName: key.type === \"Identifier\" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`\n });\n }\n }\n return method;\n }\n tsParseTypeParameterName() {\n const typeName = this.parseIdentifier();\n return typeName.name;\n }\n shouldParseAsAmbientContext() {\n return !!this.getPluginOption(\"typescript\", \"dts\");\n }\n parse() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n return super.parse();\n }\n getExpression() {\n if (this.shouldParseAsAmbientContext()) {\n this.state.isAmbientContext = true;\n }\n return super.getExpression();\n }\n parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n if (!isString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);\n return this.finishNode(node, \"ExportSpecifier\");\n }\n node.exportKind = \"value\";\n return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly);\n }\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {\n if (!importedIsString && isMaybeTypeOnly) {\n this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);\n return this.finishNode(specifier, \"ImportSpecifier\");\n }\n specifier.importKind = \"value\";\n return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096);\n }\n parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {\n const leftOfAsKey = isImport ? \"imported\" : \"local\";\n const rightOfAsKey = isImport ? \"local\" : \"exported\";\n let leftOfAs = node[leftOfAsKey];\n let rightOfAs;\n let hasTypeSpecifier = false;\n let canParseAsKeyword = true;\n const loc = leftOfAs.loc.start;\n if (this.isContextual(93)) {\n const firstAs = this.parseIdentifier();\n if (this.isContextual(93)) {\n const secondAs = this.parseIdentifier();\n if (tokenIsKeywordOrIdentifier(this.state.type)) {\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n canParseAsKeyword = false;\n } else {\n rightOfAs = secondAs;\n canParseAsKeyword = false;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n canParseAsKeyword = false;\n rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n } else {\n hasTypeSpecifier = true;\n leftOfAs = firstAs;\n }\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n hasTypeSpecifier = true;\n if (isImport) {\n leftOfAs = this.parseIdentifier(true);\n if (!this.isContextual(93)) {\n this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true);\n }\n } else {\n leftOfAs = this.parseModuleExportName();\n }\n }\n if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc);\n }\n node[leftOfAsKey] = leftOfAs;\n node[rightOfAsKey] = rightOfAs;\n const kindKey = isImport ? \"importKind\" : \"exportKind\";\n node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n if (canParseAsKeyword && this.eatContextual(93)) {\n node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();\n }\n if (!node[rightOfAsKey]) {\n node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]);\n }\n if (isImport) {\n this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096);\n }\n }\n fillOptionalPropertiesForTSESLint(node) {\n var _node$directive, _node$decorators, _node$optional, _node$typeAnnotation, _node$accessibility, _node$decorators2, _node$override, _node$readonly, _node$static, _node$declare, _node$returnType, _node$typeParameters, _node$optional2, _node$optional3, _node$accessibility2, _node$readonly2, _node$static2, _node$declare2, _node$definite, _node$readonly3, _node$typeAnnotation2, _node$accessibility3, _node$decorators3, _node$override2, _node$optional4, _node$id, _node$abstract, _node$declare3, _node$decorators4, _node$implements, _node$superTypeArgume, _node$typeParameters2, _node$declare4, _node$definite2, _node$const, _node$declare5, _node$computed, _node$qualifier, _node$options, _node$declare6, _node$extends, _node$optional5, _node$readonly4, _node$declare7, _node$global, _node$const2, _node$in, _node$out;\n switch (node.type) {\n case \"ExpressionStatement\":\n (_node$directive = node.directive) != null ? _node$directive : node.directive = undefined;\n return;\n case \"RestElement\":\n node.value = undefined;\n case \"Identifier\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"ObjectPattern\":\n (_node$decorators = node.decorators) != null ? _node$decorators : node.decorators = [];\n (_node$optional = node.optional) != null ? _node$optional : node.optional = false;\n (_node$typeAnnotation = node.typeAnnotation) != null ? _node$typeAnnotation : node.typeAnnotation = undefined;\n return;\n case \"TSParameterProperty\":\n (_node$accessibility = node.accessibility) != null ? _node$accessibility : node.accessibility = undefined;\n (_node$decorators2 = node.decorators) != null ? _node$decorators2 : node.decorators = [];\n (_node$override = node.override) != null ? _node$override : node.override = false;\n (_node$readonly = node.readonly) != null ? _node$readonly : node.readonly = false;\n (_node$static = node.static) != null ? _node$static : node.static = false;\n return;\n case \"TSEmptyBodyFunctionExpression\":\n node.body = null;\n case \"TSDeclareFunction\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n (_node$declare = node.declare) != null ? _node$declare : node.declare = false;\n (_node$returnType = node.returnType) != null ? _node$returnType : node.returnType = undefined;\n (_node$typeParameters = node.typeParameters) != null ? _node$typeParameters : node.typeParameters = undefined;\n return;\n case \"Property\":\n (_node$optional2 = node.optional) != null ? _node$optional2 : node.optional = false;\n return;\n case \"TSMethodSignature\":\n case \"TSPropertySignature\":\n (_node$optional3 = node.optional) != null ? _node$optional3 : node.optional = false;\n case \"TSIndexSignature\":\n (_node$accessibility2 = node.accessibility) != null ? _node$accessibility2 : node.accessibility = undefined;\n (_node$readonly2 = node.readonly) != null ? _node$readonly2 : node.readonly = false;\n (_node$static2 = node.static) != null ? _node$static2 : node.static = false;\n return;\n case \"TSAbstractPropertyDefinition\":\n case \"PropertyDefinition\":\n case \"TSAbstractAccessorProperty\":\n case \"AccessorProperty\":\n (_node$declare2 = node.declare) != null ? _node$declare2 : node.declare = false;\n (_node$definite = node.definite) != null ? _node$definite : node.definite = false;\n (_node$readonly3 = node.readonly) != null ? _node$readonly3 : node.readonly = false;\n (_node$typeAnnotation2 = node.typeAnnotation) != null ? _node$typeAnnotation2 : node.typeAnnotation = undefined;\n case \"TSAbstractMethodDefinition\":\n case \"MethodDefinition\":\n (_node$accessibility3 = node.accessibility) != null ? _node$accessibility3 : node.accessibility = undefined;\n (_node$decorators3 = node.decorators) != null ? _node$decorators3 : node.decorators = [];\n (_node$override2 = node.override) != null ? _node$override2 : node.override = false;\n (_node$optional4 = node.optional) != null ? _node$optional4 : node.optional = false;\n return;\n case \"ClassExpression\":\n (_node$id = node.id) != null ? _node$id : node.id = null;\n case \"ClassDeclaration\":\n (_node$abstract = node.abstract) != null ? _node$abstract : node.abstract = false;\n (_node$declare3 = node.declare) != null ? _node$declare3 : node.declare = false;\n (_node$decorators4 = node.decorators) != null ? _node$decorators4 : node.decorators = [];\n (_node$implements = node.implements) != null ? _node$implements : node.implements = [];\n (_node$superTypeArgume = node.superTypeArguments) != null ? _node$superTypeArgume : node.superTypeArguments = undefined;\n (_node$typeParameters2 = node.typeParameters) != null ? _node$typeParameters2 : node.typeParameters = undefined;\n return;\n case \"TSTypeAliasDeclaration\":\n case \"VariableDeclaration\":\n (_node$declare4 = node.declare) != null ? _node$declare4 : node.declare = false;\n return;\n case \"VariableDeclarator\":\n (_node$definite2 = node.definite) != null ? _node$definite2 : node.definite = false;\n return;\n case \"TSEnumDeclaration\":\n (_node$const = node.const) != null ? _node$const : node.const = false;\n (_node$declare5 = node.declare) != null ? _node$declare5 : node.declare = false;\n return;\n case \"TSEnumMember\":\n (_node$computed = node.computed) != null ? _node$computed : node.computed = false;\n return;\n case \"TSImportType\":\n (_node$qualifier = node.qualifier) != null ? _node$qualifier : node.qualifier = null;\n (_node$options = node.options) != null ? _node$options : node.options = null;\n return;\n case \"TSInterfaceDeclaration\":\n (_node$declare6 = node.declare) != null ? _node$declare6 : node.declare = false;\n (_node$extends = node.extends) != null ? _node$extends : node.extends = [];\n return;\n case \"TSMappedType\":\n (_node$optional5 = node.optional) != null ? _node$optional5 : node.optional = false;\n (_node$readonly4 = node.readonly) != null ? _node$readonly4 : node.readonly = undefined;\n return;\n case \"TSModuleDeclaration\":\n (_node$declare7 = node.declare) != null ? _node$declare7 : node.declare = false;\n (_node$global = node.global) != null ? _node$global : node.global = node.kind === \"global\";\n return;\n case \"TSTypeParameter\":\n (_node$const2 = node.const) != null ? _node$const2 : node.const = false;\n (_node$in = node.in) != null ? _node$in : node.in = false;\n (_node$out = node.out) != null ? _node$out : node.out = false;\n return;\n }\n }\n chStartsBindingIdentifierAndNotRelationalOperator(ch, pos) {\n if (isIdentifierStart(ch)) {\n keywordAndTSRelationalOperator.lastIndex = pos;\n if (keywordAndTSRelationalOperator.test(this.input)) {\n const endCh = this.codePointAtPos(keywordAndTSRelationalOperator.lastIndex);\n if (!isIdentifierChar(endCh) && endCh !== 92) {\n return false;\n }\n }\n return true;\n } else if (ch === 92) {\n return true;\n } else {\n return false;\n }\n }\n nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine() {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return this.chStartsBindingIdentifierAndNotRelationalOperator(nextCh, next);\n }\n nextTokenIsIdentifierOrStringLiteralOnSameLine() {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return this.chStartsBindingIdentifier(nextCh, next) || nextCh === 34 || nextCh === 39;\n }\n};\nfunction isPossiblyLiteralEnum(expression) {\n if (expression.type !== \"MemberExpression\") return false;\n const {\n computed,\n property\n } = expression;\n if (computed && property.type !== \"StringLiteral\" && (property.type !== \"TemplateLiteral\" || property.expressions.length > 0)) {\n return false;\n }\n return isUncomputedMemberExpressionChain(expression.object);\n}\nfunction isValidAmbientConstInitializer(expression, estree) {\n var _expression$extra;\n const {\n type\n } = expression;\n if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) {\n return false;\n }\n if (estree) {\n if (type === \"Literal\") {\n const {\n value\n } = expression;\n if (typeof value === \"string\" || typeof value === \"boolean\") {\n return true;\n }\n }\n } else {\n if (type === \"StringLiteral\" || type === \"BooleanLiteral\") {\n return true;\n }\n }\n if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {\n return true;\n }\n if (type === \"TemplateLiteral\" && expression.expressions.length === 0) {\n return true;\n }\n if (isPossiblyLiteralEnum(expression)) {\n return true;\n }\n return false;\n}\nfunction isNumber(expression, estree) {\n if (estree) {\n return expression.type === \"Literal\" && (typeof expression.value === \"number\" || \"bigint\" in expression);\n }\n return expression.type === \"NumericLiteral\" || expression.type === \"BigIntLiteral\";\n}\nfunction isNegativeNumber(expression, estree) {\n if (expression.type === \"UnaryExpression\") {\n const {\n operator,\n argument\n } = expression;\n if (operator === \"-\" && isNumber(argument, estree)) {\n return true;\n }\n }\n return false;\n}\nfunction isUncomputedMemberExpressionChain(expression) {\n if (expression.type === \"Identifier\") return true;\n if (expression.type !== \"MemberExpression\" || expression.computed) {\n return false;\n }\n return isUncomputedMemberExpressionChain(expression.object);\n}\nconst PlaceholderErrors = ParseErrorEnum`placeholders`({\n ClassNameIsRequired: \"A class name is required.\",\n UnexpectedSpace: \"Unexpected space in placeholder.\"\n});\nvar placeholders = superClass => class PlaceholdersParserMixin extends superClass {\n parsePlaceholder(expectedNode) {\n if (this.match(133)) {\n const node = this.startNode();\n this.next();\n this.assertNoSpace();\n node.name = super.parseIdentifier(true);\n this.assertNoSpace();\n this.expect(133);\n return this.finishPlaceholder(node, expectedNode);\n }\n }\n finishPlaceholder(node, expectedNode) {\n let placeholder = node;\n if (!placeholder.expectedNode || !placeholder.type) {\n placeholder = this.finishNode(placeholder, \"Placeholder\");\n }\n placeholder.expectedNode = expectedNode;\n return placeholder;\n }\n getTokenFromCode(code) {\n if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {\n this.finishOp(133, 2);\n } else {\n super.getTokenFromCode(code);\n }\n }\n parseExprAtom(refExpressionErrors) {\n return this.parsePlaceholder(\"Expression\") || super.parseExprAtom(refExpressionErrors);\n }\n parseIdentifier(liberal) {\n return this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(liberal);\n }\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n if (word !== undefined) {\n super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n }\n }\n cloneIdentifier(node) {\n const cloned = super.cloneIdentifier(node);\n if (cloned.type === \"Placeholder\") {\n cloned.expectedNode = node.expectedNode;\n }\n return cloned;\n }\n cloneStringLiteral(node) {\n if (node.type === \"Placeholder\") {\n return this.cloneIdentifier(node);\n }\n return super.cloneStringLiteral(node);\n }\n parseBindingAtom() {\n return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom();\n }\n isValidLVal(type, disallowCallExpression, isParenthesized, binding) {\n return type === \"Placeholder\" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding);\n }\n toAssignable(node, isLHS) {\n if (node && node.type === \"Placeholder\" && node.expectedNode === \"Expression\") {\n node.expectedNode = \"Pattern\";\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n chStartsBindingIdentifier(ch, pos) {\n if (super.chStartsBindingIdentifier(ch, pos)) {\n return true;\n }\n const next = this.nextTokenStart();\n if (this.input.charCodeAt(next) === 37 && this.input.charCodeAt(next + 1) === 37) {\n return true;\n }\n return false;\n }\n verifyBreakContinue(node, isBreak) {\n var _node$label;\n if (((_node$label = node.label) == null ? void 0 : _node$label.type) === \"Placeholder\") return;\n super.verifyBreakContinue(node, isBreak);\n }\n parseExpressionStatement(node, expr) {\n var _expr$extra;\n if (expr.type !== \"Placeholder\" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {\n return super.parseExpressionStatement(node, expr);\n }\n if (this.match(14)) {\n const stmt = node;\n stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n this.next();\n stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration();\n return this.finishNode(stmt, \"LabeledStatement\");\n }\n this.semicolon();\n const stmtPlaceholder = node;\n stmtPlaceholder.name = expr.name;\n return this.finishPlaceholder(stmtPlaceholder, \"Statement\");\n }\n parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) {\n return this.parsePlaceholder(\"BlockStatement\") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse);\n }\n parseFunctionId(requireId) {\n return this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(requireId);\n }\n parseClass(node, isStatement, optionalId) {\n const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n this.next();\n const oldStrict = this.state.strict;\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (placeholder) {\n if (this.match(81) || this.match(133) || this.match(5)) {\n node.id = placeholder;\n } else if (optionalId || !isStatement) {\n node.id = null;\n node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n return this.finishNode(node, type);\n } else {\n throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc);\n }\n } else {\n this.parseClassId(node, isStatement, optionalId);\n }\n super.parseClassSuper(node);\n node.body = this.parsePlaceholder(\"ClassBody\") || super.parseClassBody(!!node.superClass, oldStrict);\n return this.finishNode(node, type);\n }\n parseExport(node, decorators) {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseExport(node, decorators);\n const node2 = node;\n if (!this.isContextual(98) && !this.match(12)) {\n node2.specifiers = [];\n node2.source = null;\n node2.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n return this.finishNode(node2, \"ExportNamedDeclaration\");\n }\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = placeholder;\n node2.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return super.parseExport(node2, decorators);\n }\n isExportDefaultSpecifier() {\n if (this.match(65)) {\n const next = this.nextTokenStart();\n if (this.isUnparsedContextual(next, \"from\")) {\n if (this.input.startsWith(tokenLabelName(133), this.nextTokenStartSince(next + 4))) {\n return true;\n }\n }\n }\n return super.isExportDefaultSpecifier();\n }\n maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {\n var _specifiers;\n if ((_specifiers = node.specifiers) != null && _specifiers.length) {\n return true;\n }\n return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier);\n }\n checkExport(node) {\n const {\n specifiers\n } = node;\n if (specifiers != null && specifiers.length) {\n node.specifiers = specifiers.filter(node => node.exported.type === \"Placeholder\");\n }\n super.checkExport(node);\n node.specifiers = specifiers;\n }\n parseImport(node) {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseImport(node);\n node.specifiers = [];\n if (!this.isContextual(98) && !this.match(12)) {\n node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n const specifier = this.startNodeAtNode(placeholder);\n specifier.local = placeholder;\n node.specifiers.push(this.finishNode(specifier, \"ImportDefaultSpecifier\"));\n if (this.eat(12)) {\n const hasStarImport = this.maybeParseStarImportSpecifier(node);\n if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n }\n this.expectContextual(98);\n node.source = this.parseImportSource();\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n parseImportSource() {\n return this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource();\n }\n assertNoSpace() {\n if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) {\n this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc);\n }\n }\n};\nvar v8intrinsic = superClass => class V8IntrinsicMixin extends superClass {\n parseV8Intrinsic() {\n if (this.match(54)) {\n const v8IntrinsicStartLoc = this.state.startLoc;\n const node = this.startNode();\n this.next();\n if (tokenIsIdentifier(this.state.type)) {\n const name = this.parseIdentifierName();\n const identifier = this.createIdentifier(node, name);\n this.castNodeTo(identifier, \"V8IntrinsicIdentifier\");\n if (this.match(10)) {\n return identifier;\n }\n }\n this.unexpected(v8IntrinsicStartLoc);\n }\n }\n parseExprAtom(refExpressionErrors) {\n return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors);\n }\n};\nconst PIPELINE_PROPOSALS = [\"minimal\", \"fsharp\", \"hack\", \"smart\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\nfunction validatePlugins(pluginsMap) {\n if (pluginsMap.has(\"decorators\")) {\n if (pluginsMap.has(\"decorators-legacy\")) {\n throw new Error(\"Cannot use the decorators and decorators-legacy plugin together\");\n }\n const decoratorsBeforeExport = pluginsMap.get(\"decorators\").decoratorsBeforeExport;\n if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== \"boolean\") {\n throw new Error(\"'decoratorsBeforeExport' must be a boolean, if specified.\");\n }\n const allowCallParenthesized = pluginsMap.get(\"decorators\").allowCallParenthesized;\n if (allowCallParenthesized != null && typeof allowCallParenthesized !== \"boolean\") {\n throw new Error(\"'allowCallParenthesized' must be a boolean.\");\n }\n }\n if (pluginsMap.has(\"flow\") && pluginsMap.has(\"typescript\")) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n if (pluginsMap.has(\"placeholders\") && pluginsMap.has(\"v8intrinsic\")) {\n throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n }\n if (pluginsMap.has(\"pipelineOperator\")) {\n var _pluginsMap$get2;\n const proposal = pluginsMap.get(\"pipelineOperator\").proposal;\n if (!PIPELINE_PROPOSALS.includes(proposal)) {\n const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n throw new Error(`\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`);\n }\n if (proposal === \"hack\") {\n var _pluginsMap$get;\n if (pluginsMap.has(\"placeholders\")) {\n throw new Error(\"Cannot combine placeholders plugin and Hack-style pipes.\");\n }\n if (pluginsMap.has(\"v8intrinsic\")) {\n throw new Error(\"Cannot combine v8intrinsic plugin and Hack-style pipes.\");\n }\n const topicToken = pluginsMap.get(\"pipelineOperator\").topicToken;\n if (!TOPIC_TOKENS.includes(topicToken)) {\n const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n throw new Error(`\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`);\n }\n if (topicToken === \"#\" && ((_pluginsMap$get = pluginsMap.get(\"recordAndTuple\")) == null ? void 0 : _pluginsMap$get.syntaxType) === \"hash\") {\n throw new Error(`Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`);\n }\n } else if (proposal === \"smart\" && ((_pluginsMap$get2 = pluginsMap.get(\"recordAndTuple\")) == null ? void 0 : _pluginsMap$get2.syntaxType) === \"hash\") {\n throw new Error(`Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"smart\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`);\n }\n }\n if (pluginsMap.has(\"moduleAttributes\")) {\n if (pluginsMap.has(\"deprecatedImportAssert\") || pluginsMap.has(\"importAssertions\")) {\n throw new Error(\"Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins.\");\n }\n const moduleAttributesVersionPluginOption = pluginsMap.get(\"moduleAttributes\").version;\n if (moduleAttributesVersionPluginOption !== \"may-2020\") {\n throw new Error(\"The 'moduleAttributes' plugin requires a 'version' option,\" + \" representing the last proposal update. Currently, the\" + \" only supported value is 'may-2020'.\");\n }\n }\n if (pluginsMap.has(\"importAssertions\")) {\n if (pluginsMap.has(\"deprecatedImportAssert\")) {\n throw new Error(\"Cannot combine importAssertions and deprecatedImportAssert plugins.\");\n }\n }\n if (pluginsMap.has(\"deprecatedImportAssert\")) ;else if (pluginsMap.has(\"importAttributes\") && pluginsMap.get(\"importAttributes\").deprecatedAssertSyntax) {\n pluginsMap.set(\"deprecatedImportAssert\", {});\n }\n if (pluginsMap.has(\"recordAndTuple\")) {\n const syntaxType = pluginsMap.get(\"recordAndTuple\").syntaxType;\n if (syntaxType != null) {\n const RECORD_AND_TUPLE_SYNTAX_TYPES = [\"hash\", \"bar\"];\n if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) {\n throw new Error(\"The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: \" + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(\", \"));\n }\n }\n }\n if (pluginsMap.has(\"asyncDoExpressions\") && !pluginsMap.has(\"doExpressions\")) {\n const error = new Error(\"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\");\n error.missingPlugins = \"doExpressions\";\n throw error;\n }\n if (pluginsMap.has(\"optionalChainingAssign\") && pluginsMap.get(\"optionalChainingAssign\").version !== \"2023-07\") {\n throw new Error(\"The 'optionalChainingAssign' plugin requires a 'version' option,\" + \" representing the last proposal update. Currently, the\" + \" only supported value is '2023-07'.\");\n }\n if (pluginsMap.has(\"discardBinding\") && pluginsMap.get(\"discardBinding\").syntaxType !== \"void\") {\n throw new Error(\"The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'.\");\n }\n}\nconst mixinPlugins = {\n estree,\n jsx,\n flow,\n typescript,\n v8intrinsic,\n placeholders\n};\nconst mixinPluginNames = Object.keys(mixinPlugins);\nclass ExpressionParser extends LValParser {\n checkProto(prop, isRecord, sawProto, refExpressionErrors) {\n if (prop.type === \"SpreadElement\" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {\n return sawProto;\n }\n const key = prop.key;\n const name = key.type === \"Identifier\" ? key.name : key.value;\n if (name === \"__proto__\") {\n if (isRecord) {\n this.raise(Errors.RecordNoProto, key);\n return true;\n }\n if (sawProto) {\n if (refExpressionErrors) {\n if (refExpressionErrors.doubleProtoLoc === null) {\n refExpressionErrors.doubleProtoLoc = key.loc.start;\n }\n } else {\n this.raise(Errors.DuplicateProto, key);\n }\n }\n return true;\n }\n return sawProto;\n }\n shouldExitDescending(expr, potentialArrowAt) {\n return expr.type === \"ArrowFunctionExpression\" && this.offsetToSourcePos(expr.start) === potentialArrowAt;\n }\n getExpression() {\n this.enterInitialScopes();\n this.nextToken();\n if (this.match(140)) {\n throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc);\n }\n const expr = this.parseExpression();\n if (!this.match(140)) {\n throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, {\n unexpected: this.input.codePointAt(this.state.start)\n });\n }\n this.finalizeRemainingComments();\n expr.comments = this.comments;\n expr.errors = this.state.errors;\n if (this.optionFlags & 256) {\n expr.tokens = this.tokens;\n }\n return expr;\n }\n parseExpression(disallowIn, refExpressionErrors) {\n if (disallowIn) {\n return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n }\n return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n }\n parseExpressionBase(refExpressionErrors) {\n const startLoc = this.state.startLoc;\n const expr = this.parseMaybeAssign(refExpressionErrors);\n if (this.match(12)) {\n const node = this.startNodeAt(startLoc);\n node.expressions = [expr];\n while (this.eat(12)) {\n node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n }\n this.toReferencedList(node.expressions);\n return this.finishNode(node, \"SequenceExpression\");\n }\n return expr;\n }\n parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {\n return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n }\n parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {\n return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));\n }\n setOptionalParametersError(refExpressionErrors) {\n refExpressionErrors.optionalParametersLoc = this.state.startLoc;\n }\n parseMaybeAssign(refExpressionErrors, afterLeftParse) {\n const startLoc = this.state.startLoc;\n const isYield = this.isContextual(108);\n if (isYield) {\n if (this.prodParam.hasYield) {\n this.next();\n let left = this.parseYield(startLoc);\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startLoc);\n }\n return left;\n }\n }\n let ownExpressionErrors;\n if (refExpressionErrors) {\n ownExpressionErrors = false;\n } else {\n refExpressionErrors = new ExpressionErrors();\n ownExpressionErrors = true;\n }\n const {\n type\n } = this.state;\n if (type === 10 || tokenIsIdentifier(type)) {\n this.state.potentialArrowAt = this.state.start;\n }\n let left = this.parseMaybeConditional(refExpressionErrors);\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startLoc);\n }\n if (tokenIsAssignment(this.state.type)) {\n const node = this.startNodeAt(startLoc);\n const operator = this.state.value;\n node.operator = operator;\n if (this.match(29)) {\n this.toAssignable(left, true);\n node.left = left;\n const startIndex = startLoc.index;\n if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) {\n refExpressionErrors.doubleProtoLoc = null;\n }\n if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) {\n refExpressionErrors.shorthandAssignLoc = null;\n }\n if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) {\n this.checkDestructuringPrivate(refExpressionErrors);\n refExpressionErrors.privateKeyLoc = null;\n }\n if (refExpressionErrors.voidPatternLoc != null && refExpressionErrors.voidPatternLoc.index >= startIndex) {\n refExpressionErrors.voidPatternLoc = null;\n }\n } else {\n node.left = left;\n }\n this.next();\n node.right = this.parseMaybeAssign();\n this.checkLVal(left, this.finishNode(node, \"AssignmentExpression\"), undefined, undefined, undefined, undefined, operator === \"||=\" || operator === \"&&=\" || operator === \"??=\");\n return node;\n } else if (ownExpressionErrors) {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n if (isYield) {\n const {\n type\n } = this.state;\n const startsExpr = this.hasPlugin(\"v8intrinsic\") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);\n if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {\n this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc);\n return this.parseYield(startLoc);\n }\n }\n return left;\n }\n parseMaybeConditional(refExpressionErrors) {\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprOps(refExpressionErrors);\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n return this.parseConditional(expr, startLoc, refExpressionErrors);\n }\n parseConditional(expr, startLoc, refExpressionErrors) {\n if (this.eat(17)) {\n const node = this.startNodeAt(startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssignAllowIn();\n this.expect(14);\n node.alternate = this.parseMaybeAssign();\n return this.finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n }\n parseMaybeUnaryOrPrivate(refExpressionErrors) {\n return this.match(139) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);\n }\n parseExprOps(refExpressionErrors) {\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n return this.parseExprOp(expr, startLoc, -1);\n }\n parseExprOp(left, leftStartLoc, minPrec) {\n if (this.isPrivateName(left)) {\n const value = this.getPrivateNameSV(left);\n if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) {\n this.raise(Errors.PrivateInExpectedIn, left, {\n identifierName: value\n });\n }\n this.classScope.usePrivateName(value, left.loc.start);\n }\n const op = this.state.type;\n if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) {\n let prec = tokenOperatorPrecedence(op);\n if (prec > minPrec) {\n if (op === 39) {\n this.expectPlugin(\"pipelineOperator\");\n if (this.state.inFSharpPipelineDirectBody) {\n return left;\n }\n this.checkPipelineAtInfixOperator(left, leftStartLoc);\n }\n const node = this.startNodeAt(leftStartLoc);\n node.left = left;\n node.operator = this.state.value;\n const logical = op === 41 || op === 42;\n const coalesce = op === 40;\n if (coalesce) {\n prec = tokenOperatorPrecedence(42);\n }\n this.next();\n if (op === 39 && this.hasPlugin([\"pipelineOperator\", {\n proposal: \"minimal\"\n }])) {\n if (this.state.type === 96 && this.prodParam.hasAwait) {\n throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, this.state.startLoc);\n }\n }\n node.right = this.parseExprOpRightExpr(op, prec);\n const finishedNode = this.finishNode(node, logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\");\n const nextOp = this.state.type;\n if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) {\n throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc);\n }\n return this.parseExprOp(finishedNode, leftStartLoc, minPrec);\n }\n }\n return left;\n }\n parseExprOpRightExpr(op, prec) {\n const startLoc = this.state.startLoc;\n switch (op) {\n case 39:\n switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n case \"hack\":\n return this.withTopicBindingContext(() => {\n return this.parseHackPipeBody();\n });\n case \"fsharp\":\n return this.withSoloAwaitPermittingContext(() => {\n return this.parseFSharpPipelineBody(prec);\n });\n }\n if (this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"smart\") {\n return this.withTopicBindingContext(() => {\n if (this.prodParam.hasYield && this.isContextual(108)) {\n throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc);\n }\n return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc);\n });\n }\n default:\n return this.parseExprOpBaseRightExpr(op, prec);\n }\n }\n parseExprOpBaseRightExpr(op, prec) {\n const startLoc = this.state.startLoc;\n return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);\n }\n parseHackPipeBody() {\n var _body$extra;\n const {\n startLoc\n } = this.state;\n const body = this.parseMaybeAssign();\n const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type);\n if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {\n this.raise(Errors.PipeUnparenthesizedBody, startLoc, {\n type: body.type\n });\n }\n if (!this.topicReferenceWasUsedInCurrentContext()) {\n this.raise(Errors.PipeTopicUnused, startLoc);\n }\n return body;\n }\n checkExponentialAfterUnary(node) {\n if (this.match(57)) {\n this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);\n }\n }\n parseMaybeUnary(refExpressionErrors, sawUnary) {\n const startLoc = this.state.startLoc;\n const isAwait = this.isContextual(96);\n if (isAwait && this.recordAwaitIfAllowed()) {\n this.next();\n const expr = this.parseAwait(startLoc);\n if (!sawUnary) this.checkExponentialAfterUnary(expr);\n return expr;\n }\n const update = this.match(34);\n const node = this.startNode();\n if (tokenIsPrefix(this.state.type)) {\n node.operator = this.state.value;\n node.prefix = true;\n if (this.match(72)) {\n this.expectPlugin(\"throwExpressions\");\n }\n const isDelete = this.match(89);\n this.next();\n node.argument = this.parseMaybeUnary(null, true);\n this.checkExpressionErrors(refExpressionErrors, true);\n if (this.state.strict && isDelete) {\n const arg = node.argument;\n if (arg.type === \"Identifier\") {\n this.raise(Errors.StrictDelete, node);\n } else if (this.hasPropertyAsPrivateName(arg)) {\n this.raise(Errors.DeletePrivateField, node);\n }\n }\n if (!update) {\n if (!sawUnary) {\n this.checkExponentialAfterUnary(node);\n }\n return this.finishNode(node, \"UnaryExpression\");\n }\n }\n const expr = this.parseUpdate(node, update, refExpressionErrors);\n if (isAwait) {\n const {\n type\n } = this.state;\n const startsExpr = this.hasPlugin(\"v8intrinsic\") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);\n if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) {\n this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);\n return this.parseAwait(startLoc);\n }\n }\n return expr;\n }\n parseUpdate(node, update, refExpressionErrors) {\n if (update) {\n const updateExpressionNode = node;\n this.checkLVal(updateExpressionNode.argument, this.finishNode(updateExpressionNode, \"UpdateExpression\"));\n return node;\n }\n const startLoc = this.state.startLoc;\n let expr = this.parseExprSubscripts(refExpressionErrors);\n if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startLoc);\n node.operator = this.state.value;\n node.prefix = false;\n node.argument = expr;\n this.next();\n this.checkLVal(expr, expr = this.finishNode(node, \"UpdateExpression\"));\n }\n return expr;\n }\n parseExprSubscripts(refExpressionErrors) {\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprAtom(refExpressionErrors);\n if (this.shouldExitDescending(expr, potentialArrowAt)) {\n return expr;\n }\n return this.parseSubscripts(expr, startLoc);\n }\n parseSubscripts(base, startLoc, noCalls) {\n const state = {\n optionalChainMember: false,\n maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n stop: false\n };\n do {\n base = this.parseSubscript(base, startLoc, noCalls, state);\n state.maybeAsyncArrow = false;\n } while (!state.stop);\n return base;\n }\n parseSubscript(base, startLoc, noCalls, state) {\n const {\n type\n } = this.state;\n if (!noCalls && type === 15) {\n return this.parseBind(base, startLoc, noCalls, state);\n } else if (tokenIsTemplate(type)) {\n return this.parseTaggedTemplateExpression(base, startLoc, state);\n }\n let optional = false;\n if (type === 18) {\n if (noCalls) {\n this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);\n if (this.lookaheadCharCode() === 40) {\n return this.stopParseSubscript(base, state);\n }\n }\n state.optionalChainMember = optional = true;\n this.next();\n }\n if (!noCalls && this.match(10)) {\n return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional);\n } else {\n const computed = this.eat(0);\n if (computed || optional || this.eat(16)) {\n return this.parseMember(base, startLoc, state, computed, optional);\n } else {\n return this.stopParseSubscript(base, state);\n }\n }\n }\n stopParseSubscript(base, state) {\n state.stop = true;\n return base;\n }\n parseMember(base, startLoc, state, computed, optional) {\n const node = this.startNodeAt(startLoc);\n node.object = base;\n node.computed = computed;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(3);\n } else if (this.match(139)) {\n if (base.type === \"Super\") {\n this.raise(Errors.SuperPrivateField, startLoc);\n }\n this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n node.property = this.parsePrivateName();\n } else {\n node.property = this.parseIdentifier(true);\n }\n if (state.optionalChainMember) {\n node.optional = optional;\n return this.finishNode(node, \"OptionalMemberExpression\");\n } else {\n return this.finishNode(node, \"MemberExpression\");\n }\n }\n parseBind(base, startLoc, noCalls, state) {\n const node = this.startNodeAt(startLoc);\n node.object = base;\n this.next();\n node.callee = this.parseNoCallExpr();\n state.stop = true;\n return this.parseSubscripts(this.finishNode(node, \"BindExpression\"), startLoc, noCalls);\n }\n parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) {\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n let refExpressionErrors = null;\n this.state.maybeInArrowParameters = true;\n this.next();\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n const {\n maybeAsyncArrow,\n optionalChainMember\n } = state;\n if (maybeAsyncArrow) {\n this.expressionScope.enter(newAsyncArrowScope());\n refExpressionErrors = new ExpressionErrors();\n }\n if (optionalChainMember) {\n node.optional = optional;\n }\n if (optional) {\n node.arguments = this.parseCallExpressionArguments();\n } else {\n node.arguments = this.parseCallExpressionArguments(base.type !== \"Super\", node, refExpressionErrors);\n }\n let finishedNode = this.finishCallExpression(node, optionalChainMember);\n if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n state.stop = true;\n this.checkDestructuringPrivate(refExpressionErrors);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode);\n } else {\n if (maybeAsyncArrow) {\n this.checkExpressionErrors(refExpressionErrors, true);\n this.expressionScope.exit();\n }\n this.toReferencedArguments(finishedNode);\n }\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return finishedNode;\n }\n toReferencedArguments(node, isParenthesizedExpr) {\n this.toReferencedListDeep(node.arguments, isParenthesizedExpr);\n }\n parseTaggedTemplateExpression(base, startLoc, state) {\n const node = this.startNodeAt(startLoc);\n node.tag = base;\n node.quasi = this.parseTemplate(true);\n if (state.optionalChainMember) {\n this.raise(Errors.OptionalChainingNoTemplate, startLoc);\n }\n return this.finishNode(node, \"TaggedTemplateExpression\");\n }\n atPossibleAsyncArrow(base) {\n return base.type === \"Identifier\" && base.name === \"async\" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.offsetToSourcePos(base.start) === this.state.potentialArrowAt;\n }\n finishCallExpression(node, optional) {\n if (node.callee.type === \"Import\") {\n if (node.arguments.length === 0 || node.arguments.length > 2) {\n this.raise(Errors.ImportCallArity, node);\n } else {\n for (const arg of node.arguments) {\n if (arg.type === \"SpreadElement\") {\n this.raise(Errors.ImportCallSpreadArgument, arg);\n }\n }\n }\n }\n return this.finishNode(node, optional ? \"OptionalCallExpression\" : \"CallExpression\");\n }\n parseCallExpressionArguments(allowPlaceholder, nodeForExtra, refExpressionErrors) {\n const elts = [];\n let first = true;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n while (!this.eat(11)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n if (this.match(11)) {\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n this.next();\n break;\n }\n }\n elts.push(this.parseExprListItem(11, false, refExpressionErrors, allowPlaceholder));\n }\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return elts;\n }\n shouldParseAsyncArrow() {\n return this.match(19) && !this.canInsertSemicolon();\n }\n parseAsyncArrowFromCallExpression(node, call) {\n var _call$extra;\n this.resetPreviousNodeTrailingComments(call);\n this.expect(19);\n this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc);\n if (call.innerComments) {\n setInnerComments(node, call.innerComments);\n }\n if (call.callee.trailingComments) {\n setInnerComments(node, call.callee.trailingComments);\n }\n return node;\n }\n parseNoCallExpr() {\n const startLoc = this.state.startLoc;\n return this.parseSubscripts(this.parseExprAtom(), startLoc, true);\n }\n parseExprAtom(refExpressionErrors) {\n let node;\n let decorators = null;\n const {\n type\n } = this.state;\n switch (type) {\n case 79:\n return this.parseSuper();\n case 83:\n node = this.startNode();\n this.next();\n if (this.match(16)) {\n return this.parseImportMetaPropertyOrPhaseCall(node);\n }\n if (this.match(10)) {\n if (this.optionFlags & 512) {\n return this.parseImportCall(node);\n } else {\n return this.finishNode(node, \"Import\");\n }\n } else {\n this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc);\n return this.finishNode(node, \"Import\");\n }\n case 78:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\");\n case 90:\n {\n return this.parseDo(this.startNode(), false);\n }\n case 56:\n case 31:\n {\n this.readRegexp();\n return this.parseRegExpLiteral(this.state.value);\n }\n case 135:\n return this.parseNumericLiteral(this.state.value);\n case 136:\n return this.parseBigIntLiteral(this.state.value);\n case 134:\n return this.parseStringLiteral(this.state.value);\n case 84:\n return this.parseNullLiteral();\n case 85:\n return this.parseBooleanLiteral(true);\n case 86:\n return this.parseBooleanLiteral(false);\n case 10:\n {\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n return this.parseParenAndDistinguishExpression(canBeArrow);\n }\n case 0:\n {\n return this.parseArrayLike(3, false, refExpressionErrors);\n }\n case 5:\n {\n return this.parseObjectLike(8, false, false, refExpressionErrors);\n }\n case 68:\n return this.parseFunctionOrFunctionSent();\n case 26:\n decorators = this.parseDecorators();\n case 80:\n return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false);\n case 77:\n return this.parseNewOrNewTarget();\n case 25:\n case 24:\n return this.parseTemplate(false);\n case 15:\n {\n node = this.startNode();\n this.next();\n node.object = null;\n const callee = node.callee = this.parseNoCallExpr();\n if (callee.type === \"MemberExpression\") {\n return this.finishNode(node, \"BindExpression\");\n } else {\n throw this.raise(Errors.UnsupportedBind, callee);\n }\n }\n case 139:\n {\n this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {\n identifierName: this.state.value\n });\n return this.parsePrivateName();\n }\n case 33:\n {\n return this.parseTopicReferenceThenEqualsSign(54, \"%\");\n }\n case 32:\n {\n return this.parseTopicReferenceThenEqualsSign(44, \"^\");\n }\n case 37:\n case 38:\n {\n return this.parseTopicReference(\"hack\");\n }\n case 44:\n case 54:\n case 27:\n {\n const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n if (pipeProposal) {\n return this.parseTopicReference(pipeProposal);\n }\n throw this.unexpected();\n }\n case 47:\n {\n const lookaheadCh = this.input.codePointAt(this.nextTokenStart());\n if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {\n throw this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n }\n throw this.unexpected();\n }\n default:\n if (type === 137) {\n return this.parseDecimalLiteral(this.state.value);\n } else if (type === 2 || type === 1) {\n return this.parseArrayLike(this.state.type === 2 ? 4 : 3, true);\n } else if (type === 6 || type === 7) {\n return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);\n }\n if (tokenIsIdentifier(type)) {\n if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) {\n return this.parseModuleExpression();\n }\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n const containsEsc = this.state.containsEsc;\n const id = this.parseIdentifier();\n if (!containsEsc && id.name === \"async\" && !this.canInsertSemicolon()) {\n const {\n type\n } = this.state;\n if (type === 68) {\n this.resetPreviousNodeTrailingComments(id);\n this.next();\n return this.parseAsyncFunctionExpression(this.startNodeAtNode(id));\n } else if (tokenIsIdentifier(type)) {\n if (this.lookaheadCharCode() === 61) {\n return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));\n } else {\n return id;\n }\n } else if (type === 90) {\n this.resetPreviousNodeTrailingComments(id);\n return this.parseDo(this.startNodeAtNode(id), true);\n }\n }\n if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) {\n this.next();\n return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);\n }\n return id;\n } else {\n throw this.unexpected();\n }\n }\n }\n parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {\n const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n if (pipeProposal) {\n this.state.type = topicTokenType;\n this.state.value = topicTokenValue;\n this.state.pos--;\n this.state.end--;\n this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n return this.parseTopicReference(pipeProposal);\n }\n throw this.unexpected();\n }\n parseTopicReference(pipeProposal) {\n const node = this.startNode();\n const startLoc = this.state.startLoc;\n const tokenType = this.state.type;\n this.next();\n return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n }\n finishTopicReference(node, startLoc, pipeProposal, tokenType) {\n if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) {\n if (pipeProposal === \"hack\") {\n if (!this.topicReferenceIsAllowedInCurrentContext()) {\n this.raise(Errors.PipeTopicUnbound, startLoc);\n }\n this.registerTopicReference();\n return this.finishNode(node, \"TopicReference\");\n } else {\n if (!this.topicReferenceIsAllowedInCurrentContext()) {\n this.raise(Errors.PrimaryTopicNotAllowed, startLoc);\n }\n this.registerTopicReference();\n return this.finishNode(node, \"PipelinePrimaryTopicReference\");\n }\n } else {\n throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {\n token: tokenLabelName(tokenType)\n });\n }\n }\n testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) {\n switch (pipeProposal) {\n case \"hack\":\n {\n return this.hasPlugin([\"pipelineOperator\", {\n topicToken: tokenLabelName(tokenType)\n }]);\n }\n case \"smart\":\n return tokenType === 27;\n default:\n throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);\n }\n }\n parseAsyncArrowUnaryFunction(node) {\n this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n const params = [this.parseIdentifier()];\n this.prodParam.exit();\n if (this.hasPrecedingLineBreak()) {\n this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());\n }\n this.expect(19);\n return this.parseArrowExpression(node, params, true);\n }\n parseDo(node, isAsync) {\n this.expectPlugin(\"doExpressions\");\n if (isAsync) {\n this.expectPlugin(\"asyncDoExpressions\");\n }\n node.async = isAsync;\n this.next();\n const oldLabels = this.state.labels;\n this.state.labels = [];\n if (isAsync) {\n this.prodParam.enter(2);\n node.body = this.parseBlock();\n this.prodParam.exit();\n } else {\n node.body = this.parseBlock();\n }\n this.state.labels = oldLabels;\n return this.finishNode(node, \"DoExpression\");\n }\n parseSuper() {\n const node = this.startNode();\n this.next();\n if (this.match(10) && !this.scope.allowDirectSuper) {\n if (!(this.optionFlags & 16)) {\n this.raise(Errors.SuperNotAllowed, node);\n }\n } else if (!this.scope.allowSuper) {\n if (!(this.optionFlags & 16)) {\n this.raise(Errors.UnexpectedSuper, node);\n }\n }\n if (!this.match(10) && !this.match(0) && !this.match(16)) {\n this.raise(Errors.UnsupportedSuper, node);\n }\n return this.finishNode(node, \"Super\");\n }\n parsePrivateName() {\n const node = this.startNode();\n const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1));\n const name = this.state.value;\n this.next();\n node.id = this.createIdentifier(id, name);\n return this.finishNode(node, \"PrivateName\");\n }\n parseFunctionOrFunctionSent() {\n const node = this.startNode();\n this.next();\n if (this.prodParam.hasYield && this.match(16)) {\n const meta = this.createIdentifier(this.startNodeAtNode(node), \"function\");\n this.next();\n if (this.match(103)) {\n this.expectPlugin(\"functionSent\");\n } else if (!this.hasPlugin(\"functionSent\")) {\n this.unexpected();\n }\n return this.parseMetaProperty(node, meta, \"sent\");\n }\n return this.parseFunction(node);\n }\n parseMetaProperty(node, meta, propertyName) {\n node.meta = meta;\n const containsEsc = this.state.containsEsc;\n node.property = this.parseIdentifier(true);\n if (node.property.name !== propertyName || containsEsc) {\n this.raise(Errors.UnsupportedMetaProperty, node.property, {\n target: meta.name,\n onlyValidPropertyName: propertyName\n });\n }\n return this.finishNode(node, \"MetaProperty\");\n }\n parseImportMetaPropertyOrPhaseCall(node) {\n this.next();\n if (this.isContextual(105) || this.isContextual(97)) {\n const isSource = this.isContextual(105);\n this.expectPlugin(isSource ? \"sourcePhaseImports\" : \"deferredImportEvaluation\");\n this.next();\n node.phase = isSource ? \"source\" : \"defer\";\n return this.parseImportCall(node);\n } else {\n const id = this.createIdentifierAt(this.startNodeAtNode(node), \"import\", this.state.lastTokStartLoc);\n if (this.isContextual(101)) {\n if (!this.inModule) {\n this.raise(Errors.ImportMetaOutsideModule, id);\n }\n this.sawUnambiguousESM = true;\n }\n return this.parseMetaProperty(node, id, \"meta\");\n }\n }\n parseLiteralAtNode(value, type, node) {\n this.addExtra(node, \"rawValue\", value);\n this.addExtra(node, \"raw\", this.input.slice(this.offsetToSourcePos(node.start), this.state.end));\n node.value = value;\n this.next();\n return this.finishNode(node, type);\n }\n parseLiteral(value, type) {\n const node = this.startNode();\n return this.parseLiteralAtNode(value, type, node);\n }\n parseStringLiteral(value) {\n return this.parseLiteral(value, \"StringLiteral\");\n }\n parseNumericLiteral(value) {\n return this.parseLiteral(value, \"NumericLiteral\");\n }\n parseBigIntLiteral(value) {\n return this.parseLiteral(value, \"BigIntLiteral\");\n }\n parseDecimalLiteral(value) {\n return this.parseLiteral(value, \"DecimalLiteral\");\n }\n parseRegExpLiteral(value) {\n const node = this.startNode();\n this.addExtra(node, \"raw\", this.input.slice(this.offsetToSourcePos(node.start), this.state.end));\n node.pattern = value.pattern;\n node.flags = value.flags;\n this.next();\n return this.finishNode(node, \"RegExpLiteral\");\n }\n parseBooleanLiteral(value) {\n const node = this.startNode();\n node.value = value;\n this.next();\n return this.finishNode(node, \"BooleanLiteral\");\n }\n parseNullLiteral() {\n const node = this.startNode();\n this.next();\n return this.finishNode(node, \"NullLiteral\");\n }\n parseParenAndDistinguishExpression(canBeArrow) {\n const startLoc = this.state.startLoc;\n let val;\n this.next();\n this.expressionScope.enter(newArrowHeadScope());\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.maybeInArrowParameters = true;\n this.state.inFSharpPipelineDirectBody = false;\n const innerStartLoc = this.state.startLoc;\n const exprList = [];\n const refExpressionErrors = new ExpressionErrors();\n let first = true;\n let spreadStartLoc;\n let optionalCommaStartLoc;\n while (!this.match(11)) {\n if (first) {\n first = false;\n } else {\n this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc);\n if (this.match(11)) {\n optionalCommaStartLoc = this.state.startLoc;\n break;\n }\n }\n if (this.match(21)) {\n const spreadNodeStartLoc = this.state.startLoc;\n spreadStartLoc = this.state.startLoc;\n exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc));\n if (!this.checkCommaAfterRest(41)) {\n break;\n }\n } else {\n exprList.push(this.parseMaybeAssignAllowInOrVoidPattern(11, refExpressionErrors, this.parseParenItem));\n }\n }\n const innerEndLoc = this.state.lastTokEndLoc;\n this.expect(11);\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n let arrowNode = this.startNodeAt(startLoc);\n if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.expressionScope.validateAsPattern();\n this.expressionScope.exit();\n this.parseArrowExpression(arrowNode, exprList, false);\n return arrowNode;\n }\n this.expressionScope.exit();\n if (!exprList.length) {\n this.unexpected(this.state.lastTokStartLoc);\n }\n if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n if (spreadStartLoc) this.unexpected(spreadStartLoc);\n this.checkExpressionErrors(refExpressionErrors, true);\n this.toReferencedListDeep(exprList, true);\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartLoc);\n val.expressions = exprList;\n this.finishNode(val, \"SequenceExpression\");\n this.resetEndLocation(val, innerEndLoc);\n } else {\n val = exprList[0];\n }\n return this.wrapParenthesis(startLoc, val);\n }\n wrapParenthesis(startLoc, expression) {\n if (!(this.optionFlags & 1024)) {\n this.addExtra(expression, \"parenthesized\", true);\n this.addExtra(expression, \"parenStart\", startLoc.index);\n this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index);\n return expression;\n }\n const parenExpression = this.startNodeAt(startLoc);\n parenExpression.expression = expression;\n return this.finishNode(parenExpression, \"ParenthesizedExpression\");\n }\n shouldParseArrow(params) {\n return !this.canInsertSemicolon();\n }\n parseArrow(node) {\n if (this.eat(19)) {\n return node;\n }\n }\n parseParenItem(node, startLoc) {\n return node;\n }\n parseNewOrNewTarget() {\n const node = this.startNode();\n this.next();\n if (this.match(16)) {\n const meta = this.createIdentifier(this.startNodeAtNode(node), \"new\");\n this.next();\n const metaProp = this.parseMetaProperty(node, meta, \"target\");\n if (!this.scope.allowNewTarget) {\n this.raise(Errors.UnexpectedNewTarget, metaProp);\n }\n return metaProp;\n }\n return this.parseNew(node);\n }\n parseNew(node) {\n this.parseNewCallee(node);\n if (this.eat(10)) {\n const args = this.parseExprList(11);\n this.toReferencedList(args);\n node.arguments = args;\n } else {\n node.arguments = [];\n }\n return this.finishNode(node, \"NewExpression\");\n }\n parseNewCallee(node) {\n const isImport = this.match(83);\n const callee = this.parseNoCallExpr();\n node.callee = callee;\n if (isImport && (callee.type === \"Import\" || callee.type === \"ImportExpression\")) {\n this.raise(Errors.ImportCallNotNewExpression, callee);\n }\n }\n parseTemplateElement(isTagged) {\n const {\n start,\n startLoc,\n end,\n value\n } = this.state;\n const elemStart = start + 1;\n const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1));\n if (value === null) {\n if (!isTagged) {\n this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1));\n }\n }\n const isTail = this.match(24);\n const endOffset = isTail ? -1 : -2;\n const elemEnd = end + endOffset;\n elem.value = {\n raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n cooked: value === null ? null : value.slice(1, endOffset)\n };\n elem.tail = isTail;\n this.next();\n const finishedNode = this.finishNode(elem, \"TemplateElement\");\n this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset));\n return finishedNode;\n }\n parseTemplate(isTagged) {\n const node = this.startNode();\n let curElt = this.parseTemplateElement(isTagged);\n const quasis = [curElt];\n const substitutions = [];\n while (!curElt.tail) {\n substitutions.push(this.parseTemplateSubstitution());\n this.readTemplateContinuation();\n quasis.push(curElt = this.parseTemplateElement(isTagged));\n }\n node.expressions = substitutions;\n node.quasis = quasis;\n return this.finishNode(node, \"TemplateLiteral\");\n }\n parseTemplateSubstitution() {\n return this.parseExpression();\n }\n parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {\n if (isRecord) {\n this.expectPlugin(\"recordAndTuple\");\n }\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n let sawProto = false;\n let first = true;\n const node = this.startNode();\n node.properties = [];\n this.next();\n while (!this.match(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n if (this.match(close)) {\n this.addTrailingCommaExtraToNode(node);\n break;\n }\n }\n let prop;\n if (isPattern) {\n prop = this.parseBindingProperty();\n } else {\n prop = this.parsePropertyDefinition(refExpressionErrors);\n sawProto = this.checkProto(prop, isRecord, sawProto, refExpressionErrors);\n }\n if (isRecord && !this.isObjectProperty(prop) && prop.type !== \"SpreadElement\") {\n this.raise(Errors.InvalidRecordProperty, prop);\n }\n if (prop.shorthand) {\n this.addExtra(prop, \"shorthand\", true);\n }\n node.properties.push(prop);\n }\n this.next();\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n let type = \"ObjectExpression\";\n if (isPattern) {\n type = \"ObjectPattern\";\n } else if (isRecord) {\n type = \"RecordExpression\";\n }\n return this.finishNode(node, type);\n }\n addTrailingCommaExtraToNode(node) {\n this.addExtra(node, \"trailingComma\", this.state.lastTokStartLoc.index);\n this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n }\n maybeAsyncOrAccessorProp(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && (this.isLiteralPropertyName() || this.match(0) || this.match(55));\n }\n parsePropertyDefinition(refExpressionErrors) {\n let decorators = [];\n if (this.match(26)) {\n if (this.hasPlugin(\"decorators\")) {\n this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);\n }\n while (this.match(26)) {\n decorators.push(this.parseDecorator());\n }\n }\n const prop = this.startNode();\n let isAsync = false;\n let isAccessor = false;\n let startLoc;\n if (this.match(21)) {\n if (decorators.length) this.unexpected();\n return this.parseSpread();\n }\n if (decorators.length) {\n prop.decorators = decorators;\n decorators = [];\n }\n prop.method = false;\n if (refExpressionErrors) {\n startLoc = this.state.startLoc;\n }\n let isGenerator = this.eat(55);\n this.parsePropertyNamePrefixOperator(prop);\n const containsEsc = this.state.containsEsc;\n this.parsePropertyName(prop, refExpressionErrors);\n if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n const {\n key\n } = prop;\n const keyName = key.name;\n if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n isAsync = true;\n this.resetPreviousNodeTrailingComments(key);\n isGenerator = this.eat(55);\n this.parsePropertyName(prop);\n }\n if (keyName === \"get\" || keyName === \"set\") {\n isAccessor = true;\n this.resetPreviousNodeTrailingComments(key);\n prop.kind = keyName;\n if (this.match(55)) {\n isGenerator = true;\n this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {\n kind: keyName\n });\n this.next();\n }\n this.parsePropertyName(prop);\n }\n }\n return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);\n }\n getGetterSetterExpectedParamCount(method) {\n return method.kind === \"get\" ? 0 : 1;\n }\n getObjectOrClassMethodParams(method) {\n return method.params;\n }\n checkGetterSetterParams(method) {\n var _params;\n const paramCount = this.getGetterSetterExpectedParamCount(method);\n const params = this.getObjectOrClassMethodParams(method);\n if (params.length !== paramCount) {\n this.raise(method.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity, method);\n }\n if (method.kind === \"set\" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === \"RestElement\") {\n this.raise(Errors.BadSetterRestParameter, method);\n }\n }\n parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n if (isAccessor) {\n const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, \"ObjectMethod\");\n this.checkGetterSetterParams(finishedProp);\n return finishedProp;\n }\n if (isAsync || isGenerator || this.match(10)) {\n if (isPattern) this.unexpected();\n prop.kind = \"method\";\n prop.method = true;\n return this.parseMethod(prop, isGenerator, isAsync, false, false, \"ObjectMethod\");\n }\n }\n parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {\n prop.shorthand = false;\n if (this.eat(14)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowInOrVoidPattern(8, refExpressionErrors);\n return this.finishObjectProperty(prop);\n }\n if (!prop.computed && prop.key.type === \"Identifier\") {\n this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key));\n } else if (this.match(29)) {\n const shorthandAssignLoc = this.state.startLoc;\n if (refExpressionErrors != null) {\n if (refExpressionErrors.shorthandAssignLoc === null) {\n refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n }\n } else {\n this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n }\n prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key));\n } else {\n prop.value = this.cloneIdentifier(prop.key);\n }\n prop.shorthand = true;\n return this.finishObjectProperty(prop);\n }\n }\n finishObjectProperty(node) {\n return this.finishNode(node, \"ObjectProperty\");\n }\n parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {\n const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);\n if (!node) this.unexpected();\n return node;\n }\n parsePropertyName(prop, refExpressionErrors) {\n if (this.eat(0)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssignAllowIn();\n this.expect(3);\n } else {\n const {\n type,\n value\n } = this.state;\n let key;\n if (tokenIsKeywordOrIdentifier(type)) {\n key = this.parseIdentifier(true);\n } else {\n switch (type) {\n case 135:\n key = this.parseNumericLiteral(value);\n break;\n case 134:\n key = this.parseStringLiteral(value);\n break;\n case 136:\n key = this.parseBigIntLiteral(value);\n break;\n case 139:\n {\n const privateKeyLoc = this.state.startLoc;\n if (refExpressionErrors != null) {\n if (refExpressionErrors.privateKeyLoc === null) {\n refExpressionErrors.privateKeyLoc = privateKeyLoc;\n }\n } else {\n this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n }\n key = this.parsePrivateName();\n break;\n }\n default:\n if (type === 137) {\n key = this.parseDecimalLiteral(value);\n break;\n }\n this.unexpected();\n }\n }\n prop.key = key;\n if (type !== 139) {\n prop.computed = false;\n }\n }\n }\n initFunction(node, isAsync) {\n node.id = null;\n node.generator = false;\n node.async = isAsync;\n }\n parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {\n this.initFunction(node, isAsync);\n node.generator = isGenerator;\n this.scope.enter(514 | 16 | (inClassScope ? 576 : 0) | (allowDirectSuper ? 32 : 0));\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n this.parseFunctionParams(node, isConstructor);\n const finishedNode = this.parseFunctionBodyAndFinish(node, type, true);\n this.prodParam.exit();\n this.scope.exit();\n return finishedNode;\n }\n parseArrayLike(close, isTuple, refExpressionErrors) {\n if (isTuple) {\n this.expectPlugin(\"recordAndTuple\");\n }\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n const node = this.startNode();\n this.next();\n node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return this.finishNode(node, isTuple ? \"TupleExpression\" : \"ArrayExpression\");\n }\n parseArrowExpression(node, params, isAsync, trailingCommaLoc) {\n this.scope.enter(514 | 4);\n let flags = functionFlags(isAsync, false);\n if (!this.match(5) && this.prodParam.hasIn) {\n flags |= 8;\n }\n this.prodParam.enter(flags);\n this.initFunction(node, isAsync);\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n if (params) {\n this.state.maybeInArrowParameters = true;\n this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n }\n this.state.maybeInArrowParameters = false;\n this.parseFunctionBody(node, true);\n this.prodParam.exit();\n this.scope.exit();\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return this.finishNode(node, \"ArrowFunctionExpression\");\n }\n setArrowFunctionParameters(node, params, trailingCommaLoc) {\n this.toAssignableList(params, trailingCommaLoc, false);\n node.params = params;\n }\n parseFunctionBodyAndFinish(node, type, isMethod = false) {\n this.parseFunctionBody(node, false, isMethod);\n return this.finishNode(node, type);\n }\n parseFunctionBody(node, allowExpression, isMethod = false) {\n const isExpression = allowExpression && !this.match(5);\n this.expressionScope.enter(newExpressionScope());\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n this.checkParams(node, false, allowExpression, false);\n } else {\n const oldStrict = this.state.strict;\n const oldLabels = this.state.labels;\n this.state.labels = [];\n this.prodParam.enter(this.prodParam.currentFlags() | 4);\n node.body = this.parseBlock(true, false, hasStrictModeDirective => {\n const nonSimple = !this.isSimpleParamList(node.params);\n if (hasStrictModeDirective && nonSimple) {\n this.raise(Errors.IllegalLanguageModeDirective, (node.kind === \"method\" || node.kind === \"constructor\") && !!node.key ? node.key.loc.end : node);\n }\n const strictModeChanged = !oldStrict && this.state.strict;\n this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);\n if (this.state.strict && node.id) {\n this.checkIdentifier(node.id, 65, strictModeChanged);\n }\n });\n this.prodParam.exit();\n this.state.labels = oldLabels;\n }\n this.expressionScope.exit();\n }\n isSimpleParameter(node) {\n return node.type === \"Identifier\";\n }\n isSimpleParamList(params) {\n for (let i = 0, len = params.length; i < len; i++) {\n if (!this.isSimpleParameter(params[i])) return false;\n }\n return true;\n }\n checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {\n const checkClashes = !allowDuplicates && new Set();\n const formalParameters = {\n type: \"FormalParameters\"\n };\n for (const param of node.params) {\n this.checkLVal(param, formalParameters, 5, checkClashes, strictModeChanged);\n }\n }\n parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {\n const elts = [];\n let first = true;\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n if (this.match(close)) {\n if (nodeForExtra) {\n this.addTrailingCommaExtraToNode(nodeForExtra);\n }\n this.next();\n break;\n }\n }\n elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors));\n }\n return elts;\n }\n parseExprListItem(close, allowEmpty, refExpressionErrors, allowPlaceholder) {\n let elt;\n if (this.match(12)) {\n if (!allowEmpty) {\n this.raise(Errors.UnexpectedToken, this.state.curPosition(), {\n unexpected: \",\"\n });\n }\n elt = null;\n } else if (this.match(21)) {\n const spreadNodeStartLoc = this.state.startLoc;\n elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc);\n } else if (this.match(17)) {\n this.expectPlugin(\"partialApplication\");\n if (!allowPlaceholder) {\n this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);\n }\n const node = this.startNode();\n this.next();\n elt = this.finishNode(node, \"ArgumentPlaceholder\");\n } else {\n elt = this.parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, this.parseParenItem);\n }\n return elt;\n }\n parseIdentifier(liberal) {\n const node = this.startNode();\n const name = this.parseIdentifierName(liberal);\n return this.createIdentifier(node, name);\n }\n createIdentifier(node, name) {\n node.name = name;\n node.loc.identifierName = name;\n return this.finishNode(node, \"Identifier\");\n }\n createIdentifierAt(node, name, endLoc) {\n node.name = name;\n node.loc.identifierName = name;\n return this.finishNodeAt(node, \"Identifier\", endLoc);\n }\n parseIdentifierName(liberal) {\n let name;\n const {\n startLoc,\n type\n } = this.state;\n if (tokenIsKeywordOrIdentifier(type)) {\n name = this.state.value;\n } else {\n this.unexpected();\n }\n const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n if (liberal) {\n if (tokenIsKeyword) {\n this.replaceToken(132);\n }\n } else {\n this.checkReservedWord(name, startLoc, tokenIsKeyword, false);\n }\n this.next();\n return name;\n }\n checkReservedWord(word, startLoc, checkKeywords, isBinding) {\n if (word.length > 10) {\n return;\n }\n if (!canBeReservedWord(word)) {\n return;\n }\n if (checkKeywords && isKeyword(word)) {\n this.raise(Errors.UnexpectedKeyword, startLoc, {\n keyword: word\n });\n return;\n }\n const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;\n if (reservedTest(word, this.inModule)) {\n this.raise(Errors.UnexpectedReservedWord, startLoc, {\n reservedWord: word\n });\n return;\n } else if (word === \"yield\") {\n if (this.prodParam.hasYield) {\n this.raise(Errors.YieldBindingIdentifier, startLoc);\n return;\n }\n } else if (word === \"await\") {\n if (this.prodParam.hasAwait) {\n this.raise(Errors.AwaitBindingIdentifier, startLoc);\n return;\n }\n if (this.scope.inStaticBlock) {\n this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);\n return;\n }\n this.expressionScope.recordAsyncArrowParametersError(startLoc);\n } else if (word === \"arguments\") {\n if (this.scope.inClassAndNotInNonArrowFunction) {\n this.raise(Errors.ArgumentsInClass, startLoc);\n return;\n }\n }\n }\n recordAwaitIfAllowed() {\n const isAwaitAllowed = this.prodParam.hasAwait;\n if (isAwaitAllowed && !this.scope.inFunction) {\n this.state.hasTopLevelAwait = true;\n }\n return isAwaitAllowed;\n }\n parseAwait(startLoc) {\n const node = this.startNodeAt(startLoc);\n this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, node);\n if (this.eat(55)) {\n this.raise(Errors.ObsoleteAwaitStar, node);\n }\n if (!this.scope.inFunction && !(this.optionFlags & 1)) {\n if (this.isAmbiguousPrefixOrIdentifier()) {\n this.ambiguousScriptDifferentAst = true;\n } else {\n this.sawUnambiguousESM = true;\n }\n }\n if (!this.state.soloAwait) {\n node.argument = this.parseMaybeUnary(null, true);\n }\n return this.finishNode(node, \"AwaitExpression\");\n }\n isAmbiguousPrefixOrIdentifier() {\n if (this.hasPrecedingLineBreak()) return true;\n const {\n type\n } = this.state;\n return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 138 || type === 56 || this.hasPlugin(\"v8intrinsic\") && type === 54;\n }\n parseYield(startLoc) {\n const node = this.startNodeAt(startLoc);\n this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, node);\n let delegating = false;\n let argument = null;\n if (!this.hasPrecedingLineBreak()) {\n delegating = this.eat(55);\n switch (this.state.type) {\n case 13:\n case 140:\n case 8:\n case 11:\n case 3:\n case 9:\n case 14:\n case 12:\n if (!delegating) break;\n default:\n argument = this.parseMaybeAssign();\n }\n }\n node.delegate = delegating;\n node.argument = argument;\n return this.finishNode(node, \"YieldExpression\");\n }\n parseImportCall(node) {\n this.next();\n node.source = this.parseMaybeAssignAllowIn();\n node.options = null;\n if (this.eat(12)) {\n if (!this.match(11)) {\n node.options = this.parseMaybeAssignAllowIn();\n if (this.eat(12)) {\n this.addTrailingCommaExtraToNode(node.options);\n if (!this.match(11)) {\n do {\n this.parseMaybeAssignAllowIn();\n } while (this.eat(12) && !this.match(11));\n this.raise(Errors.ImportCallArity, node);\n }\n }\n } else {\n this.addTrailingCommaExtraToNode(node.source);\n }\n }\n this.expect(11);\n return this.finishNode(node, \"ImportExpression\");\n }\n checkPipelineAtInfixOperator(left, leftStartLoc) {\n if (this.hasPlugin([\"pipelineOperator\", {\n proposal: \"smart\"\n }])) {\n if (left.type === \"SequenceExpression\") {\n this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc);\n }\n }\n }\n parseSmartPipelineBodyInStyle(childExpr, startLoc) {\n if (this.isSimpleReference(childExpr)) {\n const bodyNode = this.startNodeAt(startLoc);\n bodyNode.callee = childExpr;\n return this.finishNode(bodyNode, \"PipelineBareFunction\");\n } else {\n const bodyNode = this.startNodeAt(startLoc);\n this.checkSmartPipeTopicBodyEarlyErrors(startLoc);\n bodyNode.expression = childExpr;\n return this.finishNode(bodyNode, \"PipelineTopicExpression\");\n }\n }\n isSimpleReference(expression) {\n switch (expression.type) {\n case \"MemberExpression\":\n return !expression.computed && this.isSimpleReference(expression.object);\n case \"Identifier\":\n return true;\n default:\n return false;\n }\n }\n checkSmartPipeTopicBodyEarlyErrors(startLoc) {\n if (this.match(19)) {\n throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc);\n }\n if (!this.topicReferenceWasUsedInCurrentContext()) {\n this.raise(Errors.PipelineTopicUnused, startLoc);\n }\n }\n withTopicBindingContext(callback) {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n maxNumOfResolvableTopics: 1,\n maxTopicIndex: null\n };\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n }\n withSmartMixTopicForbiddingContext(callback) {\n if (this.hasPlugin([\"pipelineOperator\", {\n proposal: \"smart\"\n }])) {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null\n };\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n } else {\n return callback();\n }\n }\n withSoloAwaitPermittingContext(callback) {\n const outerContextSoloAwaitState = this.state.soloAwait;\n this.state.soloAwait = true;\n try {\n return callback();\n } finally {\n this.state.soloAwait = outerContextSoloAwaitState;\n }\n }\n allowInAnd(callback) {\n const flags = this.prodParam.currentFlags();\n const prodParamToSet = 8 & ~flags;\n if (prodParamToSet) {\n this.prodParam.enter(flags | 8);\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n return callback();\n }\n disallowInAnd(callback) {\n const flags = this.prodParam.currentFlags();\n const prodParamToClear = 8 & flags;\n if (prodParamToClear) {\n this.prodParam.enter(flags & ~8);\n try {\n return callback();\n } finally {\n this.prodParam.exit();\n }\n }\n return callback();\n }\n registerTopicReference() {\n this.state.topicContext.maxTopicIndex = 0;\n }\n topicReferenceIsAllowedInCurrentContext() {\n return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n }\n topicReferenceWasUsedInCurrentContext() {\n return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;\n }\n parseFSharpPipelineBody(prec) {\n const startLoc = this.state.startLoc;\n this.state.potentialArrowAt = this.state.start;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = true;\n const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec);\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return ret;\n }\n parseModuleExpression() {\n this.expectPlugin(\"moduleBlocks\");\n const node = this.startNode();\n this.next();\n if (!this.match(5)) {\n this.unexpected(null, 5);\n }\n const program = this.startNodeAt(this.state.endLoc);\n this.next();\n const revertScopes = this.initializeScopes(true);\n this.enterInitialScopes();\n try {\n node.body = this.parseProgram(program, 8, \"module\");\n } finally {\n revertScopes();\n }\n return this.finishNode(node, \"ModuleExpression\");\n }\n parseVoidPattern(refExpressionErrors) {\n this.expectPlugin(\"discardBinding\");\n const node = this.startNode();\n if (refExpressionErrors != null) {\n refExpressionErrors.voidPatternLoc = this.state.startLoc;\n }\n this.next();\n return this.finishNode(node, \"VoidPattern\");\n }\n parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, afterLeftParse) {\n if (refExpressionErrors != null && this.match(88)) {\n const nextCode = this.lookaheadCharCode();\n if (nextCode === 44 || nextCode === (close === 3 ? 93 : close === 8 ? 125 : 41) || nextCode === 61) {\n return this.parseMaybeDefault(this.state.startLoc, this.parseVoidPattern(refExpressionErrors));\n }\n }\n return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse);\n }\n parsePropertyNamePrefixOperator(prop) {}\n}\nconst loopLabel = {\n kind: 1\n },\n switchLabel = {\n kind: 2\n };\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\nfunction babel7CompatTokens(tokens, input, startIndex) {\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n const {\n type\n } = token;\n if (typeof type === \"number\") {\n if (type === 139) {\n const {\n loc,\n start,\n value,\n end\n } = token;\n const hashEndPos = start + 1;\n const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);\n tokens.splice(i, 1, new Token({\n type: getExportedToken(27),\n value: \"#\",\n start: start,\n end: hashEndPos,\n startLoc: loc.start,\n endLoc: hashEndLoc\n }), new Token({\n type: getExportedToken(132),\n value: value,\n start: hashEndPos,\n end: end,\n startLoc: hashEndLoc,\n endLoc: loc.end\n }));\n i++;\n continue;\n }\n if (tokenIsTemplate(type)) {\n const {\n loc,\n start,\n value,\n end\n } = token;\n const backquoteEnd = start + 1;\n const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);\n let startToken;\n if (input.charCodeAt(start - startIndex) === 96) {\n startToken = new Token({\n type: getExportedToken(22),\n value: \"`\",\n start: start,\n end: backquoteEnd,\n startLoc: loc.start,\n endLoc: backquoteEndLoc\n });\n } else {\n startToken = new Token({\n type: getExportedToken(8),\n value: \"}\",\n start: start,\n end: backquoteEnd,\n startLoc: loc.start,\n endLoc: backquoteEndLoc\n });\n }\n let templateValue, templateElementEnd, templateElementEndLoc, endToken;\n if (type === 24) {\n templateElementEnd = end - 1;\n templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);\n templateValue = value === null ? null : value.slice(1, -1);\n endToken = new Token({\n type: getExportedToken(22),\n value: \"`\",\n start: templateElementEnd,\n end: end,\n startLoc: templateElementEndLoc,\n endLoc: loc.end\n });\n } else {\n templateElementEnd = end - 2;\n templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);\n templateValue = value === null ? null : value.slice(1, -2);\n endToken = new Token({\n type: getExportedToken(23),\n value: \"${\",\n start: templateElementEnd,\n end: end,\n startLoc: templateElementEndLoc,\n endLoc: loc.end\n });\n }\n tokens.splice(i, 1, startToken, new Token({\n type: getExportedToken(20),\n value: templateValue,\n start: backquoteEnd,\n end: templateElementEnd,\n startLoc: backquoteEndLoc,\n endLoc: templateElementEndLoc\n }), endToken);\n i += 2;\n continue;\n }\n token.type = getExportedToken(type);\n }\n }\n return tokens;\n}\nclass StatementParser extends ExpressionParser {\n parseTopLevel(file, program) {\n file.program = this.parseProgram(program, 140, this.options.sourceType === \"module\" ? \"module\" : \"script\");\n file.comments = this.comments;\n if (this.optionFlags & 256) {\n file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex);\n }\n return this.finishNode(file, \"File\");\n }\n parseProgram(program, end, sourceType) {\n program.sourceType = sourceType;\n program.interpreter = this.parseInterpreterDirective();\n this.parseBlockBody(program, true, true, end);\n if (this.inModule) {\n if (!(this.optionFlags & 64) && this.scope.undefinedExports.size > 0) {\n for (const [localName, at] of Array.from(this.scope.undefinedExports)) {\n this.raise(Errors.ModuleExportUndefined, at, {\n localName\n });\n }\n }\n this.addExtra(program, \"topLevelAwait\", this.state.hasTopLevelAwait);\n }\n let finishedProgram;\n if (end === 140) {\n finishedProgram = this.finishNode(program, \"Program\");\n } else {\n finishedProgram = this.finishNodeAt(program, \"Program\", createPositionWithColumnOffset(this.state.startLoc, -1));\n }\n return finishedProgram;\n }\n stmtToDirective(stmt) {\n const directive = this.castNodeTo(stmt, \"Directive\");\n const directiveLiteral = this.castNodeTo(stmt.expression, \"DirectiveLiteral\");\n const expressionValue = directiveLiteral.value;\n const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end));\n const val = directiveLiteral.value = raw.slice(1, -1);\n this.addExtra(directiveLiteral, \"raw\", raw);\n this.addExtra(directiveLiteral, \"rawValue\", val);\n this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n directive.value = directiveLiteral;\n delete stmt.expression;\n return directive;\n }\n parseInterpreterDirective() {\n if (!this.match(28)) {\n return null;\n }\n const node = this.startNode();\n node.value = this.state.value;\n this.next();\n return this.finishNode(node, \"InterpreterDirective\");\n }\n isLet() {\n if (!this.isContextual(100)) {\n return false;\n }\n return this.hasFollowingBindingAtom();\n }\n isUsing() {\n if (!this.isContextual(107)) {\n return false;\n }\n return this.nextTokenIsIdentifierOnSameLine();\n }\n isForUsing() {\n if (!this.isContextual(107)) {\n return false;\n }\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n if (this.isUnparsedContextual(next, \"of\")) {\n const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2);\n if (nextCharAfterOf !== 61 && nextCharAfterOf !== 58 && nextCharAfterOf !== 59) {\n return false;\n }\n }\n if (this.chStartsBindingIdentifier(nextCh, next) || this.isUnparsedContextual(next, \"void\")) {\n return true;\n }\n return false;\n }\n nextTokenIsIdentifierOnSameLine() {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return this.chStartsBindingIdentifier(nextCh, next);\n }\n isAwaitUsing() {\n if (!this.isContextual(96)) {\n return false;\n }\n let next = this.nextTokenInLineStart();\n if (this.isUnparsedContextual(next, \"using\")) {\n next = this.nextTokenInLineStartSince(next + 5);\n const nextCh = this.codePointAtPos(next);\n if (this.chStartsBindingIdentifier(nextCh, next)) {\n return true;\n }\n }\n return false;\n }\n chStartsBindingIdentifier(ch, pos) {\n if (isIdentifierStart(ch)) {\n keywordRelationalOperator.lastIndex = pos;\n if (keywordRelationalOperator.test(this.input)) {\n const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n if (!isIdentifierChar(endCh) && endCh !== 92) {\n return false;\n }\n }\n return true;\n } else if (ch === 92) {\n return true;\n } else {\n return false;\n }\n }\n chStartsBindingPattern(ch) {\n return ch === 91 || ch === 123;\n }\n hasFollowingBindingAtom() {\n const next = this.nextTokenStart();\n const nextCh = this.codePointAtPos(next);\n return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next);\n }\n hasInLineFollowingBindingIdentifierOrBrace() {\n const next = this.nextTokenInLineStart();\n const nextCh = this.codePointAtPos(next);\n return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next);\n }\n allowsUsing() {\n return (this.scope.inModule || !this.scope.inTopLevel) && !this.scope.inBareCaseStatement;\n }\n parseModuleItem() {\n return this.parseStatementLike(1 | 2 | 4 | 8);\n }\n parseStatementListItem() {\n return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8));\n }\n parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) {\n let flags = 0;\n if (this.options.annexB && !this.state.strict) {\n flags |= 4;\n if (allowLabeledFunction) {\n flags |= 8;\n }\n }\n return this.parseStatementLike(flags);\n }\n parseStatement() {\n return this.parseStatementLike(0);\n }\n parseStatementLike(flags) {\n let decorators = null;\n if (this.match(26)) {\n decorators = this.parseDecorators(true);\n }\n return this.parseStatementContent(flags, decorators);\n }\n parseStatementContent(flags, decorators) {\n const startType = this.state.type;\n const node = this.startNode();\n const allowDeclaration = !!(flags & 2);\n const allowFunctionDeclaration = !!(flags & 4);\n const topLevel = flags & 1;\n switch (startType) {\n case 60:\n return this.parseBreakContinueStatement(node, true);\n case 63:\n return this.parseBreakContinueStatement(node, false);\n case 64:\n return this.parseDebuggerStatement(node);\n case 90:\n return this.parseDoWhileStatement(node);\n case 91:\n return this.parseForStatement(node);\n case 68:\n if (this.lookaheadCharCode() === 46) break;\n if (!allowFunctionDeclaration) {\n this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc);\n }\n return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration);\n case 80:\n if (!allowDeclaration) this.unexpected();\n return this.parseClass(this.maybeTakeDecorators(decorators, node), true);\n case 69:\n return this.parseIfStatement(node);\n case 70:\n return this.parseReturnStatement(node);\n case 71:\n return this.parseSwitchStatement(node);\n case 72:\n return this.parseThrowStatement(node);\n case 73:\n return this.parseTryStatement(node);\n case 96:\n if (this.isAwaitUsing()) {\n if (!this.allowsUsing()) {\n this.raise(Errors.UnexpectedUsingDeclaration, node);\n } else if (!allowDeclaration) {\n this.raise(Errors.UnexpectedLexicalDeclaration, node);\n } else if (!this.recordAwaitIfAllowed()) {\n this.raise(Errors.AwaitUsingNotInAsyncContext, node);\n }\n this.next();\n return this.parseVarStatement(node, \"await using\");\n }\n break;\n case 107:\n if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) {\n break;\n }\n if (!this.allowsUsing()) {\n this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);\n } else if (!allowDeclaration) {\n this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n }\n return this.parseVarStatement(node, \"using\");\n case 100:\n {\n if (this.state.containsEsc) {\n break;\n }\n const next = this.nextTokenStart();\n const nextCh = this.codePointAtPos(next);\n if (nextCh !== 91) {\n if (!allowDeclaration && this.hasFollowingLineBreak()) break;\n if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) {\n break;\n }\n }\n }\n case 75:\n {\n if (!allowDeclaration) {\n this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n }\n }\n case 74:\n {\n const kind = this.state.value;\n return this.parseVarStatement(node, kind);\n }\n case 92:\n return this.parseWhileStatement(node);\n case 76:\n return this.parseWithStatement(node);\n case 5:\n return this.parseBlock();\n case 13:\n return this.parseEmptyStatement(node);\n case 83:\n {\n const nextTokenCharCode = this.lookaheadCharCode();\n if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {\n break;\n }\n }\n case 82:\n {\n if (!(this.optionFlags & 8) && !topLevel) {\n this.raise(Errors.UnexpectedImportExport, this.state.startLoc);\n }\n this.next();\n let result;\n if (startType === 83) {\n result = this.parseImport(node);\n } else {\n result = this.parseExport(node, decorators);\n }\n this.assertModuleNodeAllowed(result);\n return result;\n }\n default:\n {\n if (this.isAsyncFunction()) {\n if (!allowDeclaration) {\n this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc);\n }\n this.next();\n return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration);\n }\n }\n }\n const maybeName = this.state.value;\n const expr = this.parseExpression();\n if (tokenIsIdentifier(startType) && expr.type === \"Identifier\" && this.eat(14)) {\n return this.parseLabeledStatement(node, maybeName, expr, flags);\n } else {\n return this.parseExpressionStatement(node, expr, decorators);\n }\n }\n assertModuleNodeAllowed(node) {\n if (!(this.optionFlags & 8) && !this.inModule) {\n this.raise(Errors.ImportOutsideModule, node);\n }\n }\n decoratorsEnabledBeforeExport() {\n if (this.hasPlugin(\"decorators-legacy\")) return true;\n return this.hasPlugin(\"decorators\") && this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") !== false;\n }\n maybeTakeDecorators(maybeDecorators, classNode, exportNode) {\n if (maybeDecorators) {\n var _classNode$decorators;\n if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) {\n if (typeof this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") !== \"boolean\") {\n this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]);\n }\n classNode.decorators.unshift(...maybeDecorators);\n } else {\n classNode.decorators = maybeDecorators;\n }\n this.resetStartLocationFromNode(classNode, maybeDecorators[0]);\n if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);\n }\n return classNode;\n }\n canHaveLeadingDecorator() {\n return this.match(80);\n }\n parseDecorators(allowExport) {\n const decorators = [];\n do {\n decorators.push(this.parseDecorator());\n } while (this.match(26));\n if (this.match(82)) {\n if (!allowExport) {\n this.unexpected();\n }\n if (!this.decoratorsEnabledBeforeExport()) {\n this.raise(Errors.DecoratorExportClass, this.state.startLoc);\n }\n } else if (!this.canHaveLeadingDecorator()) {\n throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);\n }\n return decorators;\n }\n parseDecorator() {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n const node = this.startNode();\n this.next();\n if (this.hasPlugin(\"decorators\")) {\n const startLoc = this.state.startLoc;\n let expr;\n if (this.match(10)) {\n const startLoc = this.state.startLoc;\n this.next();\n expr = this.parseExpression();\n this.expect(11);\n expr = this.wrapParenthesis(startLoc, expr);\n const paramsStartLoc = this.state.startLoc;\n node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n if (this.getPluginOption(\"decorators\", \"allowCallParenthesized\") === false && node.expression !== expr) {\n this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc);\n }\n } else {\n expr = this.parseIdentifier(false);\n while (this.eat(16)) {\n const node = this.startNodeAt(startLoc);\n node.object = expr;\n if (this.match(139)) {\n this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n node.property = this.parsePrivateName();\n } else {\n node.property = this.parseIdentifier(true);\n }\n node.computed = false;\n expr = this.finishNode(node, \"MemberExpression\");\n }\n node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n }\n } else {\n node.expression = this.parseExprSubscripts();\n }\n return this.finishNode(node, \"Decorator\");\n }\n parseMaybeDecoratorArguments(expr, startLoc) {\n if (this.eat(10)) {\n const node = this.startNodeAt(startLoc);\n node.callee = expr;\n node.arguments = this.parseCallExpressionArguments();\n this.toReferencedList(node.arguments);\n return this.finishNode(node, \"CallExpression\");\n }\n return expr;\n }\n parseBreakContinueStatement(node, isBreak) {\n this.next();\n if (this.isLineTerminator()) {\n node.label = null;\n } else {\n node.label = this.parseIdentifier();\n this.semicolon();\n }\n this.verifyBreakContinue(node, isBreak);\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\");\n }\n verifyBreakContinue(node, isBreak) {\n let i;\n for (i = 0; i < this.state.labels.length; ++i) {\n const lab = this.state.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === 1)) {\n break;\n }\n if (node.label && isBreak) break;\n }\n }\n if (i === this.state.labels.length) {\n const type = isBreak ? \"BreakStatement\" : \"ContinueStatement\";\n this.raise(Errors.IllegalBreakContinue, node, {\n type\n });\n }\n }\n parseDebuggerStatement(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n }\n parseHeaderExpression() {\n this.expect(10);\n const val = this.parseExpression();\n this.expect(11);\n return val;\n }\n parseDoWhileStatement(node) {\n this.next();\n this.state.labels.push(loopLabel);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());\n this.state.labels.pop();\n this.expect(92);\n node.test = this.parseHeaderExpression();\n this.eat(13);\n return this.finishNode(node, \"DoWhileStatement\");\n }\n parseForStatement(node) {\n this.next();\n this.state.labels.push(loopLabel);\n let awaitAt = null;\n if (this.isContextual(96) && this.recordAwaitIfAllowed()) {\n awaitAt = this.state.startLoc;\n this.next();\n }\n this.scope.enter(0);\n this.expect(10);\n if (this.match(13)) {\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, null);\n }\n const startsWithLet = this.isContextual(100);\n {\n const startsWithAwaitUsing = this.isAwaitUsing();\n const starsWithUsingDeclaration = startsWithAwaitUsing || this.isForUsing();\n const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration;\n if (this.match(74) || this.match(75) || isLetOrUsing) {\n const initNode = this.startNode();\n let kind;\n if (startsWithAwaitUsing) {\n kind = \"await using\";\n if (!this.recordAwaitIfAllowed()) {\n this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);\n }\n this.next();\n } else {\n kind = this.state.value;\n }\n this.next();\n this.parseVar(initNode, true, kind);\n const init = this.finishNode(initNode, \"VariableDeclaration\");\n const isForIn = this.match(58);\n if (isForIn && starsWithUsingDeclaration) {\n this.raise(Errors.ForInUsing, init);\n }\n if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) {\n return this.parseForIn(node, init, awaitAt);\n }\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init);\n }\n }\n const startsWithAsync = this.isContextual(95);\n const refExpressionErrors = new ExpressionErrors();\n const init = this.parseExpression(true, refExpressionErrors);\n const isForOf = this.isContextual(102);\n if (isForOf) {\n if (startsWithLet) {\n this.raise(Errors.ForOfLet, init);\n }\n if (awaitAt === null && startsWithAsync && init.type === \"Identifier\") {\n this.raise(Errors.ForOfAsync, init);\n }\n }\n if (isForOf || this.match(58)) {\n this.checkDestructuringPrivate(refExpressionErrors);\n this.toAssignable(init, true);\n const type = isForOf ? \"ForOfStatement\" : \"ForInStatement\";\n this.checkLVal(init, {\n type\n });\n return this.parseForIn(node, init, awaitAt);\n } else {\n this.checkExpressionErrors(refExpressionErrors, true);\n }\n if (awaitAt !== null) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init);\n }\n parseFunctionStatement(node, isAsync, isHangingDeclaration) {\n this.next();\n return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0));\n }\n parseIfStatement(node) {\n this.next();\n node.test = this.parseHeaderExpression();\n node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();\n node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null;\n return this.finishNode(node, \"IfStatement\");\n }\n parseReturnStatement(node) {\n if (!this.prodParam.hasReturn) {\n this.raise(Errors.IllegalReturn, this.state.startLoc);\n }\n this.next();\n if (this.isLineTerminator()) {\n node.argument = null;\n } else {\n node.argument = this.parseExpression();\n this.semicolon();\n }\n return this.finishNode(node, \"ReturnStatement\");\n }\n parseSwitchStatement(node) {\n this.next();\n node.discriminant = this.parseHeaderExpression();\n const cases = node.cases = [];\n this.expect(5);\n this.state.labels.push(switchLabel);\n this.scope.enter(256);\n let cur;\n for (let sawDefault; !this.match(8);) {\n if (this.match(61) || this.match(65)) {\n const isCase = this.match(61);\n if (cur) this.finishNode(cur, \"SwitchCase\");\n cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) {\n this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc);\n }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(14);\n } else {\n if (cur) {\n cur.consequent.push(this.parseStatementListItem());\n } else {\n this.unexpected();\n }\n }\n }\n this.scope.exit();\n if (cur) this.finishNode(cur, \"SwitchCase\");\n this.next();\n this.state.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n }\n parseThrowStatement(node) {\n this.next();\n if (this.hasPrecedingLineBreak()) {\n this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc);\n }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n }\n parseCatchClauseParam() {\n const param = this.parseBindingAtom();\n this.scope.enter(this.options.annexB && param.type === \"Identifier\" ? 8 : 0);\n this.checkLVal(param, {\n type: \"CatchClause\"\n }, 9);\n return param;\n }\n parseTryStatement(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.match(62)) {\n const clause = this.startNode();\n this.next();\n if (this.match(10)) {\n this.expect(10);\n clause.param = this.parseCatchClauseParam();\n this.expect(11);\n } else {\n clause.param = null;\n this.scope.enter(0);\n }\n clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false));\n this.scope.exit();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(67) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer) {\n this.raise(Errors.NoCatchOrFinally, node);\n }\n return this.finishNode(node, \"TryStatement\");\n }\n parseVarStatement(node, kind, allowMissingInitializer = false) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n }\n parseWhileStatement(node) {\n this.next();\n node.test = this.parseHeaderExpression();\n this.state.labels.push(loopLabel);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());\n this.state.labels.pop();\n return this.finishNode(node, \"WhileStatement\");\n }\n parseWithStatement(node) {\n if (this.state.strict) {\n this.raise(Errors.StrictWith, this.state.startLoc);\n }\n this.next();\n node.object = this.parseHeaderExpression();\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());\n return this.finishNode(node, \"WithStatement\");\n }\n parseEmptyStatement(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n }\n parseLabeledStatement(node, maybeName, expr, flags) {\n for (const label of this.state.labels) {\n if (label.name === maybeName) {\n this.raise(Errors.LabelRedeclaration, expr, {\n labelName: maybeName\n });\n }\n }\n const kind = tokenIsLoop(this.state.type) ? 1 : this.match(71) ? 2 : null;\n for (let i = this.state.labels.length - 1; i >= 0; i--) {\n const label = this.state.labels[i];\n if (label.statementStart === node.start) {\n label.statementStart = this.sourceToOffsetPos(this.state.start);\n label.kind = kind;\n } else {\n break;\n }\n }\n this.state.labels.push({\n name: maybeName,\n kind: kind,\n statementStart: this.sourceToOffsetPos(this.state.start)\n });\n node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement();\n this.state.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n }\n parseExpressionStatement(node, expr, decorators) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n }\n parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) {\n const node = this.startNode();\n if (allowDirectives) {\n this.state.strictErrors.clear();\n }\n this.expect(5);\n if (createNewLexicalScope) {\n this.scope.enter(0);\n }\n this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);\n if (createNewLexicalScope) {\n this.scope.exit();\n }\n return this.finishNode(node, \"BlockStatement\");\n }\n isValidDirective(stmt) {\n return stmt.type === \"ExpressionStatement\" && stmt.expression.type === \"StringLiteral\" && !stmt.expression.extra.parenthesized;\n }\n parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {\n const body = node.body = [];\n const directives = node.directives = [];\n this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);\n }\n parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {\n const oldStrict = this.state.strict;\n let hasStrictModeDirective = false;\n let parsedNonDirective = false;\n while (!this.match(end)) {\n const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem();\n if (directives && !parsedNonDirective) {\n if (this.isValidDirective(stmt)) {\n const directive = this.stmtToDirective(stmt);\n directives.push(directive);\n if (!hasStrictModeDirective && directive.value.value === \"use strict\") {\n hasStrictModeDirective = true;\n this.setStrict(true);\n }\n continue;\n }\n parsedNonDirective = true;\n this.state.strictErrors.clear();\n }\n body.push(stmt);\n }\n afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective);\n if (!oldStrict) {\n this.setStrict(false);\n }\n this.next();\n }\n parseFor(node, init) {\n node.init = init;\n this.semicolon(false);\n node.test = this.match(13) ? null : this.parseExpression();\n this.semicolon(false);\n node.update = this.match(11) ? null : this.parseExpression();\n this.expect(11);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());\n this.scope.exit();\n this.state.labels.pop();\n return this.finishNode(node, \"ForStatement\");\n }\n parseForIn(node, init, awaitAt) {\n const isForIn = this.match(58);\n this.next();\n if (isForIn) {\n if (awaitAt !== null) this.unexpected(awaitAt);\n } else {\n node.await = awaitAt !== null;\n }\n if (init.type === \"VariableDeclaration\" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== \"var\" || init.declarations[0].id.type !== \"Identifier\")) {\n this.raise(Errors.ForInOfLoopInitializer, init, {\n type: isForIn ? \"ForInStatement\" : \"ForOfStatement\"\n });\n }\n if (init.type === \"AssignmentPattern\") {\n this.raise(Errors.InvalidLhs, init, {\n ancestor: {\n type: \"ForStatement\"\n }\n });\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();\n this.expect(11);\n node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement());\n this.scope.exit();\n this.state.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n }\n parseVar(node, isFor, kind, allowMissingInitializer = false) {\n const declarations = node.declarations = [];\n node.kind = kind;\n for (;;) {\n const decl = this.startNode();\n this.parseVarId(decl, kind);\n decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();\n if (decl.init === null && !allowMissingInitializer) {\n if (decl.id.type !== \"Identifier\" && !(isFor && (this.match(58) || this.isContextual(102)))) {\n this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {\n kind: \"destructuring\"\n });\n } else if ((kind === \"const\" || kind === \"using\" || kind === \"await using\") && !(this.match(58) || this.isContextual(102))) {\n this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {\n kind\n });\n }\n }\n declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(12)) break;\n }\n return node;\n }\n parseVarId(decl, kind) {\n const id = this.parseBindingAtom();\n if (kind === \"using\" || kind === \"await using\") {\n if (id.type === \"ArrayPattern\" || id.type === \"ObjectPattern\") {\n this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start);\n }\n } else {\n if (id.type === \"VoidPattern\") {\n this.raise(Errors.UnexpectedVoidPattern, id.loc.start);\n }\n }\n this.checkLVal(id, {\n type: \"VariableDeclarator\"\n }, kind === \"var\" ? 5 : 8201);\n decl.id = id;\n }\n parseAsyncFunctionExpression(node) {\n return this.parseFunction(node, 8);\n }\n parseFunction(node, flags = 0) {\n const hangingDeclaration = flags & 2;\n const isDeclaration = !!(flags & 1);\n const requireId = isDeclaration && !(flags & 4);\n const isAsync = !!(flags & 8);\n this.initFunction(node, isAsync);\n if (this.match(55)) {\n if (hangingDeclaration) {\n this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc);\n }\n this.next();\n node.generator = true;\n }\n if (isDeclaration) {\n node.id = this.parseFunctionId(requireId);\n }\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n this.state.maybeInArrowParameters = false;\n this.scope.enter(514);\n this.prodParam.enter(functionFlags(isAsync, node.generator));\n if (!isDeclaration) {\n node.id = this.parseFunctionId();\n }\n this.parseFunctionParams(node, false);\n this.withSmartMixTopicForbiddingContext(() => {\n this.parseFunctionBodyAndFinish(node, isDeclaration ? \"FunctionDeclaration\" : \"FunctionExpression\");\n });\n this.prodParam.exit();\n this.scope.exit();\n if (isDeclaration && !hangingDeclaration) {\n this.registerFunctionStatementId(node);\n }\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n return node;\n }\n parseFunctionId(requireId) {\n return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;\n }\n parseFunctionParams(node, isConstructor) {\n this.expect(10);\n this.expressionScope.enter(newParameterDeclarationScope());\n node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0));\n this.expressionScope.exit();\n }\n registerFunctionStatementId(node) {\n if (!node.id) return;\n this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start);\n }\n parseClass(node, isStatement, optionalId) {\n this.next();\n const oldStrict = this.state.strict;\n this.state.strict = true;\n this.parseClassId(node, isStatement, optionalId);\n this.parseClassSuper(node);\n node.body = this.parseClassBody(!!node.superClass, oldStrict);\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\");\n }\n isClassProperty() {\n return this.match(29) || this.match(13) || this.match(8);\n }\n isClassMethod() {\n return this.match(10);\n }\n nameIsConstructor(key) {\n return key.type === \"Identifier\" && key.name === \"constructor\" || key.type === \"StringLiteral\" && key.value === \"constructor\";\n }\n isNonstaticConstructor(method) {\n return !method.computed && !method.static && this.nameIsConstructor(method.key);\n }\n parseClassBody(hadSuperClass, oldStrict) {\n this.classScope.enter();\n const state = {\n hadConstructor: false,\n hadSuperClass\n };\n let decorators = [];\n const classBody = this.startNode();\n classBody.body = [];\n this.expect(5);\n this.withSmartMixTopicForbiddingContext(() => {\n while (!this.match(8)) {\n if (this.eat(13)) {\n if (decorators.length > 0) {\n throw this.raise(Errors.DecoratorSemicolon, this.state.lastTokEndLoc);\n }\n continue;\n }\n if (this.match(26)) {\n decorators.push(this.parseDecorator());\n continue;\n }\n const member = this.startNode();\n if (decorators.length) {\n member.decorators = decorators;\n this.resetStartLocationFromNode(member, decorators[0]);\n decorators = [];\n }\n this.parseClassMember(classBody, member, state);\n if (member.kind === \"constructor\" && member.decorators && member.decorators.length > 0) {\n this.raise(Errors.DecoratorConstructor, member);\n }\n }\n });\n this.state.strict = oldStrict;\n this.next();\n if (decorators.length) {\n throw this.raise(Errors.TrailingDecorator, this.state.startLoc);\n }\n this.classScope.exit();\n return this.finishNode(classBody, \"ClassBody\");\n }\n parseClassMemberFromModifier(classBody, member) {\n const key = this.parseIdentifier(true);\n if (this.isClassMethod()) {\n const method = member;\n method.kind = \"method\";\n method.computed = false;\n method.key = key;\n method.static = false;\n this.pushClassMethod(classBody, method, false, false, false, false);\n return true;\n } else if (this.isClassProperty()) {\n const prop = member;\n prop.computed = false;\n prop.key = key;\n prop.static = false;\n classBody.body.push(this.parseClassProperty(prop));\n return true;\n }\n this.resetPreviousNodeTrailingComments(key);\n return false;\n }\n parseClassMember(classBody, member, state) {\n const isStatic = this.isContextual(106);\n if (isStatic) {\n if (this.parseClassMemberFromModifier(classBody, member)) {\n return;\n }\n if (this.eat(5)) {\n this.parseClassStaticBlock(classBody, member);\n return;\n }\n }\n this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n }\n parseClassMemberWithIsStatic(classBody, member, state, isStatic) {\n const publicMethod = member;\n const privateMethod = member;\n const publicProp = member;\n const privateProp = member;\n const accessorProp = member;\n const method = publicMethod;\n const publicMember = publicMethod;\n member.static = isStatic;\n this.parsePropertyNamePrefixOperator(member);\n if (this.eat(55)) {\n method.kind = \"method\";\n const isPrivateName = this.match(139);\n this.parseClassElementName(method);\n this.parsePostMemberNameModifiers(method);\n if (isPrivateName) {\n this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n return;\n }\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsGenerator, publicMethod.key);\n }\n this.pushClassMethod(classBody, publicMethod, true, false, false, false);\n return;\n }\n const isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type);\n const key = this.parseClassElementName(member);\n const maybeContextualKw = isContextual ? key.name : null;\n const isPrivate = this.isPrivateName(key);\n const maybeQuestionTokenStartLoc = this.state.startLoc;\n this.parsePostMemberNameModifiers(publicMember);\n if (this.isClassMethod()) {\n method.kind = \"method\";\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n return;\n }\n const isConstructor = this.isNonstaticConstructor(publicMethod);\n let allowsDirectSuper = false;\n if (isConstructor) {\n publicMethod.kind = \"constructor\";\n if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n this.raise(Errors.DuplicateConstructor, key);\n }\n if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n this.raise(Errors.OverrideOnConstructor, key);\n }\n state.hadConstructor = true;\n allowsDirectSuper = state.hadSuperClass;\n }\n this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);\n } else if (this.isClassProperty()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else if (maybeContextualKw === \"async\" && !this.isLineTerminator()) {\n this.resetPreviousNodeTrailingComments(key);\n const isGenerator = this.eat(55);\n if (publicMember.optional) {\n this.unexpected(maybeQuestionTokenStartLoc);\n }\n method.kind = \"method\";\n const isPrivate = this.match(139);\n this.parseClassElementName(method);\n this.parsePostMemberNameModifiers(publicMember);\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsAsync, publicMethod.key);\n }\n this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);\n }\n } else if ((maybeContextualKw === \"get\" || maybeContextualKw === \"set\") && !(this.match(55) && this.isLineTerminator())) {\n this.resetPreviousNodeTrailingComments(key);\n method.kind = maybeContextualKw;\n const isPrivate = this.match(139);\n this.parseClassElementName(publicMethod);\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(Errors.ConstructorIsAccessor, publicMethod.key);\n }\n this.pushClassMethod(classBody, publicMethod, false, false, false, false);\n }\n this.checkGetterSetterParams(publicMethod);\n } else if (maybeContextualKw === \"accessor\" && !this.isLineTerminator()) {\n this.expectPlugin(\"decoratorAutoAccessors\");\n this.resetPreviousNodeTrailingComments(key);\n const isPrivate = this.match(139);\n this.parseClassElementName(publicProp);\n this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n } else if (this.isLineTerminator()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else {\n this.unexpected();\n }\n }\n parseClassElementName(member) {\n const {\n type,\n value\n } = this.state;\n if ((type === 132 || type === 134) && member.static && value === \"prototype\") {\n this.raise(Errors.StaticPrototype, this.state.startLoc);\n }\n if (type === 139) {\n if (value === \"constructor\") {\n this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);\n }\n const key = this.parsePrivateName();\n member.key = key;\n return key;\n }\n this.parsePropertyName(member);\n return member.key;\n }\n parseClassStaticBlock(classBody, member) {\n var _member$decorators;\n this.scope.enter(576 | 128 | 16);\n const oldLabels = this.state.labels;\n this.state.labels = [];\n this.prodParam.enter(0);\n const body = member.body = [];\n this.parseBlockOrModuleBlockBody(body, undefined, false, 8);\n this.prodParam.exit();\n this.scope.exit();\n this.state.labels = oldLabels;\n classBody.body.push(this.finishNode(member, \"StaticBlock\"));\n if ((_member$decorators = member.decorators) != null && _member$decorators.length) {\n this.raise(Errors.DecoratorStaticBlock, member);\n }\n }\n pushClassProperty(classBody, prop) {\n if (!prop.computed && this.nameIsConstructor(prop.key)) {\n this.raise(Errors.ConstructorClassField, prop.key);\n }\n classBody.body.push(this.parseClassProperty(prop));\n }\n pushClassPrivateProperty(classBody, prop) {\n const node = this.parseClassPrivateProperty(prop);\n classBody.body.push(node);\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start);\n }\n pushClassAccessorProperty(classBody, prop, isPrivate) {\n if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {\n this.raise(Errors.ConstructorClassField, prop.key);\n }\n const node = this.parseClassAccessorProperty(prop);\n classBody.body.push(node);\n if (isPrivate) {\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start);\n }\n }\n pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, \"ClassMethod\", true));\n }\n pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {\n const node = this.parseMethod(method, isGenerator, isAsync, false, false, \"ClassPrivateMethod\", true);\n classBody.body.push(node);\n const kind = node.kind === \"get\" ? node.static ? 6 : 2 : node.kind === \"set\" ? node.static ? 5 : 1 : 0;\n this.declareClassPrivateMethodInScope(node, kind);\n }\n declareClassPrivateMethodInScope(node, kind) {\n this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start);\n }\n parsePostMemberNameModifiers(methodOrProp) {}\n parseClassPrivateProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassPrivateProperty\");\n }\n parseClassProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassProperty\");\n }\n parseClassAccessorProperty(node) {\n this.parseInitializer(node);\n this.semicolon();\n return this.finishNode(node, \"ClassAccessorProperty\");\n }\n parseInitializer(node) {\n this.scope.enter(576 | 16);\n this.expressionScope.enter(newExpressionScope());\n this.prodParam.enter(0);\n node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null;\n this.expressionScope.exit();\n this.prodParam.exit();\n this.scope.exit();\n }\n parseClassId(node, isStatement, optionalId, bindingType = 8331) {\n if (tokenIsIdentifier(this.state.type)) {\n node.id = this.parseIdentifier();\n if (isStatement) {\n this.declareNameFromIdentifier(node.id, bindingType);\n }\n } else {\n if (optionalId || !isStatement) {\n node.id = null;\n } else {\n throw this.raise(Errors.MissingClassName, this.state.startLoc);\n }\n }\n }\n parseClassSuper(node) {\n node.superClass = this.eat(81) ? this.parseExprSubscripts() : null;\n }\n parseExport(node, decorators) {\n const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true);\n const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier);\n const parseAfterDefault = !hasDefault || this.eat(12);\n const hasStar = parseAfterDefault && this.eatExportStar(node);\n const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);\n const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));\n const isFromRequired = hasDefault || hasStar;\n if (hasStar && !hasNamespace) {\n if (hasDefault) this.unexpected();\n if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.parseExportFrom(node, true);\n this.sawUnambiguousESM = true;\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {\n this.unexpected(null, 5);\n }\n if (hasNamespace && parseAfterNamespace) {\n this.unexpected(null, 98);\n }\n let hasDeclaration;\n if (isFromRequired || hasSpecifiers) {\n hasDeclaration = false;\n if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.parseExportFrom(node, isFromRequired);\n } else {\n hasDeclaration = this.maybeParseExportDeclaration(node);\n }\n if (isFromRequired || hasSpecifiers || hasDeclaration) {\n var _node2$declaration;\n const node2 = node;\n this.checkExport(node2, true, false, !!node2.source);\n if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === \"ClassDeclaration\") {\n this.maybeTakeDecorators(decorators, node2.declaration, node2);\n } else if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.sawUnambiguousESM = true;\n return this.finishNode(node2, \"ExportNamedDeclaration\");\n }\n if (this.eat(65)) {\n const node2 = node;\n const decl = this.parseExportDefaultExpression();\n node2.declaration = decl;\n if (decl.type === \"ClassDeclaration\") {\n this.maybeTakeDecorators(decorators, decl, node2);\n } else if (decorators) {\n throw this.raise(Errors.UnsupportedDecoratorExport, node);\n }\n this.checkExport(node2, true, true);\n this.sawUnambiguousESM = true;\n return this.finishNode(node2, \"ExportDefaultDeclaration\");\n }\n throw this.unexpected(null, 5);\n }\n eatExportStar(node) {\n return this.eat(55);\n }\n maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {\n if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {\n this.expectPlugin(\"exportDefaultFrom\", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start);\n const id = maybeDefaultIdentifier || this.parseIdentifier(true);\n const specifier = this.startNodeAtNode(id);\n specifier.exported = id;\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return true;\n }\n return false;\n }\n maybeParseExportNamespaceSpecifier(node) {\n if (this.isContextual(93)) {\n var _ref, _ref$specifiers;\n (_ref$specifiers = (_ref = node).specifiers) != null ? _ref$specifiers : _ref.specifiers = [];\n const specifier = this.startNodeAt(this.state.lastTokStartLoc);\n this.next();\n specifier.exported = this.parseModuleExportName();\n node.specifiers.push(this.finishNode(specifier, \"ExportNamespaceSpecifier\"));\n return true;\n }\n return false;\n }\n maybeParseExportNamedSpecifiers(node) {\n if (this.match(5)) {\n const node2 = node;\n if (!node2.specifiers) node2.specifiers = [];\n const isTypeExport = node2.exportKind === \"type\";\n node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n node2.source = null;\n if (this.hasPlugin(\"importAssertions\")) {\n node2.assertions = [];\n } else {\n node2.attributes = [];\n }\n node2.declaration = null;\n return true;\n }\n return false;\n }\n maybeParseExportDeclaration(node) {\n if (this.shouldParseExportDeclaration()) {\n node.specifiers = [];\n node.source = null;\n if (this.hasPlugin(\"importAssertions\")) {\n node.assertions = [];\n } else {\n node.attributes = [];\n }\n node.declaration = this.parseExportDeclaration(node);\n return true;\n }\n return false;\n }\n isAsyncFunction() {\n if (!this.isContextual(95)) return false;\n const next = this.nextTokenInLineStart();\n return this.isUnparsedContextual(next, \"function\");\n }\n parseExportDefaultExpression() {\n const expr = this.startNode();\n if (this.match(68)) {\n this.next();\n return this.parseFunction(expr, 1 | 4);\n } else if (this.isAsyncFunction()) {\n this.next();\n this.next();\n return this.parseFunction(expr, 1 | 4 | 8);\n }\n if (this.match(80)) {\n return this.parseClass(expr, true, true);\n }\n if (this.match(26)) {\n if (this.hasPlugin(\"decorators\") && this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true) {\n this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n }\n return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true);\n }\n if (this.match(75) || this.match(74) || this.isLet() || this.isUsing() || this.isAwaitUsing()) {\n throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);\n }\n const res = this.parseMaybeAssignAllowIn();\n this.semicolon();\n return res;\n }\n parseExportDeclaration(node) {\n if (this.match(80)) {\n const node = this.parseClass(this.startNode(), true, false);\n return node;\n }\n return this.parseStatementListItem();\n }\n isExportDefaultSpecifier() {\n const {\n type\n } = this.state;\n if (tokenIsIdentifier(type)) {\n if (type === 95 && !this.state.containsEsc || type === 100) {\n return false;\n }\n if ((type === 130 || type === 129) && !this.state.containsEsc) {\n const next = this.nextTokenStart();\n const nextChar = this.input.charCodeAt(next);\n if (nextChar === 123 || this.chStartsBindingIdentifier(nextChar, next) && !this.input.startsWith(\"from\", next)) {\n this.expectOnePlugin([\"flow\", \"typescript\"]);\n return false;\n }\n }\n } else if (!this.match(65)) {\n return false;\n }\n const next = this.nextTokenStart();\n const hasFrom = this.isUnparsedContextual(next, \"from\");\n if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {\n return true;\n }\n if (this.match(65) && hasFrom) {\n const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));\n return nextAfterFrom === 34 || nextAfterFrom === 39;\n }\n return false;\n }\n parseExportFrom(node, expect) {\n if (this.eatContextual(98)) {\n node.source = this.parseImportSource();\n this.checkExport(node);\n this.maybeParseImportAttributes(node);\n this.checkJSONModuleImport(node);\n } else if (expect) {\n this.unexpected();\n }\n this.semicolon();\n }\n shouldParseExportDeclaration() {\n const {\n type\n } = this.state;\n if (type === 26) {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n if (this.hasPlugin(\"decorators\")) {\n if (this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true) {\n this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n }\n return true;\n }\n }\n if (this.isUsing()) {\n this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n return true;\n }\n if (this.isAwaitUsing()) {\n this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n return true;\n }\n return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction();\n }\n checkExport(node, checkNames, isDefault, isFrom) {\n if (checkNames) {\n var _node$specifiers;\n if (isDefault) {\n this.checkDuplicateExports(node, \"default\");\n if (this.hasPlugin(\"exportDefaultFrom\")) {\n var _declaration$extra;\n const declaration = node.declaration;\n if (declaration.type === \"Identifier\" && declaration.name === \"from\" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {\n this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);\n }\n }\n } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) {\n for (const specifier of node.specifiers) {\n const {\n exported\n } = specifier;\n const exportName = exported.type === \"Identifier\" ? exported.name : exported.value;\n this.checkDuplicateExports(specifier, exportName);\n if (!isFrom && specifier.local) {\n const {\n local\n } = specifier;\n if (local.type !== \"Identifier\") {\n this.raise(Errors.ExportBindingIsString, specifier, {\n localName: local.value,\n exportName\n });\n } else {\n this.checkReservedWord(local.name, local.loc.start, true, false);\n this.scope.checkLocalExport(local);\n }\n }\n }\n } else if (node.declaration) {\n const decl = node.declaration;\n if (decl.type === \"FunctionDeclaration\" || decl.type === \"ClassDeclaration\") {\n const {\n id\n } = decl;\n if (!id) throw new Error(\"Assertion failure\");\n this.checkDuplicateExports(node, id.name);\n } else if (decl.type === \"VariableDeclaration\") {\n for (const declaration of decl.declarations) {\n this.checkDeclaration(declaration.id);\n }\n }\n }\n }\n }\n checkDeclaration(node) {\n if (node.type === \"Identifier\") {\n this.checkDuplicateExports(node, node.name);\n } else if (node.type === \"ObjectPattern\") {\n for (const prop of node.properties) {\n this.checkDeclaration(prop);\n }\n } else if (node.type === \"ArrayPattern\") {\n for (const elem of node.elements) {\n if (elem) {\n this.checkDeclaration(elem);\n }\n }\n } else if (node.type === \"ObjectProperty\") {\n this.checkDeclaration(node.value);\n } else if (node.type === \"RestElement\") {\n this.checkDeclaration(node.argument);\n } else if (node.type === \"AssignmentPattern\") {\n this.checkDeclaration(node.left);\n }\n }\n checkDuplicateExports(node, exportName) {\n if (this.exportedIdentifiers.has(exportName)) {\n if (exportName === \"default\") {\n this.raise(Errors.DuplicateDefaultExport, node);\n } else {\n this.raise(Errors.DuplicateExport, node, {\n exportName\n });\n }\n }\n this.exportedIdentifiers.add(exportName);\n }\n parseExportSpecifiers(isInTypeExport) {\n const nodes = [];\n let first = true;\n this.expect(5);\n while (!this.eat(8)) {\n if (first) {\n first = false;\n } else {\n this.expect(12);\n if (this.eat(8)) break;\n }\n const isMaybeTypeOnly = this.isContextual(130);\n const isString = this.match(134);\n const node = this.startNode();\n node.local = this.parseModuleExportName();\n nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly));\n }\n return nodes;\n }\n parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {\n if (this.eatContextual(93)) {\n node.exported = this.parseModuleExportName();\n } else if (isString) {\n node.exported = this.cloneStringLiteral(node.local);\n } else if (!node.exported) {\n node.exported = this.cloneIdentifier(node.local);\n }\n return this.finishNode(node, \"ExportSpecifier\");\n }\n parseModuleExportName() {\n if (this.match(134)) {\n const result = this.parseStringLiteral(this.state.value);\n const surrogate = loneSurrogate.exec(result.value);\n if (surrogate) {\n this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {\n surrogateCharCode: surrogate[0].charCodeAt(0)\n });\n }\n return result;\n }\n return this.parseIdentifier(true);\n }\n isJSONModuleImport(node) {\n if (node.assertions != null) {\n return node.assertions.some(({\n key,\n value\n }) => {\n return value.value === \"json\" && (key.type === \"Identifier\" ? key.name === \"type\" : key.value === \"type\");\n });\n }\n return false;\n }\n checkImportReflection(node) {\n const {\n specifiers\n } = node;\n const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null;\n if (node.phase === \"source\") {\n if (singleBindingType !== \"ImportDefaultSpecifier\") {\n this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0].loc.start);\n }\n } else if (node.phase === \"defer\") {\n if (singleBindingType !== \"ImportNamespaceSpecifier\") {\n this.raise(Errors.DeferImportRequiresNamespace, specifiers[0].loc.start);\n }\n } else if (node.module) {\n var _node$assertions;\n if (singleBindingType !== \"ImportDefaultSpecifier\") {\n this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start);\n }\n if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) {\n this.raise(Errors.ImportReflectionHasAssertion, specifiers[0].loc.start);\n }\n }\n }\n checkJSONModuleImport(node) {\n if (this.isJSONModuleImport(node) && node.type !== \"ExportAllDeclaration\") {\n const {\n specifiers\n } = node;\n if (specifiers != null) {\n const nonDefaultNamedSpecifier = specifiers.find(specifier => {\n let imported;\n if (specifier.type === \"ExportSpecifier\") {\n imported = specifier.local;\n } else if (specifier.type === \"ImportSpecifier\") {\n imported = specifier.imported;\n }\n if (imported !== undefined) {\n return imported.type === \"Identifier\" ? imported.name !== \"default\" : imported.value !== \"default\";\n }\n });\n if (nonDefaultNamedSpecifier !== undefined) {\n this.raise(Errors.ImportJSONBindingNotDefault, nonDefaultNamedSpecifier.loc.start);\n }\n }\n }\n }\n isPotentialImportPhase(isExport) {\n if (isExport) return false;\n return this.isContextual(105) || this.isContextual(97) || this.isContextual(127);\n }\n applyImportPhase(node, isExport, phase, loc) {\n if (isExport) {\n return;\n }\n if (phase === \"module\") {\n this.expectPlugin(\"importReflection\", loc);\n node.module = true;\n } else if (this.hasPlugin(\"importReflection\")) {\n node.module = false;\n }\n if (phase === \"source\") {\n this.expectPlugin(\"sourcePhaseImports\", loc);\n node.phase = \"source\";\n } else if (phase === \"defer\") {\n this.expectPlugin(\"deferredImportEvaluation\", loc);\n node.phase = \"defer\";\n } else if (this.hasPlugin(\"sourcePhaseImports\")) {\n node.phase = null;\n }\n }\n parseMaybeImportPhase(node, isExport) {\n if (!this.isPotentialImportPhase(isExport)) {\n this.applyImportPhase(node, isExport, null);\n return null;\n }\n const phaseIdentifier = this.startNode();\n const phaseIdentifierName = this.parseIdentifierName(true);\n const {\n type\n } = this.state;\n const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12;\n if (isImportPhase) {\n this.applyImportPhase(node, isExport, phaseIdentifierName, phaseIdentifier.loc.start);\n return null;\n } else {\n this.applyImportPhase(node, isExport, null);\n return this.createIdentifier(phaseIdentifier, phaseIdentifierName);\n }\n }\n isPrecedingIdImportPhase(phase) {\n const {\n type\n } = this.state;\n return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12;\n }\n parseImport(node) {\n if (this.match(134)) {\n return this.parseImportSourceAndAttributes(node);\n }\n return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false));\n }\n parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) {\n node.specifiers = [];\n const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier);\n const parseNext = !hasDefault || this.eat(12);\n const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n this.expectContextual(98);\n return this.parseImportSourceAndAttributes(node);\n }\n parseImportSourceAndAttributes(node) {\n var _node$specifiers2;\n (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = [];\n node.source = this.parseImportSource();\n this.maybeParseImportAttributes(node);\n this.checkImportReflection(node);\n this.checkJSONModuleImport(node);\n this.semicolon();\n this.sawUnambiguousESM = true;\n return this.finishNode(node, \"ImportDeclaration\");\n }\n parseImportSource() {\n if (!this.match(134)) this.unexpected();\n return this.parseExprAtom();\n }\n parseImportSpecifierLocal(node, specifier, type) {\n specifier.local = this.parseIdentifier();\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n finishImportSpecifier(specifier, type, bindingType = 8201) {\n this.checkLVal(specifier.local, {\n type\n }, bindingType);\n return this.finishNode(specifier, type);\n }\n parseImportAttributes() {\n this.expect(5);\n const attrs = [];\n const attrNames = new Set();\n do {\n if (this.match(8)) {\n break;\n }\n const node = this.startNode();\n const keyName = this.state.value;\n if (attrNames.has(keyName)) {\n this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, {\n key: keyName\n });\n }\n attrNames.add(keyName);\n if (this.match(134)) {\n node.key = this.parseStringLiteral(keyName);\n } else {\n node.key = this.parseIdentifier(true);\n }\n this.expect(14);\n if (!this.match(134)) {\n throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc);\n }\n node.value = this.parseStringLiteral(this.state.value);\n attrs.push(this.finishNode(node, \"ImportAttribute\"));\n } while (this.eat(12));\n this.expect(8);\n return attrs;\n }\n parseModuleAttributes() {\n const attrs = [];\n const attributes = new Set();\n do {\n const node = this.startNode();\n node.key = this.parseIdentifier(true);\n if (node.key.name !== \"type\") {\n this.raise(Errors.ModuleAttributeDifferentFromType, node.key);\n }\n if (attributes.has(node.key.name)) {\n this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, {\n key: node.key.name\n });\n }\n attributes.add(node.key.name);\n this.expect(14);\n if (!this.match(134)) {\n throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc);\n }\n node.value = this.parseStringLiteral(this.state.value);\n attrs.push(this.finishNode(node, \"ImportAttribute\"));\n } while (this.eat(12));\n return attrs;\n }\n maybeParseImportAttributes(node) {\n let attributes;\n var useWith = false;\n if (this.match(76)) {\n if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) {\n return;\n }\n this.next();\n if (this.hasPlugin(\"moduleAttributes\")) {\n attributes = this.parseModuleAttributes();\n this.addExtra(node, \"deprecatedWithLegacySyntax\", true);\n } else {\n attributes = this.parseImportAttributes();\n }\n useWith = true;\n } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) {\n if (!this.hasPlugin(\"deprecatedImportAssert\") && !this.hasPlugin(\"importAssertions\")) {\n this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc);\n }\n if (!this.hasPlugin(\"importAssertions\")) {\n this.addExtra(node, \"deprecatedAssertSyntax\", true);\n }\n this.next();\n attributes = this.parseImportAttributes();\n } else {\n attributes = [];\n }\n if (!useWith && this.hasPlugin(\"importAssertions\")) {\n node.assertions = attributes;\n } else {\n node.attributes = attributes;\n }\n }\n maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) {\n if (maybeDefaultIdentifier) {\n const specifier = this.startNodeAtNode(maybeDefaultIdentifier);\n specifier.local = maybeDefaultIdentifier;\n node.specifiers.push(this.finishImportSpecifier(specifier, \"ImportDefaultSpecifier\"));\n return true;\n } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n this.parseImportSpecifierLocal(node, this.startNode(), \"ImportDefaultSpecifier\");\n return true;\n }\n return false;\n }\n maybeParseStarImportSpecifier(node) {\n if (this.match(55)) {\n const specifier = this.startNode();\n this.next();\n this.expectContextual(93);\n this.parseImportSpecifierLocal(node, specifier, \"ImportNamespaceSpecifier\");\n return true;\n }\n return false;\n }\n parseNamedImportSpecifiers(node) {\n let first = true;\n this.expect(5);\n while (!this.eat(8)) {\n if (first) {\n first = false;\n } else {\n if (this.eat(14)) {\n throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);\n }\n this.expect(12);\n if (this.eat(8)) break;\n }\n const specifier = this.startNode();\n const importedIsString = this.match(134);\n const isMaybeTypeOnly = this.isContextual(130);\n specifier.imported = this.parseModuleExportName();\n const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === \"type\" || node.importKind === \"typeof\", isMaybeTypeOnly, undefined);\n node.specifiers.push(importSpecifier);\n }\n }\n parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {\n if (this.eatContextual(93)) {\n specifier.local = this.parseIdentifier();\n } else {\n const {\n imported\n } = specifier;\n if (importedIsString) {\n throw this.raise(Errors.ImportBindingIsString, specifier, {\n importName: imported.value\n });\n }\n this.checkReservedWord(imported.name, specifier.loc.start, true, true);\n if (!specifier.local) {\n specifier.local = this.cloneIdentifier(imported);\n }\n }\n return this.finishImportSpecifier(specifier, \"ImportSpecifier\", bindingType);\n }\n isThisParam(param) {\n return param.type === \"Identifier\" && param.name === \"this\";\n }\n}\nclass Parser extends StatementParser {\n constructor(options, input, pluginsMap) {\n const normalizedOptions = getOptions(options);\n super(normalizedOptions, input);\n this.options = normalizedOptions;\n this.initializeScopes();\n this.plugins = pluginsMap;\n this.filename = normalizedOptions.sourceFilename;\n this.startIndex = normalizedOptions.startIndex;\n let optionFlags = 0;\n if (normalizedOptions.allowAwaitOutsideFunction) {\n optionFlags |= 1;\n }\n if (normalizedOptions.allowReturnOutsideFunction) {\n optionFlags |= 2;\n }\n if (normalizedOptions.allowImportExportEverywhere) {\n optionFlags |= 8;\n }\n if (normalizedOptions.allowSuperOutsideMethod) {\n optionFlags |= 16;\n }\n if (normalizedOptions.allowUndeclaredExports) {\n optionFlags |= 64;\n }\n if (normalizedOptions.allowNewTargetOutsideFunction) {\n optionFlags |= 4;\n }\n if (normalizedOptions.allowYieldOutsideFunction) {\n optionFlags |= 32;\n }\n if (normalizedOptions.ranges) {\n optionFlags |= 128;\n }\n if (normalizedOptions.tokens) {\n optionFlags |= 256;\n }\n if (normalizedOptions.createImportExpressions) {\n optionFlags |= 512;\n }\n if (normalizedOptions.createParenthesizedExpressions) {\n optionFlags |= 1024;\n }\n if (normalizedOptions.errorRecovery) {\n optionFlags |= 2048;\n }\n if (normalizedOptions.attachComment) {\n optionFlags |= 4096;\n }\n if (normalizedOptions.annexB) {\n optionFlags |= 8192;\n }\n this.optionFlags = optionFlags;\n }\n getScopeHandler() {\n return ScopeHandler;\n }\n parse() {\n this.enterInitialScopes();\n const file = this.startNode();\n const program = this.startNode();\n this.nextToken();\n file.errors = null;\n const result = this.parseTopLevel(file, program);\n result.errors = this.state.errors;\n result.comments.length = this.state.commentsLen;\n return result;\n }\n}\nfunction parse(input, options) {\n var _options;\n if (((_options = options) == null ? void 0 : _options.sourceType) === \"unambiguous\") {\n options = Object.assign({}, options);\n try {\n options.sourceType = \"module\";\n const parser = getParser(options, input);\n const ast = parser.parse();\n if (parser.sawUnambiguousESM) {\n return ast;\n }\n if (parser.ambiguousScriptDifferentAst) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch (_unused) {}\n } else {\n ast.program.sourceType = \"script\";\n }\n return ast;\n } catch (moduleError) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch (_unused2) {}\n throw moduleError;\n }\n } else {\n return getParser(options, input).parse();\n }\n}\nfunction parseExpression(input, options) {\n const parser = getParser(options, input);\n if (parser.options.strictMode) {\n parser.state.strict = true;\n }\n return parser.getExpression();\n}\nfunction generateExportedTokenTypes(internalTokenTypes) {\n const tokenTypes = {};\n for (const typeName of Object.keys(internalTokenTypes)) {\n tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n }\n return tokenTypes;\n}\nconst tokTypes = generateExportedTokenTypes(tt);\nfunction getParser(options, input) {\n let cls = Parser;\n const pluginsMap = new Map();\n if (options != null && options.plugins) {\n for (const plugin of options.plugins) {\n let name, opts;\n if (typeof plugin === \"string\") {\n name = plugin;\n } else {\n [name, opts] = plugin;\n }\n if (!pluginsMap.has(name)) {\n pluginsMap.set(name, opts || {});\n }\n }\n validatePlugins(pluginsMap);\n cls = getParserClass(pluginsMap);\n }\n return new cls(options, input, pluginsMap);\n}\nconst parserClassCache = new Map();\nfunction getParserClass(pluginsMap) {\n const pluginList = [];\n for (const name of mixinPluginNames) {\n if (pluginsMap.has(name)) {\n pluginList.push(name);\n }\n }\n const key = pluginList.join(\"|\");\n let cls = parserClassCache.get(key);\n if (!cls) {\n cls = Parser;\n for (const plugin of pluginList) {\n cls = mixinPlugins[plugin](cls);\n }\n parserClassCache.set(key, cls);\n }\n return cls;\n}\nexports.parse = parse;\nexports.parseExpression = parseExpression;\nexports.tokTypes = tokTypes;\n//# sourceMappingURL=index.js.map\n"]}
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@babel/types/index.js b/miniapp/miniprogram_npm/@babel/types/index.js
new file mode 100644
index 0000000..7859288
--- /dev/null
+++ b/miniapp/miniprogram_npm/@babel/types/index.js
@@ -0,0 +1,13599 @@
+module.exports = (function() {
+var __MODS__ = {};
+var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
+var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
+var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
+var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
+__DEFINE__(1771034509019, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+var _exportNames = {
+ react: true,
+ assertNode: true,
+ createTypeAnnotationBasedOnTypeof: true,
+ createUnionTypeAnnotation: true,
+ createFlowUnionType: true,
+ createTSUnionType: true,
+ cloneNode: true,
+ clone: true,
+ cloneDeep: true,
+ cloneDeepWithoutLoc: true,
+ cloneWithoutLoc: true,
+ addComment: true,
+ addComments: true,
+ inheritInnerComments: true,
+ inheritLeadingComments: true,
+ inheritsComments: true,
+ inheritTrailingComments: true,
+ removeComments: true,
+ ensureBlock: true,
+ toBindingIdentifierName: true,
+ toBlock: true,
+ toComputedKey: true,
+ toExpression: true,
+ toIdentifier: true,
+ toKeyAlias: true,
+ toStatement: true,
+ valueToNode: true,
+ appendToMemberExpression: true,
+ inherits: true,
+ prependToMemberExpression: true,
+ removeProperties: true,
+ removePropertiesDeep: true,
+ removeTypeDuplicates: true,
+ getAssignmentIdentifiers: true,
+ getBindingIdentifiers: true,
+ getOuterBindingIdentifiers: true,
+ getFunctionName: true,
+ traverse: true,
+ traverseFast: true,
+ shallowEqual: true,
+ is: true,
+ isBinding: true,
+ isBlockScoped: true,
+ isImmutable: true,
+ isLet: true,
+ isNode: true,
+ isNodesEquivalent: true,
+ isPlaceholderType: true,
+ isReferenced: true,
+ isScope: true,
+ isSpecifierDefault: true,
+ isType: true,
+ isValidES3Identifier: true,
+ isValidIdentifier: true,
+ isVar: true,
+ matchesPattern: true,
+ validate: true,
+ buildMatchMemberExpression: true,
+ __internal__deprecationWarning: true
+};
+Object.defineProperty(exports, "__internal__deprecationWarning", {
+ enumerable: true,
+ get: function () {
+ return _deprecationWarning.default;
+ }
+});
+Object.defineProperty(exports, "addComment", {
+ enumerable: true,
+ get: function () {
+ return _addComment.default;
+ }
+});
+Object.defineProperty(exports, "addComments", {
+ enumerable: true,
+ get: function () {
+ return _addComments.default;
+ }
+});
+Object.defineProperty(exports, "appendToMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _appendToMemberExpression.default;
+ }
+});
+Object.defineProperty(exports, "assertNode", {
+ enumerable: true,
+ get: function () {
+ return _assertNode.default;
+ }
+});
+Object.defineProperty(exports, "buildMatchMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _buildMatchMemberExpression.default;
+ }
+});
+Object.defineProperty(exports, "clone", {
+ enumerable: true,
+ get: function () {
+ return _clone.default;
+ }
+});
+Object.defineProperty(exports, "cloneDeep", {
+ enumerable: true,
+ get: function () {
+ return _cloneDeep.default;
+ }
+});
+Object.defineProperty(exports, "cloneDeepWithoutLoc", {
+ enumerable: true,
+ get: function () {
+ return _cloneDeepWithoutLoc.default;
+ }
+});
+Object.defineProperty(exports, "cloneNode", {
+ enumerable: true,
+ get: function () {
+ return _cloneNode.default;
+ }
+});
+Object.defineProperty(exports, "cloneWithoutLoc", {
+ enumerable: true,
+ get: function () {
+ return _cloneWithoutLoc.default;
+ }
+});
+Object.defineProperty(exports, "createFlowUnionType", {
+ enumerable: true,
+ get: function () {
+ return _createFlowUnionType.default;
+ }
+});
+Object.defineProperty(exports, "createTSUnionType", {
+ enumerable: true,
+ get: function () {
+ return _createTSUnionType.default;
+ }
+});
+Object.defineProperty(exports, "createTypeAnnotationBasedOnTypeof", {
+ enumerable: true,
+ get: function () {
+ return _createTypeAnnotationBasedOnTypeof.default;
+ }
+});
+Object.defineProperty(exports, "createUnionTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _createFlowUnionType.default;
+ }
+});
+Object.defineProperty(exports, "ensureBlock", {
+ enumerable: true,
+ get: function () {
+ return _ensureBlock.default;
+ }
+});
+Object.defineProperty(exports, "getAssignmentIdentifiers", {
+ enumerable: true,
+ get: function () {
+ return _getAssignmentIdentifiers.default;
+ }
+});
+Object.defineProperty(exports, "getBindingIdentifiers", {
+ enumerable: true,
+ get: function () {
+ return _getBindingIdentifiers.default;
+ }
+});
+Object.defineProperty(exports, "getFunctionName", {
+ enumerable: true,
+ get: function () {
+ return _getFunctionName.default;
+ }
+});
+Object.defineProperty(exports, "getOuterBindingIdentifiers", {
+ enumerable: true,
+ get: function () {
+ return _getOuterBindingIdentifiers.default;
+ }
+});
+Object.defineProperty(exports, "inheritInnerComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritInnerComments.default;
+ }
+});
+Object.defineProperty(exports, "inheritLeadingComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritLeadingComments.default;
+ }
+});
+Object.defineProperty(exports, "inheritTrailingComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritTrailingComments.default;
+ }
+});
+Object.defineProperty(exports, "inherits", {
+ enumerable: true,
+ get: function () {
+ return _inherits.default;
+ }
+});
+Object.defineProperty(exports, "inheritsComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritsComments.default;
+ }
+});
+Object.defineProperty(exports, "is", {
+ enumerable: true,
+ get: function () {
+ return _is.default;
+ }
+});
+Object.defineProperty(exports, "isBinding", {
+ enumerable: true,
+ get: function () {
+ return _isBinding.default;
+ }
+});
+Object.defineProperty(exports, "isBlockScoped", {
+ enumerable: true,
+ get: function () {
+ return _isBlockScoped.default;
+ }
+});
+Object.defineProperty(exports, "isImmutable", {
+ enumerable: true,
+ get: function () {
+ return _isImmutable.default;
+ }
+});
+Object.defineProperty(exports, "isLet", {
+ enumerable: true,
+ get: function () {
+ return _isLet.default;
+ }
+});
+Object.defineProperty(exports, "isNode", {
+ enumerable: true,
+ get: function () {
+ return _isNode.default;
+ }
+});
+Object.defineProperty(exports, "isNodesEquivalent", {
+ enumerable: true,
+ get: function () {
+ return _isNodesEquivalent.default;
+ }
+});
+Object.defineProperty(exports, "isPlaceholderType", {
+ enumerable: true,
+ get: function () {
+ return _isPlaceholderType.default;
+ }
+});
+Object.defineProperty(exports, "isReferenced", {
+ enumerable: true,
+ get: function () {
+ return _isReferenced.default;
+ }
+});
+Object.defineProperty(exports, "isScope", {
+ enumerable: true,
+ get: function () {
+ return _isScope.default;
+ }
+});
+Object.defineProperty(exports, "isSpecifierDefault", {
+ enumerable: true,
+ get: function () {
+ return _isSpecifierDefault.default;
+ }
+});
+Object.defineProperty(exports, "isType", {
+ enumerable: true,
+ get: function () {
+ return _isType.default;
+ }
+});
+Object.defineProperty(exports, "isValidES3Identifier", {
+ enumerable: true,
+ get: function () {
+ return _isValidES3Identifier.default;
+ }
+});
+Object.defineProperty(exports, "isValidIdentifier", {
+ enumerable: true,
+ get: function () {
+ return _isValidIdentifier.default;
+ }
+});
+Object.defineProperty(exports, "isVar", {
+ enumerable: true,
+ get: function () {
+ return _isVar.default;
+ }
+});
+Object.defineProperty(exports, "matchesPattern", {
+ enumerable: true,
+ get: function () {
+ return _matchesPattern.default;
+ }
+});
+Object.defineProperty(exports, "prependToMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _prependToMemberExpression.default;
+ }
+});
+exports.react = void 0;
+Object.defineProperty(exports, "removeComments", {
+ enumerable: true,
+ get: function () {
+ return _removeComments.default;
+ }
+});
+Object.defineProperty(exports, "removeProperties", {
+ enumerable: true,
+ get: function () {
+ return _removeProperties.default;
+ }
+});
+Object.defineProperty(exports, "removePropertiesDeep", {
+ enumerable: true,
+ get: function () {
+ return _removePropertiesDeep.default;
+ }
+});
+Object.defineProperty(exports, "removeTypeDuplicates", {
+ enumerable: true,
+ get: function () {
+ return _removeTypeDuplicates.default;
+ }
+});
+Object.defineProperty(exports, "shallowEqual", {
+ enumerable: true,
+ get: function () {
+ return _shallowEqual.default;
+ }
+});
+Object.defineProperty(exports, "toBindingIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _toBindingIdentifierName.default;
+ }
+});
+Object.defineProperty(exports, "toBlock", {
+ enumerable: true,
+ get: function () {
+ return _toBlock.default;
+ }
+});
+Object.defineProperty(exports, "toComputedKey", {
+ enumerable: true,
+ get: function () {
+ return _toComputedKey.default;
+ }
+});
+Object.defineProperty(exports, "toExpression", {
+ enumerable: true,
+ get: function () {
+ return _toExpression.default;
+ }
+});
+Object.defineProperty(exports, "toIdentifier", {
+ enumerable: true,
+ get: function () {
+ return _toIdentifier.default;
+ }
+});
+Object.defineProperty(exports, "toKeyAlias", {
+ enumerable: true,
+ get: function () {
+ return _toKeyAlias.default;
+ }
+});
+Object.defineProperty(exports, "toStatement", {
+ enumerable: true,
+ get: function () {
+ return _toStatement.default;
+ }
+});
+Object.defineProperty(exports, "traverse", {
+ enumerable: true,
+ get: function () {
+ return _traverse.default;
+ }
+});
+Object.defineProperty(exports, "traverseFast", {
+ enumerable: true,
+ get: function () {
+ return _traverseFast.default;
+ }
+});
+Object.defineProperty(exports, "validate", {
+ enumerable: true,
+ get: function () {
+ return _validate.default;
+ }
+});
+Object.defineProperty(exports, "valueToNode", {
+ enumerable: true,
+ get: function () {
+ return _valueToNode.default;
+ }
+});
+var _isReactComponent = require("./validators/react/isReactComponent.js");
+var _isCompatTag = require("./validators/react/isCompatTag.js");
+var _buildChildren = require("./builders/react/buildChildren.js");
+var _assertNode = require("./asserts/assertNode.js");
+var _index = require("./asserts/generated/index.js");
+Object.keys(_index).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index[key];
+ }
+ });
+});
+var _createTypeAnnotationBasedOnTypeof = require("./builders/flow/createTypeAnnotationBasedOnTypeof.js");
+var _createFlowUnionType = require("./builders/flow/createFlowUnionType.js");
+var _createTSUnionType = require("./builders/typescript/createTSUnionType.js");
+var _productions = require("./builders/productions.js");
+Object.keys(_productions).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _productions[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _productions[key];
+ }
+ });
+});
+var _index2 = require("./builders/generated/index.js");
+Object.keys(_index2).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index2[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index2[key];
+ }
+ });
+});
+var _cloneNode = require("./clone/cloneNode.js");
+var _clone = require("./clone/clone.js");
+var _cloneDeep = require("./clone/cloneDeep.js");
+var _cloneDeepWithoutLoc = require("./clone/cloneDeepWithoutLoc.js");
+var _cloneWithoutLoc = require("./clone/cloneWithoutLoc.js");
+var _addComment = require("./comments/addComment.js");
+var _addComments = require("./comments/addComments.js");
+var _inheritInnerComments = require("./comments/inheritInnerComments.js");
+var _inheritLeadingComments = require("./comments/inheritLeadingComments.js");
+var _inheritsComments = require("./comments/inheritsComments.js");
+var _inheritTrailingComments = require("./comments/inheritTrailingComments.js");
+var _removeComments = require("./comments/removeComments.js");
+var _index3 = require("./constants/generated/index.js");
+Object.keys(_index3).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index3[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index3[key];
+ }
+ });
+});
+var _index4 = require("./constants/index.js");
+Object.keys(_index4).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index4[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index4[key];
+ }
+ });
+});
+var _ensureBlock = require("./converters/ensureBlock.js");
+var _toBindingIdentifierName = require("./converters/toBindingIdentifierName.js");
+var _toBlock = require("./converters/toBlock.js");
+var _toComputedKey = require("./converters/toComputedKey.js");
+var _toExpression = require("./converters/toExpression.js");
+var _toIdentifier = require("./converters/toIdentifier.js");
+var _toKeyAlias = require("./converters/toKeyAlias.js");
+var _toStatement = require("./converters/toStatement.js");
+var _valueToNode = require("./converters/valueToNode.js");
+var _index5 = require("./definitions/index.js");
+Object.keys(_index5).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index5[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index5[key];
+ }
+ });
+});
+var _appendToMemberExpression = require("./modifications/appendToMemberExpression.js");
+var _inherits = require("./modifications/inherits.js");
+var _prependToMemberExpression = require("./modifications/prependToMemberExpression.js");
+var _removeProperties = require("./modifications/removeProperties.js");
+var _removePropertiesDeep = require("./modifications/removePropertiesDeep.js");
+var _removeTypeDuplicates = require("./modifications/flow/removeTypeDuplicates.js");
+var _getAssignmentIdentifiers = require("./retrievers/getAssignmentIdentifiers.js");
+var _getBindingIdentifiers = require("./retrievers/getBindingIdentifiers.js");
+var _getOuterBindingIdentifiers = require("./retrievers/getOuterBindingIdentifiers.js");
+var _getFunctionName = require("./retrievers/getFunctionName.js");
+var _traverse = require("./traverse/traverse.js");
+Object.keys(_traverse).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _traverse[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _traverse[key];
+ }
+ });
+});
+var _traverseFast = require("./traverse/traverseFast.js");
+var _shallowEqual = require("./utils/shallowEqual.js");
+var _is = require("./validators/is.js");
+var _isBinding = require("./validators/isBinding.js");
+var _isBlockScoped = require("./validators/isBlockScoped.js");
+var _isImmutable = require("./validators/isImmutable.js");
+var _isLet = require("./validators/isLet.js");
+var _isNode = require("./validators/isNode.js");
+var _isNodesEquivalent = require("./validators/isNodesEquivalent.js");
+var _isPlaceholderType = require("./validators/isPlaceholderType.js");
+var _isReferenced = require("./validators/isReferenced.js");
+var _isScope = require("./validators/isScope.js");
+var _isSpecifierDefault = require("./validators/isSpecifierDefault.js");
+var _isType = require("./validators/isType.js");
+var _isValidES3Identifier = require("./validators/isValidES3Identifier.js");
+var _isValidIdentifier = require("./validators/isValidIdentifier.js");
+var _isVar = require("./validators/isVar.js");
+var _matchesPattern = require("./validators/matchesPattern.js");
+var _validate = require("./validators/validate.js");
+var _buildMatchMemberExpression = require("./validators/buildMatchMemberExpression.js");
+var _index6 = require("./validators/generated/index.js");
+Object.keys(_index6).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _index6[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _index6[key];
+ }
+ });
+});
+var _deprecationWarning = require("./utils/deprecationWarning.js");
+var _toSequenceExpression = require("./converters/toSequenceExpression.js");
+const react = exports.react = {
+ isReactComponent: _isReactComponent.default,
+ isCompatTag: _isCompatTag.default,
+ buildChildren: _buildChildren.default
+};
+exports.toSequenceExpression = _toSequenceExpression.default;
+if (process.env.BABEL_TYPES_8_BREAKING) {
+ console.warn("BABEL_TYPES_8_BREAKING is not supported anymore. Use the latest Babel 8.0.0 pre-release instead!");
+}
+
+//# sourceMappingURL=index.js.map
+
+}, function(modId) {var map = {"./validators/react/isReactComponent.js":1771034509020,"./validators/react/isCompatTag.js":1771034509026,"./builders/react/buildChildren.js":1771034509027,"./asserts/assertNode.js":1771034509048,"./asserts/generated/index.js":1771034509050,"./builders/flow/createTypeAnnotationBasedOnTypeof.js":1771034509051,"./builders/flow/createFlowUnionType.js":1771034509052,"./builders/typescript/createTSUnionType.js":1771034509054,"./builders/productions.js":1771034509056,"./builders/generated/index.js":1771034509029,"./clone/cloneNode.js":1771034509057,"./clone/clone.js":1771034509058,"./clone/cloneDeep.js":1771034509059,"./clone/cloneDeepWithoutLoc.js":1771034509060,"./clone/cloneWithoutLoc.js":1771034509061,"./comments/addComment.js":1771034509062,"./comments/addComments.js":1771034509063,"./comments/inheritInnerComments.js":1771034509064,"./comments/inheritLeadingComments.js":1771034509066,"./comments/inheritsComments.js":1771034509067,"./comments/inheritTrailingComments.js":1771034509068,"./comments/removeComments.js":1771034509069,"./constants/generated/index.js":1771034509070,"./constants/index.js":1771034509038,"./converters/ensureBlock.js":1771034509071,"./converters/toBindingIdentifierName.js":1771034509073,"./converters/toBlock.js":1771034509072,"./converters/toComputedKey.js":1771034509075,"./converters/toExpression.js":1771034509076,"./converters/toIdentifier.js":1771034509074,"./converters/toKeyAlias.js":1771034509077,"./converters/toStatement.js":1771034509081,"./converters/valueToNode.js":1771034509082,"./definitions/index.js":1771034509032,"./modifications/appendToMemberExpression.js":1771034509083,"./modifications/inherits.js":1771034509084,"./modifications/prependToMemberExpression.js":1771034509085,"./modifications/removeProperties.js":1771034509080,"./modifications/removePropertiesDeep.js":1771034509078,"./modifications/flow/removeTypeDuplicates.js":1771034509053,"./retrievers/getAssignmentIdentifiers.js":1771034509086,"./retrievers/getBindingIdentifiers.js":1771034509087,"./retrievers/getOuterBindingIdentifiers.js":1771034509088,"./retrievers/getFunctionName.js":1771034509089,"./traverse/traverse.js":1771034509090,"./traverse/traverseFast.js":1771034509079,"./utils/shallowEqual.js":1771034509024,"./validators/is.js":1771034509034,"./validators/isBinding.js":1771034509091,"./validators/isBlockScoped.js":1771034509092,"./validators/isImmutable.js":1771034509094,"./validators/isLet.js":1771034509093,"./validators/isNode.js":1771034509049,"./validators/isNodesEquivalent.js":1771034509095,"./validators/isPlaceholderType.js":1771034509036,"./validators/isReferenced.js":1771034509096,"./validators/isScope.js":1771034509097,"./validators/isSpecifierDefault.js":1771034509098,"./validators/isType.js":1771034509035,"./validators/isValidES3Identifier.js":1771034509099,"./validators/isValidIdentifier.js":1771034509037,"./validators/isVar.js":1771034509100,"./validators/matchesPattern.js":1771034509022,"./validators/validate.js":1771034509031,"./validators/buildMatchMemberExpression.js":1771034509021,"./validators/generated/index.js":1771034509023,"./utils/deprecationWarning.js":1771034509025,"./converters/toSequenceExpression.js":1771034509101}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509020, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _buildMatchMemberExpression = require("../buildMatchMemberExpression.js");
+const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component");
+var _default = exports.default = isReactComponent;
+
+//# sourceMappingURL=isReactComponent.js.map
+
+}, function(modId) { var map = {"../buildMatchMemberExpression.js":1771034509021}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509021, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = buildMatchMemberExpression;
+var _matchesPattern = require("./matchesPattern.js");
+function buildMatchMemberExpression(match, allowPartial) {
+ const parts = match.split(".");
+ return member => (0, _matchesPattern.default)(member, parts, allowPartial);
+}
+
+//# sourceMappingURL=buildMatchMemberExpression.js.map
+
+}, function(modId) { var map = {"./matchesPattern.js":1771034509022}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509022, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = matchesPattern;
+var _index = require("./generated/index.js");
+function isMemberExpressionLike(node) {
+ return (0, _index.isMemberExpression)(node) || (0, _index.isMetaProperty)(node);
+}
+function matchesPattern(member, match, allowPartial) {
+ if (!isMemberExpressionLike(member)) return false;
+ const parts = Array.isArray(match) ? match : match.split(".");
+ const nodes = [];
+ let node;
+ for (node = member; isMemberExpressionLike(node); node = (_object = node.object) != null ? _object : node.meta) {
+ var _object;
+ nodes.push(node.property);
+ }
+ nodes.push(node);
+ if (nodes.length < parts.length) return false;
+ if (!allowPartial && nodes.length > parts.length) return false;
+ for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {
+ const node = nodes[j];
+ let value;
+ if ((0, _index.isIdentifier)(node)) {
+ value = node.name;
+ } else if ((0, _index.isStringLiteral)(node)) {
+ value = node.value;
+ } else if ((0, _index.isThisExpression)(node)) {
+ value = "this";
+ } else if ((0, _index.isSuper)(node)) {
+ value = "super";
+ } else if ((0, _index.isPrivateName)(node)) {
+ value = "#" + node.id.name;
+ } else {
+ return false;
+ }
+ if (parts[i] !== value) return false;
+ }
+ return true;
+}
+
+//# sourceMappingURL=matchesPattern.js.map
+
+}, function(modId) { var map = {"./generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509023, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isAccessor = isAccessor;
+exports.isAnyTypeAnnotation = isAnyTypeAnnotation;
+exports.isArgumentPlaceholder = isArgumentPlaceholder;
+exports.isArrayExpression = isArrayExpression;
+exports.isArrayPattern = isArrayPattern;
+exports.isArrayTypeAnnotation = isArrayTypeAnnotation;
+exports.isArrowFunctionExpression = isArrowFunctionExpression;
+exports.isAssignmentExpression = isAssignmentExpression;
+exports.isAssignmentPattern = isAssignmentPattern;
+exports.isAwaitExpression = isAwaitExpression;
+exports.isBigIntLiteral = isBigIntLiteral;
+exports.isBinary = isBinary;
+exports.isBinaryExpression = isBinaryExpression;
+exports.isBindExpression = isBindExpression;
+exports.isBlock = isBlock;
+exports.isBlockParent = isBlockParent;
+exports.isBlockStatement = isBlockStatement;
+exports.isBooleanLiteral = isBooleanLiteral;
+exports.isBooleanLiteralTypeAnnotation = isBooleanLiteralTypeAnnotation;
+exports.isBooleanTypeAnnotation = isBooleanTypeAnnotation;
+exports.isBreakStatement = isBreakStatement;
+exports.isCallExpression = isCallExpression;
+exports.isCatchClause = isCatchClause;
+exports.isClass = isClass;
+exports.isClassAccessorProperty = isClassAccessorProperty;
+exports.isClassBody = isClassBody;
+exports.isClassDeclaration = isClassDeclaration;
+exports.isClassExpression = isClassExpression;
+exports.isClassImplements = isClassImplements;
+exports.isClassMethod = isClassMethod;
+exports.isClassPrivateMethod = isClassPrivateMethod;
+exports.isClassPrivateProperty = isClassPrivateProperty;
+exports.isClassProperty = isClassProperty;
+exports.isCompletionStatement = isCompletionStatement;
+exports.isConditional = isConditional;
+exports.isConditionalExpression = isConditionalExpression;
+exports.isContinueStatement = isContinueStatement;
+exports.isDebuggerStatement = isDebuggerStatement;
+exports.isDecimalLiteral = isDecimalLiteral;
+exports.isDeclaration = isDeclaration;
+exports.isDeclareClass = isDeclareClass;
+exports.isDeclareExportAllDeclaration = isDeclareExportAllDeclaration;
+exports.isDeclareExportDeclaration = isDeclareExportDeclaration;
+exports.isDeclareFunction = isDeclareFunction;
+exports.isDeclareInterface = isDeclareInterface;
+exports.isDeclareModule = isDeclareModule;
+exports.isDeclareModuleExports = isDeclareModuleExports;
+exports.isDeclareOpaqueType = isDeclareOpaqueType;
+exports.isDeclareTypeAlias = isDeclareTypeAlias;
+exports.isDeclareVariable = isDeclareVariable;
+exports.isDeclaredPredicate = isDeclaredPredicate;
+exports.isDecorator = isDecorator;
+exports.isDirective = isDirective;
+exports.isDirectiveLiteral = isDirectiveLiteral;
+exports.isDoExpression = isDoExpression;
+exports.isDoWhileStatement = isDoWhileStatement;
+exports.isEmptyStatement = isEmptyStatement;
+exports.isEmptyTypeAnnotation = isEmptyTypeAnnotation;
+exports.isEnumBody = isEnumBody;
+exports.isEnumBooleanBody = isEnumBooleanBody;
+exports.isEnumBooleanMember = isEnumBooleanMember;
+exports.isEnumDeclaration = isEnumDeclaration;
+exports.isEnumDefaultedMember = isEnumDefaultedMember;
+exports.isEnumMember = isEnumMember;
+exports.isEnumNumberBody = isEnumNumberBody;
+exports.isEnumNumberMember = isEnumNumberMember;
+exports.isEnumStringBody = isEnumStringBody;
+exports.isEnumStringMember = isEnumStringMember;
+exports.isEnumSymbolBody = isEnumSymbolBody;
+exports.isExistsTypeAnnotation = isExistsTypeAnnotation;
+exports.isExportAllDeclaration = isExportAllDeclaration;
+exports.isExportDeclaration = isExportDeclaration;
+exports.isExportDefaultDeclaration = isExportDefaultDeclaration;
+exports.isExportDefaultSpecifier = isExportDefaultSpecifier;
+exports.isExportNamedDeclaration = isExportNamedDeclaration;
+exports.isExportNamespaceSpecifier = isExportNamespaceSpecifier;
+exports.isExportSpecifier = isExportSpecifier;
+exports.isExpression = isExpression;
+exports.isExpressionStatement = isExpressionStatement;
+exports.isExpressionWrapper = isExpressionWrapper;
+exports.isFile = isFile;
+exports.isFlow = isFlow;
+exports.isFlowBaseAnnotation = isFlowBaseAnnotation;
+exports.isFlowDeclaration = isFlowDeclaration;
+exports.isFlowPredicate = isFlowPredicate;
+exports.isFlowType = isFlowType;
+exports.isFor = isFor;
+exports.isForInStatement = isForInStatement;
+exports.isForOfStatement = isForOfStatement;
+exports.isForStatement = isForStatement;
+exports.isForXStatement = isForXStatement;
+exports.isFunction = isFunction;
+exports.isFunctionDeclaration = isFunctionDeclaration;
+exports.isFunctionExpression = isFunctionExpression;
+exports.isFunctionParameter = isFunctionParameter;
+exports.isFunctionParent = isFunctionParent;
+exports.isFunctionTypeAnnotation = isFunctionTypeAnnotation;
+exports.isFunctionTypeParam = isFunctionTypeParam;
+exports.isGenericTypeAnnotation = isGenericTypeAnnotation;
+exports.isIdentifier = isIdentifier;
+exports.isIfStatement = isIfStatement;
+exports.isImmutable = isImmutable;
+exports.isImport = isImport;
+exports.isImportAttribute = isImportAttribute;
+exports.isImportDeclaration = isImportDeclaration;
+exports.isImportDefaultSpecifier = isImportDefaultSpecifier;
+exports.isImportExpression = isImportExpression;
+exports.isImportNamespaceSpecifier = isImportNamespaceSpecifier;
+exports.isImportOrExportDeclaration = isImportOrExportDeclaration;
+exports.isImportSpecifier = isImportSpecifier;
+exports.isIndexedAccessType = isIndexedAccessType;
+exports.isInferredPredicate = isInferredPredicate;
+exports.isInterfaceDeclaration = isInterfaceDeclaration;
+exports.isInterfaceExtends = isInterfaceExtends;
+exports.isInterfaceTypeAnnotation = isInterfaceTypeAnnotation;
+exports.isInterpreterDirective = isInterpreterDirective;
+exports.isIntersectionTypeAnnotation = isIntersectionTypeAnnotation;
+exports.isJSX = isJSX;
+exports.isJSXAttribute = isJSXAttribute;
+exports.isJSXClosingElement = isJSXClosingElement;
+exports.isJSXClosingFragment = isJSXClosingFragment;
+exports.isJSXElement = isJSXElement;
+exports.isJSXEmptyExpression = isJSXEmptyExpression;
+exports.isJSXExpressionContainer = isJSXExpressionContainer;
+exports.isJSXFragment = isJSXFragment;
+exports.isJSXIdentifier = isJSXIdentifier;
+exports.isJSXMemberExpression = isJSXMemberExpression;
+exports.isJSXNamespacedName = isJSXNamespacedName;
+exports.isJSXOpeningElement = isJSXOpeningElement;
+exports.isJSXOpeningFragment = isJSXOpeningFragment;
+exports.isJSXSpreadAttribute = isJSXSpreadAttribute;
+exports.isJSXSpreadChild = isJSXSpreadChild;
+exports.isJSXText = isJSXText;
+exports.isLVal = isLVal;
+exports.isLabeledStatement = isLabeledStatement;
+exports.isLiteral = isLiteral;
+exports.isLogicalExpression = isLogicalExpression;
+exports.isLoop = isLoop;
+exports.isMemberExpression = isMemberExpression;
+exports.isMetaProperty = isMetaProperty;
+exports.isMethod = isMethod;
+exports.isMiscellaneous = isMiscellaneous;
+exports.isMixedTypeAnnotation = isMixedTypeAnnotation;
+exports.isModuleDeclaration = isModuleDeclaration;
+exports.isModuleExpression = isModuleExpression;
+exports.isModuleSpecifier = isModuleSpecifier;
+exports.isNewExpression = isNewExpression;
+exports.isNoop = isNoop;
+exports.isNullLiteral = isNullLiteral;
+exports.isNullLiteralTypeAnnotation = isNullLiteralTypeAnnotation;
+exports.isNullableTypeAnnotation = isNullableTypeAnnotation;
+exports.isNumberLiteral = isNumberLiteral;
+exports.isNumberLiteralTypeAnnotation = isNumberLiteralTypeAnnotation;
+exports.isNumberTypeAnnotation = isNumberTypeAnnotation;
+exports.isNumericLiteral = isNumericLiteral;
+exports.isObjectExpression = isObjectExpression;
+exports.isObjectMember = isObjectMember;
+exports.isObjectMethod = isObjectMethod;
+exports.isObjectPattern = isObjectPattern;
+exports.isObjectProperty = isObjectProperty;
+exports.isObjectTypeAnnotation = isObjectTypeAnnotation;
+exports.isObjectTypeCallProperty = isObjectTypeCallProperty;
+exports.isObjectTypeIndexer = isObjectTypeIndexer;
+exports.isObjectTypeInternalSlot = isObjectTypeInternalSlot;
+exports.isObjectTypeProperty = isObjectTypeProperty;
+exports.isObjectTypeSpreadProperty = isObjectTypeSpreadProperty;
+exports.isOpaqueType = isOpaqueType;
+exports.isOptionalCallExpression = isOptionalCallExpression;
+exports.isOptionalIndexedAccessType = isOptionalIndexedAccessType;
+exports.isOptionalMemberExpression = isOptionalMemberExpression;
+exports.isParenthesizedExpression = isParenthesizedExpression;
+exports.isPattern = isPattern;
+exports.isPatternLike = isPatternLike;
+exports.isPipelineBareFunction = isPipelineBareFunction;
+exports.isPipelinePrimaryTopicReference = isPipelinePrimaryTopicReference;
+exports.isPipelineTopicExpression = isPipelineTopicExpression;
+exports.isPlaceholder = isPlaceholder;
+exports.isPrivate = isPrivate;
+exports.isPrivateName = isPrivateName;
+exports.isProgram = isProgram;
+exports.isProperty = isProperty;
+exports.isPureish = isPureish;
+exports.isQualifiedTypeIdentifier = isQualifiedTypeIdentifier;
+exports.isRecordExpression = isRecordExpression;
+exports.isRegExpLiteral = isRegExpLiteral;
+exports.isRegexLiteral = isRegexLiteral;
+exports.isRestElement = isRestElement;
+exports.isRestProperty = isRestProperty;
+exports.isReturnStatement = isReturnStatement;
+exports.isScopable = isScopable;
+exports.isSequenceExpression = isSequenceExpression;
+exports.isSpreadElement = isSpreadElement;
+exports.isSpreadProperty = isSpreadProperty;
+exports.isStandardized = isStandardized;
+exports.isStatement = isStatement;
+exports.isStaticBlock = isStaticBlock;
+exports.isStringLiteral = isStringLiteral;
+exports.isStringLiteralTypeAnnotation = isStringLiteralTypeAnnotation;
+exports.isStringTypeAnnotation = isStringTypeAnnotation;
+exports.isSuper = isSuper;
+exports.isSwitchCase = isSwitchCase;
+exports.isSwitchStatement = isSwitchStatement;
+exports.isSymbolTypeAnnotation = isSymbolTypeAnnotation;
+exports.isTSAnyKeyword = isTSAnyKeyword;
+exports.isTSArrayType = isTSArrayType;
+exports.isTSAsExpression = isTSAsExpression;
+exports.isTSBaseType = isTSBaseType;
+exports.isTSBigIntKeyword = isTSBigIntKeyword;
+exports.isTSBooleanKeyword = isTSBooleanKeyword;
+exports.isTSCallSignatureDeclaration = isTSCallSignatureDeclaration;
+exports.isTSConditionalType = isTSConditionalType;
+exports.isTSConstructSignatureDeclaration = isTSConstructSignatureDeclaration;
+exports.isTSConstructorType = isTSConstructorType;
+exports.isTSDeclareFunction = isTSDeclareFunction;
+exports.isTSDeclareMethod = isTSDeclareMethod;
+exports.isTSEntityName = isTSEntityName;
+exports.isTSEnumBody = isTSEnumBody;
+exports.isTSEnumDeclaration = isTSEnumDeclaration;
+exports.isTSEnumMember = isTSEnumMember;
+exports.isTSExportAssignment = isTSExportAssignment;
+exports.isTSExpressionWithTypeArguments = isTSExpressionWithTypeArguments;
+exports.isTSExternalModuleReference = isTSExternalModuleReference;
+exports.isTSFunctionType = isTSFunctionType;
+exports.isTSImportEqualsDeclaration = isTSImportEqualsDeclaration;
+exports.isTSImportType = isTSImportType;
+exports.isTSIndexSignature = isTSIndexSignature;
+exports.isTSIndexedAccessType = isTSIndexedAccessType;
+exports.isTSInferType = isTSInferType;
+exports.isTSInstantiationExpression = isTSInstantiationExpression;
+exports.isTSInterfaceBody = isTSInterfaceBody;
+exports.isTSInterfaceDeclaration = isTSInterfaceDeclaration;
+exports.isTSIntersectionType = isTSIntersectionType;
+exports.isTSIntrinsicKeyword = isTSIntrinsicKeyword;
+exports.isTSLiteralType = isTSLiteralType;
+exports.isTSMappedType = isTSMappedType;
+exports.isTSMethodSignature = isTSMethodSignature;
+exports.isTSModuleBlock = isTSModuleBlock;
+exports.isTSModuleDeclaration = isTSModuleDeclaration;
+exports.isTSNamedTupleMember = isTSNamedTupleMember;
+exports.isTSNamespaceExportDeclaration = isTSNamespaceExportDeclaration;
+exports.isTSNeverKeyword = isTSNeverKeyword;
+exports.isTSNonNullExpression = isTSNonNullExpression;
+exports.isTSNullKeyword = isTSNullKeyword;
+exports.isTSNumberKeyword = isTSNumberKeyword;
+exports.isTSObjectKeyword = isTSObjectKeyword;
+exports.isTSOptionalType = isTSOptionalType;
+exports.isTSParameterProperty = isTSParameterProperty;
+exports.isTSParenthesizedType = isTSParenthesizedType;
+exports.isTSPropertySignature = isTSPropertySignature;
+exports.isTSQualifiedName = isTSQualifiedName;
+exports.isTSRestType = isTSRestType;
+exports.isTSSatisfiesExpression = isTSSatisfiesExpression;
+exports.isTSStringKeyword = isTSStringKeyword;
+exports.isTSSymbolKeyword = isTSSymbolKeyword;
+exports.isTSTemplateLiteralType = isTSTemplateLiteralType;
+exports.isTSThisType = isTSThisType;
+exports.isTSTupleType = isTSTupleType;
+exports.isTSType = isTSType;
+exports.isTSTypeAliasDeclaration = isTSTypeAliasDeclaration;
+exports.isTSTypeAnnotation = isTSTypeAnnotation;
+exports.isTSTypeAssertion = isTSTypeAssertion;
+exports.isTSTypeElement = isTSTypeElement;
+exports.isTSTypeLiteral = isTSTypeLiteral;
+exports.isTSTypeOperator = isTSTypeOperator;
+exports.isTSTypeParameter = isTSTypeParameter;
+exports.isTSTypeParameterDeclaration = isTSTypeParameterDeclaration;
+exports.isTSTypeParameterInstantiation = isTSTypeParameterInstantiation;
+exports.isTSTypePredicate = isTSTypePredicate;
+exports.isTSTypeQuery = isTSTypeQuery;
+exports.isTSTypeReference = isTSTypeReference;
+exports.isTSUndefinedKeyword = isTSUndefinedKeyword;
+exports.isTSUnionType = isTSUnionType;
+exports.isTSUnknownKeyword = isTSUnknownKeyword;
+exports.isTSVoidKeyword = isTSVoidKeyword;
+exports.isTaggedTemplateExpression = isTaggedTemplateExpression;
+exports.isTemplateElement = isTemplateElement;
+exports.isTemplateLiteral = isTemplateLiteral;
+exports.isTerminatorless = isTerminatorless;
+exports.isThisExpression = isThisExpression;
+exports.isThisTypeAnnotation = isThisTypeAnnotation;
+exports.isThrowStatement = isThrowStatement;
+exports.isTopicReference = isTopicReference;
+exports.isTryStatement = isTryStatement;
+exports.isTupleExpression = isTupleExpression;
+exports.isTupleTypeAnnotation = isTupleTypeAnnotation;
+exports.isTypeAlias = isTypeAlias;
+exports.isTypeAnnotation = isTypeAnnotation;
+exports.isTypeCastExpression = isTypeCastExpression;
+exports.isTypeParameter = isTypeParameter;
+exports.isTypeParameterDeclaration = isTypeParameterDeclaration;
+exports.isTypeParameterInstantiation = isTypeParameterInstantiation;
+exports.isTypeScript = isTypeScript;
+exports.isTypeofTypeAnnotation = isTypeofTypeAnnotation;
+exports.isUnaryExpression = isUnaryExpression;
+exports.isUnaryLike = isUnaryLike;
+exports.isUnionTypeAnnotation = isUnionTypeAnnotation;
+exports.isUpdateExpression = isUpdateExpression;
+exports.isUserWhitespacable = isUserWhitespacable;
+exports.isV8IntrinsicIdentifier = isV8IntrinsicIdentifier;
+exports.isVariableDeclaration = isVariableDeclaration;
+exports.isVariableDeclarator = isVariableDeclarator;
+exports.isVariance = isVariance;
+exports.isVoidPattern = isVoidPattern;
+exports.isVoidTypeAnnotation = isVoidTypeAnnotation;
+exports.isWhile = isWhile;
+exports.isWhileStatement = isWhileStatement;
+exports.isWithStatement = isWithStatement;
+exports.isYieldExpression = isYieldExpression;
+var _shallowEqual = require("../../utils/shallowEqual.js");
+var _deprecationWarning = require("../../utils/deprecationWarning.js");
+function isArrayExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArrayExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAssignmentExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "AssignmentExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBinaryExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BinaryExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInterpreterDirective(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InterpreterDirective") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDirective(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Directive") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDirectiveLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DirectiveLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBlockStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BlockStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBreakStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BreakStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isCallExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "CallExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isCatchClause(node, opts) {
+ if (!node) return false;
+ if (node.type !== "CatchClause") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isConditionalExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ConditionalExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isContinueStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ContinueStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDebuggerStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DebuggerStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDoWhileStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DoWhileStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEmptyStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EmptyStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExpressionStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExpressionStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFile(node, opts) {
+ if (!node) return false;
+ if (node.type !== "File") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isForInStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ForInStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isForStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ForStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "FunctionDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "FunctionExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isIdentifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Identifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isIfStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "IfStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLabeledStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "LabeledStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStringLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "StringLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNumericLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NumericLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNullLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NullLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBooleanLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BooleanLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRegExpLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "RegExpLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLogicalExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "LogicalExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMemberExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "MemberExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNewExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NewExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isProgram(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Program") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectMethod(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectMethod") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRestElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "RestElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isReturnStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ReturnStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSequenceExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SequenceExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isParenthesizedExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ParenthesizedExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSwitchCase(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SwitchCase") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSwitchStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SwitchStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isThisExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ThisExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isThrowStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ThrowStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTryStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TryStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUnaryExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "UnaryExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUpdateExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "UpdateExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVariableDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "VariableDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVariableDeclarator(node, opts) {
+ if (!node) return false;
+ if (node.type !== "VariableDeclarator") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isWhileStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "WhileStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isWithStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "WithStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAssignmentPattern(node, opts) {
+ if (!node) return false;
+ if (node.type !== "AssignmentPattern") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isArrayPattern(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArrayPattern") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isArrowFunctionExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArrowFunctionExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportAllDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportAllDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportDefaultDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportDefaultDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportNamedDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportNamedDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isForOfStatement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ForOfStatement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportDefaultSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportDefaultSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportNamespaceSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportNamespaceSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMetaProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "MetaProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassMethod(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassMethod") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectPattern(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectPattern") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSpreadElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SpreadElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSuper(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Super") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTaggedTemplateExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TaggedTemplateExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTemplateElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TemplateElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTemplateLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TemplateLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isYieldExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "YieldExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAwaitExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "AwaitExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImport(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Import") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBigIntLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BigIntLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportNamespaceSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportNamespaceSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isOptionalMemberExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "OptionalMemberExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isOptionalCallExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "OptionalCallExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassAccessorProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassAccessorProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassPrivateProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassPrivateProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassPrivateMethod(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassPrivateMethod") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPrivateName(node, opts) {
+ if (!node) return false;
+ if (node.type !== "PrivateName") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStaticBlock(node, opts) {
+ if (!node) return false;
+ if (node.type !== "StaticBlock") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportAttribute(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ImportAttribute") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAnyTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "AnyTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isArrayTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArrayTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBooleanTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BooleanTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBooleanLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BooleanLiteralTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNullLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NullLiteralTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClassImplements(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ClassImplements") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareClass(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareClass") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareFunction(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareFunction") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareInterface(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareInterface") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareModule(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareModule") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareModuleExports(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareModuleExports") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareTypeAlias(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareTypeAlias") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareOpaqueType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareOpaqueType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareVariable(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareVariable") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareExportDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareExportDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclareExportAllDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclareExportAllDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclaredPredicate(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DeclaredPredicate") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExistsTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExistsTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "FunctionTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionTypeParam(node, opts) {
+ if (!node) return false;
+ if (node.type !== "FunctionTypeParam") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isGenericTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "GenericTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInferredPredicate(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InferredPredicate") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInterfaceExtends(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InterfaceExtends") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInterfaceDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InterfaceDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isInterfaceTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "InterfaceTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isIntersectionTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "IntersectionTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMixedTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "MixedTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEmptyTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EmptyTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNullableTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NullableTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNumberLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NumberLiteralTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNumberTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "NumberTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeInternalSlot(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeInternalSlot") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeCallProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeCallProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeIndexer(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeIndexer") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectTypeSpreadProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ObjectTypeSpreadProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isOpaqueType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "OpaqueType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isQualifiedTypeIdentifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "QualifiedTypeIdentifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStringLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "StringLiteralTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStringTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "StringTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSymbolTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "SymbolTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isThisTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ThisTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTupleTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TupleTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeofTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeofTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeAlias(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeAlias") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeCastExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeCastExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeParameter(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeParameter") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeParameterDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeParameterDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeParameterInstantiation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TypeParameterInstantiation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUnionTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "UnionTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVariance(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Variance") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVoidTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "VoidTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumBooleanBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumBooleanBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumNumberBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumNumberBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumStringBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumStringBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumSymbolBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumSymbolBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumBooleanMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumBooleanMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumNumberMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumNumberMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumStringMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumStringMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumDefaultedMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "EnumDefaultedMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isIndexedAccessType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "IndexedAccessType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isOptionalIndexedAccessType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "OptionalIndexedAccessType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXAttribute(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXAttribute") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXClosingElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXClosingElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXEmptyExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXEmptyExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXExpressionContainer(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXExpressionContainer") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXSpreadChild(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXSpreadChild") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXIdentifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXIdentifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXMemberExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXMemberExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXNamespacedName(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXNamespacedName") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXOpeningElement(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXOpeningElement") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXSpreadAttribute(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXSpreadAttribute") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXText(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXText") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXFragment(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXFragment") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXOpeningFragment(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXOpeningFragment") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSXClosingFragment(node, opts) {
+ if (!node) return false;
+ if (node.type !== "JSXClosingFragment") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNoop(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Noop") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPlaceholder(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Placeholder") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isV8IntrinsicIdentifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "V8IntrinsicIdentifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isArgumentPlaceholder(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ArgumentPlaceholder") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBindExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "BindExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDecorator(node, opts) {
+ if (!node) return false;
+ if (node.type !== "Decorator") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDoExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DoExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportDefaultSpecifier(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ExportDefaultSpecifier") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRecordExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "RecordExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTupleExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TupleExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDecimalLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "DecimalLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isModuleExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "ModuleExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTopicReference(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TopicReference") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPipelineTopicExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "PipelineTopicExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPipelineBareFunction(node, opts) {
+ if (!node) return false;
+ if (node.type !== "PipelineBareFunction") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPipelinePrimaryTopicReference(node, opts) {
+ if (!node) return false;
+ if (node.type !== "PipelinePrimaryTopicReference") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isVoidPattern(node, opts) {
+ if (!node) return false;
+ if (node.type !== "VoidPattern") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSParameterProperty(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSParameterProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSDeclareFunction(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSDeclareFunction") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSDeclareMethod(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSDeclareMethod") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSQualifiedName(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSQualifiedName") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSCallSignatureDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSCallSignatureDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSConstructSignatureDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSConstructSignatureDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSPropertySignature(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSPropertySignature") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSMethodSignature(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSMethodSignature") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSIndexSignature(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSIndexSignature") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSAnyKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSAnyKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSBooleanKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSBooleanKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSBigIntKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSBigIntKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSIntrinsicKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSIntrinsicKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNeverKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNeverKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNullKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNullKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNumberKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNumberKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSObjectKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSObjectKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSStringKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSStringKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSSymbolKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSSymbolKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSUndefinedKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSUndefinedKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSUnknownKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSUnknownKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSVoidKeyword(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSVoidKeyword") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSThisType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSThisType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSFunctionType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSFunctionType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSConstructorType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSConstructorType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeReference(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeReference") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypePredicate(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypePredicate") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeQuery(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeQuery") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeLiteral(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSArrayType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSArrayType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTupleType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTupleType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSOptionalType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSOptionalType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSRestType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSRestType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNamedTupleMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNamedTupleMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSUnionType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSUnionType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSIntersectionType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSIntersectionType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSConditionalType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSConditionalType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSInferType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSInferType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSParenthesizedType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSParenthesizedType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeOperator(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeOperator") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSIndexedAccessType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSIndexedAccessType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSMappedType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSMappedType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTemplateLiteralType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTemplateLiteralType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSLiteralType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSLiteralType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSExpressionWithTypeArguments(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSExpressionWithTypeArguments") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSInterfaceDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSInterfaceDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSInterfaceBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSInterfaceBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeAliasDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeAliasDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSInstantiationExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSInstantiationExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSAsExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSAsExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSSatisfiesExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSSatisfiesExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeAssertion(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeAssertion") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSEnumBody(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSEnumBody") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSEnumDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSEnumDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSEnumMember(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSEnumMember") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSModuleDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSModuleDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSModuleBlock(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSModuleBlock") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSImportType(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSImportType") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSImportEqualsDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSImportEqualsDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSExternalModuleReference(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSExternalModuleReference") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNonNullExpression(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNonNullExpression") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSExportAssignment(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSExportAssignment") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSNamespaceExportDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSNamespaceExportDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeAnnotation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeAnnotation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeParameterInstantiation(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeParameterInstantiation") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeParameterDeclaration(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeParameterDeclaration") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeParameter(node, opts) {
+ if (!node) return false;
+ if (node.type !== "TSTypeParameter") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStandardized(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ArrayExpression":
+ case "AssignmentExpression":
+ case "BinaryExpression":
+ case "InterpreterDirective":
+ case "Directive":
+ case "DirectiveLiteral":
+ case "BlockStatement":
+ case "BreakStatement":
+ case "CallExpression":
+ case "CatchClause":
+ case "ConditionalExpression":
+ case "ContinueStatement":
+ case "DebuggerStatement":
+ case "DoWhileStatement":
+ case "EmptyStatement":
+ case "ExpressionStatement":
+ case "File":
+ case "ForInStatement":
+ case "ForStatement":
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "Identifier":
+ case "IfStatement":
+ case "LabeledStatement":
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "RegExpLiteral":
+ case "LogicalExpression":
+ case "MemberExpression":
+ case "NewExpression":
+ case "Program":
+ case "ObjectExpression":
+ case "ObjectMethod":
+ case "ObjectProperty":
+ case "RestElement":
+ case "ReturnStatement":
+ case "SequenceExpression":
+ case "ParenthesizedExpression":
+ case "SwitchCase":
+ case "SwitchStatement":
+ case "ThisExpression":
+ case "ThrowStatement":
+ case "TryStatement":
+ case "UnaryExpression":
+ case "UpdateExpression":
+ case "VariableDeclaration":
+ case "VariableDeclarator":
+ case "WhileStatement":
+ case "WithStatement":
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ArrowFunctionExpression":
+ case "ClassBody":
+ case "ClassExpression":
+ case "ClassDeclaration":
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ case "ExportSpecifier":
+ case "ForOfStatement":
+ case "ImportDeclaration":
+ case "ImportDefaultSpecifier":
+ case "ImportNamespaceSpecifier":
+ case "ImportSpecifier":
+ case "ImportExpression":
+ case "MetaProperty":
+ case "ClassMethod":
+ case "ObjectPattern":
+ case "SpreadElement":
+ case "Super":
+ case "TaggedTemplateExpression":
+ case "TemplateElement":
+ case "TemplateLiteral":
+ case "YieldExpression":
+ case "AwaitExpression":
+ case "Import":
+ case "BigIntLiteral":
+ case "ExportNamespaceSpecifier":
+ case "OptionalMemberExpression":
+ case "OptionalCallExpression":
+ case "ClassProperty":
+ case "ClassAccessorProperty":
+ case "ClassPrivateProperty":
+ case "ClassPrivateMethod":
+ case "PrivateName":
+ case "StaticBlock":
+ case "ImportAttribute":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Identifier":
+ case "StringLiteral":
+ case "BlockStatement":
+ case "ClassBody":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExpression(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ArrayExpression":
+ case "AssignmentExpression":
+ case "BinaryExpression":
+ case "CallExpression":
+ case "ConditionalExpression":
+ case "FunctionExpression":
+ case "Identifier":
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "RegExpLiteral":
+ case "LogicalExpression":
+ case "MemberExpression":
+ case "NewExpression":
+ case "ObjectExpression":
+ case "SequenceExpression":
+ case "ParenthesizedExpression":
+ case "ThisExpression":
+ case "UnaryExpression":
+ case "UpdateExpression":
+ case "ArrowFunctionExpression":
+ case "ClassExpression":
+ case "ImportExpression":
+ case "MetaProperty":
+ case "Super":
+ case "TaggedTemplateExpression":
+ case "TemplateLiteral":
+ case "YieldExpression":
+ case "AwaitExpression":
+ case "Import":
+ case "BigIntLiteral":
+ case "OptionalMemberExpression":
+ case "OptionalCallExpression":
+ case "TypeCastExpression":
+ case "JSXElement":
+ case "JSXFragment":
+ case "BindExpression":
+ case "DoExpression":
+ case "RecordExpression":
+ case "TupleExpression":
+ case "DecimalLiteral":
+ case "ModuleExpression":
+ case "TopicReference":
+ case "PipelineTopicExpression":
+ case "PipelineBareFunction":
+ case "PipelinePrimaryTopicReference":
+ case "TSInstantiationExpression":
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSNonNullExpression":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Expression":
+ case "Identifier":
+ case "StringLiteral":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBinary(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BinaryExpression":
+ case "LogicalExpression":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isScopable(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BlockStatement":
+ case "CatchClause":
+ case "DoWhileStatement":
+ case "ForInStatement":
+ case "ForStatement":
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "Program":
+ case "ObjectMethod":
+ case "SwitchStatement":
+ case "WhileStatement":
+ case "ArrowFunctionExpression":
+ case "ClassExpression":
+ case "ClassDeclaration":
+ case "ForOfStatement":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "StaticBlock":
+ case "TSModuleBlock":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "BlockStatement") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBlockParent(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BlockStatement":
+ case "CatchClause":
+ case "DoWhileStatement":
+ case "ForInStatement":
+ case "ForStatement":
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "Program":
+ case "ObjectMethod":
+ case "SwitchStatement":
+ case "WhileStatement":
+ case "ArrowFunctionExpression":
+ case "ForOfStatement":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "StaticBlock":
+ case "TSModuleBlock":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "BlockStatement") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isBlock(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BlockStatement":
+ case "Program":
+ case "TSModuleBlock":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "BlockStatement") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isStatement(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BlockStatement":
+ case "BreakStatement":
+ case "ContinueStatement":
+ case "DebuggerStatement":
+ case "DoWhileStatement":
+ case "EmptyStatement":
+ case "ExpressionStatement":
+ case "ForInStatement":
+ case "ForStatement":
+ case "FunctionDeclaration":
+ case "IfStatement":
+ case "LabeledStatement":
+ case "ReturnStatement":
+ case "SwitchStatement":
+ case "ThrowStatement":
+ case "TryStatement":
+ case "VariableDeclaration":
+ case "WhileStatement":
+ case "WithStatement":
+ case "ClassDeclaration":
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ case "ForOfStatement":
+ case "ImportDeclaration":
+ case "DeclareClass":
+ case "DeclareFunction":
+ case "DeclareInterface":
+ case "DeclareModule":
+ case "DeclareModuleExports":
+ case "DeclareTypeAlias":
+ case "DeclareOpaqueType":
+ case "DeclareVariable":
+ case "DeclareExportDeclaration":
+ case "DeclareExportAllDeclaration":
+ case "InterfaceDeclaration":
+ case "OpaqueType":
+ case "TypeAlias":
+ case "EnumDeclaration":
+ case "TSDeclareFunction":
+ case "TSInterfaceDeclaration":
+ case "TSTypeAliasDeclaration":
+ case "TSEnumDeclaration":
+ case "TSModuleDeclaration":
+ case "TSImportEqualsDeclaration":
+ case "TSExportAssignment":
+ case "TSNamespaceExportDeclaration":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Statement":
+ case "Declaration":
+ case "BlockStatement":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTerminatorless(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BreakStatement":
+ case "ContinueStatement":
+ case "ReturnStatement":
+ case "ThrowStatement":
+ case "YieldExpression":
+ case "AwaitExpression":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isCompletionStatement(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "BreakStatement":
+ case "ContinueStatement":
+ case "ReturnStatement":
+ case "ThrowStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isConditional(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ConditionalExpression":
+ case "IfStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLoop(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "DoWhileStatement":
+ case "ForInStatement":
+ case "ForStatement":
+ case "WhileStatement":
+ case "ForOfStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isWhile(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "DoWhileStatement":
+ case "WhileStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExpressionWrapper(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ExpressionStatement":
+ case "ParenthesizedExpression":
+ case "TypeCastExpression":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFor(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ForInStatement":
+ case "ForStatement":
+ case "ForOfStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isForXStatement(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ForInStatement":
+ case "ForOfStatement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunction(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "ObjectMethod":
+ case "ArrowFunctionExpression":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionParent(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "ObjectMethod":
+ case "ArrowFunctionExpression":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "StaticBlock":
+ case "TSModuleBlock":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPureish(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "RegExpLiteral":
+ case "ArrowFunctionExpression":
+ case "BigIntLiteral":
+ case "DecimalLiteral":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "StringLiteral") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isDeclaration(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "FunctionDeclaration":
+ case "VariableDeclaration":
+ case "ClassDeclaration":
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ case "ImportDeclaration":
+ case "DeclareClass":
+ case "DeclareFunction":
+ case "DeclareInterface":
+ case "DeclareModule":
+ case "DeclareModuleExports":
+ case "DeclareTypeAlias":
+ case "DeclareOpaqueType":
+ case "DeclareVariable":
+ case "DeclareExportDeclaration":
+ case "DeclareExportAllDeclaration":
+ case "InterfaceDeclaration":
+ case "OpaqueType":
+ case "TypeAlias":
+ case "EnumDeclaration":
+ case "TSDeclareFunction":
+ case "TSInterfaceDeclaration":
+ case "TSTypeAliasDeclaration":
+ case "TSEnumDeclaration":
+ case "TSModuleDeclaration":
+ case "TSImportEqualsDeclaration":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "Declaration") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFunctionParameter(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Identifier":
+ case "RestElement":
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ObjectPattern":
+ case "VoidPattern":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "Identifier") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPatternLike(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Identifier":
+ case "MemberExpression":
+ case "RestElement":
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ObjectPattern":
+ case "VoidPattern":
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSNonNullExpression":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Pattern":
+ case "Identifier":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLVal(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Identifier":
+ case "MemberExpression":
+ case "RestElement":
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ObjectPattern":
+ case "TSParameterProperty":
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSNonNullExpression":
+ break;
+ case "Placeholder":
+ switch (node.expectedNode) {
+ case "Pattern":
+ case "Identifier":
+ break;
+ default:
+ return false;
+ }
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSEntityName(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Identifier":
+ case "TSQualifiedName":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "Identifier") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isLiteral(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "RegExpLiteral":
+ case "TemplateLiteral":
+ case "BigIntLiteral":
+ case "DecimalLiteral":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "StringLiteral") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImmutable(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "NullLiteral":
+ case "BooleanLiteral":
+ case "BigIntLiteral":
+ case "JSXAttribute":
+ case "JSXClosingElement":
+ case "JSXElement":
+ case "JSXExpressionContainer":
+ case "JSXSpreadChild":
+ case "JSXOpeningElement":
+ case "JSXText":
+ case "JSXFragment":
+ case "JSXOpeningFragment":
+ case "JSXClosingFragment":
+ case "DecimalLiteral":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "StringLiteral") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUserWhitespacable(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ObjectMethod":
+ case "ObjectProperty":
+ case "ObjectTypeInternalSlot":
+ case "ObjectTypeCallProperty":
+ case "ObjectTypeIndexer":
+ case "ObjectTypeProperty":
+ case "ObjectTypeSpreadProperty":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMethod(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ObjectMethod":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isObjectMember(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ObjectMethod":
+ case "ObjectProperty":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isProperty(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ObjectProperty":
+ case "ClassProperty":
+ case "ClassAccessorProperty":
+ case "ClassPrivateProperty":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isUnaryLike(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "UnaryExpression":
+ case "SpreadElement":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPattern(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "AssignmentPattern":
+ case "ArrayPattern":
+ case "ObjectPattern":
+ case "VoidPattern":
+ break;
+ case "Placeholder":
+ if (node.expectedNode === "Pattern") break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isClass(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ClassExpression":
+ case "ClassDeclaration":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isImportOrExportDeclaration(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ case "ImportDeclaration":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isExportDeclaration(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ExportAllDeclaration":
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isModuleSpecifier(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ExportSpecifier":
+ case "ImportDefaultSpecifier":
+ case "ImportNamespaceSpecifier":
+ case "ImportSpecifier":
+ case "ExportNamespaceSpecifier":
+ case "ExportDefaultSpecifier":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isAccessor(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ClassAccessorProperty":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isPrivate(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "ClassPrivateProperty":
+ case "ClassPrivateMethod":
+ case "PrivateName":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlow(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "AnyTypeAnnotation":
+ case "ArrayTypeAnnotation":
+ case "BooleanTypeAnnotation":
+ case "BooleanLiteralTypeAnnotation":
+ case "NullLiteralTypeAnnotation":
+ case "ClassImplements":
+ case "DeclareClass":
+ case "DeclareFunction":
+ case "DeclareInterface":
+ case "DeclareModule":
+ case "DeclareModuleExports":
+ case "DeclareTypeAlias":
+ case "DeclareOpaqueType":
+ case "DeclareVariable":
+ case "DeclareExportDeclaration":
+ case "DeclareExportAllDeclaration":
+ case "DeclaredPredicate":
+ case "ExistsTypeAnnotation":
+ case "FunctionTypeAnnotation":
+ case "FunctionTypeParam":
+ case "GenericTypeAnnotation":
+ case "InferredPredicate":
+ case "InterfaceExtends":
+ case "InterfaceDeclaration":
+ case "InterfaceTypeAnnotation":
+ case "IntersectionTypeAnnotation":
+ case "MixedTypeAnnotation":
+ case "EmptyTypeAnnotation":
+ case "NullableTypeAnnotation":
+ case "NumberLiteralTypeAnnotation":
+ case "NumberTypeAnnotation":
+ case "ObjectTypeAnnotation":
+ case "ObjectTypeInternalSlot":
+ case "ObjectTypeCallProperty":
+ case "ObjectTypeIndexer":
+ case "ObjectTypeProperty":
+ case "ObjectTypeSpreadProperty":
+ case "OpaqueType":
+ case "QualifiedTypeIdentifier":
+ case "StringLiteralTypeAnnotation":
+ case "StringTypeAnnotation":
+ case "SymbolTypeAnnotation":
+ case "ThisTypeAnnotation":
+ case "TupleTypeAnnotation":
+ case "TypeofTypeAnnotation":
+ case "TypeAlias":
+ case "TypeAnnotation":
+ case "TypeCastExpression":
+ case "TypeParameter":
+ case "TypeParameterDeclaration":
+ case "TypeParameterInstantiation":
+ case "UnionTypeAnnotation":
+ case "Variance":
+ case "VoidTypeAnnotation":
+ case "EnumDeclaration":
+ case "EnumBooleanBody":
+ case "EnumNumberBody":
+ case "EnumStringBody":
+ case "EnumSymbolBody":
+ case "EnumBooleanMember":
+ case "EnumNumberMember":
+ case "EnumStringMember":
+ case "EnumDefaultedMember":
+ case "IndexedAccessType":
+ case "OptionalIndexedAccessType":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlowType(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "AnyTypeAnnotation":
+ case "ArrayTypeAnnotation":
+ case "BooleanTypeAnnotation":
+ case "BooleanLiteralTypeAnnotation":
+ case "NullLiteralTypeAnnotation":
+ case "ExistsTypeAnnotation":
+ case "FunctionTypeAnnotation":
+ case "GenericTypeAnnotation":
+ case "InterfaceTypeAnnotation":
+ case "IntersectionTypeAnnotation":
+ case "MixedTypeAnnotation":
+ case "EmptyTypeAnnotation":
+ case "NullableTypeAnnotation":
+ case "NumberLiteralTypeAnnotation":
+ case "NumberTypeAnnotation":
+ case "ObjectTypeAnnotation":
+ case "StringLiteralTypeAnnotation":
+ case "StringTypeAnnotation":
+ case "SymbolTypeAnnotation":
+ case "ThisTypeAnnotation":
+ case "TupleTypeAnnotation":
+ case "TypeofTypeAnnotation":
+ case "UnionTypeAnnotation":
+ case "VoidTypeAnnotation":
+ case "IndexedAccessType":
+ case "OptionalIndexedAccessType":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlowBaseAnnotation(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "AnyTypeAnnotation":
+ case "BooleanTypeAnnotation":
+ case "NullLiteralTypeAnnotation":
+ case "MixedTypeAnnotation":
+ case "EmptyTypeAnnotation":
+ case "NumberTypeAnnotation":
+ case "StringTypeAnnotation":
+ case "SymbolTypeAnnotation":
+ case "ThisTypeAnnotation":
+ case "VoidTypeAnnotation":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlowDeclaration(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "DeclareClass":
+ case "DeclareFunction":
+ case "DeclareInterface":
+ case "DeclareModule":
+ case "DeclareModuleExports":
+ case "DeclareTypeAlias":
+ case "DeclareOpaqueType":
+ case "DeclareVariable":
+ case "DeclareExportDeclaration":
+ case "DeclareExportAllDeclaration":
+ case "InterfaceDeclaration":
+ case "OpaqueType":
+ case "TypeAlias":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isFlowPredicate(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "DeclaredPredicate":
+ case "InferredPredicate":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumBody(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "EnumBooleanBody":
+ case "EnumNumberBody":
+ case "EnumStringBody":
+ case "EnumSymbolBody":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isEnumMember(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "EnumBooleanMember":
+ case "EnumNumberMember":
+ case "EnumStringMember":
+ case "EnumDefaultedMember":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isJSX(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "JSXAttribute":
+ case "JSXClosingElement":
+ case "JSXElement":
+ case "JSXEmptyExpression":
+ case "JSXExpressionContainer":
+ case "JSXSpreadChild":
+ case "JSXIdentifier":
+ case "JSXMemberExpression":
+ case "JSXNamespacedName":
+ case "JSXOpeningElement":
+ case "JSXSpreadAttribute":
+ case "JSXText":
+ case "JSXFragment":
+ case "JSXOpeningFragment":
+ case "JSXClosingFragment":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isMiscellaneous(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "Noop":
+ case "Placeholder":
+ case "V8IntrinsicIdentifier":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTypeScript(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "TSParameterProperty":
+ case "TSDeclareFunction":
+ case "TSDeclareMethod":
+ case "TSQualifiedName":
+ case "TSCallSignatureDeclaration":
+ case "TSConstructSignatureDeclaration":
+ case "TSPropertySignature":
+ case "TSMethodSignature":
+ case "TSIndexSignature":
+ case "TSAnyKeyword":
+ case "TSBooleanKeyword":
+ case "TSBigIntKeyword":
+ case "TSIntrinsicKeyword":
+ case "TSNeverKeyword":
+ case "TSNullKeyword":
+ case "TSNumberKeyword":
+ case "TSObjectKeyword":
+ case "TSStringKeyword":
+ case "TSSymbolKeyword":
+ case "TSUndefinedKeyword":
+ case "TSUnknownKeyword":
+ case "TSVoidKeyword":
+ case "TSThisType":
+ case "TSFunctionType":
+ case "TSConstructorType":
+ case "TSTypeReference":
+ case "TSTypePredicate":
+ case "TSTypeQuery":
+ case "TSTypeLiteral":
+ case "TSArrayType":
+ case "TSTupleType":
+ case "TSOptionalType":
+ case "TSRestType":
+ case "TSNamedTupleMember":
+ case "TSUnionType":
+ case "TSIntersectionType":
+ case "TSConditionalType":
+ case "TSInferType":
+ case "TSParenthesizedType":
+ case "TSTypeOperator":
+ case "TSIndexedAccessType":
+ case "TSMappedType":
+ case "TSTemplateLiteralType":
+ case "TSLiteralType":
+ case "TSExpressionWithTypeArguments":
+ case "TSInterfaceDeclaration":
+ case "TSInterfaceBody":
+ case "TSTypeAliasDeclaration":
+ case "TSInstantiationExpression":
+ case "TSAsExpression":
+ case "TSSatisfiesExpression":
+ case "TSTypeAssertion":
+ case "TSEnumBody":
+ case "TSEnumDeclaration":
+ case "TSEnumMember":
+ case "TSModuleDeclaration":
+ case "TSModuleBlock":
+ case "TSImportType":
+ case "TSImportEqualsDeclaration":
+ case "TSExternalModuleReference":
+ case "TSNonNullExpression":
+ case "TSExportAssignment":
+ case "TSNamespaceExportDeclaration":
+ case "TSTypeAnnotation":
+ case "TSTypeParameterInstantiation":
+ case "TSTypeParameterDeclaration":
+ case "TSTypeParameter":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSTypeElement(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "TSCallSignatureDeclaration":
+ case "TSConstructSignatureDeclaration":
+ case "TSPropertySignature":
+ case "TSMethodSignature":
+ case "TSIndexSignature":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSType(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "TSAnyKeyword":
+ case "TSBooleanKeyword":
+ case "TSBigIntKeyword":
+ case "TSIntrinsicKeyword":
+ case "TSNeverKeyword":
+ case "TSNullKeyword":
+ case "TSNumberKeyword":
+ case "TSObjectKeyword":
+ case "TSStringKeyword":
+ case "TSSymbolKeyword":
+ case "TSUndefinedKeyword":
+ case "TSUnknownKeyword":
+ case "TSVoidKeyword":
+ case "TSThisType":
+ case "TSFunctionType":
+ case "TSConstructorType":
+ case "TSTypeReference":
+ case "TSTypePredicate":
+ case "TSTypeQuery":
+ case "TSTypeLiteral":
+ case "TSArrayType":
+ case "TSTupleType":
+ case "TSOptionalType":
+ case "TSRestType":
+ case "TSUnionType":
+ case "TSIntersectionType":
+ case "TSConditionalType":
+ case "TSInferType":
+ case "TSParenthesizedType":
+ case "TSTypeOperator":
+ case "TSIndexedAccessType":
+ case "TSMappedType":
+ case "TSTemplateLiteralType":
+ case "TSLiteralType":
+ case "TSExpressionWithTypeArguments":
+ case "TSImportType":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isTSBaseType(node, opts) {
+ if (!node) return false;
+ switch (node.type) {
+ case "TSAnyKeyword":
+ case "TSBooleanKeyword":
+ case "TSBigIntKeyword":
+ case "TSIntrinsicKeyword":
+ case "TSNeverKeyword":
+ case "TSNullKeyword":
+ case "TSNumberKeyword":
+ case "TSObjectKeyword":
+ case "TSStringKeyword":
+ case "TSSymbolKeyword":
+ case "TSUndefinedKeyword":
+ case "TSUnknownKeyword":
+ case "TSVoidKeyword":
+ case "TSThisType":
+ case "TSTemplateLiteralType":
+ case "TSLiteralType":
+ break;
+ default:
+ return false;
+ }
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isNumberLiteral(node, opts) {
+ (0, _deprecationWarning.default)("isNumberLiteral", "isNumericLiteral");
+ if (!node) return false;
+ if (node.type !== "NumberLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRegexLiteral(node, opts) {
+ (0, _deprecationWarning.default)("isRegexLiteral", "isRegExpLiteral");
+ if (!node) return false;
+ if (node.type !== "RegexLiteral") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isRestProperty(node, opts) {
+ (0, _deprecationWarning.default)("isRestProperty", "isRestElement");
+ if (!node) return false;
+ if (node.type !== "RestProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isSpreadProperty(node, opts) {
+ (0, _deprecationWarning.default)("isSpreadProperty", "isSpreadElement");
+ if (!node) return false;
+ if (node.type !== "SpreadProperty") return false;
+ return opts == null || (0, _shallowEqual.default)(node, opts);
+}
+function isModuleDeclaration(node, opts) {
+ (0, _deprecationWarning.default)("isModuleDeclaration", "isImportOrExportDeclaration");
+ return isImportOrExportDeclaration(node, opts);
+}
+
+//# sourceMappingURL=index.js.map
+
+}, function(modId) { var map = {"../../utils/shallowEqual.js":1771034509024,"../../utils/deprecationWarning.js":1771034509025}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509024, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = shallowEqual;
+function shallowEqual(actual, expected) {
+ const keys = Object.keys(expected);
+ for (const key of keys) {
+ if (actual[key] !== expected[key]) {
+ return false;
+ }
+ }
+ return true;
+}
+
+//# sourceMappingURL=shallowEqual.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509025, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = deprecationWarning;
+const warnings = new Set();
+function deprecationWarning(oldName, newName, prefix = "", cacheKey = oldName) {
+ if (warnings.has(cacheKey)) return;
+ warnings.add(cacheKey);
+ const {
+ internal,
+ trace
+ } = captureShortStackTrace(1, 2);
+ if (internal) {
+ return;
+ }
+ console.warn(`${prefix}\`${oldName}\` has been deprecated, please migrate to \`${newName}\`\n${trace}`);
+}
+function captureShortStackTrace(skip, length) {
+ const {
+ stackTraceLimit,
+ prepareStackTrace
+ } = Error;
+ let stackTrace;
+ Error.stackTraceLimit = 1 + skip + length;
+ Error.prepareStackTrace = function (err, stack) {
+ stackTrace = stack;
+ };
+ new Error().stack;
+ Error.stackTraceLimit = stackTraceLimit;
+ Error.prepareStackTrace = prepareStackTrace;
+ if (!stackTrace) return {
+ internal: false,
+ trace: ""
+ };
+ const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);
+ return {
+ internal: /[\\/]@babel[\\/]/.test(shortStackTrace[1].getFileName()),
+ trace: shortStackTrace.map(frame => ` at ${frame}`).join("\n")
+ };
+}
+
+//# sourceMappingURL=deprecationWarning.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509026, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isCompatTag;
+function isCompatTag(tagName) {
+ return !!tagName && /^[a-z]/.test(tagName);
+}
+
+//# sourceMappingURL=isCompatTag.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509027, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = buildChildren;
+var _index = require("../../validators/generated/index.js");
+var _cleanJSXElementLiteralChild = require("../../utils/react/cleanJSXElementLiteralChild.js");
+function buildChildren(node) {
+ const elements = [];
+ for (let i = 0; i < node.children.length; i++) {
+ let child = node.children[i];
+ if ((0, _index.isJSXText)(child)) {
+ (0, _cleanJSXElementLiteralChild.default)(child, elements);
+ continue;
+ }
+ if ((0, _index.isJSXExpressionContainer)(child)) child = child.expression;
+ if ((0, _index.isJSXEmptyExpression)(child)) continue;
+ elements.push(child);
+ }
+ return elements;
+}
+
+//# sourceMappingURL=buildChildren.js.map
+
+}, function(modId) { var map = {"../../validators/generated/index.js":1771034509023,"../../utils/react/cleanJSXElementLiteralChild.js":1771034509028}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509028, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cleanJSXElementLiteralChild;
+var _index = require("../../builders/generated/index.js");
+var _index2 = require("../../index.js");
+function cleanJSXElementLiteralChild(child, args) {
+ const lines = child.value.split(/\r\n|\n|\r/);
+ let lastNonEmptyLine = 0;
+ for (let i = 0; i < lines.length; i++) {
+ if (/[^ \t]/.exec(lines[i])) {
+ lastNonEmptyLine = i;
+ }
+ }
+ let str = "";
+ for (let i = 0; i < lines.length; i++) {
+ const line = lines[i];
+ const isFirstLine = i === 0;
+ const isLastLine = i === lines.length - 1;
+ const isLastNonEmptyLine = i === lastNonEmptyLine;
+ let trimmedLine = line.replace(/\t/g, " ");
+ if (!isFirstLine) {
+ trimmedLine = trimmedLine.replace(/^ +/, "");
+ }
+ if (!isLastLine) {
+ trimmedLine = trimmedLine.replace(/ +$/, "");
+ }
+ if (trimmedLine) {
+ if (!isLastNonEmptyLine) {
+ trimmedLine += " ";
+ }
+ str += trimmedLine;
+ }
+ }
+ if (str) args.push((0, _index2.inherits)((0, _index.stringLiteral)(str), child));
+}
+
+//# sourceMappingURL=cleanJSXElementLiteralChild.js.map
+
+}, function(modId) { var map = {"../../builders/generated/index.js":1771034509029,"../../index.js":1771034509019}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509029, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+var _lowercase = require("./lowercase.js");
+Object.keys(_lowercase).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _lowercase[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _lowercase[key];
+ }
+ });
+});
+var _uppercase = require("./uppercase.js");
+Object.keys(_uppercase).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _uppercase[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _uppercase[key];
+ }
+ });
+});
+
+//# sourceMappingURL=index.js.map
+
+}, function(modId) { var map = {"./lowercase.js":1771034509030,"./uppercase.js":1771034509047}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509030, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.anyTypeAnnotation = anyTypeAnnotation;
+exports.argumentPlaceholder = argumentPlaceholder;
+exports.arrayExpression = arrayExpression;
+exports.arrayPattern = arrayPattern;
+exports.arrayTypeAnnotation = arrayTypeAnnotation;
+exports.arrowFunctionExpression = arrowFunctionExpression;
+exports.assignmentExpression = assignmentExpression;
+exports.assignmentPattern = assignmentPattern;
+exports.awaitExpression = awaitExpression;
+exports.bigIntLiteral = bigIntLiteral;
+exports.binaryExpression = binaryExpression;
+exports.bindExpression = bindExpression;
+exports.blockStatement = blockStatement;
+exports.booleanLiteral = booleanLiteral;
+exports.booleanLiteralTypeAnnotation = booleanLiteralTypeAnnotation;
+exports.booleanTypeAnnotation = booleanTypeAnnotation;
+exports.breakStatement = breakStatement;
+exports.callExpression = callExpression;
+exports.catchClause = catchClause;
+exports.classAccessorProperty = classAccessorProperty;
+exports.classBody = classBody;
+exports.classDeclaration = classDeclaration;
+exports.classExpression = classExpression;
+exports.classImplements = classImplements;
+exports.classMethod = classMethod;
+exports.classPrivateMethod = classPrivateMethod;
+exports.classPrivateProperty = classPrivateProperty;
+exports.classProperty = classProperty;
+exports.conditionalExpression = conditionalExpression;
+exports.continueStatement = continueStatement;
+exports.debuggerStatement = debuggerStatement;
+exports.decimalLiteral = decimalLiteral;
+exports.declareClass = declareClass;
+exports.declareExportAllDeclaration = declareExportAllDeclaration;
+exports.declareExportDeclaration = declareExportDeclaration;
+exports.declareFunction = declareFunction;
+exports.declareInterface = declareInterface;
+exports.declareModule = declareModule;
+exports.declareModuleExports = declareModuleExports;
+exports.declareOpaqueType = declareOpaqueType;
+exports.declareTypeAlias = declareTypeAlias;
+exports.declareVariable = declareVariable;
+exports.declaredPredicate = declaredPredicate;
+exports.decorator = decorator;
+exports.directive = directive;
+exports.directiveLiteral = directiveLiteral;
+exports.doExpression = doExpression;
+exports.doWhileStatement = doWhileStatement;
+exports.emptyStatement = emptyStatement;
+exports.emptyTypeAnnotation = emptyTypeAnnotation;
+exports.enumBooleanBody = enumBooleanBody;
+exports.enumBooleanMember = enumBooleanMember;
+exports.enumDeclaration = enumDeclaration;
+exports.enumDefaultedMember = enumDefaultedMember;
+exports.enumNumberBody = enumNumberBody;
+exports.enumNumberMember = enumNumberMember;
+exports.enumStringBody = enumStringBody;
+exports.enumStringMember = enumStringMember;
+exports.enumSymbolBody = enumSymbolBody;
+exports.existsTypeAnnotation = existsTypeAnnotation;
+exports.exportAllDeclaration = exportAllDeclaration;
+exports.exportDefaultDeclaration = exportDefaultDeclaration;
+exports.exportDefaultSpecifier = exportDefaultSpecifier;
+exports.exportNamedDeclaration = exportNamedDeclaration;
+exports.exportNamespaceSpecifier = exportNamespaceSpecifier;
+exports.exportSpecifier = exportSpecifier;
+exports.expressionStatement = expressionStatement;
+exports.file = file;
+exports.forInStatement = forInStatement;
+exports.forOfStatement = forOfStatement;
+exports.forStatement = forStatement;
+exports.functionDeclaration = functionDeclaration;
+exports.functionExpression = functionExpression;
+exports.functionTypeAnnotation = functionTypeAnnotation;
+exports.functionTypeParam = functionTypeParam;
+exports.genericTypeAnnotation = genericTypeAnnotation;
+exports.identifier = identifier;
+exports.ifStatement = ifStatement;
+exports.import = _import;
+exports.importAttribute = importAttribute;
+exports.importDeclaration = importDeclaration;
+exports.importDefaultSpecifier = importDefaultSpecifier;
+exports.importExpression = importExpression;
+exports.importNamespaceSpecifier = importNamespaceSpecifier;
+exports.importSpecifier = importSpecifier;
+exports.indexedAccessType = indexedAccessType;
+exports.inferredPredicate = inferredPredicate;
+exports.interfaceDeclaration = interfaceDeclaration;
+exports.interfaceExtends = interfaceExtends;
+exports.interfaceTypeAnnotation = interfaceTypeAnnotation;
+exports.interpreterDirective = interpreterDirective;
+exports.intersectionTypeAnnotation = intersectionTypeAnnotation;
+exports.jSXAttribute = exports.jsxAttribute = jsxAttribute;
+exports.jSXClosingElement = exports.jsxClosingElement = jsxClosingElement;
+exports.jSXClosingFragment = exports.jsxClosingFragment = jsxClosingFragment;
+exports.jSXElement = exports.jsxElement = jsxElement;
+exports.jSXEmptyExpression = exports.jsxEmptyExpression = jsxEmptyExpression;
+exports.jSXExpressionContainer = exports.jsxExpressionContainer = jsxExpressionContainer;
+exports.jSXFragment = exports.jsxFragment = jsxFragment;
+exports.jSXIdentifier = exports.jsxIdentifier = jsxIdentifier;
+exports.jSXMemberExpression = exports.jsxMemberExpression = jsxMemberExpression;
+exports.jSXNamespacedName = exports.jsxNamespacedName = jsxNamespacedName;
+exports.jSXOpeningElement = exports.jsxOpeningElement = jsxOpeningElement;
+exports.jSXOpeningFragment = exports.jsxOpeningFragment = jsxOpeningFragment;
+exports.jSXSpreadAttribute = exports.jsxSpreadAttribute = jsxSpreadAttribute;
+exports.jSXSpreadChild = exports.jsxSpreadChild = jsxSpreadChild;
+exports.jSXText = exports.jsxText = jsxText;
+exports.labeledStatement = labeledStatement;
+exports.logicalExpression = logicalExpression;
+exports.memberExpression = memberExpression;
+exports.metaProperty = metaProperty;
+exports.mixedTypeAnnotation = mixedTypeAnnotation;
+exports.moduleExpression = moduleExpression;
+exports.newExpression = newExpression;
+exports.noop = noop;
+exports.nullLiteral = nullLiteral;
+exports.nullLiteralTypeAnnotation = nullLiteralTypeAnnotation;
+exports.nullableTypeAnnotation = nullableTypeAnnotation;
+exports.numberLiteral = NumberLiteral;
+exports.numberLiteralTypeAnnotation = numberLiteralTypeAnnotation;
+exports.numberTypeAnnotation = numberTypeAnnotation;
+exports.numericLiteral = numericLiteral;
+exports.objectExpression = objectExpression;
+exports.objectMethod = objectMethod;
+exports.objectPattern = objectPattern;
+exports.objectProperty = objectProperty;
+exports.objectTypeAnnotation = objectTypeAnnotation;
+exports.objectTypeCallProperty = objectTypeCallProperty;
+exports.objectTypeIndexer = objectTypeIndexer;
+exports.objectTypeInternalSlot = objectTypeInternalSlot;
+exports.objectTypeProperty = objectTypeProperty;
+exports.objectTypeSpreadProperty = objectTypeSpreadProperty;
+exports.opaqueType = opaqueType;
+exports.optionalCallExpression = optionalCallExpression;
+exports.optionalIndexedAccessType = optionalIndexedAccessType;
+exports.optionalMemberExpression = optionalMemberExpression;
+exports.parenthesizedExpression = parenthesizedExpression;
+exports.pipelineBareFunction = pipelineBareFunction;
+exports.pipelinePrimaryTopicReference = pipelinePrimaryTopicReference;
+exports.pipelineTopicExpression = pipelineTopicExpression;
+exports.placeholder = placeholder;
+exports.privateName = privateName;
+exports.program = program;
+exports.qualifiedTypeIdentifier = qualifiedTypeIdentifier;
+exports.recordExpression = recordExpression;
+exports.regExpLiteral = regExpLiteral;
+exports.regexLiteral = RegexLiteral;
+exports.restElement = restElement;
+exports.restProperty = RestProperty;
+exports.returnStatement = returnStatement;
+exports.sequenceExpression = sequenceExpression;
+exports.spreadElement = spreadElement;
+exports.spreadProperty = SpreadProperty;
+exports.staticBlock = staticBlock;
+exports.stringLiteral = stringLiteral;
+exports.stringLiteralTypeAnnotation = stringLiteralTypeAnnotation;
+exports.stringTypeAnnotation = stringTypeAnnotation;
+exports.super = _super;
+exports.switchCase = switchCase;
+exports.switchStatement = switchStatement;
+exports.symbolTypeAnnotation = symbolTypeAnnotation;
+exports.taggedTemplateExpression = taggedTemplateExpression;
+exports.templateElement = templateElement;
+exports.templateLiteral = templateLiteral;
+exports.thisExpression = thisExpression;
+exports.thisTypeAnnotation = thisTypeAnnotation;
+exports.throwStatement = throwStatement;
+exports.topicReference = topicReference;
+exports.tryStatement = tryStatement;
+exports.tSAnyKeyword = exports.tsAnyKeyword = tsAnyKeyword;
+exports.tSArrayType = exports.tsArrayType = tsArrayType;
+exports.tSAsExpression = exports.tsAsExpression = tsAsExpression;
+exports.tSBigIntKeyword = exports.tsBigIntKeyword = tsBigIntKeyword;
+exports.tSBooleanKeyword = exports.tsBooleanKeyword = tsBooleanKeyword;
+exports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = tsCallSignatureDeclaration;
+exports.tSConditionalType = exports.tsConditionalType = tsConditionalType;
+exports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = tsConstructSignatureDeclaration;
+exports.tSConstructorType = exports.tsConstructorType = tsConstructorType;
+exports.tSDeclareFunction = exports.tsDeclareFunction = tsDeclareFunction;
+exports.tSDeclareMethod = exports.tsDeclareMethod = tsDeclareMethod;
+exports.tSEnumBody = exports.tsEnumBody = tsEnumBody;
+exports.tSEnumDeclaration = exports.tsEnumDeclaration = tsEnumDeclaration;
+exports.tSEnumMember = exports.tsEnumMember = tsEnumMember;
+exports.tSExportAssignment = exports.tsExportAssignment = tsExportAssignment;
+exports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = tsExpressionWithTypeArguments;
+exports.tSExternalModuleReference = exports.tsExternalModuleReference = tsExternalModuleReference;
+exports.tSFunctionType = exports.tsFunctionType = tsFunctionType;
+exports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = tsImportEqualsDeclaration;
+exports.tSImportType = exports.tsImportType = tsImportType;
+exports.tSIndexSignature = exports.tsIndexSignature = tsIndexSignature;
+exports.tSIndexedAccessType = exports.tsIndexedAccessType = tsIndexedAccessType;
+exports.tSInferType = exports.tsInferType = tsInferType;
+exports.tSInstantiationExpression = exports.tsInstantiationExpression = tsInstantiationExpression;
+exports.tSInterfaceBody = exports.tsInterfaceBody = tsInterfaceBody;
+exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = tsInterfaceDeclaration;
+exports.tSIntersectionType = exports.tsIntersectionType = tsIntersectionType;
+exports.tSIntrinsicKeyword = exports.tsIntrinsicKeyword = tsIntrinsicKeyword;
+exports.tSLiteralType = exports.tsLiteralType = tsLiteralType;
+exports.tSMappedType = exports.tsMappedType = tsMappedType;
+exports.tSMethodSignature = exports.tsMethodSignature = tsMethodSignature;
+exports.tSModuleBlock = exports.tsModuleBlock = tsModuleBlock;
+exports.tSModuleDeclaration = exports.tsModuleDeclaration = tsModuleDeclaration;
+exports.tSNamedTupleMember = exports.tsNamedTupleMember = tsNamedTupleMember;
+exports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = tsNamespaceExportDeclaration;
+exports.tSNeverKeyword = exports.tsNeverKeyword = tsNeverKeyword;
+exports.tSNonNullExpression = exports.tsNonNullExpression = tsNonNullExpression;
+exports.tSNullKeyword = exports.tsNullKeyword = tsNullKeyword;
+exports.tSNumberKeyword = exports.tsNumberKeyword = tsNumberKeyword;
+exports.tSObjectKeyword = exports.tsObjectKeyword = tsObjectKeyword;
+exports.tSOptionalType = exports.tsOptionalType = tsOptionalType;
+exports.tSParameterProperty = exports.tsParameterProperty = tsParameterProperty;
+exports.tSParenthesizedType = exports.tsParenthesizedType = tsParenthesizedType;
+exports.tSPropertySignature = exports.tsPropertySignature = tsPropertySignature;
+exports.tSQualifiedName = exports.tsQualifiedName = tsQualifiedName;
+exports.tSRestType = exports.tsRestType = tsRestType;
+exports.tSSatisfiesExpression = exports.tsSatisfiesExpression = tsSatisfiesExpression;
+exports.tSStringKeyword = exports.tsStringKeyword = tsStringKeyword;
+exports.tSSymbolKeyword = exports.tsSymbolKeyword = tsSymbolKeyword;
+exports.tSTemplateLiteralType = exports.tsTemplateLiteralType = tsTemplateLiteralType;
+exports.tSThisType = exports.tsThisType = tsThisType;
+exports.tSTupleType = exports.tsTupleType = tsTupleType;
+exports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = tsTypeAliasDeclaration;
+exports.tSTypeAnnotation = exports.tsTypeAnnotation = tsTypeAnnotation;
+exports.tSTypeAssertion = exports.tsTypeAssertion = tsTypeAssertion;
+exports.tSTypeLiteral = exports.tsTypeLiteral = tsTypeLiteral;
+exports.tSTypeOperator = exports.tsTypeOperator = tsTypeOperator;
+exports.tSTypeParameter = exports.tsTypeParameter = tsTypeParameter;
+exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = tsTypeParameterDeclaration;
+exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = tsTypeParameterInstantiation;
+exports.tSTypePredicate = exports.tsTypePredicate = tsTypePredicate;
+exports.tSTypeQuery = exports.tsTypeQuery = tsTypeQuery;
+exports.tSTypeReference = exports.tsTypeReference = tsTypeReference;
+exports.tSUndefinedKeyword = exports.tsUndefinedKeyword = tsUndefinedKeyword;
+exports.tSUnionType = exports.tsUnionType = tsUnionType;
+exports.tSUnknownKeyword = exports.tsUnknownKeyword = tsUnknownKeyword;
+exports.tSVoidKeyword = exports.tsVoidKeyword = tsVoidKeyword;
+exports.tupleExpression = tupleExpression;
+exports.tupleTypeAnnotation = tupleTypeAnnotation;
+exports.typeAlias = typeAlias;
+exports.typeAnnotation = typeAnnotation;
+exports.typeCastExpression = typeCastExpression;
+exports.typeParameter = typeParameter;
+exports.typeParameterDeclaration = typeParameterDeclaration;
+exports.typeParameterInstantiation = typeParameterInstantiation;
+exports.typeofTypeAnnotation = typeofTypeAnnotation;
+exports.unaryExpression = unaryExpression;
+exports.unionTypeAnnotation = unionTypeAnnotation;
+exports.updateExpression = updateExpression;
+exports.v8IntrinsicIdentifier = v8IntrinsicIdentifier;
+exports.variableDeclaration = variableDeclaration;
+exports.variableDeclarator = variableDeclarator;
+exports.variance = variance;
+exports.voidPattern = voidPattern;
+exports.voidTypeAnnotation = voidTypeAnnotation;
+exports.whileStatement = whileStatement;
+exports.withStatement = withStatement;
+exports.yieldExpression = yieldExpression;
+var _validate = require("../../validators/validate.js");
+var _deprecationWarning = require("../../utils/deprecationWarning.js");
+var utils = require("../../definitions/utils.js");
+const {
+ validateInternal: validate
+} = _validate;
+const {
+ NODE_FIELDS
+} = utils;
+function bigIntLiteral(value) {
+ if (typeof value === "bigint") {
+ value = value.toString();
+ }
+ const node = {
+ type: "BigIntLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.BigIntLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function arrayExpression(elements = []) {
+ const node = {
+ type: "ArrayExpression",
+ elements
+ };
+ const defs = NODE_FIELDS.ArrayExpression;
+ validate(defs.elements, node, "elements", elements, 1);
+ return node;
+}
+function assignmentExpression(operator, left, right) {
+ const node = {
+ type: "AssignmentExpression",
+ operator,
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.AssignmentExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function binaryExpression(operator, left, right) {
+ const node = {
+ type: "BinaryExpression",
+ operator,
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.BinaryExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function interpreterDirective(value) {
+ const node = {
+ type: "InterpreterDirective",
+ value
+ };
+ const defs = NODE_FIELDS.InterpreterDirective;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function directive(value) {
+ const node = {
+ type: "Directive",
+ value
+ };
+ const defs = NODE_FIELDS.Directive;
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function directiveLiteral(value) {
+ const node = {
+ type: "DirectiveLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.DirectiveLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function blockStatement(body, directives = []) {
+ const node = {
+ type: "BlockStatement",
+ body,
+ directives
+ };
+ const defs = NODE_FIELDS.BlockStatement;
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.directives, node, "directives", directives, 1);
+ return node;
+}
+function breakStatement(label = null) {
+ const node = {
+ type: "BreakStatement",
+ label
+ };
+ const defs = NODE_FIELDS.BreakStatement;
+ validate(defs.label, node, "label", label, 1);
+ return node;
+}
+function callExpression(callee, _arguments) {
+ const node = {
+ type: "CallExpression",
+ callee,
+ arguments: _arguments
+ };
+ const defs = NODE_FIELDS.CallExpression;
+ validate(defs.callee, node, "callee", callee, 1);
+ validate(defs.arguments, node, "arguments", _arguments, 1);
+ return node;
+}
+function catchClause(param = null, body) {
+ const node = {
+ type: "CatchClause",
+ param,
+ body
+ };
+ const defs = NODE_FIELDS.CatchClause;
+ validate(defs.param, node, "param", param, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function conditionalExpression(test, consequent, alternate) {
+ const node = {
+ type: "ConditionalExpression",
+ test,
+ consequent,
+ alternate
+ };
+ const defs = NODE_FIELDS.ConditionalExpression;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.consequent, node, "consequent", consequent, 1);
+ validate(defs.alternate, node, "alternate", alternate, 1);
+ return node;
+}
+function continueStatement(label = null) {
+ const node = {
+ type: "ContinueStatement",
+ label
+ };
+ const defs = NODE_FIELDS.ContinueStatement;
+ validate(defs.label, node, "label", label, 1);
+ return node;
+}
+function debuggerStatement() {
+ return {
+ type: "DebuggerStatement"
+ };
+}
+function doWhileStatement(test, body) {
+ const node = {
+ type: "DoWhileStatement",
+ test,
+ body
+ };
+ const defs = NODE_FIELDS.DoWhileStatement;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function emptyStatement() {
+ return {
+ type: "EmptyStatement"
+ };
+}
+function expressionStatement(expression) {
+ const node = {
+ type: "ExpressionStatement",
+ expression
+ };
+ const defs = NODE_FIELDS.ExpressionStatement;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function file(program, comments = null, tokens = null) {
+ const node = {
+ type: "File",
+ program,
+ comments,
+ tokens
+ };
+ const defs = NODE_FIELDS.File;
+ validate(defs.program, node, "program", program, 1);
+ validate(defs.comments, node, "comments", comments, 1);
+ validate(defs.tokens, node, "tokens", tokens);
+ return node;
+}
+function forInStatement(left, right, body) {
+ const node = {
+ type: "ForInStatement",
+ left,
+ right,
+ body
+ };
+ const defs = NODE_FIELDS.ForInStatement;
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function forStatement(init = null, test = null, update = null, body) {
+ const node = {
+ type: "ForStatement",
+ init,
+ test,
+ update,
+ body
+ };
+ const defs = NODE_FIELDS.ForStatement;
+ validate(defs.init, node, "init", init, 1);
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.update, node, "update", update, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function functionDeclaration(id = null, params, body, generator = false, async = false) {
+ const node = {
+ type: "FunctionDeclaration",
+ id,
+ params,
+ body,
+ generator,
+ async
+ };
+ const defs = NODE_FIELDS.FunctionDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.generator, node, "generator", generator);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function functionExpression(id = null, params, body, generator = false, async = false) {
+ const node = {
+ type: "FunctionExpression",
+ id,
+ params,
+ body,
+ generator,
+ async
+ };
+ const defs = NODE_FIELDS.FunctionExpression;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.generator, node, "generator", generator);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function identifier(name) {
+ const node = {
+ type: "Identifier",
+ name
+ };
+ const defs = NODE_FIELDS.Identifier;
+ validate(defs.name, node, "name", name);
+ return node;
+}
+function ifStatement(test, consequent, alternate = null) {
+ const node = {
+ type: "IfStatement",
+ test,
+ consequent,
+ alternate
+ };
+ const defs = NODE_FIELDS.IfStatement;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.consequent, node, "consequent", consequent, 1);
+ validate(defs.alternate, node, "alternate", alternate, 1);
+ return node;
+}
+function labeledStatement(label, body) {
+ const node = {
+ type: "LabeledStatement",
+ label,
+ body
+ };
+ const defs = NODE_FIELDS.LabeledStatement;
+ validate(defs.label, node, "label", label, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function stringLiteral(value) {
+ const node = {
+ type: "StringLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.StringLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function numericLiteral(value) {
+ const node = {
+ type: "NumericLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.NumericLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function nullLiteral() {
+ return {
+ type: "NullLiteral"
+ };
+}
+function booleanLiteral(value) {
+ const node = {
+ type: "BooleanLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.BooleanLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function regExpLiteral(pattern, flags = "") {
+ const node = {
+ type: "RegExpLiteral",
+ pattern,
+ flags
+ };
+ const defs = NODE_FIELDS.RegExpLiteral;
+ validate(defs.pattern, node, "pattern", pattern);
+ validate(defs.flags, node, "flags", flags);
+ return node;
+}
+function logicalExpression(operator, left, right) {
+ const node = {
+ type: "LogicalExpression",
+ operator,
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.LogicalExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function memberExpression(object, property, computed = false, optional = null) {
+ const node = {
+ type: "MemberExpression",
+ object,
+ property,
+ computed,
+ optional
+ };
+ const defs = NODE_FIELDS.MemberExpression;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.property, node, "property", property, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.optional, node, "optional", optional);
+ return node;
+}
+function newExpression(callee, _arguments) {
+ const node = {
+ type: "NewExpression",
+ callee,
+ arguments: _arguments
+ };
+ const defs = NODE_FIELDS.NewExpression;
+ validate(defs.callee, node, "callee", callee, 1);
+ validate(defs.arguments, node, "arguments", _arguments, 1);
+ return node;
+}
+function program(body, directives = [], sourceType = "script", interpreter = null) {
+ const node = {
+ type: "Program",
+ body,
+ directives,
+ sourceType,
+ interpreter
+ };
+ const defs = NODE_FIELDS.Program;
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.directives, node, "directives", directives, 1);
+ validate(defs.sourceType, node, "sourceType", sourceType);
+ validate(defs.interpreter, node, "interpreter", interpreter, 1);
+ return node;
+}
+function objectExpression(properties) {
+ const node = {
+ type: "ObjectExpression",
+ properties
+ };
+ const defs = NODE_FIELDS.ObjectExpression;
+ validate(defs.properties, node, "properties", properties, 1);
+ return node;
+}
+function objectMethod(kind = "method", key, params, body, computed = false, generator = false, async = false) {
+ const node = {
+ type: "ObjectMethod",
+ kind,
+ key,
+ params,
+ body,
+ computed,
+ generator,
+ async
+ };
+ const defs = NODE_FIELDS.ObjectMethod;
+ validate(defs.kind, node, "kind", kind);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.generator, node, "generator", generator);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function objectProperty(key, value, computed = false, shorthand = false, decorators = null) {
+ const node = {
+ type: "ObjectProperty",
+ key,
+ value,
+ computed,
+ shorthand,
+ decorators
+ };
+ const defs = NODE_FIELDS.ObjectProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.shorthand, node, "shorthand", shorthand);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ return node;
+}
+function restElement(argument) {
+ const node = {
+ type: "RestElement",
+ argument
+ };
+ const defs = NODE_FIELDS.RestElement;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function returnStatement(argument = null) {
+ const node = {
+ type: "ReturnStatement",
+ argument
+ };
+ const defs = NODE_FIELDS.ReturnStatement;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function sequenceExpression(expressions) {
+ const node = {
+ type: "SequenceExpression",
+ expressions
+ };
+ const defs = NODE_FIELDS.SequenceExpression;
+ validate(defs.expressions, node, "expressions", expressions, 1);
+ return node;
+}
+function parenthesizedExpression(expression) {
+ const node = {
+ type: "ParenthesizedExpression",
+ expression
+ };
+ const defs = NODE_FIELDS.ParenthesizedExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function switchCase(test = null, consequent) {
+ const node = {
+ type: "SwitchCase",
+ test,
+ consequent
+ };
+ const defs = NODE_FIELDS.SwitchCase;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.consequent, node, "consequent", consequent, 1);
+ return node;
+}
+function switchStatement(discriminant, cases) {
+ const node = {
+ type: "SwitchStatement",
+ discriminant,
+ cases
+ };
+ const defs = NODE_FIELDS.SwitchStatement;
+ validate(defs.discriminant, node, "discriminant", discriminant, 1);
+ validate(defs.cases, node, "cases", cases, 1);
+ return node;
+}
+function thisExpression() {
+ return {
+ type: "ThisExpression"
+ };
+}
+function throwStatement(argument) {
+ const node = {
+ type: "ThrowStatement",
+ argument
+ };
+ const defs = NODE_FIELDS.ThrowStatement;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function tryStatement(block, handler = null, finalizer = null) {
+ const node = {
+ type: "TryStatement",
+ block,
+ handler,
+ finalizer
+ };
+ const defs = NODE_FIELDS.TryStatement;
+ validate(defs.block, node, "block", block, 1);
+ validate(defs.handler, node, "handler", handler, 1);
+ validate(defs.finalizer, node, "finalizer", finalizer, 1);
+ return node;
+}
+function unaryExpression(operator, argument, prefix = true) {
+ const node = {
+ type: "UnaryExpression",
+ operator,
+ argument,
+ prefix
+ };
+ const defs = NODE_FIELDS.UnaryExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.argument, node, "argument", argument, 1);
+ validate(defs.prefix, node, "prefix", prefix);
+ return node;
+}
+function updateExpression(operator, argument, prefix = false) {
+ const node = {
+ type: "UpdateExpression",
+ operator,
+ argument,
+ prefix
+ };
+ const defs = NODE_FIELDS.UpdateExpression;
+ validate(defs.operator, node, "operator", operator);
+ validate(defs.argument, node, "argument", argument, 1);
+ validate(defs.prefix, node, "prefix", prefix);
+ return node;
+}
+function variableDeclaration(kind, declarations) {
+ const node = {
+ type: "VariableDeclaration",
+ kind,
+ declarations
+ };
+ const defs = NODE_FIELDS.VariableDeclaration;
+ validate(defs.kind, node, "kind", kind);
+ validate(defs.declarations, node, "declarations", declarations, 1);
+ return node;
+}
+function variableDeclarator(id, init = null) {
+ const node = {
+ type: "VariableDeclarator",
+ id,
+ init
+ };
+ const defs = NODE_FIELDS.VariableDeclarator;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.init, node, "init", init, 1);
+ return node;
+}
+function whileStatement(test, body) {
+ const node = {
+ type: "WhileStatement",
+ test,
+ body
+ };
+ const defs = NODE_FIELDS.WhileStatement;
+ validate(defs.test, node, "test", test, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function withStatement(object, body) {
+ const node = {
+ type: "WithStatement",
+ object,
+ body
+ };
+ const defs = NODE_FIELDS.WithStatement;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function assignmentPattern(left, right) {
+ const node = {
+ type: "AssignmentPattern",
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.AssignmentPattern;
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function arrayPattern(elements) {
+ const node = {
+ type: "ArrayPattern",
+ elements
+ };
+ const defs = NODE_FIELDS.ArrayPattern;
+ validate(defs.elements, node, "elements", elements, 1);
+ return node;
+}
+function arrowFunctionExpression(params, body, async = false) {
+ const node = {
+ type: "ArrowFunctionExpression",
+ params,
+ body,
+ async,
+ expression: null
+ };
+ const defs = NODE_FIELDS.ArrowFunctionExpression;
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function classBody(body) {
+ const node = {
+ type: "ClassBody",
+ body
+ };
+ const defs = NODE_FIELDS.ClassBody;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function classExpression(id = null, superClass = null, body, decorators = null) {
+ const node = {
+ type: "ClassExpression",
+ id,
+ superClass,
+ body,
+ decorators
+ };
+ const defs = NODE_FIELDS.ClassExpression;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.superClass, node, "superClass", superClass, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ return node;
+}
+function classDeclaration(id = null, superClass = null, body, decorators = null) {
+ const node = {
+ type: "ClassDeclaration",
+ id,
+ superClass,
+ body,
+ decorators
+ };
+ const defs = NODE_FIELDS.ClassDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.superClass, node, "superClass", superClass, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ return node;
+}
+function exportAllDeclaration(source, attributes = null) {
+ const node = {
+ type: "ExportAllDeclaration",
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.ExportAllDeclaration;
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function exportDefaultDeclaration(declaration) {
+ const node = {
+ type: "ExportDefaultDeclaration",
+ declaration
+ };
+ const defs = NODE_FIELDS.ExportDefaultDeclaration;
+ validate(defs.declaration, node, "declaration", declaration, 1);
+ return node;
+}
+function exportNamedDeclaration(declaration = null, specifiers = [], source = null, attributes = null) {
+ const node = {
+ type: "ExportNamedDeclaration",
+ declaration,
+ specifiers,
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.ExportNamedDeclaration;
+ validate(defs.declaration, node, "declaration", declaration, 1);
+ validate(defs.specifiers, node, "specifiers", specifiers, 1);
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function exportSpecifier(local, exported) {
+ const node = {
+ type: "ExportSpecifier",
+ local,
+ exported
+ };
+ const defs = NODE_FIELDS.ExportSpecifier;
+ validate(defs.local, node, "local", local, 1);
+ validate(defs.exported, node, "exported", exported, 1);
+ return node;
+}
+function forOfStatement(left, right, body, _await = false) {
+ const node = {
+ type: "ForOfStatement",
+ left,
+ right,
+ body,
+ await: _await
+ };
+ const defs = NODE_FIELDS.ForOfStatement;
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.await, node, "await", _await);
+ return node;
+}
+function importDeclaration(specifiers, source, attributes = null) {
+ const node = {
+ type: "ImportDeclaration",
+ specifiers,
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.ImportDeclaration;
+ validate(defs.specifiers, node, "specifiers", specifiers, 1);
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function importDefaultSpecifier(local) {
+ const node = {
+ type: "ImportDefaultSpecifier",
+ local
+ };
+ const defs = NODE_FIELDS.ImportDefaultSpecifier;
+ validate(defs.local, node, "local", local, 1);
+ return node;
+}
+function importNamespaceSpecifier(local) {
+ const node = {
+ type: "ImportNamespaceSpecifier",
+ local
+ };
+ const defs = NODE_FIELDS.ImportNamespaceSpecifier;
+ validate(defs.local, node, "local", local, 1);
+ return node;
+}
+function importSpecifier(local, imported) {
+ const node = {
+ type: "ImportSpecifier",
+ local,
+ imported
+ };
+ const defs = NODE_FIELDS.ImportSpecifier;
+ validate(defs.local, node, "local", local, 1);
+ validate(defs.imported, node, "imported", imported, 1);
+ return node;
+}
+function importExpression(source, options = null) {
+ const node = {
+ type: "ImportExpression",
+ source,
+ options
+ };
+ const defs = NODE_FIELDS.ImportExpression;
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.options, node, "options", options, 1);
+ return node;
+}
+function metaProperty(meta, property) {
+ const node = {
+ type: "MetaProperty",
+ meta,
+ property
+ };
+ const defs = NODE_FIELDS.MetaProperty;
+ validate(defs.meta, node, "meta", meta, 1);
+ validate(defs.property, node, "property", property, 1);
+ return node;
+}
+function classMethod(kind = "method", key, params, body, computed = false, _static = false, generator = false, async = false) {
+ const node = {
+ type: "ClassMethod",
+ kind,
+ key,
+ params,
+ body,
+ computed,
+ static: _static,
+ generator,
+ async
+ };
+ const defs = NODE_FIELDS.ClassMethod;
+ validate(defs.kind, node, "kind", kind);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.static, node, "static", _static);
+ validate(defs.generator, node, "generator", generator);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function objectPattern(properties) {
+ const node = {
+ type: "ObjectPattern",
+ properties
+ };
+ const defs = NODE_FIELDS.ObjectPattern;
+ validate(defs.properties, node, "properties", properties, 1);
+ return node;
+}
+function spreadElement(argument) {
+ const node = {
+ type: "SpreadElement",
+ argument
+ };
+ const defs = NODE_FIELDS.SpreadElement;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function _super() {
+ return {
+ type: "Super"
+ };
+}
+function taggedTemplateExpression(tag, quasi) {
+ const node = {
+ type: "TaggedTemplateExpression",
+ tag,
+ quasi
+ };
+ const defs = NODE_FIELDS.TaggedTemplateExpression;
+ validate(defs.tag, node, "tag", tag, 1);
+ validate(defs.quasi, node, "quasi", quasi, 1);
+ return node;
+}
+function templateElement(value, tail = false) {
+ const node = {
+ type: "TemplateElement",
+ value,
+ tail
+ };
+ const defs = NODE_FIELDS.TemplateElement;
+ validate(defs.value, node, "value", value);
+ validate(defs.tail, node, "tail", tail);
+ return node;
+}
+function templateLiteral(quasis, expressions) {
+ const node = {
+ type: "TemplateLiteral",
+ quasis,
+ expressions
+ };
+ const defs = NODE_FIELDS.TemplateLiteral;
+ validate(defs.quasis, node, "quasis", quasis, 1);
+ validate(defs.expressions, node, "expressions", expressions, 1);
+ return node;
+}
+function yieldExpression(argument = null, delegate = false) {
+ const node = {
+ type: "YieldExpression",
+ argument,
+ delegate
+ };
+ const defs = NODE_FIELDS.YieldExpression;
+ validate(defs.argument, node, "argument", argument, 1);
+ validate(defs.delegate, node, "delegate", delegate);
+ return node;
+}
+function awaitExpression(argument) {
+ const node = {
+ type: "AwaitExpression",
+ argument
+ };
+ const defs = NODE_FIELDS.AwaitExpression;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function _import() {
+ return {
+ type: "Import"
+ };
+}
+function exportNamespaceSpecifier(exported) {
+ const node = {
+ type: "ExportNamespaceSpecifier",
+ exported
+ };
+ const defs = NODE_FIELDS.ExportNamespaceSpecifier;
+ validate(defs.exported, node, "exported", exported, 1);
+ return node;
+}
+function optionalMemberExpression(object, property, computed = false, optional) {
+ const node = {
+ type: "OptionalMemberExpression",
+ object,
+ property,
+ computed,
+ optional
+ };
+ const defs = NODE_FIELDS.OptionalMemberExpression;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.property, node, "property", property, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.optional, node, "optional", optional);
+ return node;
+}
+function optionalCallExpression(callee, _arguments, optional) {
+ const node = {
+ type: "OptionalCallExpression",
+ callee,
+ arguments: _arguments,
+ optional
+ };
+ const defs = NODE_FIELDS.OptionalCallExpression;
+ validate(defs.callee, node, "callee", callee, 1);
+ validate(defs.arguments, node, "arguments", _arguments, 1);
+ validate(defs.optional, node, "optional", optional);
+ return node;
+}
+function classProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) {
+ const node = {
+ type: "ClassProperty",
+ key,
+ value,
+ typeAnnotation,
+ decorators,
+ computed,
+ static: _static
+ };
+ const defs = NODE_FIELDS.ClassProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.static, node, "static", _static);
+ return node;
+}
+function classAccessorProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) {
+ const node = {
+ type: "ClassAccessorProperty",
+ key,
+ value,
+ typeAnnotation,
+ decorators,
+ computed,
+ static: _static
+ };
+ const defs = NODE_FIELDS.ClassAccessorProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ validate(defs.computed, node, "computed", computed);
+ validate(defs.static, node, "static", _static);
+ return node;
+}
+function classPrivateProperty(key, value = null, decorators = null, _static = false) {
+ const node = {
+ type: "ClassPrivateProperty",
+ key,
+ value,
+ decorators,
+ static: _static
+ };
+ const defs = NODE_FIELDS.ClassPrivateProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ validate(defs.static, node, "static", _static);
+ return node;
+}
+function classPrivateMethod(kind = "method", key, params, body, _static = false) {
+ const node = {
+ type: "ClassPrivateMethod",
+ kind,
+ key,
+ params,
+ body,
+ static: _static
+ };
+ const defs = NODE_FIELDS.ClassPrivateMethod;
+ validate(defs.kind, node, "kind", kind);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.static, node, "static", _static);
+ return node;
+}
+function privateName(id) {
+ const node = {
+ type: "PrivateName",
+ id
+ };
+ const defs = NODE_FIELDS.PrivateName;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function staticBlock(body) {
+ const node = {
+ type: "StaticBlock",
+ body
+ };
+ const defs = NODE_FIELDS.StaticBlock;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function importAttribute(key, value) {
+ const node = {
+ type: "ImportAttribute",
+ key,
+ value
+ };
+ const defs = NODE_FIELDS.ImportAttribute;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function anyTypeAnnotation() {
+ return {
+ type: "AnyTypeAnnotation"
+ };
+}
+function arrayTypeAnnotation(elementType) {
+ const node = {
+ type: "ArrayTypeAnnotation",
+ elementType
+ };
+ const defs = NODE_FIELDS.ArrayTypeAnnotation;
+ validate(defs.elementType, node, "elementType", elementType, 1);
+ return node;
+}
+function booleanTypeAnnotation() {
+ return {
+ type: "BooleanTypeAnnotation"
+ };
+}
+function booleanLiteralTypeAnnotation(value) {
+ const node = {
+ type: "BooleanLiteralTypeAnnotation",
+ value
+ };
+ const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function nullLiteralTypeAnnotation() {
+ return {
+ type: "NullLiteralTypeAnnotation"
+ };
+}
+function classImplements(id, typeParameters = null) {
+ const node = {
+ type: "ClassImplements",
+ id,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.ClassImplements;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function declareClass(id, typeParameters = null, _extends = null, body) {
+ const node = {
+ type: "DeclareClass",
+ id,
+ typeParameters,
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.DeclareClass;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function declareFunction(id) {
+ const node = {
+ type: "DeclareFunction",
+ id
+ };
+ const defs = NODE_FIELDS.DeclareFunction;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function declareInterface(id, typeParameters = null, _extends = null, body) {
+ const node = {
+ type: "DeclareInterface",
+ id,
+ typeParameters,
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.DeclareInterface;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function declareModule(id, body, kind = null) {
+ const node = {
+ type: "DeclareModule",
+ id,
+ body,
+ kind
+ };
+ const defs = NODE_FIELDS.DeclareModule;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.kind, node, "kind", kind);
+ return node;
+}
+function declareModuleExports(typeAnnotation) {
+ const node = {
+ type: "DeclareModuleExports",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.DeclareModuleExports;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function declareTypeAlias(id, typeParameters = null, right) {
+ const node = {
+ type: "DeclareTypeAlias",
+ id,
+ typeParameters,
+ right
+ };
+ const defs = NODE_FIELDS.DeclareTypeAlias;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function declareOpaqueType(id, typeParameters = null, supertype = null) {
+ const node = {
+ type: "DeclareOpaqueType",
+ id,
+ typeParameters,
+ supertype
+ };
+ const defs = NODE_FIELDS.DeclareOpaqueType;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.supertype, node, "supertype", supertype, 1);
+ return node;
+}
+function declareVariable(id) {
+ const node = {
+ type: "DeclareVariable",
+ id
+ };
+ const defs = NODE_FIELDS.DeclareVariable;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function declareExportDeclaration(declaration = null, specifiers = null, source = null, attributes = null) {
+ const node = {
+ type: "DeclareExportDeclaration",
+ declaration,
+ specifiers,
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.DeclareExportDeclaration;
+ validate(defs.declaration, node, "declaration", declaration, 1);
+ validate(defs.specifiers, node, "specifiers", specifiers, 1);
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function declareExportAllDeclaration(source, attributes = null) {
+ const node = {
+ type: "DeclareExportAllDeclaration",
+ source,
+ attributes
+ };
+ const defs = NODE_FIELDS.DeclareExportAllDeclaration;
+ validate(defs.source, node, "source", source, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ return node;
+}
+function declaredPredicate(value) {
+ const node = {
+ type: "DeclaredPredicate",
+ value
+ };
+ const defs = NODE_FIELDS.DeclaredPredicate;
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function existsTypeAnnotation() {
+ return {
+ type: "ExistsTypeAnnotation"
+ };
+}
+function functionTypeAnnotation(typeParameters = null, params, rest = null, returnType) {
+ const node = {
+ type: "FunctionTypeAnnotation",
+ typeParameters,
+ params,
+ rest,
+ returnType
+ };
+ const defs = NODE_FIELDS.FunctionTypeAnnotation;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.rest, node, "rest", rest, 1);
+ validate(defs.returnType, node, "returnType", returnType, 1);
+ return node;
+}
+function functionTypeParam(name = null, typeAnnotation) {
+ const node = {
+ type: "FunctionTypeParam",
+ name,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.FunctionTypeParam;
+ validate(defs.name, node, "name", name, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function genericTypeAnnotation(id, typeParameters = null) {
+ const node = {
+ type: "GenericTypeAnnotation",
+ id,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.GenericTypeAnnotation;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function inferredPredicate() {
+ return {
+ type: "InferredPredicate"
+ };
+}
+function interfaceExtends(id, typeParameters = null) {
+ const node = {
+ type: "InterfaceExtends",
+ id,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.InterfaceExtends;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function interfaceDeclaration(id, typeParameters = null, _extends = null, body) {
+ const node = {
+ type: "InterfaceDeclaration",
+ id,
+ typeParameters,
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.InterfaceDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function interfaceTypeAnnotation(_extends = null, body) {
+ const node = {
+ type: "InterfaceTypeAnnotation",
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.InterfaceTypeAnnotation;
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function intersectionTypeAnnotation(types) {
+ const node = {
+ type: "IntersectionTypeAnnotation",
+ types
+ };
+ const defs = NODE_FIELDS.IntersectionTypeAnnotation;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function mixedTypeAnnotation() {
+ return {
+ type: "MixedTypeAnnotation"
+ };
+}
+function emptyTypeAnnotation() {
+ return {
+ type: "EmptyTypeAnnotation"
+ };
+}
+function nullableTypeAnnotation(typeAnnotation) {
+ const node = {
+ type: "NullableTypeAnnotation",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.NullableTypeAnnotation;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function numberLiteralTypeAnnotation(value) {
+ const node = {
+ type: "NumberLiteralTypeAnnotation",
+ value
+ };
+ const defs = NODE_FIELDS.NumberLiteralTypeAnnotation;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function numberTypeAnnotation() {
+ return {
+ type: "NumberTypeAnnotation"
+ };
+}
+function objectTypeAnnotation(properties, indexers = [], callProperties = [], internalSlots = [], exact = false) {
+ const node = {
+ type: "ObjectTypeAnnotation",
+ properties,
+ indexers,
+ callProperties,
+ internalSlots,
+ exact
+ };
+ const defs = NODE_FIELDS.ObjectTypeAnnotation;
+ validate(defs.properties, node, "properties", properties, 1);
+ validate(defs.indexers, node, "indexers", indexers, 1);
+ validate(defs.callProperties, node, "callProperties", callProperties, 1);
+ validate(defs.internalSlots, node, "internalSlots", internalSlots, 1);
+ validate(defs.exact, node, "exact", exact);
+ return node;
+}
+function objectTypeInternalSlot(id, value, optional, _static, method) {
+ const node = {
+ type: "ObjectTypeInternalSlot",
+ id,
+ value,
+ optional,
+ static: _static,
+ method
+ };
+ const defs = NODE_FIELDS.ObjectTypeInternalSlot;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.optional, node, "optional", optional);
+ validate(defs.static, node, "static", _static);
+ validate(defs.method, node, "method", method);
+ return node;
+}
+function objectTypeCallProperty(value) {
+ const node = {
+ type: "ObjectTypeCallProperty",
+ value,
+ static: null
+ };
+ const defs = NODE_FIELDS.ObjectTypeCallProperty;
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function objectTypeIndexer(id = null, key, value, variance = null) {
+ const node = {
+ type: "ObjectTypeIndexer",
+ id,
+ key,
+ value,
+ variance,
+ static: null
+ };
+ const defs = NODE_FIELDS.ObjectTypeIndexer;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.variance, node, "variance", variance, 1);
+ return node;
+}
+function objectTypeProperty(key, value, variance = null) {
+ const node = {
+ type: "ObjectTypeProperty",
+ key,
+ value,
+ variance,
+ kind: null,
+ method: null,
+ optional: null,
+ proto: null,
+ static: null
+ };
+ const defs = NODE_FIELDS.ObjectTypeProperty;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.value, node, "value", value, 1);
+ validate(defs.variance, node, "variance", variance, 1);
+ return node;
+}
+function objectTypeSpreadProperty(argument) {
+ const node = {
+ type: "ObjectTypeSpreadProperty",
+ argument
+ };
+ const defs = NODE_FIELDS.ObjectTypeSpreadProperty;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function opaqueType(id, typeParameters = null, supertype = null, impltype) {
+ const node = {
+ type: "OpaqueType",
+ id,
+ typeParameters,
+ supertype,
+ impltype
+ };
+ const defs = NODE_FIELDS.OpaqueType;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.supertype, node, "supertype", supertype, 1);
+ validate(defs.impltype, node, "impltype", impltype, 1);
+ return node;
+}
+function qualifiedTypeIdentifier(id, qualification) {
+ const node = {
+ type: "QualifiedTypeIdentifier",
+ id,
+ qualification
+ };
+ const defs = NODE_FIELDS.QualifiedTypeIdentifier;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.qualification, node, "qualification", qualification, 1);
+ return node;
+}
+function stringLiteralTypeAnnotation(value) {
+ const node = {
+ type: "StringLiteralTypeAnnotation",
+ value
+ };
+ const defs = NODE_FIELDS.StringLiteralTypeAnnotation;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function stringTypeAnnotation() {
+ return {
+ type: "StringTypeAnnotation"
+ };
+}
+function symbolTypeAnnotation() {
+ return {
+ type: "SymbolTypeAnnotation"
+ };
+}
+function thisTypeAnnotation() {
+ return {
+ type: "ThisTypeAnnotation"
+ };
+}
+function tupleTypeAnnotation(types) {
+ const node = {
+ type: "TupleTypeAnnotation",
+ types
+ };
+ const defs = NODE_FIELDS.TupleTypeAnnotation;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function typeofTypeAnnotation(argument) {
+ const node = {
+ type: "TypeofTypeAnnotation",
+ argument
+ };
+ const defs = NODE_FIELDS.TypeofTypeAnnotation;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function typeAlias(id, typeParameters = null, right) {
+ const node = {
+ type: "TypeAlias",
+ id,
+ typeParameters,
+ right
+ };
+ const defs = NODE_FIELDS.TypeAlias;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function typeAnnotation(typeAnnotation) {
+ const node = {
+ type: "TypeAnnotation",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TypeAnnotation;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function typeCastExpression(expression, typeAnnotation) {
+ const node = {
+ type: "TypeCastExpression",
+ expression,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TypeCastExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function typeParameter(bound = null, _default = null, variance = null) {
+ const node = {
+ type: "TypeParameter",
+ bound,
+ default: _default,
+ variance,
+ name: null
+ };
+ const defs = NODE_FIELDS.TypeParameter;
+ validate(defs.bound, node, "bound", bound, 1);
+ validate(defs.default, node, "default", _default, 1);
+ validate(defs.variance, node, "variance", variance, 1);
+ return node;
+}
+function typeParameterDeclaration(params) {
+ const node = {
+ type: "TypeParameterDeclaration",
+ params
+ };
+ const defs = NODE_FIELDS.TypeParameterDeclaration;
+ validate(defs.params, node, "params", params, 1);
+ return node;
+}
+function typeParameterInstantiation(params) {
+ const node = {
+ type: "TypeParameterInstantiation",
+ params
+ };
+ const defs = NODE_FIELDS.TypeParameterInstantiation;
+ validate(defs.params, node, "params", params, 1);
+ return node;
+}
+function unionTypeAnnotation(types) {
+ const node = {
+ type: "UnionTypeAnnotation",
+ types
+ };
+ const defs = NODE_FIELDS.UnionTypeAnnotation;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function variance(kind) {
+ const node = {
+ type: "Variance",
+ kind
+ };
+ const defs = NODE_FIELDS.Variance;
+ validate(defs.kind, node, "kind", kind);
+ return node;
+}
+function voidTypeAnnotation() {
+ return {
+ type: "VoidTypeAnnotation"
+ };
+}
+function enumDeclaration(id, body) {
+ const node = {
+ type: "EnumDeclaration",
+ id,
+ body
+ };
+ const defs = NODE_FIELDS.EnumDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function enumBooleanBody(members) {
+ const node = {
+ type: "EnumBooleanBody",
+ members,
+ explicitType: null,
+ hasUnknownMembers: null
+ };
+ const defs = NODE_FIELDS.EnumBooleanBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function enumNumberBody(members) {
+ const node = {
+ type: "EnumNumberBody",
+ members,
+ explicitType: null,
+ hasUnknownMembers: null
+ };
+ const defs = NODE_FIELDS.EnumNumberBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function enumStringBody(members) {
+ const node = {
+ type: "EnumStringBody",
+ members,
+ explicitType: null,
+ hasUnknownMembers: null
+ };
+ const defs = NODE_FIELDS.EnumStringBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function enumSymbolBody(members) {
+ const node = {
+ type: "EnumSymbolBody",
+ members,
+ hasUnknownMembers: null
+ };
+ const defs = NODE_FIELDS.EnumSymbolBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function enumBooleanMember(id) {
+ const node = {
+ type: "EnumBooleanMember",
+ id,
+ init: null
+ };
+ const defs = NODE_FIELDS.EnumBooleanMember;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function enumNumberMember(id, init) {
+ const node = {
+ type: "EnumNumberMember",
+ id,
+ init
+ };
+ const defs = NODE_FIELDS.EnumNumberMember;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.init, node, "init", init, 1);
+ return node;
+}
+function enumStringMember(id, init) {
+ const node = {
+ type: "EnumStringMember",
+ id,
+ init
+ };
+ const defs = NODE_FIELDS.EnumStringMember;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.init, node, "init", init, 1);
+ return node;
+}
+function enumDefaultedMember(id) {
+ const node = {
+ type: "EnumDefaultedMember",
+ id
+ };
+ const defs = NODE_FIELDS.EnumDefaultedMember;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function indexedAccessType(objectType, indexType) {
+ const node = {
+ type: "IndexedAccessType",
+ objectType,
+ indexType
+ };
+ const defs = NODE_FIELDS.IndexedAccessType;
+ validate(defs.objectType, node, "objectType", objectType, 1);
+ validate(defs.indexType, node, "indexType", indexType, 1);
+ return node;
+}
+function optionalIndexedAccessType(objectType, indexType) {
+ const node = {
+ type: "OptionalIndexedAccessType",
+ objectType,
+ indexType,
+ optional: null
+ };
+ const defs = NODE_FIELDS.OptionalIndexedAccessType;
+ validate(defs.objectType, node, "objectType", objectType, 1);
+ validate(defs.indexType, node, "indexType", indexType, 1);
+ return node;
+}
+function jsxAttribute(name, value = null) {
+ const node = {
+ type: "JSXAttribute",
+ name,
+ value
+ };
+ const defs = NODE_FIELDS.JSXAttribute;
+ validate(defs.name, node, "name", name, 1);
+ validate(defs.value, node, "value", value, 1);
+ return node;
+}
+function jsxClosingElement(name) {
+ const node = {
+ type: "JSXClosingElement",
+ name
+ };
+ const defs = NODE_FIELDS.JSXClosingElement;
+ validate(defs.name, node, "name", name, 1);
+ return node;
+}
+function jsxElement(openingElement, closingElement = null, children, selfClosing = null) {
+ const node = {
+ type: "JSXElement",
+ openingElement,
+ closingElement,
+ children,
+ selfClosing
+ };
+ const defs = NODE_FIELDS.JSXElement;
+ validate(defs.openingElement, node, "openingElement", openingElement, 1);
+ validate(defs.closingElement, node, "closingElement", closingElement, 1);
+ validate(defs.children, node, "children", children, 1);
+ validate(defs.selfClosing, node, "selfClosing", selfClosing);
+ return node;
+}
+function jsxEmptyExpression() {
+ return {
+ type: "JSXEmptyExpression"
+ };
+}
+function jsxExpressionContainer(expression) {
+ const node = {
+ type: "JSXExpressionContainer",
+ expression
+ };
+ const defs = NODE_FIELDS.JSXExpressionContainer;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function jsxSpreadChild(expression) {
+ const node = {
+ type: "JSXSpreadChild",
+ expression
+ };
+ const defs = NODE_FIELDS.JSXSpreadChild;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function jsxIdentifier(name) {
+ const node = {
+ type: "JSXIdentifier",
+ name
+ };
+ const defs = NODE_FIELDS.JSXIdentifier;
+ validate(defs.name, node, "name", name);
+ return node;
+}
+function jsxMemberExpression(object, property) {
+ const node = {
+ type: "JSXMemberExpression",
+ object,
+ property
+ };
+ const defs = NODE_FIELDS.JSXMemberExpression;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.property, node, "property", property, 1);
+ return node;
+}
+function jsxNamespacedName(namespace, name) {
+ const node = {
+ type: "JSXNamespacedName",
+ namespace,
+ name
+ };
+ const defs = NODE_FIELDS.JSXNamespacedName;
+ validate(defs.namespace, node, "namespace", namespace, 1);
+ validate(defs.name, node, "name", name, 1);
+ return node;
+}
+function jsxOpeningElement(name, attributes, selfClosing = false) {
+ const node = {
+ type: "JSXOpeningElement",
+ name,
+ attributes,
+ selfClosing
+ };
+ const defs = NODE_FIELDS.JSXOpeningElement;
+ validate(defs.name, node, "name", name, 1);
+ validate(defs.attributes, node, "attributes", attributes, 1);
+ validate(defs.selfClosing, node, "selfClosing", selfClosing);
+ return node;
+}
+function jsxSpreadAttribute(argument) {
+ const node = {
+ type: "JSXSpreadAttribute",
+ argument
+ };
+ const defs = NODE_FIELDS.JSXSpreadAttribute;
+ validate(defs.argument, node, "argument", argument, 1);
+ return node;
+}
+function jsxText(value) {
+ const node = {
+ type: "JSXText",
+ value
+ };
+ const defs = NODE_FIELDS.JSXText;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function jsxFragment(openingFragment, closingFragment, children) {
+ const node = {
+ type: "JSXFragment",
+ openingFragment,
+ closingFragment,
+ children
+ };
+ const defs = NODE_FIELDS.JSXFragment;
+ validate(defs.openingFragment, node, "openingFragment", openingFragment, 1);
+ validate(defs.closingFragment, node, "closingFragment", closingFragment, 1);
+ validate(defs.children, node, "children", children, 1);
+ return node;
+}
+function jsxOpeningFragment() {
+ return {
+ type: "JSXOpeningFragment"
+ };
+}
+function jsxClosingFragment() {
+ return {
+ type: "JSXClosingFragment"
+ };
+}
+function noop() {
+ return {
+ type: "Noop"
+ };
+}
+function placeholder(expectedNode, name) {
+ const node = {
+ type: "Placeholder",
+ expectedNode,
+ name
+ };
+ const defs = NODE_FIELDS.Placeholder;
+ validate(defs.expectedNode, node, "expectedNode", expectedNode);
+ validate(defs.name, node, "name", name, 1);
+ return node;
+}
+function v8IntrinsicIdentifier(name) {
+ const node = {
+ type: "V8IntrinsicIdentifier",
+ name
+ };
+ const defs = NODE_FIELDS.V8IntrinsicIdentifier;
+ validate(defs.name, node, "name", name);
+ return node;
+}
+function argumentPlaceholder() {
+ return {
+ type: "ArgumentPlaceholder"
+ };
+}
+function bindExpression(object, callee) {
+ const node = {
+ type: "BindExpression",
+ object,
+ callee
+ };
+ const defs = NODE_FIELDS.BindExpression;
+ validate(defs.object, node, "object", object, 1);
+ validate(defs.callee, node, "callee", callee, 1);
+ return node;
+}
+function decorator(expression) {
+ const node = {
+ type: "Decorator",
+ expression
+ };
+ const defs = NODE_FIELDS.Decorator;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function doExpression(body, async = false) {
+ const node = {
+ type: "DoExpression",
+ body,
+ async
+ };
+ const defs = NODE_FIELDS.DoExpression;
+ validate(defs.body, node, "body", body, 1);
+ validate(defs.async, node, "async", async);
+ return node;
+}
+function exportDefaultSpecifier(exported) {
+ const node = {
+ type: "ExportDefaultSpecifier",
+ exported
+ };
+ const defs = NODE_FIELDS.ExportDefaultSpecifier;
+ validate(defs.exported, node, "exported", exported, 1);
+ return node;
+}
+function recordExpression(properties) {
+ const node = {
+ type: "RecordExpression",
+ properties
+ };
+ const defs = NODE_FIELDS.RecordExpression;
+ validate(defs.properties, node, "properties", properties, 1);
+ return node;
+}
+function tupleExpression(elements = []) {
+ const node = {
+ type: "TupleExpression",
+ elements
+ };
+ const defs = NODE_FIELDS.TupleExpression;
+ validate(defs.elements, node, "elements", elements, 1);
+ return node;
+}
+function decimalLiteral(value) {
+ const node = {
+ type: "DecimalLiteral",
+ value
+ };
+ const defs = NODE_FIELDS.DecimalLiteral;
+ validate(defs.value, node, "value", value);
+ return node;
+}
+function moduleExpression(body) {
+ const node = {
+ type: "ModuleExpression",
+ body
+ };
+ const defs = NODE_FIELDS.ModuleExpression;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function topicReference() {
+ return {
+ type: "TopicReference"
+ };
+}
+function pipelineTopicExpression(expression) {
+ const node = {
+ type: "PipelineTopicExpression",
+ expression
+ };
+ const defs = NODE_FIELDS.PipelineTopicExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function pipelineBareFunction(callee) {
+ const node = {
+ type: "PipelineBareFunction",
+ callee
+ };
+ const defs = NODE_FIELDS.PipelineBareFunction;
+ validate(defs.callee, node, "callee", callee, 1);
+ return node;
+}
+function pipelinePrimaryTopicReference() {
+ return {
+ type: "PipelinePrimaryTopicReference"
+ };
+}
+function voidPattern() {
+ return {
+ type: "VoidPattern"
+ };
+}
+function tsParameterProperty(parameter) {
+ const node = {
+ type: "TSParameterProperty",
+ parameter
+ };
+ const defs = NODE_FIELDS.TSParameterProperty;
+ validate(defs.parameter, node, "parameter", parameter, 1);
+ return node;
+}
+function tsDeclareFunction(id = null, typeParameters = null, params, returnType = null) {
+ const node = {
+ type: "TSDeclareFunction",
+ id,
+ typeParameters,
+ params,
+ returnType
+ };
+ const defs = NODE_FIELDS.TSDeclareFunction;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.returnType, node, "returnType", returnType, 1);
+ return node;
+}
+function tsDeclareMethod(decorators = null, key, typeParameters = null, params, returnType = null) {
+ const node = {
+ type: "TSDeclareMethod",
+ decorators,
+ key,
+ typeParameters,
+ params,
+ returnType
+ };
+ const defs = NODE_FIELDS.TSDeclareMethod;
+ validate(defs.decorators, node, "decorators", decorators, 1);
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.params, node, "params", params, 1);
+ validate(defs.returnType, node, "returnType", returnType, 1);
+ return node;
+}
+function tsQualifiedName(left, right) {
+ const node = {
+ type: "TSQualifiedName",
+ left,
+ right
+ };
+ const defs = NODE_FIELDS.TSQualifiedName;
+ validate(defs.left, node, "left", left, 1);
+ validate(defs.right, node, "right", right, 1);
+ return node;
+}
+function tsCallSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSCallSignatureDeclaration",
+ typeParameters,
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSCallSignatureDeclaration;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsConstructSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSConstructSignatureDeclaration",
+ typeParameters,
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSConstructSignatureDeclaration;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsPropertySignature(key, typeAnnotation = null) {
+ const node = {
+ type: "TSPropertySignature",
+ key,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSPropertySignature;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsMethodSignature(key, typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSMethodSignature",
+ key,
+ typeParameters,
+ parameters,
+ typeAnnotation,
+ kind: null
+ };
+ const defs = NODE_FIELDS.TSMethodSignature;
+ validate(defs.key, node, "key", key, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsIndexSignature(parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSIndexSignature",
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSIndexSignature;
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsAnyKeyword() {
+ return {
+ type: "TSAnyKeyword"
+ };
+}
+function tsBooleanKeyword() {
+ return {
+ type: "TSBooleanKeyword"
+ };
+}
+function tsBigIntKeyword() {
+ return {
+ type: "TSBigIntKeyword"
+ };
+}
+function tsIntrinsicKeyword() {
+ return {
+ type: "TSIntrinsicKeyword"
+ };
+}
+function tsNeverKeyword() {
+ return {
+ type: "TSNeverKeyword"
+ };
+}
+function tsNullKeyword() {
+ return {
+ type: "TSNullKeyword"
+ };
+}
+function tsNumberKeyword() {
+ return {
+ type: "TSNumberKeyword"
+ };
+}
+function tsObjectKeyword() {
+ return {
+ type: "TSObjectKeyword"
+ };
+}
+function tsStringKeyword() {
+ return {
+ type: "TSStringKeyword"
+ };
+}
+function tsSymbolKeyword() {
+ return {
+ type: "TSSymbolKeyword"
+ };
+}
+function tsUndefinedKeyword() {
+ return {
+ type: "TSUndefinedKeyword"
+ };
+}
+function tsUnknownKeyword() {
+ return {
+ type: "TSUnknownKeyword"
+ };
+}
+function tsVoidKeyword() {
+ return {
+ type: "TSVoidKeyword"
+ };
+}
+function tsThisType() {
+ return {
+ type: "TSThisType"
+ };
+}
+function tsFunctionType(typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSFunctionType",
+ typeParameters,
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSFunctionType;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsConstructorType(typeParameters = null, parameters, typeAnnotation = null) {
+ const node = {
+ type: "TSConstructorType",
+ typeParameters,
+ parameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSConstructorType;
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.parameters, node, "parameters", parameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsTypeReference(typeName, typeParameters = null) {
+ const node = {
+ type: "TSTypeReference",
+ typeName,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSTypeReference;
+ validate(defs.typeName, node, "typeName", typeName, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsTypePredicate(parameterName, typeAnnotation = null, asserts = null) {
+ const node = {
+ type: "TSTypePredicate",
+ parameterName,
+ typeAnnotation,
+ asserts
+ };
+ const defs = NODE_FIELDS.TSTypePredicate;
+ validate(defs.parameterName, node, "parameterName", parameterName, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.asserts, node, "asserts", asserts);
+ return node;
+}
+function tsTypeQuery(exprName, typeParameters = null) {
+ const node = {
+ type: "TSTypeQuery",
+ exprName,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSTypeQuery;
+ validate(defs.exprName, node, "exprName", exprName, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsTypeLiteral(members) {
+ const node = {
+ type: "TSTypeLiteral",
+ members
+ };
+ const defs = NODE_FIELDS.TSTypeLiteral;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function tsArrayType(elementType) {
+ const node = {
+ type: "TSArrayType",
+ elementType
+ };
+ const defs = NODE_FIELDS.TSArrayType;
+ validate(defs.elementType, node, "elementType", elementType, 1);
+ return node;
+}
+function tsTupleType(elementTypes) {
+ const node = {
+ type: "TSTupleType",
+ elementTypes
+ };
+ const defs = NODE_FIELDS.TSTupleType;
+ validate(defs.elementTypes, node, "elementTypes", elementTypes, 1);
+ return node;
+}
+function tsOptionalType(typeAnnotation) {
+ const node = {
+ type: "TSOptionalType",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSOptionalType;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsRestType(typeAnnotation) {
+ const node = {
+ type: "TSRestType",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSRestType;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsNamedTupleMember(label, elementType, optional = false) {
+ const node = {
+ type: "TSNamedTupleMember",
+ label,
+ elementType,
+ optional
+ };
+ const defs = NODE_FIELDS.TSNamedTupleMember;
+ validate(defs.label, node, "label", label, 1);
+ validate(defs.elementType, node, "elementType", elementType, 1);
+ validate(defs.optional, node, "optional", optional);
+ return node;
+}
+function tsUnionType(types) {
+ const node = {
+ type: "TSUnionType",
+ types
+ };
+ const defs = NODE_FIELDS.TSUnionType;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function tsIntersectionType(types) {
+ const node = {
+ type: "TSIntersectionType",
+ types
+ };
+ const defs = NODE_FIELDS.TSIntersectionType;
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function tsConditionalType(checkType, extendsType, trueType, falseType) {
+ const node = {
+ type: "TSConditionalType",
+ checkType,
+ extendsType,
+ trueType,
+ falseType
+ };
+ const defs = NODE_FIELDS.TSConditionalType;
+ validate(defs.checkType, node, "checkType", checkType, 1);
+ validate(defs.extendsType, node, "extendsType", extendsType, 1);
+ validate(defs.trueType, node, "trueType", trueType, 1);
+ validate(defs.falseType, node, "falseType", falseType, 1);
+ return node;
+}
+function tsInferType(typeParameter) {
+ const node = {
+ type: "TSInferType",
+ typeParameter
+ };
+ const defs = NODE_FIELDS.TSInferType;
+ validate(defs.typeParameter, node, "typeParameter", typeParameter, 1);
+ return node;
+}
+function tsParenthesizedType(typeAnnotation) {
+ const node = {
+ type: "TSParenthesizedType",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSParenthesizedType;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsTypeOperator(typeAnnotation, operator = "keyof") {
+ const node = {
+ type: "TSTypeOperator",
+ typeAnnotation,
+ operator
+ };
+ const defs = NODE_FIELDS.TSTypeOperator;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.operator, node, "operator", operator);
+ return node;
+}
+function tsIndexedAccessType(objectType, indexType) {
+ const node = {
+ type: "TSIndexedAccessType",
+ objectType,
+ indexType
+ };
+ const defs = NODE_FIELDS.TSIndexedAccessType;
+ validate(defs.objectType, node, "objectType", objectType, 1);
+ validate(defs.indexType, node, "indexType", indexType, 1);
+ return node;
+}
+function tsMappedType(typeParameter, typeAnnotation = null, nameType = null) {
+ const node = {
+ type: "TSMappedType",
+ typeParameter,
+ typeAnnotation,
+ nameType
+ };
+ const defs = NODE_FIELDS.TSMappedType;
+ validate(defs.typeParameter, node, "typeParameter", typeParameter, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.nameType, node, "nameType", nameType, 1);
+ return node;
+}
+function tsTemplateLiteralType(quasis, types) {
+ const node = {
+ type: "TSTemplateLiteralType",
+ quasis,
+ types
+ };
+ const defs = NODE_FIELDS.TSTemplateLiteralType;
+ validate(defs.quasis, node, "quasis", quasis, 1);
+ validate(defs.types, node, "types", types, 1);
+ return node;
+}
+function tsLiteralType(literal) {
+ const node = {
+ type: "TSLiteralType",
+ literal
+ };
+ const defs = NODE_FIELDS.TSLiteralType;
+ validate(defs.literal, node, "literal", literal, 1);
+ return node;
+}
+function tsExpressionWithTypeArguments(expression, typeParameters = null) {
+ const node = {
+ type: "TSExpressionWithTypeArguments",
+ expression,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSExpressionWithTypeArguments;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsInterfaceDeclaration(id, typeParameters = null, _extends = null, body) {
+ const node = {
+ type: "TSInterfaceDeclaration",
+ id,
+ typeParameters,
+ extends: _extends,
+ body
+ };
+ const defs = NODE_FIELDS.TSInterfaceDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.extends, node, "extends", _extends, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function tsInterfaceBody(body) {
+ const node = {
+ type: "TSInterfaceBody",
+ body
+ };
+ const defs = NODE_FIELDS.TSInterfaceBody;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function tsTypeAliasDeclaration(id, typeParameters = null, typeAnnotation) {
+ const node = {
+ type: "TSTypeAliasDeclaration",
+ id,
+ typeParameters,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSTypeAliasDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsInstantiationExpression(expression, typeParameters = null) {
+ const node = {
+ type: "TSInstantiationExpression",
+ expression,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSInstantiationExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsAsExpression(expression, typeAnnotation) {
+ const node = {
+ type: "TSAsExpression",
+ expression,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSAsExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsSatisfiesExpression(expression, typeAnnotation) {
+ const node = {
+ type: "TSSatisfiesExpression",
+ expression,
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSSatisfiesExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsTypeAssertion(typeAnnotation, expression) {
+ const node = {
+ type: "TSTypeAssertion",
+ typeAnnotation,
+ expression
+ };
+ const defs = NODE_FIELDS.TSTypeAssertion;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function tsEnumBody(members) {
+ const node = {
+ type: "TSEnumBody",
+ members
+ };
+ const defs = NODE_FIELDS.TSEnumBody;
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function tsEnumDeclaration(id, members) {
+ const node = {
+ type: "TSEnumDeclaration",
+ id,
+ members
+ };
+ const defs = NODE_FIELDS.TSEnumDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.members, node, "members", members, 1);
+ return node;
+}
+function tsEnumMember(id, initializer = null) {
+ const node = {
+ type: "TSEnumMember",
+ id,
+ initializer
+ };
+ const defs = NODE_FIELDS.TSEnumMember;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.initializer, node, "initializer", initializer, 1);
+ return node;
+}
+function tsModuleDeclaration(id, body) {
+ const node = {
+ type: "TSModuleDeclaration",
+ id,
+ body,
+ kind: null
+ };
+ const defs = NODE_FIELDS.TSModuleDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function tsModuleBlock(body) {
+ const node = {
+ type: "TSModuleBlock",
+ body
+ };
+ const defs = NODE_FIELDS.TSModuleBlock;
+ validate(defs.body, node, "body", body, 1);
+ return node;
+}
+function tsImportType(argument, qualifier = null, typeParameters = null) {
+ const node = {
+ type: "TSImportType",
+ argument,
+ qualifier,
+ typeParameters
+ };
+ const defs = NODE_FIELDS.TSImportType;
+ validate(defs.argument, node, "argument", argument, 1);
+ validate(defs.qualifier, node, "qualifier", qualifier, 1);
+ validate(defs.typeParameters, node, "typeParameters", typeParameters, 1);
+ return node;
+}
+function tsImportEqualsDeclaration(id, moduleReference) {
+ const node = {
+ type: "TSImportEqualsDeclaration",
+ id,
+ moduleReference,
+ isExport: null
+ };
+ const defs = NODE_FIELDS.TSImportEqualsDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ validate(defs.moduleReference, node, "moduleReference", moduleReference, 1);
+ return node;
+}
+function tsExternalModuleReference(expression) {
+ const node = {
+ type: "TSExternalModuleReference",
+ expression
+ };
+ const defs = NODE_FIELDS.TSExternalModuleReference;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function tsNonNullExpression(expression) {
+ const node = {
+ type: "TSNonNullExpression",
+ expression
+ };
+ const defs = NODE_FIELDS.TSNonNullExpression;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function tsExportAssignment(expression) {
+ const node = {
+ type: "TSExportAssignment",
+ expression
+ };
+ const defs = NODE_FIELDS.TSExportAssignment;
+ validate(defs.expression, node, "expression", expression, 1);
+ return node;
+}
+function tsNamespaceExportDeclaration(id) {
+ const node = {
+ type: "TSNamespaceExportDeclaration",
+ id
+ };
+ const defs = NODE_FIELDS.TSNamespaceExportDeclaration;
+ validate(defs.id, node, "id", id, 1);
+ return node;
+}
+function tsTypeAnnotation(typeAnnotation) {
+ const node = {
+ type: "TSTypeAnnotation",
+ typeAnnotation
+ };
+ const defs = NODE_FIELDS.TSTypeAnnotation;
+ validate(defs.typeAnnotation, node, "typeAnnotation", typeAnnotation, 1);
+ return node;
+}
+function tsTypeParameterInstantiation(params) {
+ const node = {
+ type: "TSTypeParameterInstantiation",
+ params
+ };
+ const defs = NODE_FIELDS.TSTypeParameterInstantiation;
+ validate(defs.params, node, "params", params, 1);
+ return node;
+}
+function tsTypeParameterDeclaration(params) {
+ const node = {
+ type: "TSTypeParameterDeclaration",
+ params
+ };
+ const defs = NODE_FIELDS.TSTypeParameterDeclaration;
+ validate(defs.params, node, "params", params, 1);
+ return node;
+}
+function tsTypeParameter(constraint = null, _default = null, name) {
+ const node = {
+ type: "TSTypeParameter",
+ constraint,
+ default: _default,
+ name
+ };
+ const defs = NODE_FIELDS.TSTypeParameter;
+ validate(defs.constraint, node, "constraint", constraint, 1);
+ validate(defs.default, node, "default", _default, 1);
+ validate(defs.name, node, "name", name);
+ return node;
+}
+function NumberLiteral(value) {
+ (0, _deprecationWarning.default)("NumberLiteral", "NumericLiteral", "The node type ");
+ return numericLiteral(value);
+}
+function RegexLiteral(pattern, flags = "") {
+ (0, _deprecationWarning.default)("RegexLiteral", "RegExpLiteral", "The node type ");
+ return regExpLiteral(pattern, flags);
+}
+function RestProperty(argument) {
+ (0, _deprecationWarning.default)("RestProperty", "RestElement", "The node type ");
+ return restElement(argument);
+}
+function SpreadProperty(argument) {
+ (0, _deprecationWarning.default)("SpreadProperty", "SpreadElement", "The node type ");
+ return spreadElement(argument);
+}
+
+//# sourceMappingURL=lowercase.js.map
+
+}, function(modId) { var map = {"../../validators/validate.js":1771034509031,"../../utils/deprecationWarning.js":1771034509025,"../../definitions/utils.js":1771034509039}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509031, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = validate;
+exports.validateChild = validateChild;
+exports.validateField = validateField;
+exports.validateInternal = validateInternal;
+var _index = require("../definitions/index.js");
+function validate(node, key, val) {
+ if (!node) return;
+ const fields = _index.NODE_FIELDS[node.type];
+ if (!fields) return;
+ const field = fields[key];
+ validateField(node, key, val, field);
+ validateChild(node, key, val);
+}
+function validateInternal(field, node, key, val, maybeNode) {
+ if (!(field != null && field.validate)) return;
+ if (field.optional && val == null) return;
+ field.validate(node, key, val);
+ if (maybeNode) {
+ var _NODE_PARENT_VALIDATI;
+ const type = val.type;
+ if (type == null) return;
+ (_NODE_PARENT_VALIDATI = _index.NODE_PARENT_VALIDATIONS[type]) == null || _NODE_PARENT_VALIDATI.call(_index.NODE_PARENT_VALIDATIONS, node, key, val);
+ }
+}
+function validateField(node, key, val, field) {
+ if (!(field != null && field.validate)) return;
+ if (field.optional && val == null) return;
+ field.validate(node, key, val);
+}
+function validateChild(node, key, val) {
+ var _NODE_PARENT_VALIDATI2;
+ const type = val == null ? void 0 : val.type;
+ if (type == null) return;
+ (_NODE_PARENT_VALIDATI2 = _index.NODE_PARENT_VALIDATIONS[type]) == null || _NODE_PARENT_VALIDATI2.call(_index.NODE_PARENT_VALIDATIONS, node, key, val);
+}
+
+//# sourceMappingURL=validate.js.map
+
+}, function(modId) { var map = {"../definitions/index.js":1771034509032}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509032, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "ALIAS_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.ALIAS_KEYS;
+ }
+});
+Object.defineProperty(exports, "BUILDER_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.BUILDER_KEYS;
+ }
+});
+Object.defineProperty(exports, "DEPRECATED_ALIASES", {
+ enumerable: true,
+ get: function () {
+ return _deprecatedAliases.DEPRECATED_ALIASES;
+ }
+});
+Object.defineProperty(exports, "DEPRECATED_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.DEPRECATED_KEYS;
+ }
+});
+Object.defineProperty(exports, "FLIPPED_ALIAS_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.FLIPPED_ALIAS_KEYS;
+ }
+});
+Object.defineProperty(exports, "NODE_FIELDS", {
+ enumerable: true,
+ get: function () {
+ return _utils.NODE_FIELDS;
+ }
+});
+Object.defineProperty(exports, "NODE_PARENT_VALIDATIONS", {
+ enumerable: true,
+ get: function () {
+ return _utils.NODE_PARENT_VALIDATIONS;
+ }
+});
+Object.defineProperty(exports, "NODE_UNION_SHAPES__PRIVATE", {
+ enumerable: true,
+ get: function () {
+ return _utils.NODE_UNION_SHAPES__PRIVATE;
+ }
+});
+Object.defineProperty(exports, "PLACEHOLDERS", {
+ enumerable: true,
+ get: function () {
+ return _placeholders.PLACEHOLDERS;
+ }
+});
+Object.defineProperty(exports, "PLACEHOLDERS_ALIAS", {
+ enumerable: true,
+ get: function () {
+ return _placeholders.PLACEHOLDERS_ALIAS;
+ }
+});
+Object.defineProperty(exports, "PLACEHOLDERS_FLIPPED_ALIAS", {
+ enumerable: true,
+ get: function () {
+ return _placeholders.PLACEHOLDERS_FLIPPED_ALIAS;
+ }
+});
+exports.TYPES = void 0;
+Object.defineProperty(exports, "VISITOR_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.VISITOR_KEYS;
+ }
+});
+require("./core.js");
+require("./flow.js");
+require("./jsx.js");
+require("./misc.js");
+require("./experimental.js");
+require("./typescript.js");
+var _utils = require("./utils.js");
+var _placeholders = require("./placeholders.js");
+var _deprecatedAliases = require("./deprecated-aliases.js");
+Object.keys(_deprecatedAliases.DEPRECATED_ALIASES).forEach(deprecatedAlias => {
+ _utils.FLIPPED_ALIAS_KEYS[deprecatedAlias] = _utils.FLIPPED_ALIAS_KEYS[_deprecatedAliases.DEPRECATED_ALIASES[deprecatedAlias]];
+});
+for (const {
+ types,
+ set
+} of _utils.allExpandedTypes) {
+ for (const type of types) {
+ const aliases = _utils.FLIPPED_ALIAS_KEYS[type];
+ if (aliases) {
+ aliases.forEach(set.add, set);
+ } else {
+ set.add(type);
+ }
+ }
+}
+const TYPES = exports.TYPES = [].concat(Object.keys(_utils.VISITOR_KEYS), Object.keys(_utils.FLIPPED_ALIAS_KEYS), Object.keys(_utils.DEPRECATED_KEYS));
+
+//# sourceMappingURL=index.js.map
+
+}, function(modId) { var map = {"./core.js":1771034509033,"./flow.js":1771034509040,"./jsx.js":1771034509041,"./misc.js":1771034509042,"./experimental.js":1771034509044,"./typescript.js":1771034509045,"./utils.js":1771034509039,"./placeholders.js":1771034509043,"./deprecated-aliases.js":1771034509046}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509033, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.patternLikeCommon = exports.importAttributes = exports.functionTypeAnnotationCommon = exports.functionDeclarationCommon = exports.functionCommon = exports.classMethodOrPropertyUnionShapeCommon = exports.classMethodOrPropertyCommon = exports.classMethodOrDeclareMethodCommon = void 0;
+var _is = require("../validators/is.js");
+var _isValidIdentifier = require("../validators/isValidIdentifier.js");
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+var _helperStringParser = require("@babel/helper-string-parser");
+var _index = require("../constants/index.js");
+var _utils = require("./utils.js");
+const classMethodOrPropertyUnionShapeCommon = (allowPrivateName = false) => ({
+ unionShape: {
+ discriminator: "computed",
+ shapes: [{
+ name: "computed",
+ value: [true],
+ properties: {
+ key: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+ }, {
+ name: "nonComputed",
+ value: [false],
+ properties: {
+ key: {
+ validate: allowPrivateName ? (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName") : (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral")
+ }
+ }
+ }]
+ }
+});
+exports.classMethodOrPropertyUnionShapeCommon = classMethodOrPropertyUnionShapeCommon;
+const defineType = (0, _utils.defineAliasedType)("Standardized");
+defineType("ArrayExpression", {
+ fields: {
+ elements: {
+ validate: (0, _utils.arrayOf)((0, _utils.assertNodeOrValueType)("null", "Expression", "SpreadElement")),
+ default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined
+ }
+ },
+ visitor: ["elements"],
+ aliases: ["Expression"]
+});
+defineType("AssignmentExpression", {
+ fields: {
+ operator: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("string") : Object.assign(function () {
+ const identifier = (0, _utils.assertOneOf)(..._index.ASSIGNMENT_OPERATORS);
+ const pattern = (0, _utils.assertOneOf)("=");
+ return function (node, key, val) {
+ const validator = (0, _is.default)("Pattern", node.left) ? pattern : identifier;
+ validator(node, key, val);
+ };
+ }(), {
+ oneOf: _index.ASSIGNMENT_OPERATORS
+ })
+ },
+ left: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal", "OptionalMemberExpression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression", "OptionalMemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ builder: ["operator", "left", "right"],
+ visitor: ["left", "right"],
+ aliases: ["Expression"]
+});
+defineType("BinaryExpression", {
+ builder: ["operator", "left", "right"],
+ fields: {
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._index.BINARY_OPERATORS)
+ },
+ left: {
+ validate: function () {
+ const expression = (0, _utils.assertNodeType)("Expression");
+ const inOp = (0, _utils.assertNodeType)("Expression", "PrivateName");
+ const validator = Object.assign(function (node, key, val) {
+ const validator = node.operator === "in" ? inOp : expression;
+ validator(node, key, val);
+ }, {
+ oneOfNodeTypes: ["Expression", "PrivateName"]
+ });
+ return validator;
+ }()
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ visitor: ["left", "right"],
+ aliases: ["Binary", "Expression"]
+});
+defineType("InterpreterDirective", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("Directive", {
+ visitor: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertNodeType)("DirectiveLiteral")
+ }
+ }
+});
+defineType("DirectiveLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("BlockStatement", {
+ builder: ["body", "directives"],
+ visitor: ["directives", "body"],
+ fields: {
+ directives: {
+ validate: (0, _utils.arrayOfType)("Directive"),
+ default: []
+ },
+ body: (0, _utils.validateArrayOfType)("Statement")
+ },
+ aliases: ["Scopable", "BlockParent", "Block", "Statement"]
+});
+defineType("BreakStatement", {
+ visitor: ["label"],
+ fields: {
+ label: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ }
+ },
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+});
+defineType("CallExpression", {
+ visitor: ["callee", "typeParameters", "typeArguments", "arguments"],
+ builder: ["callee", "arguments"],
+ aliases: ["Expression"],
+ fields: Object.assign({
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression", "Super", "V8IntrinsicIdentifier")
+ },
+ arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"),
+ typeArguments: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
+ optional: true
+ }
+ }, process.env.BABEL_TYPES_8_BREAKING ? {} : {
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+ optional: true
+ }
+ })
+});
+defineType("CatchClause", {
+ visitor: ["param", "body"],
+ fields: {
+ param: {
+ validate: (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ },
+ aliases: ["Scopable", "BlockParent"]
+});
+defineType("ConditionalExpression", {
+ visitor: ["test", "consequent", "alternate"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ consequent: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ alternate: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Expression", "Conditional"]
+});
+defineType("ContinueStatement", {
+ visitor: ["label"],
+ fields: {
+ label: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ }
+ },
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+});
+defineType("DebuggerStatement", {
+ aliases: ["Statement"]
+});
+defineType("DoWhileStatement", {
+ builder: ["test", "body"],
+ visitor: ["body", "test"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ },
+ aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
+});
+defineType("EmptyStatement", {
+ aliases: ["Statement"]
+});
+defineType("ExpressionStatement", {
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Statement", "ExpressionWrapper"]
+});
+defineType("File", {
+ builder: ["program", "comments", "tokens"],
+ visitor: ["program"],
+ fields: {
+ program: {
+ validate: (0, _utils.assertNodeType)("Program")
+ },
+ comments: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? Object.assign(() => {}, {
+ each: {
+ oneOfNodeTypes: ["CommentBlock", "CommentLine"]
+ }
+ }) : (0, _utils.assertEach)((0, _utils.assertNodeType)("CommentBlock", "CommentLine")),
+ optional: true
+ },
+ tokens: {
+ validate: (0, _utils.assertEach)(Object.assign(() => {}, {
+ type: "any"
+ })),
+ optional: true
+ }
+ }
+});
+defineType("ForInStatement", {
+ visitor: ["left", "right", "body"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("VariableDeclaration", "LVal") : (0, _utils.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("ForStatement", {
+ visitor: ["init", "test", "update", "body"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"],
+ fields: {
+ init: {
+ validate: (0, _utils.assertNodeType)("VariableDeclaration", "Expression"),
+ optional: true
+ },
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ update: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+const functionCommon = () => ({
+ params: (0, _utils.validateArrayOfType)("FunctionParameter"),
+ generator: {
+ default: false
+ },
+ async: {
+ default: false
+ }
+});
+exports.functionCommon = functionCommon;
+const functionTypeAnnotationCommon = () => ({
+ returnType: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ }
+});
+exports.functionTypeAnnotationCommon = functionTypeAnnotationCommon;
+const functionDeclarationCommon = () => Object.assign({}, functionCommon(), {
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ }
+});
+exports.functionDeclarationCommon = functionDeclarationCommon;
+defineType("FunctionDeclaration", {
+ builder: ["id", "params", "body", "generator", "async"],
+ visitor: ["id", "typeParameters", "params", "predicate", "returnType", "body"],
+ fields: Object.assign({}, functionDeclarationCommon(), functionTypeAnnotationCommon(), {
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ },
+ predicate: {
+ validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"),
+ optional: true
+ }
+ }),
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"],
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {
+ const identifier = (0, _utils.assertNodeType)("Identifier");
+ return function (parent, key, node) {
+ if (!(0, _is.default)("ExportDefaultDeclaration", parent)) {
+ identifier(node, "id", node.id);
+ }
+ };
+ }()
+});
+defineType("FunctionExpression", {
+ inherits: "FunctionDeclaration",
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
+ fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ },
+ predicate: {
+ validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"),
+ optional: true
+ }
+ })
+});
+const patternLikeCommon = () => ({
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+});
+exports.patternLikeCommon = patternLikeCommon;
+defineType("Identifier", {
+ builder: ["name"],
+ visitor: ["typeAnnotation", "decorators"],
+ aliases: ["Expression", "FunctionParameter", "PatternLike", "LVal", "TSEntityName"],
+ fields: Object.assign({}, patternLikeCommon(), {
+ name: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) {
+ if (!(0, _isValidIdentifier.default)(val, false)) {
+ throw new TypeError(`"${val}" is not a valid identifier name`);
+ }
+ }, {
+ type: "string"
+ })) : (0, _utils.assertValueType)("string")
+ }
+ }),
+ validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key, node) {
+ const match = /\.(\w+)$/.exec(key.toString());
+ if (!match) return;
+ const [, parentKey] = match;
+ const nonComp = {
+ computed: false
+ };
+ if (parentKey === "property") {
+ if ((0, _is.default)("MemberExpression", parent, nonComp)) return;
+ if ((0, _is.default)("OptionalMemberExpression", parent, nonComp)) return;
+ } else if (parentKey === "key") {
+ if ((0, _is.default)("Property", parent, nonComp)) return;
+ if ((0, _is.default)("Method", parent, nonComp)) return;
+ } else if (parentKey === "exported") {
+ if ((0, _is.default)("ExportSpecifier", parent)) return;
+ } else if (parentKey === "imported") {
+ if ((0, _is.default)("ImportSpecifier", parent, {
+ imported: node
+ })) return;
+ } else if (parentKey === "meta") {
+ if ((0, _is.default)("MetaProperty", parent, {
+ meta: node
+ })) return;
+ }
+ if (((0, _helperValidatorIdentifier.isKeyword)(node.name) || (0, _helperValidatorIdentifier.isReservedWord)(node.name, false)) && node.name !== "this") {
+ throw new TypeError(`"${node.name}" is not a valid identifier`);
+ }
+ } : undefined
+});
+defineType("IfStatement", {
+ visitor: ["test", "consequent", "alternate"],
+ aliases: ["Statement", "Conditional"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ consequent: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ },
+ alternate: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("LabeledStatement", {
+ visitor: ["label", "body"],
+ aliases: ["Statement"],
+ fields: {
+ label: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("StringLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("NumericLiteral", {
+ builder: ["value"],
+ deprecatedAlias: "NumberLiteral",
+ fields: {
+ value: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("number"), Object.assign(function (node, key, val) {
+ if (1 / val < 0 || !Number.isFinite(val)) {
+ const error = new Error("NumericLiterals must be non-negative finite numbers. " + `You can use t.valueToNode(${val}) instead.`);
+ }
+ }, {
+ type: "number"
+ }))
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("NullLiteral", {
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("BooleanLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("boolean")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("RegExpLiteral", {
+ builder: ["pattern", "flags"],
+ deprecatedAlias: "RegexLiteral",
+ aliases: ["Expression", "Pureish", "Literal"],
+ fields: {
+ pattern: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ flags: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) {
+ const invalid = /[^dgimsuvy]/.exec(val);
+ if (invalid) {
+ throw new TypeError(`"${invalid[0]}" is not a valid RegExp flag`);
+ }
+ }, {
+ type: "string"
+ })) : (0, _utils.assertValueType)("string"),
+ default: ""
+ }
+ }
+});
+defineType("LogicalExpression", {
+ builder: ["operator", "left", "right"],
+ visitor: ["left", "right"],
+ aliases: ["Binary", "Expression"],
+ fields: {
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._index.LOGICAL_OPERATORS)
+ },
+ left: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("MemberExpression", {
+ builder: ["object", "property", "computed", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["optional"] : [])],
+ visitor: ["object", "property"],
+ aliases: ["Expression", "LVal", "PatternLike"],
+ unionShape: {
+ discriminator: "computed",
+ shapes: [{
+ name: "computed",
+ value: [true],
+ properties: {
+ property: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+ }, {
+ name: "nonComputed",
+ value: [false],
+ properties: {
+ property: {
+ validate: (0, _utils.assertNodeType)("Identifier", "PrivateName")
+ }
+ }
+ }]
+ },
+ fields: Object.assign({
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression", "Super")
+ },
+ property: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "PrivateName");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ const validator = function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+ validator.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"];
+ return validator;
+ }()
+ },
+ computed: {
+ default: false
+ }
+ }, !process.env.BABEL_TYPES_8_BREAKING ? {
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ } : {})
+});
+defineType("NewExpression", {
+ inherits: "CallExpression"
+});
+defineType("Program", {
+ visitor: ["directives", "body"],
+ builder: ["body", "directives", "sourceType", "interpreter"],
+ fields: {
+ sourceType: {
+ validate: (0, _utils.assertOneOf)("script", "module"),
+ default: "script"
+ },
+ interpreter: {
+ validate: (0, _utils.assertNodeType)("InterpreterDirective"),
+ default: null,
+ optional: true
+ },
+ directives: {
+ validate: (0, _utils.arrayOfType)("Directive"),
+ default: []
+ },
+ body: (0, _utils.validateArrayOfType)("Statement")
+ },
+ aliases: ["Scopable", "BlockParent", "Block"]
+});
+defineType("ObjectExpression", {
+ visitor: ["properties"],
+ aliases: ["Expression"],
+ fields: {
+ properties: (0, _utils.validateArrayOfType)("ObjectMethod", "ObjectProperty", "SpreadElement")
+ }
+});
+defineType("ObjectMethod", Object.assign({
+ builder: ["kind", "key", "params", "body", "computed", "generator", "async"],
+ visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"]
+}, classMethodOrPropertyUnionShapeCommon(), {
+ fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
+ kind: Object.assign({
+ validate: (0, _utils.assertOneOf)("method", "get", "set")
+ }, !process.env.BABEL_TYPES_8_BREAKING ? {
+ default: "method"
+ } : {}),
+ computed: {
+ default: false
+ },
+ key: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ const validator = function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+ validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"];
+ return validator;
+ }()
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ }),
+ aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"]
+}));
+defineType("ObjectProperty", {
+ builder: ["key", "value", "computed", "shorthand", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : [])],
+ unionShape: {
+ discriminator: "computed",
+ shapes: [{
+ name: "computed",
+ value: [true],
+ properties: {
+ key: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+ }, {
+ name: "nonComputed",
+ value: [false],
+ properties: {
+ key: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName")
+ }
+ }
+ }]
+ },
+ fields: {
+ computed: {
+ default: false
+ },
+ key: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ const validator = Object.assign(function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ }, {
+ oneOfNodeTypes: ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"]
+ });
+ return validator;
+ }()
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression", "PatternLike")
+ },
+ shorthand: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, shorthand) {
+ if (!shorthand) return;
+ if (node.computed) {
+ throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true");
+ }
+ if (!(0, _is.default)("Identifier", node.key)) {
+ throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier");
+ }
+ }, {
+ type: "boolean"
+ })) : (0, _utils.assertValueType)("boolean"),
+ default: false
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+ },
+ visitor: ["decorators", "key", "value"],
+ aliases: ["UserWhitespacable", "Property", "ObjectMember"],
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {
+ const pattern = (0, _utils.assertNodeType)("Identifier", "Pattern", "TSAsExpression", "TSSatisfiesExpression", "TSNonNullExpression", "TSTypeAssertion");
+ const expression = (0, _utils.assertNodeType)("Expression");
+ return function (parent, key, node) {
+ const validator = (0, _is.default)("ObjectPattern", parent) ? pattern : expression;
+ validator(node, "value", node.value);
+ };
+ }()
+});
+defineType("RestElement", {
+ visitor: ["argument", "typeAnnotation"],
+ builder: ["argument"],
+ aliases: ["FunctionParameter", "PatternLike", "LVal"],
+ deprecatedAlias: "RestProperty",
+ fields: Object.assign({}, patternLikeCommon(), {
+ argument: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression", "RestElement", "AssignmentPattern") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
+ }
+ }),
+ validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key) {
+ const match = /(\w+)\[(\d+)\]/.exec(key.toString());
+ if (!match) throw new Error("Internal Babel error: malformed key.");
+ const [, listKey, index] = match;
+ if (parent[listKey].length > +index + 1) {
+ throw new TypeError(`RestElement must be last element of ${listKey}`);
+ }
+ } : undefined
+});
+defineType("ReturnStatement", {
+ visitor: ["argument"],
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ }
+ }
+});
+defineType("SequenceExpression", {
+ visitor: ["expressions"],
+ fields: {
+ expressions: (0, _utils.validateArrayOfType)("Expression")
+ },
+ aliases: ["Expression"]
+});
+defineType("ParenthesizedExpression", {
+ visitor: ["expression"],
+ aliases: ["Expression", "ExpressionWrapper"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("SwitchCase", {
+ visitor: ["test", "consequent"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ consequent: (0, _utils.validateArrayOfType)("Statement")
+ }
+});
+defineType("SwitchStatement", {
+ visitor: ["discriminant", "cases"],
+ aliases: ["Statement", "BlockParent", "Scopable"],
+ fields: {
+ discriminant: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ cases: (0, _utils.validateArrayOfType)("SwitchCase")
+ }
+});
+defineType("ThisExpression", {
+ aliases: ["Expression"]
+});
+defineType("ThrowStatement", {
+ visitor: ["argument"],
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("TryStatement", {
+ visitor: ["block", "handler", "finalizer"],
+ aliases: ["Statement"],
+ fields: {
+ block: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("BlockStatement"), Object.assign(function (node) {
+ if (!node.handler && !node.finalizer) {
+ throw new TypeError("TryStatement expects either a handler or finalizer, or both");
+ }
+ }, {
+ oneOfNodeTypes: ["BlockStatement"]
+ })) : (0, _utils.assertNodeType)("BlockStatement")
+ },
+ handler: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("CatchClause")
+ },
+ finalizer: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ }
+});
+defineType("UnaryExpression", {
+ builder: ["operator", "argument", "prefix"],
+ fields: {
+ prefix: {
+ default: true
+ },
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._index.UNARY_OPERATORS)
+ }
+ },
+ visitor: ["argument"],
+ aliases: ["UnaryLike", "Expression"]
+});
+defineType("UpdateExpression", {
+ builder: ["operator", "argument", "prefix"],
+ fields: {
+ prefix: {
+ default: false
+ },
+ argument: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Expression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression")
+ },
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._index.UPDATE_OPERATORS)
+ }
+ },
+ visitor: ["argument"],
+ aliases: ["Expression"]
+});
+defineType("VariableDeclaration", {
+ builder: ["kind", "declarations"],
+ visitor: ["declarations"],
+ aliases: ["Statement", "Declaration"],
+ fields: {
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ kind: {
+ validate: (0, _utils.assertOneOf)("var", "let", "const", "using", "await using")
+ },
+ declarations: (0, _utils.validateArrayOfType)("VariableDeclarator")
+ },
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (() => {
+ const withoutInit = (0, _utils.assertNodeType)("Identifier", "Placeholder");
+ const constOrLetOrVar = (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "Placeholder");
+ const usingOrAwaitUsing = (0, _utils.assertNodeType)("Identifier", "VoidPattern", "Placeholder");
+ return function (parent, key, node) {
+ const {
+ kind,
+ declarations
+ } = node;
+ const parentIsForX = (0, _is.default)("ForXStatement", parent, {
+ left: node
+ });
+ if (parentIsForX) {
+ if (declarations.length !== 1) {
+ throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`);
+ }
+ }
+ for (const decl of declarations) {
+ if (kind === "const" || kind === "let" || kind === "var") {
+ if (!parentIsForX && !decl.init) {
+ withoutInit(decl, "id", decl.id);
+ } else {
+ constOrLetOrVar(decl, "id", decl.id);
+ }
+ } else {
+ usingOrAwaitUsing(decl, "id", decl.id);
+ }
+ }
+ };
+ })() : undefined
+});
+defineType("VariableDeclarator", {
+ visitor: ["id", "init"],
+ fields: {
+ id: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal", "VoidPattern") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "VoidPattern")
+ },
+ definite: {
+ optional: true,
+ validate: (0, _utils.assertValueType)("boolean")
+ },
+ init: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("WhileStatement", {
+ visitor: ["test", "body"],
+ aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("WithStatement", {
+ visitor: ["object", "body"],
+ aliases: ["Statement"],
+ fields: {
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("AssignmentPattern", {
+ visitor: ["left", "right", "decorators"],
+ builder: ["left", "right"],
+ aliases: ["FunctionParameter", "Pattern", "PatternLike", "LVal"],
+ fields: Object.assign({}, patternLikeCommon(), {
+ left: {
+ validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+ })
+});
+defineType("ArrayPattern", {
+ visitor: ["elements", "typeAnnotation"],
+ builder: ["elements"],
+ aliases: ["FunctionParameter", "Pattern", "PatternLike", "LVal"],
+ fields: Object.assign({}, patternLikeCommon(), {
+ elements: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "PatternLike")))
+ }
+ })
+});
+defineType("ArrowFunctionExpression", {
+ builder: ["params", "body", "async"],
+ visitor: ["typeParameters", "params", "predicate", "returnType", "body"],
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
+ fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
+ expression: {
+ validate: (0, _utils.assertValueType)("boolean")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement", "Expression")
+ },
+ predicate: {
+ validate: (0, _utils.assertNodeType)("DeclaredPredicate", "InferredPredicate"),
+ optional: true
+ }
+ })
+});
+defineType("ClassBody", {
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "ClassAccessorProperty", "TSDeclareMethod", "TSIndexSignature", "StaticBlock")
+ }
+});
+defineType("ClassExpression", {
+ builder: ["id", "superClass", "body", "decorators"],
+ visitor: ["decorators", "id", "typeParameters", "superClass", "superTypeParameters", "mixins", "implements", "body"],
+ aliases: ["Scopable", "Class", "Expression"],
+ fields: {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ ["superTypeParameters"]: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ },
+ implements: {
+ validate: (0, _utils.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ mixins: {
+ validate: (0, _utils.assertNodeType)("InterfaceExtends"),
+ optional: true
+ }
+ }
+});
+defineType("ClassDeclaration", {
+ inherits: "ClassExpression",
+ aliases: ["Scopable", "Class", "Statement", "Declaration"],
+ fields: {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ ["superTypeParameters"]: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ },
+ implements: {
+ validate: (0, _utils.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ mixins: {
+ validate: (0, _utils.assertNodeType)("InterfaceExtends"),
+ optional: true
+ },
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ abstract: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ },
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {
+ const identifier = (0, _utils.assertNodeType)("Identifier");
+ return function (parent, key, node) {
+ if (!(0, _is.default)("ExportDefaultDeclaration", parent)) {
+ identifier(node, "id", node.id);
+ }
+ };
+ }()
+});
+const importAttributes = exports.importAttributes = {
+ attributes: {
+ optional: true,
+ validate: (0, _utils.arrayOfType)("ImportAttribute")
+ }
+};
+importAttributes.assertions = {
+ deprecated: true,
+ optional: true,
+ validate: (0, _utils.arrayOfType)("ImportAttribute")
+};
+defineType("ExportAllDeclaration", {
+ builder: ["source", "attributes"],
+ visitor: ["source", "attributes", "assertions"],
+ aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
+ fields: Object.assign({
+ source: {
+ validate: (0, _utils.assertNodeType)("StringLiteral")
+ },
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
+ }, importAttributes)
+});
+defineType("ExportDefaultDeclaration", {
+ visitor: ["declaration"],
+ aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
+ fields: {
+ declaration: (0, _utils.validateType)("TSDeclareFunction", "FunctionDeclaration", "ClassDeclaration", "Expression"),
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("value"))
+ }
+});
+defineType("ExportNamedDeclaration", {
+ builder: ["declaration", "specifiers", "source", "attributes"],
+ visitor: ["declaration", "specifiers", "source", "attributes", "assertions"],
+ aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
+ fields: Object.assign({
+ declaration: {
+ optional: true,
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("Declaration"), Object.assign(function (node, key, val) {
+ if (val && node.specifiers.length) {
+ throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration");
+ }
+ if (val && node.source) {
+ throw new TypeError("Cannot export a declaration from a source");
+ }
+ }, {
+ oneOfNodeTypes: ["Declaration"]
+ })) : (0, _utils.assertNodeType)("Declaration")
+ }
+ }, importAttributes, {
+ specifiers: {
+ default: [],
+ validate: (0, _utils.arrayOf)(function () {
+ const sourced = (0, _utils.assertNodeType)("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier");
+ const sourceless = (0, _utils.assertNodeType)("ExportSpecifier");
+ if (!process.env.BABEL_TYPES_8_BREAKING) return sourced;
+ return Object.assign(function (node, key, val) {
+ const validator = node.source ? sourced : sourceless;
+ validator(node, key, val);
+ }, {
+ oneOfNodeTypes: ["ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"]
+ });
+ }())
+ },
+ source: {
+ validate: (0, _utils.assertNodeType)("StringLiteral"),
+ optional: true
+ },
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
+ })
+});
+defineType("ExportSpecifier", {
+ visitor: ["local", "exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ exported: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
+ },
+ exportKind: {
+ validate: (0, _utils.assertOneOf)("type", "value"),
+ optional: true
+ }
+ }
+});
+defineType("ForOfStatement", {
+ visitor: ["left", "right", "body"],
+ builder: ["left", "right", "body", "await"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: function () {
+ if (!process.env.BABEL_TYPES_8_BREAKING) {
+ return (0, _utils.assertNodeType)("VariableDeclaration", "LVal");
+ }
+ const declaration = (0, _utils.assertNodeType)("VariableDeclaration");
+ const lval = (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression");
+ return Object.assign(function (node, key, val) {
+ if ((0, _is.default)("VariableDeclaration", val)) {
+ declaration(node, key, val);
+ } else {
+ lval(node, key, val);
+ }
+ }, {
+ oneOfNodeTypes: ["VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression"]
+ });
+ }()
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ },
+ await: {
+ default: false
+ }
+ }
+});
+defineType("ImportDeclaration", {
+ builder: ["specifiers", "source", "attributes"],
+ visitor: ["specifiers", "source", "attributes", "assertions"],
+ aliases: ["Statement", "Declaration", "ImportOrExportDeclaration"],
+ fields: Object.assign({}, importAttributes, {
+ module: {
+ optional: true,
+ validate: (0, _utils.assertValueType)("boolean")
+ },
+ phase: {
+ default: null,
+ validate: (0, _utils.assertOneOf)("source", "defer")
+ },
+ specifiers: (0, _utils.validateArrayOfType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier"),
+ source: {
+ validate: (0, _utils.assertNodeType)("StringLiteral")
+ },
+ importKind: {
+ validate: (0, _utils.assertOneOf)("type", "typeof", "value"),
+ optional: true
+ }
+ })
+});
+defineType("ImportDefaultSpecifier", {
+ visitor: ["local"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("ImportNamespaceSpecifier", {
+ visitor: ["local"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("ImportSpecifier", {
+ visitor: ["imported", "local"],
+ builder: ["local", "imported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ imported: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
+ },
+ importKind: {
+ validate: (0, _utils.assertOneOf)("type", "typeof", "value"),
+ optional: true
+ }
+ }
+});
+defineType("ImportExpression", {
+ visitor: ["source", "options"],
+ aliases: ["Expression"],
+ fields: {
+ phase: {
+ default: null,
+ validate: (0, _utils.assertOneOf)("source", "defer")
+ },
+ source: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ options: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ }
+ }
+});
+defineType("MetaProperty", {
+ visitor: ["meta", "property"],
+ aliases: ["Expression"],
+ fields: {
+ meta: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)("Identifier"), Object.assign(function (node, key, val) {
+ let property;
+ switch (val.name) {
+ case "function":
+ property = "sent";
+ break;
+ case "new":
+ property = "target";
+ break;
+ case "import":
+ property = "meta";
+ break;
+ }
+ if (!(0, _is.default)("Identifier", node.property, {
+ name: property
+ })) {
+ throw new TypeError("Unrecognised MetaProperty");
+ }
+ }, {
+ oneOfNodeTypes: ["Identifier"]
+ })) : (0, _utils.assertNodeType)("Identifier")
+ },
+ property: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+const classMethodOrPropertyCommon = () => ({
+ abstract: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ accessibility: {
+ validate: (0, _utils.assertOneOf)("public", "private", "protected"),
+ optional: true
+ },
+ static: {
+ default: false
+ },
+ override: {
+ default: false
+ },
+ computed: {
+ default: false
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ key: {
+ validate: (0, _utils.chain)(function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ return function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+ }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression"))
+ }
+});
+exports.classMethodOrPropertyCommon = classMethodOrPropertyCommon;
+const classMethodOrDeclareMethodCommon = () => Object.assign({}, functionCommon(), classMethodOrPropertyCommon(), {
+ params: (0, _utils.validateArrayOfType)("FunctionParameter", "TSParameterProperty"),
+ kind: {
+ validate: (0, _utils.assertOneOf)("get", "set", "method", "constructor"),
+ default: "method"
+ },
+ access: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("public", "private", "protected")),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+});
+exports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon;
+defineType("ClassMethod", Object.assign({
+ aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"],
+ builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"],
+ visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"]
+}, classMethodOrPropertyUnionShapeCommon(), {
+ fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ })
+}));
+defineType("ObjectPattern", {
+ visitor: ["decorators", "properties", "typeAnnotation"],
+ builder: ["properties"],
+ aliases: ["FunctionParameter", "Pattern", "PatternLike", "LVal"],
+ fields: Object.assign({}, patternLikeCommon(), {
+ properties: (0, _utils.validateArrayOfType)("RestElement", "ObjectProperty")
+ })
+});
+defineType("SpreadElement", {
+ visitor: ["argument"],
+ aliases: ["UnaryLike"],
+ deprecatedAlias: "SpreadProperty",
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("Super", {
+ aliases: ["Expression"]
+});
+defineType("TaggedTemplateExpression", {
+ visitor: ["tag", "typeParameters", "quasi"],
+ builder: ["tag", "quasi"],
+ aliases: ["Expression"],
+ fields: {
+ tag: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ quasi: {
+ validate: (0, _utils.assertNodeType)("TemplateLiteral")
+ },
+ ["typeParameters"]: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ }
+ }
+});
+defineType("TemplateElement", {
+ builder: ["value", "tail"],
+ fields: {
+ value: {
+ validate: (0, _utils.chain)((0, _utils.assertShape)({
+ raw: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ cooked: {
+ validate: (0, _utils.assertValueType)("string"),
+ optional: true
+ }
+ }), function templateElementCookedValidator(node) {
+ const raw = node.value.raw;
+ let unterminatedCalled = false;
+ const error = () => {
+ throw new Error("Internal @babel/types error.");
+ };
+ const {
+ str,
+ firstInvalidLoc
+ } = (0, _helperStringParser.readStringContents)("template", raw, 0, 0, 0, {
+ unterminated() {
+ unterminatedCalled = true;
+ },
+ strictNumericEscape: error,
+ invalidEscapeSequence: error,
+ numericSeparatorInEscapeSequence: error,
+ unexpectedNumericSeparator: error,
+ invalidDigit: error,
+ invalidCodePoint: error
+ });
+ if (!unterminatedCalled) throw new Error("Invalid raw");
+ node.value.cooked = firstInvalidLoc ? null : str;
+ })
+ },
+ tail: {
+ default: false
+ }
+ }
+});
+defineType("TemplateLiteral", {
+ visitor: ["quasis", "expressions"],
+ aliases: ["Expression", "Literal"],
+ fields: {
+ quasis: (0, _utils.validateArrayOfType)("TemplateElement"),
+ expressions: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "TSType")), function (node, key, val) {
+ if (node.quasis.length !== val.length + 1) {
+ throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of expressions.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);
+ }
+ })
+ }
+ }
+});
+defineType("YieldExpression", {
+ builder: ["argument", "delegate"],
+ visitor: ["argument"],
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ delegate: {
+ validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) {
+ if (val && !node.argument) {
+ throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument");
+ }
+ }, {
+ type: "boolean"
+ })) : (0, _utils.assertValueType)("boolean"),
+ default: false
+ },
+ argument: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("AwaitExpression", {
+ builder: ["argument"],
+ visitor: ["argument"],
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("Import", {
+ aliases: ["Expression"]
+});
+defineType("BigIntLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("ExportNamespaceSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("OptionalMemberExpression", {
+ builder: ["object", "property", "computed", "optional"],
+ visitor: ["object", "property"],
+ aliases: ["Expression"],
+ fields: {
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ property: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ const validator = Object.assign(function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ }, {
+ oneOfNodeTypes: ["Expression", "Identifier"]
+ });
+ return validator;
+ }()
+ },
+ computed: {
+ default: false
+ },
+ optional: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)())
+ }
+ }
+});
+defineType("OptionalCallExpression", {
+ visitor: ["callee", "typeParameters", "typeArguments", "arguments"],
+ builder: ["callee", "arguments", "optional"],
+ aliases: ["Expression"],
+ fields: Object.assign({
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"),
+ optional: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)())
+ },
+ typeArguments: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
+ optional: true
+ }
+ }, {
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+ optional: true
+ }
+ })
+});
+defineType("ClassProperty", Object.assign({
+ visitor: ["decorators", "variance", "key", "typeAnnotation", "value"],
+ builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
+ aliases: ["Property"]
+}, classMethodOrPropertyUnionShapeCommon(), {
+ fields: Object.assign({}, classMethodOrPropertyCommon(), {
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ definite: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ variance: {
+ validate: (0, _utils.assertNodeType)("Variance"),
+ optional: true
+ }
+ })
+}));
+defineType("ClassAccessorProperty", Object.assign({
+ visitor: ["decorators", "key", "typeAnnotation", "value"],
+ builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
+ aliases: ["Property", "Accessor"]
+}, classMethodOrPropertyUnionShapeCommon(true), {
+ fields: Object.assign({}, classMethodOrPropertyCommon(), {
+ key: {
+ validate: (0, _utils.chain)(function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ return function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+ }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression", "PrivateName"))
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ definite: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ variance: {
+ validate: (0, _utils.assertNodeType)("Variance"),
+ optional: true
+ }
+ })
+}));
+defineType("ClassPrivateProperty", {
+ visitor: ["decorators", "variance", "key", "typeAnnotation", "value"],
+ builder: ["key", "value", "decorators", "static"],
+ aliases: ["Property", "Private"],
+ fields: {
+ key: {
+ validate: (0, _utils.assertNodeType)("PrivateName")
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ },
+ static: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ default: false
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ definite: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ variance: {
+ validate: (0, _utils.assertNodeType)("Variance"),
+ optional: true
+ }
+ }
+});
+defineType("ClassPrivateMethod", {
+ builder: ["kind", "key", "params", "body", "static"],
+ visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"],
+ aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"],
+ fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
+ kind: {
+ validate: (0, _utils.assertOneOf)("get", "set", "method"),
+ default: "method"
+ },
+ key: {
+ validate: (0, _utils.assertNodeType)("PrivateName")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ })
+});
+defineType("PrivateName", {
+ visitor: ["id"],
+ aliases: ["Private"],
+ fields: {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("StaticBlock", {
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("Statement")
+ },
+ aliases: ["Scopable", "BlockParent", "FunctionParent"]
+});
+defineType("ImportAttribute", {
+ visitor: ["key", "value"],
+ fields: {
+ key: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("StringLiteral")
+ }
+ }
+});
+
+//# sourceMappingURL=core.js.map
+
+}, function(modId) { var map = {"../validators/is.js":1771034509034,"../validators/isValidIdentifier.js":1771034509037,"../constants/index.js":1771034509038,"./utils.js":1771034509039}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509034, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = is;
+var _shallowEqual = require("../utils/shallowEqual.js");
+var _isType = require("./isType.js");
+var _isPlaceholderType = require("./isPlaceholderType.js");
+var _index = require("../definitions/index.js");
+function is(type, node, opts) {
+ if (!node) return false;
+ const matches = (0, _isType.default)(node.type, type);
+ if (!matches) {
+ if (!opts && node.type === "Placeholder" && type in _index.FLIPPED_ALIAS_KEYS) {
+ return (0, _isPlaceholderType.default)(node.expectedNode, type);
+ }
+ return false;
+ }
+ if (opts === undefined) {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+}
+
+//# sourceMappingURL=is.js.map
+
+}, function(modId) { var map = {"../utils/shallowEqual.js":1771034509024,"./isType.js":1771034509035,"./isPlaceholderType.js":1771034509036,"../definitions/index.js":1771034509032}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509035, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isType;
+var _index = require("../definitions/index.js");
+function isType(nodeType, targetType) {
+ if (nodeType === targetType) return true;
+ if (nodeType == null) return false;
+ if (_index.ALIAS_KEYS[targetType]) return false;
+ const aliases = _index.FLIPPED_ALIAS_KEYS[targetType];
+ if (aliases != null && aliases.includes(nodeType)) return true;
+ return false;
+}
+
+//# sourceMappingURL=isType.js.map
+
+}, function(modId) { var map = {"../definitions/index.js":1771034509032}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509036, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isPlaceholderType;
+var _index = require("../definitions/index.js");
+function isPlaceholderType(placeholderType, targetType) {
+ if (placeholderType === targetType) return true;
+ const aliases = _index.PLACEHOLDERS_ALIAS[placeholderType];
+ if (aliases != null && aliases.includes(targetType)) return true;
+ return false;
+}
+
+//# sourceMappingURL=isPlaceholderType.js.map
+
+}, function(modId) { var map = {"../definitions/index.js":1771034509032}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509037, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isValidIdentifier;
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+function isValidIdentifier(name, reserved = true) {
+ if (typeof name !== "string") return false;
+ if (reserved) {
+ if ((0, _helperValidatorIdentifier.isKeyword)(name) || (0, _helperValidatorIdentifier.isStrictReservedWord)(name, true)) {
+ return false;
+ }
+ }
+ return (0, _helperValidatorIdentifier.isIdentifierName)(name);
+}
+
+//# sourceMappingURL=isValidIdentifier.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509038, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.UPDATE_OPERATORS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.STATEMENT_OR_BLOCK_KEYS = exports.NUMBER_UNARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.LOGICAL_OPERATORS = exports.INHERIT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.EQUALITY_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.COMMENT_KEYS = exports.BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.BINARY_OPERATORS = exports.ASSIGNMENT_OPERATORS = void 0;
+const STATEMENT_OR_BLOCK_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"];
+const FLATTENABLE_KEYS = exports.FLATTENABLE_KEYS = ["body", "expressions"];
+const FOR_INIT_KEYS = exports.FOR_INIT_KEYS = ["left", "init"];
+const COMMENT_KEYS = exports.COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
+const LOGICAL_OPERATORS = exports.LOGICAL_OPERATORS = ["||", "&&", "??"];
+const UPDATE_OPERATORS = exports.UPDATE_OPERATORS = ["++", "--"];
+const BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="];
+const EQUALITY_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="];
+const COMPARISON_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"];
+const BOOLEAN_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS];
+const NUMBER_BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
+const BINARY_OPERATORS = exports.BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS, "|>"];
+const ASSIGNMENT_OPERATORS = exports.ASSIGNMENT_OPERATORS = ["=", "+=", ...NUMBER_BINARY_OPERATORS.map(op => op + "="), ...LOGICAL_OPERATORS.map(op => op + "=")];
+const BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = ["delete", "!"];
+const NUMBER_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = ["+", "-", "~"];
+const STRING_UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = ["typeof"];
+const UNARY_OPERATORS = exports.UNARY_OPERATORS = ["void", "throw", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS];
+const INHERIT_KEYS = exports.INHERIT_KEYS = {
+ optional: ["typeAnnotation", "typeParameters", "returnType"],
+ force: ["start", "loc", "end"]
+};
+exports.BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
+exports.NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding");
+
+//# sourceMappingURL=index.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509039, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.allExpandedTypes = exports.VISITOR_KEYS = exports.NODE_UNION_SHAPES__PRIVATE = exports.NODE_PARENT_VALIDATIONS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.ALIAS_KEYS = void 0;
+exports.arrayOf = arrayOf;
+exports.arrayOfType = arrayOfType;
+exports.assertEach = assertEach;
+exports.assertNodeOrValueType = assertNodeOrValueType;
+exports.assertNodeType = assertNodeType;
+exports.assertOneOf = assertOneOf;
+exports.assertOptionalChainStart = assertOptionalChainStart;
+exports.assertShape = assertShape;
+exports.assertValueType = assertValueType;
+exports.chain = chain;
+exports.default = defineType;
+exports.defineAliasedType = defineAliasedType;
+exports.validate = validate;
+exports.validateArrayOfType = validateArrayOfType;
+exports.validateOptional = validateOptional;
+exports.validateOptionalType = validateOptionalType;
+exports.validateType = validateType;
+var _is = require("../validators/is.js");
+var _validate = require("../validators/validate.js");
+const VISITOR_KEYS = exports.VISITOR_KEYS = {};
+const ALIAS_KEYS = exports.ALIAS_KEYS = {};
+const FLIPPED_ALIAS_KEYS = exports.FLIPPED_ALIAS_KEYS = {};
+const NODE_FIELDS = exports.NODE_FIELDS = {};
+const BUILDER_KEYS = exports.BUILDER_KEYS = {};
+const DEPRECATED_KEYS = exports.DEPRECATED_KEYS = {};
+const NODE_PARENT_VALIDATIONS = exports.NODE_PARENT_VALIDATIONS = {};
+const NODE_UNION_SHAPES__PRIVATE = exports.NODE_UNION_SHAPES__PRIVATE = {};
+function getType(val) {
+ if (Array.isArray(val)) {
+ return "array";
+ } else if (val === null) {
+ return "null";
+ } else {
+ return typeof val;
+ }
+}
+function validate(validate) {
+ return {
+ validate
+ };
+}
+function validateType(...typeNames) {
+ return validate(assertNodeType(...typeNames));
+}
+function validateOptional(validate) {
+ return {
+ validate,
+ optional: true
+ };
+}
+function validateOptionalType(...typeNames) {
+ return {
+ validate: assertNodeType(...typeNames),
+ optional: true
+ };
+}
+function arrayOf(elementType) {
+ return chain(assertValueType("array"), assertEach(elementType));
+}
+function arrayOfType(...typeNames) {
+ return arrayOf(assertNodeType(...typeNames));
+}
+function validateArrayOfType(...typeNames) {
+ return validate(arrayOfType(...typeNames));
+}
+function assertEach(callback) {
+ const childValidator = process.env.BABEL_TYPES_8_BREAKING ? _validate.validateChild : () => {};
+ function validator(node, key, val) {
+ if (!Array.isArray(val)) return;
+ let i = 0;
+ const subKey = {
+ toString() {
+ return `${key}[${i}]`;
+ }
+ };
+ for (; i < val.length; i++) {
+ const v = val[i];
+ callback(node, subKey, v);
+ childValidator(node, subKey, v);
+ }
+ }
+ validator.each = callback;
+ return validator;
+}
+function assertOneOf(...values) {
+ function validate(node, key, val) {
+ if (!values.includes(val)) {
+ throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`);
+ }
+ }
+ validate.oneOf = values;
+ return validate;
+}
+const allExpandedTypes = exports.allExpandedTypes = [];
+function assertNodeType(...types) {
+ const expandedTypes = new Set();
+ allExpandedTypes.push({
+ types,
+ set: expandedTypes
+ });
+ function validate(node, key, val) {
+ const valType = val == null ? void 0 : val.type;
+ if (valType != null) {
+ if (expandedTypes.has(valType)) {
+ (0, _validate.validateChild)(node, key, val);
+ return;
+ }
+ if (valType === "Placeholder") {
+ for (const type of types) {
+ if ((0, _is.default)(type, val)) {
+ (0, _validate.validateChild)(node, key, val);
+ return;
+ }
+ }
+ }
+ }
+ throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(valType)}`);
+ }
+ validate.oneOfNodeTypes = types;
+ return validate;
+}
+function assertNodeOrValueType(...types) {
+ function validate(node, key, val) {
+ const primitiveType = getType(val);
+ for (const type of types) {
+ if (primitiveType === type || (0, _is.default)(type, val)) {
+ (0, _validate.validateChild)(node, key, val);
+ return;
+ }
+ }
+ throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`);
+ }
+ validate.oneOfNodeOrValueTypes = types;
+ return validate;
+}
+function assertValueType(type) {
+ function validate(node, key, val) {
+ if (getType(val) === type) {
+ return;
+ }
+ throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`);
+ }
+ validate.type = type;
+ return validate;
+}
+function assertShape(shape) {
+ const keys = Object.keys(shape);
+ function validate(node, key, val) {
+ const errors = [];
+ for (const property of keys) {
+ try {
+ (0, _validate.validateField)(node, property, val[property], shape[property]);
+ } catch (error) {
+ if (error instanceof TypeError) {
+ errors.push(error.message);
+ continue;
+ }
+ throw error;
+ }
+ }
+ if (errors.length) {
+ throw new TypeError(`Property ${key} of ${node.type} expected to have the following:\n${errors.join("\n")}`);
+ }
+ }
+ validate.shapeOf = shape;
+ return validate;
+}
+function assertOptionalChainStart() {
+ function validate(node) {
+ var _current;
+ let current = node;
+ while (node) {
+ const {
+ type
+ } = current;
+ if (type === "OptionalCallExpression") {
+ if (current.optional) return;
+ current = current.callee;
+ continue;
+ }
+ if (type === "OptionalMemberExpression") {
+ if (current.optional) return;
+ current = current.object;
+ continue;
+ }
+ break;
+ }
+ throw new TypeError(`Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${(_current = current) == null ? void 0 : _current.type}`);
+ }
+ return validate;
+}
+function chain(...fns) {
+ function validate(...args) {
+ for (const fn of fns) {
+ fn(...args);
+ }
+ }
+ validate.chainOf = fns;
+ if (fns.length >= 2 && "type" in fns[0] && fns[0].type === "array" && !("each" in fns[1])) {
+ throw new Error(`An assertValueType("array") validator can only be followed by an assertEach(...) validator.`);
+ }
+ return validate;
+}
+const validTypeOpts = new Set(["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate", "unionShape"]);
+const validFieldKeys = new Set(["default", "optional", "deprecated", "validate"]);
+const store = {};
+function defineAliasedType(...aliases) {
+ return (type, opts = {}) => {
+ let defined = opts.aliases;
+ if (!defined) {
+ var _store$opts$inherits$;
+ if (opts.inherits) defined = (_store$opts$inherits$ = store[opts.inherits].aliases) == null ? void 0 : _store$opts$inherits$.slice();
+ defined != null ? defined : defined = [];
+ opts.aliases = defined;
+ }
+ const additional = aliases.filter(a => !defined.includes(a));
+ defined.unshift(...additional);
+ defineType(type, opts);
+ };
+}
+function defineType(type, opts = {}) {
+ const inherits = opts.inherits && store[opts.inherits] || {};
+ let fields = opts.fields;
+ if (!fields) {
+ fields = {};
+ if (inherits.fields) {
+ const keys = Object.getOwnPropertyNames(inherits.fields);
+ for (const key of keys) {
+ const field = inherits.fields[key];
+ const def = field.default;
+ if (Array.isArray(def) ? def.length > 0 : def && typeof def === "object") {
+ throw new Error("field defaults can only be primitives or empty arrays currently");
+ }
+ fields[key] = {
+ default: Array.isArray(def) ? [] : def,
+ optional: field.optional,
+ deprecated: field.deprecated,
+ validate: field.validate
+ };
+ }
+ }
+ }
+ const visitor = opts.visitor || inherits.visitor || [];
+ const aliases = opts.aliases || inherits.aliases || [];
+ const builder = opts.builder || inherits.builder || opts.visitor || [];
+ for (const k of Object.keys(opts)) {
+ if (!validTypeOpts.has(k)) {
+ throw new Error(`Unknown type option "${k}" on ${type}`);
+ }
+ }
+ if (opts.deprecatedAlias) {
+ DEPRECATED_KEYS[opts.deprecatedAlias] = type;
+ }
+ for (const key of visitor.concat(builder)) {
+ fields[key] = fields[key] || {};
+ }
+ for (const key of Object.keys(fields)) {
+ const field = fields[key];
+ if (field.default !== undefined && !builder.includes(key)) {
+ field.optional = true;
+ }
+ if (field.default === undefined) {
+ field.default = null;
+ } else if (!field.validate && field.default != null) {
+ field.validate = assertValueType(getType(field.default));
+ }
+ for (const k of Object.keys(field)) {
+ if (!validFieldKeys.has(k)) {
+ throw new Error(`Unknown field key "${k}" on ${type}.${key}`);
+ }
+ }
+ }
+ VISITOR_KEYS[type] = opts.visitor = visitor;
+ BUILDER_KEYS[type] = opts.builder = builder;
+ NODE_FIELDS[type] = opts.fields = fields;
+ ALIAS_KEYS[type] = opts.aliases = aliases;
+ aliases.forEach(alias => {
+ FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];
+ FLIPPED_ALIAS_KEYS[alias].push(type);
+ });
+ if (opts.validate) {
+ NODE_PARENT_VALIDATIONS[type] = opts.validate;
+ }
+ if (opts.unionShape) {
+ NODE_UNION_SHAPES__PRIVATE[type] = opts.unionShape;
+ }
+ store[type] = opts;
+}
+
+//# sourceMappingURL=utils.js.map
+
+}, function(modId) { var map = {"../validators/is.js":1771034509034,"../validators/validate.js":1771034509031}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509040, function(require, module, exports) {
+
+
+var _core = require("./core.js");
+var _utils = require("./utils.js");
+const defineType = (0, _utils.defineAliasedType)("Flow");
+const defineInterfaceishType = name => {
+ const isDeclareClass = name === "DeclareClass";
+ defineType(name, {
+ builder: ["id", "typeParameters", "extends", "body"],
+ visitor: ["id", "typeParameters", "extends", ...(isDeclareClass ? ["mixins", "implements"] : []), "body"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: Object.assign({
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends"))
+ }, isDeclareClass ? {
+ mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
+ implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements"))
+ } : {}, {
+ body: (0, _utils.validateType)("ObjectTypeAnnotation")
+ })
+ });
+};
+defineType("AnyTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ArrayTypeAnnotation", {
+ visitor: ["elementType"],
+ aliases: ["FlowType"],
+ fields: {
+ elementType: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("BooleanTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("BooleanLiteralTypeAnnotation", {
+ builder: ["value"],
+ aliases: ["FlowType"],
+ fields: {
+ value: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("NullLiteralTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ClassImplements", {
+ visitor: ["id", "typeParameters"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
+ }
+});
+defineInterfaceishType("DeclareClass");
+defineType("DeclareFunction", {
+ builder: ["id"],
+ visitor: ["id", "predicate"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ predicate: (0, _utils.validateOptionalType)("DeclaredPredicate")
+ }
+});
+defineInterfaceishType("DeclareInterface");
+defineType("DeclareModule", {
+ builder: ["id", "body", "kind"],
+ visitor: ["id", "body"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier", "StringLiteral"),
+ body: (0, _utils.validateType)("BlockStatement"),
+ kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES"))
+ }
+});
+defineType("DeclareModuleExports", {
+ visitor: ["typeAnnotation"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
+ }
+});
+defineType("DeclareTypeAlias", {
+ visitor: ["id", "typeParameters", "right"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ right: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("DeclareOpaqueType", {
+ visitor: ["id", "typeParameters", "supertype"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ supertype: (0, _utils.validateOptionalType)("FlowType"),
+ impltype: (0, _utils.validateOptionalType)("FlowType")
+ }
+});
+defineType("DeclareVariable", {
+ visitor: ["id"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier")
+ }
+});
+defineType("DeclareExportDeclaration", {
+ visitor: ["declaration", "specifiers", "source", "attributes"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: Object.assign({
+ declaration: (0, _utils.validateOptionalType)("Flow"),
+ specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ExportSpecifier", "ExportNamespaceSpecifier")),
+ source: (0, _utils.validateOptionalType)("StringLiteral"),
+ default: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
+ }, _core.importAttributes)
+});
+defineType("DeclareExportAllDeclaration", {
+ visitor: ["source", "attributes"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: Object.assign({
+ source: (0, _utils.validateType)("StringLiteral"),
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
+ }, _core.importAttributes)
+});
+defineType("DeclaredPredicate", {
+ visitor: ["value"],
+ aliases: ["FlowPredicate"],
+ fields: {
+ value: (0, _utils.validateType)("Flow")
+ }
+});
+defineType("ExistsTypeAnnotation", {
+ aliases: ["FlowType"]
+});
+defineType("FunctionTypeAnnotation", {
+ builder: ["typeParameters", "params", "rest", "returnType"],
+ visitor: ["typeParameters", "this", "params", "rest", "returnType"],
+ aliases: ["FlowType"],
+ fields: {
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ params: (0, _utils.validateArrayOfType)("FunctionTypeParam"),
+ rest: (0, _utils.validateOptionalType)("FunctionTypeParam"),
+ this: (0, _utils.validateOptionalType)("FunctionTypeParam"),
+ returnType: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("FunctionTypeParam", {
+ visitor: ["name", "typeAnnotation"],
+ fields: {
+ name: (0, _utils.validateOptionalType)("Identifier"),
+ typeAnnotation: (0, _utils.validateType)("FlowType"),
+ optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("GenericTypeAnnotation", {
+ visitor: ["id", "typeParameters"],
+ aliases: ["FlowType"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
+ }
+});
+defineType("InferredPredicate", {
+ aliases: ["FlowPredicate"]
+});
+defineType("InterfaceExtends", {
+ visitor: ["id", "typeParameters"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
+ }
+});
+defineInterfaceishType("InterfaceDeclaration");
+defineType("InterfaceTypeAnnotation", {
+ visitor: ["extends", "body"],
+ aliases: ["FlowType"],
+ fields: {
+ extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
+ body: (0, _utils.validateType)("ObjectTypeAnnotation")
+ }
+});
+defineType("IntersectionTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["FlowType"],
+ fields: {
+ types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("MixedTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("EmptyTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("NullableTypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ aliases: ["FlowType"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("NumberLiteralTypeAnnotation", {
+ builder: ["value"],
+ aliases: ["FlowType"],
+ fields: {
+ value: (0, _utils.validate)((0, _utils.assertValueType)("number"))
+ }
+});
+defineType("NumberTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ObjectTypeAnnotation", {
+ visitor: ["properties", "indexers", "callProperties", "internalSlots"],
+ aliases: ["FlowType"],
+ builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"],
+ fields: {
+ properties: (0, _utils.validate)((0, _utils.arrayOfType)("ObjectTypeProperty", "ObjectTypeSpreadProperty")),
+ indexers: {
+ validate: (0, _utils.arrayOfType)("ObjectTypeIndexer"),
+ optional: true,
+ default: []
+ },
+ callProperties: {
+ validate: (0, _utils.arrayOfType)("ObjectTypeCallProperty"),
+ optional: true,
+ default: []
+ },
+ internalSlots: {
+ validate: (0, _utils.arrayOfType)("ObjectTypeInternalSlot"),
+ optional: true,
+ default: []
+ },
+ exact: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ default: false
+ },
+ inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeInternalSlot", {
+ visitor: ["id", "value"],
+ builder: ["id", "value", "optional", "static", "method"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ value: (0, _utils.validateType)("FlowType"),
+ optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeCallProperty", {
+ visitor: ["value"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ value: (0, _utils.validateType)("FlowType"),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeIndexer", {
+ visitor: ["variance", "id", "key", "value"],
+ builder: ["id", "key", "value", "variance"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ id: (0, _utils.validateOptionalType)("Identifier"),
+ key: (0, _utils.validateType)("FlowType"),
+ value: (0, _utils.validateType)("FlowType"),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ variance: (0, _utils.validateOptionalType)("Variance")
+ }
+});
+defineType("ObjectTypeProperty", {
+ visitor: ["key", "value", "variance"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ key: (0, _utils.validateType)("Identifier", "StringLiteral"),
+ value: (0, _utils.validateType)("FlowType"),
+ kind: (0, _utils.validate)((0, _utils.assertOneOf)("init", "get", "set")),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ proto: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ variance: (0, _utils.validateOptionalType)("Variance"),
+ method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeSpreadProperty", {
+ visitor: ["argument"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ argument: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("OpaqueType", {
+ visitor: ["id", "typeParameters", "supertype", "impltype"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ supertype: (0, _utils.validateOptionalType)("FlowType"),
+ impltype: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("QualifiedTypeIdentifier", {
+ visitor: ["qualification", "id"],
+ builder: ["id", "qualification"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ qualification: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier")
+ }
+});
+defineType("StringLiteralTypeAnnotation", {
+ builder: ["value"],
+ aliases: ["FlowType"],
+ fields: {
+ value: (0, _utils.validate)((0, _utils.assertValueType)("string"))
+ }
+});
+defineType("StringTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("SymbolTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ThisTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("TupleTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["FlowType"],
+ fields: {
+ types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("TypeofTypeAnnotation", {
+ visitor: ["argument"],
+ aliases: ["FlowType"],
+ fields: {
+ argument: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("TypeAlias", {
+ visitor: ["id", "typeParameters", "right"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ right: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("TypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("TypeCastExpression", {
+ visitor: ["expression", "typeAnnotation"],
+ aliases: ["ExpressionWrapper", "Expression"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression"),
+ typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
+ }
+});
+defineType("TypeParameter", {
+ visitor: ["bound", "default", "variance"],
+ fields: {
+ name: (0, _utils.validate)((0, _utils.assertValueType)("string")),
+ bound: (0, _utils.validateOptionalType)("TypeAnnotation"),
+ default: (0, _utils.validateOptionalType)("FlowType"),
+ variance: (0, _utils.validateOptionalType)("Variance")
+ }
+});
+defineType("TypeParameterDeclaration", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter"))
+ }
+});
+defineType("TypeParameterInstantiation", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("UnionTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["FlowType"],
+ fields: {
+ types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("Variance", {
+ builder: ["kind"],
+ fields: {
+ kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus"))
+ }
+});
+defineType("VoidTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("EnumDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "body"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ body: (0, _utils.validateType)("EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody")
+ }
+});
+defineType("EnumBooleanBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ members: (0, _utils.validateArrayOfType)("EnumBooleanMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumNumberBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ members: (0, _utils.validateArrayOfType)("EnumNumberMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumStringBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ members: (0, _utils.validateArrayOfType)("EnumStringMember", "EnumDefaultedMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumSymbolBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ members: (0, _utils.validateArrayOfType)("EnumDefaultedMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumBooleanMember", {
+ aliases: ["EnumMember"],
+ builder: ["id"],
+ visitor: ["id", "init"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ init: (0, _utils.validateType)("BooleanLiteral")
+ }
+});
+defineType("EnumNumberMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id", "init"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ init: (0, _utils.validateType)("NumericLiteral")
+ }
+});
+defineType("EnumStringMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id", "init"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ init: (0, _utils.validateType)("StringLiteral")
+ }
+});
+defineType("EnumDefaultedMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier")
+ }
+});
+defineType("IndexedAccessType", {
+ visitor: ["objectType", "indexType"],
+ aliases: ["FlowType"],
+ fields: {
+ objectType: (0, _utils.validateType)("FlowType"),
+ indexType: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("OptionalIndexedAccessType", {
+ visitor: ["objectType", "indexType"],
+ aliases: ["FlowType"],
+ fields: {
+ objectType: (0, _utils.validateType)("FlowType"),
+ indexType: (0, _utils.validateType)("FlowType"),
+ optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+
+//# sourceMappingURL=flow.js.map
+
+}, function(modId) { var map = {"./core.js":1771034509033,"./utils.js":1771034509039}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509041, function(require, module, exports) {
+
+
+var _utils = require("./utils.js");
+const defineType = (0, _utils.defineAliasedType)("JSX");
+defineType("JSXAttribute", {
+ visitor: ["name", "value"],
+ aliases: ["Immutable"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName")
+ },
+ value: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer")
+ }
+ }
+});
+defineType("JSXClosingElement", {
+ visitor: ["name"],
+ aliases: ["Immutable"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
+ }
+ }
+});
+defineType("JSXElement", {
+ builder: ["openingElement", "closingElement", "children", "selfClosing"],
+ visitor: ["openingElement", "children", "closingElement"],
+ aliases: ["Immutable", "Expression"],
+ fields: Object.assign({
+ openingElement: {
+ validate: (0, _utils.assertNodeType)("JSXOpeningElement")
+ },
+ closingElement: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("JSXClosingElement")
+ },
+ children: (0, _utils.validateArrayOfType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")
+ }, {
+ selfClosing: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ })
+});
+defineType("JSXEmptyExpression", {});
+defineType("JSXExpressionContainer", {
+ visitor: ["expression"],
+ aliases: ["Immutable"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression")
+ }
+ }
+});
+defineType("JSXSpreadChild", {
+ visitor: ["expression"],
+ aliases: ["Immutable"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("JSXIdentifier", {
+ builder: ["name"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("JSXMemberExpression", {
+ visitor: ["object", "property"],
+ fields: {
+ object: {
+ validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier")
+ },
+ property: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier")
+ }
+ }
+});
+defineType("JSXNamespacedName", {
+ visitor: ["namespace", "name"],
+ fields: {
+ namespace: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier")
+ },
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier")
+ }
+ }
+});
+defineType("JSXOpeningElement", {
+ builder: ["name", "attributes", "selfClosing"],
+ visitor: ["name", "typeParameters", "typeArguments", "attributes"],
+ aliases: ["Immutable"],
+ fields: Object.assign({
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
+ },
+ selfClosing: {
+ default: false
+ },
+ attributes: (0, _utils.validateArrayOfType)("JSXAttribute", "JSXSpreadAttribute"),
+ typeArguments: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
+ optional: true
+ }
+ }, {
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+ optional: true
+ }
+ })
+});
+defineType("JSXSpreadAttribute", {
+ visitor: ["argument"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("JSXText", {
+ aliases: ["Immutable"],
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("JSXFragment", {
+ builder: ["openingFragment", "closingFragment", "children"],
+ visitor: ["openingFragment", "children", "closingFragment"],
+ aliases: ["Immutable", "Expression"],
+ fields: {
+ openingFragment: {
+ validate: (0, _utils.assertNodeType)("JSXOpeningFragment")
+ },
+ closingFragment: {
+ validate: (0, _utils.assertNodeType)("JSXClosingFragment")
+ },
+ children: (0, _utils.validateArrayOfType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")
+ }
+});
+defineType("JSXOpeningFragment", {
+ aliases: ["Immutable"]
+});
+defineType("JSXClosingFragment", {
+ aliases: ["Immutable"]
+});
+
+//# sourceMappingURL=jsx.js.map
+
+}, function(modId) { var map = {"./utils.js":1771034509039}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509042, function(require, module, exports) {
+
+
+var _utils = require("./utils.js");
+var _placeholders = require("./placeholders.js");
+var _core = require("./core.js");
+const defineType = (0, _utils.defineAliasedType)("Miscellaneous");
+defineType("Noop", {
+ visitor: []
+});
+defineType("Placeholder", {
+ visitor: [],
+ builder: ["expectedNode", "name"],
+ fields: Object.assign({
+ name: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ expectedNode: {
+ validate: (0, _utils.assertOneOf)(..._placeholders.PLACEHOLDERS)
+ }
+ }, (0, _core.patternLikeCommon)())
+});
+defineType("V8IntrinsicIdentifier", {
+ builder: ["name"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+
+//# sourceMappingURL=misc.js.map
+
+}, function(modId) { var map = {"./utils.js":1771034509039,"./placeholders.js":1771034509043,"./core.js":1771034509033}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509043, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS = void 0;
+var _utils = require("./utils.js");
+const PLACEHOLDERS = exports.PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"];
+const PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS_ALIAS = {
+ Declaration: ["Statement"],
+ Pattern: ["PatternLike", "LVal"]
+};
+for (const type of PLACEHOLDERS) {
+ const alias = _utils.ALIAS_KEYS[type];
+ if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type] = alias;
+}
+const PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_FLIPPED_ALIAS = {};
+Object.keys(PLACEHOLDERS_ALIAS).forEach(type => {
+ PLACEHOLDERS_ALIAS[type].forEach(alias => {
+ if (!hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {
+ PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];
+ }
+ PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);
+ });
+});
+
+//# sourceMappingURL=placeholders.js.map
+
+}, function(modId) { var map = {"./utils.js":1771034509039}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509044, function(require, module, exports) {
+
+
+var _utils = require("./utils.js");
+(0, _utils.default)("ArgumentPlaceholder", {});
+(0, _utils.default)("BindExpression", {
+ visitor: ["object", "callee"],
+ aliases: ["Expression"],
+ fields: !process.env.BABEL_TYPES_8_BREAKING ? {
+ object: {
+ validate: Object.assign(() => {}, {
+ oneOfNodeTypes: ["Expression"]
+ })
+ },
+ callee: {
+ validate: Object.assign(() => {}, {
+ oneOfNodeTypes: ["Expression"]
+ })
+ }
+ } : {
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+(0, _utils.default)("Decorator", {
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+(0, _utils.default)("DoExpression", {
+ visitor: ["body"],
+ builder: ["body", "async"],
+ aliases: ["Expression"],
+ fields: {
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ },
+ async: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ default: false
+ }
+ }
+});
+(0, _utils.default)("ExportDefaultSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+(0, _utils.default)("RecordExpression", {
+ visitor: ["properties"],
+ aliases: ["Expression"],
+ fields: {
+ properties: (0, _utils.validateArrayOfType)("ObjectProperty", "SpreadElement")
+ }
+});
+(0, _utils.default)("TupleExpression", {
+ fields: {
+ elements: {
+ validate: (0, _utils.arrayOfType)("Expression", "SpreadElement"),
+ default: []
+ }
+ },
+ visitor: ["elements"],
+ aliases: ["Expression"]
+});
+(0, _utils.default)("DecimalLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+(0, _utils.default)("ModuleExpression", {
+ visitor: ["body"],
+ fields: {
+ body: {
+ validate: (0, _utils.assertNodeType)("Program")
+ }
+ },
+ aliases: ["Expression"]
+});
+(0, _utils.default)("TopicReference", {
+ aliases: ["Expression"]
+});
+(0, _utils.default)("PipelineTopicExpression", {
+ builder: ["expression"],
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Expression"]
+});
+(0, _utils.default)("PipelineBareFunction", {
+ builder: ["callee"],
+ visitor: ["callee"],
+ fields: {
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Expression"]
+});
+(0, _utils.default)("PipelinePrimaryTopicReference", {
+ aliases: ["Expression"]
+});
+(0, _utils.default)("VoidPattern", {
+ aliases: ["Pattern", "PatternLike", "FunctionParameter"]
+});
+
+//# sourceMappingURL=experimental.js.map
+
+}, function(modId) { var map = {"./utils.js":1771034509039}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509045, function(require, module, exports) {
+
+
+var _utils = require("./utils.js");
+var _core = require("./core.js");
+var _is = require("../validators/is.js");
+const defineType = (0, _utils.defineAliasedType)("TypeScript");
+const bool = (0, _utils.assertValueType)("boolean");
+const tSFunctionTypeAnnotationCommon = () => ({
+ returnType: {
+ validate: (0, _utils.assertNodeType)("TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ }
+});
+defineType("TSParameterProperty", {
+ aliases: ["LVal"],
+ visitor: ["parameter"],
+ fields: {
+ accessibility: {
+ validate: (0, _utils.assertOneOf)("public", "private", "protected"),
+ optional: true
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ parameter: {
+ validate: (0, _utils.assertNodeType)("Identifier", "AssignmentPattern")
+ },
+ override: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.arrayOfType)("Decorator"),
+ optional: true
+ }
+ }
+});
+defineType("TSDeclareFunction", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "typeParameters", "params", "returnType"],
+ fields: Object.assign({}, (0, _core.functionDeclarationCommon)(), tSFunctionTypeAnnotationCommon())
+});
+defineType("TSDeclareMethod", Object.assign({
+ visitor: ["decorators", "key", "typeParameters", "params", "returnType"]
+}, (0, _core.classMethodOrPropertyUnionShapeCommon)(), {
+ fields: Object.assign({}, (0, _core.classMethodOrDeclareMethodCommon)(), tSFunctionTypeAnnotationCommon())
+}));
+defineType("TSQualifiedName", {
+ aliases: ["TSEntityName"],
+ visitor: ["left", "right"],
+ fields: {
+ left: (0, _utils.validateType)("TSEntityName"),
+ right: (0, _utils.validateType)("Identifier")
+ }
+});
+const signatureDeclarationCommon = () => ({
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"),
+ ["parameters"]: (0, _utils.validateArrayOfType)("ArrayPattern", "Identifier", "ObjectPattern", "RestElement"),
+ ["typeAnnotation"]: (0, _utils.validateOptionalType)("TSTypeAnnotation")
+});
+const callConstructSignatureDeclaration = {
+ aliases: ["TSTypeElement"],
+ visitor: ["typeParameters", "parameters", "typeAnnotation"],
+ fields: signatureDeclarationCommon()
+};
+defineType("TSCallSignatureDeclaration", callConstructSignatureDeclaration);
+defineType("TSConstructSignatureDeclaration", callConstructSignatureDeclaration);
+const namedTypeElementCommon = () => ({
+ key: (0, _utils.validateType)("Expression"),
+ computed: {
+ default: false
+ },
+ optional: (0, _utils.validateOptional)(bool)
+});
+defineType("TSPropertySignature", {
+ aliases: ["TSTypeElement"],
+ visitor: ["key", "typeAnnotation"],
+ fields: Object.assign({}, namedTypeElementCommon(), {
+ readonly: (0, _utils.validateOptional)(bool),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"),
+ kind: {
+ optional: true,
+ validate: (0, _utils.assertOneOf)("get", "set")
+ }
+ })
+});
+defineType("TSMethodSignature", {
+ aliases: ["TSTypeElement"],
+ visitor: ["key", "typeParameters", "parameters", "typeAnnotation"],
+ fields: Object.assign({}, signatureDeclarationCommon(), namedTypeElementCommon(), {
+ kind: {
+ validate: (0, _utils.assertOneOf)("method", "get", "set")
+ }
+ })
+});
+defineType("TSIndexSignature", {
+ aliases: ["TSTypeElement"],
+ visitor: ["parameters", "typeAnnotation"],
+ fields: {
+ readonly: (0, _utils.validateOptional)(bool),
+ static: (0, _utils.validateOptional)(bool),
+ parameters: (0, _utils.validateArrayOfType)("Identifier"),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation")
+ }
+});
+const tsKeywordTypes = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSIntrinsicKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"];
+for (const type of tsKeywordTypes) {
+ defineType(type, {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: [],
+ fields: {}
+ });
+}
+defineType("TSThisType", {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: [],
+ fields: {}
+});
+const fnOrCtrBase = {
+ aliases: ["TSType"],
+ visitor: ["typeParameters", "parameters", "typeAnnotation"]
+};
+defineType("TSFunctionType", Object.assign({}, fnOrCtrBase, {
+ fields: signatureDeclarationCommon()
+}));
+defineType("TSConstructorType", Object.assign({}, fnOrCtrBase, {
+ fields: Object.assign({}, signatureDeclarationCommon(), {
+ abstract: (0, _utils.validateOptional)(bool)
+ })
+}));
+defineType("TSTypeReference", {
+ aliases: ["TSType"],
+ visitor: ["typeName", "typeParameters"],
+ fields: {
+ typeName: (0, _utils.validateType)("TSEntityName"),
+ ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+defineType("TSTypePredicate", {
+ aliases: ["TSType"],
+ visitor: ["parameterName", "typeAnnotation"],
+ builder: ["parameterName", "typeAnnotation", "asserts"],
+ fields: {
+ parameterName: (0, _utils.validateType)("Identifier", "TSThisType"),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"),
+ asserts: (0, _utils.validateOptional)(bool)
+ }
+});
+defineType("TSTypeQuery", {
+ aliases: ["TSType"],
+ visitor: ["exprName", "typeParameters"],
+ fields: {
+ exprName: (0, _utils.validateType)("TSEntityName", "TSImportType"),
+ ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+defineType("TSTypeLiteral", {
+ aliases: ["TSType"],
+ visitor: ["members"],
+ fields: {
+ members: (0, _utils.validateArrayOfType)("TSTypeElement")
+ }
+});
+defineType("TSArrayType", {
+ aliases: ["TSType"],
+ visitor: ["elementType"],
+ fields: {
+ elementType: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSTupleType", {
+ aliases: ["TSType"],
+ visitor: ["elementTypes"],
+ fields: {
+ elementTypes: (0, _utils.validateArrayOfType)("TSType", "TSNamedTupleMember")
+ }
+});
+defineType("TSOptionalType", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSRestType", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSNamedTupleMember", {
+ visitor: ["label", "elementType"],
+ builder: ["label", "elementType", "optional"],
+ fields: {
+ label: (0, _utils.validateType)("Identifier"),
+ optional: {
+ validate: bool,
+ default: false
+ },
+ elementType: (0, _utils.validateType)("TSType")
+ }
+});
+const unionOrIntersection = {
+ aliases: ["TSType"],
+ visitor: ["types"],
+ fields: {
+ types: (0, _utils.validateArrayOfType)("TSType")
+ }
+};
+defineType("TSUnionType", unionOrIntersection);
+defineType("TSIntersectionType", unionOrIntersection);
+defineType("TSConditionalType", {
+ aliases: ["TSType"],
+ visitor: ["checkType", "extendsType", "trueType", "falseType"],
+ fields: {
+ checkType: (0, _utils.validateType)("TSType"),
+ extendsType: (0, _utils.validateType)("TSType"),
+ trueType: (0, _utils.validateType)("TSType"),
+ falseType: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSInferType", {
+ aliases: ["TSType"],
+ visitor: ["typeParameter"],
+ fields: {
+ typeParameter: (0, _utils.validateType)("TSTypeParameter")
+ }
+});
+defineType("TSParenthesizedType", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSTypeOperator", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ builder: ["typeAnnotation", "operator"],
+ fields: {
+ operator: {
+ validate: (0, _utils.assertValueType)("string"),
+ default: "keyof"
+ },
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSIndexedAccessType", {
+ aliases: ["TSType"],
+ visitor: ["objectType", "indexType"],
+ fields: {
+ objectType: (0, _utils.validateType)("TSType"),
+ indexType: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSMappedType", {
+ aliases: ["TSType"],
+ visitor: ["typeParameter", "nameType", "typeAnnotation"],
+ builder: ["typeParameter", "typeAnnotation", "nameType"],
+ fields: Object.assign({}, {
+ typeParameter: (0, _utils.validateType)("TSTypeParameter")
+ }, {
+ readonly: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, "+", "-")),
+ optional: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, "+", "-")),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSType"),
+ nameType: (0, _utils.validateOptionalType)("TSType")
+ })
+});
+defineType("TSTemplateLiteralType", {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: ["quasis", "types"],
+ fields: {
+ quasis: (0, _utils.validateArrayOfType)("TemplateElement"),
+ types: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSType")), function (node, key, val) {
+ if (node.quasis.length !== val.length + 1) {
+ throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of types.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);
+ }
+ })
+ }
+ }
+});
+defineType("TSLiteralType", {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: ["literal"],
+ fields: {
+ literal: {
+ validate: function () {
+ const unaryExpression = (0, _utils.assertNodeType)("NumericLiteral", "BigIntLiteral");
+ const unaryOperator = (0, _utils.assertOneOf)("-");
+ const literal = (0, _utils.assertNodeType)("NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral");
+ const validator = function validator(parent, key, node) {
+ if ((0, _is.default)("UnaryExpression", node)) {
+ unaryOperator(node, "operator", node.operator);
+ unaryExpression(node, "argument", node.argument);
+ } else {
+ literal(parent, key, node);
+ }
+ };
+ validator.oneOfNodeTypes = ["NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral", "UnaryExpression"];
+ return validator;
+ }()
+ }
+ }
+});
+defineType("TSExpressionWithTypeArguments", {
+ aliases: ["TSType"],
+ visitor: ["expression", "typeParameters"],
+ fields: {
+ expression: (0, _utils.validateType)("TSEntityName"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+defineType("TSInterfaceDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "typeParameters", "extends", "body"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"),
+ extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("TSExpressionWithTypeArguments")),
+ body: (0, _utils.validateType)("TSInterfaceBody")
+ }
+});
+defineType("TSInterfaceBody", {
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("TSTypeElement")
+ }
+});
+defineType("TSTypeAliasDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "typeParameters", "typeAnnotation"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"),
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSInstantiationExpression", {
+ aliases: ["Expression"],
+ visitor: ["expression", "typeParameters"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression"),
+ ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+const TSTypeExpression = {
+ aliases: ["Expression", "LVal", "PatternLike"],
+ visitor: ["expression", "typeAnnotation"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression"),
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+};
+defineType("TSAsExpression", TSTypeExpression);
+defineType("TSSatisfiesExpression", TSTypeExpression);
+defineType("TSTypeAssertion", {
+ aliases: ["Expression", "LVal", "PatternLike"],
+ visitor: ["typeAnnotation", "expression"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType"),
+ expression: (0, _utils.validateType)("Expression")
+ }
+});
+defineType("TSEnumBody", {
+ visitor: ["members"],
+ fields: {
+ members: (0, _utils.validateArrayOfType)("TSEnumMember")
+ }
+});
+defineType("TSEnumDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "members"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ const: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ members: (0, _utils.validateArrayOfType)("TSEnumMember"),
+ initializer: (0, _utils.validateOptionalType)("Expression"),
+ body: (0, _utils.validateOptionalType)("TSEnumBody")
+ }
+});
+defineType("TSEnumMember", {
+ visitor: ["id", "initializer"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier", "StringLiteral"),
+ initializer: (0, _utils.validateOptionalType)("Expression")
+ }
+});
+defineType("TSModuleDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "body"],
+ fields: Object.assign({
+ kind: {
+ validate: (0, _utils.assertOneOf)("global", "module", "namespace")
+ },
+ declare: (0, _utils.validateOptional)(bool)
+ }, {
+ global: (0, _utils.validateOptional)(bool)
+ }, {
+ id: (0, _utils.validateType)("Identifier", "StringLiteral"),
+ body: (0, _utils.validateType)("TSModuleBlock", "TSModuleDeclaration")
+ })
+});
+defineType("TSModuleBlock", {
+ aliases: ["Scopable", "Block", "BlockParent", "FunctionParent"],
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("Statement")
+ }
+});
+defineType("TSImportType", {
+ aliases: ["TSType"],
+ builder: ["argument", "qualifier", "typeParameters"],
+ visitor: ["argument", "options", "qualifier", "typeParameters"],
+ fields: Object.assign({}, {
+ argument: (0, _utils.validateType)("StringLiteral")
+ }, {
+ qualifier: (0, _utils.validateOptionalType)("TSEntityName")
+ }, {
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }, {
+ options: {
+ validate: (0, _utils.assertNodeType)("ObjectExpression"),
+ optional: true
+ }
+ })
+});
+defineType("TSImportEqualsDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "moduleReference"],
+ fields: Object.assign({}, {
+ isExport: (0, _utils.validate)(bool)
+ }, {
+ id: (0, _utils.validateType)("Identifier"),
+ moduleReference: (0, _utils.validateType)("TSEntityName", "TSExternalModuleReference"),
+ importKind: {
+ validate: (0, _utils.assertOneOf)("type", "value"),
+ optional: true
+ }
+ })
+});
+defineType("TSExternalModuleReference", {
+ visitor: ["expression"],
+ fields: {
+ expression: (0, _utils.validateType)("StringLiteral")
+ }
+});
+defineType("TSNonNullExpression", {
+ aliases: ["Expression", "LVal", "PatternLike"],
+ visitor: ["expression"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression")
+ }
+});
+defineType("TSExportAssignment", {
+ aliases: ["Statement"],
+ visitor: ["expression"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression")
+ }
+});
+defineType("TSNamespaceExportDeclaration", {
+ aliases: ["Statement"],
+ visitor: ["id"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier")
+ }
+});
+defineType("TSTypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TSType")
+ }
+ }
+});
+defineType("TSTypeParameterInstantiation", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validateArrayOfType)("TSType")
+ }
+});
+defineType("TSTypeParameterDeclaration", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validateArrayOfType)("TSTypeParameter")
+ }
+});
+defineType("TSTypeParameter", {
+ builder: ["constraint", "default", "name"],
+ visitor: ["constraint", "default"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ in: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ out: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ const: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ constraint: {
+ validate: (0, _utils.assertNodeType)("TSType"),
+ optional: true
+ },
+ default: {
+ validate: (0, _utils.assertNodeType)("TSType"),
+ optional: true
+ }
+ }
+});
+
+//# sourceMappingURL=typescript.js.map
+
+}, function(modId) { var map = {"./utils.js":1771034509039,"./core.js":1771034509033,"../validators/is.js":1771034509034}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509046, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.DEPRECATED_ALIASES = void 0;
+const DEPRECATED_ALIASES = exports.DEPRECATED_ALIASES = {
+ ModuleDeclaration: "ImportOrExportDeclaration"
+};
+
+//# sourceMappingURL=deprecated-aliases.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509047, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.JSXIdentifier = exports.JSXFragment = exports.JSXExpressionContainer = exports.JSXEmptyExpression = exports.JSXElement = exports.JSXClosingFragment = exports.JSXClosingElement = exports.JSXAttribute = exports.IntersectionTypeAnnotation = exports.InterpreterDirective = exports.InterfaceTypeAnnotation = exports.InterfaceExtends = exports.InterfaceDeclaration = exports.InferredPredicate = exports.IndexedAccessType = exports.ImportSpecifier = exports.ImportNamespaceSpecifier = exports.ImportExpression = exports.ImportDefaultSpecifier = exports.ImportDeclaration = exports.ImportAttribute = exports.Import = exports.IfStatement = exports.Identifier = exports.GenericTypeAnnotation = exports.FunctionTypeParam = exports.FunctionTypeAnnotation = exports.FunctionExpression = exports.FunctionDeclaration = exports.ForStatement = exports.ForOfStatement = exports.ForInStatement = exports.File = exports.ExpressionStatement = exports.ExportSpecifier = exports.ExportNamespaceSpecifier = exports.ExportNamedDeclaration = exports.ExportDefaultSpecifier = exports.ExportDefaultDeclaration = exports.ExportAllDeclaration = exports.ExistsTypeAnnotation = exports.EnumSymbolBody = exports.EnumStringMember = exports.EnumStringBody = exports.EnumNumberMember = exports.EnumNumberBody = exports.EnumDefaultedMember = exports.EnumDeclaration = exports.EnumBooleanMember = exports.EnumBooleanBody = exports.EmptyTypeAnnotation = exports.EmptyStatement = exports.DoWhileStatement = exports.DoExpression = exports.DirectiveLiteral = exports.Directive = exports.Decorator = exports.DeclaredPredicate = exports.DeclareVariable = exports.DeclareTypeAlias = exports.DeclareOpaqueType = exports.DeclareModuleExports = exports.DeclareModule = exports.DeclareInterface = exports.DeclareFunction = exports.DeclareExportDeclaration = exports.DeclareExportAllDeclaration = exports.DeclareClass = exports.DecimalLiteral = exports.DebuggerStatement = exports.ContinueStatement = exports.ConditionalExpression = exports.ClassProperty = exports.ClassPrivateProperty = exports.ClassPrivateMethod = exports.ClassMethod = exports.ClassImplements = exports.ClassExpression = exports.ClassDeclaration = exports.ClassBody = exports.ClassAccessorProperty = exports.CatchClause = exports.CallExpression = exports.BreakStatement = exports.BooleanTypeAnnotation = exports.BooleanLiteralTypeAnnotation = exports.BooleanLiteral = exports.BlockStatement = exports.BindExpression = exports.BinaryExpression = exports.BigIntLiteral = exports.AwaitExpression = exports.AssignmentPattern = exports.AssignmentExpression = exports.ArrowFunctionExpression = exports.ArrayTypeAnnotation = exports.ArrayPattern = exports.ArrayExpression = exports.ArgumentPlaceholder = exports.AnyTypeAnnotation = void 0;
+exports.TSNumberKeyword = exports.TSNullKeyword = exports.TSNonNullExpression = exports.TSNeverKeyword = exports.TSNamespaceExportDeclaration = exports.TSNamedTupleMember = exports.TSModuleDeclaration = exports.TSModuleBlock = exports.TSMethodSignature = exports.TSMappedType = exports.TSLiteralType = exports.TSIntrinsicKeyword = exports.TSIntersectionType = exports.TSInterfaceDeclaration = exports.TSInterfaceBody = exports.TSInstantiationExpression = exports.TSInferType = exports.TSIndexedAccessType = exports.TSIndexSignature = exports.TSImportType = exports.TSImportEqualsDeclaration = exports.TSFunctionType = exports.TSExternalModuleReference = exports.TSExpressionWithTypeArguments = exports.TSExportAssignment = exports.TSEnumMember = exports.TSEnumDeclaration = exports.TSEnumBody = exports.TSDeclareMethod = exports.TSDeclareFunction = exports.TSConstructorType = exports.TSConstructSignatureDeclaration = exports.TSConditionalType = exports.TSCallSignatureDeclaration = exports.TSBooleanKeyword = exports.TSBigIntKeyword = exports.TSAsExpression = exports.TSArrayType = exports.TSAnyKeyword = exports.SymbolTypeAnnotation = exports.SwitchStatement = exports.SwitchCase = exports.Super = exports.StringTypeAnnotation = exports.StringLiteralTypeAnnotation = exports.StringLiteral = exports.StaticBlock = exports.SpreadProperty = exports.SpreadElement = exports.SequenceExpression = exports.ReturnStatement = exports.RestProperty = exports.RestElement = exports.RegexLiteral = exports.RegExpLiteral = exports.RecordExpression = exports.QualifiedTypeIdentifier = exports.Program = exports.PrivateName = exports.Placeholder = exports.PipelineTopicExpression = exports.PipelinePrimaryTopicReference = exports.PipelineBareFunction = exports.ParenthesizedExpression = exports.OptionalMemberExpression = exports.OptionalIndexedAccessType = exports.OptionalCallExpression = exports.OpaqueType = exports.ObjectTypeSpreadProperty = exports.ObjectTypeProperty = exports.ObjectTypeInternalSlot = exports.ObjectTypeIndexer = exports.ObjectTypeCallProperty = exports.ObjectTypeAnnotation = exports.ObjectProperty = exports.ObjectPattern = exports.ObjectMethod = exports.ObjectExpression = exports.NumericLiteral = exports.NumberTypeAnnotation = exports.NumberLiteralTypeAnnotation = exports.NumberLiteral = exports.NullableTypeAnnotation = exports.NullLiteralTypeAnnotation = exports.NullLiteral = exports.Noop = exports.NewExpression = exports.ModuleExpression = exports.MixedTypeAnnotation = exports.MetaProperty = exports.MemberExpression = exports.LogicalExpression = exports.LabeledStatement = exports.JSXText = exports.JSXSpreadChild = exports.JSXSpreadAttribute = exports.JSXOpeningFragment = exports.JSXOpeningElement = exports.JSXNamespacedName = exports.JSXMemberExpression = void 0;
+exports.YieldExpression = exports.WithStatement = exports.WhileStatement = exports.VoidTypeAnnotation = exports.VoidPattern = exports.Variance = exports.VariableDeclarator = exports.VariableDeclaration = exports.V8IntrinsicIdentifier = exports.UpdateExpression = exports.UnionTypeAnnotation = exports.UnaryExpression = exports.TypeofTypeAnnotation = exports.TypeParameterInstantiation = exports.TypeParameterDeclaration = exports.TypeParameter = exports.TypeCastExpression = exports.TypeAnnotation = exports.TypeAlias = exports.TupleTypeAnnotation = exports.TupleExpression = exports.TryStatement = exports.TopicReference = exports.ThrowStatement = exports.ThisTypeAnnotation = exports.ThisExpression = exports.TemplateLiteral = exports.TemplateElement = exports.TaggedTemplateExpression = exports.TSVoidKeyword = exports.TSUnknownKeyword = exports.TSUnionType = exports.TSUndefinedKeyword = exports.TSTypeReference = exports.TSTypeQuery = exports.TSTypePredicate = exports.TSTypeParameterInstantiation = exports.TSTypeParameterDeclaration = exports.TSTypeParameter = exports.TSTypeOperator = exports.TSTypeLiteral = exports.TSTypeAssertion = exports.TSTypeAnnotation = exports.TSTypeAliasDeclaration = exports.TSTupleType = exports.TSThisType = exports.TSTemplateLiteralType = exports.TSSymbolKeyword = exports.TSStringKeyword = exports.TSSatisfiesExpression = exports.TSRestType = exports.TSQualifiedName = exports.TSPropertySignature = exports.TSParenthesizedType = exports.TSParameterProperty = exports.TSOptionalType = exports.TSObjectKeyword = void 0;
+var b = require("./lowercase.js");
+var _deprecationWarning = require("../../utils/deprecationWarning.js");
+function alias(lowercase) {
+ return b[lowercase];
+}
+const ArrayExpression = exports.ArrayExpression = alias("arrayExpression"),
+ AssignmentExpression = exports.AssignmentExpression = alias("assignmentExpression"),
+ BinaryExpression = exports.BinaryExpression = alias("binaryExpression"),
+ InterpreterDirective = exports.InterpreterDirective = alias("interpreterDirective"),
+ Directive = exports.Directive = alias("directive"),
+ DirectiveLiteral = exports.DirectiveLiteral = alias("directiveLiteral"),
+ BlockStatement = exports.BlockStatement = alias("blockStatement"),
+ BreakStatement = exports.BreakStatement = alias("breakStatement"),
+ CallExpression = exports.CallExpression = alias("callExpression"),
+ CatchClause = exports.CatchClause = alias("catchClause"),
+ ConditionalExpression = exports.ConditionalExpression = alias("conditionalExpression"),
+ ContinueStatement = exports.ContinueStatement = alias("continueStatement"),
+ DebuggerStatement = exports.DebuggerStatement = alias("debuggerStatement"),
+ DoWhileStatement = exports.DoWhileStatement = alias("doWhileStatement"),
+ EmptyStatement = exports.EmptyStatement = alias("emptyStatement"),
+ ExpressionStatement = exports.ExpressionStatement = alias("expressionStatement"),
+ File = exports.File = alias("file"),
+ ForInStatement = exports.ForInStatement = alias("forInStatement"),
+ ForStatement = exports.ForStatement = alias("forStatement"),
+ FunctionDeclaration = exports.FunctionDeclaration = alias("functionDeclaration"),
+ FunctionExpression = exports.FunctionExpression = alias("functionExpression"),
+ Identifier = exports.Identifier = alias("identifier"),
+ IfStatement = exports.IfStatement = alias("ifStatement"),
+ LabeledStatement = exports.LabeledStatement = alias("labeledStatement"),
+ StringLiteral = exports.StringLiteral = alias("stringLiteral"),
+ NumericLiteral = exports.NumericLiteral = alias("numericLiteral"),
+ NullLiteral = exports.NullLiteral = alias("nullLiteral"),
+ BooleanLiteral = exports.BooleanLiteral = alias("booleanLiteral"),
+ RegExpLiteral = exports.RegExpLiteral = alias("regExpLiteral"),
+ LogicalExpression = exports.LogicalExpression = alias("logicalExpression"),
+ MemberExpression = exports.MemberExpression = alias("memberExpression"),
+ NewExpression = exports.NewExpression = alias("newExpression"),
+ Program = exports.Program = alias("program"),
+ ObjectExpression = exports.ObjectExpression = alias("objectExpression"),
+ ObjectMethod = exports.ObjectMethod = alias("objectMethod"),
+ ObjectProperty = exports.ObjectProperty = alias("objectProperty"),
+ RestElement = exports.RestElement = alias("restElement"),
+ ReturnStatement = exports.ReturnStatement = alias("returnStatement"),
+ SequenceExpression = exports.SequenceExpression = alias("sequenceExpression"),
+ ParenthesizedExpression = exports.ParenthesizedExpression = alias("parenthesizedExpression"),
+ SwitchCase = exports.SwitchCase = alias("switchCase"),
+ SwitchStatement = exports.SwitchStatement = alias("switchStatement"),
+ ThisExpression = exports.ThisExpression = alias("thisExpression"),
+ ThrowStatement = exports.ThrowStatement = alias("throwStatement"),
+ TryStatement = exports.TryStatement = alias("tryStatement"),
+ UnaryExpression = exports.UnaryExpression = alias("unaryExpression"),
+ UpdateExpression = exports.UpdateExpression = alias("updateExpression"),
+ VariableDeclaration = exports.VariableDeclaration = alias("variableDeclaration"),
+ VariableDeclarator = exports.VariableDeclarator = alias("variableDeclarator"),
+ WhileStatement = exports.WhileStatement = alias("whileStatement"),
+ WithStatement = exports.WithStatement = alias("withStatement"),
+ AssignmentPattern = exports.AssignmentPattern = alias("assignmentPattern"),
+ ArrayPattern = exports.ArrayPattern = alias("arrayPattern"),
+ ArrowFunctionExpression = exports.ArrowFunctionExpression = alias("arrowFunctionExpression"),
+ ClassBody = exports.ClassBody = alias("classBody"),
+ ClassExpression = exports.ClassExpression = alias("classExpression"),
+ ClassDeclaration = exports.ClassDeclaration = alias("classDeclaration"),
+ ExportAllDeclaration = exports.ExportAllDeclaration = alias("exportAllDeclaration"),
+ ExportDefaultDeclaration = exports.ExportDefaultDeclaration = alias("exportDefaultDeclaration"),
+ ExportNamedDeclaration = exports.ExportNamedDeclaration = alias("exportNamedDeclaration"),
+ ExportSpecifier = exports.ExportSpecifier = alias("exportSpecifier"),
+ ForOfStatement = exports.ForOfStatement = alias("forOfStatement"),
+ ImportDeclaration = exports.ImportDeclaration = alias("importDeclaration"),
+ ImportDefaultSpecifier = exports.ImportDefaultSpecifier = alias("importDefaultSpecifier"),
+ ImportNamespaceSpecifier = exports.ImportNamespaceSpecifier = alias("importNamespaceSpecifier"),
+ ImportSpecifier = exports.ImportSpecifier = alias("importSpecifier"),
+ ImportExpression = exports.ImportExpression = alias("importExpression"),
+ MetaProperty = exports.MetaProperty = alias("metaProperty"),
+ ClassMethod = exports.ClassMethod = alias("classMethod"),
+ ObjectPattern = exports.ObjectPattern = alias("objectPattern"),
+ SpreadElement = exports.SpreadElement = alias("spreadElement"),
+ Super = exports.Super = alias("super"),
+ TaggedTemplateExpression = exports.TaggedTemplateExpression = alias("taggedTemplateExpression"),
+ TemplateElement = exports.TemplateElement = alias("templateElement"),
+ TemplateLiteral = exports.TemplateLiteral = alias("templateLiteral"),
+ YieldExpression = exports.YieldExpression = alias("yieldExpression"),
+ AwaitExpression = exports.AwaitExpression = alias("awaitExpression"),
+ Import = exports.Import = alias("import"),
+ BigIntLiteral = exports.BigIntLiteral = alias("bigIntLiteral"),
+ ExportNamespaceSpecifier = exports.ExportNamespaceSpecifier = alias("exportNamespaceSpecifier"),
+ OptionalMemberExpression = exports.OptionalMemberExpression = alias("optionalMemberExpression"),
+ OptionalCallExpression = exports.OptionalCallExpression = alias("optionalCallExpression"),
+ ClassProperty = exports.ClassProperty = alias("classProperty"),
+ ClassAccessorProperty = exports.ClassAccessorProperty = alias("classAccessorProperty"),
+ ClassPrivateProperty = exports.ClassPrivateProperty = alias("classPrivateProperty"),
+ ClassPrivateMethod = exports.ClassPrivateMethod = alias("classPrivateMethod"),
+ PrivateName = exports.PrivateName = alias("privateName"),
+ StaticBlock = exports.StaticBlock = alias("staticBlock"),
+ ImportAttribute = exports.ImportAttribute = alias("importAttribute"),
+ AnyTypeAnnotation = exports.AnyTypeAnnotation = alias("anyTypeAnnotation"),
+ ArrayTypeAnnotation = exports.ArrayTypeAnnotation = alias("arrayTypeAnnotation"),
+ BooleanTypeAnnotation = exports.BooleanTypeAnnotation = alias("booleanTypeAnnotation"),
+ BooleanLiteralTypeAnnotation = exports.BooleanLiteralTypeAnnotation = alias("booleanLiteralTypeAnnotation"),
+ NullLiteralTypeAnnotation = exports.NullLiteralTypeAnnotation = alias("nullLiteralTypeAnnotation"),
+ ClassImplements = exports.ClassImplements = alias("classImplements"),
+ DeclareClass = exports.DeclareClass = alias("declareClass"),
+ DeclareFunction = exports.DeclareFunction = alias("declareFunction"),
+ DeclareInterface = exports.DeclareInterface = alias("declareInterface"),
+ DeclareModule = exports.DeclareModule = alias("declareModule"),
+ DeclareModuleExports = exports.DeclareModuleExports = alias("declareModuleExports"),
+ DeclareTypeAlias = exports.DeclareTypeAlias = alias("declareTypeAlias"),
+ DeclareOpaqueType = exports.DeclareOpaqueType = alias("declareOpaqueType"),
+ DeclareVariable = exports.DeclareVariable = alias("declareVariable"),
+ DeclareExportDeclaration = exports.DeclareExportDeclaration = alias("declareExportDeclaration"),
+ DeclareExportAllDeclaration = exports.DeclareExportAllDeclaration = alias("declareExportAllDeclaration"),
+ DeclaredPredicate = exports.DeclaredPredicate = alias("declaredPredicate"),
+ ExistsTypeAnnotation = exports.ExistsTypeAnnotation = alias("existsTypeAnnotation"),
+ FunctionTypeAnnotation = exports.FunctionTypeAnnotation = alias("functionTypeAnnotation"),
+ FunctionTypeParam = exports.FunctionTypeParam = alias("functionTypeParam"),
+ GenericTypeAnnotation = exports.GenericTypeAnnotation = alias("genericTypeAnnotation"),
+ InferredPredicate = exports.InferredPredicate = alias("inferredPredicate"),
+ InterfaceExtends = exports.InterfaceExtends = alias("interfaceExtends"),
+ InterfaceDeclaration = exports.InterfaceDeclaration = alias("interfaceDeclaration"),
+ InterfaceTypeAnnotation = exports.InterfaceTypeAnnotation = alias("interfaceTypeAnnotation"),
+ IntersectionTypeAnnotation = exports.IntersectionTypeAnnotation = alias("intersectionTypeAnnotation"),
+ MixedTypeAnnotation = exports.MixedTypeAnnotation = alias("mixedTypeAnnotation"),
+ EmptyTypeAnnotation = exports.EmptyTypeAnnotation = alias("emptyTypeAnnotation"),
+ NullableTypeAnnotation = exports.NullableTypeAnnotation = alias("nullableTypeAnnotation"),
+ NumberLiteralTypeAnnotation = exports.NumberLiteralTypeAnnotation = alias("numberLiteralTypeAnnotation"),
+ NumberTypeAnnotation = exports.NumberTypeAnnotation = alias("numberTypeAnnotation"),
+ ObjectTypeAnnotation = exports.ObjectTypeAnnotation = alias("objectTypeAnnotation"),
+ ObjectTypeInternalSlot = exports.ObjectTypeInternalSlot = alias("objectTypeInternalSlot"),
+ ObjectTypeCallProperty = exports.ObjectTypeCallProperty = alias("objectTypeCallProperty"),
+ ObjectTypeIndexer = exports.ObjectTypeIndexer = alias("objectTypeIndexer"),
+ ObjectTypeProperty = exports.ObjectTypeProperty = alias("objectTypeProperty"),
+ ObjectTypeSpreadProperty = exports.ObjectTypeSpreadProperty = alias("objectTypeSpreadProperty"),
+ OpaqueType = exports.OpaqueType = alias("opaqueType"),
+ QualifiedTypeIdentifier = exports.QualifiedTypeIdentifier = alias("qualifiedTypeIdentifier"),
+ StringLiteralTypeAnnotation = exports.StringLiteralTypeAnnotation = alias("stringLiteralTypeAnnotation"),
+ StringTypeAnnotation = exports.StringTypeAnnotation = alias("stringTypeAnnotation"),
+ SymbolTypeAnnotation = exports.SymbolTypeAnnotation = alias("symbolTypeAnnotation"),
+ ThisTypeAnnotation = exports.ThisTypeAnnotation = alias("thisTypeAnnotation"),
+ TupleTypeAnnotation = exports.TupleTypeAnnotation = alias("tupleTypeAnnotation"),
+ TypeofTypeAnnotation = exports.TypeofTypeAnnotation = alias("typeofTypeAnnotation"),
+ TypeAlias = exports.TypeAlias = alias("typeAlias"),
+ TypeAnnotation = exports.TypeAnnotation = alias("typeAnnotation"),
+ TypeCastExpression = exports.TypeCastExpression = alias("typeCastExpression"),
+ TypeParameter = exports.TypeParameter = alias("typeParameter"),
+ TypeParameterDeclaration = exports.TypeParameterDeclaration = alias("typeParameterDeclaration"),
+ TypeParameterInstantiation = exports.TypeParameterInstantiation = alias("typeParameterInstantiation"),
+ UnionTypeAnnotation = exports.UnionTypeAnnotation = alias("unionTypeAnnotation"),
+ Variance = exports.Variance = alias("variance"),
+ VoidTypeAnnotation = exports.VoidTypeAnnotation = alias("voidTypeAnnotation"),
+ EnumDeclaration = exports.EnumDeclaration = alias("enumDeclaration"),
+ EnumBooleanBody = exports.EnumBooleanBody = alias("enumBooleanBody"),
+ EnumNumberBody = exports.EnumNumberBody = alias("enumNumberBody"),
+ EnumStringBody = exports.EnumStringBody = alias("enumStringBody"),
+ EnumSymbolBody = exports.EnumSymbolBody = alias("enumSymbolBody"),
+ EnumBooleanMember = exports.EnumBooleanMember = alias("enumBooleanMember"),
+ EnumNumberMember = exports.EnumNumberMember = alias("enumNumberMember"),
+ EnumStringMember = exports.EnumStringMember = alias("enumStringMember"),
+ EnumDefaultedMember = exports.EnumDefaultedMember = alias("enumDefaultedMember"),
+ IndexedAccessType = exports.IndexedAccessType = alias("indexedAccessType"),
+ OptionalIndexedAccessType = exports.OptionalIndexedAccessType = alias("optionalIndexedAccessType"),
+ JSXAttribute = exports.JSXAttribute = alias("jsxAttribute"),
+ JSXClosingElement = exports.JSXClosingElement = alias("jsxClosingElement"),
+ JSXElement = exports.JSXElement = alias("jsxElement"),
+ JSXEmptyExpression = exports.JSXEmptyExpression = alias("jsxEmptyExpression"),
+ JSXExpressionContainer = exports.JSXExpressionContainer = alias("jsxExpressionContainer"),
+ JSXSpreadChild = exports.JSXSpreadChild = alias("jsxSpreadChild"),
+ JSXIdentifier = exports.JSXIdentifier = alias("jsxIdentifier"),
+ JSXMemberExpression = exports.JSXMemberExpression = alias("jsxMemberExpression"),
+ JSXNamespacedName = exports.JSXNamespacedName = alias("jsxNamespacedName"),
+ JSXOpeningElement = exports.JSXOpeningElement = alias("jsxOpeningElement"),
+ JSXSpreadAttribute = exports.JSXSpreadAttribute = alias("jsxSpreadAttribute"),
+ JSXText = exports.JSXText = alias("jsxText"),
+ JSXFragment = exports.JSXFragment = alias("jsxFragment"),
+ JSXOpeningFragment = exports.JSXOpeningFragment = alias("jsxOpeningFragment"),
+ JSXClosingFragment = exports.JSXClosingFragment = alias("jsxClosingFragment"),
+ Noop = exports.Noop = alias("noop"),
+ Placeholder = exports.Placeholder = alias("placeholder"),
+ V8IntrinsicIdentifier = exports.V8IntrinsicIdentifier = alias("v8IntrinsicIdentifier"),
+ ArgumentPlaceholder = exports.ArgumentPlaceholder = alias("argumentPlaceholder"),
+ BindExpression = exports.BindExpression = alias("bindExpression"),
+ Decorator = exports.Decorator = alias("decorator"),
+ DoExpression = exports.DoExpression = alias("doExpression"),
+ ExportDefaultSpecifier = exports.ExportDefaultSpecifier = alias("exportDefaultSpecifier"),
+ RecordExpression = exports.RecordExpression = alias("recordExpression"),
+ TupleExpression = exports.TupleExpression = alias("tupleExpression"),
+ DecimalLiteral = exports.DecimalLiteral = alias("decimalLiteral"),
+ ModuleExpression = exports.ModuleExpression = alias("moduleExpression"),
+ TopicReference = exports.TopicReference = alias("topicReference"),
+ PipelineTopicExpression = exports.PipelineTopicExpression = alias("pipelineTopicExpression"),
+ PipelineBareFunction = exports.PipelineBareFunction = alias("pipelineBareFunction"),
+ PipelinePrimaryTopicReference = exports.PipelinePrimaryTopicReference = alias("pipelinePrimaryTopicReference"),
+ VoidPattern = exports.VoidPattern = alias("voidPattern"),
+ TSParameterProperty = exports.TSParameterProperty = alias("tsParameterProperty"),
+ TSDeclareFunction = exports.TSDeclareFunction = alias("tsDeclareFunction"),
+ TSDeclareMethod = exports.TSDeclareMethod = alias("tsDeclareMethod"),
+ TSQualifiedName = exports.TSQualifiedName = alias("tsQualifiedName"),
+ TSCallSignatureDeclaration = exports.TSCallSignatureDeclaration = alias("tsCallSignatureDeclaration"),
+ TSConstructSignatureDeclaration = exports.TSConstructSignatureDeclaration = alias("tsConstructSignatureDeclaration"),
+ TSPropertySignature = exports.TSPropertySignature = alias("tsPropertySignature"),
+ TSMethodSignature = exports.TSMethodSignature = alias("tsMethodSignature"),
+ TSIndexSignature = exports.TSIndexSignature = alias("tsIndexSignature"),
+ TSAnyKeyword = exports.TSAnyKeyword = alias("tsAnyKeyword"),
+ TSBooleanKeyword = exports.TSBooleanKeyword = alias("tsBooleanKeyword"),
+ TSBigIntKeyword = exports.TSBigIntKeyword = alias("tsBigIntKeyword"),
+ TSIntrinsicKeyword = exports.TSIntrinsicKeyword = alias("tsIntrinsicKeyword"),
+ TSNeverKeyword = exports.TSNeverKeyword = alias("tsNeverKeyword"),
+ TSNullKeyword = exports.TSNullKeyword = alias("tsNullKeyword"),
+ TSNumberKeyword = exports.TSNumberKeyword = alias("tsNumberKeyword"),
+ TSObjectKeyword = exports.TSObjectKeyword = alias("tsObjectKeyword"),
+ TSStringKeyword = exports.TSStringKeyword = alias("tsStringKeyword"),
+ TSSymbolKeyword = exports.TSSymbolKeyword = alias("tsSymbolKeyword"),
+ TSUndefinedKeyword = exports.TSUndefinedKeyword = alias("tsUndefinedKeyword"),
+ TSUnknownKeyword = exports.TSUnknownKeyword = alias("tsUnknownKeyword"),
+ TSVoidKeyword = exports.TSVoidKeyword = alias("tsVoidKeyword"),
+ TSThisType = exports.TSThisType = alias("tsThisType"),
+ TSFunctionType = exports.TSFunctionType = alias("tsFunctionType"),
+ TSConstructorType = exports.TSConstructorType = alias("tsConstructorType"),
+ TSTypeReference = exports.TSTypeReference = alias("tsTypeReference"),
+ TSTypePredicate = exports.TSTypePredicate = alias("tsTypePredicate"),
+ TSTypeQuery = exports.TSTypeQuery = alias("tsTypeQuery"),
+ TSTypeLiteral = exports.TSTypeLiteral = alias("tsTypeLiteral"),
+ TSArrayType = exports.TSArrayType = alias("tsArrayType"),
+ TSTupleType = exports.TSTupleType = alias("tsTupleType"),
+ TSOptionalType = exports.TSOptionalType = alias("tsOptionalType"),
+ TSRestType = exports.TSRestType = alias("tsRestType"),
+ TSNamedTupleMember = exports.TSNamedTupleMember = alias("tsNamedTupleMember"),
+ TSUnionType = exports.TSUnionType = alias("tsUnionType"),
+ TSIntersectionType = exports.TSIntersectionType = alias("tsIntersectionType"),
+ TSConditionalType = exports.TSConditionalType = alias("tsConditionalType"),
+ TSInferType = exports.TSInferType = alias("tsInferType"),
+ TSParenthesizedType = exports.TSParenthesizedType = alias("tsParenthesizedType"),
+ TSTypeOperator = exports.TSTypeOperator = alias("tsTypeOperator"),
+ TSIndexedAccessType = exports.TSIndexedAccessType = alias("tsIndexedAccessType"),
+ TSMappedType = exports.TSMappedType = alias("tsMappedType"),
+ TSTemplateLiteralType = exports.TSTemplateLiteralType = alias("tsTemplateLiteralType"),
+ TSLiteralType = exports.TSLiteralType = alias("tsLiteralType"),
+ TSExpressionWithTypeArguments = exports.TSExpressionWithTypeArguments = alias("tsExpressionWithTypeArguments"),
+ TSInterfaceDeclaration = exports.TSInterfaceDeclaration = alias("tsInterfaceDeclaration"),
+ TSInterfaceBody = exports.TSInterfaceBody = alias("tsInterfaceBody"),
+ TSTypeAliasDeclaration = exports.TSTypeAliasDeclaration = alias("tsTypeAliasDeclaration"),
+ TSInstantiationExpression = exports.TSInstantiationExpression = alias("tsInstantiationExpression"),
+ TSAsExpression = exports.TSAsExpression = alias("tsAsExpression"),
+ TSSatisfiesExpression = exports.TSSatisfiesExpression = alias("tsSatisfiesExpression"),
+ TSTypeAssertion = exports.TSTypeAssertion = alias("tsTypeAssertion"),
+ TSEnumBody = exports.TSEnumBody = alias("tsEnumBody"),
+ TSEnumDeclaration = exports.TSEnumDeclaration = alias("tsEnumDeclaration"),
+ TSEnumMember = exports.TSEnumMember = alias("tsEnumMember"),
+ TSModuleDeclaration = exports.TSModuleDeclaration = alias("tsModuleDeclaration"),
+ TSModuleBlock = exports.TSModuleBlock = alias("tsModuleBlock"),
+ TSImportType = exports.TSImportType = alias("tsImportType"),
+ TSImportEqualsDeclaration = exports.TSImportEqualsDeclaration = alias("tsImportEqualsDeclaration"),
+ TSExternalModuleReference = exports.TSExternalModuleReference = alias("tsExternalModuleReference"),
+ TSNonNullExpression = exports.TSNonNullExpression = alias("tsNonNullExpression"),
+ TSExportAssignment = exports.TSExportAssignment = alias("tsExportAssignment"),
+ TSNamespaceExportDeclaration = exports.TSNamespaceExportDeclaration = alias("tsNamespaceExportDeclaration"),
+ TSTypeAnnotation = exports.TSTypeAnnotation = alias("tsTypeAnnotation"),
+ TSTypeParameterInstantiation = exports.TSTypeParameterInstantiation = alias("tsTypeParameterInstantiation"),
+ TSTypeParameterDeclaration = exports.TSTypeParameterDeclaration = alias("tsTypeParameterDeclaration"),
+ TSTypeParameter = exports.TSTypeParameter = alias("tsTypeParameter");
+const NumberLiteral = exports.NumberLiteral = b.numberLiteral,
+ RegexLiteral = exports.RegexLiteral = b.regexLiteral,
+ RestProperty = exports.RestProperty = b.restProperty,
+ SpreadProperty = exports.SpreadProperty = b.spreadProperty;
+
+//# sourceMappingURL=uppercase.js.map
+
+}, function(modId) { var map = {"./lowercase.js":1771034509030,"../../utils/deprecationWarning.js":1771034509025}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509048, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = assertNode;
+var _isNode = require("../validators/isNode.js");
+function assertNode(node) {
+ if (!(0, _isNode.default)(node)) {
+ var _node$type;
+ const type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node);
+ throw new TypeError(`Not a valid node of type "${type}"`);
+ }
+}
+
+//# sourceMappingURL=assertNode.js.map
+
+}, function(modId) { var map = {"../validators/isNode.js":1771034509049}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509049, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isNode;
+var _index = require("../definitions/index.js");
+function isNode(node) {
+ return !!(node && _index.VISITOR_KEYS[node.type]);
+}
+
+//# sourceMappingURL=isNode.js.map
+
+}, function(modId) { var map = {"../definitions/index.js":1771034509032}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509050, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.assertAccessor = assertAccessor;
+exports.assertAnyTypeAnnotation = assertAnyTypeAnnotation;
+exports.assertArgumentPlaceholder = assertArgumentPlaceholder;
+exports.assertArrayExpression = assertArrayExpression;
+exports.assertArrayPattern = assertArrayPattern;
+exports.assertArrayTypeAnnotation = assertArrayTypeAnnotation;
+exports.assertArrowFunctionExpression = assertArrowFunctionExpression;
+exports.assertAssignmentExpression = assertAssignmentExpression;
+exports.assertAssignmentPattern = assertAssignmentPattern;
+exports.assertAwaitExpression = assertAwaitExpression;
+exports.assertBigIntLiteral = assertBigIntLiteral;
+exports.assertBinary = assertBinary;
+exports.assertBinaryExpression = assertBinaryExpression;
+exports.assertBindExpression = assertBindExpression;
+exports.assertBlock = assertBlock;
+exports.assertBlockParent = assertBlockParent;
+exports.assertBlockStatement = assertBlockStatement;
+exports.assertBooleanLiteral = assertBooleanLiteral;
+exports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation;
+exports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation;
+exports.assertBreakStatement = assertBreakStatement;
+exports.assertCallExpression = assertCallExpression;
+exports.assertCatchClause = assertCatchClause;
+exports.assertClass = assertClass;
+exports.assertClassAccessorProperty = assertClassAccessorProperty;
+exports.assertClassBody = assertClassBody;
+exports.assertClassDeclaration = assertClassDeclaration;
+exports.assertClassExpression = assertClassExpression;
+exports.assertClassImplements = assertClassImplements;
+exports.assertClassMethod = assertClassMethod;
+exports.assertClassPrivateMethod = assertClassPrivateMethod;
+exports.assertClassPrivateProperty = assertClassPrivateProperty;
+exports.assertClassProperty = assertClassProperty;
+exports.assertCompletionStatement = assertCompletionStatement;
+exports.assertConditional = assertConditional;
+exports.assertConditionalExpression = assertConditionalExpression;
+exports.assertContinueStatement = assertContinueStatement;
+exports.assertDebuggerStatement = assertDebuggerStatement;
+exports.assertDecimalLiteral = assertDecimalLiteral;
+exports.assertDeclaration = assertDeclaration;
+exports.assertDeclareClass = assertDeclareClass;
+exports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration;
+exports.assertDeclareExportDeclaration = assertDeclareExportDeclaration;
+exports.assertDeclareFunction = assertDeclareFunction;
+exports.assertDeclareInterface = assertDeclareInterface;
+exports.assertDeclareModule = assertDeclareModule;
+exports.assertDeclareModuleExports = assertDeclareModuleExports;
+exports.assertDeclareOpaqueType = assertDeclareOpaqueType;
+exports.assertDeclareTypeAlias = assertDeclareTypeAlias;
+exports.assertDeclareVariable = assertDeclareVariable;
+exports.assertDeclaredPredicate = assertDeclaredPredicate;
+exports.assertDecorator = assertDecorator;
+exports.assertDirective = assertDirective;
+exports.assertDirectiveLiteral = assertDirectiveLiteral;
+exports.assertDoExpression = assertDoExpression;
+exports.assertDoWhileStatement = assertDoWhileStatement;
+exports.assertEmptyStatement = assertEmptyStatement;
+exports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation;
+exports.assertEnumBody = assertEnumBody;
+exports.assertEnumBooleanBody = assertEnumBooleanBody;
+exports.assertEnumBooleanMember = assertEnumBooleanMember;
+exports.assertEnumDeclaration = assertEnumDeclaration;
+exports.assertEnumDefaultedMember = assertEnumDefaultedMember;
+exports.assertEnumMember = assertEnumMember;
+exports.assertEnumNumberBody = assertEnumNumberBody;
+exports.assertEnumNumberMember = assertEnumNumberMember;
+exports.assertEnumStringBody = assertEnumStringBody;
+exports.assertEnumStringMember = assertEnumStringMember;
+exports.assertEnumSymbolBody = assertEnumSymbolBody;
+exports.assertExistsTypeAnnotation = assertExistsTypeAnnotation;
+exports.assertExportAllDeclaration = assertExportAllDeclaration;
+exports.assertExportDeclaration = assertExportDeclaration;
+exports.assertExportDefaultDeclaration = assertExportDefaultDeclaration;
+exports.assertExportDefaultSpecifier = assertExportDefaultSpecifier;
+exports.assertExportNamedDeclaration = assertExportNamedDeclaration;
+exports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier;
+exports.assertExportSpecifier = assertExportSpecifier;
+exports.assertExpression = assertExpression;
+exports.assertExpressionStatement = assertExpressionStatement;
+exports.assertExpressionWrapper = assertExpressionWrapper;
+exports.assertFile = assertFile;
+exports.assertFlow = assertFlow;
+exports.assertFlowBaseAnnotation = assertFlowBaseAnnotation;
+exports.assertFlowDeclaration = assertFlowDeclaration;
+exports.assertFlowPredicate = assertFlowPredicate;
+exports.assertFlowType = assertFlowType;
+exports.assertFor = assertFor;
+exports.assertForInStatement = assertForInStatement;
+exports.assertForOfStatement = assertForOfStatement;
+exports.assertForStatement = assertForStatement;
+exports.assertForXStatement = assertForXStatement;
+exports.assertFunction = assertFunction;
+exports.assertFunctionDeclaration = assertFunctionDeclaration;
+exports.assertFunctionExpression = assertFunctionExpression;
+exports.assertFunctionParameter = assertFunctionParameter;
+exports.assertFunctionParent = assertFunctionParent;
+exports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation;
+exports.assertFunctionTypeParam = assertFunctionTypeParam;
+exports.assertGenericTypeAnnotation = assertGenericTypeAnnotation;
+exports.assertIdentifier = assertIdentifier;
+exports.assertIfStatement = assertIfStatement;
+exports.assertImmutable = assertImmutable;
+exports.assertImport = assertImport;
+exports.assertImportAttribute = assertImportAttribute;
+exports.assertImportDeclaration = assertImportDeclaration;
+exports.assertImportDefaultSpecifier = assertImportDefaultSpecifier;
+exports.assertImportExpression = assertImportExpression;
+exports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier;
+exports.assertImportOrExportDeclaration = assertImportOrExportDeclaration;
+exports.assertImportSpecifier = assertImportSpecifier;
+exports.assertIndexedAccessType = assertIndexedAccessType;
+exports.assertInferredPredicate = assertInferredPredicate;
+exports.assertInterfaceDeclaration = assertInterfaceDeclaration;
+exports.assertInterfaceExtends = assertInterfaceExtends;
+exports.assertInterfaceTypeAnnotation = assertInterfaceTypeAnnotation;
+exports.assertInterpreterDirective = assertInterpreterDirective;
+exports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation;
+exports.assertJSX = assertJSX;
+exports.assertJSXAttribute = assertJSXAttribute;
+exports.assertJSXClosingElement = assertJSXClosingElement;
+exports.assertJSXClosingFragment = assertJSXClosingFragment;
+exports.assertJSXElement = assertJSXElement;
+exports.assertJSXEmptyExpression = assertJSXEmptyExpression;
+exports.assertJSXExpressionContainer = assertJSXExpressionContainer;
+exports.assertJSXFragment = assertJSXFragment;
+exports.assertJSXIdentifier = assertJSXIdentifier;
+exports.assertJSXMemberExpression = assertJSXMemberExpression;
+exports.assertJSXNamespacedName = assertJSXNamespacedName;
+exports.assertJSXOpeningElement = assertJSXOpeningElement;
+exports.assertJSXOpeningFragment = assertJSXOpeningFragment;
+exports.assertJSXSpreadAttribute = assertJSXSpreadAttribute;
+exports.assertJSXSpreadChild = assertJSXSpreadChild;
+exports.assertJSXText = assertJSXText;
+exports.assertLVal = assertLVal;
+exports.assertLabeledStatement = assertLabeledStatement;
+exports.assertLiteral = assertLiteral;
+exports.assertLogicalExpression = assertLogicalExpression;
+exports.assertLoop = assertLoop;
+exports.assertMemberExpression = assertMemberExpression;
+exports.assertMetaProperty = assertMetaProperty;
+exports.assertMethod = assertMethod;
+exports.assertMiscellaneous = assertMiscellaneous;
+exports.assertMixedTypeAnnotation = assertMixedTypeAnnotation;
+exports.assertModuleDeclaration = assertModuleDeclaration;
+exports.assertModuleExpression = assertModuleExpression;
+exports.assertModuleSpecifier = assertModuleSpecifier;
+exports.assertNewExpression = assertNewExpression;
+exports.assertNoop = assertNoop;
+exports.assertNullLiteral = assertNullLiteral;
+exports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation;
+exports.assertNullableTypeAnnotation = assertNullableTypeAnnotation;
+exports.assertNumberLiteral = assertNumberLiteral;
+exports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation;
+exports.assertNumberTypeAnnotation = assertNumberTypeAnnotation;
+exports.assertNumericLiteral = assertNumericLiteral;
+exports.assertObjectExpression = assertObjectExpression;
+exports.assertObjectMember = assertObjectMember;
+exports.assertObjectMethod = assertObjectMethod;
+exports.assertObjectPattern = assertObjectPattern;
+exports.assertObjectProperty = assertObjectProperty;
+exports.assertObjectTypeAnnotation = assertObjectTypeAnnotation;
+exports.assertObjectTypeCallProperty = assertObjectTypeCallProperty;
+exports.assertObjectTypeIndexer = assertObjectTypeIndexer;
+exports.assertObjectTypeInternalSlot = assertObjectTypeInternalSlot;
+exports.assertObjectTypeProperty = assertObjectTypeProperty;
+exports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty;
+exports.assertOpaqueType = assertOpaqueType;
+exports.assertOptionalCallExpression = assertOptionalCallExpression;
+exports.assertOptionalIndexedAccessType = assertOptionalIndexedAccessType;
+exports.assertOptionalMemberExpression = assertOptionalMemberExpression;
+exports.assertParenthesizedExpression = assertParenthesizedExpression;
+exports.assertPattern = assertPattern;
+exports.assertPatternLike = assertPatternLike;
+exports.assertPipelineBareFunction = assertPipelineBareFunction;
+exports.assertPipelinePrimaryTopicReference = assertPipelinePrimaryTopicReference;
+exports.assertPipelineTopicExpression = assertPipelineTopicExpression;
+exports.assertPlaceholder = assertPlaceholder;
+exports.assertPrivate = assertPrivate;
+exports.assertPrivateName = assertPrivateName;
+exports.assertProgram = assertProgram;
+exports.assertProperty = assertProperty;
+exports.assertPureish = assertPureish;
+exports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier;
+exports.assertRecordExpression = assertRecordExpression;
+exports.assertRegExpLiteral = assertRegExpLiteral;
+exports.assertRegexLiteral = assertRegexLiteral;
+exports.assertRestElement = assertRestElement;
+exports.assertRestProperty = assertRestProperty;
+exports.assertReturnStatement = assertReturnStatement;
+exports.assertScopable = assertScopable;
+exports.assertSequenceExpression = assertSequenceExpression;
+exports.assertSpreadElement = assertSpreadElement;
+exports.assertSpreadProperty = assertSpreadProperty;
+exports.assertStandardized = assertStandardized;
+exports.assertStatement = assertStatement;
+exports.assertStaticBlock = assertStaticBlock;
+exports.assertStringLiteral = assertStringLiteral;
+exports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation;
+exports.assertStringTypeAnnotation = assertStringTypeAnnotation;
+exports.assertSuper = assertSuper;
+exports.assertSwitchCase = assertSwitchCase;
+exports.assertSwitchStatement = assertSwitchStatement;
+exports.assertSymbolTypeAnnotation = assertSymbolTypeAnnotation;
+exports.assertTSAnyKeyword = assertTSAnyKeyword;
+exports.assertTSArrayType = assertTSArrayType;
+exports.assertTSAsExpression = assertTSAsExpression;
+exports.assertTSBaseType = assertTSBaseType;
+exports.assertTSBigIntKeyword = assertTSBigIntKeyword;
+exports.assertTSBooleanKeyword = assertTSBooleanKeyword;
+exports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration;
+exports.assertTSConditionalType = assertTSConditionalType;
+exports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration;
+exports.assertTSConstructorType = assertTSConstructorType;
+exports.assertTSDeclareFunction = assertTSDeclareFunction;
+exports.assertTSDeclareMethod = assertTSDeclareMethod;
+exports.assertTSEntityName = assertTSEntityName;
+exports.assertTSEnumBody = assertTSEnumBody;
+exports.assertTSEnumDeclaration = assertTSEnumDeclaration;
+exports.assertTSEnumMember = assertTSEnumMember;
+exports.assertTSExportAssignment = assertTSExportAssignment;
+exports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments;
+exports.assertTSExternalModuleReference = assertTSExternalModuleReference;
+exports.assertTSFunctionType = assertTSFunctionType;
+exports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration;
+exports.assertTSImportType = assertTSImportType;
+exports.assertTSIndexSignature = assertTSIndexSignature;
+exports.assertTSIndexedAccessType = assertTSIndexedAccessType;
+exports.assertTSInferType = assertTSInferType;
+exports.assertTSInstantiationExpression = assertTSInstantiationExpression;
+exports.assertTSInterfaceBody = assertTSInterfaceBody;
+exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration;
+exports.assertTSIntersectionType = assertTSIntersectionType;
+exports.assertTSIntrinsicKeyword = assertTSIntrinsicKeyword;
+exports.assertTSLiteralType = assertTSLiteralType;
+exports.assertTSMappedType = assertTSMappedType;
+exports.assertTSMethodSignature = assertTSMethodSignature;
+exports.assertTSModuleBlock = assertTSModuleBlock;
+exports.assertTSModuleDeclaration = assertTSModuleDeclaration;
+exports.assertTSNamedTupleMember = assertTSNamedTupleMember;
+exports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration;
+exports.assertTSNeverKeyword = assertTSNeverKeyword;
+exports.assertTSNonNullExpression = assertTSNonNullExpression;
+exports.assertTSNullKeyword = assertTSNullKeyword;
+exports.assertTSNumberKeyword = assertTSNumberKeyword;
+exports.assertTSObjectKeyword = assertTSObjectKeyword;
+exports.assertTSOptionalType = assertTSOptionalType;
+exports.assertTSParameterProperty = assertTSParameterProperty;
+exports.assertTSParenthesizedType = assertTSParenthesizedType;
+exports.assertTSPropertySignature = assertTSPropertySignature;
+exports.assertTSQualifiedName = assertTSQualifiedName;
+exports.assertTSRestType = assertTSRestType;
+exports.assertTSSatisfiesExpression = assertTSSatisfiesExpression;
+exports.assertTSStringKeyword = assertTSStringKeyword;
+exports.assertTSSymbolKeyword = assertTSSymbolKeyword;
+exports.assertTSTemplateLiteralType = assertTSTemplateLiteralType;
+exports.assertTSThisType = assertTSThisType;
+exports.assertTSTupleType = assertTSTupleType;
+exports.assertTSType = assertTSType;
+exports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration;
+exports.assertTSTypeAnnotation = assertTSTypeAnnotation;
+exports.assertTSTypeAssertion = assertTSTypeAssertion;
+exports.assertTSTypeElement = assertTSTypeElement;
+exports.assertTSTypeLiteral = assertTSTypeLiteral;
+exports.assertTSTypeOperator = assertTSTypeOperator;
+exports.assertTSTypeParameter = assertTSTypeParameter;
+exports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration;
+exports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation;
+exports.assertTSTypePredicate = assertTSTypePredicate;
+exports.assertTSTypeQuery = assertTSTypeQuery;
+exports.assertTSTypeReference = assertTSTypeReference;
+exports.assertTSUndefinedKeyword = assertTSUndefinedKeyword;
+exports.assertTSUnionType = assertTSUnionType;
+exports.assertTSUnknownKeyword = assertTSUnknownKeyword;
+exports.assertTSVoidKeyword = assertTSVoidKeyword;
+exports.assertTaggedTemplateExpression = assertTaggedTemplateExpression;
+exports.assertTemplateElement = assertTemplateElement;
+exports.assertTemplateLiteral = assertTemplateLiteral;
+exports.assertTerminatorless = assertTerminatorless;
+exports.assertThisExpression = assertThisExpression;
+exports.assertThisTypeAnnotation = assertThisTypeAnnotation;
+exports.assertThrowStatement = assertThrowStatement;
+exports.assertTopicReference = assertTopicReference;
+exports.assertTryStatement = assertTryStatement;
+exports.assertTupleExpression = assertTupleExpression;
+exports.assertTupleTypeAnnotation = assertTupleTypeAnnotation;
+exports.assertTypeAlias = assertTypeAlias;
+exports.assertTypeAnnotation = assertTypeAnnotation;
+exports.assertTypeCastExpression = assertTypeCastExpression;
+exports.assertTypeParameter = assertTypeParameter;
+exports.assertTypeParameterDeclaration = assertTypeParameterDeclaration;
+exports.assertTypeParameterInstantiation = assertTypeParameterInstantiation;
+exports.assertTypeScript = assertTypeScript;
+exports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation;
+exports.assertUnaryExpression = assertUnaryExpression;
+exports.assertUnaryLike = assertUnaryLike;
+exports.assertUnionTypeAnnotation = assertUnionTypeAnnotation;
+exports.assertUpdateExpression = assertUpdateExpression;
+exports.assertUserWhitespacable = assertUserWhitespacable;
+exports.assertV8IntrinsicIdentifier = assertV8IntrinsicIdentifier;
+exports.assertVariableDeclaration = assertVariableDeclaration;
+exports.assertVariableDeclarator = assertVariableDeclarator;
+exports.assertVariance = assertVariance;
+exports.assertVoidPattern = assertVoidPattern;
+exports.assertVoidTypeAnnotation = assertVoidTypeAnnotation;
+exports.assertWhile = assertWhile;
+exports.assertWhileStatement = assertWhileStatement;
+exports.assertWithStatement = assertWithStatement;
+exports.assertYieldExpression = assertYieldExpression;
+var _is = require("../../validators/is.js");
+var _deprecationWarning = require("../../utils/deprecationWarning.js");
+function assert(type, node, opts) {
+ if (!(0, _is.default)(type, node, opts)) {
+ throw new Error(`Expected type "${type}" with option ${JSON.stringify(opts)}, ` + `but instead got "${node.type}".`);
+ }
+}
+function assertArrayExpression(node, opts) {
+ assert("ArrayExpression", node, opts);
+}
+function assertAssignmentExpression(node, opts) {
+ assert("AssignmentExpression", node, opts);
+}
+function assertBinaryExpression(node, opts) {
+ assert("BinaryExpression", node, opts);
+}
+function assertInterpreterDirective(node, opts) {
+ assert("InterpreterDirective", node, opts);
+}
+function assertDirective(node, opts) {
+ assert("Directive", node, opts);
+}
+function assertDirectiveLiteral(node, opts) {
+ assert("DirectiveLiteral", node, opts);
+}
+function assertBlockStatement(node, opts) {
+ assert("BlockStatement", node, opts);
+}
+function assertBreakStatement(node, opts) {
+ assert("BreakStatement", node, opts);
+}
+function assertCallExpression(node, opts) {
+ assert("CallExpression", node, opts);
+}
+function assertCatchClause(node, opts) {
+ assert("CatchClause", node, opts);
+}
+function assertConditionalExpression(node, opts) {
+ assert("ConditionalExpression", node, opts);
+}
+function assertContinueStatement(node, opts) {
+ assert("ContinueStatement", node, opts);
+}
+function assertDebuggerStatement(node, opts) {
+ assert("DebuggerStatement", node, opts);
+}
+function assertDoWhileStatement(node, opts) {
+ assert("DoWhileStatement", node, opts);
+}
+function assertEmptyStatement(node, opts) {
+ assert("EmptyStatement", node, opts);
+}
+function assertExpressionStatement(node, opts) {
+ assert("ExpressionStatement", node, opts);
+}
+function assertFile(node, opts) {
+ assert("File", node, opts);
+}
+function assertForInStatement(node, opts) {
+ assert("ForInStatement", node, opts);
+}
+function assertForStatement(node, opts) {
+ assert("ForStatement", node, opts);
+}
+function assertFunctionDeclaration(node, opts) {
+ assert("FunctionDeclaration", node, opts);
+}
+function assertFunctionExpression(node, opts) {
+ assert("FunctionExpression", node, opts);
+}
+function assertIdentifier(node, opts) {
+ assert("Identifier", node, opts);
+}
+function assertIfStatement(node, opts) {
+ assert("IfStatement", node, opts);
+}
+function assertLabeledStatement(node, opts) {
+ assert("LabeledStatement", node, opts);
+}
+function assertStringLiteral(node, opts) {
+ assert("StringLiteral", node, opts);
+}
+function assertNumericLiteral(node, opts) {
+ assert("NumericLiteral", node, opts);
+}
+function assertNullLiteral(node, opts) {
+ assert("NullLiteral", node, opts);
+}
+function assertBooleanLiteral(node, opts) {
+ assert("BooleanLiteral", node, opts);
+}
+function assertRegExpLiteral(node, opts) {
+ assert("RegExpLiteral", node, opts);
+}
+function assertLogicalExpression(node, opts) {
+ assert("LogicalExpression", node, opts);
+}
+function assertMemberExpression(node, opts) {
+ assert("MemberExpression", node, opts);
+}
+function assertNewExpression(node, opts) {
+ assert("NewExpression", node, opts);
+}
+function assertProgram(node, opts) {
+ assert("Program", node, opts);
+}
+function assertObjectExpression(node, opts) {
+ assert("ObjectExpression", node, opts);
+}
+function assertObjectMethod(node, opts) {
+ assert("ObjectMethod", node, opts);
+}
+function assertObjectProperty(node, opts) {
+ assert("ObjectProperty", node, opts);
+}
+function assertRestElement(node, opts) {
+ assert("RestElement", node, opts);
+}
+function assertReturnStatement(node, opts) {
+ assert("ReturnStatement", node, opts);
+}
+function assertSequenceExpression(node, opts) {
+ assert("SequenceExpression", node, opts);
+}
+function assertParenthesizedExpression(node, opts) {
+ assert("ParenthesizedExpression", node, opts);
+}
+function assertSwitchCase(node, opts) {
+ assert("SwitchCase", node, opts);
+}
+function assertSwitchStatement(node, opts) {
+ assert("SwitchStatement", node, opts);
+}
+function assertThisExpression(node, opts) {
+ assert("ThisExpression", node, opts);
+}
+function assertThrowStatement(node, opts) {
+ assert("ThrowStatement", node, opts);
+}
+function assertTryStatement(node, opts) {
+ assert("TryStatement", node, opts);
+}
+function assertUnaryExpression(node, opts) {
+ assert("UnaryExpression", node, opts);
+}
+function assertUpdateExpression(node, opts) {
+ assert("UpdateExpression", node, opts);
+}
+function assertVariableDeclaration(node, opts) {
+ assert("VariableDeclaration", node, opts);
+}
+function assertVariableDeclarator(node, opts) {
+ assert("VariableDeclarator", node, opts);
+}
+function assertWhileStatement(node, opts) {
+ assert("WhileStatement", node, opts);
+}
+function assertWithStatement(node, opts) {
+ assert("WithStatement", node, opts);
+}
+function assertAssignmentPattern(node, opts) {
+ assert("AssignmentPattern", node, opts);
+}
+function assertArrayPattern(node, opts) {
+ assert("ArrayPattern", node, opts);
+}
+function assertArrowFunctionExpression(node, opts) {
+ assert("ArrowFunctionExpression", node, opts);
+}
+function assertClassBody(node, opts) {
+ assert("ClassBody", node, opts);
+}
+function assertClassExpression(node, opts) {
+ assert("ClassExpression", node, opts);
+}
+function assertClassDeclaration(node, opts) {
+ assert("ClassDeclaration", node, opts);
+}
+function assertExportAllDeclaration(node, opts) {
+ assert("ExportAllDeclaration", node, opts);
+}
+function assertExportDefaultDeclaration(node, opts) {
+ assert("ExportDefaultDeclaration", node, opts);
+}
+function assertExportNamedDeclaration(node, opts) {
+ assert("ExportNamedDeclaration", node, opts);
+}
+function assertExportSpecifier(node, opts) {
+ assert("ExportSpecifier", node, opts);
+}
+function assertForOfStatement(node, opts) {
+ assert("ForOfStatement", node, opts);
+}
+function assertImportDeclaration(node, opts) {
+ assert("ImportDeclaration", node, opts);
+}
+function assertImportDefaultSpecifier(node, opts) {
+ assert("ImportDefaultSpecifier", node, opts);
+}
+function assertImportNamespaceSpecifier(node, opts) {
+ assert("ImportNamespaceSpecifier", node, opts);
+}
+function assertImportSpecifier(node, opts) {
+ assert("ImportSpecifier", node, opts);
+}
+function assertImportExpression(node, opts) {
+ assert("ImportExpression", node, opts);
+}
+function assertMetaProperty(node, opts) {
+ assert("MetaProperty", node, opts);
+}
+function assertClassMethod(node, opts) {
+ assert("ClassMethod", node, opts);
+}
+function assertObjectPattern(node, opts) {
+ assert("ObjectPattern", node, opts);
+}
+function assertSpreadElement(node, opts) {
+ assert("SpreadElement", node, opts);
+}
+function assertSuper(node, opts) {
+ assert("Super", node, opts);
+}
+function assertTaggedTemplateExpression(node, opts) {
+ assert("TaggedTemplateExpression", node, opts);
+}
+function assertTemplateElement(node, opts) {
+ assert("TemplateElement", node, opts);
+}
+function assertTemplateLiteral(node, opts) {
+ assert("TemplateLiteral", node, opts);
+}
+function assertYieldExpression(node, opts) {
+ assert("YieldExpression", node, opts);
+}
+function assertAwaitExpression(node, opts) {
+ assert("AwaitExpression", node, opts);
+}
+function assertImport(node, opts) {
+ assert("Import", node, opts);
+}
+function assertBigIntLiteral(node, opts) {
+ assert("BigIntLiteral", node, opts);
+}
+function assertExportNamespaceSpecifier(node, opts) {
+ assert("ExportNamespaceSpecifier", node, opts);
+}
+function assertOptionalMemberExpression(node, opts) {
+ assert("OptionalMemberExpression", node, opts);
+}
+function assertOptionalCallExpression(node, opts) {
+ assert("OptionalCallExpression", node, opts);
+}
+function assertClassProperty(node, opts) {
+ assert("ClassProperty", node, opts);
+}
+function assertClassAccessorProperty(node, opts) {
+ assert("ClassAccessorProperty", node, opts);
+}
+function assertClassPrivateProperty(node, opts) {
+ assert("ClassPrivateProperty", node, opts);
+}
+function assertClassPrivateMethod(node, opts) {
+ assert("ClassPrivateMethod", node, opts);
+}
+function assertPrivateName(node, opts) {
+ assert("PrivateName", node, opts);
+}
+function assertStaticBlock(node, opts) {
+ assert("StaticBlock", node, opts);
+}
+function assertImportAttribute(node, opts) {
+ assert("ImportAttribute", node, opts);
+}
+function assertAnyTypeAnnotation(node, opts) {
+ assert("AnyTypeAnnotation", node, opts);
+}
+function assertArrayTypeAnnotation(node, opts) {
+ assert("ArrayTypeAnnotation", node, opts);
+}
+function assertBooleanTypeAnnotation(node, opts) {
+ assert("BooleanTypeAnnotation", node, opts);
+}
+function assertBooleanLiteralTypeAnnotation(node, opts) {
+ assert("BooleanLiteralTypeAnnotation", node, opts);
+}
+function assertNullLiteralTypeAnnotation(node, opts) {
+ assert("NullLiteralTypeAnnotation", node, opts);
+}
+function assertClassImplements(node, opts) {
+ assert("ClassImplements", node, opts);
+}
+function assertDeclareClass(node, opts) {
+ assert("DeclareClass", node, opts);
+}
+function assertDeclareFunction(node, opts) {
+ assert("DeclareFunction", node, opts);
+}
+function assertDeclareInterface(node, opts) {
+ assert("DeclareInterface", node, opts);
+}
+function assertDeclareModule(node, opts) {
+ assert("DeclareModule", node, opts);
+}
+function assertDeclareModuleExports(node, opts) {
+ assert("DeclareModuleExports", node, opts);
+}
+function assertDeclareTypeAlias(node, opts) {
+ assert("DeclareTypeAlias", node, opts);
+}
+function assertDeclareOpaqueType(node, opts) {
+ assert("DeclareOpaqueType", node, opts);
+}
+function assertDeclareVariable(node, opts) {
+ assert("DeclareVariable", node, opts);
+}
+function assertDeclareExportDeclaration(node, opts) {
+ assert("DeclareExportDeclaration", node, opts);
+}
+function assertDeclareExportAllDeclaration(node, opts) {
+ assert("DeclareExportAllDeclaration", node, opts);
+}
+function assertDeclaredPredicate(node, opts) {
+ assert("DeclaredPredicate", node, opts);
+}
+function assertExistsTypeAnnotation(node, opts) {
+ assert("ExistsTypeAnnotation", node, opts);
+}
+function assertFunctionTypeAnnotation(node, opts) {
+ assert("FunctionTypeAnnotation", node, opts);
+}
+function assertFunctionTypeParam(node, opts) {
+ assert("FunctionTypeParam", node, opts);
+}
+function assertGenericTypeAnnotation(node, opts) {
+ assert("GenericTypeAnnotation", node, opts);
+}
+function assertInferredPredicate(node, opts) {
+ assert("InferredPredicate", node, opts);
+}
+function assertInterfaceExtends(node, opts) {
+ assert("InterfaceExtends", node, opts);
+}
+function assertInterfaceDeclaration(node, opts) {
+ assert("InterfaceDeclaration", node, opts);
+}
+function assertInterfaceTypeAnnotation(node, opts) {
+ assert("InterfaceTypeAnnotation", node, opts);
+}
+function assertIntersectionTypeAnnotation(node, opts) {
+ assert("IntersectionTypeAnnotation", node, opts);
+}
+function assertMixedTypeAnnotation(node, opts) {
+ assert("MixedTypeAnnotation", node, opts);
+}
+function assertEmptyTypeAnnotation(node, opts) {
+ assert("EmptyTypeAnnotation", node, opts);
+}
+function assertNullableTypeAnnotation(node, opts) {
+ assert("NullableTypeAnnotation", node, opts);
+}
+function assertNumberLiteralTypeAnnotation(node, opts) {
+ assert("NumberLiteralTypeAnnotation", node, opts);
+}
+function assertNumberTypeAnnotation(node, opts) {
+ assert("NumberTypeAnnotation", node, opts);
+}
+function assertObjectTypeAnnotation(node, opts) {
+ assert("ObjectTypeAnnotation", node, opts);
+}
+function assertObjectTypeInternalSlot(node, opts) {
+ assert("ObjectTypeInternalSlot", node, opts);
+}
+function assertObjectTypeCallProperty(node, opts) {
+ assert("ObjectTypeCallProperty", node, opts);
+}
+function assertObjectTypeIndexer(node, opts) {
+ assert("ObjectTypeIndexer", node, opts);
+}
+function assertObjectTypeProperty(node, opts) {
+ assert("ObjectTypeProperty", node, opts);
+}
+function assertObjectTypeSpreadProperty(node, opts) {
+ assert("ObjectTypeSpreadProperty", node, opts);
+}
+function assertOpaqueType(node, opts) {
+ assert("OpaqueType", node, opts);
+}
+function assertQualifiedTypeIdentifier(node, opts) {
+ assert("QualifiedTypeIdentifier", node, opts);
+}
+function assertStringLiteralTypeAnnotation(node, opts) {
+ assert("StringLiteralTypeAnnotation", node, opts);
+}
+function assertStringTypeAnnotation(node, opts) {
+ assert("StringTypeAnnotation", node, opts);
+}
+function assertSymbolTypeAnnotation(node, opts) {
+ assert("SymbolTypeAnnotation", node, opts);
+}
+function assertThisTypeAnnotation(node, opts) {
+ assert("ThisTypeAnnotation", node, opts);
+}
+function assertTupleTypeAnnotation(node, opts) {
+ assert("TupleTypeAnnotation", node, opts);
+}
+function assertTypeofTypeAnnotation(node, opts) {
+ assert("TypeofTypeAnnotation", node, opts);
+}
+function assertTypeAlias(node, opts) {
+ assert("TypeAlias", node, opts);
+}
+function assertTypeAnnotation(node, opts) {
+ assert("TypeAnnotation", node, opts);
+}
+function assertTypeCastExpression(node, opts) {
+ assert("TypeCastExpression", node, opts);
+}
+function assertTypeParameter(node, opts) {
+ assert("TypeParameter", node, opts);
+}
+function assertTypeParameterDeclaration(node, opts) {
+ assert("TypeParameterDeclaration", node, opts);
+}
+function assertTypeParameterInstantiation(node, opts) {
+ assert("TypeParameterInstantiation", node, opts);
+}
+function assertUnionTypeAnnotation(node, opts) {
+ assert("UnionTypeAnnotation", node, opts);
+}
+function assertVariance(node, opts) {
+ assert("Variance", node, opts);
+}
+function assertVoidTypeAnnotation(node, opts) {
+ assert("VoidTypeAnnotation", node, opts);
+}
+function assertEnumDeclaration(node, opts) {
+ assert("EnumDeclaration", node, opts);
+}
+function assertEnumBooleanBody(node, opts) {
+ assert("EnumBooleanBody", node, opts);
+}
+function assertEnumNumberBody(node, opts) {
+ assert("EnumNumberBody", node, opts);
+}
+function assertEnumStringBody(node, opts) {
+ assert("EnumStringBody", node, opts);
+}
+function assertEnumSymbolBody(node, opts) {
+ assert("EnumSymbolBody", node, opts);
+}
+function assertEnumBooleanMember(node, opts) {
+ assert("EnumBooleanMember", node, opts);
+}
+function assertEnumNumberMember(node, opts) {
+ assert("EnumNumberMember", node, opts);
+}
+function assertEnumStringMember(node, opts) {
+ assert("EnumStringMember", node, opts);
+}
+function assertEnumDefaultedMember(node, opts) {
+ assert("EnumDefaultedMember", node, opts);
+}
+function assertIndexedAccessType(node, opts) {
+ assert("IndexedAccessType", node, opts);
+}
+function assertOptionalIndexedAccessType(node, opts) {
+ assert("OptionalIndexedAccessType", node, opts);
+}
+function assertJSXAttribute(node, opts) {
+ assert("JSXAttribute", node, opts);
+}
+function assertJSXClosingElement(node, opts) {
+ assert("JSXClosingElement", node, opts);
+}
+function assertJSXElement(node, opts) {
+ assert("JSXElement", node, opts);
+}
+function assertJSXEmptyExpression(node, opts) {
+ assert("JSXEmptyExpression", node, opts);
+}
+function assertJSXExpressionContainer(node, opts) {
+ assert("JSXExpressionContainer", node, opts);
+}
+function assertJSXSpreadChild(node, opts) {
+ assert("JSXSpreadChild", node, opts);
+}
+function assertJSXIdentifier(node, opts) {
+ assert("JSXIdentifier", node, opts);
+}
+function assertJSXMemberExpression(node, opts) {
+ assert("JSXMemberExpression", node, opts);
+}
+function assertJSXNamespacedName(node, opts) {
+ assert("JSXNamespacedName", node, opts);
+}
+function assertJSXOpeningElement(node, opts) {
+ assert("JSXOpeningElement", node, opts);
+}
+function assertJSXSpreadAttribute(node, opts) {
+ assert("JSXSpreadAttribute", node, opts);
+}
+function assertJSXText(node, opts) {
+ assert("JSXText", node, opts);
+}
+function assertJSXFragment(node, opts) {
+ assert("JSXFragment", node, opts);
+}
+function assertJSXOpeningFragment(node, opts) {
+ assert("JSXOpeningFragment", node, opts);
+}
+function assertJSXClosingFragment(node, opts) {
+ assert("JSXClosingFragment", node, opts);
+}
+function assertNoop(node, opts) {
+ assert("Noop", node, opts);
+}
+function assertPlaceholder(node, opts) {
+ assert("Placeholder", node, opts);
+}
+function assertV8IntrinsicIdentifier(node, opts) {
+ assert("V8IntrinsicIdentifier", node, opts);
+}
+function assertArgumentPlaceholder(node, opts) {
+ assert("ArgumentPlaceholder", node, opts);
+}
+function assertBindExpression(node, opts) {
+ assert("BindExpression", node, opts);
+}
+function assertDecorator(node, opts) {
+ assert("Decorator", node, opts);
+}
+function assertDoExpression(node, opts) {
+ assert("DoExpression", node, opts);
+}
+function assertExportDefaultSpecifier(node, opts) {
+ assert("ExportDefaultSpecifier", node, opts);
+}
+function assertRecordExpression(node, opts) {
+ assert("RecordExpression", node, opts);
+}
+function assertTupleExpression(node, opts) {
+ assert("TupleExpression", node, opts);
+}
+function assertDecimalLiteral(node, opts) {
+ assert("DecimalLiteral", node, opts);
+}
+function assertModuleExpression(node, opts) {
+ assert("ModuleExpression", node, opts);
+}
+function assertTopicReference(node, opts) {
+ assert("TopicReference", node, opts);
+}
+function assertPipelineTopicExpression(node, opts) {
+ assert("PipelineTopicExpression", node, opts);
+}
+function assertPipelineBareFunction(node, opts) {
+ assert("PipelineBareFunction", node, opts);
+}
+function assertPipelinePrimaryTopicReference(node, opts) {
+ assert("PipelinePrimaryTopicReference", node, opts);
+}
+function assertVoidPattern(node, opts) {
+ assert("VoidPattern", node, opts);
+}
+function assertTSParameterProperty(node, opts) {
+ assert("TSParameterProperty", node, opts);
+}
+function assertTSDeclareFunction(node, opts) {
+ assert("TSDeclareFunction", node, opts);
+}
+function assertTSDeclareMethod(node, opts) {
+ assert("TSDeclareMethod", node, opts);
+}
+function assertTSQualifiedName(node, opts) {
+ assert("TSQualifiedName", node, opts);
+}
+function assertTSCallSignatureDeclaration(node, opts) {
+ assert("TSCallSignatureDeclaration", node, opts);
+}
+function assertTSConstructSignatureDeclaration(node, opts) {
+ assert("TSConstructSignatureDeclaration", node, opts);
+}
+function assertTSPropertySignature(node, opts) {
+ assert("TSPropertySignature", node, opts);
+}
+function assertTSMethodSignature(node, opts) {
+ assert("TSMethodSignature", node, opts);
+}
+function assertTSIndexSignature(node, opts) {
+ assert("TSIndexSignature", node, opts);
+}
+function assertTSAnyKeyword(node, opts) {
+ assert("TSAnyKeyword", node, opts);
+}
+function assertTSBooleanKeyword(node, opts) {
+ assert("TSBooleanKeyword", node, opts);
+}
+function assertTSBigIntKeyword(node, opts) {
+ assert("TSBigIntKeyword", node, opts);
+}
+function assertTSIntrinsicKeyword(node, opts) {
+ assert("TSIntrinsicKeyword", node, opts);
+}
+function assertTSNeverKeyword(node, opts) {
+ assert("TSNeverKeyword", node, opts);
+}
+function assertTSNullKeyword(node, opts) {
+ assert("TSNullKeyword", node, opts);
+}
+function assertTSNumberKeyword(node, opts) {
+ assert("TSNumberKeyword", node, opts);
+}
+function assertTSObjectKeyword(node, opts) {
+ assert("TSObjectKeyword", node, opts);
+}
+function assertTSStringKeyword(node, opts) {
+ assert("TSStringKeyword", node, opts);
+}
+function assertTSSymbolKeyword(node, opts) {
+ assert("TSSymbolKeyword", node, opts);
+}
+function assertTSUndefinedKeyword(node, opts) {
+ assert("TSUndefinedKeyword", node, opts);
+}
+function assertTSUnknownKeyword(node, opts) {
+ assert("TSUnknownKeyword", node, opts);
+}
+function assertTSVoidKeyword(node, opts) {
+ assert("TSVoidKeyword", node, opts);
+}
+function assertTSThisType(node, opts) {
+ assert("TSThisType", node, opts);
+}
+function assertTSFunctionType(node, opts) {
+ assert("TSFunctionType", node, opts);
+}
+function assertTSConstructorType(node, opts) {
+ assert("TSConstructorType", node, opts);
+}
+function assertTSTypeReference(node, opts) {
+ assert("TSTypeReference", node, opts);
+}
+function assertTSTypePredicate(node, opts) {
+ assert("TSTypePredicate", node, opts);
+}
+function assertTSTypeQuery(node, opts) {
+ assert("TSTypeQuery", node, opts);
+}
+function assertTSTypeLiteral(node, opts) {
+ assert("TSTypeLiteral", node, opts);
+}
+function assertTSArrayType(node, opts) {
+ assert("TSArrayType", node, opts);
+}
+function assertTSTupleType(node, opts) {
+ assert("TSTupleType", node, opts);
+}
+function assertTSOptionalType(node, opts) {
+ assert("TSOptionalType", node, opts);
+}
+function assertTSRestType(node, opts) {
+ assert("TSRestType", node, opts);
+}
+function assertTSNamedTupleMember(node, opts) {
+ assert("TSNamedTupleMember", node, opts);
+}
+function assertTSUnionType(node, opts) {
+ assert("TSUnionType", node, opts);
+}
+function assertTSIntersectionType(node, opts) {
+ assert("TSIntersectionType", node, opts);
+}
+function assertTSConditionalType(node, opts) {
+ assert("TSConditionalType", node, opts);
+}
+function assertTSInferType(node, opts) {
+ assert("TSInferType", node, opts);
+}
+function assertTSParenthesizedType(node, opts) {
+ assert("TSParenthesizedType", node, opts);
+}
+function assertTSTypeOperator(node, opts) {
+ assert("TSTypeOperator", node, opts);
+}
+function assertTSIndexedAccessType(node, opts) {
+ assert("TSIndexedAccessType", node, opts);
+}
+function assertTSMappedType(node, opts) {
+ assert("TSMappedType", node, opts);
+}
+function assertTSTemplateLiteralType(node, opts) {
+ assert("TSTemplateLiteralType", node, opts);
+}
+function assertTSLiteralType(node, opts) {
+ assert("TSLiteralType", node, opts);
+}
+function assertTSExpressionWithTypeArguments(node, opts) {
+ assert("TSExpressionWithTypeArguments", node, opts);
+}
+function assertTSInterfaceDeclaration(node, opts) {
+ assert("TSInterfaceDeclaration", node, opts);
+}
+function assertTSInterfaceBody(node, opts) {
+ assert("TSInterfaceBody", node, opts);
+}
+function assertTSTypeAliasDeclaration(node, opts) {
+ assert("TSTypeAliasDeclaration", node, opts);
+}
+function assertTSInstantiationExpression(node, opts) {
+ assert("TSInstantiationExpression", node, opts);
+}
+function assertTSAsExpression(node, opts) {
+ assert("TSAsExpression", node, opts);
+}
+function assertTSSatisfiesExpression(node, opts) {
+ assert("TSSatisfiesExpression", node, opts);
+}
+function assertTSTypeAssertion(node, opts) {
+ assert("TSTypeAssertion", node, opts);
+}
+function assertTSEnumBody(node, opts) {
+ assert("TSEnumBody", node, opts);
+}
+function assertTSEnumDeclaration(node, opts) {
+ assert("TSEnumDeclaration", node, opts);
+}
+function assertTSEnumMember(node, opts) {
+ assert("TSEnumMember", node, opts);
+}
+function assertTSModuleDeclaration(node, opts) {
+ assert("TSModuleDeclaration", node, opts);
+}
+function assertTSModuleBlock(node, opts) {
+ assert("TSModuleBlock", node, opts);
+}
+function assertTSImportType(node, opts) {
+ assert("TSImportType", node, opts);
+}
+function assertTSImportEqualsDeclaration(node, opts) {
+ assert("TSImportEqualsDeclaration", node, opts);
+}
+function assertTSExternalModuleReference(node, opts) {
+ assert("TSExternalModuleReference", node, opts);
+}
+function assertTSNonNullExpression(node, opts) {
+ assert("TSNonNullExpression", node, opts);
+}
+function assertTSExportAssignment(node, opts) {
+ assert("TSExportAssignment", node, opts);
+}
+function assertTSNamespaceExportDeclaration(node, opts) {
+ assert("TSNamespaceExportDeclaration", node, opts);
+}
+function assertTSTypeAnnotation(node, opts) {
+ assert("TSTypeAnnotation", node, opts);
+}
+function assertTSTypeParameterInstantiation(node, opts) {
+ assert("TSTypeParameterInstantiation", node, opts);
+}
+function assertTSTypeParameterDeclaration(node, opts) {
+ assert("TSTypeParameterDeclaration", node, opts);
+}
+function assertTSTypeParameter(node, opts) {
+ assert("TSTypeParameter", node, opts);
+}
+function assertStandardized(node, opts) {
+ assert("Standardized", node, opts);
+}
+function assertExpression(node, opts) {
+ assert("Expression", node, opts);
+}
+function assertBinary(node, opts) {
+ assert("Binary", node, opts);
+}
+function assertScopable(node, opts) {
+ assert("Scopable", node, opts);
+}
+function assertBlockParent(node, opts) {
+ assert("BlockParent", node, opts);
+}
+function assertBlock(node, opts) {
+ assert("Block", node, opts);
+}
+function assertStatement(node, opts) {
+ assert("Statement", node, opts);
+}
+function assertTerminatorless(node, opts) {
+ assert("Terminatorless", node, opts);
+}
+function assertCompletionStatement(node, opts) {
+ assert("CompletionStatement", node, opts);
+}
+function assertConditional(node, opts) {
+ assert("Conditional", node, opts);
+}
+function assertLoop(node, opts) {
+ assert("Loop", node, opts);
+}
+function assertWhile(node, opts) {
+ assert("While", node, opts);
+}
+function assertExpressionWrapper(node, opts) {
+ assert("ExpressionWrapper", node, opts);
+}
+function assertFor(node, opts) {
+ assert("For", node, opts);
+}
+function assertForXStatement(node, opts) {
+ assert("ForXStatement", node, opts);
+}
+function assertFunction(node, opts) {
+ assert("Function", node, opts);
+}
+function assertFunctionParent(node, opts) {
+ assert("FunctionParent", node, opts);
+}
+function assertPureish(node, opts) {
+ assert("Pureish", node, opts);
+}
+function assertDeclaration(node, opts) {
+ assert("Declaration", node, opts);
+}
+function assertFunctionParameter(node, opts) {
+ assert("FunctionParameter", node, opts);
+}
+function assertPatternLike(node, opts) {
+ assert("PatternLike", node, opts);
+}
+function assertLVal(node, opts) {
+ assert("LVal", node, opts);
+}
+function assertTSEntityName(node, opts) {
+ assert("TSEntityName", node, opts);
+}
+function assertLiteral(node, opts) {
+ assert("Literal", node, opts);
+}
+function assertImmutable(node, opts) {
+ assert("Immutable", node, opts);
+}
+function assertUserWhitespacable(node, opts) {
+ assert("UserWhitespacable", node, opts);
+}
+function assertMethod(node, opts) {
+ assert("Method", node, opts);
+}
+function assertObjectMember(node, opts) {
+ assert("ObjectMember", node, opts);
+}
+function assertProperty(node, opts) {
+ assert("Property", node, opts);
+}
+function assertUnaryLike(node, opts) {
+ assert("UnaryLike", node, opts);
+}
+function assertPattern(node, opts) {
+ assert("Pattern", node, opts);
+}
+function assertClass(node, opts) {
+ assert("Class", node, opts);
+}
+function assertImportOrExportDeclaration(node, opts) {
+ assert("ImportOrExportDeclaration", node, opts);
+}
+function assertExportDeclaration(node, opts) {
+ assert("ExportDeclaration", node, opts);
+}
+function assertModuleSpecifier(node, opts) {
+ assert("ModuleSpecifier", node, opts);
+}
+function assertAccessor(node, opts) {
+ assert("Accessor", node, opts);
+}
+function assertPrivate(node, opts) {
+ assert("Private", node, opts);
+}
+function assertFlow(node, opts) {
+ assert("Flow", node, opts);
+}
+function assertFlowType(node, opts) {
+ assert("FlowType", node, opts);
+}
+function assertFlowBaseAnnotation(node, opts) {
+ assert("FlowBaseAnnotation", node, opts);
+}
+function assertFlowDeclaration(node, opts) {
+ assert("FlowDeclaration", node, opts);
+}
+function assertFlowPredicate(node, opts) {
+ assert("FlowPredicate", node, opts);
+}
+function assertEnumBody(node, opts) {
+ assert("EnumBody", node, opts);
+}
+function assertEnumMember(node, opts) {
+ assert("EnumMember", node, opts);
+}
+function assertJSX(node, opts) {
+ assert("JSX", node, opts);
+}
+function assertMiscellaneous(node, opts) {
+ assert("Miscellaneous", node, opts);
+}
+function assertTypeScript(node, opts) {
+ assert("TypeScript", node, opts);
+}
+function assertTSTypeElement(node, opts) {
+ assert("TSTypeElement", node, opts);
+}
+function assertTSType(node, opts) {
+ assert("TSType", node, opts);
+}
+function assertTSBaseType(node, opts) {
+ assert("TSBaseType", node, opts);
+}
+function assertNumberLiteral(node, opts) {
+ (0, _deprecationWarning.default)("assertNumberLiteral", "assertNumericLiteral");
+ assert("NumberLiteral", node, opts);
+}
+function assertRegexLiteral(node, opts) {
+ (0, _deprecationWarning.default)("assertRegexLiteral", "assertRegExpLiteral");
+ assert("RegexLiteral", node, opts);
+}
+function assertRestProperty(node, opts) {
+ (0, _deprecationWarning.default)("assertRestProperty", "assertRestElement");
+ assert("RestProperty", node, opts);
+}
+function assertSpreadProperty(node, opts) {
+ (0, _deprecationWarning.default)("assertSpreadProperty", "assertSpreadElement");
+ assert("SpreadProperty", node, opts);
+}
+function assertModuleDeclaration(node, opts) {
+ (0, _deprecationWarning.default)("assertModuleDeclaration", "assertImportOrExportDeclaration");
+ assert("ModuleDeclaration", node, opts);
+}
+
+//# sourceMappingURL=index.js.map
+
+}, function(modId) { var map = {"../../validators/is.js":1771034509034,"../../utils/deprecationWarning.js":1771034509025}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509051, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _index = require("../generated/index.js");
+var _default = exports.default = createTypeAnnotationBasedOnTypeof;
+function createTypeAnnotationBasedOnTypeof(type) {
+ switch (type) {
+ case "string":
+ return (0, _index.stringTypeAnnotation)();
+ case "number":
+ return (0, _index.numberTypeAnnotation)();
+ case "undefined":
+ return (0, _index.voidTypeAnnotation)();
+ case "boolean":
+ return (0, _index.booleanTypeAnnotation)();
+ case "function":
+ return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Function"));
+ case "object":
+ return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Object"));
+ case "symbol":
+ return (0, _index.genericTypeAnnotation)((0, _index.identifier)("Symbol"));
+ case "bigint":
+ return (0, _index.anyTypeAnnotation)();
+ }
+ throw new Error("Invalid typeof value: " + type);
+}
+
+//# sourceMappingURL=createTypeAnnotationBasedOnTypeof.js.map
+
+}, function(modId) { var map = {"../generated/index.js":1771034509029}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509052, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = createFlowUnionType;
+var _index = require("../generated/index.js");
+var _removeTypeDuplicates = require("../../modifications/flow/removeTypeDuplicates.js");
+function createFlowUnionType(types) {
+ const flattened = (0, _removeTypeDuplicates.default)(types);
+ if (flattened.length === 1) {
+ return flattened[0];
+ } else {
+ return (0, _index.unionTypeAnnotation)(flattened);
+ }
+}
+
+//# sourceMappingURL=createFlowUnionType.js.map
+
+}, function(modId) { var map = {"../generated/index.js":1771034509029,"../../modifications/flow/removeTypeDuplicates.js":1771034509053}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509053, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeTypeDuplicates;
+var _index = require("../../validators/generated/index.js");
+function getQualifiedName(node) {
+ return (0, _index.isIdentifier)(node) ? node.name : `${node.id.name}.${getQualifiedName(node.qualification)}`;
+}
+function removeTypeDuplicates(nodesIn) {
+ const nodes = Array.from(nodesIn);
+ const generics = new Map();
+ const bases = new Map();
+ const typeGroups = new Set();
+ const types = [];
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ if (!node) continue;
+ if (types.includes(node)) {
+ continue;
+ }
+ if ((0, _index.isAnyTypeAnnotation)(node)) {
+ return [node];
+ }
+ if ((0, _index.isFlowBaseAnnotation)(node)) {
+ bases.set(node.type, node);
+ continue;
+ }
+ if ((0, _index.isUnionTypeAnnotation)(node)) {
+ if (!typeGroups.has(node.types)) {
+ nodes.push(...node.types);
+ typeGroups.add(node.types);
+ }
+ continue;
+ }
+ if ((0, _index.isGenericTypeAnnotation)(node)) {
+ const name = getQualifiedName(node.id);
+ if (generics.has(name)) {
+ let existing = generics.get(name);
+ if (existing.typeParameters) {
+ if (node.typeParameters) {
+ existing.typeParameters.params.push(...node.typeParameters.params);
+ existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params);
+ }
+ } else {
+ existing = node.typeParameters;
+ }
+ } else {
+ generics.set(name, node);
+ }
+ continue;
+ }
+ types.push(node);
+ }
+ for (const [, baseType] of bases) {
+ types.push(baseType);
+ }
+ for (const [, genericName] of generics) {
+ types.push(genericName);
+ }
+ return types;
+}
+
+//# sourceMappingURL=removeTypeDuplicates.js.map
+
+}, function(modId) { var map = {"../../validators/generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509054, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = createTSUnionType;
+var _index = require("../generated/index.js");
+var _removeTypeDuplicates = require("../../modifications/typescript/removeTypeDuplicates.js");
+var _index2 = require("../../validators/generated/index.js");
+function createTSUnionType(typeAnnotations) {
+ const types = typeAnnotations.map(type => {
+ return (0, _index2.isTSTypeAnnotation)(type) ? type.typeAnnotation : type;
+ });
+ const flattened = (0, _removeTypeDuplicates.default)(types);
+ if (flattened.length === 1) {
+ return flattened[0];
+ } else {
+ return (0, _index.tsUnionType)(flattened);
+ }
+}
+
+//# sourceMappingURL=createTSUnionType.js.map
+
+}, function(modId) { var map = {"../generated/index.js":1771034509029,"../../modifications/typescript/removeTypeDuplicates.js":1771034509055,"../../validators/generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509055, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeTypeDuplicates;
+var _index = require("../../validators/generated/index.js");
+function getQualifiedName(node) {
+ return (0, _index.isIdentifier)(node) ? node.name : (0, _index.isThisExpression)(node) ? "this" : `${node.right.name}.${getQualifiedName(node.left)}`;
+}
+function removeTypeDuplicates(nodesIn) {
+ const nodes = Array.from(nodesIn);
+ const generics = new Map();
+ const bases = new Map();
+ const typeGroups = new Set();
+ const types = [];
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ if (!node) continue;
+ if (types.includes(node)) {
+ continue;
+ }
+ if ((0, _index.isTSAnyKeyword)(node)) {
+ return [node];
+ }
+ if ((0, _index.isTSBaseType)(node)) {
+ bases.set(node.type, node);
+ continue;
+ }
+ if ((0, _index.isTSUnionType)(node)) {
+ if (!typeGroups.has(node.types)) {
+ nodes.push(...node.types);
+ typeGroups.add(node.types);
+ }
+ continue;
+ }
+ const typeArgumentsKey = "typeParameters";
+ if ((0, _index.isTSTypeReference)(node) && node[typeArgumentsKey]) {
+ const typeArguments = node[typeArgumentsKey];
+ const name = getQualifiedName(node.typeName);
+ if (generics.has(name)) {
+ let existing = generics.get(name);
+ const existingTypeArguments = existing[typeArgumentsKey];
+ if (existingTypeArguments) {
+ existingTypeArguments.params.push(...typeArguments.params);
+ existingTypeArguments.params = removeTypeDuplicates(existingTypeArguments.params);
+ } else {
+ existing = typeArguments;
+ }
+ } else {
+ generics.set(name, node);
+ }
+ continue;
+ }
+ types.push(node);
+ }
+ for (const [, baseType] of bases) {
+ types.push(baseType);
+ }
+ for (const [, genericName] of generics) {
+ types.push(genericName);
+ }
+ return types;
+}
+
+//# sourceMappingURL=removeTypeDuplicates.js.map
+
+}, function(modId) { var map = {"../../validators/generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509056, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.buildUndefinedNode = buildUndefinedNode;
+var _index = require("./generated/index.js");
+function buildUndefinedNode() {
+ return (0, _index.unaryExpression)("void", (0, _index.numericLiteral)(0), true);
+}
+
+//# sourceMappingURL=productions.js.map
+
+}, function(modId) { var map = {"./generated/index.js":1771034509029}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509057, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneNode;
+var _index = require("../definitions/index.js");
+var _index2 = require("../validators/generated/index.js");
+const {
+ hasOwn
+} = {
+ hasOwn: Function.call.bind(Object.prototype.hasOwnProperty)
+};
+function cloneIfNode(obj, deep, withoutLoc, commentsCache) {
+ if (obj && typeof obj.type === "string") {
+ return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);
+ }
+ return obj;
+}
+function cloneIfNodeOrArray(obj, deep, withoutLoc, commentsCache) {
+ if (Array.isArray(obj)) {
+ return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache));
+ }
+ return cloneIfNode(obj, deep, withoutLoc, commentsCache);
+}
+function cloneNode(node, deep = true, withoutLoc = false) {
+ return cloneNodeInternal(node, deep, withoutLoc, new Map());
+}
+function cloneNodeInternal(node, deep = true, withoutLoc = false, commentsCache) {
+ if (!node) return node;
+ const {
+ type
+ } = node;
+ const newNode = {
+ type: node.type
+ };
+ if ((0, _index2.isIdentifier)(node)) {
+ newNode.name = node.name;
+ if (hasOwn(node, "optional") && typeof node.optional === "boolean") {
+ newNode.optional = node.optional;
+ }
+ if (hasOwn(node, "typeAnnotation")) {
+ newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc, commentsCache) : node.typeAnnotation;
+ }
+ if (hasOwn(node, "decorators")) {
+ newNode.decorators = deep ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache) : node.decorators;
+ }
+ } else if (!hasOwn(_index.NODE_FIELDS, type)) {
+ throw new Error(`Unknown node type: "${type}"`);
+ } else {
+ for (const field of Object.keys(_index.NODE_FIELDS[type])) {
+ if (hasOwn(node, field)) {
+ if (deep) {
+ newNode[field] = (0, _index2.isFile)(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc, commentsCache) : cloneIfNodeOrArray(node[field], true, withoutLoc, commentsCache);
+ } else {
+ newNode[field] = node[field];
+ }
+ }
+ }
+ }
+ if (hasOwn(node, "loc")) {
+ if (withoutLoc) {
+ newNode.loc = null;
+ } else {
+ newNode.loc = node.loc;
+ }
+ }
+ if (hasOwn(node, "leadingComments")) {
+ newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc, commentsCache);
+ }
+ if (hasOwn(node, "innerComments")) {
+ newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc, commentsCache);
+ }
+ if (hasOwn(node, "trailingComments")) {
+ newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc, commentsCache);
+ }
+ if (hasOwn(node, "extra")) {
+ newNode.extra = Object.assign({}, node.extra);
+ }
+ return newNode;
+}
+function maybeCloneComments(comments, deep, withoutLoc, commentsCache) {
+ if (!comments || !deep) {
+ return comments;
+ }
+ return comments.map(comment => {
+ const cache = commentsCache.get(comment);
+ if (cache) return cache;
+ const {
+ type,
+ value,
+ loc
+ } = comment;
+ const ret = {
+ type,
+ value,
+ loc
+ };
+ if (withoutLoc) {
+ ret.loc = null;
+ }
+ commentsCache.set(comment, ret);
+ return ret;
+ });
+}
+
+//# sourceMappingURL=cloneNode.js.map
+
+}, function(modId) { var map = {"../definitions/index.js":1771034509032,"../validators/generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509058, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = clone;
+var _cloneNode = require("./cloneNode.js");
+function clone(node) {
+ return (0, _cloneNode.default)(node, false);
+}
+
+//# sourceMappingURL=clone.js.map
+
+}, function(modId) { var map = {"./cloneNode.js":1771034509057}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509059, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneDeep;
+var _cloneNode = require("./cloneNode.js");
+function cloneDeep(node) {
+ return (0, _cloneNode.default)(node);
+}
+
+//# sourceMappingURL=cloneDeep.js.map
+
+}, function(modId) { var map = {"./cloneNode.js":1771034509057}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509060, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneDeepWithoutLoc;
+var _cloneNode = require("./cloneNode.js");
+function cloneDeepWithoutLoc(node) {
+ return (0, _cloneNode.default)(node, true, true);
+}
+
+//# sourceMappingURL=cloneDeepWithoutLoc.js.map
+
+}, function(modId) { var map = {"./cloneNode.js":1771034509057}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509061, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneWithoutLoc;
+var _cloneNode = require("./cloneNode.js");
+function cloneWithoutLoc(node) {
+ return (0, _cloneNode.default)(node, false, true);
+}
+
+//# sourceMappingURL=cloneWithoutLoc.js.map
+
+}, function(modId) { var map = {"./cloneNode.js":1771034509057}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509062, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = addComment;
+var _addComments = require("./addComments.js");
+function addComment(node, type, content, line) {
+ return (0, _addComments.default)(node, type, [{
+ type: line ? "CommentLine" : "CommentBlock",
+ value: content
+ }]);
+}
+
+//# sourceMappingURL=addComment.js.map
+
+}, function(modId) { var map = {"./addComments.js":1771034509063}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509063, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = addComments;
+function addComments(node, type, comments) {
+ if (!comments || !node) return node;
+ const key = `${type}Comments`;
+ if (node[key]) {
+ if (type === "leading") {
+ node[key] = comments.concat(node[key]);
+ } else {
+ node[key].push(...comments);
+ }
+ } else {
+ node[key] = comments;
+ }
+ return node;
+}
+
+//# sourceMappingURL=addComments.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509064, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritInnerComments;
+var _inherit = require("../utils/inherit.js");
+function inheritInnerComments(child, parent) {
+ (0, _inherit.default)("innerComments", child, parent);
+}
+
+//# sourceMappingURL=inheritInnerComments.js.map
+
+}, function(modId) { var map = {"../utils/inherit.js":1771034509065}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509065, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inherit;
+function inherit(key, child, parent) {
+ if (child && parent) {
+ child[key] = Array.from(new Set([].concat(child[key], parent[key]).filter(Boolean)));
+ }
+}
+
+//# sourceMappingURL=inherit.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509066, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritLeadingComments;
+var _inherit = require("../utils/inherit.js");
+function inheritLeadingComments(child, parent) {
+ (0, _inherit.default)("leadingComments", child, parent);
+}
+
+//# sourceMappingURL=inheritLeadingComments.js.map
+
+}, function(modId) { var map = {"../utils/inherit.js":1771034509065}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509067, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritsComments;
+var _inheritTrailingComments = require("./inheritTrailingComments.js");
+var _inheritLeadingComments = require("./inheritLeadingComments.js");
+var _inheritInnerComments = require("./inheritInnerComments.js");
+function inheritsComments(child, parent) {
+ (0, _inheritTrailingComments.default)(child, parent);
+ (0, _inheritLeadingComments.default)(child, parent);
+ (0, _inheritInnerComments.default)(child, parent);
+ return child;
+}
+
+//# sourceMappingURL=inheritsComments.js.map
+
+}, function(modId) { var map = {"./inheritTrailingComments.js":1771034509068,"./inheritLeadingComments.js":1771034509066,"./inheritInnerComments.js":1771034509064}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509068, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritTrailingComments;
+var _inherit = require("../utils/inherit.js");
+function inheritTrailingComments(child, parent) {
+ (0, _inherit.default)("trailingComments", child, parent);
+}
+
+//# sourceMappingURL=inheritTrailingComments.js.map
+
+}, function(modId) { var map = {"../utils/inherit.js":1771034509065}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509069, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeComments;
+var _index = require("../constants/index.js");
+function removeComments(node) {
+ _index.COMMENT_KEYS.forEach(key => {
+ node[key] = null;
+ });
+ return node;
+}
+
+//# sourceMappingURL=removeComments.js.map
+
+}, function(modId) { var map = {"../constants/index.js":1771034509038}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509070, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.WHILE_TYPES = exports.USERWHITESPACABLE_TYPES = exports.UNARYLIKE_TYPES = exports.TYPESCRIPT_TYPES = exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.TSENTITYNAME_TYPES = exports.TSBASETYPE_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.STANDARDIZED_TYPES = exports.SCOPABLE_TYPES = exports.PUREISH_TYPES = exports.PROPERTY_TYPES = exports.PRIVATE_TYPES = exports.PATTERN_TYPES = exports.PATTERNLIKE_TYPES = exports.OBJECTMEMBER_TYPES = exports.MODULESPECIFIER_TYPES = exports.MODULEDECLARATION_TYPES = exports.MISCELLANEOUS_TYPES = exports.METHOD_TYPES = exports.LVAL_TYPES = exports.LOOP_TYPES = exports.LITERAL_TYPES = exports.JSX_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = exports.IMMUTABLE_TYPES = exports.FUNCTION_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FUNCTIONPARAMETER_TYPES = exports.FOR_TYPES = exports.FORXSTATEMENT_TYPES = exports.FLOW_TYPES = exports.FLOWTYPE_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.EXPRESSION_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.ENUMMEMBER_TYPES = exports.ENUMBODY_TYPES = exports.DECLARATION_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.CLASS_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.BINARY_TYPES = exports.ACCESSOR_TYPES = void 0;
+var _index = require("../../definitions/index.js");
+const STANDARDIZED_TYPES = exports.STANDARDIZED_TYPES = _index.FLIPPED_ALIAS_KEYS["Standardized"];
+const EXPRESSION_TYPES = exports.EXPRESSION_TYPES = _index.FLIPPED_ALIAS_KEYS["Expression"];
+const BINARY_TYPES = exports.BINARY_TYPES = _index.FLIPPED_ALIAS_KEYS["Binary"];
+const SCOPABLE_TYPES = exports.SCOPABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Scopable"];
+const BLOCKPARENT_TYPES = exports.BLOCKPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["BlockParent"];
+const BLOCK_TYPES = exports.BLOCK_TYPES = _index.FLIPPED_ALIAS_KEYS["Block"];
+const STATEMENT_TYPES = exports.STATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["Statement"];
+const TERMINATORLESS_TYPES = exports.TERMINATORLESS_TYPES = _index.FLIPPED_ALIAS_KEYS["Terminatorless"];
+const COMPLETIONSTATEMENT_TYPES = exports.COMPLETIONSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["CompletionStatement"];
+const CONDITIONAL_TYPES = exports.CONDITIONAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Conditional"];
+const LOOP_TYPES = exports.LOOP_TYPES = _index.FLIPPED_ALIAS_KEYS["Loop"];
+const WHILE_TYPES = exports.WHILE_TYPES = _index.FLIPPED_ALIAS_KEYS["While"];
+const EXPRESSIONWRAPPER_TYPES = exports.EXPRESSIONWRAPPER_TYPES = _index.FLIPPED_ALIAS_KEYS["ExpressionWrapper"];
+const FOR_TYPES = exports.FOR_TYPES = _index.FLIPPED_ALIAS_KEYS["For"];
+const FORXSTATEMENT_TYPES = exports.FORXSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["ForXStatement"];
+const FUNCTION_TYPES = exports.FUNCTION_TYPES = _index.FLIPPED_ALIAS_KEYS["Function"];
+const FUNCTIONPARENT_TYPES = exports.FUNCTIONPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS["FunctionParent"];
+const PUREISH_TYPES = exports.PUREISH_TYPES = _index.FLIPPED_ALIAS_KEYS["Pureish"];
+const DECLARATION_TYPES = exports.DECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["Declaration"];
+const FUNCTIONPARAMETER_TYPES = exports.FUNCTIONPARAMETER_TYPES = _index.FLIPPED_ALIAS_KEYS["FunctionParameter"];
+const PATTERNLIKE_TYPES = exports.PATTERNLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["PatternLike"];
+const LVAL_TYPES = exports.LVAL_TYPES = _index.FLIPPED_ALIAS_KEYS["LVal"];
+const TSENTITYNAME_TYPES = exports.TSENTITYNAME_TYPES = _index.FLIPPED_ALIAS_KEYS["TSEntityName"];
+const LITERAL_TYPES = exports.LITERAL_TYPES = _index.FLIPPED_ALIAS_KEYS["Literal"];
+const IMMUTABLE_TYPES = exports.IMMUTABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["Immutable"];
+const USERWHITESPACABLE_TYPES = exports.USERWHITESPACABLE_TYPES = _index.FLIPPED_ALIAS_KEYS["UserWhitespacable"];
+const METHOD_TYPES = exports.METHOD_TYPES = _index.FLIPPED_ALIAS_KEYS["Method"];
+const OBJECTMEMBER_TYPES = exports.OBJECTMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["ObjectMember"];
+const PROPERTY_TYPES = exports.PROPERTY_TYPES = _index.FLIPPED_ALIAS_KEYS["Property"];
+const UNARYLIKE_TYPES = exports.UNARYLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS["UnaryLike"];
+const PATTERN_TYPES = exports.PATTERN_TYPES = _index.FLIPPED_ALIAS_KEYS["Pattern"];
+const CLASS_TYPES = exports.CLASS_TYPES = _index.FLIPPED_ALIAS_KEYS["Class"];
+const IMPORTOREXPORTDECLARATION_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ImportOrExportDeclaration"];
+const EXPORTDECLARATION_TYPES = exports.EXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["ExportDeclaration"];
+const MODULESPECIFIER_TYPES = exports.MODULESPECIFIER_TYPES = _index.FLIPPED_ALIAS_KEYS["ModuleSpecifier"];
+const ACCESSOR_TYPES = exports.ACCESSOR_TYPES = _index.FLIPPED_ALIAS_KEYS["Accessor"];
+const PRIVATE_TYPES = exports.PRIVATE_TYPES = _index.FLIPPED_ALIAS_KEYS["Private"];
+const FLOW_TYPES = exports.FLOW_TYPES = _index.FLIPPED_ALIAS_KEYS["Flow"];
+const FLOWTYPE_TYPES = exports.FLOWTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowType"];
+const FLOWBASEANNOTATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowBaseAnnotation"];
+const FLOWDECLARATION_TYPES = exports.FLOWDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowDeclaration"];
+const FLOWPREDICATE_TYPES = exports.FLOWPREDICATE_TYPES = _index.FLIPPED_ALIAS_KEYS["FlowPredicate"];
+const ENUMBODY_TYPES = exports.ENUMBODY_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumBody"];
+const ENUMMEMBER_TYPES = exports.ENUMMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS["EnumMember"];
+const JSX_TYPES = exports.JSX_TYPES = _index.FLIPPED_ALIAS_KEYS["JSX"];
+const MISCELLANEOUS_TYPES = exports.MISCELLANEOUS_TYPES = _index.FLIPPED_ALIAS_KEYS["Miscellaneous"];
+const TYPESCRIPT_TYPES = exports.TYPESCRIPT_TYPES = _index.FLIPPED_ALIAS_KEYS["TypeScript"];
+const TSTYPEELEMENT_TYPES = exports.TSTYPEELEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS["TSTypeElement"];
+const TSTYPE_TYPES = exports.TSTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSType"];
+const TSBASETYPE_TYPES = exports.TSBASETYPE_TYPES = _index.FLIPPED_ALIAS_KEYS["TSBaseType"];
+const MODULEDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;
+
+//# sourceMappingURL=index.js.map
+
+}, function(modId) { var map = {"../../definitions/index.js":1771034509032}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509071, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = ensureBlock;
+var _toBlock = require("./toBlock.js");
+function ensureBlock(node, key = "body") {
+ const result = (0, _toBlock.default)(node[key], node);
+ node[key] = result;
+ return result;
+}
+
+//# sourceMappingURL=ensureBlock.js.map
+
+}, function(modId) { var map = {"./toBlock.js":1771034509072}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509072, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toBlock;
+var _index = require("../validators/generated/index.js");
+var _index2 = require("../builders/generated/index.js");
+function toBlock(node, parent) {
+ if ((0, _index.isBlockStatement)(node)) {
+ return node;
+ }
+ let blockNodes = [];
+ if ((0, _index.isEmptyStatement)(node)) {
+ blockNodes = [];
+ } else {
+ if (!(0, _index.isStatement)(node)) {
+ if ((0, _index.isFunction)(parent)) {
+ node = (0, _index2.returnStatement)(node);
+ } else {
+ node = (0, _index2.expressionStatement)(node);
+ }
+ }
+ blockNodes = [node];
+ }
+ return (0, _index2.blockStatement)(blockNodes);
+}
+
+//# sourceMappingURL=toBlock.js.map
+
+}, function(modId) { var map = {"../validators/generated/index.js":1771034509023,"../builders/generated/index.js":1771034509029}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509073, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toBindingIdentifierName;
+var _toIdentifier = require("./toIdentifier.js");
+function toBindingIdentifierName(name) {
+ name = (0, _toIdentifier.default)(name);
+ if (name === "eval" || name === "arguments") name = "_" + name;
+ return name;
+}
+
+//# sourceMappingURL=toBindingIdentifierName.js.map
+
+}, function(modId) { var map = {"./toIdentifier.js":1771034509074}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509074, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toIdentifier;
+var _isValidIdentifier = require("../validators/isValidIdentifier.js");
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+function toIdentifier(input) {
+ input = input + "";
+ let name = "";
+ for (const c of input) {
+ name += (0, _helperValidatorIdentifier.isIdentifierChar)(c.codePointAt(0)) ? c : "-";
+ }
+ name = name.replace(/^[-0-9]+/, "");
+ name = name.replace(/[-\s]+(.)?/g, function (match, c) {
+ return c ? c.toUpperCase() : "";
+ });
+ if (!(0, _isValidIdentifier.default)(name)) {
+ name = `_${name}`;
+ }
+ return name || "_";
+}
+
+//# sourceMappingURL=toIdentifier.js.map
+
+}, function(modId) { var map = {"../validators/isValidIdentifier.js":1771034509037}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509075, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toComputedKey;
+var _index = require("../validators/generated/index.js");
+var _index2 = require("../builders/generated/index.js");
+function toComputedKey(node, key = node.key || node.property) {
+ if (!node.computed && (0, _index.isIdentifier)(key)) key = (0, _index2.stringLiteral)(key.name);
+ return key;
+}
+
+//# sourceMappingURL=toComputedKey.js.map
+
+}, function(modId) { var map = {"../validators/generated/index.js":1771034509023,"../builders/generated/index.js":1771034509029}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509076, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _index = require("../validators/generated/index.js");
+var _default = exports.default = toExpression;
+function toExpression(node) {
+ if ((0, _index.isExpressionStatement)(node)) {
+ node = node.expression;
+ }
+ if ((0, _index.isExpression)(node)) {
+ return node;
+ }
+ if ((0, _index.isClass)(node)) {
+ node.type = "ClassExpression";
+ node.abstract = false;
+ } else if ((0, _index.isFunction)(node)) {
+ node.type = "FunctionExpression";
+ }
+ if (!(0, _index.isExpression)(node)) {
+ throw new Error(`cannot turn ${node.type} to an expression`);
+ }
+ return node;
+}
+
+//# sourceMappingURL=toExpression.js.map
+
+}, function(modId) { var map = {"../validators/generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509077, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toKeyAlias;
+var _index = require("../validators/generated/index.js");
+var _cloneNode = require("../clone/cloneNode.js");
+var _removePropertiesDeep = require("../modifications/removePropertiesDeep.js");
+function toKeyAlias(node, key = node.key) {
+ let alias;
+ if (node.kind === "method") {
+ return toKeyAlias.increment() + "";
+ } else if ((0, _index.isIdentifier)(key)) {
+ alias = key.name;
+ } else if ((0, _index.isStringLiteral)(key)) {
+ alias = JSON.stringify(key.value);
+ } else {
+ alias = JSON.stringify((0, _removePropertiesDeep.default)((0, _cloneNode.default)(key)));
+ }
+ if (node.computed) {
+ alias = `[${alias}]`;
+ }
+ if (node.static) {
+ alias = `static:${alias}`;
+ }
+ return alias;
+}
+toKeyAlias.uid = 0;
+toKeyAlias.increment = function () {
+ if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {
+ return toKeyAlias.uid = 0;
+ } else {
+ return toKeyAlias.uid++;
+ }
+};
+
+//# sourceMappingURL=toKeyAlias.js.map
+
+}, function(modId) { var map = {"../validators/generated/index.js":1771034509023,"../clone/cloneNode.js":1771034509057,"../modifications/removePropertiesDeep.js":1771034509078}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509078, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removePropertiesDeep;
+var _traverseFast = require("../traverse/traverseFast.js");
+var _removeProperties = require("./removeProperties.js");
+function removePropertiesDeep(tree, opts) {
+ (0, _traverseFast.default)(tree, _removeProperties.default, opts);
+ return tree;
+}
+
+//# sourceMappingURL=removePropertiesDeep.js.map
+
+}, function(modId) { var map = {"../traverse/traverseFast.js":1771034509079,"./removeProperties.js":1771034509080}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509079, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = traverseFast;
+var _index = require("../definitions/index.js");
+const _skip = Symbol();
+const _stop = Symbol();
+function traverseFast(node, enter, opts) {
+ if (!node) return false;
+ const keys = _index.VISITOR_KEYS[node.type];
+ if (!keys) return false;
+ opts = opts || {};
+ const ret = enter(node, opts);
+ if (ret !== undefined) {
+ switch (ret) {
+ case _skip:
+ return false;
+ case _stop:
+ return true;
+ }
+ }
+ for (const key of keys) {
+ const subNode = node[key];
+ if (!subNode) continue;
+ if (Array.isArray(subNode)) {
+ for (const node of subNode) {
+ if (traverseFast(node, enter, opts)) return true;
+ }
+ } else {
+ if (traverseFast(subNode, enter, opts)) return true;
+ }
+ }
+ return false;
+}
+traverseFast.skip = _skip;
+traverseFast.stop = _stop;
+
+//# sourceMappingURL=traverseFast.js.map
+
+}, function(modId) { var map = {"../definitions/index.js":1771034509032}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509080, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeProperties;
+var _index = require("../constants/index.js");
+const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"];
+const CLEAR_KEYS_PLUS_COMMENTS = [..._index.COMMENT_KEYS, "comments", ...CLEAR_KEYS];
+function removeProperties(node, opts = {}) {
+ const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;
+ for (const key of map) {
+ if (node[key] != null) node[key] = undefined;
+ }
+ for (const key of Object.keys(node)) {
+ if (key.startsWith("_") && node[key] != null) node[key] = undefined;
+ }
+ const symbols = Object.getOwnPropertySymbols(node);
+ for (const sym of symbols) {
+ node[sym] = null;
+ }
+}
+
+//# sourceMappingURL=removeProperties.js.map
+
+}, function(modId) { var map = {"../constants/index.js":1771034509038}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509081, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _index = require("../validators/generated/index.js");
+var _index2 = require("../builders/generated/index.js");
+var _default = exports.default = toStatement;
+function toStatement(node, ignore) {
+ if ((0, _index.isStatement)(node)) {
+ return node;
+ }
+ let mustHaveId = false;
+ let newType;
+ if ((0, _index.isClass)(node)) {
+ mustHaveId = true;
+ newType = "ClassDeclaration";
+ } else if ((0, _index.isFunction)(node)) {
+ mustHaveId = true;
+ newType = "FunctionDeclaration";
+ } else if ((0, _index.isAssignmentExpression)(node)) {
+ return (0, _index2.expressionStatement)(node);
+ }
+ if (mustHaveId && !node.id) {
+ newType = false;
+ }
+ if (!newType) {
+ if (ignore) {
+ return false;
+ } else {
+ throw new Error(`cannot turn ${node.type} to a statement`);
+ }
+ }
+ node.type = newType;
+ return node;
+}
+
+//# sourceMappingURL=toStatement.js.map
+
+}, function(modId) { var map = {"../validators/generated/index.js":1771034509023,"../builders/generated/index.js":1771034509029}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509082, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _isValidIdentifier = require("../validators/isValidIdentifier.js");
+var _index = require("../builders/generated/index.js");
+var _default = exports.default = valueToNode;
+const objectToString = Function.call.bind(Object.prototype.toString);
+function isRegExp(value) {
+ return objectToString(value) === "[object RegExp]";
+}
+function isPlainObject(value) {
+ if (typeof value !== "object" || value === null || Object.prototype.toString.call(value) !== "[object Object]") {
+ return false;
+ }
+ const proto = Object.getPrototypeOf(value);
+ return proto === null || Object.getPrototypeOf(proto) === null;
+}
+function valueToNode(value) {
+ if (value === undefined) {
+ return (0, _index.identifier)("undefined");
+ }
+ if (value === true || value === false) {
+ return (0, _index.booleanLiteral)(value);
+ }
+ if (value === null) {
+ return (0, _index.nullLiteral)();
+ }
+ if (typeof value === "string") {
+ return (0, _index.stringLiteral)(value);
+ }
+ if (typeof value === "number") {
+ let result;
+ if (Number.isFinite(value)) {
+ result = (0, _index.numericLiteral)(Math.abs(value));
+ } else {
+ let numerator;
+ if (Number.isNaN(value)) {
+ numerator = (0, _index.numericLiteral)(0);
+ } else {
+ numerator = (0, _index.numericLiteral)(1);
+ }
+ result = (0, _index.binaryExpression)("/", numerator, (0, _index.numericLiteral)(0));
+ }
+ if (value < 0 || Object.is(value, -0)) {
+ result = (0, _index.unaryExpression)("-", result);
+ }
+ return result;
+ }
+ if (typeof value === "bigint") {
+ if (value < 0) {
+ return (0, _index.unaryExpression)("-", (0, _index.bigIntLiteral)(-value));
+ } else {
+ return (0, _index.bigIntLiteral)(value);
+ }
+ }
+ if (isRegExp(value)) {
+ const pattern = value.source;
+ const flags = /\/([a-z]*)$/.exec(value.toString())[1];
+ return (0, _index.regExpLiteral)(pattern, flags);
+ }
+ if (Array.isArray(value)) {
+ return (0, _index.arrayExpression)(value.map(valueToNode));
+ }
+ if (isPlainObject(value)) {
+ const props = [];
+ for (const key of Object.keys(value)) {
+ let nodeKey,
+ computed = false;
+ if ((0, _isValidIdentifier.default)(key)) {
+ if (key === "__proto__") {
+ computed = true;
+ nodeKey = (0, _index.stringLiteral)(key);
+ } else {
+ nodeKey = (0, _index.identifier)(key);
+ }
+ } else {
+ nodeKey = (0, _index.stringLiteral)(key);
+ }
+ props.push((0, _index.objectProperty)(nodeKey, valueToNode(value[key]), computed));
+ }
+ return (0, _index.objectExpression)(props);
+ }
+ throw new Error("don't know how to turn this value into a node");
+}
+
+//# sourceMappingURL=valueToNode.js.map
+
+}, function(modId) { var map = {"../validators/isValidIdentifier.js":1771034509037,"../builders/generated/index.js":1771034509029}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509083, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = appendToMemberExpression;
+var _index = require("../builders/generated/index.js");
+function appendToMemberExpression(member, append, computed = false) {
+ member.object = (0, _index.memberExpression)(member.object, member.property, member.computed);
+ member.property = append;
+ member.computed = !!computed;
+ return member;
+}
+
+//# sourceMappingURL=appendToMemberExpression.js.map
+
+}, function(modId) { var map = {"../builders/generated/index.js":1771034509029}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509084, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inherits;
+var _index = require("../constants/index.js");
+var _inheritsComments = require("../comments/inheritsComments.js");
+function inherits(child, parent) {
+ if (!child || !parent) return child;
+ for (const key of _index.INHERIT_KEYS.optional) {
+ if (child[key] == null) {
+ child[key] = parent[key];
+ }
+ }
+ for (const key of Object.keys(parent)) {
+ if (key.startsWith("_") && key !== "__clone") {
+ child[key] = parent[key];
+ }
+ }
+ for (const key of _index.INHERIT_KEYS.force) {
+ child[key] = parent[key];
+ }
+ (0, _inheritsComments.default)(child, parent);
+ return child;
+}
+
+//# sourceMappingURL=inherits.js.map
+
+}, function(modId) { var map = {"../constants/index.js":1771034509038,"../comments/inheritsComments.js":1771034509067}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509085, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = prependToMemberExpression;
+var _index = require("../builders/generated/index.js");
+var _index2 = require("../index.js");
+function prependToMemberExpression(member, prepend) {
+ if ((0, _index2.isSuper)(member.object)) {
+ throw new Error("Cannot prepend node to super property access (`super.foo`).");
+ }
+ member.object = (0, _index.memberExpression)(prepend, member.object);
+ return member;
+}
+
+//# sourceMappingURL=prependToMemberExpression.js.map
+
+}, function(modId) { var map = {"../builders/generated/index.js":1771034509029,"../index.js":1771034509019}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509086, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getAssignmentIdentifiers;
+function getAssignmentIdentifiers(node) {
+ const search = [].concat(node);
+ const ids = Object.create(null);
+ while (search.length) {
+ const id = search.pop();
+ if (!id) continue;
+ switch (id.type) {
+ case "ArrayPattern":
+ search.push(...id.elements);
+ break;
+ case "AssignmentExpression":
+ case "AssignmentPattern":
+ case "ForInStatement":
+ case "ForOfStatement":
+ search.push(id.left);
+ break;
+ case "ObjectPattern":
+ search.push(...id.properties);
+ break;
+ case "ObjectProperty":
+ search.push(id.value);
+ break;
+ case "RestElement":
+ case "UpdateExpression":
+ search.push(id.argument);
+ break;
+ case "UnaryExpression":
+ if (id.operator === "delete") {
+ search.push(id.argument);
+ }
+ break;
+ case "Identifier":
+ ids[id.name] = id;
+ break;
+ default:
+ break;
+ }
+ }
+ return ids;
+}
+
+//# sourceMappingURL=getAssignmentIdentifiers.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509087, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getBindingIdentifiers;
+var _index = require("../validators/generated/index.js");
+function getBindingIdentifiers(node, duplicates, outerOnly, newBindingsOnly) {
+ const search = [].concat(node);
+ const ids = Object.create(null);
+ while (search.length) {
+ const id = search.shift();
+ if (!id) continue;
+ if (newBindingsOnly && ((0, _index.isAssignmentExpression)(id) || (0, _index.isUnaryExpression)(id) || (0, _index.isUpdateExpression)(id))) {
+ continue;
+ }
+ if ((0, _index.isIdentifier)(id)) {
+ if (duplicates) {
+ const _ids = ids[id.name] = ids[id.name] || [];
+ _ids.push(id);
+ } else {
+ ids[id.name] = id;
+ }
+ continue;
+ }
+ if ((0, _index.isExportDeclaration)(id) && !(0, _index.isExportAllDeclaration)(id)) {
+ if ((0, _index.isDeclaration)(id.declaration)) {
+ search.push(id.declaration);
+ }
+ continue;
+ }
+ if (outerOnly) {
+ if ((0, _index.isFunctionDeclaration)(id)) {
+ search.push(id.id);
+ continue;
+ }
+ if ((0, _index.isFunctionExpression)(id)) {
+ continue;
+ }
+ }
+ const keys = getBindingIdentifiers.keys[id.type];
+ if (keys) {
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ const nodes = id[key];
+ if (nodes) {
+ if (Array.isArray(nodes)) {
+ search.push(...nodes);
+ } else {
+ search.push(nodes);
+ }
+ }
+ }
+ }
+ }
+ return ids;
+}
+const keys = {
+ DeclareClass: ["id"],
+ DeclareFunction: ["id"],
+ DeclareModule: ["id"],
+ DeclareVariable: ["id"],
+ DeclareInterface: ["id"],
+ DeclareTypeAlias: ["id"],
+ DeclareOpaqueType: ["id"],
+ InterfaceDeclaration: ["id"],
+ TypeAlias: ["id"],
+ OpaqueType: ["id"],
+ CatchClause: ["param"],
+ LabeledStatement: ["label"],
+ UnaryExpression: ["argument"],
+ AssignmentExpression: ["left"],
+ ImportSpecifier: ["local"],
+ ImportNamespaceSpecifier: ["local"],
+ ImportDefaultSpecifier: ["local"],
+ ImportDeclaration: ["specifiers"],
+ TSImportEqualsDeclaration: ["id"],
+ ExportSpecifier: ["exported"],
+ ExportNamespaceSpecifier: ["exported"],
+ ExportDefaultSpecifier: ["exported"],
+ FunctionDeclaration: ["id", "params"],
+ FunctionExpression: ["id", "params"],
+ ArrowFunctionExpression: ["params"],
+ ObjectMethod: ["params"],
+ ClassMethod: ["params"],
+ ClassPrivateMethod: ["params"],
+ ForInStatement: ["left"],
+ ForOfStatement: ["left"],
+ ClassDeclaration: ["id"],
+ ClassExpression: ["id"],
+ RestElement: ["argument"],
+ UpdateExpression: ["argument"],
+ ObjectProperty: ["value"],
+ AssignmentPattern: ["left"],
+ ArrayPattern: ["elements"],
+ ObjectPattern: ["properties"],
+ VariableDeclaration: ["declarations"],
+ VariableDeclarator: ["id"]
+};
+getBindingIdentifiers.keys = keys;
+
+//# sourceMappingURL=getBindingIdentifiers.js.map
+
+}, function(modId) { var map = {"../validators/generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509088, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _getBindingIdentifiers = require("./getBindingIdentifiers.js");
+var _default = exports.default = getOuterBindingIdentifiers;
+function getOuterBindingIdentifiers(node, duplicates) {
+ return (0, _getBindingIdentifiers.default)(node, duplicates, true);
+}
+
+//# sourceMappingURL=getOuterBindingIdentifiers.js.map
+
+}, function(modId) { var map = {"./getBindingIdentifiers.js":1771034509087}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509089, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getFunctionName;
+var _index = require("../validators/generated/index.js");
+function getNameFromLiteralId(id) {
+ if ((0, _index.isNullLiteral)(id)) {
+ return "null";
+ }
+ if ((0, _index.isRegExpLiteral)(id)) {
+ return `/${id.pattern}/${id.flags}`;
+ }
+ if ((0, _index.isTemplateLiteral)(id)) {
+ return id.quasis.map(quasi => quasi.value.raw).join("");
+ }
+ if (id.value !== undefined) {
+ return String(id.value);
+ }
+ return null;
+}
+function getObjectMemberKey(node) {
+ if (!node.computed || (0, _index.isLiteral)(node.key)) {
+ return node.key;
+ }
+}
+function getFunctionName(node, parent) {
+ if ("id" in node && node.id) {
+ return {
+ name: node.id.name,
+ originalNode: node.id
+ };
+ }
+ let prefix = "";
+ let id;
+ if ((0, _index.isObjectProperty)(parent, {
+ value: node
+ })) {
+ id = getObjectMemberKey(parent);
+ } else if ((0, _index.isObjectMethod)(node) || (0, _index.isClassMethod)(node)) {
+ id = getObjectMemberKey(node);
+ if (node.kind === "get") prefix = "get ";else if (node.kind === "set") prefix = "set ";
+ } else if ((0, _index.isVariableDeclarator)(parent, {
+ init: node
+ })) {
+ id = parent.id;
+ } else if ((0, _index.isAssignmentExpression)(parent, {
+ operator: "=",
+ right: node
+ })) {
+ id = parent.left;
+ }
+ if (!id) return null;
+ const name = (0, _index.isLiteral)(id) ? getNameFromLiteralId(id) : (0, _index.isIdentifier)(id) ? id.name : (0, _index.isPrivateName)(id) ? id.id.name : null;
+ if (name == null) return null;
+ return {
+ name: prefix + name,
+ originalNode: id
+ };
+}
+
+//# sourceMappingURL=getFunctionName.js.map
+
+}, function(modId) { var map = {"../validators/generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509090, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = traverse;
+var _index = require("../definitions/index.js");
+function traverse(node, handlers, state) {
+ if (typeof handlers === "function") {
+ handlers = {
+ enter: handlers
+ };
+ }
+ const {
+ enter,
+ exit
+ } = handlers;
+ traverseSimpleImpl(node, enter, exit, state, []);
+}
+function traverseSimpleImpl(node, enter, exit, state, ancestors) {
+ const keys = _index.VISITOR_KEYS[node.type];
+ if (!keys) return;
+ if (enter) enter(node, ancestors, state);
+ for (const key of keys) {
+ const subNode = node[key];
+ if (Array.isArray(subNode)) {
+ for (let i = 0; i < subNode.length; i++) {
+ const child = subNode[i];
+ if (!child) continue;
+ ancestors.push({
+ node,
+ key,
+ index: i
+ });
+ traverseSimpleImpl(child, enter, exit, state, ancestors);
+ ancestors.pop();
+ }
+ } else if (subNode) {
+ ancestors.push({
+ node,
+ key
+ });
+ traverseSimpleImpl(subNode, enter, exit, state, ancestors);
+ ancestors.pop();
+ }
+ }
+ if (exit) exit(node, ancestors, state);
+}
+
+//# sourceMappingURL=traverse.js.map
+
+}, function(modId) { var map = {"../definitions/index.js":1771034509032}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509091, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isBinding;
+var _getBindingIdentifiers = require("../retrievers/getBindingIdentifiers.js");
+function isBinding(node, parent, grandparent) {
+ if (grandparent && node.type === "Identifier" && parent.type === "ObjectProperty" && grandparent.type === "ObjectExpression") {
+ return false;
+ }
+ const keys = _getBindingIdentifiers.default.keys[parent.type];
+ if (keys) {
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ const val = parent[key];
+ if (Array.isArray(val)) {
+ if (val.includes(node)) return true;
+ } else {
+ if (val === node) return true;
+ }
+ }
+ }
+ return false;
+}
+
+//# sourceMappingURL=isBinding.js.map
+
+}, function(modId) { var map = {"../retrievers/getBindingIdentifiers.js":1771034509087}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509092, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isBlockScoped;
+var _index = require("./generated/index.js");
+var _isLet = require("./isLet.js");
+function isBlockScoped(node) {
+ return (0, _index.isFunctionDeclaration)(node) || (0, _index.isClassDeclaration)(node) || (0, _isLet.default)(node);
+}
+
+//# sourceMappingURL=isBlockScoped.js.map
+
+}, function(modId) { var map = {"./generated/index.js":1771034509023,"./isLet.js":1771034509093}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509093, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isLet;
+var _index = require("./generated/index.js");
+var BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
+function isLet(node) {
+ return (0, _index.isVariableDeclaration)(node) && (node.kind !== "var" || node[BLOCK_SCOPED_SYMBOL]);
+}
+
+//# sourceMappingURL=isLet.js.map
+
+}, function(modId) { var map = {"./generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509094, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isImmutable;
+var _isType = require("./isType.js");
+var _index = require("./generated/index.js");
+function isImmutable(node) {
+ if ((0, _isType.default)(node.type, "Immutable")) return true;
+ if ((0, _index.isIdentifier)(node)) {
+ if (node.name === "undefined") {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ return false;
+}
+
+//# sourceMappingURL=isImmutable.js.map
+
+}, function(modId) { var map = {"./isType.js":1771034509035,"./generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509095, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isNodesEquivalent;
+var _index = require("../definitions/index.js");
+function isNodesEquivalent(a, b) {
+ if (typeof a !== "object" || typeof b !== "object" || a == null || b == null) {
+ return a === b;
+ }
+ if (a.type !== b.type) {
+ return false;
+ }
+ const fields = Object.keys(_index.NODE_FIELDS[a.type] || a.type);
+ const visitorKeys = _index.VISITOR_KEYS[a.type];
+ for (const field of fields) {
+ const val_a = a[field];
+ const val_b = b[field];
+ if (typeof val_a !== typeof val_b) {
+ return false;
+ }
+ if (val_a == null && val_b == null) {
+ continue;
+ } else if (val_a == null || val_b == null) {
+ return false;
+ }
+ if (Array.isArray(val_a)) {
+ if (!Array.isArray(val_b)) {
+ return false;
+ }
+ if (val_a.length !== val_b.length) {
+ return false;
+ }
+ for (let i = 0; i < val_a.length; i++) {
+ if (!isNodesEquivalent(val_a[i], val_b[i])) {
+ return false;
+ }
+ }
+ continue;
+ }
+ if (typeof val_a === "object" && !(visitorKeys != null && visitorKeys.includes(field))) {
+ for (const key of Object.keys(val_a)) {
+ if (val_a[key] !== val_b[key]) {
+ return false;
+ }
+ }
+ continue;
+ }
+ if (!isNodesEquivalent(val_a, val_b)) {
+ return false;
+ }
+ }
+ return true;
+}
+
+//# sourceMappingURL=isNodesEquivalent.js.map
+
+}, function(modId) { var map = {"../definitions/index.js":1771034509032}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509096, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isReferenced;
+function isReferenced(node, parent, grandparent) {
+ switch (parent.type) {
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ if (parent.property === node) {
+ return !!parent.computed;
+ }
+ return parent.object === node;
+ case "JSXMemberExpression":
+ return parent.object === node;
+ case "VariableDeclarator":
+ return parent.init === node;
+ case "ArrowFunctionExpression":
+ return parent.body === node;
+ case "PrivateName":
+ return false;
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "ObjectMethod":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+ return false;
+ case "ObjectProperty":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+ return (grandparent == null ? void 0 : grandparent.type) !== "ObjectPattern";
+ case "ClassProperty":
+ case "ClassAccessorProperty":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+ return true;
+ case "ClassPrivateProperty":
+ return parent.key !== node;
+ case "ClassDeclaration":
+ case "ClassExpression":
+ return parent.superClass === node;
+ case "AssignmentExpression":
+ return parent.right === node;
+ case "AssignmentPattern":
+ return parent.right === node;
+ case "LabeledStatement":
+ return false;
+ case "CatchClause":
+ return false;
+ case "RestElement":
+ return false;
+ case "BreakStatement":
+ case "ContinueStatement":
+ return false;
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ return false;
+ case "ExportNamespaceSpecifier":
+ case "ExportDefaultSpecifier":
+ return false;
+ case "ExportSpecifier":
+ if (grandparent != null && grandparent.source) {
+ return false;
+ }
+ return parent.local === node;
+ case "ImportDefaultSpecifier":
+ case "ImportNamespaceSpecifier":
+ case "ImportSpecifier":
+ return false;
+ case "ImportAttribute":
+ return false;
+ case "JSXAttribute":
+ return false;
+ case "ObjectPattern":
+ case "ArrayPattern":
+ return false;
+ case "MetaProperty":
+ return false;
+ case "ObjectTypeProperty":
+ return parent.key !== node;
+ case "TSEnumMember":
+ return parent.id !== node;
+ case "TSPropertySignature":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+ return true;
+ }
+ return true;
+}
+
+//# sourceMappingURL=isReferenced.js.map
+
+}, function(modId) { var map = {}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509097, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isScope;
+var _index = require("./generated/index.js");
+function isScope(node, parent) {
+ if ((0, _index.isBlockStatement)(node) && ((0, _index.isFunction)(parent) || (0, _index.isCatchClause)(parent))) {
+ return false;
+ }
+ if ((0, _index.isPattern)(node) && ((0, _index.isFunction)(parent) || (0, _index.isCatchClause)(parent))) {
+ return true;
+ }
+ return (0, _index.isScopable)(node);
+}
+
+//# sourceMappingURL=isScope.js.map
+
+}, function(modId) { var map = {"./generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509098, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isSpecifierDefault;
+var _index = require("./generated/index.js");
+function isSpecifierDefault(specifier) {
+ return (0, _index.isImportDefaultSpecifier)(specifier) || (0, _index.isIdentifier)(specifier.imported || specifier.exported, {
+ name: "default"
+ });
+}
+
+//# sourceMappingURL=isSpecifierDefault.js.map
+
+}, function(modId) { var map = {"./generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509099, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isValidES3Identifier;
+var _isValidIdentifier = require("./isValidIdentifier.js");
+const RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]);
+function isValidES3Identifier(name) {
+ return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name);
+}
+
+//# sourceMappingURL=isValidES3Identifier.js.map
+
+}, function(modId) { var map = {"./isValidIdentifier.js":1771034509037}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509100, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isVar;
+var _index = require("./generated/index.js");
+var BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
+function isVar(node) {
+ return (0, _index.isVariableDeclaration)(node, {
+ kind: "var"
+ }) && !node[BLOCK_SCOPED_SYMBOL];
+}
+
+//# sourceMappingURL=isVar.js.map
+
+}, function(modId) { var map = {"./generated/index.js":1771034509023}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509101, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toSequenceExpression;
+var _gatherSequenceExpressions = require("./gatherSequenceExpressions.js");
+function toSequenceExpression(nodes, scope) {
+ if (!(nodes != null && nodes.length)) return;
+ const declars = [];
+ const result = (0, _gatherSequenceExpressions.default)(nodes, declars);
+ if (!result) return;
+ for (const declar of declars) {
+ scope.push(declar);
+ }
+ return result;
+}
+
+//# sourceMappingURL=toSequenceExpression.js.map
+
+}, function(modId) { var map = {"./gatherSequenceExpressions.js":1771034509102}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509102, function(require, module, exports) {
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = gatherSequenceExpressions;
+var _getBindingIdentifiers = require("../retrievers/getBindingIdentifiers.js");
+var _index = require("../validators/generated/index.js");
+var _index2 = require("../builders/generated/index.js");
+var _productions = require("../builders/productions.js");
+var _cloneNode = require("../clone/cloneNode.js");
+function gatherSequenceExpressions(nodes, declars) {
+ const exprs = [];
+ let ensureLastUndefined = true;
+ for (const node of nodes) {
+ if (!(0, _index.isEmptyStatement)(node)) {
+ ensureLastUndefined = false;
+ }
+ if ((0, _index.isExpression)(node)) {
+ exprs.push(node);
+ } else if ((0, _index.isExpressionStatement)(node)) {
+ exprs.push(node.expression);
+ } else if ((0, _index.isVariableDeclaration)(node)) {
+ if (node.kind !== "var") return;
+ for (const declar of node.declarations) {
+ const bindings = (0, _getBindingIdentifiers.default)(declar);
+ for (const key of Object.keys(bindings)) {
+ declars.push({
+ kind: node.kind,
+ id: (0, _cloneNode.default)(bindings[key])
+ });
+ }
+ if (declar.init) {
+ exprs.push((0, _index2.assignmentExpression)("=", declar.id, declar.init));
+ }
+ }
+ ensureLastUndefined = true;
+ } else if ((0, _index.isIfStatement)(node)) {
+ const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], declars) : (0, _productions.buildUndefinedNode)();
+ const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], declars) : (0, _productions.buildUndefinedNode)();
+ if (!consequent || !alternate) return;
+ exprs.push((0, _index2.conditionalExpression)(node.test, consequent, alternate));
+ } else if ((0, _index.isBlockStatement)(node)) {
+ const body = gatherSequenceExpressions(node.body, declars);
+ if (!body) return;
+ exprs.push(body);
+ } else if ((0, _index.isEmptyStatement)(node)) {
+ if (nodes.indexOf(node) === 0) {
+ ensureLastUndefined = true;
+ }
+ } else {
+ return;
+ }
+ }
+ if (ensureLastUndefined) {
+ exprs.push((0, _productions.buildUndefinedNode)());
+ }
+ if (exprs.length === 1) {
+ return exprs[0];
+ } else {
+ return (0, _index2.sequenceExpression)(exprs);
+ }
+}
+
+//# sourceMappingURL=gatherSequenceExpressions.js.map
+
+}, function(modId) { var map = {"../retrievers/getBindingIdentifiers.js":1771034509087,"../validators/generated/index.js":1771034509023,"../builders/generated/index.js":1771034509029,"../builders/productions.js":1771034509056,"../clone/cloneNode.js":1771034509057}; return __REQUIRE__(map[modId], modId); })
+return __REQUIRE__(1771034509019);
+})()
+//miniprogram-npm-outsideDeps=["@babel/helper-validator-identifier","@babel/helper-string-parser"]
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@babel/types/index.js.map b/miniapp/miniprogram_npm/@babel/types/index.js.map
new file mode 100644
index 0000000..a8bc978
--- /dev/null
+++ b/miniapp/miniprogram_npm/@babel/types/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["index.js","validators/react/isReactComponent.js","validators/buildMatchMemberExpression.js","validators/matchesPattern.js","validators/generated/index.js","utils/shallowEqual.js","utils/deprecationWarning.js","validators/react/isCompatTag.js","builders/react/buildChildren.js","utils/react/cleanJSXElementLiteralChild.js","builders/generated/index.js","builders/generated/lowercase.js","validators/validate.js","definitions/index.js","definitions/core.js","validators/is.js","validators/isType.js","validators/isPlaceholderType.js","validators/isValidIdentifier.js","constants/index.js","definitions/utils.js","definitions/flow.js","definitions/jsx.js","definitions/misc.js","definitions/placeholders.js","definitions/experimental.js","definitions/typescript.js","definitions/deprecated-aliases.js","builders/generated/uppercase.js","asserts/assertNode.js","validators/isNode.js","asserts/generated/index.js","builders/flow/createTypeAnnotationBasedOnTypeof.js","builders/flow/createFlowUnionType.js","modifications/flow/removeTypeDuplicates.js","builders/typescript/createTSUnionType.js","modifications/typescript/removeTypeDuplicates.js","builders/productions.js","clone/cloneNode.js","clone/clone.js","clone/cloneDeep.js","clone/cloneDeepWithoutLoc.js","clone/cloneWithoutLoc.js","comments/addComment.js","comments/addComments.js","comments/inheritInnerComments.js","utils/inherit.js","comments/inheritLeadingComments.js","comments/inheritsComments.js","comments/inheritTrailingComments.js","comments/removeComments.js","constants/generated/index.js","converters/ensureBlock.js","converters/toBlock.js","converters/toBindingIdentifierName.js","converters/toIdentifier.js","converters/toComputedKey.js","converters/toExpression.js","converters/toKeyAlias.js","modifications/removePropertiesDeep.js","traverse/traverseFast.js","modifications/removeProperties.js","converters/toStatement.js","converters/valueToNode.js","modifications/appendToMemberExpression.js","modifications/inherits.js","modifications/prependToMemberExpression.js","retrievers/getAssignmentIdentifiers.js","retrievers/getBindingIdentifiers.js","retrievers/getOuterBindingIdentifiers.js","retrievers/getFunctionName.js","traverse/traverse.js","validators/isBinding.js","validators/isBlockScoped.js","validators/isLet.js","validators/isImmutable.js","validators/isNodesEquivalent.js","validators/isReferenced.js","validators/isScope.js","validators/isSpecifierDefault.js","validators/isValidES3Identifier.js","validators/isVar.js","converters/toSequenceExpression.js","converters/gatherSequenceExpressions.js"],"names":[],"mappings":";;;;;;;AAAA;AACA;AACA;AACA,ACHA;ADIA,ACHA;ADIA,ACHA;ADIA,AENA,ADGA;ADIA,AENA,ADGA;ADIA,AENA,ADGA;ADIA,AENA,ACHA,AFMA;ADIA,AENA,ACHA,AFMA;ADIA,AENA,ACHA,AFMA;ADIA,AENA,AENA,ADGA,AFMA;ADIA,AENA,AENA,ADGA,AFMA;ADIA,AENA,AENA,ADGA,AFMA;ADIA,AKfA,AHSA,AENA,ADGA;AHUA,AKfA,AHSA,AENA,ADGA;AHUA,AKfA,AHSA,AENA,ADGA;AHUA,AMlBA,ADGA,AHSA,AENA,ADGA;AHUA,AMlBA,ADGA,AHSA,AENA,ADGA;AHUA,AMlBA,ADGA,ADGA,ADGA;AHUA,AMlBA,ADGA,ADGA,ADGA,AIZA;APsBA,AMlBA,ADGA,ADGA,ADGA,AIZA;APsBA,AMlBA,ADGA,ADGA,ADGA,AIZA;ACFA,ARwBA,AMlBA,ADGA,ADGA,ADGA,AIZA;ACFA,ARwBA,AMlBA,ADGA,ADGA,ADGA,AIZA;ACFA,ARwBA,AMlBA,ADGA,ADGA,ADGA,AIZA;ACFA,ARwBA,AMlBA,AGTA,AJYA,ADGA,ADGA,AIZA;ACFA,ARwBA,AMlBA,AGTA,AJYA,ADGA,ADGA,AIZA;ACFA,ARwBA,AMlBA,AGTA,AJYA,ADGA,ADGA,AIZA;AGRA,AFMA,ARwBA,AMlBA,AGTA,AJYA,ADGA,ADGA,AIZA;AGRA,AFMA,ARwBA,AMlBA,AGTA,AJYA,ADGA,ADGA,AIZA;AGRA,AFMA,ARwBA,AMlBA,AGTA,AJYA,ADGA,ADGA,AIZA;AGRA,ACHA,AHSA,ARwBA,AMlBA,AGTA,ALeA,ADGA;AOpBA,ACHA,AHSA,ARwBA,AMlBA,AGTA,ALeA,ADGA;AOpBA,ACHA,AHSA,ARwBA,AMlBA,AGTA,ALeA,ADGA;AOpBA,ACHA,AHSA,ARwBA,AMlBA,AGTA,ALeA,ADGA,AS3BA;AFOA,ACHA,AHSA,ARwBA,AMlBA,AGTA,ALeA,ADGA,AS3BA;AFOA,ACHA,AHSA,ARwBA,AMlBA,AGTA,ALeA,ADGA,AS3BA;AFOA,ACHA,AHSA,AKfA,AbuCA,AMlBA,AGTA,ALeA,ADGA,AS3BA;AFOA,ACHA,AHSA,AKfA,AbuCA,AMlBA,AGTA,ALeA,ADGA,AS3BA;AFOA,ACHA,AHSA,AKfA,AbuCA,AMlBA,AGTA,ALeA,ADGA,AS3BA;AFOA,ACHA,AHSA,AMlBA,ADGA,AbuCA,AMlBA,AGTA,ALeA,ADGA,AS3BA;AFOA,ACHA,AHSA,AMlBA,ADGA,AbuCA,AMlBA,AGTA,ALeA,ADGA,AS3BA;AFOA,ACHA,AHSA,AMlBA,ADGA,AbuCA,AMlBA,AGTA,ALeA,ADGA,AS3BA;AFOA,ACHA,AHSA,AMlBA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AZoCA,AS3BA;AFOA,ACHA,AHSA,AMlBA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AZoCA,AS3BA;AFOA,ACHA,AHSA,AMlBA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AZoCA,AS3BA;AFOA,ACHA,AHSA,AMlBA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,ACHA,AbuCA,AS3BA;AFOA,ACHA,AGTA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,ACHA,AbuCA,AS3BA;AFOA,ACHA,AGTA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,ACHA,AbuCA,AS3BA;AFOA,ACHA,AGTA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AbuCA,AS3BA;AFOA,ACHA,AGTA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AbuCA,AS3BA;AFOA,ACHA,AGTA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AbuCA,AS3BA;AFOA,ACHA,AGTA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;AFOA,ACHA,AGTA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;AFOA,ACHA,AGTA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;AFOA,ACHA,AQxBA,ALeA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;AFOA,ACHA,AQxBA,ALeA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;AFOA,ACHA,AQxBA,ALeA,ADGA,AbuCA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;ADIA,AQxBA,ALeA,ADGA,AOrBA,ApB4DA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;ADIA,AQxBA,ALeA,ADGA,AOrBA,ApB4DA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;ADIA,AQxBA,ALeA,ADGA,AOrBA,ApB4DA,AMlBA,AGTA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AOrBA,ApB4DA,AS3BA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AOrBA,ApB4DA,AS3BA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AOrBA,ApB4DA,AS3BA,ALeA,AWjCA,AENA,ADGA,AENA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AS3BA,AFMA,ApB4DA,AS3BA,ALeA,AWjCA,AENA,ACHA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AS3BA,AFMA,ApB4DA,AS3BA,ALeA,AWjCA,AGTA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AS3BA,AFMA,ApB4DA,AIZA,AWjCA,AGTA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AS3BA,ACHA,AHSA,ApB4DA,AIZA,AWjCA,AGTA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AS3BA,ACHA,AHSA,ApB4DA,AIZA,AWjCA,AGTA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AS3BA,ACHA,AHSA,ApB4DA,AIZA,AWjCA,AGTA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AS3BA,ACHA,ACHA,AJYA,ApB4DA,AIZA,AWjCA,AGTA,ANkBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AS3BA,ACHA,ACHA,AJYA,ApB4DA,AIZA,AQxBA;ADIA,AQxBA,ALeA,AOrBA,ARwBA,AS3BA,ACHA,ACHA,AJYA,ApB4DA,AIZA,AQxBA;ADIA,AQxBA,ALeA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AJYA,ApB4DA,AIZA,AQxBA;ADIA,AQxBA,ALeA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AJYA,ApB4DA,AIZA,AQxBA;ADIA,AQxBA,ALeA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AJYA,ApB4DA,AIZA,AQxBA;ADIA,AQxBA,ALeA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,AQxBA;ADIA,AQxBA,ALeA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AOpBA,AQxBA,ALeA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AOpBA,AQxBA,ALeA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AOpBA,AQxBA,ALeA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AOpBA,AQxBA,ALeA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AOpBA,AiBnDA,AT2BA,ALeA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AOpBA,AiBnDA,AT2BA,ALeA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AOpBA,AiBnDA,AT2BA,ALeA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AyB1EA,AlBsDA,AiBnDA,AT2BA,ALeA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AyB1EA,AlBsDA,AiBnDA,AT2BA,ALeA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AyB1EA,AlBsDA,AiBnDA,Ad0CA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA;AyB1EA,AlBsDA,AiBnDA,Ad0CA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AlBsDA,AiBnDA,Ad0CA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AlBsDA,AiBnDA,Ad0CA,AavCA,AFMA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,ApB4DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,ApB4DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,ApB4DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,ACHA,ArB+DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,ACHA,ArB+DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,ACHA,ArB+DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,AENA,ADGA,ArB+DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,ACHA,AENA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,AENA,ADGA,ArB+DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,ACHA,AGTA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,AENA,ADGA,ArB+DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AIZA,A0B9EA;ADIA,AENA,AENA,ADGA,ArB+DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,A9B0FA,A0B9EA;ADIA,AENA,AENA,ADGA,ArB+DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,A9B0FA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,Ad0CA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,A9B0FA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AOrBA,ArB+DA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,A9B0FA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AOrBA,ArB+DA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,A9B0FA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AOrBA,ArB+DA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,A9B0FA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AOrBA,ArB+DA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AOrBA,ArB+DA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AOrBA,ArB+DA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AS3BA,AFMA,ArB+DA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AS3BA,AFMA,ArB+DA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AS3BA,AFMA,ArB+DA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AS3BA,AFMA,AGTA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AS3BA,AFMA,AGTA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AS3BA,AFMA,AGTA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,AENA,ADGA,ArB+DA,AiBnDA,AS3BA,AFMA,AIZA,ADGA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AS3BA,AFMA,AIZA,ADGA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AS3BA,AFMA,AIZA,ADGA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AS3BA,AFMA,AIZA,ACHA,AFMA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AS3BA,AFMA,AIZA,ACHA,AFMA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AS3BA,AFMA,AIZA,ACHA,AFMA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AS3BA,AFMA,AIZA,ACHA,ACHA,AHSA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AOrBA,AIZA,ACHA,ACHA,AHSA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AOrBA,AIZA,ACHA,ACHA,AHSA,AxBwEA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AOrBA,AIZA,ACHA,ACHA,AHSA,AIZA,A5BoFA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ACHA,ArB+DA,AiBnDA,AOrBA,AIZA,ACHA,ACHA,AHSA,AIZA,A5BoFA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AWjCA,ACHA,ACHA,AHSA,AIZA,A5BoFA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AWjCA,ACHA,ACHA,AHSA,AIZA,ACHA,A7BuFA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AYpCA,ACHA,AHSA,AIZA,ACHA,A7BuFA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AYpCA,ACHA,AHSA,AIZA,ACHA,A7BuFA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AYpCA,ACHA,AHSA,AIZA,ACHA,ACHA,A9B0FA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AavCA,AHSA,AIZA,ACHA,ACHA,A9B0FA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AavCA,AHSA,AIZA,ACHA,ACHA,A9B0FA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AavCA,AHSA,AIZA,ACHA,ACHA,ACHA,A/B6FA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AIZA,ACHA,ACHA,ACHA,A/B6FA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AIZA,ACHA,ACHA,ACHA,A/B6FA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AIZA,ACHA,ACHA,ACHA,A/B6FA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AKfA,ACHA,ACHA,A/B6FA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AKfA,ACHA,ACHA,A/B6FA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AKfA,ACHA,ACHA,AENA,AjCmGA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AKfA,ACHA,ACHA,AENA,AjCmGA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AKfA,ACHA,ACHA,AENA,AjCmGA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AKfA,ACHA,ACHA,AENA,ACHA,AlCsGA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,ACHA,AENA,ACHA,AlCsGA,AWjCA,AJYA,ARwBA,AS3BA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,ACHA,AENA,ACHA,AlCsGA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,ACHA,AENA,AENA,ADGA,AlCsGA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,AGTA,AENA,ADGA,AlCsGA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,AGTA,AENA,ADGA,AlCsGA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,AGTA,AENA,ADGA,AENA,ApC4GA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,AGTA,AENA,ADGA,AENA,ApC4GA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AU9BA,A1C8HA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,AGTA,AENA,ADGA,AENA,ApC4GA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,AGTA,AENA,ADGA,AENA,ACHA,ArC+GA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AMlBA,AKfA,ADGA,AENA,ACHA,ArC+GA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AWjCA,ADGA,AENA,ACHA,ArC+GA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AWjCA,ADGA,AENA,ACHA,ACHA,AtCkHA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AWjCA,ADGA,AENA,ACHA,ACHA,AtCkHA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AWjCA,ADGA,AENA,ACHA,ACHA,AtCkHA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AWjCA,ADGA,AENA,ACHA,ACHA,ACHA,AvCqHA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AU9BA,AENA,ACHA,ACHA,ACHA,AvCqHA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AU9BA,AENA,ACHA,ACHA,ACHA,AvCqHA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AYpCA,ACHA,ACHA,AENA,ADGA,AvCqHA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AYpCA,ACHA,ACHA,AENA,ADGA,AvCqHA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AYpCA,ACHA,ACHA,AENA,ADGA,AvCqHA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AYpCA,ACHA,ACHA,AENA,ADGA,AENA,AzC2HA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,ACHA,AENA,ADGA,AENA,AzC2HA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,ACHA,AENA,ADGA,AENA,AzC2HA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AkCtGA,AENA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,ACHA,AENA,ADGA,AGTA,ADGA,AzC2HA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AoC5GA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,ACHA,AENA,ADGA,AGTA,ADGA,AzC2HA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AoC5GA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,ACHA,AENA,ADGA,AGTA,ADGA,AzC2HA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AoC5GA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AGTA,ADGA,AGTA,ACHA,AFMA,AzC2HA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AoC5GA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AGTA,ADGA,AGTA,ACHA,AFMA,AzC2HA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AoC5GA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AGTA,ADGA,AGTA,ACHA,AFMA,AzC2HA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AoC5GA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AGTA,ADGA,AGTA,ACHA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AoC5GA,AhCgGA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AGTA,ADGA,AGTA,ACHA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AGTA,ADGA,AGTA,ACHA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AGTA,ACHA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A2DjLA,AvDqKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AGTA,ACHA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A2DjLA,AvDqKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AGTA,ACHA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A2DjLA,AvDqKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AGTA,ACHA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A2DjLA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AGTA,ACHA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A2DjLA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AGTA,ACHA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A2DjLA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AIZA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A6DvLA,AFMA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AIZA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A6DvLA,AFMA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AIZA,AFMA,AGTA,A5CoIA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A6DvLA,AFMA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AIZA,AFMA,AGTA,AIZA,AhDgJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A6DvLA,AFMA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AIZA,AFMA,AGTA,AIZA,AhDgJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A6DvLA,AFMA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AENA,AIZA,AFMA,AGTA,AIZA,AhDgJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A6DvLA,AFMA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,AFMA,AGTA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A6DvLA,AFMA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,AFMA,AGTA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A6DvLA,AFMA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,ACHA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,A6DvLA,AFMA,ACHA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,ACHA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,AHSA,ADGA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,ACHA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,AHSA,ADGA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,ACHA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,AHSA,ADGA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,ACHA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,AJYA,ADGA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,ACHA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,AJYA,ADGA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,ACHA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,AJYA,ADGA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,ACHA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,ADGA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AMlBA,ACHA,AIZA,ACHA,AjDmJA,AWjCA,AJYA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,ADGA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,ADGA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,AMlBA,APqBA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,AMlBA,APqBA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,AMlBA,APqBA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,AMlBA,ACHA,ARwBA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,AMlBA,ACHA,ARwBA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,AMlBA,ACHA,ARwBA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AgEhMA,ACHA,ACHA,ALeA,AMlBA,ACHA,ACHA,AT2BA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,ACHA,ACHA,ACHA,ACHA,AT2BA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,ACHA,ACHA,ACHA,ACHA,AT2BA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,ACHA,ACHA,ACHA,AENA,ADGA,AT2BA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,ACHA,ACHA,ACHA,AENA,ADGA,AT2BA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AOrBA,AIZA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,ACHA,ACHA,ACHA,AENA,ADGA,AT2BA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AavCA,AWjCA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,ACHA,ACHA,ACHA,AENA,ADGA,AENA,AXiCA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AwBxEA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,ACHA,ACHA,ACHA,AENA,ADGA,AENA,AXiCA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AwBxEA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,ACHA,ACHA,ACHA,AENA,ADGA,AENA,AXiCA,AxDwKA;A2BhFA,ApB4DA,AiBnDA,AU9BA,AwBxEA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,AENA,ACHA,AENA,ADGA,AENA,AXiCA,AxDwKA,AoE5MA;AzC4HA,ApB4DA,AiBnDA,AU9BA,AwBxEA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,AENA,ACHA,AENA,ADGA,AENA,AXiCA,AxDwKA,AoE5MA;AzC4HA,ApB4DA,AiBnDA,AU9BA,AwBxEA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,AENA,ACHA,AENA,ADGA,AENA,AXiCA,AxDwKA,AoE5MA;AzC4HA,ApB4DA,AiBnDA,AU9BA,AwBxEA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,AENA,ACHA,AENA,ADGA,AENA,AXiCA,AxDwKA,AoE5MA,ACHA;A1C+HA,ApB4DA,AiBnDA,AU9BA,AwBxEA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,AENA,ACHA,AENA,ADGA,AENA,AXiCA,AxDwKA,AoE5MA,ACHA;A1C+HA,ApB4DA,AiBnDA,AU9BA,AwBxEA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,AENA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA;A1C+HA,ApB4DA,AiBnDA,AkCtGA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,AENA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,ACHA;A3CkIA,ApB4DA,AiBnDA,AkCtGA,ACHA,AjDmJA,AOrBA,ACHA,AIZA,ANkBA,ApB4DA,AiEnMA,AENA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,ACHA;A3CkIA,ApB4DA,AiBnDA,AkCtGA,ACHA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,ACHA;A3CkIA,ApB4DA,AiBnDA,AkCtGA,ACHA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,AENA,ADGA;A3CkIA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,AENA,ADGA;A3CkIA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,AENA,ADGA;A3CkIA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,AENA,ADGA,AENA;A7CwIA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,AENA,ADGA,AENA;A7CwIA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,AENA,ADGA,AENA;A7CwIA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,AENA,ADGA,AENA,ACHA;A9C2IA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,ACHA,AENA,ADGA,AENA,ACHA;A9C2IA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ADGA,AENA,ACHA;A9C2IA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ADGA,AENA,ACHA,ACHA;A/C8IA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ADGA,AENA,ACHA,ACHA;A/C8IA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ACHA,ACHA,ACHA;A/C8IA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ACHA,ACHA,ACHA,ACHA;AhDiJA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ACHA,ACHA,ACHA,ACHA;AhDiJA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ACHA,ACHA,ACHA,ACHA;AhDiJA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ACHA,ACHA,ACHA,ACHA,ACHA;AjDoJA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ACHA,ACHA,ACHA,ACHA,ACHA;AjDoJA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ACHA,ACHA,ACHA,ACHA,ACHA;AjDoJA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AoE5MA,AGTA,ACHA,ACHA,ACHA,ACHA,ACHA,ACHA;AlDuJA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AuErNA,ACHA,ACHA,ACHA,ACHA,ACHA,ACHA;AlDuJA,ApB4DA,AiBnDA,AmCzGA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AuErNA,ACHA,ACHA,ACHA,ACHA,ACHA,ACHA;AlDuJA,ApB4DA,AiBnDA,AsDlKA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AuErNA,ACHA,ACHA,ACHA,ACHA,ACHA,ACHA;AlDuJA,ApB4DA,AiBnDA,AsDlKA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AwExNA,ACHA,ACHA,ACHA,ACHA,ACHA;AlDuJA,ApB4DA,AiBnDA,AsDlKA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AwExNA,ACHA,ACHA,ACHA,ACHA,ACHA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AmEzMA,ACHA,AENA,ACHA,AnEyMA,AwExNA,ACHA,ACHA,ACHA,ACHA,ACHA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA,ACHA,ACHA,ACHA,ACHA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA,ACHA,ACHA,ACHA,ACHA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA,ACHA,AENA,ACHA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA,AGTA,ACHA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA,AIZA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA,AIZA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA,AIZA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA,AIZA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA,AIZA;AlDuJA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,ACHA,AnEyMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ADGA,AnByDA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AENA,AlEsMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ApB4DA,AjDmJA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AwExNA,ACHA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AoE5MA,AhEgMA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,AuDrKA,ArE+MA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA,AyE3NA;A9C2IA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AiBnDA,Ad0CA,AOrBA,AKfA,ANkBA,ApB4DA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AOrBA,AKfA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,A1B8EA,AIZA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AYpCA,AtBkEA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;A2BhFA,ApB4DA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,AGTA,AV8BA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA,APqBA;AOpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.js","sourcesContent":["\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n react: true,\n assertNode: true,\n createTypeAnnotationBasedOnTypeof: true,\n createUnionTypeAnnotation: true,\n createFlowUnionType: true,\n createTSUnionType: true,\n cloneNode: true,\n clone: true,\n cloneDeep: true,\n cloneDeepWithoutLoc: true,\n cloneWithoutLoc: true,\n addComment: true,\n addComments: true,\n inheritInnerComments: true,\n inheritLeadingComments: true,\n inheritsComments: true,\n inheritTrailingComments: true,\n removeComments: true,\n ensureBlock: true,\n toBindingIdentifierName: true,\n toBlock: true,\n toComputedKey: true,\n toExpression: true,\n toIdentifier: true,\n toKeyAlias: true,\n toStatement: true,\n valueToNode: true,\n appendToMemberExpression: true,\n inherits: true,\n prependToMemberExpression: true,\n removeProperties: true,\n removePropertiesDeep: true,\n removeTypeDuplicates: true,\n getAssignmentIdentifiers: true,\n getBindingIdentifiers: true,\n getOuterBindingIdentifiers: true,\n getFunctionName: true,\n traverse: true,\n traverseFast: true,\n shallowEqual: true,\n is: true,\n isBinding: true,\n isBlockScoped: true,\n isImmutable: true,\n isLet: true,\n isNode: true,\n isNodesEquivalent: true,\n isPlaceholderType: true,\n isReferenced: true,\n isScope: true,\n isSpecifierDefault: true,\n isType: true,\n isValidES3Identifier: true,\n isValidIdentifier: true,\n isVar: true,\n matchesPattern: true,\n validate: true,\n buildMatchMemberExpression: true,\n __internal__deprecationWarning: true\n};\nObject.defineProperty(exports, \"__internal__deprecationWarning\", {\n enumerable: true,\n get: function () {\n return _deprecationWarning.default;\n }\n});\nObject.defineProperty(exports, \"addComment\", {\n enumerable: true,\n get: function () {\n return _addComment.default;\n }\n});\nObject.defineProperty(exports, \"addComments\", {\n enumerable: true,\n get: function () {\n return _addComments.default;\n }\n});\nObject.defineProperty(exports, \"appendToMemberExpression\", {\n enumerable: true,\n get: function () {\n return _appendToMemberExpression.default;\n }\n});\nObject.defineProperty(exports, \"assertNode\", {\n enumerable: true,\n get: function () {\n return _assertNode.default;\n }\n});\nObject.defineProperty(exports, \"buildMatchMemberExpression\", {\n enumerable: true,\n get: function () {\n return _buildMatchMemberExpression.default;\n }\n});\nObject.defineProperty(exports, \"clone\", {\n enumerable: true,\n get: function () {\n return _clone.default;\n }\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: function () {\n return _cloneDeep.default;\n }\n});\nObject.defineProperty(exports, \"cloneDeepWithoutLoc\", {\n enumerable: true,\n get: function () {\n return _cloneDeepWithoutLoc.default;\n }\n});\nObject.defineProperty(exports, \"cloneNode\", {\n enumerable: true,\n get: function () {\n return _cloneNode.default;\n }\n});\nObject.defineProperty(exports, \"cloneWithoutLoc\", {\n enumerable: true,\n get: function () {\n return _cloneWithoutLoc.default;\n }\n});\nObject.defineProperty(exports, \"createFlowUnionType\", {\n enumerable: true,\n get: function () {\n return _createFlowUnionType.default;\n }\n});\nObject.defineProperty(exports, \"createTSUnionType\", {\n enumerable: true,\n get: function () {\n return _createTSUnionType.default;\n }\n});\nObject.defineProperty(exports, \"createTypeAnnotationBasedOnTypeof\", {\n enumerable: true,\n get: function () {\n return _createTypeAnnotationBasedOnTypeof.default;\n }\n});\nObject.defineProperty(exports, \"createUnionTypeAnnotation\", {\n enumerable: true,\n get: function () {\n return _createFlowUnionType.default;\n }\n});\nObject.defineProperty(exports, \"ensureBlock\", {\n enumerable: true,\n get: function () {\n return _ensureBlock.default;\n }\n});\nObject.defineProperty(exports, \"getAssignmentIdentifiers\", {\n enumerable: true,\n get: function () {\n return _getAssignmentIdentifiers.default;\n }\n});\nObject.defineProperty(exports, \"getBindingIdentifiers\", {\n enumerable: true,\n get: function () {\n return _getBindingIdentifiers.default;\n }\n});\nObject.defineProperty(exports, \"getFunctionName\", {\n enumerable: true,\n get: function () {\n return _getFunctionName.default;\n }\n});\nObject.defineProperty(exports, \"getOuterBindingIdentifiers\", {\n enumerable: true,\n get: function () {\n return _getOuterBindingIdentifiers.default;\n }\n});\nObject.defineProperty(exports, \"inheritInnerComments\", {\n enumerable: true,\n get: function () {\n return _inheritInnerComments.default;\n }\n});\nObject.defineProperty(exports, \"inheritLeadingComments\", {\n enumerable: true,\n get: function () {\n return _inheritLeadingComments.default;\n }\n});\nObject.defineProperty(exports, \"inheritTrailingComments\", {\n enumerable: true,\n get: function () {\n return _inheritTrailingComments.default;\n }\n});\nObject.defineProperty(exports, \"inherits\", {\n enumerable: true,\n get: function () {\n return _inherits.default;\n }\n});\nObject.defineProperty(exports, \"inheritsComments\", {\n enumerable: true,\n get: function () {\n return _inheritsComments.default;\n }\n});\nObject.defineProperty(exports, \"is\", {\n enumerable: true,\n get: function () {\n return _is.default;\n }\n});\nObject.defineProperty(exports, \"isBinding\", {\n enumerable: true,\n get: function () {\n return _isBinding.default;\n }\n});\nObject.defineProperty(exports, \"isBlockScoped\", {\n enumerable: true,\n get: function () {\n return _isBlockScoped.default;\n }\n});\nObject.defineProperty(exports, \"isImmutable\", {\n enumerable: true,\n get: function () {\n return _isImmutable.default;\n }\n});\nObject.defineProperty(exports, \"isLet\", {\n enumerable: true,\n get: function () {\n return _isLet.default;\n }\n});\nObject.defineProperty(exports, \"isNode\", {\n enumerable: true,\n get: function () {\n return _isNode.default;\n }\n});\nObject.defineProperty(exports, \"isNodesEquivalent\", {\n enumerable: true,\n get: function () {\n return _isNodesEquivalent.default;\n }\n});\nObject.defineProperty(exports, \"isPlaceholderType\", {\n enumerable: true,\n get: function () {\n return _isPlaceholderType.default;\n }\n});\nObject.defineProperty(exports, \"isReferenced\", {\n enumerable: true,\n get: function () {\n return _isReferenced.default;\n }\n});\nObject.defineProperty(exports, \"isScope\", {\n enumerable: true,\n get: function () {\n return _isScope.default;\n }\n});\nObject.defineProperty(exports, \"isSpecifierDefault\", {\n enumerable: true,\n get: function () {\n return _isSpecifierDefault.default;\n }\n});\nObject.defineProperty(exports, \"isType\", {\n enumerable: true,\n get: function () {\n return _isType.default;\n }\n});\nObject.defineProperty(exports, \"isValidES3Identifier\", {\n enumerable: true,\n get: function () {\n return _isValidES3Identifier.default;\n }\n});\nObject.defineProperty(exports, \"isValidIdentifier\", {\n enumerable: true,\n get: function () {\n return _isValidIdentifier.default;\n }\n});\nObject.defineProperty(exports, \"isVar\", {\n enumerable: true,\n get: function () {\n return _isVar.default;\n }\n});\nObject.defineProperty(exports, \"matchesPattern\", {\n enumerable: true,\n get: function () {\n return _matchesPattern.default;\n }\n});\nObject.defineProperty(exports, \"prependToMemberExpression\", {\n enumerable: true,\n get: function () {\n return _prependToMemberExpression.default;\n }\n});\nexports.react = void 0;\nObject.defineProperty(exports, \"removeComments\", {\n enumerable: true,\n get: function () {\n return _removeComments.default;\n }\n});\nObject.defineProperty(exports, \"removeProperties\", {\n enumerable: true,\n get: function () {\n return _removeProperties.default;\n }\n});\nObject.defineProperty(exports, \"removePropertiesDeep\", {\n enumerable: true,\n get: function () {\n return _removePropertiesDeep.default;\n }\n});\nObject.defineProperty(exports, \"removeTypeDuplicates\", {\n enumerable: true,\n get: function () {\n return _removeTypeDuplicates.default;\n }\n});\nObject.defineProperty(exports, \"shallowEqual\", {\n enumerable: true,\n get: function () {\n return _shallowEqual.default;\n }\n});\nObject.defineProperty(exports, \"toBindingIdentifierName\", {\n enumerable: true,\n get: function () {\n return _toBindingIdentifierName.default;\n }\n});\nObject.defineProperty(exports, \"toBlock\", {\n enumerable: true,\n get: function () {\n return _toBlock.default;\n }\n});\nObject.defineProperty(exports, \"toComputedKey\", {\n enumerable: true,\n get: function () {\n return _toComputedKey.default;\n }\n});\nObject.defineProperty(exports, \"toExpression\", {\n enumerable: true,\n get: function () {\n return _toExpression.default;\n }\n});\nObject.defineProperty(exports, \"toIdentifier\", {\n enumerable: true,\n get: function () {\n return _toIdentifier.default;\n }\n});\nObject.defineProperty(exports, \"toKeyAlias\", {\n enumerable: true,\n get: function () {\n return _toKeyAlias.default;\n }\n});\nObject.defineProperty(exports, \"toStatement\", {\n enumerable: true,\n get: function () {\n return _toStatement.default;\n }\n});\nObject.defineProperty(exports, \"traverse\", {\n enumerable: true,\n get: function () {\n return _traverse.default;\n }\n});\nObject.defineProperty(exports, \"traverseFast\", {\n enumerable: true,\n get: function () {\n return _traverseFast.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"valueToNode\", {\n enumerable: true,\n get: function () {\n return _valueToNode.default;\n }\n});\nvar _isReactComponent = require(\"./validators/react/isReactComponent.js\");\nvar _isCompatTag = require(\"./validators/react/isCompatTag.js\");\nvar _buildChildren = require(\"./builders/react/buildChildren.js\");\nvar _assertNode = require(\"./asserts/assertNode.js\");\nvar _index = require(\"./asserts/generated/index.js\");\nObject.keys(_index).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _index[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _index[key];\n }\n });\n});\nvar _createTypeAnnotationBasedOnTypeof = require(\"./builders/flow/createTypeAnnotationBasedOnTypeof.js\");\nvar _createFlowUnionType = require(\"./builders/flow/createFlowUnionType.js\");\nvar _createTSUnionType = require(\"./builders/typescript/createTSUnionType.js\");\nvar _productions = require(\"./builders/productions.js\");\nObject.keys(_productions).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _productions[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _productions[key];\n }\n });\n});\nvar _index2 = require(\"./builders/generated/index.js\");\nObject.keys(_index2).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _index2[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _index2[key];\n }\n });\n});\nvar _cloneNode = require(\"./clone/cloneNode.js\");\nvar _clone = require(\"./clone/clone.js\");\nvar _cloneDeep = require(\"./clone/cloneDeep.js\");\nvar _cloneDeepWithoutLoc = require(\"./clone/cloneDeepWithoutLoc.js\");\nvar _cloneWithoutLoc = require(\"./clone/cloneWithoutLoc.js\");\nvar _addComment = require(\"./comments/addComment.js\");\nvar _addComments = require(\"./comments/addComments.js\");\nvar _inheritInnerComments = require(\"./comments/inheritInnerComments.js\");\nvar _inheritLeadingComments = require(\"./comments/inheritLeadingComments.js\");\nvar _inheritsComments = require(\"./comments/inheritsComments.js\");\nvar _inheritTrailingComments = require(\"./comments/inheritTrailingComments.js\");\nvar _removeComments = require(\"./comments/removeComments.js\");\nvar _index3 = require(\"./constants/generated/index.js\");\nObject.keys(_index3).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _index3[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _index3[key];\n }\n });\n});\nvar _index4 = require(\"./constants/index.js\");\nObject.keys(_index4).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _index4[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _index4[key];\n }\n });\n});\nvar _ensureBlock = require(\"./converters/ensureBlock.js\");\nvar _toBindingIdentifierName = require(\"./converters/toBindingIdentifierName.js\");\nvar _toBlock = require(\"./converters/toBlock.js\");\nvar _toComputedKey = require(\"./converters/toComputedKey.js\");\nvar _toExpression = require(\"./converters/toExpression.js\");\nvar _toIdentifier = require(\"./converters/toIdentifier.js\");\nvar _toKeyAlias = require(\"./converters/toKeyAlias.js\");\nvar _toStatement = require(\"./converters/toStatement.js\");\nvar _valueToNode = require(\"./converters/valueToNode.js\");\nvar _index5 = require(\"./definitions/index.js\");\nObject.keys(_index5).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _index5[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _index5[key];\n }\n });\n});\nvar _appendToMemberExpression = require(\"./modifications/appendToMemberExpression.js\");\nvar _inherits = require(\"./modifications/inherits.js\");\nvar _prependToMemberExpression = require(\"./modifications/prependToMemberExpression.js\");\nvar _removeProperties = require(\"./modifications/removeProperties.js\");\nvar _removePropertiesDeep = require(\"./modifications/removePropertiesDeep.js\");\nvar _removeTypeDuplicates = require(\"./modifications/flow/removeTypeDuplicates.js\");\nvar _getAssignmentIdentifiers = require(\"./retrievers/getAssignmentIdentifiers.js\");\nvar _getBindingIdentifiers = require(\"./retrievers/getBindingIdentifiers.js\");\nvar _getOuterBindingIdentifiers = require(\"./retrievers/getOuterBindingIdentifiers.js\");\nvar _getFunctionName = require(\"./retrievers/getFunctionName.js\");\nvar _traverse = require(\"./traverse/traverse.js\");\nObject.keys(_traverse).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _traverse[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _traverse[key];\n }\n });\n});\nvar _traverseFast = require(\"./traverse/traverseFast.js\");\nvar _shallowEqual = require(\"./utils/shallowEqual.js\");\nvar _is = require(\"./validators/is.js\");\nvar _isBinding = require(\"./validators/isBinding.js\");\nvar _isBlockScoped = require(\"./validators/isBlockScoped.js\");\nvar _isImmutable = require(\"./validators/isImmutable.js\");\nvar _isLet = require(\"./validators/isLet.js\");\nvar _isNode = require(\"./validators/isNode.js\");\nvar _isNodesEquivalent = require(\"./validators/isNodesEquivalent.js\");\nvar _isPlaceholderType = require(\"./validators/isPlaceholderType.js\");\nvar _isReferenced = require(\"./validators/isReferenced.js\");\nvar _isScope = require(\"./validators/isScope.js\");\nvar _isSpecifierDefault = require(\"./validators/isSpecifierDefault.js\");\nvar _isType = require(\"./validators/isType.js\");\nvar _isValidES3Identifier = require(\"./validators/isValidES3Identifier.js\");\nvar _isValidIdentifier = require(\"./validators/isValidIdentifier.js\");\nvar _isVar = require(\"./validators/isVar.js\");\nvar _matchesPattern = require(\"./validators/matchesPattern.js\");\nvar _validate = require(\"./validators/validate.js\");\nvar _buildMatchMemberExpression = require(\"./validators/buildMatchMemberExpression.js\");\nvar _index6 = require(\"./validators/generated/index.js\");\nObject.keys(_index6).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _index6[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _index6[key];\n }\n });\n});\nvar _deprecationWarning = require(\"./utils/deprecationWarning.js\");\nvar _toSequenceExpression = require(\"./converters/toSequenceExpression.js\");\nconst react = exports.react = {\n isReactComponent: _isReactComponent.default,\n isCompatTag: _isCompatTag.default,\n buildChildren: _buildChildren.default\n};\nexports.toSequenceExpression = _toSequenceExpression.default;\nif (process.env.BABEL_TYPES_8_BREAKING) {\n console.warn(\"BABEL_TYPES_8_BREAKING is not supported anymore. Use the latest Babel 8.0.0 pre-release instead!\");\n}\n\n//# sourceMappingURL=index.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _buildMatchMemberExpression = require(\"../buildMatchMemberExpression.js\");\nconst isReactComponent = (0, _buildMatchMemberExpression.default)(\"React.Component\");\nvar _default = exports.default = isReactComponent;\n\n//# sourceMappingURL=isReactComponent.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildMatchMemberExpression;\nvar _matchesPattern = require(\"./matchesPattern.js\");\nfunction buildMatchMemberExpression(match, allowPartial) {\n const parts = match.split(\".\");\n return member => (0, _matchesPattern.default)(member, parts, allowPartial);\n}\n\n//# sourceMappingURL=buildMatchMemberExpression.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = matchesPattern;\nvar _index = require(\"./generated/index.js\");\nfunction isMemberExpressionLike(node) {\n return (0, _index.isMemberExpression)(node) || (0, _index.isMetaProperty)(node);\n}\nfunction matchesPattern(member, match, allowPartial) {\n if (!isMemberExpressionLike(member)) return false;\n const parts = Array.isArray(match) ? match : match.split(\".\");\n const nodes = [];\n let node;\n for (node = member; isMemberExpressionLike(node); node = (_object = node.object) != null ? _object : node.meta) {\n var _object;\n nodes.push(node.property);\n }\n nodes.push(node);\n if (nodes.length < parts.length) return false;\n if (!allowPartial && nodes.length > parts.length) return false;\n for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {\n const node = nodes[j];\n let value;\n if ((0, _index.isIdentifier)(node)) {\n value = node.name;\n } else if ((0, _index.isStringLiteral)(node)) {\n value = node.value;\n } else if ((0, _index.isThisExpression)(node)) {\n value = \"this\";\n } else if ((0, _index.isSuper)(node)) {\n value = \"super\";\n } else if ((0, _index.isPrivateName)(node)) {\n value = \"#\" + node.id.name;\n } else {\n return false;\n }\n if (parts[i] !== value) return false;\n }\n return true;\n}\n\n//# sourceMappingURL=matchesPattern.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isAccessor = isAccessor;\nexports.isAnyTypeAnnotation = isAnyTypeAnnotation;\nexports.isArgumentPlaceholder = isArgumentPlaceholder;\nexports.isArrayExpression = isArrayExpression;\nexports.isArrayPattern = isArrayPattern;\nexports.isArrayTypeAnnotation = isArrayTypeAnnotation;\nexports.isArrowFunctionExpression = isArrowFunctionExpression;\nexports.isAssignmentExpression = isAssignmentExpression;\nexports.isAssignmentPattern = isAssignmentPattern;\nexports.isAwaitExpression = isAwaitExpression;\nexports.isBigIntLiteral = isBigIntLiteral;\nexports.isBinary = isBinary;\nexports.isBinaryExpression = isBinaryExpression;\nexports.isBindExpression = isBindExpression;\nexports.isBlock = isBlock;\nexports.isBlockParent = isBlockParent;\nexports.isBlockStatement = isBlockStatement;\nexports.isBooleanLiteral = isBooleanLiteral;\nexports.isBooleanLiteralTypeAnnotation = isBooleanLiteralTypeAnnotation;\nexports.isBooleanTypeAnnotation = isBooleanTypeAnnotation;\nexports.isBreakStatement = isBreakStatement;\nexports.isCallExpression = isCallExpression;\nexports.isCatchClause = isCatchClause;\nexports.isClass = isClass;\nexports.isClassAccessorProperty = isClassAccessorProperty;\nexports.isClassBody = isClassBody;\nexports.isClassDeclaration = isClassDeclaration;\nexports.isClassExpression = isClassExpression;\nexports.isClassImplements = isClassImplements;\nexports.isClassMethod = isClassMethod;\nexports.isClassPrivateMethod = isClassPrivateMethod;\nexports.isClassPrivateProperty = isClassPrivateProperty;\nexports.isClassProperty = isClassProperty;\nexports.isCompletionStatement = isCompletionStatement;\nexports.isConditional = isConditional;\nexports.isConditionalExpression = isConditionalExpression;\nexports.isContinueStatement = isContinueStatement;\nexports.isDebuggerStatement = isDebuggerStatement;\nexports.isDecimalLiteral = isDecimalLiteral;\nexports.isDeclaration = isDeclaration;\nexports.isDeclareClass = isDeclareClass;\nexports.isDeclareExportAllDeclaration = isDeclareExportAllDeclaration;\nexports.isDeclareExportDeclaration = isDeclareExportDeclaration;\nexports.isDeclareFunction = isDeclareFunction;\nexports.isDeclareInterface = isDeclareInterface;\nexports.isDeclareModule = isDeclareModule;\nexports.isDeclareModuleExports = isDeclareModuleExports;\nexports.isDeclareOpaqueType = isDeclareOpaqueType;\nexports.isDeclareTypeAlias = isDeclareTypeAlias;\nexports.isDeclareVariable = isDeclareVariable;\nexports.isDeclaredPredicate = isDeclaredPredicate;\nexports.isDecorator = isDecorator;\nexports.isDirective = isDirective;\nexports.isDirectiveLiteral = isDirectiveLiteral;\nexports.isDoExpression = isDoExpression;\nexports.isDoWhileStatement = isDoWhileStatement;\nexports.isEmptyStatement = isEmptyStatement;\nexports.isEmptyTypeAnnotation = isEmptyTypeAnnotation;\nexports.isEnumBody = isEnumBody;\nexports.isEnumBooleanBody = isEnumBooleanBody;\nexports.isEnumBooleanMember = isEnumBooleanMember;\nexports.isEnumDeclaration = isEnumDeclaration;\nexports.isEnumDefaultedMember = isEnumDefaultedMember;\nexports.isEnumMember = isEnumMember;\nexports.isEnumNumberBody = isEnumNumberBody;\nexports.isEnumNumberMember = isEnumNumberMember;\nexports.isEnumStringBody = isEnumStringBody;\nexports.isEnumStringMember = isEnumStringMember;\nexports.isEnumSymbolBody = isEnumSymbolBody;\nexports.isExistsTypeAnnotation = isExistsTypeAnnotation;\nexports.isExportAllDeclaration = isExportAllDeclaration;\nexports.isExportDeclaration = isExportDeclaration;\nexports.isExportDefaultDeclaration = isExportDefaultDeclaration;\nexports.isExportDefaultSpecifier = isExportDefaultSpecifier;\nexports.isExportNamedDeclaration = isExportNamedDeclaration;\nexports.isExportNamespaceSpecifier = isExportNamespaceSpecifier;\nexports.isExportSpecifier = isExportSpecifier;\nexports.isExpression = isExpression;\nexports.isExpressionStatement = isExpressionStatement;\nexports.isExpressionWrapper = isExpressionWrapper;\nexports.isFile = isFile;\nexports.isFlow = isFlow;\nexports.isFlowBaseAnnotation = isFlowBaseAnnotation;\nexports.isFlowDeclaration = isFlowDeclaration;\nexports.isFlowPredicate = isFlowPredicate;\nexports.isFlowType = isFlowType;\nexports.isFor = isFor;\nexports.isForInStatement = isForInStatement;\nexports.isForOfStatement = isForOfStatement;\nexports.isForStatement = isForStatement;\nexports.isForXStatement = isForXStatement;\nexports.isFunction = isFunction;\nexports.isFunctionDeclaration = isFunctionDeclaration;\nexports.isFunctionExpression = isFunctionExpression;\nexports.isFunctionParameter = isFunctionParameter;\nexports.isFunctionParent = isFunctionParent;\nexports.isFunctionTypeAnnotation = isFunctionTypeAnnotation;\nexports.isFunctionTypeParam = isFunctionTypeParam;\nexports.isGenericTypeAnnotation = isGenericTypeAnnotation;\nexports.isIdentifier = isIdentifier;\nexports.isIfStatement = isIfStatement;\nexports.isImmutable = isImmutable;\nexports.isImport = isImport;\nexports.isImportAttribute = isImportAttribute;\nexports.isImportDeclaration = isImportDeclaration;\nexports.isImportDefaultSpecifier = isImportDefaultSpecifier;\nexports.isImportExpression = isImportExpression;\nexports.isImportNamespaceSpecifier = isImportNamespaceSpecifier;\nexports.isImportOrExportDeclaration = isImportOrExportDeclaration;\nexports.isImportSpecifier = isImportSpecifier;\nexports.isIndexedAccessType = isIndexedAccessType;\nexports.isInferredPredicate = isInferredPredicate;\nexports.isInterfaceDeclaration = isInterfaceDeclaration;\nexports.isInterfaceExtends = isInterfaceExtends;\nexports.isInterfaceTypeAnnotation = isInterfaceTypeAnnotation;\nexports.isInterpreterDirective = isInterpreterDirective;\nexports.isIntersectionTypeAnnotation = isIntersectionTypeAnnotation;\nexports.isJSX = isJSX;\nexports.isJSXAttribute = isJSXAttribute;\nexports.isJSXClosingElement = isJSXClosingElement;\nexports.isJSXClosingFragment = isJSXClosingFragment;\nexports.isJSXElement = isJSXElement;\nexports.isJSXEmptyExpression = isJSXEmptyExpression;\nexports.isJSXExpressionContainer = isJSXExpressionContainer;\nexports.isJSXFragment = isJSXFragment;\nexports.isJSXIdentifier = isJSXIdentifier;\nexports.isJSXMemberExpression = isJSXMemberExpression;\nexports.isJSXNamespacedName = isJSXNamespacedName;\nexports.isJSXOpeningElement = isJSXOpeningElement;\nexports.isJSXOpeningFragment = isJSXOpeningFragment;\nexports.isJSXSpreadAttribute = isJSXSpreadAttribute;\nexports.isJSXSpreadChild = isJSXSpreadChild;\nexports.isJSXText = isJSXText;\nexports.isLVal = isLVal;\nexports.isLabeledStatement = isLabeledStatement;\nexports.isLiteral = isLiteral;\nexports.isLogicalExpression = isLogicalExpression;\nexports.isLoop = isLoop;\nexports.isMemberExpression = isMemberExpression;\nexports.isMetaProperty = isMetaProperty;\nexports.isMethod = isMethod;\nexports.isMiscellaneous = isMiscellaneous;\nexports.isMixedTypeAnnotation = isMixedTypeAnnotation;\nexports.isModuleDeclaration = isModuleDeclaration;\nexports.isModuleExpression = isModuleExpression;\nexports.isModuleSpecifier = isModuleSpecifier;\nexports.isNewExpression = isNewExpression;\nexports.isNoop = isNoop;\nexports.isNullLiteral = isNullLiteral;\nexports.isNullLiteralTypeAnnotation = isNullLiteralTypeAnnotation;\nexports.isNullableTypeAnnotation = isNullableTypeAnnotation;\nexports.isNumberLiteral = isNumberLiteral;\nexports.isNumberLiteralTypeAnnotation = isNumberLiteralTypeAnnotation;\nexports.isNumberTypeAnnotation = isNumberTypeAnnotation;\nexports.isNumericLiteral = isNumericLiteral;\nexports.isObjectExpression = isObjectExpression;\nexports.isObjectMember = isObjectMember;\nexports.isObjectMethod = isObjectMethod;\nexports.isObjectPattern = isObjectPattern;\nexports.isObjectProperty = isObjectProperty;\nexports.isObjectTypeAnnotation = isObjectTypeAnnotation;\nexports.isObjectTypeCallProperty = isObjectTypeCallProperty;\nexports.isObjectTypeIndexer = isObjectTypeIndexer;\nexports.isObjectTypeInternalSlot = isObjectTypeInternalSlot;\nexports.isObjectTypeProperty = isObjectTypeProperty;\nexports.isObjectTypeSpreadProperty = isObjectTypeSpreadProperty;\nexports.isOpaqueType = isOpaqueType;\nexports.isOptionalCallExpression = isOptionalCallExpression;\nexports.isOptionalIndexedAccessType = isOptionalIndexedAccessType;\nexports.isOptionalMemberExpression = isOptionalMemberExpression;\nexports.isParenthesizedExpression = isParenthesizedExpression;\nexports.isPattern = isPattern;\nexports.isPatternLike = isPatternLike;\nexports.isPipelineBareFunction = isPipelineBareFunction;\nexports.isPipelinePrimaryTopicReference = isPipelinePrimaryTopicReference;\nexports.isPipelineTopicExpression = isPipelineTopicExpression;\nexports.isPlaceholder = isPlaceholder;\nexports.isPrivate = isPrivate;\nexports.isPrivateName = isPrivateName;\nexports.isProgram = isProgram;\nexports.isProperty = isProperty;\nexports.isPureish = isPureish;\nexports.isQualifiedTypeIdentifier = isQualifiedTypeIdentifier;\nexports.isRecordExpression = isRecordExpression;\nexports.isRegExpLiteral = isRegExpLiteral;\nexports.isRegexLiteral = isRegexLiteral;\nexports.isRestElement = isRestElement;\nexports.isRestProperty = isRestProperty;\nexports.isReturnStatement = isReturnStatement;\nexports.isScopable = isScopable;\nexports.isSequenceExpression = isSequenceExpression;\nexports.isSpreadElement = isSpreadElement;\nexports.isSpreadProperty = isSpreadProperty;\nexports.isStandardized = isStandardized;\nexports.isStatement = isStatement;\nexports.isStaticBlock = isStaticBlock;\nexports.isStringLiteral = isStringLiteral;\nexports.isStringLiteralTypeAnnotation = isStringLiteralTypeAnnotation;\nexports.isStringTypeAnnotation = isStringTypeAnnotation;\nexports.isSuper = isSuper;\nexports.isSwitchCase = isSwitchCase;\nexports.isSwitchStatement = isSwitchStatement;\nexports.isSymbolTypeAnnotation = isSymbolTypeAnnotation;\nexports.isTSAnyKeyword = isTSAnyKeyword;\nexports.isTSArrayType = isTSArrayType;\nexports.isTSAsExpression = isTSAsExpression;\nexports.isTSBaseType = isTSBaseType;\nexports.isTSBigIntKeyword = isTSBigIntKeyword;\nexports.isTSBooleanKeyword = isTSBooleanKeyword;\nexports.isTSCallSignatureDeclaration = isTSCallSignatureDeclaration;\nexports.isTSConditionalType = isTSConditionalType;\nexports.isTSConstructSignatureDeclaration = isTSConstructSignatureDeclaration;\nexports.isTSConstructorType = isTSConstructorType;\nexports.isTSDeclareFunction = isTSDeclareFunction;\nexports.isTSDeclareMethod = isTSDeclareMethod;\nexports.isTSEntityName = isTSEntityName;\nexports.isTSEnumBody = isTSEnumBody;\nexports.isTSEnumDeclaration = isTSEnumDeclaration;\nexports.isTSEnumMember = isTSEnumMember;\nexports.isTSExportAssignment = isTSExportAssignment;\nexports.isTSExpressionWithTypeArguments = isTSExpressionWithTypeArguments;\nexports.isTSExternalModuleReference = isTSExternalModuleReference;\nexports.isTSFunctionType = isTSFunctionType;\nexports.isTSImportEqualsDeclaration = isTSImportEqualsDeclaration;\nexports.isTSImportType = isTSImportType;\nexports.isTSIndexSignature = isTSIndexSignature;\nexports.isTSIndexedAccessType = isTSIndexedAccessType;\nexports.isTSInferType = isTSInferType;\nexports.isTSInstantiationExpression = isTSInstantiationExpression;\nexports.isTSInterfaceBody = isTSInterfaceBody;\nexports.isTSInterfaceDeclaration = isTSInterfaceDeclaration;\nexports.isTSIntersectionType = isTSIntersectionType;\nexports.isTSIntrinsicKeyword = isTSIntrinsicKeyword;\nexports.isTSLiteralType = isTSLiteralType;\nexports.isTSMappedType = isTSMappedType;\nexports.isTSMethodSignature = isTSMethodSignature;\nexports.isTSModuleBlock = isTSModuleBlock;\nexports.isTSModuleDeclaration = isTSModuleDeclaration;\nexports.isTSNamedTupleMember = isTSNamedTupleMember;\nexports.isTSNamespaceExportDeclaration = isTSNamespaceExportDeclaration;\nexports.isTSNeverKeyword = isTSNeverKeyword;\nexports.isTSNonNullExpression = isTSNonNullExpression;\nexports.isTSNullKeyword = isTSNullKeyword;\nexports.isTSNumberKeyword = isTSNumberKeyword;\nexports.isTSObjectKeyword = isTSObjectKeyword;\nexports.isTSOptionalType = isTSOptionalType;\nexports.isTSParameterProperty = isTSParameterProperty;\nexports.isTSParenthesizedType = isTSParenthesizedType;\nexports.isTSPropertySignature = isTSPropertySignature;\nexports.isTSQualifiedName = isTSQualifiedName;\nexports.isTSRestType = isTSRestType;\nexports.isTSSatisfiesExpression = isTSSatisfiesExpression;\nexports.isTSStringKeyword = isTSStringKeyword;\nexports.isTSSymbolKeyword = isTSSymbolKeyword;\nexports.isTSTemplateLiteralType = isTSTemplateLiteralType;\nexports.isTSThisType = isTSThisType;\nexports.isTSTupleType = isTSTupleType;\nexports.isTSType = isTSType;\nexports.isTSTypeAliasDeclaration = isTSTypeAliasDeclaration;\nexports.isTSTypeAnnotation = isTSTypeAnnotation;\nexports.isTSTypeAssertion = isTSTypeAssertion;\nexports.isTSTypeElement = isTSTypeElement;\nexports.isTSTypeLiteral = isTSTypeLiteral;\nexports.isTSTypeOperator = isTSTypeOperator;\nexports.isTSTypeParameter = isTSTypeParameter;\nexports.isTSTypeParameterDeclaration = isTSTypeParameterDeclaration;\nexports.isTSTypeParameterInstantiation = isTSTypeParameterInstantiation;\nexports.isTSTypePredicate = isTSTypePredicate;\nexports.isTSTypeQuery = isTSTypeQuery;\nexports.isTSTypeReference = isTSTypeReference;\nexports.isTSUndefinedKeyword = isTSUndefinedKeyword;\nexports.isTSUnionType = isTSUnionType;\nexports.isTSUnknownKeyword = isTSUnknownKeyword;\nexports.isTSVoidKeyword = isTSVoidKeyword;\nexports.isTaggedTemplateExpression = isTaggedTemplateExpression;\nexports.isTemplateElement = isTemplateElement;\nexports.isTemplateLiteral = isTemplateLiteral;\nexports.isTerminatorless = isTerminatorless;\nexports.isThisExpression = isThisExpression;\nexports.isThisTypeAnnotation = isThisTypeAnnotation;\nexports.isThrowStatement = isThrowStatement;\nexports.isTopicReference = isTopicReference;\nexports.isTryStatement = isTryStatement;\nexports.isTupleExpression = isTupleExpression;\nexports.isTupleTypeAnnotation = isTupleTypeAnnotation;\nexports.isTypeAlias = isTypeAlias;\nexports.isTypeAnnotation = isTypeAnnotation;\nexports.isTypeCastExpression = isTypeCastExpression;\nexports.isTypeParameter = isTypeParameter;\nexports.isTypeParameterDeclaration = isTypeParameterDeclaration;\nexports.isTypeParameterInstantiation = isTypeParameterInstantiation;\nexports.isTypeScript = isTypeScript;\nexports.isTypeofTypeAnnotation = isTypeofTypeAnnotation;\nexports.isUnaryExpression = isUnaryExpression;\nexports.isUnaryLike = isUnaryLike;\nexports.isUnionTypeAnnotation = isUnionTypeAnnotation;\nexports.isUpdateExpression = isUpdateExpression;\nexports.isUserWhitespacable = isUserWhitespacable;\nexports.isV8IntrinsicIdentifier = isV8IntrinsicIdentifier;\nexports.isVariableDeclaration = isVariableDeclaration;\nexports.isVariableDeclarator = isVariableDeclarator;\nexports.isVariance = isVariance;\nexports.isVoidPattern = isVoidPattern;\nexports.isVoidTypeAnnotation = isVoidTypeAnnotation;\nexports.isWhile = isWhile;\nexports.isWhileStatement = isWhileStatement;\nexports.isWithStatement = isWithStatement;\nexports.isYieldExpression = isYieldExpression;\nvar _shallowEqual = require(\"../../utils/shallowEqual.js\");\nvar _deprecationWarning = require(\"../../utils/deprecationWarning.js\");\nfunction isArrayExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArrayExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isAssignmentExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"AssignmentExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBinaryExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"BinaryExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isInterpreterDirective(node, opts) {\n if (!node) return false;\n if (node.type !== \"InterpreterDirective\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDirective(node, opts) {\n if (!node) return false;\n if (node.type !== \"Directive\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDirectiveLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"DirectiveLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBlockStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"BlockStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBreakStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"BreakStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isCallExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"CallExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isCatchClause(node, opts) {\n if (!node) return false;\n if (node.type !== \"CatchClause\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isConditionalExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ConditionalExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isContinueStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ContinueStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDebuggerStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"DebuggerStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDoWhileStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"DoWhileStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEmptyStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"EmptyStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExpressionStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExpressionStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFile(node, opts) {\n if (!node) return false;\n if (node.type !== \"File\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isForInStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ForInStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isForStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ForStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFunctionDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"FunctionDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFunctionExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"FunctionExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isIdentifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"Identifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isIfStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"IfStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isLabeledStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"LabeledStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isStringLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"StringLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isNumericLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"NumericLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isNullLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"NullLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBooleanLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"BooleanLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isRegExpLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"RegExpLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isLogicalExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"LogicalExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isMemberExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"MemberExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isNewExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"NewExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isProgram(node, opts) {\n if (!node) return false;\n if (node.type !== \"Program\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectMethod(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectMethod\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isRestElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"RestElement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isReturnStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ReturnStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isSequenceExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"SequenceExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isParenthesizedExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ParenthesizedExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isSwitchCase(node, opts) {\n if (!node) return false;\n if (node.type !== \"SwitchCase\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isSwitchStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"SwitchStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isThisExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ThisExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isThrowStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ThrowStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTryStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"TryStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isUnaryExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"UnaryExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isUpdateExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"UpdateExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isVariableDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"VariableDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isVariableDeclarator(node, opts) {\n if (!node) return false;\n if (node.type !== \"VariableDeclarator\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isWhileStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"WhileStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isWithStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"WithStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isAssignmentPattern(node, opts) {\n if (!node) return false;\n if (node.type !== \"AssignmentPattern\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isArrayPattern(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArrayPattern\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isArrowFunctionExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArrowFunctionExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClassBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassBody\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClassExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClassDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExportAllDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportAllDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExportDefaultDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportDefaultDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExportNamedDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportNamedDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExportSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportSpecifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isForOfStatement(node, opts) {\n if (!node) return false;\n if (node.type !== \"ForOfStatement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isImportDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isImportDefaultSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportDefaultSpecifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isImportNamespaceSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportNamespaceSpecifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isImportSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportSpecifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isImportExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isMetaProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"MetaProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClassMethod(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassMethod\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectPattern(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectPattern\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isSpreadElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"SpreadElement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isSuper(node, opts) {\n if (!node) return false;\n if (node.type !== \"Super\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTaggedTemplateExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TaggedTemplateExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTemplateElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"TemplateElement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTemplateLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"TemplateLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isYieldExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"YieldExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isAwaitExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"AwaitExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isImport(node, opts) {\n if (!node) return false;\n if (node.type !== \"Import\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBigIntLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"BigIntLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExportNamespaceSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportNamespaceSpecifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isOptionalMemberExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"OptionalMemberExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isOptionalCallExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"OptionalCallExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClassProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClassAccessorProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassAccessorProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClassPrivateProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassPrivateProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClassPrivateMethod(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassPrivateMethod\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isPrivateName(node, opts) {\n if (!node) return false;\n if (node.type !== \"PrivateName\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isStaticBlock(node, opts) {\n if (!node) return false;\n if (node.type !== \"StaticBlock\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isImportAttribute(node, opts) {\n if (!node) return false;\n if (node.type !== \"ImportAttribute\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isAnyTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"AnyTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isArrayTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArrayTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBooleanTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"BooleanTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBooleanLiteralTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"BooleanLiteralTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isNullLiteralTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"NullLiteralTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClassImplements(node, opts) {\n if (!node) return false;\n if (node.type !== \"ClassImplements\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareClass(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareClass\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareFunction(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareFunction\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareInterface(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareInterface\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareModule(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareModule\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareModuleExports(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareModuleExports\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareTypeAlias(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareTypeAlias\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareOpaqueType(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareOpaqueType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareVariable(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareVariable\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareExportDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareExportDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclareExportAllDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclareExportAllDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclaredPredicate(node, opts) {\n if (!node) return false;\n if (node.type !== \"DeclaredPredicate\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExistsTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExistsTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFunctionTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"FunctionTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFunctionTypeParam(node, opts) {\n if (!node) return false;\n if (node.type !== \"FunctionTypeParam\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isGenericTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"GenericTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isInferredPredicate(node, opts) {\n if (!node) return false;\n if (node.type !== \"InferredPredicate\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isInterfaceExtends(node, opts) {\n if (!node) return false;\n if (node.type !== \"InterfaceExtends\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isInterfaceDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"InterfaceDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isInterfaceTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"InterfaceTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isIntersectionTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"IntersectionTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isMixedTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"MixedTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEmptyTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"EmptyTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isNullableTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"NullableTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isNumberLiteralTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"NumberLiteralTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isNumberTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"NumberTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectTypeInternalSlot(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeInternalSlot\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectTypeCallProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeCallProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectTypeIndexer(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeIndexer\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectTypeProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectTypeSpreadProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"ObjectTypeSpreadProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isOpaqueType(node, opts) {\n if (!node) return false;\n if (node.type !== \"OpaqueType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isQualifiedTypeIdentifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"QualifiedTypeIdentifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isStringLiteralTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"StringLiteralTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isStringTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"StringTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isSymbolTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"SymbolTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isThisTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"ThisTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTupleTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TupleTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTypeofTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeofTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTypeAlias(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeAlias\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTypeCastExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeCastExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTypeParameter(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeParameter\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTypeParameterDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeParameterDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTypeParameterInstantiation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TypeParameterInstantiation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isUnionTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"UnionTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isVariance(node, opts) {\n if (!node) return false;\n if (node.type !== \"Variance\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isVoidTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"VoidTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumBooleanBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumBooleanBody\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumNumberBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumNumberBody\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumStringBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumStringBody\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumSymbolBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumSymbolBody\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumBooleanMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumBooleanMember\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumNumberMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumNumberMember\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumStringMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumStringMember\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumDefaultedMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"EnumDefaultedMember\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isIndexedAccessType(node, opts) {\n if (!node) return false;\n if (node.type !== \"IndexedAccessType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isOptionalIndexedAccessType(node, opts) {\n if (!node) return false;\n if (node.type !== \"OptionalIndexedAccessType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXAttribute(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXAttribute\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXClosingElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXClosingElement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXElement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXEmptyExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXEmptyExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXExpressionContainer(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXExpressionContainer\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXSpreadChild(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXSpreadChild\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXIdentifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXIdentifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXMemberExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXMemberExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXNamespacedName(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXNamespacedName\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXOpeningElement(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXOpeningElement\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXSpreadAttribute(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXSpreadAttribute\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXText(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXText\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXFragment(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXFragment\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXOpeningFragment(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXOpeningFragment\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSXClosingFragment(node, opts) {\n if (!node) return false;\n if (node.type !== \"JSXClosingFragment\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isNoop(node, opts) {\n if (!node) return false;\n if (node.type !== \"Noop\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isPlaceholder(node, opts) {\n if (!node) return false;\n if (node.type !== \"Placeholder\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isV8IntrinsicIdentifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"V8IntrinsicIdentifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isArgumentPlaceholder(node, opts) {\n if (!node) return false;\n if (node.type !== \"ArgumentPlaceholder\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBindExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"BindExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDecorator(node, opts) {\n if (!node) return false;\n if (node.type !== \"Decorator\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDoExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"DoExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExportDefaultSpecifier(node, opts) {\n if (!node) return false;\n if (node.type !== \"ExportDefaultSpecifier\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isRecordExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"RecordExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTupleExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TupleExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDecimalLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"DecimalLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isModuleExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"ModuleExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTopicReference(node, opts) {\n if (!node) return false;\n if (node.type !== \"TopicReference\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isPipelineTopicExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"PipelineTopicExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isPipelineBareFunction(node, opts) {\n if (!node) return false;\n if (node.type !== \"PipelineBareFunction\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isPipelinePrimaryTopicReference(node, opts) {\n if (!node) return false;\n if (node.type !== \"PipelinePrimaryTopicReference\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isVoidPattern(node, opts) {\n if (!node) return false;\n if (node.type !== \"VoidPattern\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSParameterProperty(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSParameterProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSDeclareFunction(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSDeclareFunction\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSDeclareMethod(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSDeclareMethod\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSQualifiedName(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSQualifiedName\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSCallSignatureDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSCallSignatureDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSConstructSignatureDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSConstructSignatureDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSPropertySignature(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSPropertySignature\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSMethodSignature(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSMethodSignature\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSIndexSignature(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSIndexSignature\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSAnyKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSAnyKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSBooleanKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSBooleanKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSBigIntKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSBigIntKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSIntrinsicKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSIntrinsicKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSNeverKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNeverKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSNullKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNullKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSNumberKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNumberKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSObjectKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSObjectKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSStringKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSStringKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSSymbolKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSSymbolKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSUndefinedKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSUndefinedKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSUnknownKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSUnknownKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSVoidKeyword(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSVoidKeyword\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSThisType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSThisType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSFunctionType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSFunctionType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSConstructorType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSConstructorType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeReference(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeReference\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypePredicate(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypePredicate\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeQuery(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeQuery\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeLiteral(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSArrayType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSArrayType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTupleType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTupleType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSOptionalType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSOptionalType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSRestType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSRestType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSNamedTupleMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNamedTupleMember\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSUnionType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSUnionType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSIntersectionType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSIntersectionType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSConditionalType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSConditionalType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSInferType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSInferType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSParenthesizedType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSParenthesizedType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeOperator(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeOperator\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSIndexedAccessType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSIndexedAccessType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSMappedType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSMappedType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTemplateLiteralType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTemplateLiteralType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSLiteralType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSLiteralType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSExpressionWithTypeArguments(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSExpressionWithTypeArguments\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSInterfaceDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSInterfaceDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSInterfaceBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSInterfaceBody\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeAliasDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeAliasDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSInstantiationExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSInstantiationExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSAsExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSAsExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSSatisfiesExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSSatisfiesExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeAssertion(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeAssertion\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSEnumBody(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSEnumBody\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSEnumDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSEnumDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSEnumMember(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSEnumMember\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSModuleDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSModuleDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSModuleBlock(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSModuleBlock\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSImportType(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSImportType\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSImportEqualsDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSImportEqualsDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSExternalModuleReference(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSExternalModuleReference\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSNonNullExpression(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNonNullExpression\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSExportAssignment(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSExportAssignment\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSNamespaceExportDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSNamespaceExportDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeAnnotation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeAnnotation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeParameterInstantiation(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeParameterInstantiation\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeParameterDeclaration(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeParameterDeclaration\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeParameter(node, opts) {\n if (!node) return false;\n if (node.type !== \"TSTypeParameter\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isStandardized(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"InterpreterDirective\":\n case \"Directive\":\n case \"DirectiveLiteral\":\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"CallExpression\":\n case \"CatchClause\":\n case \"ConditionalExpression\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"File\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"Program\":\n case \"ObjectExpression\":\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"RestElement\":\n case \"ReturnStatement\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"SwitchCase\":\n case \"SwitchStatement\":\n case \"ThisExpression\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"VariableDeclaration\":\n case \"VariableDeclarator\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ArrowFunctionExpression\":\n case \"ClassBody\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ExportSpecifier\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"ImportExpression\":\n case \"MetaProperty\":\n case \"ClassMethod\":\n case \"ObjectPattern\":\n case \"SpreadElement\":\n case \"Super\":\n case \"TaggedTemplateExpression\":\n case \"TemplateElement\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"Import\":\n case \"BigIntLiteral\":\n case \"ExportNamespaceSpecifier\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n case \"StaticBlock\":\n case \"ImportAttribute\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Identifier\":\n case \"StringLiteral\":\n case \"BlockStatement\":\n case \"ClassBody\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExpression(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ArrayExpression\":\n case \"AssignmentExpression\":\n case \"BinaryExpression\":\n case \"CallExpression\":\n case \"ConditionalExpression\":\n case \"FunctionExpression\":\n case \"Identifier\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"LogicalExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"ObjectExpression\":\n case \"SequenceExpression\":\n case \"ParenthesizedExpression\":\n case \"ThisExpression\":\n case \"UnaryExpression\":\n case \"UpdateExpression\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"ImportExpression\":\n case \"MetaProperty\":\n case \"Super\":\n case \"TaggedTemplateExpression\":\n case \"TemplateLiteral\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"Import\":\n case \"BigIntLiteral\":\n case \"OptionalMemberExpression\":\n case \"OptionalCallExpression\":\n case \"TypeCastExpression\":\n case \"JSXElement\":\n case \"JSXFragment\":\n case \"BindExpression\":\n case \"DoExpression\":\n case \"RecordExpression\":\n case \"TupleExpression\":\n case \"DecimalLiteral\":\n case \"ModuleExpression\":\n case \"TopicReference\":\n case \"PipelineTopicExpression\":\n case \"PipelineBareFunction\":\n case \"PipelinePrimaryTopicReference\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Expression\":\n case \"Identifier\":\n case \"StringLiteral\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBinary(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isScopable(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBlockParent(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BlockStatement\":\n case \"CatchClause\":\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"Program\":\n case \"ObjectMethod\":\n case \"SwitchStatement\":\n case \"WhileStatement\":\n case \"ArrowFunctionExpression\":\n case \"ForOfStatement\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isBlock(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BlockStatement\":\n case \"Program\":\n case \"TSModuleBlock\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"BlockStatement\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isStatement(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BlockStatement\":\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"DebuggerStatement\":\n case \"DoWhileStatement\":\n case \"EmptyStatement\":\n case \"ExpressionStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"FunctionDeclaration\":\n case \"IfStatement\":\n case \"LabeledStatement\":\n case \"ReturnStatement\":\n case \"SwitchStatement\":\n case \"ThrowStatement\":\n case \"TryStatement\":\n case \"VariableDeclaration\":\n case \"WhileStatement\":\n case \"WithStatement\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ForOfStatement\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Statement\":\n case \"Declaration\":\n case \"BlockStatement\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTerminatorless(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n case \"YieldExpression\":\n case \"AwaitExpression\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isCompletionStatement(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"BreakStatement\":\n case \"ContinueStatement\":\n case \"ReturnStatement\":\n case \"ThrowStatement\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isConditional(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ConditionalExpression\":\n case \"IfStatement\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isLoop(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"WhileStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isWhile(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"DoWhileStatement\":\n case \"WhileStatement\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExpressionWrapper(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ExpressionStatement\":\n case \"ParenthesizedExpression\":\n case \"TypeCastExpression\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFor(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isForXStatement(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ForInStatement\":\n case \"ForOfStatement\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFunction(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFunctionParent(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ObjectMethod\":\n case \"ArrowFunctionExpression\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"StaticBlock\":\n case \"TSModuleBlock\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isPureish(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"ArrowFunctionExpression\":\n case \"BigIntLiteral\":\n case \"DecimalLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isDeclaration(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"FunctionDeclaration\":\n case \"VariableDeclaration\":\n case \"ClassDeclaration\":\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n case \"EnumDeclaration\":\n case \"TSDeclareFunction\":\n case \"TSInterfaceDeclaration\":\n case \"TSTypeAliasDeclaration\":\n case \"TSEnumDeclaration\":\n case \"TSModuleDeclaration\":\n case \"TSImportEqualsDeclaration\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Declaration\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFunctionParameter(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Identifier\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Identifier\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isPatternLike(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Identifier\":\n case \"MemberExpression\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isLVal(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Identifier\":\n case \"MemberExpression\":\n case \"RestElement\":\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"TSParameterProperty\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSNonNullExpression\":\n break;\n case \"Placeholder\":\n switch (node.expectedNode) {\n case \"Pattern\":\n case \"Identifier\":\n break;\n default:\n return false;\n }\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSEntityName(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Identifier\":\n case \"TSQualifiedName\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Identifier\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isLiteral(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"RegExpLiteral\":\n case \"TemplateLiteral\":\n case \"BigIntLiteral\":\n case \"DecimalLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isImmutable(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"StringLiteral\":\n case \"NumericLiteral\":\n case \"NullLiteral\":\n case \"BooleanLiteral\":\n case \"BigIntLiteral\":\n case \"JSXAttribute\":\n case \"JSXClosingElement\":\n case \"JSXElement\":\n case \"JSXExpressionContainer\":\n case \"JSXSpreadChild\":\n case \"JSXOpeningElement\":\n case \"JSXText\":\n case \"JSXFragment\":\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n case \"DecimalLiteral\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"StringLiteral\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isUserWhitespacable(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isMethod(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isObjectMember(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ObjectMethod\":\n case \"ObjectProperty\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isProperty(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ObjectProperty\":\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n case \"ClassPrivateProperty\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isUnaryLike(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isPattern(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"AssignmentPattern\":\n case \"ArrayPattern\":\n case \"ObjectPattern\":\n case \"VoidPattern\":\n break;\n case \"Placeholder\":\n if (node.expectedNode === \"Pattern\") break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isClass(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ClassExpression\":\n case \"ClassDeclaration\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isImportOrExportDeclaration(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isExportDeclaration(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ExportAllDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isModuleSpecifier(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ExportSpecifier\":\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isAccessor(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ClassAccessorProperty\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isPrivate(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"ClassPrivateProperty\":\n case \"ClassPrivateMethod\":\n case \"PrivateName\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFlow(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ClassImplements\":\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"DeclaredPredicate\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"FunctionTypeParam\":\n case \"GenericTypeAnnotation\":\n case \"InferredPredicate\":\n case \"InterfaceExtends\":\n case \"InterfaceDeclaration\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"ObjectTypeInternalSlot\":\n case \"ObjectTypeCallProperty\":\n case \"ObjectTypeIndexer\":\n case \"ObjectTypeProperty\":\n case \"ObjectTypeSpreadProperty\":\n case \"OpaqueType\":\n case \"QualifiedTypeIdentifier\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"TypeAlias\":\n case \"TypeAnnotation\":\n case \"TypeCastExpression\":\n case \"TypeParameter\":\n case \"TypeParameterDeclaration\":\n case \"TypeParameterInstantiation\":\n case \"UnionTypeAnnotation\":\n case \"Variance\":\n case \"VoidTypeAnnotation\":\n case \"EnumDeclaration\":\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFlowType(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"ArrayTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"BooleanLiteralTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"ExistsTypeAnnotation\":\n case \"FunctionTypeAnnotation\":\n case \"GenericTypeAnnotation\":\n case \"InterfaceTypeAnnotation\":\n case \"IntersectionTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NullableTypeAnnotation\":\n case \"NumberLiteralTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"ObjectTypeAnnotation\":\n case \"StringLiteralTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"TupleTypeAnnotation\":\n case \"TypeofTypeAnnotation\":\n case \"UnionTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFlowBaseAnnotation(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"AnyTypeAnnotation\":\n case \"BooleanTypeAnnotation\":\n case \"NullLiteralTypeAnnotation\":\n case \"MixedTypeAnnotation\":\n case \"EmptyTypeAnnotation\":\n case \"NumberTypeAnnotation\":\n case \"StringTypeAnnotation\":\n case \"SymbolTypeAnnotation\":\n case \"ThisTypeAnnotation\":\n case \"VoidTypeAnnotation\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFlowDeclaration(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"DeclareClass\":\n case \"DeclareFunction\":\n case \"DeclareInterface\":\n case \"DeclareModule\":\n case \"DeclareModuleExports\":\n case \"DeclareTypeAlias\":\n case \"DeclareOpaqueType\":\n case \"DeclareVariable\":\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n case \"InterfaceDeclaration\":\n case \"OpaqueType\":\n case \"TypeAlias\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isFlowPredicate(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"DeclaredPredicate\":\n case \"InferredPredicate\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumBody(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isEnumMember(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n case \"EnumDefaultedMember\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isJSX(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"JSXAttribute\":\n case \"JSXClosingElement\":\n case \"JSXElement\":\n case \"JSXEmptyExpression\":\n case \"JSXExpressionContainer\":\n case \"JSXSpreadChild\":\n case \"JSXIdentifier\":\n case \"JSXMemberExpression\":\n case \"JSXNamespacedName\":\n case \"JSXOpeningElement\":\n case \"JSXSpreadAttribute\":\n case \"JSXText\":\n case \"JSXFragment\":\n case \"JSXOpeningFragment\":\n case \"JSXClosingFragment\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isMiscellaneous(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"Noop\":\n case \"Placeholder\":\n case \"V8IntrinsicIdentifier\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTypeScript(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"TSParameterProperty\":\n case \"TSDeclareFunction\":\n case \"TSDeclareMethod\":\n case \"TSQualifiedName\":\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSNamedTupleMember\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n case \"TSExpressionWithTypeArguments\":\n case \"TSInterfaceDeclaration\":\n case \"TSInterfaceBody\":\n case \"TSTypeAliasDeclaration\":\n case \"TSInstantiationExpression\":\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\":\n case \"TSTypeAssertion\":\n case \"TSEnumBody\":\n case \"TSEnumDeclaration\":\n case \"TSEnumMember\":\n case \"TSModuleDeclaration\":\n case \"TSModuleBlock\":\n case \"TSImportType\":\n case \"TSImportEqualsDeclaration\":\n case \"TSExternalModuleReference\":\n case \"TSNonNullExpression\":\n case \"TSExportAssignment\":\n case \"TSNamespaceExportDeclaration\":\n case \"TSTypeAnnotation\":\n case \"TSTypeParameterInstantiation\":\n case \"TSTypeParameterDeclaration\":\n case \"TSTypeParameter\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSTypeElement(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"TSCallSignatureDeclaration\":\n case \"TSConstructSignatureDeclaration\":\n case \"TSPropertySignature\":\n case \"TSMethodSignature\":\n case \"TSIndexSignature\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSType(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSFunctionType\":\n case \"TSConstructorType\":\n case \"TSTypeReference\":\n case \"TSTypePredicate\":\n case \"TSTypeQuery\":\n case \"TSTypeLiteral\":\n case \"TSArrayType\":\n case \"TSTupleType\":\n case \"TSOptionalType\":\n case \"TSRestType\":\n case \"TSUnionType\":\n case \"TSIntersectionType\":\n case \"TSConditionalType\":\n case \"TSInferType\":\n case \"TSParenthesizedType\":\n case \"TSTypeOperator\":\n case \"TSIndexedAccessType\":\n case \"TSMappedType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n case \"TSExpressionWithTypeArguments\":\n case \"TSImportType\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isTSBaseType(node, opts) {\n if (!node) return false;\n switch (node.type) {\n case \"TSAnyKeyword\":\n case \"TSBooleanKeyword\":\n case \"TSBigIntKeyword\":\n case \"TSIntrinsicKeyword\":\n case \"TSNeverKeyword\":\n case \"TSNullKeyword\":\n case \"TSNumberKeyword\":\n case \"TSObjectKeyword\":\n case \"TSStringKeyword\":\n case \"TSSymbolKeyword\":\n case \"TSUndefinedKeyword\":\n case \"TSUnknownKeyword\":\n case \"TSVoidKeyword\":\n case \"TSThisType\":\n case \"TSTemplateLiteralType\":\n case \"TSLiteralType\":\n break;\n default:\n return false;\n }\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isNumberLiteral(node, opts) {\n (0, _deprecationWarning.default)(\"isNumberLiteral\", \"isNumericLiteral\");\n if (!node) return false;\n if (node.type !== \"NumberLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isRegexLiteral(node, opts) {\n (0, _deprecationWarning.default)(\"isRegexLiteral\", \"isRegExpLiteral\");\n if (!node) return false;\n if (node.type !== \"RegexLiteral\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isRestProperty(node, opts) {\n (0, _deprecationWarning.default)(\"isRestProperty\", \"isRestElement\");\n if (!node) return false;\n if (node.type !== \"RestProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isSpreadProperty(node, opts) {\n (0, _deprecationWarning.default)(\"isSpreadProperty\", \"isSpreadElement\");\n if (!node) return false;\n if (node.type !== \"SpreadProperty\") return false;\n return opts == null || (0, _shallowEqual.default)(node, opts);\n}\nfunction isModuleDeclaration(node, opts) {\n (0, _deprecationWarning.default)(\"isModuleDeclaration\", \"isImportOrExportDeclaration\");\n return isImportOrExportDeclaration(node, opts);\n}\n\n//# sourceMappingURL=index.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = shallowEqual;\nfunction shallowEqual(actual, expected) {\n const keys = Object.keys(expected);\n for (const key of keys) {\n if (actual[key] !== expected[key]) {\n return false;\n }\n }\n return true;\n}\n\n//# sourceMappingURL=shallowEqual.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = deprecationWarning;\nconst warnings = new Set();\nfunction deprecationWarning(oldName, newName, prefix = \"\", cacheKey = oldName) {\n if (warnings.has(cacheKey)) return;\n warnings.add(cacheKey);\n const {\n internal,\n trace\n } = captureShortStackTrace(1, 2);\n if (internal) {\n return;\n }\n console.warn(`${prefix}\\`${oldName}\\` has been deprecated, please migrate to \\`${newName}\\`\\n${trace}`);\n}\nfunction captureShortStackTrace(skip, length) {\n const {\n stackTraceLimit,\n prepareStackTrace\n } = Error;\n let stackTrace;\n Error.stackTraceLimit = 1 + skip + length;\n Error.prepareStackTrace = function (err, stack) {\n stackTrace = stack;\n };\n new Error().stack;\n Error.stackTraceLimit = stackTraceLimit;\n Error.prepareStackTrace = prepareStackTrace;\n if (!stackTrace) return {\n internal: false,\n trace: \"\"\n };\n const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);\n return {\n internal: /[\\\\/]@babel[\\\\/]/.test(shortStackTrace[1].getFileName()),\n trace: shortStackTrace.map(frame => ` at ${frame}`).join(\"\\n\")\n };\n}\n\n//# sourceMappingURL=deprecationWarning.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCompatTag;\nfunction isCompatTag(tagName) {\n return !!tagName && /^[a-z]/.test(tagName);\n}\n\n//# sourceMappingURL=isCompatTag.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildChildren;\nvar _index = require(\"../../validators/generated/index.js\");\nvar _cleanJSXElementLiteralChild = require(\"../../utils/react/cleanJSXElementLiteralChild.js\");\nfunction buildChildren(node) {\n const elements = [];\n for (let i = 0; i < node.children.length; i++) {\n let child = node.children[i];\n if ((0, _index.isJSXText)(child)) {\n (0, _cleanJSXElementLiteralChild.default)(child, elements);\n continue;\n }\n if ((0, _index.isJSXExpressionContainer)(child)) child = child.expression;\n if ((0, _index.isJSXEmptyExpression)(child)) continue;\n elements.push(child);\n }\n return elements;\n}\n\n//# sourceMappingURL=buildChildren.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cleanJSXElementLiteralChild;\nvar _index = require(\"../../builders/generated/index.js\");\nvar _index2 = require(\"../../index.js\");\nfunction cleanJSXElementLiteralChild(child, args) {\n const lines = child.value.split(/\\r\\n|\\n|\\r/);\n let lastNonEmptyLine = 0;\n for (let i = 0; i < lines.length; i++) {\n if (/[^ \\t]/.exec(lines[i])) {\n lastNonEmptyLine = i;\n }\n }\n let str = \"\";\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const isFirstLine = i === 0;\n const isLastLine = i === lines.length - 1;\n const isLastNonEmptyLine = i === lastNonEmptyLine;\n let trimmedLine = line.replace(/\\t/g, \" \");\n if (!isFirstLine) {\n trimmedLine = trimmedLine.replace(/^ +/, \"\");\n }\n if (!isLastLine) {\n trimmedLine = trimmedLine.replace(/ +$/, \"\");\n }\n if (trimmedLine) {\n if (!isLastNonEmptyLine) {\n trimmedLine += \" \";\n }\n str += trimmedLine;\n }\n }\n if (str) args.push((0, _index2.inherits)((0, _index.stringLiteral)(str), child));\n}\n\n//# sourceMappingURL=cleanJSXElementLiteralChild.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _lowercase = require(\"./lowercase.js\");\nObject.keys(_lowercase).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _lowercase[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _lowercase[key];\n }\n });\n});\nvar _uppercase = require(\"./uppercase.js\");\nObject.keys(_uppercase).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _uppercase[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return _uppercase[key];\n }\n });\n});\n\n//# sourceMappingURL=index.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.anyTypeAnnotation = anyTypeAnnotation;\nexports.argumentPlaceholder = argumentPlaceholder;\nexports.arrayExpression = arrayExpression;\nexports.arrayPattern = arrayPattern;\nexports.arrayTypeAnnotation = arrayTypeAnnotation;\nexports.arrowFunctionExpression = arrowFunctionExpression;\nexports.assignmentExpression = assignmentExpression;\nexports.assignmentPattern = assignmentPattern;\nexports.awaitExpression = awaitExpression;\nexports.bigIntLiteral = bigIntLiteral;\nexports.binaryExpression = binaryExpression;\nexports.bindExpression = bindExpression;\nexports.blockStatement = blockStatement;\nexports.booleanLiteral = booleanLiteral;\nexports.booleanLiteralTypeAnnotation = booleanLiteralTypeAnnotation;\nexports.booleanTypeAnnotation = booleanTypeAnnotation;\nexports.breakStatement = breakStatement;\nexports.callExpression = callExpression;\nexports.catchClause = catchClause;\nexports.classAccessorProperty = classAccessorProperty;\nexports.classBody = classBody;\nexports.classDeclaration = classDeclaration;\nexports.classExpression = classExpression;\nexports.classImplements = classImplements;\nexports.classMethod = classMethod;\nexports.classPrivateMethod = classPrivateMethod;\nexports.classPrivateProperty = classPrivateProperty;\nexports.classProperty = classProperty;\nexports.conditionalExpression = conditionalExpression;\nexports.continueStatement = continueStatement;\nexports.debuggerStatement = debuggerStatement;\nexports.decimalLiteral = decimalLiteral;\nexports.declareClass = declareClass;\nexports.declareExportAllDeclaration = declareExportAllDeclaration;\nexports.declareExportDeclaration = declareExportDeclaration;\nexports.declareFunction = declareFunction;\nexports.declareInterface = declareInterface;\nexports.declareModule = declareModule;\nexports.declareModuleExports = declareModuleExports;\nexports.declareOpaqueType = declareOpaqueType;\nexports.declareTypeAlias = declareTypeAlias;\nexports.declareVariable = declareVariable;\nexports.declaredPredicate = declaredPredicate;\nexports.decorator = decorator;\nexports.directive = directive;\nexports.directiveLiteral = directiveLiteral;\nexports.doExpression = doExpression;\nexports.doWhileStatement = doWhileStatement;\nexports.emptyStatement = emptyStatement;\nexports.emptyTypeAnnotation = emptyTypeAnnotation;\nexports.enumBooleanBody = enumBooleanBody;\nexports.enumBooleanMember = enumBooleanMember;\nexports.enumDeclaration = enumDeclaration;\nexports.enumDefaultedMember = enumDefaultedMember;\nexports.enumNumberBody = enumNumberBody;\nexports.enumNumberMember = enumNumberMember;\nexports.enumStringBody = enumStringBody;\nexports.enumStringMember = enumStringMember;\nexports.enumSymbolBody = enumSymbolBody;\nexports.existsTypeAnnotation = existsTypeAnnotation;\nexports.exportAllDeclaration = exportAllDeclaration;\nexports.exportDefaultDeclaration = exportDefaultDeclaration;\nexports.exportDefaultSpecifier = exportDefaultSpecifier;\nexports.exportNamedDeclaration = exportNamedDeclaration;\nexports.exportNamespaceSpecifier = exportNamespaceSpecifier;\nexports.exportSpecifier = exportSpecifier;\nexports.expressionStatement = expressionStatement;\nexports.file = file;\nexports.forInStatement = forInStatement;\nexports.forOfStatement = forOfStatement;\nexports.forStatement = forStatement;\nexports.functionDeclaration = functionDeclaration;\nexports.functionExpression = functionExpression;\nexports.functionTypeAnnotation = functionTypeAnnotation;\nexports.functionTypeParam = functionTypeParam;\nexports.genericTypeAnnotation = genericTypeAnnotation;\nexports.identifier = identifier;\nexports.ifStatement = ifStatement;\nexports.import = _import;\nexports.importAttribute = importAttribute;\nexports.importDeclaration = importDeclaration;\nexports.importDefaultSpecifier = importDefaultSpecifier;\nexports.importExpression = importExpression;\nexports.importNamespaceSpecifier = importNamespaceSpecifier;\nexports.importSpecifier = importSpecifier;\nexports.indexedAccessType = indexedAccessType;\nexports.inferredPredicate = inferredPredicate;\nexports.interfaceDeclaration = interfaceDeclaration;\nexports.interfaceExtends = interfaceExtends;\nexports.interfaceTypeAnnotation = interfaceTypeAnnotation;\nexports.interpreterDirective = interpreterDirective;\nexports.intersectionTypeAnnotation = intersectionTypeAnnotation;\nexports.jSXAttribute = exports.jsxAttribute = jsxAttribute;\nexports.jSXClosingElement = exports.jsxClosingElement = jsxClosingElement;\nexports.jSXClosingFragment = exports.jsxClosingFragment = jsxClosingFragment;\nexports.jSXElement = exports.jsxElement = jsxElement;\nexports.jSXEmptyExpression = exports.jsxEmptyExpression = jsxEmptyExpression;\nexports.jSXExpressionContainer = exports.jsxExpressionContainer = jsxExpressionContainer;\nexports.jSXFragment = exports.jsxFragment = jsxFragment;\nexports.jSXIdentifier = exports.jsxIdentifier = jsxIdentifier;\nexports.jSXMemberExpression = exports.jsxMemberExpression = jsxMemberExpression;\nexports.jSXNamespacedName = exports.jsxNamespacedName = jsxNamespacedName;\nexports.jSXOpeningElement = exports.jsxOpeningElement = jsxOpeningElement;\nexports.jSXOpeningFragment = exports.jsxOpeningFragment = jsxOpeningFragment;\nexports.jSXSpreadAttribute = exports.jsxSpreadAttribute = jsxSpreadAttribute;\nexports.jSXSpreadChild = exports.jsxSpreadChild = jsxSpreadChild;\nexports.jSXText = exports.jsxText = jsxText;\nexports.labeledStatement = labeledStatement;\nexports.logicalExpression = logicalExpression;\nexports.memberExpression = memberExpression;\nexports.metaProperty = metaProperty;\nexports.mixedTypeAnnotation = mixedTypeAnnotation;\nexports.moduleExpression = moduleExpression;\nexports.newExpression = newExpression;\nexports.noop = noop;\nexports.nullLiteral = nullLiteral;\nexports.nullLiteralTypeAnnotation = nullLiteralTypeAnnotation;\nexports.nullableTypeAnnotation = nullableTypeAnnotation;\nexports.numberLiteral = NumberLiteral;\nexports.numberLiteralTypeAnnotation = numberLiteralTypeAnnotation;\nexports.numberTypeAnnotation = numberTypeAnnotation;\nexports.numericLiteral = numericLiteral;\nexports.objectExpression = objectExpression;\nexports.objectMethod = objectMethod;\nexports.objectPattern = objectPattern;\nexports.objectProperty = objectProperty;\nexports.objectTypeAnnotation = objectTypeAnnotation;\nexports.objectTypeCallProperty = objectTypeCallProperty;\nexports.objectTypeIndexer = objectTypeIndexer;\nexports.objectTypeInternalSlot = objectTypeInternalSlot;\nexports.objectTypeProperty = objectTypeProperty;\nexports.objectTypeSpreadProperty = objectTypeSpreadProperty;\nexports.opaqueType = opaqueType;\nexports.optionalCallExpression = optionalCallExpression;\nexports.optionalIndexedAccessType = optionalIndexedAccessType;\nexports.optionalMemberExpression = optionalMemberExpression;\nexports.parenthesizedExpression = parenthesizedExpression;\nexports.pipelineBareFunction = pipelineBareFunction;\nexports.pipelinePrimaryTopicReference = pipelinePrimaryTopicReference;\nexports.pipelineTopicExpression = pipelineTopicExpression;\nexports.placeholder = placeholder;\nexports.privateName = privateName;\nexports.program = program;\nexports.qualifiedTypeIdentifier = qualifiedTypeIdentifier;\nexports.recordExpression = recordExpression;\nexports.regExpLiteral = regExpLiteral;\nexports.regexLiteral = RegexLiteral;\nexports.restElement = restElement;\nexports.restProperty = RestProperty;\nexports.returnStatement = returnStatement;\nexports.sequenceExpression = sequenceExpression;\nexports.spreadElement = spreadElement;\nexports.spreadProperty = SpreadProperty;\nexports.staticBlock = staticBlock;\nexports.stringLiteral = stringLiteral;\nexports.stringLiteralTypeAnnotation = stringLiteralTypeAnnotation;\nexports.stringTypeAnnotation = stringTypeAnnotation;\nexports.super = _super;\nexports.switchCase = switchCase;\nexports.switchStatement = switchStatement;\nexports.symbolTypeAnnotation = symbolTypeAnnotation;\nexports.taggedTemplateExpression = taggedTemplateExpression;\nexports.templateElement = templateElement;\nexports.templateLiteral = templateLiteral;\nexports.thisExpression = thisExpression;\nexports.thisTypeAnnotation = thisTypeAnnotation;\nexports.throwStatement = throwStatement;\nexports.topicReference = topicReference;\nexports.tryStatement = tryStatement;\nexports.tSAnyKeyword = exports.tsAnyKeyword = tsAnyKeyword;\nexports.tSArrayType = exports.tsArrayType = tsArrayType;\nexports.tSAsExpression = exports.tsAsExpression = tsAsExpression;\nexports.tSBigIntKeyword = exports.tsBigIntKeyword = tsBigIntKeyword;\nexports.tSBooleanKeyword = exports.tsBooleanKeyword = tsBooleanKeyword;\nexports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = tsCallSignatureDeclaration;\nexports.tSConditionalType = exports.tsConditionalType = tsConditionalType;\nexports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = tsConstructSignatureDeclaration;\nexports.tSConstructorType = exports.tsConstructorType = tsConstructorType;\nexports.tSDeclareFunction = exports.tsDeclareFunction = tsDeclareFunction;\nexports.tSDeclareMethod = exports.tsDeclareMethod = tsDeclareMethod;\nexports.tSEnumBody = exports.tsEnumBody = tsEnumBody;\nexports.tSEnumDeclaration = exports.tsEnumDeclaration = tsEnumDeclaration;\nexports.tSEnumMember = exports.tsEnumMember = tsEnumMember;\nexports.tSExportAssignment = exports.tsExportAssignment = tsExportAssignment;\nexports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = tsExpressionWithTypeArguments;\nexports.tSExternalModuleReference = exports.tsExternalModuleReference = tsExternalModuleReference;\nexports.tSFunctionType = exports.tsFunctionType = tsFunctionType;\nexports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = tsImportEqualsDeclaration;\nexports.tSImportType = exports.tsImportType = tsImportType;\nexports.tSIndexSignature = exports.tsIndexSignature = tsIndexSignature;\nexports.tSIndexedAccessType = exports.tsIndexedAccessType = tsIndexedAccessType;\nexports.tSInferType = exports.tsInferType = tsInferType;\nexports.tSInstantiationExpression = exports.tsInstantiationExpression = tsInstantiationExpression;\nexports.tSInterfaceBody = exports.tsInterfaceBody = tsInterfaceBody;\nexports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = tsInterfaceDeclaration;\nexports.tSIntersectionType = exports.tsIntersectionType = tsIntersectionType;\nexports.tSIntrinsicKeyword = exports.tsIntrinsicKeyword = tsIntrinsicKeyword;\nexports.tSLiteralType = exports.tsLiteralType = tsLiteralType;\nexports.tSMappedType = exports.tsMappedType = tsMappedType;\nexports.tSMethodSignature = exports.tsMethodSignature = tsMethodSignature;\nexports.tSModuleBlock = exports.tsModuleBlock = tsModuleBlock;\nexports.tSModuleDeclaration = exports.tsModuleDeclaration = tsModuleDeclaration;\nexports.tSNamedTupleMember = exports.tsNamedTupleMember = tsNamedTupleMember;\nexports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = tsNamespaceExportDeclaration;\nexports.tSNeverKeyword = exports.tsNeverKeyword = tsNeverKeyword;\nexports.tSNonNullExpression = exports.tsNonNullExpression = tsNonNullExpression;\nexports.tSNullKeyword = exports.tsNullKeyword = tsNullKeyword;\nexports.tSNumberKeyword = exports.tsNumberKeyword = tsNumberKeyword;\nexports.tSObjectKeyword = exports.tsObjectKeyword = tsObjectKeyword;\nexports.tSOptionalType = exports.tsOptionalType = tsOptionalType;\nexports.tSParameterProperty = exports.tsParameterProperty = tsParameterProperty;\nexports.tSParenthesizedType = exports.tsParenthesizedType = tsParenthesizedType;\nexports.tSPropertySignature = exports.tsPropertySignature = tsPropertySignature;\nexports.tSQualifiedName = exports.tsQualifiedName = tsQualifiedName;\nexports.tSRestType = exports.tsRestType = tsRestType;\nexports.tSSatisfiesExpression = exports.tsSatisfiesExpression = tsSatisfiesExpression;\nexports.tSStringKeyword = exports.tsStringKeyword = tsStringKeyword;\nexports.tSSymbolKeyword = exports.tsSymbolKeyword = tsSymbolKeyword;\nexports.tSTemplateLiteralType = exports.tsTemplateLiteralType = tsTemplateLiteralType;\nexports.tSThisType = exports.tsThisType = tsThisType;\nexports.tSTupleType = exports.tsTupleType = tsTupleType;\nexports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = tsTypeAliasDeclaration;\nexports.tSTypeAnnotation = exports.tsTypeAnnotation = tsTypeAnnotation;\nexports.tSTypeAssertion = exports.tsTypeAssertion = tsTypeAssertion;\nexports.tSTypeLiteral = exports.tsTypeLiteral = tsTypeLiteral;\nexports.tSTypeOperator = exports.tsTypeOperator = tsTypeOperator;\nexports.tSTypeParameter = exports.tsTypeParameter = tsTypeParameter;\nexports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = tsTypeParameterDeclaration;\nexports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = tsTypeParameterInstantiation;\nexports.tSTypePredicate = exports.tsTypePredicate = tsTypePredicate;\nexports.tSTypeQuery = exports.tsTypeQuery = tsTypeQuery;\nexports.tSTypeReference = exports.tsTypeReference = tsTypeReference;\nexports.tSUndefinedKeyword = exports.tsUndefinedKeyword = tsUndefinedKeyword;\nexports.tSUnionType = exports.tsUnionType = tsUnionType;\nexports.tSUnknownKeyword = exports.tsUnknownKeyword = tsUnknownKeyword;\nexports.tSVoidKeyword = exports.tsVoidKeyword = tsVoidKeyword;\nexports.tupleExpression = tupleExpression;\nexports.tupleTypeAnnotation = tupleTypeAnnotation;\nexports.typeAlias = typeAlias;\nexports.typeAnnotation = typeAnnotation;\nexports.typeCastExpression = typeCastExpression;\nexports.typeParameter = typeParameter;\nexports.typeParameterDeclaration = typeParameterDeclaration;\nexports.typeParameterInstantiation = typeParameterInstantiation;\nexports.typeofTypeAnnotation = typeofTypeAnnotation;\nexports.unaryExpression = unaryExpression;\nexports.unionTypeAnnotation = unionTypeAnnotation;\nexports.updateExpression = updateExpression;\nexports.v8IntrinsicIdentifier = v8IntrinsicIdentifier;\nexports.variableDeclaration = variableDeclaration;\nexports.variableDeclarator = variableDeclarator;\nexports.variance = variance;\nexports.voidPattern = voidPattern;\nexports.voidTypeAnnotation = voidTypeAnnotation;\nexports.whileStatement = whileStatement;\nexports.withStatement = withStatement;\nexports.yieldExpression = yieldExpression;\nvar _validate = require(\"../../validators/validate.js\");\nvar _deprecationWarning = require(\"../../utils/deprecationWarning.js\");\nvar utils = require(\"../../definitions/utils.js\");\nconst {\n validateInternal: validate\n} = _validate;\nconst {\n NODE_FIELDS\n} = utils;\nfunction bigIntLiteral(value) {\n if (typeof value === \"bigint\") {\n value = value.toString();\n }\n const node = {\n type: \"BigIntLiteral\",\n value\n };\n const defs = NODE_FIELDS.BigIntLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction arrayExpression(elements = []) {\n const node = {\n type: \"ArrayExpression\",\n elements\n };\n const defs = NODE_FIELDS.ArrayExpression;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nfunction assignmentExpression(operator, left, right) {\n const node = {\n type: \"AssignmentExpression\",\n operator,\n left,\n right\n };\n const defs = NODE_FIELDS.AssignmentExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction binaryExpression(operator, left, right) {\n const node = {\n type: \"BinaryExpression\",\n operator,\n left,\n right\n };\n const defs = NODE_FIELDS.BinaryExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction interpreterDirective(value) {\n const node = {\n type: \"InterpreterDirective\",\n value\n };\n const defs = NODE_FIELDS.InterpreterDirective;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction directive(value) {\n const node = {\n type: \"Directive\",\n value\n };\n const defs = NODE_FIELDS.Directive;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction directiveLiteral(value) {\n const node = {\n type: \"DirectiveLiteral\",\n value\n };\n const defs = NODE_FIELDS.DirectiveLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction blockStatement(body, directives = []) {\n const node = {\n type: \"BlockStatement\",\n body,\n directives\n };\n const defs = NODE_FIELDS.BlockStatement;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.directives, node, \"directives\", directives, 1);\n return node;\n}\nfunction breakStatement(label = null) {\n const node = {\n type: \"BreakStatement\",\n label\n };\n const defs = NODE_FIELDS.BreakStatement;\n validate(defs.label, node, \"label\", label, 1);\n return node;\n}\nfunction callExpression(callee, _arguments) {\n const node = {\n type: \"CallExpression\",\n callee,\n arguments: _arguments\n };\n const defs = NODE_FIELDS.CallExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n return node;\n}\nfunction catchClause(param = null, body) {\n const node = {\n type: \"CatchClause\",\n param,\n body\n };\n const defs = NODE_FIELDS.CatchClause;\n validate(defs.param, node, \"param\", param, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction conditionalExpression(test, consequent, alternate) {\n const node = {\n type: \"ConditionalExpression\",\n test,\n consequent,\n alternate\n };\n const defs = NODE_FIELDS.ConditionalExpression;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n validate(defs.alternate, node, \"alternate\", alternate, 1);\n return node;\n}\nfunction continueStatement(label = null) {\n const node = {\n type: \"ContinueStatement\",\n label\n };\n const defs = NODE_FIELDS.ContinueStatement;\n validate(defs.label, node, \"label\", label, 1);\n return node;\n}\nfunction debuggerStatement() {\n return {\n type: \"DebuggerStatement\"\n };\n}\nfunction doWhileStatement(test, body) {\n const node = {\n type: \"DoWhileStatement\",\n test,\n body\n };\n const defs = NODE_FIELDS.DoWhileStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction emptyStatement() {\n return {\n type: \"EmptyStatement\"\n };\n}\nfunction expressionStatement(expression) {\n const node = {\n type: \"ExpressionStatement\",\n expression\n };\n const defs = NODE_FIELDS.ExpressionStatement;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction file(program, comments = null, tokens = null) {\n const node = {\n type: \"File\",\n program,\n comments,\n tokens\n };\n const defs = NODE_FIELDS.File;\n validate(defs.program, node, \"program\", program, 1);\n validate(defs.comments, node, \"comments\", comments, 1);\n validate(defs.tokens, node, \"tokens\", tokens);\n return node;\n}\nfunction forInStatement(left, right, body) {\n const node = {\n type: \"ForInStatement\",\n left,\n right,\n body\n };\n const defs = NODE_FIELDS.ForInStatement;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction forStatement(init = null, test = null, update = null, body) {\n const node = {\n type: \"ForStatement\",\n init,\n test,\n update,\n body\n };\n const defs = NODE_FIELDS.ForStatement;\n validate(defs.init, node, \"init\", init, 1);\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.update, node, \"update\", update, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction functionDeclaration(id = null, params, body, generator = false, async = false) {\n const node = {\n type: \"FunctionDeclaration\",\n id,\n params,\n body,\n generator,\n async\n };\n const defs = NODE_FIELDS.FunctionDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction functionExpression(id = null, params, body, generator = false, async = false) {\n const node = {\n type: \"FunctionExpression\",\n id,\n params,\n body,\n generator,\n async\n };\n const defs = NODE_FIELDS.FunctionExpression;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction identifier(name) {\n const node = {\n type: \"Identifier\",\n name\n };\n const defs = NODE_FIELDS.Identifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nfunction ifStatement(test, consequent, alternate = null) {\n const node = {\n type: \"IfStatement\",\n test,\n consequent,\n alternate\n };\n const defs = NODE_FIELDS.IfStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n validate(defs.alternate, node, \"alternate\", alternate, 1);\n return node;\n}\nfunction labeledStatement(label, body) {\n const node = {\n type: \"LabeledStatement\",\n label,\n body\n };\n const defs = NODE_FIELDS.LabeledStatement;\n validate(defs.label, node, \"label\", label, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction stringLiteral(value) {\n const node = {\n type: \"StringLiteral\",\n value\n };\n const defs = NODE_FIELDS.StringLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction numericLiteral(value) {\n const node = {\n type: \"NumericLiteral\",\n value\n };\n const defs = NODE_FIELDS.NumericLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction nullLiteral() {\n return {\n type: \"NullLiteral\"\n };\n}\nfunction booleanLiteral(value) {\n const node = {\n type: \"BooleanLiteral\",\n value\n };\n const defs = NODE_FIELDS.BooleanLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction regExpLiteral(pattern, flags = \"\") {\n const node = {\n type: \"RegExpLiteral\",\n pattern,\n flags\n };\n const defs = NODE_FIELDS.RegExpLiteral;\n validate(defs.pattern, node, \"pattern\", pattern);\n validate(defs.flags, node, \"flags\", flags);\n return node;\n}\nfunction logicalExpression(operator, left, right) {\n const node = {\n type: \"LogicalExpression\",\n operator,\n left,\n right\n };\n const defs = NODE_FIELDS.LogicalExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction memberExpression(object, property, computed = false, optional = null) {\n const node = {\n type: \"MemberExpression\",\n object,\n property,\n computed,\n optional\n };\n const defs = NODE_FIELDS.MemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nfunction newExpression(callee, _arguments) {\n const node = {\n type: \"NewExpression\",\n callee,\n arguments: _arguments\n };\n const defs = NODE_FIELDS.NewExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n return node;\n}\nfunction program(body, directives = [], sourceType = \"script\", interpreter = null) {\n const node = {\n type: \"Program\",\n body,\n directives,\n sourceType,\n interpreter\n };\n const defs = NODE_FIELDS.Program;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.directives, node, \"directives\", directives, 1);\n validate(defs.sourceType, node, \"sourceType\", sourceType);\n validate(defs.interpreter, node, \"interpreter\", interpreter, 1);\n return node;\n}\nfunction objectExpression(properties) {\n const node = {\n type: \"ObjectExpression\",\n properties\n };\n const defs = NODE_FIELDS.ObjectExpression;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nfunction objectMethod(kind = \"method\", key, params, body, computed = false, generator = false, async = false) {\n const node = {\n type: \"ObjectMethod\",\n kind,\n key,\n params,\n body,\n computed,\n generator,\n async\n };\n const defs = NODE_FIELDS.ObjectMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction objectProperty(key, value, computed = false, shorthand = false, decorators = null) {\n const node = {\n type: \"ObjectProperty\",\n key,\n value,\n computed,\n shorthand,\n decorators\n };\n const defs = NODE_FIELDS.ObjectProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.shorthand, node, \"shorthand\", shorthand);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nfunction restElement(argument) {\n const node = {\n type: \"RestElement\",\n argument\n };\n const defs = NODE_FIELDS.RestElement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction returnStatement(argument = null) {\n const node = {\n type: \"ReturnStatement\",\n argument\n };\n const defs = NODE_FIELDS.ReturnStatement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction sequenceExpression(expressions) {\n const node = {\n type: \"SequenceExpression\",\n expressions\n };\n const defs = NODE_FIELDS.SequenceExpression;\n validate(defs.expressions, node, \"expressions\", expressions, 1);\n return node;\n}\nfunction parenthesizedExpression(expression) {\n const node = {\n type: \"ParenthesizedExpression\",\n expression\n };\n const defs = NODE_FIELDS.ParenthesizedExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction switchCase(test = null, consequent) {\n const node = {\n type: \"SwitchCase\",\n test,\n consequent\n };\n const defs = NODE_FIELDS.SwitchCase;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.consequent, node, \"consequent\", consequent, 1);\n return node;\n}\nfunction switchStatement(discriminant, cases) {\n const node = {\n type: \"SwitchStatement\",\n discriminant,\n cases\n };\n const defs = NODE_FIELDS.SwitchStatement;\n validate(defs.discriminant, node, \"discriminant\", discriminant, 1);\n validate(defs.cases, node, \"cases\", cases, 1);\n return node;\n}\nfunction thisExpression() {\n return {\n type: \"ThisExpression\"\n };\n}\nfunction throwStatement(argument) {\n const node = {\n type: \"ThrowStatement\",\n argument\n };\n const defs = NODE_FIELDS.ThrowStatement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction tryStatement(block, handler = null, finalizer = null) {\n const node = {\n type: \"TryStatement\",\n block,\n handler,\n finalizer\n };\n const defs = NODE_FIELDS.TryStatement;\n validate(defs.block, node, \"block\", block, 1);\n validate(defs.handler, node, \"handler\", handler, 1);\n validate(defs.finalizer, node, \"finalizer\", finalizer, 1);\n return node;\n}\nfunction unaryExpression(operator, argument, prefix = true) {\n const node = {\n type: \"UnaryExpression\",\n operator,\n argument,\n prefix\n };\n const defs = NODE_FIELDS.UnaryExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.prefix, node, \"prefix\", prefix);\n return node;\n}\nfunction updateExpression(operator, argument, prefix = false) {\n const node = {\n type: \"UpdateExpression\",\n operator,\n argument,\n prefix\n };\n const defs = NODE_FIELDS.UpdateExpression;\n validate(defs.operator, node, \"operator\", operator);\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.prefix, node, \"prefix\", prefix);\n return node;\n}\nfunction variableDeclaration(kind, declarations) {\n const node = {\n type: \"VariableDeclaration\",\n kind,\n declarations\n };\n const defs = NODE_FIELDS.VariableDeclaration;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.declarations, node, \"declarations\", declarations, 1);\n return node;\n}\nfunction variableDeclarator(id, init = null) {\n const node = {\n type: \"VariableDeclarator\",\n id,\n init\n };\n const defs = NODE_FIELDS.VariableDeclarator;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nfunction whileStatement(test, body) {\n const node = {\n type: \"WhileStatement\",\n test,\n body\n };\n const defs = NODE_FIELDS.WhileStatement;\n validate(defs.test, node, \"test\", test, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction withStatement(object, body) {\n const node = {\n type: \"WithStatement\",\n object,\n body\n };\n const defs = NODE_FIELDS.WithStatement;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction assignmentPattern(left, right) {\n const node = {\n type: \"AssignmentPattern\",\n left,\n right\n };\n const defs = NODE_FIELDS.AssignmentPattern;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction arrayPattern(elements) {\n const node = {\n type: \"ArrayPattern\",\n elements\n };\n const defs = NODE_FIELDS.ArrayPattern;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nfunction arrowFunctionExpression(params, body, async = false) {\n const node = {\n type: \"ArrowFunctionExpression\",\n params,\n body,\n async,\n expression: null\n };\n const defs = NODE_FIELDS.ArrowFunctionExpression;\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction classBody(body) {\n const node = {\n type: \"ClassBody\",\n body\n };\n const defs = NODE_FIELDS.ClassBody;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction classExpression(id = null, superClass = null, body, decorators = null) {\n const node = {\n type: \"ClassExpression\",\n id,\n superClass,\n body,\n decorators\n };\n const defs = NODE_FIELDS.ClassExpression;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.superClass, node, \"superClass\", superClass, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nfunction classDeclaration(id = null, superClass = null, body, decorators = null) {\n const node = {\n type: \"ClassDeclaration\",\n id,\n superClass,\n body,\n decorators\n };\n const defs = NODE_FIELDS.ClassDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.superClass, node, \"superClass\", superClass, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n return node;\n}\nfunction exportAllDeclaration(source, attributes = null) {\n const node = {\n type: \"ExportAllDeclaration\",\n source,\n attributes\n };\n const defs = NODE_FIELDS.ExportAllDeclaration;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction exportDefaultDeclaration(declaration) {\n const node = {\n type: \"ExportDefaultDeclaration\",\n declaration\n };\n const defs = NODE_FIELDS.ExportDefaultDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n return node;\n}\nfunction exportNamedDeclaration(declaration = null, specifiers = [], source = null, attributes = null) {\n const node = {\n type: \"ExportNamedDeclaration\",\n declaration,\n specifiers,\n source,\n attributes\n };\n const defs = NODE_FIELDS.ExportNamedDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction exportSpecifier(local, exported) {\n const node = {\n type: \"ExportSpecifier\",\n local,\n exported\n };\n const defs = NODE_FIELDS.ExportSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nfunction forOfStatement(left, right, body, _await = false) {\n const node = {\n type: \"ForOfStatement\",\n left,\n right,\n body,\n await: _await\n };\n const defs = NODE_FIELDS.ForOfStatement;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.await, node, \"await\", _await);\n return node;\n}\nfunction importDeclaration(specifiers, source, attributes = null) {\n const node = {\n type: \"ImportDeclaration\",\n specifiers,\n source,\n attributes\n };\n const defs = NODE_FIELDS.ImportDeclaration;\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction importDefaultSpecifier(local) {\n const node = {\n type: \"ImportDefaultSpecifier\",\n local\n };\n const defs = NODE_FIELDS.ImportDefaultSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n return node;\n}\nfunction importNamespaceSpecifier(local) {\n const node = {\n type: \"ImportNamespaceSpecifier\",\n local\n };\n const defs = NODE_FIELDS.ImportNamespaceSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n return node;\n}\nfunction importSpecifier(local, imported) {\n const node = {\n type: \"ImportSpecifier\",\n local,\n imported\n };\n const defs = NODE_FIELDS.ImportSpecifier;\n validate(defs.local, node, \"local\", local, 1);\n validate(defs.imported, node, \"imported\", imported, 1);\n return node;\n}\nfunction importExpression(source, options = null) {\n const node = {\n type: \"ImportExpression\",\n source,\n options\n };\n const defs = NODE_FIELDS.ImportExpression;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.options, node, \"options\", options, 1);\n return node;\n}\nfunction metaProperty(meta, property) {\n const node = {\n type: \"MetaProperty\",\n meta,\n property\n };\n const defs = NODE_FIELDS.MetaProperty;\n validate(defs.meta, node, \"meta\", meta, 1);\n validate(defs.property, node, \"property\", property, 1);\n return node;\n}\nfunction classMethod(kind = \"method\", key, params, body, computed = false, _static = false, generator = false, async = false) {\n const node = {\n type: \"ClassMethod\",\n kind,\n key,\n params,\n body,\n computed,\n static: _static,\n generator,\n async\n };\n const defs = NODE_FIELDS.ClassMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n validate(defs.generator, node, \"generator\", generator);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction objectPattern(properties) {\n const node = {\n type: \"ObjectPattern\",\n properties\n };\n const defs = NODE_FIELDS.ObjectPattern;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nfunction spreadElement(argument) {\n const node = {\n type: \"SpreadElement\",\n argument\n };\n const defs = NODE_FIELDS.SpreadElement;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction _super() {\n return {\n type: \"Super\"\n };\n}\nfunction taggedTemplateExpression(tag, quasi) {\n const node = {\n type: \"TaggedTemplateExpression\",\n tag,\n quasi\n };\n const defs = NODE_FIELDS.TaggedTemplateExpression;\n validate(defs.tag, node, \"tag\", tag, 1);\n validate(defs.quasi, node, \"quasi\", quasi, 1);\n return node;\n}\nfunction templateElement(value, tail = false) {\n const node = {\n type: \"TemplateElement\",\n value,\n tail\n };\n const defs = NODE_FIELDS.TemplateElement;\n validate(defs.value, node, \"value\", value);\n validate(defs.tail, node, \"tail\", tail);\n return node;\n}\nfunction templateLiteral(quasis, expressions) {\n const node = {\n type: \"TemplateLiteral\",\n quasis,\n expressions\n };\n const defs = NODE_FIELDS.TemplateLiteral;\n validate(defs.quasis, node, \"quasis\", quasis, 1);\n validate(defs.expressions, node, \"expressions\", expressions, 1);\n return node;\n}\nfunction yieldExpression(argument = null, delegate = false) {\n const node = {\n type: \"YieldExpression\",\n argument,\n delegate\n };\n const defs = NODE_FIELDS.YieldExpression;\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.delegate, node, \"delegate\", delegate);\n return node;\n}\nfunction awaitExpression(argument) {\n const node = {\n type: \"AwaitExpression\",\n argument\n };\n const defs = NODE_FIELDS.AwaitExpression;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction _import() {\n return {\n type: \"Import\"\n };\n}\nfunction exportNamespaceSpecifier(exported) {\n const node = {\n type: \"ExportNamespaceSpecifier\",\n exported\n };\n const defs = NODE_FIELDS.ExportNamespaceSpecifier;\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nfunction optionalMemberExpression(object, property, computed = false, optional) {\n const node = {\n type: \"OptionalMemberExpression\",\n object,\n property,\n computed,\n optional\n };\n const defs = NODE_FIELDS.OptionalMemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nfunction optionalCallExpression(callee, _arguments, optional) {\n const node = {\n type: \"OptionalCallExpression\",\n callee,\n arguments: _arguments,\n optional\n };\n const defs = NODE_FIELDS.OptionalCallExpression;\n validate(defs.callee, node, \"callee\", callee, 1);\n validate(defs.arguments, node, \"arguments\", _arguments, 1);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nfunction classProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) {\n const node = {\n type: \"ClassProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static\n };\n const defs = NODE_FIELDS.ClassProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nfunction classAccessorProperty(key, value = null, typeAnnotation = null, decorators = null, computed = false, _static = false) {\n const node = {\n type: \"ClassAccessorProperty\",\n key,\n value,\n typeAnnotation,\n decorators,\n computed,\n static: _static\n };\n const defs = NODE_FIELDS.ClassAccessorProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.computed, node, \"computed\", computed);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nfunction classPrivateProperty(key, value = null, decorators = null, _static = false) {\n const node = {\n type: \"ClassPrivateProperty\",\n key,\n value,\n decorators,\n static: _static\n };\n const defs = NODE_FIELDS.ClassPrivateProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nfunction classPrivateMethod(kind = \"method\", key, params, body, _static = false) {\n const node = {\n type: \"ClassPrivateMethod\",\n kind,\n key,\n params,\n body,\n static: _static\n };\n const defs = NODE_FIELDS.ClassPrivateMethod;\n validate(defs.kind, node, \"kind\", kind);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.static, node, \"static\", _static);\n return node;\n}\nfunction privateName(id) {\n const node = {\n type: \"PrivateName\",\n id\n };\n const defs = NODE_FIELDS.PrivateName;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction staticBlock(body) {\n const node = {\n type: \"StaticBlock\",\n body\n };\n const defs = NODE_FIELDS.StaticBlock;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction importAttribute(key, value) {\n const node = {\n type: \"ImportAttribute\",\n key,\n value\n };\n const defs = NODE_FIELDS.ImportAttribute;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction anyTypeAnnotation() {\n return {\n type: \"AnyTypeAnnotation\"\n };\n}\nfunction arrayTypeAnnotation(elementType) {\n const node = {\n type: \"ArrayTypeAnnotation\",\n elementType\n };\n const defs = NODE_FIELDS.ArrayTypeAnnotation;\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n return node;\n}\nfunction booleanTypeAnnotation() {\n return {\n type: \"BooleanTypeAnnotation\"\n };\n}\nfunction booleanLiteralTypeAnnotation(value) {\n const node = {\n type: \"BooleanLiteralTypeAnnotation\",\n value\n };\n const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction nullLiteralTypeAnnotation() {\n return {\n type: \"NullLiteralTypeAnnotation\"\n };\n}\nfunction classImplements(id, typeParameters = null) {\n const node = {\n type: \"ClassImplements\",\n id,\n typeParameters\n };\n const defs = NODE_FIELDS.ClassImplements;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction declareClass(id, typeParameters = null, _extends = null, body) {\n const node = {\n type: \"DeclareClass\",\n id,\n typeParameters,\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.DeclareClass;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction declareFunction(id) {\n const node = {\n type: \"DeclareFunction\",\n id\n };\n const defs = NODE_FIELDS.DeclareFunction;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction declareInterface(id, typeParameters = null, _extends = null, body) {\n const node = {\n type: \"DeclareInterface\",\n id,\n typeParameters,\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.DeclareInterface;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction declareModule(id, body, kind = null) {\n const node = {\n type: \"DeclareModule\",\n id,\n body,\n kind\n };\n const defs = NODE_FIELDS.DeclareModule;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.kind, node, \"kind\", kind);\n return node;\n}\nfunction declareModuleExports(typeAnnotation) {\n const node = {\n type: \"DeclareModuleExports\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.DeclareModuleExports;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction declareTypeAlias(id, typeParameters = null, right) {\n const node = {\n type: \"DeclareTypeAlias\",\n id,\n typeParameters,\n right\n };\n const defs = NODE_FIELDS.DeclareTypeAlias;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction declareOpaqueType(id, typeParameters = null, supertype = null) {\n const node = {\n type: \"DeclareOpaqueType\",\n id,\n typeParameters,\n supertype\n };\n const defs = NODE_FIELDS.DeclareOpaqueType;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.supertype, node, \"supertype\", supertype, 1);\n return node;\n}\nfunction declareVariable(id) {\n const node = {\n type: \"DeclareVariable\",\n id\n };\n const defs = NODE_FIELDS.DeclareVariable;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction declareExportDeclaration(declaration = null, specifiers = null, source = null, attributes = null) {\n const node = {\n type: \"DeclareExportDeclaration\",\n declaration,\n specifiers,\n source,\n attributes\n };\n const defs = NODE_FIELDS.DeclareExportDeclaration;\n validate(defs.declaration, node, \"declaration\", declaration, 1);\n validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction declareExportAllDeclaration(source, attributes = null) {\n const node = {\n type: \"DeclareExportAllDeclaration\",\n source,\n attributes\n };\n const defs = NODE_FIELDS.DeclareExportAllDeclaration;\n validate(defs.source, node, \"source\", source, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n return node;\n}\nfunction declaredPredicate(value) {\n const node = {\n type: \"DeclaredPredicate\",\n value\n };\n const defs = NODE_FIELDS.DeclaredPredicate;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction existsTypeAnnotation() {\n return {\n type: \"ExistsTypeAnnotation\"\n };\n}\nfunction functionTypeAnnotation(typeParameters = null, params, rest = null, returnType) {\n const node = {\n type: \"FunctionTypeAnnotation\",\n typeParameters,\n params,\n rest,\n returnType\n };\n const defs = NODE_FIELDS.FunctionTypeAnnotation;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.rest, node, \"rest\", rest, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction functionTypeParam(name = null, typeAnnotation) {\n const node = {\n type: \"FunctionTypeParam\",\n name,\n typeAnnotation\n };\n const defs = NODE_FIELDS.FunctionTypeParam;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction genericTypeAnnotation(id, typeParameters = null) {\n const node = {\n type: \"GenericTypeAnnotation\",\n id,\n typeParameters\n };\n const defs = NODE_FIELDS.GenericTypeAnnotation;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction inferredPredicate() {\n return {\n type: \"InferredPredicate\"\n };\n}\nfunction interfaceExtends(id, typeParameters = null) {\n const node = {\n type: \"InterfaceExtends\",\n id,\n typeParameters\n };\n const defs = NODE_FIELDS.InterfaceExtends;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction interfaceDeclaration(id, typeParameters = null, _extends = null, body) {\n const node = {\n type: \"InterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.InterfaceDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction interfaceTypeAnnotation(_extends = null, body) {\n const node = {\n type: \"InterfaceTypeAnnotation\",\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.InterfaceTypeAnnotation;\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction intersectionTypeAnnotation(types) {\n const node = {\n type: \"IntersectionTypeAnnotation\",\n types\n };\n const defs = NODE_FIELDS.IntersectionTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction mixedTypeAnnotation() {\n return {\n type: \"MixedTypeAnnotation\"\n };\n}\nfunction emptyTypeAnnotation() {\n return {\n type: \"EmptyTypeAnnotation\"\n };\n}\nfunction nullableTypeAnnotation(typeAnnotation) {\n const node = {\n type: \"NullableTypeAnnotation\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.NullableTypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction numberLiteralTypeAnnotation(value) {\n const node = {\n type: \"NumberLiteralTypeAnnotation\",\n value\n };\n const defs = NODE_FIELDS.NumberLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction numberTypeAnnotation() {\n return {\n type: \"NumberTypeAnnotation\"\n };\n}\nfunction objectTypeAnnotation(properties, indexers = [], callProperties = [], internalSlots = [], exact = false) {\n const node = {\n type: \"ObjectTypeAnnotation\",\n properties,\n indexers,\n callProperties,\n internalSlots,\n exact\n };\n const defs = NODE_FIELDS.ObjectTypeAnnotation;\n validate(defs.properties, node, \"properties\", properties, 1);\n validate(defs.indexers, node, \"indexers\", indexers, 1);\n validate(defs.callProperties, node, \"callProperties\", callProperties, 1);\n validate(defs.internalSlots, node, \"internalSlots\", internalSlots, 1);\n validate(defs.exact, node, \"exact\", exact);\n return node;\n}\nfunction objectTypeInternalSlot(id, value, optional, _static, method) {\n const node = {\n type: \"ObjectTypeInternalSlot\",\n id,\n value,\n optional,\n static: _static,\n method\n };\n const defs = NODE_FIELDS.ObjectTypeInternalSlot;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.optional, node, \"optional\", optional);\n validate(defs.static, node, \"static\", _static);\n validate(defs.method, node, \"method\", method);\n return node;\n}\nfunction objectTypeCallProperty(value) {\n const node = {\n type: \"ObjectTypeCallProperty\",\n value,\n static: null\n };\n const defs = NODE_FIELDS.ObjectTypeCallProperty;\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction objectTypeIndexer(id = null, key, value, variance = null) {\n const node = {\n type: \"ObjectTypeIndexer\",\n id,\n key,\n value,\n variance,\n static: null\n };\n const defs = NODE_FIELDS.ObjectTypeIndexer;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nfunction objectTypeProperty(key, value, variance = null) {\n const node = {\n type: \"ObjectTypeProperty\",\n key,\n value,\n variance,\n kind: null,\n method: null,\n optional: null,\n proto: null,\n static: null\n };\n const defs = NODE_FIELDS.ObjectTypeProperty;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.value, node, \"value\", value, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nfunction objectTypeSpreadProperty(argument) {\n const node = {\n type: \"ObjectTypeSpreadProperty\",\n argument\n };\n const defs = NODE_FIELDS.ObjectTypeSpreadProperty;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction opaqueType(id, typeParameters = null, supertype = null, impltype) {\n const node = {\n type: \"OpaqueType\",\n id,\n typeParameters,\n supertype,\n impltype\n };\n const defs = NODE_FIELDS.OpaqueType;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.supertype, node, \"supertype\", supertype, 1);\n validate(defs.impltype, node, \"impltype\", impltype, 1);\n return node;\n}\nfunction qualifiedTypeIdentifier(id, qualification) {\n const node = {\n type: \"QualifiedTypeIdentifier\",\n id,\n qualification\n };\n const defs = NODE_FIELDS.QualifiedTypeIdentifier;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.qualification, node, \"qualification\", qualification, 1);\n return node;\n}\nfunction stringLiteralTypeAnnotation(value) {\n const node = {\n type: \"StringLiteralTypeAnnotation\",\n value\n };\n const defs = NODE_FIELDS.StringLiteralTypeAnnotation;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction stringTypeAnnotation() {\n return {\n type: \"StringTypeAnnotation\"\n };\n}\nfunction symbolTypeAnnotation() {\n return {\n type: \"SymbolTypeAnnotation\"\n };\n}\nfunction thisTypeAnnotation() {\n return {\n type: \"ThisTypeAnnotation\"\n };\n}\nfunction tupleTypeAnnotation(types) {\n const node = {\n type: \"TupleTypeAnnotation\",\n types\n };\n const defs = NODE_FIELDS.TupleTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction typeofTypeAnnotation(argument) {\n const node = {\n type: \"TypeofTypeAnnotation\",\n argument\n };\n const defs = NODE_FIELDS.TypeofTypeAnnotation;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction typeAlias(id, typeParameters = null, right) {\n const node = {\n type: \"TypeAlias\",\n id,\n typeParameters,\n right\n };\n const defs = NODE_FIELDS.TypeAlias;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction typeAnnotation(typeAnnotation) {\n const node = {\n type: \"TypeAnnotation\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction typeCastExpression(expression, typeAnnotation) {\n const node = {\n type: \"TypeCastExpression\",\n expression,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TypeCastExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction typeParameter(bound = null, _default = null, variance = null) {\n const node = {\n type: \"TypeParameter\",\n bound,\n default: _default,\n variance,\n name: null\n };\n const defs = NODE_FIELDS.TypeParameter;\n validate(defs.bound, node, \"bound\", bound, 1);\n validate(defs.default, node, \"default\", _default, 1);\n validate(defs.variance, node, \"variance\", variance, 1);\n return node;\n}\nfunction typeParameterDeclaration(params) {\n const node = {\n type: \"TypeParameterDeclaration\",\n params\n };\n const defs = NODE_FIELDS.TypeParameterDeclaration;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nfunction typeParameterInstantiation(params) {\n const node = {\n type: \"TypeParameterInstantiation\",\n params\n };\n const defs = NODE_FIELDS.TypeParameterInstantiation;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nfunction unionTypeAnnotation(types) {\n const node = {\n type: \"UnionTypeAnnotation\",\n types\n };\n const defs = NODE_FIELDS.UnionTypeAnnotation;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction variance(kind) {\n const node = {\n type: \"Variance\",\n kind\n };\n const defs = NODE_FIELDS.Variance;\n validate(defs.kind, node, \"kind\", kind);\n return node;\n}\nfunction voidTypeAnnotation() {\n return {\n type: \"VoidTypeAnnotation\"\n };\n}\nfunction enumDeclaration(id, body) {\n const node = {\n type: \"EnumDeclaration\",\n id,\n body\n };\n const defs = NODE_FIELDS.EnumDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction enumBooleanBody(members) {\n const node = {\n type: \"EnumBooleanBody\",\n members,\n explicitType: null,\n hasUnknownMembers: null\n };\n const defs = NODE_FIELDS.EnumBooleanBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction enumNumberBody(members) {\n const node = {\n type: \"EnumNumberBody\",\n members,\n explicitType: null,\n hasUnknownMembers: null\n };\n const defs = NODE_FIELDS.EnumNumberBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction enumStringBody(members) {\n const node = {\n type: \"EnumStringBody\",\n members,\n explicitType: null,\n hasUnknownMembers: null\n };\n const defs = NODE_FIELDS.EnumStringBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction enumSymbolBody(members) {\n const node = {\n type: \"EnumSymbolBody\",\n members,\n hasUnknownMembers: null\n };\n const defs = NODE_FIELDS.EnumSymbolBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction enumBooleanMember(id) {\n const node = {\n type: \"EnumBooleanMember\",\n id,\n init: null\n };\n const defs = NODE_FIELDS.EnumBooleanMember;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction enumNumberMember(id, init) {\n const node = {\n type: \"EnumNumberMember\",\n id,\n init\n };\n const defs = NODE_FIELDS.EnumNumberMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nfunction enumStringMember(id, init) {\n const node = {\n type: \"EnumStringMember\",\n id,\n init\n };\n const defs = NODE_FIELDS.EnumStringMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.init, node, \"init\", init, 1);\n return node;\n}\nfunction enumDefaultedMember(id) {\n const node = {\n type: \"EnumDefaultedMember\",\n id\n };\n const defs = NODE_FIELDS.EnumDefaultedMember;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction indexedAccessType(objectType, indexType) {\n const node = {\n type: \"IndexedAccessType\",\n objectType,\n indexType\n };\n const defs = NODE_FIELDS.IndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nfunction optionalIndexedAccessType(objectType, indexType) {\n const node = {\n type: \"OptionalIndexedAccessType\",\n objectType,\n indexType,\n optional: null\n };\n const defs = NODE_FIELDS.OptionalIndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nfunction jsxAttribute(name, value = null) {\n const node = {\n type: \"JSXAttribute\",\n name,\n value\n };\n const defs = NODE_FIELDS.JSXAttribute;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.value, node, \"value\", value, 1);\n return node;\n}\nfunction jsxClosingElement(name) {\n const node = {\n type: \"JSXClosingElement\",\n name\n };\n const defs = NODE_FIELDS.JSXClosingElement;\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nfunction jsxElement(openingElement, closingElement = null, children, selfClosing = null) {\n const node = {\n type: \"JSXElement\",\n openingElement,\n closingElement,\n children,\n selfClosing\n };\n const defs = NODE_FIELDS.JSXElement;\n validate(defs.openingElement, node, \"openingElement\", openingElement, 1);\n validate(defs.closingElement, node, \"closingElement\", closingElement, 1);\n validate(defs.children, node, \"children\", children, 1);\n validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n return node;\n}\nfunction jsxEmptyExpression() {\n return {\n type: \"JSXEmptyExpression\"\n };\n}\nfunction jsxExpressionContainer(expression) {\n const node = {\n type: \"JSXExpressionContainer\",\n expression\n };\n const defs = NODE_FIELDS.JSXExpressionContainer;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction jsxSpreadChild(expression) {\n const node = {\n type: \"JSXSpreadChild\",\n expression\n };\n const defs = NODE_FIELDS.JSXSpreadChild;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction jsxIdentifier(name) {\n const node = {\n type: \"JSXIdentifier\",\n name\n };\n const defs = NODE_FIELDS.JSXIdentifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nfunction jsxMemberExpression(object, property) {\n const node = {\n type: \"JSXMemberExpression\",\n object,\n property\n };\n const defs = NODE_FIELDS.JSXMemberExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.property, node, \"property\", property, 1);\n return node;\n}\nfunction jsxNamespacedName(namespace, name) {\n const node = {\n type: \"JSXNamespacedName\",\n namespace,\n name\n };\n const defs = NODE_FIELDS.JSXNamespacedName;\n validate(defs.namespace, node, \"namespace\", namespace, 1);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nfunction jsxOpeningElement(name, attributes, selfClosing = false) {\n const node = {\n type: \"JSXOpeningElement\",\n name,\n attributes,\n selfClosing\n };\n const defs = NODE_FIELDS.JSXOpeningElement;\n validate(defs.name, node, \"name\", name, 1);\n validate(defs.attributes, node, \"attributes\", attributes, 1);\n validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n return node;\n}\nfunction jsxSpreadAttribute(argument) {\n const node = {\n type: \"JSXSpreadAttribute\",\n argument\n };\n const defs = NODE_FIELDS.JSXSpreadAttribute;\n validate(defs.argument, node, \"argument\", argument, 1);\n return node;\n}\nfunction jsxText(value) {\n const node = {\n type: \"JSXText\",\n value\n };\n const defs = NODE_FIELDS.JSXText;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction jsxFragment(openingFragment, closingFragment, children) {\n const node = {\n type: \"JSXFragment\",\n openingFragment,\n closingFragment,\n children\n };\n const defs = NODE_FIELDS.JSXFragment;\n validate(defs.openingFragment, node, \"openingFragment\", openingFragment, 1);\n validate(defs.closingFragment, node, \"closingFragment\", closingFragment, 1);\n validate(defs.children, node, \"children\", children, 1);\n return node;\n}\nfunction jsxOpeningFragment() {\n return {\n type: \"JSXOpeningFragment\"\n };\n}\nfunction jsxClosingFragment() {\n return {\n type: \"JSXClosingFragment\"\n };\n}\nfunction noop() {\n return {\n type: \"Noop\"\n };\n}\nfunction placeholder(expectedNode, name) {\n const node = {\n type: \"Placeholder\",\n expectedNode,\n name\n };\n const defs = NODE_FIELDS.Placeholder;\n validate(defs.expectedNode, node, \"expectedNode\", expectedNode);\n validate(defs.name, node, \"name\", name, 1);\n return node;\n}\nfunction v8IntrinsicIdentifier(name) {\n const node = {\n type: \"V8IntrinsicIdentifier\",\n name\n };\n const defs = NODE_FIELDS.V8IntrinsicIdentifier;\n validate(defs.name, node, \"name\", name);\n return node;\n}\nfunction argumentPlaceholder() {\n return {\n type: \"ArgumentPlaceholder\"\n };\n}\nfunction bindExpression(object, callee) {\n const node = {\n type: \"BindExpression\",\n object,\n callee\n };\n const defs = NODE_FIELDS.BindExpression;\n validate(defs.object, node, \"object\", object, 1);\n validate(defs.callee, node, \"callee\", callee, 1);\n return node;\n}\nfunction decorator(expression) {\n const node = {\n type: \"Decorator\",\n expression\n };\n const defs = NODE_FIELDS.Decorator;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction doExpression(body, async = false) {\n const node = {\n type: \"DoExpression\",\n body,\n async\n };\n const defs = NODE_FIELDS.DoExpression;\n validate(defs.body, node, \"body\", body, 1);\n validate(defs.async, node, \"async\", async);\n return node;\n}\nfunction exportDefaultSpecifier(exported) {\n const node = {\n type: \"ExportDefaultSpecifier\",\n exported\n };\n const defs = NODE_FIELDS.ExportDefaultSpecifier;\n validate(defs.exported, node, \"exported\", exported, 1);\n return node;\n}\nfunction recordExpression(properties) {\n const node = {\n type: \"RecordExpression\",\n properties\n };\n const defs = NODE_FIELDS.RecordExpression;\n validate(defs.properties, node, \"properties\", properties, 1);\n return node;\n}\nfunction tupleExpression(elements = []) {\n const node = {\n type: \"TupleExpression\",\n elements\n };\n const defs = NODE_FIELDS.TupleExpression;\n validate(defs.elements, node, \"elements\", elements, 1);\n return node;\n}\nfunction decimalLiteral(value) {\n const node = {\n type: \"DecimalLiteral\",\n value\n };\n const defs = NODE_FIELDS.DecimalLiteral;\n validate(defs.value, node, \"value\", value);\n return node;\n}\nfunction moduleExpression(body) {\n const node = {\n type: \"ModuleExpression\",\n body\n };\n const defs = NODE_FIELDS.ModuleExpression;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction topicReference() {\n return {\n type: \"TopicReference\"\n };\n}\nfunction pipelineTopicExpression(expression) {\n const node = {\n type: \"PipelineTopicExpression\",\n expression\n };\n const defs = NODE_FIELDS.PipelineTopicExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction pipelineBareFunction(callee) {\n const node = {\n type: \"PipelineBareFunction\",\n callee\n };\n const defs = NODE_FIELDS.PipelineBareFunction;\n validate(defs.callee, node, \"callee\", callee, 1);\n return node;\n}\nfunction pipelinePrimaryTopicReference() {\n return {\n type: \"PipelinePrimaryTopicReference\"\n };\n}\nfunction voidPattern() {\n return {\n type: \"VoidPattern\"\n };\n}\nfunction tsParameterProperty(parameter) {\n const node = {\n type: \"TSParameterProperty\",\n parameter\n };\n const defs = NODE_FIELDS.TSParameterProperty;\n validate(defs.parameter, node, \"parameter\", parameter, 1);\n return node;\n}\nfunction tsDeclareFunction(id = null, typeParameters = null, params, returnType = null) {\n const node = {\n type: \"TSDeclareFunction\",\n id,\n typeParameters,\n params,\n returnType\n };\n const defs = NODE_FIELDS.TSDeclareFunction;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction tsDeclareMethod(decorators = null, key, typeParameters = null, params, returnType = null) {\n const node = {\n type: \"TSDeclareMethod\",\n decorators,\n key,\n typeParameters,\n params,\n returnType\n };\n const defs = NODE_FIELDS.TSDeclareMethod;\n validate(defs.decorators, node, \"decorators\", decorators, 1);\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.params, node, \"params\", params, 1);\n validate(defs.returnType, node, \"returnType\", returnType, 1);\n return node;\n}\nfunction tsQualifiedName(left, right) {\n const node = {\n type: \"TSQualifiedName\",\n left,\n right\n };\n const defs = NODE_FIELDS.TSQualifiedName;\n validate(defs.left, node, \"left\", left, 1);\n validate(defs.right, node, \"right\", right, 1);\n return node;\n}\nfunction tsCallSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) {\n const node = {\n type: \"TSCallSignatureDeclaration\",\n typeParameters,\n parameters,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSCallSignatureDeclaration;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsConstructSignatureDeclaration(typeParameters = null, parameters, typeAnnotation = null) {\n const node = {\n type: \"TSConstructSignatureDeclaration\",\n typeParameters,\n parameters,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSConstructSignatureDeclaration;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsPropertySignature(key, typeAnnotation = null) {\n const node = {\n type: \"TSPropertySignature\",\n key,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSPropertySignature;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsMethodSignature(key, typeParameters = null, parameters, typeAnnotation = null) {\n const node = {\n type: \"TSMethodSignature\",\n key,\n typeParameters,\n parameters,\n typeAnnotation,\n kind: null\n };\n const defs = NODE_FIELDS.TSMethodSignature;\n validate(defs.key, node, \"key\", key, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsIndexSignature(parameters, typeAnnotation = null) {\n const node = {\n type: \"TSIndexSignature\",\n parameters,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSIndexSignature;\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsAnyKeyword() {\n return {\n type: \"TSAnyKeyword\"\n };\n}\nfunction tsBooleanKeyword() {\n return {\n type: \"TSBooleanKeyword\"\n };\n}\nfunction tsBigIntKeyword() {\n return {\n type: \"TSBigIntKeyword\"\n };\n}\nfunction tsIntrinsicKeyword() {\n return {\n type: \"TSIntrinsicKeyword\"\n };\n}\nfunction tsNeverKeyword() {\n return {\n type: \"TSNeverKeyword\"\n };\n}\nfunction tsNullKeyword() {\n return {\n type: \"TSNullKeyword\"\n };\n}\nfunction tsNumberKeyword() {\n return {\n type: \"TSNumberKeyword\"\n };\n}\nfunction tsObjectKeyword() {\n return {\n type: \"TSObjectKeyword\"\n };\n}\nfunction tsStringKeyword() {\n return {\n type: \"TSStringKeyword\"\n };\n}\nfunction tsSymbolKeyword() {\n return {\n type: \"TSSymbolKeyword\"\n };\n}\nfunction tsUndefinedKeyword() {\n return {\n type: \"TSUndefinedKeyword\"\n };\n}\nfunction tsUnknownKeyword() {\n return {\n type: \"TSUnknownKeyword\"\n };\n}\nfunction tsVoidKeyword() {\n return {\n type: \"TSVoidKeyword\"\n };\n}\nfunction tsThisType() {\n return {\n type: \"TSThisType\"\n };\n}\nfunction tsFunctionType(typeParameters = null, parameters, typeAnnotation = null) {\n const node = {\n type: \"TSFunctionType\",\n typeParameters,\n parameters,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSFunctionType;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsConstructorType(typeParameters = null, parameters, typeAnnotation = null) {\n const node = {\n type: \"TSConstructorType\",\n typeParameters,\n parameters,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSConstructorType;\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.parameters, node, \"parameters\", parameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsTypeReference(typeName, typeParameters = null) {\n const node = {\n type: \"TSTypeReference\",\n typeName,\n typeParameters\n };\n const defs = NODE_FIELDS.TSTypeReference;\n validate(defs.typeName, node, \"typeName\", typeName, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction tsTypePredicate(parameterName, typeAnnotation = null, asserts = null) {\n const node = {\n type: \"TSTypePredicate\",\n parameterName,\n typeAnnotation,\n asserts\n };\n const defs = NODE_FIELDS.TSTypePredicate;\n validate(defs.parameterName, node, \"parameterName\", parameterName, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.asserts, node, \"asserts\", asserts);\n return node;\n}\nfunction tsTypeQuery(exprName, typeParameters = null) {\n const node = {\n type: \"TSTypeQuery\",\n exprName,\n typeParameters\n };\n const defs = NODE_FIELDS.TSTypeQuery;\n validate(defs.exprName, node, \"exprName\", exprName, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction tsTypeLiteral(members) {\n const node = {\n type: \"TSTypeLiteral\",\n members\n };\n const defs = NODE_FIELDS.TSTypeLiteral;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction tsArrayType(elementType) {\n const node = {\n type: \"TSArrayType\",\n elementType\n };\n const defs = NODE_FIELDS.TSArrayType;\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n return node;\n}\nfunction tsTupleType(elementTypes) {\n const node = {\n type: \"TSTupleType\",\n elementTypes\n };\n const defs = NODE_FIELDS.TSTupleType;\n validate(defs.elementTypes, node, \"elementTypes\", elementTypes, 1);\n return node;\n}\nfunction tsOptionalType(typeAnnotation) {\n const node = {\n type: \"TSOptionalType\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSOptionalType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsRestType(typeAnnotation) {\n const node = {\n type: \"TSRestType\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSRestType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsNamedTupleMember(label, elementType, optional = false) {\n const node = {\n type: \"TSNamedTupleMember\",\n label,\n elementType,\n optional\n };\n const defs = NODE_FIELDS.TSNamedTupleMember;\n validate(defs.label, node, \"label\", label, 1);\n validate(defs.elementType, node, \"elementType\", elementType, 1);\n validate(defs.optional, node, \"optional\", optional);\n return node;\n}\nfunction tsUnionType(types) {\n const node = {\n type: \"TSUnionType\",\n types\n };\n const defs = NODE_FIELDS.TSUnionType;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction tsIntersectionType(types) {\n const node = {\n type: \"TSIntersectionType\",\n types\n };\n const defs = NODE_FIELDS.TSIntersectionType;\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction tsConditionalType(checkType, extendsType, trueType, falseType) {\n const node = {\n type: \"TSConditionalType\",\n checkType,\n extendsType,\n trueType,\n falseType\n };\n const defs = NODE_FIELDS.TSConditionalType;\n validate(defs.checkType, node, \"checkType\", checkType, 1);\n validate(defs.extendsType, node, \"extendsType\", extendsType, 1);\n validate(defs.trueType, node, \"trueType\", trueType, 1);\n validate(defs.falseType, node, \"falseType\", falseType, 1);\n return node;\n}\nfunction tsInferType(typeParameter) {\n const node = {\n type: \"TSInferType\",\n typeParameter\n };\n const defs = NODE_FIELDS.TSInferType;\n validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n return node;\n}\nfunction tsParenthesizedType(typeAnnotation) {\n const node = {\n type: \"TSParenthesizedType\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSParenthesizedType;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsTypeOperator(typeAnnotation, operator = \"keyof\") {\n const node = {\n type: \"TSTypeOperator\",\n typeAnnotation,\n operator\n };\n const defs = NODE_FIELDS.TSTypeOperator;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.operator, node, \"operator\", operator);\n return node;\n}\nfunction tsIndexedAccessType(objectType, indexType) {\n const node = {\n type: \"TSIndexedAccessType\",\n objectType,\n indexType\n };\n const defs = NODE_FIELDS.TSIndexedAccessType;\n validate(defs.objectType, node, \"objectType\", objectType, 1);\n validate(defs.indexType, node, \"indexType\", indexType, 1);\n return node;\n}\nfunction tsMappedType(typeParameter, typeAnnotation = null, nameType = null) {\n const node = {\n type: \"TSMappedType\",\n typeParameter,\n typeAnnotation,\n nameType\n };\n const defs = NODE_FIELDS.TSMappedType;\n validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.nameType, node, \"nameType\", nameType, 1);\n return node;\n}\nfunction tsTemplateLiteralType(quasis, types) {\n const node = {\n type: \"TSTemplateLiteralType\",\n quasis,\n types\n };\n const defs = NODE_FIELDS.TSTemplateLiteralType;\n validate(defs.quasis, node, \"quasis\", quasis, 1);\n validate(defs.types, node, \"types\", types, 1);\n return node;\n}\nfunction tsLiteralType(literal) {\n const node = {\n type: \"TSLiteralType\",\n literal\n };\n const defs = NODE_FIELDS.TSLiteralType;\n validate(defs.literal, node, \"literal\", literal, 1);\n return node;\n}\nfunction tsExpressionWithTypeArguments(expression, typeParameters = null) {\n const node = {\n type: \"TSExpressionWithTypeArguments\",\n expression,\n typeParameters\n };\n const defs = NODE_FIELDS.TSExpressionWithTypeArguments;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction tsInterfaceDeclaration(id, typeParameters = null, _extends = null, body) {\n const node = {\n type: \"TSInterfaceDeclaration\",\n id,\n typeParameters,\n extends: _extends,\n body\n };\n const defs = NODE_FIELDS.TSInterfaceDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.extends, node, \"extends\", _extends, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction tsInterfaceBody(body) {\n const node = {\n type: \"TSInterfaceBody\",\n body\n };\n const defs = NODE_FIELDS.TSInterfaceBody;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction tsTypeAliasDeclaration(id, typeParameters = null, typeAnnotation) {\n const node = {\n type: \"TSTypeAliasDeclaration\",\n id,\n typeParameters,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSTypeAliasDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsInstantiationExpression(expression, typeParameters = null) {\n const node = {\n type: \"TSInstantiationExpression\",\n expression,\n typeParameters\n };\n const defs = NODE_FIELDS.TSInstantiationExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction tsAsExpression(expression, typeAnnotation) {\n const node = {\n type: \"TSAsExpression\",\n expression,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSAsExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsSatisfiesExpression(expression, typeAnnotation) {\n const node = {\n type: \"TSSatisfiesExpression\",\n expression,\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSSatisfiesExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsTypeAssertion(typeAnnotation, expression) {\n const node = {\n type: \"TSTypeAssertion\",\n typeAnnotation,\n expression\n };\n const defs = NODE_FIELDS.TSTypeAssertion;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction tsEnumBody(members) {\n const node = {\n type: \"TSEnumBody\",\n members\n };\n const defs = NODE_FIELDS.TSEnumBody;\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction tsEnumDeclaration(id, members) {\n const node = {\n type: \"TSEnumDeclaration\",\n id,\n members\n };\n const defs = NODE_FIELDS.TSEnumDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.members, node, \"members\", members, 1);\n return node;\n}\nfunction tsEnumMember(id, initializer = null) {\n const node = {\n type: \"TSEnumMember\",\n id,\n initializer\n };\n const defs = NODE_FIELDS.TSEnumMember;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.initializer, node, \"initializer\", initializer, 1);\n return node;\n}\nfunction tsModuleDeclaration(id, body) {\n const node = {\n type: \"TSModuleDeclaration\",\n id,\n body,\n kind: null\n };\n const defs = NODE_FIELDS.TSModuleDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction tsModuleBlock(body) {\n const node = {\n type: \"TSModuleBlock\",\n body\n };\n const defs = NODE_FIELDS.TSModuleBlock;\n validate(defs.body, node, \"body\", body, 1);\n return node;\n}\nfunction tsImportType(argument, qualifier = null, typeParameters = null) {\n const node = {\n type: \"TSImportType\",\n argument,\n qualifier,\n typeParameters\n };\n const defs = NODE_FIELDS.TSImportType;\n validate(defs.argument, node, \"argument\", argument, 1);\n validate(defs.qualifier, node, \"qualifier\", qualifier, 1);\n validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n return node;\n}\nfunction tsImportEqualsDeclaration(id, moduleReference) {\n const node = {\n type: \"TSImportEqualsDeclaration\",\n id,\n moduleReference,\n isExport: null\n };\n const defs = NODE_FIELDS.TSImportEqualsDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n validate(defs.moduleReference, node, \"moduleReference\", moduleReference, 1);\n return node;\n}\nfunction tsExternalModuleReference(expression) {\n const node = {\n type: \"TSExternalModuleReference\",\n expression\n };\n const defs = NODE_FIELDS.TSExternalModuleReference;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction tsNonNullExpression(expression) {\n const node = {\n type: \"TSNonNullExpression\",\n expression\n };\n const defs = NODE_FIELDS.TSNonNullExpression;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction tsExportAssignment(expression) {\n const node = {\n type: \"TSExportAssignment\",\n expression\n };\n const defs = NODE_FIELDS.TSExportAssignment;\n validate(defs.expression, node, \"expression\", expression, 1);\n return node;\n}\nfunction tsNamespaceExportDeclaration(id) {\n const node = {\n type: \"TSNamespaceExportDeclaration\",\n id\n };\n const defs = NODE_FIELDS.TSNamespaceExportDeclaration;\n validate(defs.id, node, \"id\", id, 1);\n return node;\n}\nfunction tsTypeAnnotation(typeAnnotation) {\n const node = {\n type: \"TSTypeAnnotation\",\n typeAnnotation\n };\n const defs = NODE_FIELDS.TSTypeAnnotation;\n validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n return node;\n}\nfunction tsTypeParameterInstantiation(params) {\n const node = {\n type: \"TSTypeParameterInstantiation\",\n params\n };\n const defs = NODE_FIELDS.TSTypeParameterInstantiation;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nfunction tsTypeParameterDeclaration(params) {\n const node = {\n type: \"TSTypeParameterDeclaration\",\n params\n };\n const defs = NODE_FIELDS.TSTypeParameterDeclaration;\n validate(defs.params, node, \"params\", params, 1);\n return node;\n}\nfunction tsTypeParameter(constraint = null, _default = null, name) {\n const node = {\n type: \"TSTypeParameter\",\n constraint,\n default: _default,\n name\n };\n const defs = NODE_FIELDS.TSTypeParameter;\n validate(defs.constraint, node, \"constraint\", constraint, 1);\n validate(defs.default, node, \"default\", _default, 1);\n validate(defs.name, node, \"name\", name);\n return node;\n}\nfunction NumberLiteral(value) {\n (0, _deprecationWarning.default)(\"NumberLiteral\", \"NumericLiteral\", \"The node type \");\n return numericLiteral(value);\n}\nfunction RegexLiteral(pattern, flags = \"\") {\n (0, _deprecationWarning.default)(\"RegexLiteral\", \"RegExpLiteral\", \"The node type \");\n return regExpLiteral(pattern, flags);\n}\nfunction RestProperty(argument) {\n (0, _deprecationWarning.default)(\"RestProperty\", \"RestElement\", \"The node type \");\n return restElement(argument);\n}\nfunction SpreadProperty(argument) {\n (0, _deprecationWarning.default)(\"SpreadProperty\", \"SpreadElement\", \"The node type \");\n return spreadElement(argument);\n}\n\n//# sourceMappingURL=lowercase.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = validate;\nexports.validateChild = validateChild;\nexports.validateField = validateField;\nexports.validateInternal = validateInternal;\nvar _index = require(\"../definitions/index.js\");\nfunction validate(node, key, val) {\n if (!node) return;\n const fields = _index.NODE_FIELDS[node.type];\n if (!fields) return;\n const field = fields[key];\n validateField(node, key, val, field);\n validateChild(node, key, val);\n}\nfunction validateInternal(field, node, key, val, maybeNode) {\n if (!(field != null && field.validate)) return;\n if (field.optional && val == null) return;\n field.validate(node, key, val);\n if (maybeNode) {\n var _NODE_PARENT_VALIDATI;\n const type = val.type;\n if (type == null) return;\n (_NODE_PARENT_VALIDATI = _index.NODE_PARENT_VALIDATIONS[type]) == null || _NODE_PARENT_VALIDATI.call(_index.NODE_PARENT_VALIDATIONS, node, key, val);\n }\n}\nfunction validateField(node, key, val, field) {\n if (!(field != null && field.validate)) return;\n if (field.optional && val == null) return;\n field.validate(node, key, val);\n}\nfunction validateChild(node, key, val) {\n var _NODE_PARENT_VALIDATI2;\n const type = val == null ? void 0 : val.type;\n if (type == null) return;\n (_NODE_PARENT_VALIDATI2 = _index.NODE_PARENT_VALIDATIONS[type]) == null || _NODE_PARENT_VALIDATI2.call(_index.NODE_PARENT_VALIDATIONS, node, key, val);\n}\n\n//# sourceMappingURL=validate.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ALIAS_KEYS\", {\n enumerable: true,\n get: function () {\n return _utils.ALIAS_KEYS;\n }\n});\nObject.defineProperty(exports, \"BUILDER_KEYS\", {\n enumerable: true,\n get: function () {\n return _utils.BUILDER_KEYS;\n }\n});\nObject.defineProperty(exports, \"DEPRECATED_ALIASES\", {\n enumerable: true,\n get: function () {\n return _deprecatedAliases.DEPRECATED_ALIASES;\n }\n});\nObject.defineProperty(exports, \"DEPRECATED_KEYS\", {\n enumerable: true,\n get: function () {\n return _utils.DEPRECATED_KEYS;\n }\n});\nObject.defineProperty(exports, \"FLIPPED_ALIAS_KEYS\", {\n enumerable: true,\n get: function () {\n return _utils.FLIPPED_ALIAS_KEYS;\n }\n});\nObject.defineProperty(exports, \"NODE_FIELDS\", {\n enumerable: true,\n get: function () {\n return _utils.NODE_FIELDS;\n }\n});\nObject.defineProperty(exports, \"NODE_PARENT_VALIDATIONS\", {\n enumerable: true,\n get: function () {\n return _utils.NODE_PARENT_VALIDATIONS;\n }\n});\nObject.defineProperty(exports, \"NODE_UNION_SHAPES__PRIVATE\", {\n enumerable: true,\n get: function () {\n return _utils.NODE_UNION_SHAPES__PRIVATE;\n }\n});\nObject.defineProperty(exports, \"PLACEHOLDERS\", {\n enumerable: true,\n get: function () {\n return _placeholders.PLACEHOLDERS;\n }\n});\nObject.defineProperty(exports, \"PLACEHOLDERS_ALIAS\", {\n enumerable: true,\n get: function () {\n return _placeholders.PLACEHOLDERS_ALIAS;\n }\n});\nObject.defineProperty(exports, \"PLACEHOLDERS_FLIPPED_ALIAS\", {\n enumerable: true,\n get: function () {\n return _placeholders.PLACEHOLDERS_FLIPPED_ALIAS;\n }\n});\nexports.TYPES = void 0;\nObject.defineProperty(exports, \"VISITOR_KEYS\", {\n enumerable: true,\n get: function () {\n return _utils.VISITOR_KEYS;\n }\n});\nrequire(\"./core.js\");\nrequire(\"./flow.js\");\nrequire(\"./jsx.js\");\nrequire(\"./misc.js\");\nrequire(\"./experimental.js\");\nrequire(\"./typescript.js\");\nvar _utils = require(\"./utils.js\");\nvar _placeholders = require(\"./placeholders.js\");\nvar _deprecatedAliases = require(\"./deprecated-aliases.js\");\nObject.keys(_deprecatedAliases.DEPRECATED_ALIASES).forEach(deprecatedAlias => {\n _utils.FLIPPED_ALIAS_KEYS[deprecatedAlias] = _utils.FLIPPED_ALIAS_KEYS[_deprecatedAliases.DEPRECATED_ALIASES[deprecatedAlias]];\n});\nfor (const {\n types,\n set\n} of _utils.allExpandedTypes) {\n for (const type of types) {\n const aliases = _utils.FLIPPED_ALIAS_KEYS[type];\n if (aliases) {\n aliases.forEach(set.add, set);\n } else {\n set.add(type);\n }\n }\n}\nconst TYPES = exports.TYPES = [].concat(Object.keys(_utils.VISITOR_KEYS), Object.keys(_utils.FLIPPED_ALIAS_KEYS), Object.keys(_utils.DEPRECATED_KEYS));\n\n//# sourceMappingURL=index.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.patternLikeCommon = exports.importAttributes = exports.functionTypeAnnotationCommon = exports.functionDeclarationCommon = exports.functionCommon = exports.classMethodOrPropertyUnionShapeCommon = exports.classMethodOrPropertyCommon = exports.classMethodOrDeclareMethodCommon = void 0;\nvar _is = require(\"../validators/is.js\");\nvar _isValidIdentifier = require(\"../validators/isValidIdentifier.js\");\nvar _helperValidatorIdentifier = require(\"@babel/helper-validator-identifier\");\nvar _helperStringParser = require(\"@babel/helper-string-parser\");\nvar _index = require(\"../constants/index.js\");\nvar _utils = require(\"./utils.js\");\nconst classMethodOrPropertyUnionShapeCommon = (allowPrivateName = false) => ({\n unionShape: {\n discriminator: \"computed\",\n shapes: [{\n name: \"computed\",\n value: [true],\n properties: {\n key: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n }, {\n name: \"nonComputed\",\n value: [false],\n properties: {\n key: {\n validate: allowPrivateName ? (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"PrivateName\") : (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\")\n }\n }\n }]\n }\n});\nexports.classMethodOrPropertyUnionShapeCommon = classMethodOrPropertyUnionShapeCommon;\nconst defineType = (0, _utils.defineAliasedType)(\"Standardized\");\ndefineType(\"ArrayExpression\", {\n fields: {\n elements: {\n validate: (0, _utils.arrayOf)((0, _utils.assertNodeOrValueType)(\"null\", \"Expression\", \"SpreadElement\")),\n default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined\n }\n },\n visitor: [\"elements\"],\n aliases: [\"Expression\"]\n});\ndefineType(\"AssignmentExpression\", {\n fields: {\n operator: {\n validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)(\"string\") : Object.assign(function () {\n const identifier = (0, _utils.assertOneOf)(..._index.ASSIGNMENT_OPERATORS);\n const pattern = (0, _utils.assertOneOf)(\"=\");\n return function (node, key, val) {\n const validator = (0, _is.default)(\"Pattern\", node.left) ? pattern : identifier;\n validator(node, key, val);\n };\n }(), {\n oneOf: _index.ASSIGNMENT_OPERATORS\n })\n },\n left: {\n validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)(\"LVal\", \"OptionalMemberExpression\") : (0, _utils.assertNodeType)(\"Identifier\", \"MemberExpression\", \"OptionalMemberExpression\", \"ArrayPattern\", \"ObjectPattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\")\n },\n right: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n },\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Expression\"]\n});\ndefineType(\"BinaryExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n fields: {\n operator: {\n validate: (0, _utils.assertOneOf)(..._index.BINARY_OPERATORS)\n },\n left: {\n validate: function () {\n const expression = (0, _utils.assertNodeType)(\"Expression\");\n const inOp = (0, _utils.assertNodeType)(\"Expression\", \"PrivateName\");\n const validator = Object.assign(function (node, key, val) {\n const validator = node.operator === \"in\" ? inOp : expression;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"Expression\", \"PrivateName\"]\n });\n return validator;\n }()\n },\n right: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n },\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"]\n});\ndefineType(\"InterpreterDirective\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: (0, _utils.assertValueType)(\"string\")\n }\n }\n});\ndefineType(\"Directive\", {\n visitor: [\"value\"],\n fields: {\n value: {\n validate: (0, _utils.assertNodeType)(\"DirectiveLiteral\")\n }\n }\n});\ndefineType(\"DirectiveLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: (0, _utils.assertValueType)(\"string\")\n }\n }\n});\ndefineType(\"BlockStatement\", {\n builder: [\"body\", \"directives\"],\n visitor: [\"directives\", \"body\"],\n fields: {\n directives: {\n validate: (0, _utils.arrayOfType)(\"Directive\"),\n default: []\n },\n body: (0, _utils.validateArrayOfType)(\"Statement\")\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\", \"Statement\"]\n});\ndefineType(\"BreakStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: (0, _utils.assertNodeType)(\"Identifier\"),\n optional: true\n }\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"]\n});\ndefineType(\"CallExpression\", {\n visitor: [\"callee\", \"typeParameters\", \"typeArguments\", \"arguments\"],\n builder: [\"callee\", \"arguments\"],\n aliases: [\"Expression\"],\n fields: Object.assign({\n callee: {\n validate: (0, _utils.assertNodeType)(\"Expression\", \"Super\", \"V8IntrinsicIdentifier\")\n },\n arguments: (0, _utils.validateArrayOfType)(\"Expression\", \"SpreadElement\", \"ArgumentPlaceholder\"),\n typeArguments: {\n validate: (0, _utils.assertNodeType)(\"TypeParameterInstantiation\"),\n optional: true\n }\n }, process.env.BABEL_TYPES_8_BREAKING ? {} : {\n optional: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n typeParameters: {\n validate: (0, _utils.assertNodeType)(\"TSTypeParameterInstantiation\"),\n optional: true\n }\n })\n});\ndefineType(\"CatchClause\", {\n visitor: [\"param\", \"body\"],\n fields: {\n param: {\n validate: (0, _utils.assertNodeType)(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n optional: true\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"BlockStatement\")\n }\n },\n aliases: [\"Scopable\", \"BlockParent\"]\n});\ndefineType(\"ConditionalExpression\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n fields: {\n test: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n consequent: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n alternate: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n },\n aliases: [\"Expression\", \"Conditional\"]\n});\ndefineType(\"ContinueStatement\", {\n visitor: [\"label\"],\n fields: {\n label: {\n validate: (0, _utils.assertNodeType)(\"Identifier\"),\n optional: true\n }\n },\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"]\n});\ndefineType(\"DebuggerStatement\", {\n aliases: [\"Statement\"]\n});\ndefineType(\"DoWhileStatement\", {\n builder: [\"test\", \"body\"],\n visitor: [\"body\", \"test\"],\n fields: {\n test: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"Statement\")\n }\n },\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"]\n});\ndefineType(\"EmptyStatement\", {\n aliases: [\"Statement\"]\n});\ndefineType(\"ExpressionStatement\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n },\n aliases: [\"Statement\", \"ExpressionWrapper\"]\n});\ndefineType(\"File\", {\n builder: [\"program\", \"comments\", \"tokens\"],\n visitor: [\"program\"],\n fields: {\n program: {\n validate: (0, _utils.assertNodeType)(\"Program\")\n },\n comments: {\n validate: !process.env.BABEL_TYPES_8_BREAKING ? Object.assign(() => {}, {\n each: {\n oneOfNodeTypes: [\"CommentBlock\", \"CommentLine\"]\n }\n }) : (0, _utils.assertEach)((0, _utils.assertNodeType)(\"CommentBlock\", \"CommentLine\")),\n optional: true\n },\n tokens: {\n validate: (0, _utils.assertEach)(Object.assign(() => {}, {\n type: \"any\"\n })),\n optional: true\n }\n }\n});\ndefineType(\"ForInStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\", \"ForXStatement\"],\n fields: {\n left: {\n validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)(\"VariableDeclaration\", \"LVal\") : (0, _utils.assertNodeType)(\"VariableDeclaration\", \"Identifier\", \"MemberExpression\", \"ArrayPattern\", \"ObjectPattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\")\n },\n right: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"Statement\")\n }\n }\n});\ndefineType(\"ForStatement\", {\n visitor: [\"init\", \"test\", \"update\", \"body\"],\n aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\"],\n fields: {\n init: {\n validate: (0, _utils.assertNodeType)(\"VariableDeclaration\", \"Expression\"),\n optional: true\n },\n test: {\n validate: (0, _utils.assertNodeType)(\"Expression\"),\n optional: true\n },\n update: {\n validate: (0, _utils.assertNodeType)(\"Expression\"),\n optional: true\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"Statement\")\n }\n }\n});\nconst functionCommon = () => ({\n params: (0, _utils.validateArrayOfType)(\"FunctionParameter\"),\n generator: {\n default: false\n },\n async: {\n default: false\n }\n});\nexports.functionCommon = functionCommon;\nconst functionTypeAnnotationCommon = () => ({\n returnType: {\n validate: (0, _utils.assertNodeType)(\"TypeAnnotation\", \"TSTypeAnnotation\", \"Noop\"),\n optional: true\n },\n typeParameters: {\n validate: (0, _utils.assertNodeType)(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\", \"Noop\"),\n optional: true\n }\n});\nexports.functionTypeAnnotationCommon = functionTypeAnnotationCommon;\nconst functionDeclarationCommon = () => Object.assign({}, functionCommon(), {\n declare: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n id: {\n validate: (0, _utils.assertNodeType)(\"Identifier\"),\n optional: true\n }\n});\nexports.functionDeclarationCommon = functionDeclarationCommon;\ndefineType(\"FunctionDeclaration\", {\n builder: [\"id\", \"params\", \"body\", \"generator\", \"async\"],\n visitor: [\"id\", \"typeParameters\", \"params\", \"predicate\", \"returnType\", \"body\"],\n fields: Object.assign({}, functionDeclarationCommon(), functionTypeAnnotationCommon(), {\n body: {\n validate: (0, _utils.assertNodeType)(\"BlockStatement\")\n },\n predicate: {\n validate: (0, _utils.assertNodeType)(\"DeclaredPredicate\", \"InferredPredicate\"),\n optional: true\n }\n }),\n aliases: [\"Scopable\", \"Function\", \"BlockParent\", \"FunctionParent\", \"Statement\", \"Pureish\", \"Declaration\"],\n validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {\n const identifier = (0, _utils.assertNodeType)(\"Identifier\");\n return function (parent, key, node) {\n if (!(0, _is.default)(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n }()\n});\ndefineType(\"FunctionExpression\", {\n inherits: \"FunctionDeclaration\",\n aliases: [\"Scopable\", \"Function\", \"BlockParent\", \"FunctionParent\", \"Expression\", \"Pureish\"],\n fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {\n id: {\n validate: (0, _utils.assertNodeType)(\"Identifier\"),\n optional: true\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"BlockStatement\")\n },\n predicate: {\n validate: (0, _utils.assertNodeType)(\"DeclaredPredicate\", \"InferredPredicate\"),\n optional: true\n }\n })\n});\nconst patternLikeCommon = () => ({\n typeAnnotation: {\n validate: (0, _utils.assertNodeType)(\"TypeAnnotation\", \"TSTypeAnnotation\", \"Noop\"),\n optional: true\n },\n optional: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n }\n});\nexports.patternLikeCommon = patternLikeCommon;\ndefineType(\"Identifier\", {\n builder: [\"name\"],\n visitor: [\"typeAnnotation\", \"decorators\"],\n aliases: [\"Expression\", \"FunctionParameter\", \"PatternLike\", \"LVal\", \"TSEntityName\"],\n fields: Object.assign({}, patternLikeCommon(), {\n name: {\n validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)(\"string\"), Object.assign(function (node, key, val) {\n if (!(0, _isValidIdentifier.default)(val, false)) {\n throw new TypeError(`\"${val}\" is not a valid identifier name`);\n }\n }, {\n type: \"string\"\n })) : (0, _utils.assertValueType)(\"string\")\n }\n }),\n validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key, node) {\n const match = /\\.(\\w+)$/.exec(key.toString());\n if (!match) return;\n const [, parentKey] = match;\n const nonComp = {\n computed: false\n };\n if (parentKey === \"property\") {\n if ((0, _is.default)(\"MemberExpression\", parent, nonComp)) return;\n if ((0, _is.default)(\"OptionalMemberExpression\", parent, nonComp)) return;\n } else if (parentKey === \"key\") {\n if ((0, _is.default)(\"Property\", parent, nonComp)) return;\n if ((0, _is.default)(\"Method\", parent, nonComp)) return;\n } else if (parentKey === \"exported\") {\n if ((0, _is.default)(\"ExportSpecifier\", parent)) return;\n } else if (parentKey === \"imported\") {\n if ((0, _is.default)(\"ImportSpecifier\", parent, {\n imported: node\n })) return;\n } else if (parentKey === \"meta\") {\n if ((0, _is.default)(\"MetaProperty\", parent, {\n meta: node\n })) return;\n }\n if (((0, _helperValidatorIdentifier.isKeyword)(node.name) || (0, _helperValidatorIdentifier.isReservedWord)(node.name, false)) && node.name !== \"this\") {\n throw new TypeError(`\"${node.name}\" is not a valid identifier`);\n }\n } : undefined\n});\ndefineType(\"IfStatement\", {\n visitor: [\"test\", \"consequent\", \"alternate\"],\n aliases: [\"Statement\", \"Conditional\"],\n fields: {\n test: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n consequent: {\n validate: (0, _utils.assertNodeType)(\"Statement\")\n },\n alternate: {\n optional: true,\n validate: (0, _utils.assertNodeType)(\"Statement\")\n }\n }\n});\ndefineType(\"LabeledStatement\", {\n visitor: [\"label\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n label: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"Statement\")\n }\n }\n});\ndefineType(\"StringLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: (0, _utils.assertValueType)(\"string\")\n }\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType(\"NumericLiteral\", {\n builder: [\"value\"],\n deprecatedAlias: \"NumberLiteral\",\n fields: {\n value: {\n validate: (0, _utils.chain)((0, _utils.assertValueType)(\"number\"), Object.assign(function (node, key, val) {\n if (1 / val < 0 || !Number.isFinite(val)) {\n const error = new Error(\"NumericLiterals must be non-negative finite numbers. \" + `You can use t.valueToNode(${val}) instead.`);\n }\n }, {\n type: \"number\"\n }))\n }\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType(\"NullLiteral\", {\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType(\"BooleanLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: (0, _utils.assertValueType)(\"boolean\")\n }\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType(\"RegExpLiteral\", {\n builder: [\"pattern\", \"flags\"],\n deprecatedAlias: \"RegexLiteral\",\n aliases: [\"Expression\", \"Pureish\", \"Literal\"],\n fields: {\n pattern: {\n validate: (0, _utils.assertValueType)(\"string\")\n },\n flags: {\n validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)(\"string\"), Object.assign(function (node, key, val) {\n const invalid = /[^dgimsuvy]/.exec(val);\n if (invalid) {\n throw new TypeError(`\"${invalid[0]}\" is not a valid RegExp flag`);\n }\n }, {\n type: \"string\"\n })) : (0, _utils.assertValueType)(\"string\"),\n default: \"\"\n }\n }\n});\ndefineType(\"LogicalExpression\", {\n builder: [\"operator\", \"left\", \"right\"],\n visitor: [\"left\", \"right\"],\n aliases: [\"Binary\", \"Expression\"],\n fields: {\n operator: {\n validate: (0, _utils.assertOneOf)(..._index.LOGICAL_OPERATORS)\n },\n left: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n right: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\ndefineType(\"MemberExpression\", {\n builder: [\"object\", \"property\", \"computed\", ...(!process.env.BABEL_TYPES_8_BREAKING ? [\"optional\"] : [])],\n visitor: [\"object\", \"property\"],\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n unionShape: {\n discriminator: \"computed\",\n shapes: [{\n name: \"computed\",\n value: [true],\n properties: {\n property: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n }, {\n name: \"nonComputed\",\n value: [false],\n properties: {\n property: {\n validate: (0, _utils.assertNodeType)(\"Identifier\", \"PrivateName\")\n }\n }\n }]\n },\n fields: Object.assign({\n object: {\n validate: (0, _utils.assertNodeType)(\"Expression\", \"Super\")\n },\n property: {\n validate: function () {\n const normal = (0, _utils.assertNodeType)(\"Identifier\", \"PrivateName\");\n const computed = (0, _utils.assertNodeType)(\"Expression\");\n const validator = function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n validator.oneOfNodeTypes = [\"Expression\", \"Identifier\", \"PrivateName\"];\n return validator;\n }()\n },\n computed: {\n default: false\n }\n }, !process.env.BABEL_TYPES_8_BREAKING ? {\n optional: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n }\n } : {})\n});\ndefineType(\"NewExpression\", {\n inherits: \"CallExpression\"\n});\ndefineType(\"Program\", {\n visitor: [\"directives\", \"body\"],\n builder: [\"body\", \"directives\", \"sourceType\", \"interpreter\"],\n fields: {\n sourceType: {\n validate: (0, _utils.assertOneOf)(\"script\", \"module\"),\n default: \"script\"\n },\n interpreter: {\n validate: (0, _utils.assertNodeType)(\"InterpreterDirective\"),\n default: null,\n optional: true\n },\n directives: {\n validate: (0, _utils.arrayOfType)(\"Directive\"),\n default: []\n },\n body: (0, _utils.validateArrayOfType)(\"Statement\")\n },\n aliases: [\"Scopable\", \"BlockParent\", \"Block\"]\n});\ndefineType(\"ObjectExpression\", {\n visitor: [\"properties\"],\n aliases: [\"Expression\"],\n fields: {\n properties: (0, _utils.validateArrayOfType)(\"ObjectMethod\", \"ObjectProperty\", \"SpreadElement\")\n }\n});\ndefineType(\"ObjectMethod\", Object.assign({\n builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"generator\", \"async\"],\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\", \"body\"]\n}, classMethodOrPropertyUnionShapeCommon(), {\n fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {\n kind: Object.assign({\n validate: (0, _utils.assertOneOf)(\"method\", \"get\", \"set\")\n }, !process.env.BABEL_TYPES_8_BREAKING ? {\n default: \"method\"\n } : {}),\n computed: {\n default: false\n },\n key: {\n validate: function () {\n const normal = (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\");\n const computed = (0, _utils.assertNodeType)(\"Expression\");\n const validator = function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n validator.oneOfNodeTypes = [\"Expression\", \"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\"];\n return validator;\n }()\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"BlockStatement\")\n }\n }),\n aliases: [\"UserWhitespacable\", \"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\", \"ObjectMember\"]\n}));\ndefineType(\"ObjectProperty\", {\n builder: [\"key\", \"value\", \"computed\", \"shorthand\", ...(!process.env.BABEL_TYPES_8_BREAKING ? [\"decorators\"] : [])],\n unionShape: {\n discriminator: \"computed\",\n shapes: [{\n name: \"computed\",\n value: [true],\n properties: {\n key: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n }, {\n name: \"nonComputed\",\n value: [false],\n properties: {\n key: {\n validate: (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"DecimalLiteral\", \"PrivateName\")\n }\n }\n }]\n },\n fields: {\n computed: {\n default: false\n },\n key: {\n validate: function () {\n const normal = (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"DecimalLiteral\", \"PrivateName\");\n const computed = (0, _utils.assertNodeType)(\"Expression\");\n const validator = Object.assign(function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"Expression\", \"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"DecimalLiteral\", \"PrivateName\"]\n });\n return validator;\n }()\n },\n value: {\n validate: (0, _utils.assertNodeType)(\"Expression\", \"PatternLike\")\n },\n shorthand: {\n validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)(\"boolean\"), Object.assign(function (node, key, shorthand) {\n if (!shorthand) return;\n if (node.computed) {\n throw new TypeError(\"Property shorthand of ObjectProperty cannot be true if computed is true\");\n }\n if (!(0, _is.default)(\"Identifier\", node.key)) {\n throw new TypeError(\"Property shorthand of ObjectProperty cannot be true if key is not an Identifier\");\n }\n }, {\n type: \"boolean\"\n })) : (0, _utils.assertValueType)(\"boolean\"),\n default: false\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n }\n },\n visitor: [\"decorators\", \"key\", \"value\"],\n aliases: [\"UserWhitespacable\", \"Property\", \"ObjectMember\"],\n validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {\n const pattern = (0, _utils.assertNodeType)(\"Identifier\", \"Pattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSNonNullExpression\", \"TSTypeAssertion\");\n const expression = (0, _utils.assertNodeType)(\"Expression\");\n return function (parent, key, node) {\n const validator = (0, _is.default)(\"ObjectPattern\", parent) ? pattern : expression;\n validator(node, \"value\", node.value);\n };\n }()\n});\ndefineType(\"RestElement\", {\n visitor: [\"argument\", \"typeAnnotation\"],\n builder: [\"argument\"],\n aliases: [\"FunctionParameter\", \"PatternLike\", \"LVal\"],\n deprecatedAlias: \"RestProperty\",\n fields: Object.assign({}, patternLikeCommon(), {\n argument: {\n validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\", \"MemberExpression\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\", \"RestElement\", \"AssignmentPattern\") : (0, _utils.assertNodeType)(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\", \"MemberExpression\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\")\n }\n }),\n validate: process.env.BABEL_TYPES_8_BREAKING ? function (parent, key) {\n const match = /(\\w+)\\[(\\d+)\\]/.exec(key.toString());\n if (!match) throw new Error(\"Internal Babel error: malformed key.\");\n const [, listKey, index] = match;\n if (parent[listKey].length > +index + 1) {\n throw new TypeError(`RestElement must be last element of ${listKey}`);\n }\n } : undefined\n});\ndefineType(\"ReturnStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: (0, _utils.assertNodeType)(\"Expression\"),\n optional: true\n }\n }\n});\ndefineType(\"SequenceExpression\", {\n visitor: [\"expressions\"],\n fields: {\n expressions: (0, _utils.validateArrayOfType)(\"Expression\")\n },\n aliases: [\"Expression\"]\n});\ndefineType(\"ParenthesizedExpression\", {\n visitor: [\"expression\"],\n aliases: [\"Expression\", \"ExpressionWrapper\"],\n fields: {\n expression: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\ndefineType(\"SwitchCase\", {\n visitor: [\"test\", \"consequent\"],\n fields: {\n test: {\n validate: (0, _utils.assertNodeType)(\"Expression\"),\n optional: true\n },\n consequent: (0, _utils.validateArrayOfType)(\"Statement\")\n }\n});\ndefineType(\"SwitchStatement\", {\n visitor: [\"discriminant\", \"cases\"],\n aliases: [\"Statement\", \"BlockParent\", \"Scopable\"],\n fields: {\n discriminant: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n cases: (0, _utils.validateArrayOfType)(\"SwitchCase\")\n }\n});\ndefineType(\"ThisExpression\", {\n aliases: [\"Expression\"]\n});\ndefineType(\"ThrowStatement\", {\n visitor: [\"argument\"],\n aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n fields: {\n argument: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\ndefineType(\"TryStatement\", {\n visitor: [\"block\", \"handler\", \"finalizer\"],\n aliases: [\"Statement\"],\n fields: {\n block: {\n validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)(\"BlockStatement\"), Object.assign(function (node) {\n if (!node.handler && !node.finalizer) {\n throw new TypeError(\"TryStatement expects either a handler or finalizer, or both\");\n }\n }, {\n oneOfNodeTypes: [\"BlockStatement\"]\n })) : (0, _utils.assertNodeType)(\"BlockStatement\")\n },\n handler: {\n optional: true,\n validate: (0, _utils.assertNodeType)(\"CatchClause\")\n },\n finalizer: {\n optional: true,\n validate: (0, _utils.assertNodeType)(\"BlockStatement\")\n }\n }\n});\ndefineType(\"UnaryExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: true\n },\n argument: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n operator: {\n validate: (0, _utils.assertOneOf)(..._index.UNARY_OPERATORS)\n }\n },\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\", \"Expression\"]\n});\ndefineType(\"UpdateExpression\", {\n builder: [\"operator\", \"argument\", \"prefix\"],\n fields: {\n prefix: {\n default: false\n },\n argument: {\n validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)(\"Expression\") : (0, _utils.assertNodeType)(\"Identifier\", \"MemberExpression\")\n },\n operator: {\n validate: (0, _utils.assertOneOf)(..._index.UPDATE_OPERATORS)\n }\n },\n visitor: [\"argument\"],\n aliases: [\"Expression\"]\n});\ndefineType(\"VariableDeclaration\", {\n builder: [\"kind\", \"declarations\"],\n visitor: [\"declarations\"],\n aliases: [\"Statement\", \"Declaration\"],\n fields: {\n declare: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n kind: {\n validate: (0, _utils.assertOneOf)(\"var\", \"let\", \"const\", \"using\", \"await using\")\n },\n declarations: (0, _utils.validateArrayOfType)(\"VariableDeclarator\")\n },\n validate: process.env.BABEL_TYPES_8_BREAKING ? (() => {\n const withoutInit = (0, _utils.assertNodeType)(\"Identifier\", \"Placeholder\");\n const constOrLetOrVar = (0, _utils.assertNodeType)(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\", \"Placeholder\");\n const usingOrAwaitUsing = (0, _utils.assertNodeType)(\"Identifier\", \"VoidPattern\", \"Placeholder\");\n return function (parent, key, node) {\n const {\n kind,\n declarations\n } = node;\n const parentIsForX = (0, _is.default)(\"ForXStatement\", parent, {\n left: node\n });\n if (parentIsForX) {\n if (declarations.length !== 1) {\n throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`);\n }\n }\n for (const decl of declarations) {\n if (kind === \"const\" || kind === \"let\" || kind === \"var\") {\n if (!parentIsForX && !decl.init) {\n withoutInit(decl, \"id\", decl.id);\n } else {\n constOrLetOrVar(decl, \"id\", decl.id);\n }\n } else {\n usingOrAwaitUsing(decl, \"id\", decl.id);\n }\n }\n };\n })() : undefined\n});\ndefineType(\"VariableDeclarator\", {\n visitor: [\"id\", \"init\"],\n fields: {\n id: {\n validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)(\"LVal\", \"VoidPattern\") : (0, _utils.assertNodeType)(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\", \"VoidPattern\")\n },\n definite: {\n optional: true,\n validate: (0, _utils.assertValueType)(\"boolean\")\n },\n init: {\n optional: true,\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\ndefineType(\"WhileStatement\", {\n visitor: [\"test\", \"body\"],\n aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n fields: {\n test: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"Statement\")\n }\n }\n});\ndefineType(\"WithStatement\", {\n visitor: [\"object\", \"body\"],\n aliases: [\"Statement\"],\n fields: {\n object: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"Statement\")\n }\n }\n});\ndefineType(\"AssignmentPattern\", {\n visitor: [\"left\", \"right\", \"decorators\"],\n builder: [\"left\", \"right\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: Object.assign({}, patternLikeCommon(), {\n left: {\n validate: (0, _utils.assertNodeType)(\"Identifier\", \"ObjectPattern\", \"ArrayPattern\", \"MemberExpression\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\")\n },\n right: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n }\n })\n});\ndefineType(\"ArrayPattern\", {\n visitor: [\"elements\", \"typeAnnotation\"],\n builder: [\"elements\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: Object.assign({}, patternLikeCommon(), {\n elements: {\n validate: (0, _utils.chain)((0, _utils.assertValueType)(\"array\"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)(\"null\", \"PatternLike\")))\n }\n })\n});\ndefineType(\"ArrowFunctionExpression\", {\n builder: [\"params\", \"body\", \"async\"],\n visitor: [\"typeParameters\", \"params\", \"predicate\", \"returnType\", \"body\"],\n aliases: [\"Scopable\", \"Function\", \"BlockParent\", \"FunctionParent\", \"Expression\", \"Pureish\"],\n fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {\n expression: {\n validate: (0, _utils.assertValueType)(\"boolean\")\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"BlockStatement\", \"Expression\")\n },\n predicate: {\n validate: (0, _utils.assertNodeType)(\"DeclaredPredicate\", \"InferredPredicate\"),\n optional: true\n }\n })\n});\ndefineType(\"ClassBody\", {\n visitor: [\"body\"],\n fields: {\n body: (0, _utils.validateArrayOfType)(\"ClassMethod\", \"ClassPrivateMethod\", \"ClassProperty\", \"ClassPrivateProperty\", \"ClassAccessorProperty\", \"TSDeclareMethod\", \"TSIndexSignature\", \"StaticBlock\")\n }\n});\ndefineType(\"ClassExpression\", {\n builder: [\"id\", \"superClass\", \"body\", \"decorators\"],\n visitor: [\"decorators\", \"id\", \"typeParameters\", \"superClass\", \"superTypeParameters\", \"mixins\", \"implements\", \"body\"],\n aliases: [\"Scopable\", \"Class\", \"Expression\"],\n fields: {\n id: {\n validate: (0, _utils.assertNodeType)(\"Identifier\"),\n optional: true\n },\n typeParameters: {\n validate: (0, _utils.assertNodeType)(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\", \"Noop\"),\n optional: true\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"ClassBody\")\n },\n superClass: {\n optional: true,\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n [\"superTypeParameters\"]: {\n validate: (0, _utils.assertNodeType)(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n },\n implements: {\n validate: (0, _utils.arrayOfType)(\"TSExpressionWithTypeArguments\", \"ClassImplements\"),\n optional: true\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n },\n mixins: {\n validate: (0, _utils.assertNodeType)(\"InterfaceExtends\"),\n optional: true\n }\n }\n});\ndefineType(\"ClassDeclaration\", {\n inherits: \"ClassExpression\",\n aliases: [\"Scopable\", \"Class\", \"Statement\", \"Declaration\"],\n fields: {\n id: {\n validate: (0, _utils.assertNodeType)(\"Identifier\"),\n optional: true\n },\n typeParameters: {\n validate: (0, _utils.assertNodeType)(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\", \"Noop\"),\n optional: true\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"ClassBody\")\n },\n superClass: {\n optional: true,\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n [\"superTypeParameters\"]: {\n validate: (0, _utils.assertNodeType)(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n },\n implements: {\n validate: (0, _utils.arrayOfType)(\"TSExpressionWithTypeArguments\", \"ClassImplements\"),\n optional: true\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n },\n mixins: {\n validate: (0, _utils.assertNodeType)(\"InterfaceExtends\"),\n optional: true\n },\n declare: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n abstract: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n }\n },\n validate: !process.env.BABEL_TYPES_8_BREAKING ? undefined : function () {\n const identifier = (0, _utils.assertNodeType)(\"Identifier\");\n return function (parent, key, node) {\n if (!(0, _is.default)(\"ExportDefaultDeclaration\", parent)) {\n identifier(node, \"id\", node.id);\n }\n };\n }()\n});\nconst importAttributes = exports.importAttributes = {\n attributes: {\n optional: true,\n validate: (0, _utils.arrayOfType)(\"ImportAttribute\")\n }\n};\nimportAttributes.assertions = {\n deprecated: true,\n optional: true,\n validate: (0, _utils.arrayOfType)(\"ImportAttribute\")\n};\ndefineType(\"ExportAllDeclaration\", {\n builder: [\"source\", \"attributes\"],\n visitor: [\"source\", \"attributes\", \"assertions\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\", \"ExportDeclaration\"],\n fields: Object.assign({\n source: {\n validate: (0, _utils.assertNodeType)(\"StringLiteral\")\n },\n exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)(\"type\", \"value\"))\n }, importAttributes)\n});\ndefineType(\"ExportDefaultDeclaration\", {\n visitor: [\"declaration\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\", \"ExportDeclaration\"],\n fields: {\n declaration: (0, _utils.validateType)(\"TSDeclareFunction\", \"FunctionDeclaration\", \"ClassDeclaration\", \"Expression\"),\n exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)(\"value\"))\n }\n});\ndefineType(\"ExportNamedDeclaration\", {\n builder: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\", \"assertions\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\", \"ExportDeclaration\"],\n fields: Object.assign({\n declaration: {\n optional: true,\n validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)(\"Declaration\"), Object.assign(function (node, key, val) {\n if (val && node.specifiers.length) {\n throw new TypeError(\"Only declaration or specifiers is allowed on ExportNamedDeclaration\");\n }\n if (val && node.source) {\n throw new TypeError(\"Cannot export a declaration from a source\");\n }\n }, {\n oneOfNodeTypes: [\"Declaration\"]\n })) : (0, _utils.assertNodeType)(\"Declaration\")\n }\n }, importAttributes, {\n specifiers: {\n default: [],\n validate: (0, _utils.arrayOf)(function () {\n const sourced = (0, _utils.assertNodeType)(\"ExportSpecifier\", \"ExportDefaultSpecifier\", \"ExportNamespaceSpecifier\");\n const sourceless = (0, _utils.assertNodeType)(\"ExportSpecifier\");\n if (!process.env.BABEL_TYPES_8_BREAKING) return sourced;\n return Object.assign(function (node, key, val) {\n const validator = node.source ? sourced : sourceless;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"ExportSpecifier\", \"ExportDefaultSpecifier\", \"ExportNamespaceSpecifier\"]\n });\n }())\n },\n source: {\n validate: (0, _utils.assertNodeType)(\"StringLiteral\"),\n optional: true\n },\n exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)(\"type\", \"value\"))\n })\n});\ndefineType(\"ExportSpecifier\", {\n visitor: [\"local\", \"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n },\n exported: {\n validate: (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\")\n },\n exportKind: {\n validate: (0, _utils.assertOneOf)(\"type\", \"value\"),\n optional: true\n }\n }\n});\ndefineType(\"ForOfStatement\", {\n visitor: [\"left\", \"right\", \"body\"],\n builder: [\"left\", \"right\", \"body\", \"await\"],\n aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\", \"ForXStatement\"],\n fields: {\n left: {\n validate: function () {\n if (!process.env.BABEL_TYPES_8_BREAKING) {\n return (0, _utils.assertNodeType)(\"VariableDeclaration\", \"LVal\");\n }\n const declaration = (0, _utils.assertNodeType)(\"VariableDeclaration\");\n const lval = (0, _utils.assertNodeType)(\"Identifier\", \"MemberExpression\", \"ArrayPattern\", \"ObjectPattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\");\n return Object.assign(function (node, key, val) {\n if ((0, _is.default)(\"VariableDeclaration\", val)) {\n declaration(node, key, val);\n } else {\n lval(node, key, val);\n }\n }, {\n oneOfNodeTypes: [\"VariableDeclaration\", \"Identifier\", \"MemberExpression\", \"ArrayPattern\", \"ObjectPattern\", \"TSAsExpression\", \"TSSatisfiesExpression\", \"TSTypeAssertion\", \"TSNonNullExpression\"]\n });\n }()\n },\n right: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"Statement\")\n },\n await: {\n default: false\n }\n }\n});\ndefineType(\"ImportDeclaration\", {\n builder: [\"specifiers\", \"source\", \"attributes\"],\n visitor: [\"specifiers\", \"source\", \"attributes\", \"assertions\"],\n aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\"],\n fields: Object.assign({}, importAttributes, {\n module: {\n optional: true,\n validate: (0, _utils.assertValueType)(\"boolean\")\n },\n phase: {\n default: null,\n validate: (0, _utils.assertOneOf)(\"source\", \"defer\")\n },\n specifiers: (0, _utils.validateArrayOfType)(\"ImportSpecifier\", \"ImportDefaultSpecifier\", \"ImportNamespaceSpecifier\"),\n source: {\n validate: (0, _utils.assertNodeType)(\"StringLiteral\")\n },\n importKind: {\n validate: (0, _utils.assertOneOf)(\"type\", \"typeof\", \"value\"),\n optional: true\n }\n })\n});\ndefineType(\"ImportDefaultSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n }\n }\n});\ndefineType(\"ImportNamespaceSpecifier\", {\n visitor: [\"local\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n }\n }\n});\ndefineType(\"ImportSpecifier\", {\n visitor: [\"imported\", \"local\"],\n builder: [\"local\", \"imported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n local: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n },\n imported: {\n validate: (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\")\n },\n importKind: {\n validate: (0, _utils.assertOneOf)(\"type\", \"typeof\", \"value\"),\n optional: true\n }\n }\n});\ndefineType(\"ImportExpression\", {\n visitor: [\"source\", \"options\"],\n aliases: [\"Expression\"],\n fields: {\n phase: {\n default: null,\n validate: (0, _utils.assertOneOf)(\"source\", \"defer\")\n },\n source: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n options: {\n validate: (0, _utils.assertNodeType)(\"Expression\"),\n optional: true\n }\n }\n});\ndefineType(\"MetaProperty\", {\n visitor: [\"meta\", \"property\"],\n aliases: [\"Expression\"],\n fields: {\n meta: {\n validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertNodeType)(\"Identifier\"), Object.assign(function (node, key, val) {\n let property;\n switch (val.name) {\n case \"function\":\n property = \"sent\";\n break;\n case \"new\":\n property = \"target\";\n break;\n case \"import\":\n property = \"meta\";\n break;\n }\n if (!(0, _is.default)(\"Identifier\", node.property, {\n name: property\n })) {\n throw new TypeError(\"Unrecognised MetaProperty\");\n }\n }, {\n oneOfNodeTypes: [\"Identifier\"]\n })) : (0, _utils.assertNodeType)(\"Identifier\")\n },\n property: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n }\n }\n});\nconst classMethodOrPropertyCommon = () => ({\n abstract: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n accessibility: {\n validate: (0, _utils.assertOneOf)(\"public\", \"private\", \"protected\"),\n optional: true\n },\n static: {\n default: false\n },\n override: {\n default: false\n },\n computed: {\n default: false\n },\n optional: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n key: {\n validate: (0, _utils.chain)(function () {\n const normal = (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\");\n const computed = (0, _utils.assertNodeType)(\"Expression\");\n return function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n }(), (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"Expression\"))\n }\n});\nexports.classMethodOrPropertyCommon = classMethodOrPropertyCommon;\nconst classMethodOrDeclareMethodCommon = () => Object.assign({}, functionCommon(), classMethodOrPropertyCommon(), {\n params: (0, _utils.validateArrayOfType)(\"FunctionParameter\", \"TSParameterProperty\"),\n kind: {\n validate: (0, _utils.assertOneOf)(\"get\", \"set\", \"method\", \"constructor\"),\n default: \"method\"\n },\n access: {\n validate: (0, _utils.chain)((0, _utils.assertValueType)(\"string\"), (0, _utils.assertOneOf)(\"public\", \"private\", \"protected\")),\n optional: true\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n }\n});\nexports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon;\ndefineType(\"ClassMethod\", Object.assign({\n aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\"],\n builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"static\", \"generator\", \"async\"],\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\", \"body\"]\n}, classMethodOrPropertyUnionShapeCommon(), {\n fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {\n body: {\n validate: (0, _utils.assertNodeType)(\"BlockStatement\")\n }\n })\n}));\ndefineType(\"ObjectPattern\", {\n visitor: [\"decorators\", \"properties\", \"typeAnnotation\"],\n builder: [\"properties\"],\n aliases: [\"FunctionParameter\", \"Pattern\", \"PatternLike\", \"LVal\"],\n fields: Object.assign({}, patternLikeCommon(), {\n properties: (0, _utils.validateArrayOfType)(\"RestElement\", \"ObjectProperty\")\n })\n});\ndefineType(\"SpreadElement\", {\n visitor: [\"argument\"],\n aliases: [\"UnaryLike\"],\n deprecatedAlias: \"SpreadProperty\",\n fields: {\n argument: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\ndefineType(\"Super\", {\n aliases: [\"Expression\"]\n});\ndefineType(\"TaggedTemplateExpression\", {\n visitor: [\"tag\", \"typeParameters\", \"quasi\"],\n builder: [\"tag\", \"quasi\"],\n aliases: [\"Expression\"],\n fields: {\n tag: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n quasi: {\n validate: (0, _utils.assertNodeType)(\"TemplateLiteral\")\n },\n [\"typeParameters\"]: {\n validate: (0, _utils.assertNodeType)(\"TypeParameterInstantiation\", \"TSTypeParameterInstantiation\"),\n optional: true\n }\n }\n});\ndefineType(\"TemplateElement\", {\n builder: [\"value\", \"tail\"],\n fields: {\n value: {\n validate: (0, _utils.chain)((0, _utils.assertShape)({\n raw: {\n validate: (0, _utils.assertValueType)(\"string\")\n },\n cooked: {\n validate: (0, _utils.assertValueType)(\"string\"),\n optional: true\n }\n }), function templateElementCookedValidator(node) {\n const raw = node.value.raw;\n let unterminatedCalled = false;\n const error = () => {\n throw new Error(\"Internal @babel/types error.\");\n };\n const {\n str,\n firstInvalidLoc\n } = (0, _helperStringParser.readStringContents)(\"template\", raw, 0, 0, 0, {\n unterminated() {\n unterminatedCalled = true;\n },\n strictNumericEscape: error,\n invalidEscapeSequence: error,\n numericSeparatorInEscapeSequence: error,\n unexpectedNumericSeparator: error,\n invalidDigit: error,\n invalidCodePoint: error\n });\n if (!unterminatedCalled) throw new Error(\"Invalid raw\");\n node.value.cooked = firstInvalidLoc ? null : str;\n })\n },\n tail: {\n default: false\n }\n }\n});\ndefineType(\"TemplateLiteral\", {\n visitor: [\"quasis\", \"expressions\"],\n aliases: [\"Expression\", \"Literal\"],\n fields: {\n quasis: (0, _utils.validateArrayOfType)(\"TemplateElement\"),\n expressions: {\n validate: (0, _utils.chain)((0, _utils.assertValueType)(\"array\"), (0, _utils.assertEach)((0, _utils.assertNodeType)(\"Expression\", \"TSType\")), function (node, key, val) {\n if (node.quasis.length !== val.length + 1) {\n throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of expressions.\\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);\n }\n })\n }\n }\n});\ndefineType(\"YieldExpression\", {\n builder: [\"argument\", \"delegate\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n delegate: {\n validate: process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.chain)((0, _utils.assertValueType)(\"boolean\"), Object.assign(function (node, key, val) {\n if (val && !node.argument) {\n throw new TypeError(\"Property delegate of YieldExpression cannot be true if there is no argument\");\n }\n }, {\n type: \"boolean\"\n })) : (0, _utils.assertValueType)(\"boolean\"),\n default: false\n },\n argument: {\n optional: true,\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\ndefineType(\"AwaitExpression\", {\n builder: [\"argument\"],\n visitor: [\"argument\"],\n aliases: [\"Expression\", \"Terminatorless\"],\n fields: {\n argument: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\ndefineType(\"Import\", {\n aliases: [\"Expression\"]\n});\ndefineType(\"BigIntLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: (0, _utils.assertValueType)(\"string\")\n }\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\ndefineType(\"ExportNamespaceSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n }\n }\n});\ndefineType(\"OptionalMemberExpression\", {\n builder: [\"object\", \"property\", \"computed\", \"optional\"],\n visitor: [\"object\", \"property\"],\n aliases: [\"Expression\"],\n fields: {\n object: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n property: {\n validate: function () {\n const normal = (0, _utils.assertNodeType)(\"Identifier\");\n const computed = (0, _utils.assertNodeType)(\"Expression\");\n const validator = Object.assign(function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n }, {\n oneOfNodeTypes: [\"Expression\", \"Identifier\"]\n });\n return validator;\n }()\n },\n computed: {\n default: false\n },\n optional: {\n validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)(\"boolean\") : (0, _utils.chain)((0, _utils.assertValueType)(\"boolean\"), (0, _utils.assertOptionalChainStart)())\n }\n }\n});\ndefineType(\"OptionalCallExpression\", {\n visitor: [\"callee\", \"typeParameters\", \"typeArguments\", \"arguments\"],\n builder: [\"callee\", \"arguments\", \"optional\"],\n aliases: [\"Expression\"],\n fields: Object.assign({\n callee: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n arguments: (0, _utils.validateArrayOfType)(\"Expression\", \"SpreadElement\", \"ArgumentPlaceholder\"),\n optional: {\n validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)(\"boolean\") : (0, _utils.chain)((0, _utils.assertValueType)(\"boolean\"), (0, _utils.assertOptionalChainStart)())\n },\n typeArguments: {\n validate: (0, _utils.assertNodeType)(\"TypeParameterInstantiation\"),\n optional: true\n }\n }, {\n typeParameters: {\n validate: (0, _utils.assertNodeType)(\"TSTypeParameterInstantiation\"),\n optional: true\n }\n })\n});\ndefineType(\"ClassProperty\", Object.assign({\n visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\"key\", \"value\", \"typeAnnotation\", \"decorators\", \"computed\", \"static\"],\n aliases: [\"Property\"]\n}, classMethodOrPropertyUnionShapeCommon(), {\n fields: Object.assign({}, classMethodOrPropertyCommon(), {\n value: {\n validate: (0, _utils.assertNodeType)(\"Expression\"),\n optional: true\n },\n definite: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n typeAnnotation: {\n validate: (0, _utils.assertNodeType)(\"TypeAnnotation\", \"TSTypeAnnotation\", \"Noop\"),\n optional: true\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n },\n readonly: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n declare: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n variance: {\n validate: (0, _utils.assertNodeType)(\"Variance\"),\n optional: true\n }\n })\n}));\ndefineType(\"ClassAccessorProperty\", Object.assign({\n visitor: [\"decorators\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\"key\", \"value\", \"typeAnnotation\", \"decorators\", \"computed\", \"static\"],\n aliases: [\"Property\", \"Accessor\"]\n}, classMethodOrPropertyUnionShapeCommon(true), {\n fields: Object.assign({}, classMethodOrPropertyCommon(), {\n key: {\n validate: (0, _utils.chain)(function () {\n const normal = (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"PrivateName\");\n const computed = (0, _utils.assertNodeType)(\"Expression\");\n return function (node, key, val) {\n const validator = node.computed ? computed : normal;\n validator(node, key, val);\n };\n }(), (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\", \"NumericLiteral\", \"BigIntLiteral\", \"Expression\", \"PrivateName\"))\n },\n value: {\n validate: (0, _utils.assertNodeType)(\"Expression\"),\n optional: true\n },\n definite: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n typeAnnotation: {\n validate: (0, _utils.assertNodeType)(\"TypeAnnotation\", \"TSTypeAnnotation\", \"Noop\"),\n optional: true\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n },\n readonly: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n declare: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n variance: {\n validate: (0, _utils.assertNodeType)(\"Variance\"),\n optional: true\n }\n })\n}));\ndefineType(\"ClassPrivateProperty\", {\n visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n builder: [\"key\", \"value\", \"decorators\", \"static\"],\n aliases: [\"Property\", \"Private\"],\n fields: {\n key: {\n validate: (0, _utils.assertNodeType)(\"PrivateName\")\n },\n value: {\n validate: (0, _utils.assertNodeType)(\"Expression\"),\n optional: true\n },\n typeAnnotation: {\n validate: (0, _utils.assertNodeType)(\"TypeAnnotation\", \"TSTypeAnnotation\", \"Noop\"),\n optional: true\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n },\n static: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n default: false\n },\n readonly: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n optional: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n definite: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n variance: {\n validate: (0, _utils.assertNodeType)(\"Variance\"),\n optional: true\n }\n }\n});\ndefineType(\"ClassPrivateMethod\", {\n builder: [\"kind\", \"key\", \"params\", \"body\", \"static\"],\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\", \"body\"],\n aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\", \"Private\"],\n fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {\n kind: {\n validate: (0, _utils.assertOneOf)(\"get\", \"set\", \"method\"),\n default: \"method\"\n },\n key: {\n validate: (0, _utils.assertNodeType)(\"PrivateName\")\n },\n body: {\n validate: (0, _utils.assertNodeType)(\"BlockStatement\")\n }\n })\n});\ndefineType(\"PrivateName\", {\n visitor: [\"id\"],\n aliases: [\"Private\"],\n fields: {\n id: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n }\n }\n});\ndefineType(\"StaticBlock\", {\n visitor: [\"body\"],\n fields: {\n body: (0, _utils.validateArrayOfType)(\"Statement\")\n },\n aliases: [\"Scopable\", \"BlockParent\", \"FunctionParent\"]\n});\ndefineType(\"ImportAttribute\", {\n visitor: [\"key\", \"value\"],\n fields: {\n key: {\n validate: (0, _utils.assertNodeType)(\"Identifier\", \"StringLiteral\")\n },\n value: {\n validate: (0, _utils.assertNodeType)(\"StringLiteral\")\n }\n }\n});\n\n//# sourceMappingURL=core.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = is;\nvar _shallowEqual = require(\"../utils/shallowEqual.js\");\nvar _isType = require(\"./isType.js\");\nvar _isPlaceholderType = require(\"./isPlaceholderType.js\");\nvar _index = require(\"../definitions/index.js\");\nfunction is(type, node, opts) {\n if (!node) return false;\n const matches = (0, _isType.default)(node.type, type);\n if (!matches) {\n if (!opts && node.type === \"Placeholder\" && type in _index.FLIPPED_ALIAS_KEYS) {\n return (0, _isPlaceholderType.default)(node.expectedNode, type);\n }\n return false;\n }\n if (opts === undefined) {\n return true;\n } else {\n return (0, _shallowEqual.default)(node, opts);\n }\n}\n\n//# sourceMappingURL=is.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isType;\nvar _index = require(\"../definitions/index.js\");\nfunction isType(nodeType, targetType) {\n if (nodeType === targetType) return true;\n if (nodeType == null) return false;\n if (_index.ALIAS_KEYS[targetType]) return false;\n const aliases = _index.FLIPPED_ALIAS_KEYS[targetType];\n if (aliases != null && aliases.includes(nodeType)) return true;\n return false;\n}\n\n//# sourceMappingURL=isType.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPlaceholderType;\nvar _index = require(\"../definitions/index.js\");\nfunction isPlaceholderType(placeholderType, targetType) {\n if (placeholderType === targetType) return true;\n const aliases = _index.PLACEHOLDERS_ALIAS[placeholderType];\n if (aliases != null && aliases.includes(targetType)) return true;\n return false;\n}\n\n//# sourceMappingURL=isPlaceholderType.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isValidIdentifier;\nvar _helperValidatorIdentifier = require(\"@babel/helper-validator-identifier\");\nfunction isValidIdentifier(name, reserved = true) {\n if (typeof name !== \"string\") return false;\n if (reserved) {\n if ((0, _helperValidatorIdentifier.isKeyword)(name) || (0, _helperValidatorIdentifier.isStrictReservedWord)(name, true)) {\n return false;\n }\n }\n return (0, _helperValidatorIdentifier.isIdentifierName)(name);\n}\n\n//# sourceMappingURL=isValidIdentifier.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UPDATE_OPERATORS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.STATEMENT_OR_BLOCK_KEYS = exports.NUMBER_UNARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.LOGICAL_OPERATORS = exports.INHERIT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.EQUALITY_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.COMMENT_KEYS = exports.BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.BINARY_OPERATORS = exports.ASSIGNMENT_OPERATORS = void 0;\nconst STATEMENT_OR_BLOCK_KEYS = exports.STATEMENT_OR_BLOCK_KEYS = [\"consequent\", \"body\", \"alternate\"];\nconst FLATTENABLE_KEYS = exports.FLATTENABLE_KEYS = [\"body\", \"expressions\"];\nconst FOR_INIT_KEYS = exports.FOR_INIT_KEYS = [\"left\", \"init\"];\nconst COMMENT_KEYS = exports.COMMENT_KEYS = [\"leadingComments\", \"trailingComments\", \"innerComments\"];\nconst LOGICAL_OPERATORS = exports.LOGICAL_OPERATORS = [\"||\", \"&&\", \"??\"];\nconst UPDATE_OPERATORS = exports.UPDATE_OPERATORS = [\"++\", \"--\"];\nconst BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = [\">\", \"<\", \">=\", \"<=\"];\nconst EQUALITY_BINARY_OPERATORS = exports.EQUALITY_BINARY_OPERATORS = [\"==\", \"===\", \"!=\", \"!==\"];\nconst COMPARISON_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, \"in\", \"instanceof\"];\nconst BOOLEAN_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS];\nconst NUMBER_BINARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = [\"-\", \"/\", \"%\", \"*\", \"**\", \"&\", \"|\", \">>\", \">>>\", \"<<\", \"^\"];\nconst BINARY_OPERATORS = exports.BINARY_OPERATORS = [\"+\", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS, \"|>\"];\nconst ASSIGNMENT_OPERATORS = exports.ASSIGNMENT_OPERATORS = [\"=\", \"+=\", ...NUMBER_BINARY_OPERATORS.map(op => op + \"=\"), ...LOGICAL_OPERATORS.map(op => op + \"=\")];\nconst BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_UNARY_OPERATORS = [\"delete\", \"!\"];\nconst NUMBER_UNARY_OPERATORS = exports.NUMBER_UNARY_OPERATORS = [\"+\", \"-\", \"~\"];\nconst STRING_UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = [\"typeof\"];\nconst UNARY_OPERATORS = exports.UNARY_OPERATORS = [\"void\", \"throw\", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS];\nconst INHERIT_KEYS = exports.INHERIT_KEYS = {\n optional: [\"typeAnnotation\", \"typeParameters\", \"returnType\"],\n force: [\"start\", \"loc\", \"end\"]\n};\nexports.BLOCK_SCOPED_SYMBOL = Symbol.for(\"var used to be block scoped\");\nexports.NOT_LOCAL_BINDING = Symbol.for(\"should not be considered a local binding\");\n\n//# sourceMappingURL=index.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.allExpandedTypes = exports.VISITOR_KEYS = exports.NODE_UNION_SHAPES__PRIVATE = exports.NODE_PARENT_VALIDATIONS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.ALIAS_KEYS = void 0;\nexports.arrayOf = arrayOf;\nexports.arrayOfType = arrayOfType;\nexports.assertEach = assertEach;\nexports.assertNodeOrValueType = assertNodeOrValueType;\nexports.assertNodeType = assertNodeType;\nexports.assertOneOf = assertOneOf;\nexports.assertOptionalChainStart = assertOptionalChainStart;\nexports.assertShape = assertShape;\nexports.assertValueType = assertValueType;\nexports.chain = chain;\nexports.default = defineType;\nexports.defineAliasedType = defineAliasedType;\nexports.validate = validate;\nexports.validateArrayOfType = validateArrayOfType;\nexports.validateOptional = validateOptional;\nexports.validateOptionalType = validateOptionalType;\nexports.validateType = validateType;\nvar _is = require(\"../validators/is.js\");\nvar _validate = require(\"../validators/validate.js\");\nconst VISITOR_KEYS = exports.VISITOR_KEYS = {};\nconst ALIAS_KEYS = exports.ALIAS_KEYS = {};\nconst FLIPPED_ALIAS_KEYS = exports.FLIPPED_ALIAS_KEYS = {};\nconst NODE_FIELDS = exports.NODE_FIELDS = {};\nconst BUILDER_KEYS = exports.BUILDER_KEYS = {};\nconst DEPRECATED_KEYS = exports.DEPRECATED_KEYS = {};\nconst NODE_PARENT_VALIDATIONS = exports.NODE_PARENT_VALIDATIONS = {};\nconst NODE_UNION_SHAPES__PRIVATE = exports.NODE_UNION_SHAPES__PRIVATE = {};\nfunction getType(val) {\n if (Array.isArray(val)) {\n return \"array\";\n } else if (val === null) {\n return \"null\";\n } else {\n return typeof val;\n }\n}\nfunction validate(validate) {\n return {\n validate\n };\n}\nfunction validateType(...typeNames) {\n return validate(assertNodeType(...typeNames));\n}\nfunction validateOptional(validate) {\n return {\n validate,\n optional: true\n };\n}\nfunction validateOptionalType(...typeNames) {\n return {\n validate: assertNodeType(...typeNames),\n optional: true\n };\n}\nfunction arrayOf(elementType) {\n return chain(assertValueType(\"array\"), assertEach(elementType));\n}\nfunction arrayOfType(...typeNames) {\n return arrayOf(assertNodeType(...typeNames));\n}\nfunction validateArrayOfType(...typeNames) {\n return validate(arrayOfType(...typeNames));\n}\nfunction assertEach(callback) {\n const childValidator = process.env.BABEL_TYPES_8_BREAKING ? _validate.validateChild : () => {};\n function validator(node, key, val) {\n if (!Array.isArray(val)) return;\n let i = 0;\n const subKey = {\n toString() {\n return `${key}[${i}]`;\n }\n };\n for (; i < val.length; i++) {\n const v = val[i];\n callback(node, subKey, v);\n childValidator(node, subKey, v);\n }\n }\n validator.each = callback;\n return validator;\n}\nfunction assertOneOf(...values) {\n function validate(node, key, val) {\n if (!values.includes(val)) {\n throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`);\n }\n }\n validate.oneOf = values;\n return validate;\n}\nconst allExpandedTypes = exports.allExpandedTypes = [];\nfunction assertNodeType(...types) {\n const expandedTypes = new Set();\n allExpandedTypes.push({\n types,\n set: expandedTypes\n });\n function validate(node, key, val) {\n const valType = val == null ? void 0 : val.type;\n if (valType != null) {\n if (expandedTypes.has(valType)) {\n (0, _validate.validateChild)(node, key, val);\n return;\n }\n if (valType === \"Placeholder\") {\n for (const type of types) {\n if ((0, _is.default)(type, val)) {\n (0, _validate.validateChild)(node, key, val);\n return;\n }\n }\n }\n }\n throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(valType)}`);\n }\n validate.oneOfNodeTypes = types;\n return validate;\n}\nfunction assertNodeOrValueType(...types) {\n function validate(node, key, val) {\n const primitiveType = getType(val);\n for (const type of types) {\n if (primitiveType === type || (0, _is.default)(type, val)) {\n (0, _validate.validateChild)(node, key, val);\n return;\n }\n }\n throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`);\n }\n validate.oneOfNodeOrValueTypes = types;\n return validate;\n}\nfunction assertValueType(type) {\n function validate(node, key, val) {\n if (getType(val) === type) {\n return;\n }\n throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`);\n }\n validate.type = type;\n return validate;\n}\nfunction assertShape(shape) {\n const keys = Object.keys(shape);\n function validate(node, key, val) {\n const errors = [];\n for (const property of keys) {\n try {\n (0, _validate.validateField)(node, property, val[property], shape[property]);\n } catch (error) {\n if (error instanceof TypeError) {\n errors.push(error.message);\n continue;\n }\n throw error;\n }\n }\n if (errors.length) {\n throw new TypeError(`Property ${key} of ${node.type} expected to have the following:\\n${errors.join(\"\\n\")}`);\n }\n }\n validate.shapeOf = shape;\n return validate;\n}\nfunction assertOptionalChainStart() {\n function validate(node) {\n var _current;\n let current = node;\n while (node) {\n const {\n type\n } = current;\n if (type === \"OptionalCallExpression\") {\n if (current.optional) return;\n current = current.callee;\n continue;\n }\n if (type === \"OptionalMemberExpression\") {\n if (current.optional) return;\n current = current.object;\n continue;\n }\n break;\n }\n throw new TypeError(`Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${(_current = current) == null ? void 0 : _current.type}`);\n }\n return validate;\n}\nfunction chain(...fns) {\n function validate(...args) {\n for (const fn of fns) {\n fn(...args);\n }\n }\n validate.chainOf = fns;\n if (fns.length >= 2 && \"type\" in fns[0] && fns[0].type === \"array\" && !(\"each\" in fns[1])) {\n throw new Error(`An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.`);\n }\n return validate;\n}\nconst validTypeOpts = new Set([\"aliases\", \"builder\", \"deprecatedAlias\", \"fields\", \"inherits\", \"visitor\", \"validate\", \"unionShape\"]);\nconst validFieldKeys = new Set([\"default\", \"optional\", \"deprecated\", \"validate\"]);\nconst store = {};\nfunction defineAliasedType(...aliases) {\n return (type, opts = {}) => {\n let defined = opts.aliases;\n if (!defined) {\n var _store$opts$inherits$;\n if (opts.inherits) defined = (_store$opts$inherits$ = store[opts.inherits].aliases) == null ? void 0 : _store$opts$inherits$.slice();\n defined != null ? defined : defined = [];\n opts.aliases = defined;\n }\n const additional = aliases.filter(a => !defined.includes(a));\n defined.unshift(...additional);\n defineType(type, opts);\n };\n}\nfunction defineType(type, opts = {}) {\n const inherits = opts.inherits && store[opts.inherits] || {};\n let fields = opts.fields;\n if (!fields) {\n fields = {};\n if (inherits.fields) {\n const keys = Object.getOwnPropertyNames(inherits.fields);\n for (const key of keys) {\n const field = inherits.fields[key];\n const def = field.default;\n if (Array.isArray(def) ? def.length > 0 : def && typeof def === \"object\") {\n throw new Error(\"field defaults can only be primitives or empty arrays currently\");\n }\n fields[key] = {\n default: Array.isArray(def) ? [] : def,\n optional: field.optional,\n deprecated: field.deprecated,\n validate: field.validate\n };\n }\n }\n }\n const visitor = opts.visitor || inherits.visitor || [];\n const aliases = opts.aliases || inherits.aliases || [];\n const builder = opts.builder || inherits.builder || opts.visitor || [];\n for (const k of Object.keys(opts)) {\n if (!validTypeOpts.has(k)) {\n throw new Error(`Unknown type option \"${k}\" on ${type}`);\n }\n }\n if (opts.deprecatedAlias) {\n DEPRECATED_KEYS[opts.deprecatedAlias] = type;\n }\n for (const key of visitor.concat(builder)) {\n fields[key] = fields[key] || {};\n }\n for (const key of Object.keys(fields)) {\n const field = fields[key];\n if (field.default !== undefined && !builder.includes(key)) {\n field.optional = true;\n }\n if (field.default === undefined) {\n field.default = null;\n } else if (!field.validate && field.default != null) {\n field.validate = assertValueType(getType(field.default));\n }\n for (const k of Object.keys(field)) {\n if (!validFieldKeys.has(k)) {\n throw new Error(`Unknown field key \"${k}\" on ${type}.${key}`);\n }\n }\n }\n VISITOR_KEYS[type] = opts.visitor = visitor;\n BUILDER_KEYS[type] = opts.builder = builder;\n NODE_FIELDS[type] = opts.fields = fields;\n ALIAS_KEYS[type] = opts.aliases = aliases;\n aliases.forEach(alias => {\n FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];\n FLIPPED_ALIAS_KEYS[alias].push(type);\n });\n if (opts.validate) {\n NODE_PARENT_VALIDATIONS[type] = opts.validate;\n }\n if (opts.unionShape) {\n NODE_UNION_SHAPES__PRIVATE[type] = opts.unionShape;\n }\n store[type] = opts;\n}\n\n//# sourceMappingURL=utils.js.map\n","\n\nvar _core = require(\"./core.js\");\nvar _utils = require(\"./utils.js\");\nconst defineType = (0, _utils.defineAliasedType)(\"Flow\");\nconst defineInterfaceishType = name => {\n const isDeclareClass = name === \"DeclareClass\";\n defineType(name, {\n builder: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n visitor: [\"id\", \"typeParameters\", \"extends\", ...(isDeclareClass ? [\"mixins\", \"implements\"] : []), \"body\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: Object.assign({\n id: (0, _utils.validateType)(\"Identifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TypeParameterDeclaration\"),\n extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)(\"InterfaceExtends\"))\n }, isDeclareClass ? {\n mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)(\"InterfaceExtends\")),\n implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)(\"ClassImplements\"))\n } : {}, {\n body: (0, _utils.validateType)(\"ObjectTypeAnnotation\")\n })\n });\n};\ndefineType(\"AnyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"ArrayTypeAnnotation\", {\n visitor: [\"elementType\"],\n aliases: [\"FlowType\"],\n fields: {\n elementType: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"BooleanTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"BooleanLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"NullLiteralTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"ClassImplements\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TypeParameterInstantiation\")\n }\n});\ndefineInterfaceishType(\"DeclareClass\");\ndefineType(\"DeclareFunction\", {\n builder: [\"id\"],\n visitor: [\"id\", \"predicate\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n predicate: (0, _utils.validateOptionalType)(\"DeclaredPredicate\")\n }\n});\ndefineInterfaceishType(\"DeclareInterface\");\ndefineType(\"DeclareModule\", {\n builder: [\"id\", \"body\", \"kind\"],\n visitor: [\"id\", \"body\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\", \"StringLiteral\"),\n body: (0, _utils.validateType)(\"BlockStatement\"),\n kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)(\"CommonJS\", \"ES\"))\n }\n});\ndefineType(\"DeclareModuleExports\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n typeAnnotation: (0, _utils.validateType)(\"TypeAnnotation\")\n }\n});\ndefineType(\"DeclareTypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TypeParameterDeclaration\"),\n right: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"DeclareOpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TypeParameterDeclaration\"),\n supertype: (0, _utils.validateOptionalType)(\"FlowType\"),\n impltype: (0, _utils.validateOptionalType)(\"FlowType\")\n }\n});\ndefineType(\"DeclareVariable\", {\n visitor: [\"id\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\")\n }\n});\ndefineType(\"DeclareExportDeclaration\", {\n visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: Object.assign({\n declaration: (0, _utils.validateOptionalType)(\"Flow\"),\n specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)(\"ExportSpecifier\", \"ExportNamespaceSpecifier\")),\n source: (0, _utils.validateOptionalType)(\"StringLiteral\"),\n default: (0, _utils.validateOptional)((0, _utils.assertValueType)(\"boolean\"))\n }, _core.importAttributes)\n});\ndefineType(\"DeclareExportAllDeclaration\", {\n visitor: [\"source\", \"attributes\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: Object.assign({\n source: (0, _utils.validateType)(\"StringLiteral\"),\n exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)(\"type\", \"value\"))\n }, _core.importAttributes)\n});\ndefineType(\"DeclaredPredicate\", {\n visitor: [\"value\"],\n aliases: [\"FlowPredicate\"],\n fields: {\n value: (0, _utils.validateType)(\"Flow\")\n }\n});\ndefineType(\"ExistsTypeAnnotation\", {\n aliases: [\"FlowType\"]\n});\ndefineType(\"FunctionTypeAnnotation\", {\n builder: [\"typeParameters\", \"params\", \"rest\", \"returnType\"],\n visitor: [\"typeParameters\", \"this\", \"params\", \"rest\", \"returnType\"],\n aliases: [\"FlowType\"],\n fields: {\n typeParameters: (0, _utils.validateOptionalType)(\"TypeParameterDeclaration\"),\n params: (0, _utils.validateArrayOfType)(\"FunctionTypeParam\"),\n rest: (0, _utils.validateOptionalType)(\"FunctionTypeParam\"),\n this: (0, _utils.validateOptionalType)(\"FunctionTypeParam\"),\n returnType: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"FunctionTypeParam\", {\n visitor: [\"name\", \"typeAnnotation\"],\n fields: {\n name: (0, _utils.validateOptionalType)(\"Identifier\"),\n typeAnnotation: (0, _utils.validateType)(\"FlowType\"),\n optional: (0, _utils.validateOptional)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"GenericTypeAnnotation\", {\n visitor: [\"id\", \"typeParameters\"],\n aliases: [\"FlowType\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\", \"QualifiedTypeIdentifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TypeParameterInstantiation\")\n }\n});\ndefineType(\"InferredPredicate\", {\n aliases: [\"FlowPredicate\"]\n});\ndefineType(\"InterfaceExtends\", {\n visitor: [\"id\", \"typeParameters\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\", \"QualifiedTypeIdentifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TypeParameterInstantiation\")\n }\n});\ndefineInterfaceishType(\"InterfaceDeclaration\");\ndefineType(\"InterfaceTypeAnnotation\", {\n visitor: [\"extends\", \"body\"],\n aliases: [\"FlowType\"],\n fields: {\n extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)(\"InterfaceExtends\")),\n body: (0, _utils.validateType)(\"ObjectTypeAnnotation\")\n }\n});\ndefineType(\"IntersectionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: (0, _utils.validate)((0, _utils.arrayOfType)(\"FlowType\"))\n }\n});\ndefineType(\"MixedTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"EmptyTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"NullableTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n aliases: [\"FlowType\"],\n fields: {\n typeAnnotation: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"NumberLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: (0, _utils.validate)((0, _utils.assertValueType)(\"number\"))\n }\n});\ndefineType(\"NumberTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"ObjectTypeAnnotation\", {\n visitor: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\"],\n aliases: [\"FlowType\"],\n builder: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\", \"exact\"],\n fields: {\n properties: (0, _utils.validate)((0, _utils.arrayOfType)(\"ObjectTypeProperty\", \"ObjectTypeSpreadProperty\")),\n indexers: {\n validate: (0, _utils.arrayOfType)(\"ObjectTypeIndexer\"),\n optional: true,\n default: []\n },\n callProperties: {\n validate: (0, _utils.arrayOfType)(\"ObjectTypeCallProperty\"),\n optional: true,\n default: []\n },\n internalSlots: {\n validate: (0, _utils.arrayOfType)(\"ObjectTypeInternalSlot\"),\n optional: true,\n default: []\n },\n exact: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n default: false\n },\n inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"ObjectTypeInternalSlot\", {\n visitor: [\"id\", \"value\"],\n builder: [\"id\", \"value\", \"optional\", \"static\", \"method\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n value: (0, _utils.validateType)(\"FlowType\"),\n optional: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\")),\n static: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\")),\n method: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"ObjectTypeCallProperty\", {\n visitor: [\"value\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n value: (0, _utils.validateType)(\"FlowType\"),\n static: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"ObjectTypeIndexer\", {\n visitor: [\"variance\", \"id\", \"key\", \"value\"],\n builder: [\"id\", \"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n id: (0, _utils.validateOptionalType)(\"Identifier\"),\n key: (0, _utils.validateType)(\"FlowType\"),\n value: (0, _utils.validateType)(\"FlowType\"),\n static: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\")),\n variance: (0, _utils.validateOptionalType)(\"Variance\")\n }\n});\ndefineType(\"ObjectTypeProperty\", {\n visitor: [\"key\", \"value\", \"variance\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n key: (0, _utils.validateType)(\"Identifier\", \"StringLiteral\"),\n value: (0, _utils.validateType)(\"FlowType\"),\n kind: (0, _utils.validate)((0, _utils.assertOneOf)(\"init\", \"get\", \"set\")),\n static: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\")),\n proto: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\")),\n optional: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\")),\n variance: (0, _utils.validateOptionalType)(\"Variance\"),\n method: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"ObjectTypeSpreadProperty\", {\n visitor: [\"argument\"],\n aliases: [\"UserWhitespacable\"],\n fields: {\n argument: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"OpaqueType\", {\n visitor: [\"id\", \"typeParameters\", \"supertype\", \"impltype\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TypeParameterDeclaration\"),\n supertype: (0, _utils.validateOptionalType)(\"FlowType\"),\n impltype: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"QualifiedTypeIdentifier\", {\n visitor: [\"qualification\", \"id\"],\n builder: [\"id\", \"qualification\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n qualification: (0, _utils.validateType)(\"Identifier\", \"QualifiedTypeIdentifier\")\n }\n});\ndefineType(\"StringLiteralTypeAnnotation\", {\n builder: [\"value\"],\n aliases: [\"FlowType\"],\n fields: {\n value: (0, _utils.validate)((0, _utils.assertValueType)(\"string\"))\n }\n});\ndefineType(\"StringTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"SymbolTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"ThisTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"TupleTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: (0, _utils.validate)((0, _utils.arrayOfType)(\"FlowType\"))\n }\n});\ndefineType(\"TypeofTypeAnnotation\", {\n visitor: [\"argument\"],\n aliases: [\"FlowType\"],\n fields: {\n argument: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"TypeAlias\", {\n visitor: [\"id\", \"typeParameters\", \"right\"],\n aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TypeParameterDeclaration\"),\n right: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"TypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"TypeCastExpression\", {\n visitor: [\"expression\", \"typeAnnotation\"],\n aliases: [\"ExpressionWrapper\", \"Expression\"],\n fields: {\n expression: (0, _utils.validateType)(\"Expression\"),\n typeAnnotation: (0, _utils.validateType)(\"TypeAnnotation\")\n }\n});\ndefineType(\"TypeParameter\", {\n visitor: [\"bound\", \"default\", \"variance\"],\n fields: {\n name: (0, _utils.validate)((0, _utils.assertValueType)(\"string\")),\n bound: (0, _utils.validateOptionalType)(\"TypeAnnotation\"),\n default: (0, _utils.validateOptionalType)(\"FlowType\"),\n variance: (0, _utils.validateOptionalType)(\"Variance\")\n }\n});\ndefineType(\"TypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: (0, _utils.validate)((0, _utils.arrayOfType)(\"TypeParameter\"))\n }\n});\ndefineType(\"TypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: (0, _utils.validate)((0, _utils.arrayOfType)(\"FlowType\"))\n }\n});\ndefineType(\"UnionTypeAnnotation\", {\n visitor: [\"types\"],\n aliases: [\"FlowType\"],\n fields: {\n types: (0, _utils.validate)((0, _utils.arrayOfType)(\"FlowType\"))\n }\n});\ndefineType(\"Variance\", {\n builder: [\"kind\"],\n fields: {\n kind: (0, _utils.validate)((0, _utils.assertOneOf)(\"minus\", \"plus\"))\n }\n});\ndefineType(\"VoidTypeAnnotation\", {\n aliases: [\"FlowType\", \"FlowBaseAnnotation\"]\n});\ndefineType(\"EnumDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n body: (0, _utils.validateType)(\"EnumBooleanBody\", \"EnumNumberBody\", \"EnumStringBody\", \"EnumSymbolBody\")\n }\n});\ndefineType(\"EnumBooleanBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n explicitType: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\")),\n members: (0, _utils.validateArrayOfType)(\"EnumBooleanMember\"),\n hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"EnumNumberBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n explicitType: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\")),\n members: (0, _utils.validateArrayOfType)(\"EnumNumberMember\"),\n hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"EnumStringBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n explicitType: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\")),\n members: (0, _utils.validateArrayOfType)(\"EnumStringMember\", \"EnumDefaultedMember\"),\n hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"EnumSymbolBody\", {\n aliases: [\"EnumBody\"],\n visitor: [\"members\"],\n fields: {\n members: (0, _utils.validateArrayOfType)(\"EnumDefaultedMember\"),\n hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\ndefineType(\"EnumBooleanMember\", {\n aliases: [\"EnumMember\"],\n builder: [\"id\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n init: (0, _utils.validateType)(\"BooleanLiteral\")\n }\n});\ndefineType(\"EnumNumberMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n init: (0, _utils.validateType)(\"NumericLiteral\")\n }\n});\ndefineType(\"EnumStringMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\", \"init\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\"),\n init: (0, _utils.validateType)(\"StringLiteral\")\n }\n});\ndefineType(\"EnumDefaultedMember\", {\n aliases: [\"EnumMember\"],\n visitor: [\"id\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\")\n }\n});\ndefineType(\"IndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: (0, _utils.validateType)(\"FlowType\"),\n indexType: (0, _utils.validateType)(\"FlowType\")\n }\n});\ndefineType(\"OptionalIndexedAccessType\", {\n visitor: [\"objectType\", \"indexType\"],\n aliases: [\"FlowType\"],\n fields: {\n objectType: (0, _utils.validateType)(\"FlowType\"),\n indexType: (0, _utils.validateType)(\"FlowType\"),\n optional: (0, _utils.validate)((0, _utils.assertValueType)(\"boolean\"))\n }\n});\n\n//# sourceMappingURL=flow.js.map\n","\n\nvar _utils = require(\"./utils.js\");\nconst defineType = (0, _utils.defineAliasedType)(\"JSX\");\ndefineType(\"JSXAttribute\", {\n visitor: [\"name\", \"value\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: (0, _utils.assertNodeType)(\"JSXIdentifier\", \"JSXNamespacedName\")\n },\n value: {\n optional: true,\n validate: (0, _utils.assertNodeType)(\"JSXElement\", \"JSXFragment\", \"StringLiteral\", \"JSXExpressionContainer\")\n }\n }\n});\ndefineType(\"JSXClosingElement\", {\n visitor: [\"name\"],\n aliases: [\"Immutable\"],\n fields: {\n name: {\n validate: (0, _utils.assertNodeType)(\"JSXIdentifier\", \"JSXMemberExpression\", \"JSXNamespacedName\")\n }\n }\n});\ndefineType(\"JSXElement\", {\n builder: [\"openingElement\", \"closingElement\", \"children\", \"selfClosing\"],\n visitor: [\"openingElement\", \"children\", \"closingElement\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: Object.assign({\n openingElement: {\n validate: (0, _utils.assertNodeType)(\"JSXOpeningElement\")\n },\n closingElement: {\n optional: true,\n validate: (0, _utils.assertNodeType)(\"JSXClosingElement\")\n },\n children: (0, _utils.validateArrayOfType)(\"JSXText\", \"JSXExpressionContainer\", \"JSXSpreadChild\", \"JSXElement\", \"JSXFragment\")\n }, {\n selfClosing: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n }\n })\n});\ndefineType(\"JSXEmptyExpression\", {});\ndefineType(\"JSXExpressionContainer\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: (0, _utils.assertNodeType)(\"Expression\", \"JSXEmptyExpression\")\n }\n }\n});\ndefineType(\"JSXSpreadChild\", {\n visitor: [\"expression\"],\n aliases: [\"Immutable\"],\n fields: {\n expression: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\ndefineType(\"JSXIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: (0, _utils.assertValueType)(\"string\")\n }\n }\n});\ndefineType(\"JSXMemberExpression\", {\n visitor: [\"object\", \"property\"],\n fields: {\n object: {\n validate: (0, _utils.assertNodeType)(\"JSXMemberExpression\", \"JSXIdentifier\")\n },\n property: {\n validate: (0, _utils.assertNodeType)(\"JSXIdentifier\")\n }\n }\n});\ndefineType(\"JSXNamespacedName\", {\n visitor: [\"namespace\", \"name\"],\n fields: {\n namespace: {\n validate: (0, _utils.assertNodeType)(\"JSXIdentifier\")\n },\n name: {\n validate: (0, _utils.assertNodeType)(\"JSXIdentifier\")\n }\n }\n});\ndefineType(\"JSXOpeningElement\", {\n builder: [\"name\", \"attributes\", \"selfClosing\"],\n visitor: [\"name\", \"typeParameters\", \"typeArguments\", \"attributes\"],\n aliases: [\"Immutable\"],\n fields: Object.assign({\n name: {\n validate: (0, _utils.assertNodeType)(\"JSXIdentifier\", \"JSXMemberExpression\", \"JSXNamespacedName\")\n },\n selfClosing: {\n default: false\n },\n attributes: (0, _utils.validateArrayOfType)(\"JSXAttribute\", \"JSXSpreadAttribute\"),\n typeArguments: {\n validate: (0, _utils.assertNodeType)(\"TypeParameterInstantiation\"),\n optional: true\n }\n }, {\n typeParameters: {\n validate: (0, _utils.assertNodeType)(\"TSTypeParameterInstantiation\"),\n optional: true\n }\n })\n});\ndefineType(\"JSXSpreadAttribute\", {\n visitor: [\"argument\"],\n fields: {\n argument: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\ndefineType(\"JSXText\", {\n aliases: [\"Immutable\"],\n builder: [\"value\"],\n fields: {\n value: {\n validate: (0, _utils.assertValueType)(\"string\")\n }\n }\n});\ndefineType(\"JSXFragment\", {\n builder: [\"openingFragment\", \"closingFragment\", \"children\"],\n visitor: [\"openingFragment\", \"children\", \"closingFragment\"],\n aliases: [\"Immutable\", \"Expression\"],\n fields: {\n openingFragment: {\n validate: (0, _utils.assertNodeType)(\"JSXOpeningFragment\")\n },\n closingFragment: {\n validate: (0, _utils.assertNodeType)(\"JSXClosingFragment\")\n },\n children: (0, _utils.validateArrayOfType)(\"JSXText\", \"JSXExpressionContainer\", \"JSXSpreadChild\", \"JSXElement\", \"JSXFragment\")\n }\n});\ndefineType(\"JSXOpeningFragment\", {\n aliases: [\"Immutable\"]\n});\ndefineType(\"JSXClosingFragment\", {\n aliases: [\"Immutable\"]\n});\n\n//# sourceMappingURL=jsx.js.map\n","\n\nvar _utils = require(\"./utils.js\");\nvar _placeholders = require(\"./placeholders.js\");\nvar _core = require(\"./core.js\");\nconst defineType = (0, _utils.defineAliasedType)(\"Miscellaneous\");\ndefineType(\"Noop\", {\n visitor: []\n});\ndefineType(\"Placeholder\", {\n visitor: [],\n builder: [\"expectedNode\", \"name\"],\n fields: Object.assign({\n name: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n },\n expectedNode: {\n validate: (0, _utils.assertOneOf)(..._placeholders.PLACEHOLDERS)\n }\n }, (0, _core.patternLikeCommon)())\n});\ndefineType(\"V8IntrinsicIdentifier\", {\n builder: [\"name\"],\n fields: {\n name: {\n validate: (0, _utils.assertValueType)(\"string\")\n }\n }\n});\n\n//# sourceMappingURL=misc.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS = void 0;\nvar _utils = require(\"./utils.js\");\nconst PLACEHOLDERS = exports.PLACEHOLDERS = [\"Identifier\", \"StringLiteral\", \"Expression\", \"Statement\", \"Declaration\", \"BlockStatement\", \"ClassBody\", \"Pattern\"];\nconst PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS_ALIAS = {\n Declaration: [\"Statement\"],\n Pattern: [\"PatternLike\", \"LVal\"]\n};\nfor (const type of PLACEHOLDERS) {\n const alias = _utils.ALIAS_KEYS[type];\n if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type] = alias;\n}\nconst PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_FLIPPED_ALIAS = {};\nObject.keys(PLACEHOLDERS_ALIAS).forEach(type => {\n PLACEHOLDERS_ALIAS[type].forEach(alias => {\n if (!hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {\n PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];\n }\n PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);\n });\n});\n\n//# sourceMappingURL=placeholders.js.map\n","\n\nvar _utils = require(\"./utils.js\");\n(0, _utils.default)(\"ArgumentPlaceholder\", {});\n(0, _utils.default)(\"BindExpression\", {\n visitor: [\"object\", \"callee\"],\n aliases: [\"Expression\"],\n fields: !process.env.BABEL_TYPES_8_BREAKING ? {\n object: {\n validate: Object.assign(() => {}, {\n oneOfNodeTypes: [\"Expression\"]\n })\n },\n callee: {\n validate: Object.assign(() => {}, {\n oneOfNodeTypes: [\"Expression\"]\n })\n }\n } : {\n object: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n },\n callee: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\n(0, _utils.default)(\"Decorator\", {\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n }\n});\n(0, _utils.default)(\"DoExpression\", {\n visitor: [\"body\"],\n builder: [\"body\", \"async\"],\n aliases: [\"Expression\"],\n fields: {\n body: {\n validate: (0, _utils.assertNodeType)(\"BlockStatement\")\n },\n async: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n default: false\n }\n }\n});\n(0, _utils.default)(\"ExportDefaultSpecifier\", {\n visitor: [\"exported\"],\n aliases: [\"ModuleSpecifier\"],\n fields: {\n exported: {\n validate: (0, _utils.assertNodeType)(\"Identifier\")\n }\n }\n});\n(0, _utils.default)(\"RecordExpression\", {\n visitor: [\"properties\"],\n aliases: [\"Expression\"],\n fields: {\n properties: (0, _utils.validateArrayOfType)(\"ObjectProperty\", \"SpreadElement\")\n }\n});\n(0, _utils.default)(\"TupleExpression\", {\n fields: {\n elements: {\n validate: (0, _utils.arrayOfType)(\"Expression\", \"SpreadElement\"),\n default: []\n }\n },\n visitor: [\"elements\"],\n aliases: [\"Expression\"]\n});\n(0, _utils.default)(\"DecimalLiteral\", {\n builder: [\"value\"],\n fields: {\n value: {\n validate: (0, _utils.assertValueType)(\"string\")\n }\n },\n aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"]\n});\n(0, _utils.default)(\"ModuleExpression\", {\n visitor: [\"body\"],\n fields: {\n body: {\n validate: (0, _utils.assertNodeType)(\"Program\")\n }\n },\n aliases: [\"Expression\"]\n});\n(0, _utils.default)(\"TopicReference\", {\n aliases: [\"Expression\"]\n});\n(0, _utils.default)(\"PipelineTopicExpression\", {\n builder: [\"expression\"],\n visitor: [\"expression\"],\n fields: {\n expression: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n },\n aliases: [\"Expression\"]\n});\n(0, _utils.default)(\"PipelineBareFunction\", {\n builder: [\"callee\"],\n visitor: [\"callee\"],\n fields: {\n callee: {\n validate: (0, _utils.assertNodeType)(\"Expression\")\n }\n },\n aliases: [\"Expression\"]\n});\n(0, _utils.default)(\"PipelinePrimaryTopicReference\", {\n aliases: [\"Expression\"]\n});\n(0, _utils.default)(\"VoidPattern\", {\n aliases: [\"Pattern\", \"PatternLike\", \"FunctionParameter\"]\n});\n\n//# sourceMappingURL=experimental.js.map\n","\n\nvar _utils = require(\"./utils.js\");\nvar _core = require(\"./core.js\");\nvar _is = require(\"../validators/is.js\");\nconst defineType = (0, _utils.defineAliasedType)(\"TypeScript\");\nconst bool = (0, _utils.assertValueType)(\"boolean\");\nconst tSFunctionTypeAnnotationCommon = () => ({\n returnType: {\n validate: (0, _utils.assertNodeType)(\"TSTypeAnnotation\", \"Noop\"),\n optional: true\n },\n typeParameters: {\n validate: (0, _utils.assertNodeType)(\"TSTypeParameterDeclaration\", \"Noop\"),\n optional: true\n }\n});\ndefineType(\"TSParameterProperty\", {\n aliases: [\"LVal\"],\n visitor: [\"parameter\"],\n fields: {\n accessibility: {\n validate: (0, _utils.assertOneOf)(\"public\", \"private\", \"protected\"),\n optional: true\n },\n readonly: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n parameter: {\n validate: (0, _utils.assertNodeType)(\"Identifier\", \"AssignmentPattern\")\n },\n override: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n decorators: {\n validate: (0, _utils.arrayOfType)(\"Decorator\"),\n optional: true\n }\n }\n});\ndefineType(\"TSDeclareFunction\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n fields: Object.assign({}, (0, _core.functionDeclarationCommon)(), tSFunctionTypeAnnotationCommon())\n});\ndefineType(\"TSDeclareMethod\", Object.assign({\n visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\"]\n}, (0, _core.classMethodOrPropertyUnionShapeCommon)(), {\n fields: Object.assign({}, (0, _core.classMethodOrDeclareMethodCommon)(), tSFunctionTypeAnnotationCommon())\n}));\ndefineType(\"TSQualifiedName\", {\n aliases: [\"TSEntityName\"],\n visitor: [\"left\", \"right\"],\n fields: {\n left: (0, _utils.validateType)(\"TSEntityName\"),\n right: (0, _utils.validateType)(\"Identifier\")\n }\n});\nconst signatureDeclarationCommon = () => ({\n typeParameters: (0, _utils.validateOptionalType)(\"TSTypeParameterDeclaration\"),\n [\"parameters\"]: (0, _utils.validateArrayOfType)(\"ArrayPattern\", \"Identifier\", \"ObjectPattern\", \"RestElement\"),\n [\"typeAnnotation\"]: (0, _utils.validateOptionalType)(\"TSTypeAnnotation\")\n});\nconst callConstructSignatureDeclaration = {\n aliases: [\"TSTypeElement\"],\n visitor: [\"typeParameters\", \"parameters\", \"typeAnnotation\"],\n fields: signatureDeclarationCommon()\n};\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\"TSConstructSignatureDeclaration\", callConstructSignatureDeclaration);\nconst namedTypeElementCommon = () => ({\n key: (0, _utils.validateType)(\"Expression\"),\n computed: {\n default: false\n },\n optional: (0, _utils.validateOptional)(bool)\n});\ndefineType(\"TSPropertySignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeAnnotation\"],\n fields: Object.assign({}, namedTypeElementCommon(), {\n readonly: (0, _utils.validateOptional)(bool),\n typeAnnotation: (0, _utils.validateOptionalType)(\"TSTypeAnnotation\"),\n kind: {\n optional: true,\n validate: (0, _utils.assertOneOf)(\"get\", \"set\")\n }\n })\n});\ndefineType(\"TSMethodSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"key\", \"typeParameters\", \"parameters\", \"typeAnnotation\"],\n fields: Object.assign({}, signatureDeclarationCommon(), namedTypeElementCommon(), {\n kind: {\n validate: (0, _utils.assertOneOf)(\"method\", \"get\", \"set\")\n }\n })\n});\ndefineType(\"TSIndexSignature\", {\n aliases: [\"TSTypeElement\"],\n visitor: [\"parameters\", \"typeAnnotation\"],\n fields: {\n readonly: (0, _utils.validateOptional)(bool),\n static: (0, _utils.validateOptional)(bool),\n parameters: (0, _utils.validateArrayOfType)(\"Identifier\"),\n typeAnnotation: (0, _utils.validateOptionalType)(\"TSTypeAnnotation\")\n }\n});\nconst tsKeywordTypes = [\"TSAnyKeyword\", \"TSBooleanKeyword\", \"TSBigIntKeyword\", \"TSIntrinsicKeyword\", \"TSNeverKeyword\", \"TSNullKeyword\", \"TSNumberKeyword\", \"TSObjectKeyword\", \"TSStringKeyword\", \"TSSymbolKeyword\", \"TSUndefinedKeyword\", \"TSUnknownKeyword\", \"TSVoidKeyword\"];\nfor (const type of tsKeywordTypes) {\n defineType(type, {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {}\n });\n}\ndefineType(\"TSThisType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [],\n fields: {}\n});\nconst fnOrCtrBase = {\n aliases: [\"TSType\"],\n visitor: [\"typeParameters\", \"parameters\", \"typeAnnotation\"]\n};\ndefineType(\"TSFunctionType\", Object.assign({}, fnOrCtrBase, {\n fields: signatureDeclarationCommon()\n}));\ndefineType(\"TSConstructorType\", Object.assign({}, fnOrCtrBase, {\n fields: Object.assign({}, signatureDeclarationCommon(), {\n abstract: (0, _utils.validateOptional)(bool)\n })\n}));\ndefineType(\"TSTypeReference\", {\n aliases: [\"TSType\"],\n visitor: [\"typeName\", \"typeParameters\"],\n fields: {\n typeName: (0, _utils.validateType)(\"TSEntityName\"),\n [\"typeParameters\"]: (0, _utils.validateOptionalType)(\"TSTypeParameterInstantiation\")\n }\n});\ndefineType(\"TSTypePredicate\", {\n aliases: [\"TSType\"],\n visitor: [\"parameterName\", \"typeAnnotation\"],\n builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n fields: {\n parameterName: (0, _utils.validateType)(\"Identifier\", \"TSThisType\"),\n typeAnnotation: (0, _utils.validateOptionalType)(\"TSTypeAnnotation\"),\n asserts: (0, _utils.validateOptional)(bool)\n }\n});\ndefineType(\"TSTypeQuery\", {\n aliases: [\"TSType\"],\n visitor: [\"exprName\", \"typeParameters\"],\n fields: {\n exprName: (0, _utils.validateType)(\"TSEntityName\", \"TSImportType\"),\n [\"typeParameters\"]: (0, _utils.validateOptionalType)(\"TSTypeParameterInstantiation\")\n }\n});\ndefineType(\"TSTypeLiteral\", {\n aliases: [\"TSType\"],\n visitor: [\"members\"],\n fields: {\n members: (0, _utils.validateArrayOfType)(\"TSTypeElement\")\n }\n});\ndefineType(\"TSArrayType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementType\"],\n fields: {\n elementType: (0, _utils.validateType)(\"TSType\")\n }\n});\ndefineType(\"TSTupleType\", {\n aliases: [\"TSType\"],\n visitor: [\"elementTypes\"],\n fields: {\n elementTypes: (0, _utils.validateArrayOfType)(\"TSType\", \"TSNamedTupleMember\")\n }\n});\ndefineType(\"TSOptionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: (0, _utils.validateType)(\"TSType\")\n }\n});\ndefineType(\"TSRestType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: (0, _utils.validateType)(\"TSType\")\n }\n});\ndefineType(\"TSNamedTupleMember\", {\n visitor: [\"label\", \"elementType\"],\n builder: [\"label\", \"elementType\", \"optional\"],\n fields: {\n label: (0, _utils.validateType)(\"Identifier\"),\n optional: {\n validate: bool,\n default: false\n },\n elementType: (0, _utils.validateType)(\"TSType\")\n }\n});\nconst unionOrIntersection = {\n aliases: [\"TSType\"],\n visitor: [\"types\"],\n fields: {\n types: (0, _utils.validateArrayOfType)(\"TSType\")\n }\n};\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\ndefineType(\"TSConditionalType\", {\n aliases: [\"TSType\"],\n visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n fields: {\n checkType: (0, _utils.validateType)(\"TSType\"),\n extendsType: (0, _utils.validateType)(\"TSType\"),\n trueType: (0, _utils.validateType)(\"TSType\"),\n falseType: (0, _utils.validateType)(\"TSType\")\n }\n});\ndefineType(\"TSInferType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\"],\n fields: {\n typeParameter: (0, _utils.validateType)(\"TSTypeParameter\")\n }\n});\ndefineType(\"TSParenthesizedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: (0, _utils.validateType)(\"TSType\")\n }\n});\ndefineType(\"TSTypeOperator\", {\n aliases: [\"TSType\"],\n visitor: [\"typeAnnotation\"],\n builder: [\"typeAnnotation\", \"operator\"],\n fields: {\n operator: {\n validate: (0, _utils.assertValueType)(\"string\"),\n default: \"keyof\"\n },\n typeAnnotation: (0, _utils.validateType)(\"TSType\")\n }\n});\ndefineType(\"TSIndexedAccessType\", {\n aliases: [\"TSType\"],\n visitor: [\"objectType\", \"indexType\"],\n fields: {\n objectType: (0, _utils.validateType)(\"TSType\"),\n indexType: (0, _utils.validateType)(\"TSType\")\n }\n});\ndefineType(\"TSMappedType\", {\n aliases: [\"TSType\"],\n visitor: [\"typeParameter\", \"nameType\", \"typeAnnotation\"],\n builder: [\"typeParameter\", \"typeAnnotation\", \"nameType\"],\n fields: Object.assign({}, {\n typeParameter: (0, _utils.validateType)(\"TSTypeParameter\")\n }, {\n readonly: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, \"+\", \"-\")),\n optional: (0, _utils.validateOptional)((0, _utils.assertOneOf)(true, false, \"+\", \"-\")),\n typeAnnotation: (0, _utils.validateOptionalType)(\"TSType\"),\n nameType: (0, _utils.validateOptionalType)(\"TSType\")\n })\n});\ndefineType(\"TSTemplateLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"quasis\", \"types\"],\n fields: {\n quasis: (0, _utils.validateArrayOfType)(\"TemplateElement\"),\n types: {\n validate: (0, _utils.chain)((0, _utils.assertValueType)(\"array\"), (0, _utils.assertEach)((0, _utils.assertNodeType)(\"TSType\")), function (node, key, val) {\n if (node.quasis.length !== val.length + 1) {\n throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of types.\\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);\n }\n })\n }\n }\n});\ndefineType(\"TSLiteralType\", {\n aliases: [\"TSType\", \"TSBaseType\"],\n visitor: [\"literal\"],\n fields: {\n literal: {\n validate: function () {\n const unaryExpression = (0, _utils.assertNodeType)(\"NumericLiteral\", \"BigIntLiteral\");\n const unaryOperator = (0, _utils.assertOneOf)(\"-\");\n const literal = (0, _utils.assertNodeType)(\"NumericLiteral\", \"StringLiteral\", \"BooleanLiteral\", \"BigIntLiteral\", \"TemplateLiteral\");\n const validator = function validator(parent, key, node) {\n if ((0, _is.default)(\"UnaryExpression\", node)) {\n unaryOperator(node, \"operator\", node.operator);\n unaryExpression(node, \"argument\", node.argument);\n } else {\n literal(parent, key, node);\n }\n };\n validator.oneOfNodeTypes = [\"NumericLiteral\", \"StringLiteral\", \"BooleanLiteral\", \"BigIntLiteral\", \"TemplateLiteral\", \"UnaryExpression\"];\n return validator;\n }()\n }\n }\n});\ndefineType(\"TSExpressionWithTypeArguments\", {\n aliases: [\"TSType\"],\n visitor: [\"expression\", \"typeParameters\"],\n fields: {\n expression: (0, _utils.validateType)(\"TSEntityName\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TSTypeParameterInstantiation\")\n }\n});\ndefineType(\"TSInterfaceDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n fields: {\n declare: (0, _utils.validateOptional)(bool),\n id: (0, _utils.validateType)(\"Identifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TSTypeParameterDeclaration\"),\n extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)(\"TSExpressionWithTypeArguments\")),\n body: (0, _utils.validateType)(\"TSInterfaceBody\")\n }\n});\ndefineType(\"TSInterfaceBody\", {\n visitor: [\"body\"],\n fields: {\n body: (0, _utils.validateArrayOfType)(\"TSTypeElement\")\n }\n});\ndefineType(\"TSTypeAliasDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n fields: {\n declare: (0, _utils.validateOptional)(bool),\n id: (0, _utils.validateType)(\"Identifier\"),\n typeParameters: (0, _utils.validateOptionalType)(\"TSTypeParameterDeclaration\"),\n typeAnnotation: (0, _utils.validateType)(\"TSType\")\n }\n});\ndefineType(\"TSInstantiationExpression\", {\n aliases: [\"Expression\"],\n visitor: [\"expression\", \"typeParameters\"],\n fields: {\n expression: (0, _utils.validateType)(\"Expression\"),\n [\"typeParameters\"]: (0, _utils.validateOptionalType)(\"TSTypeParameterInstantiation\")\n }\n});\nconst TSTypeExpression = {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\", \"typeAnnotation\"],\n fields: {\n expression: (0, _utils.validateType)(\"Expression\"),\n typeAnnotation: (0, _utils.validateType)(\"TSType\")\n }\n};\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\ndefineType(\"TSTypeAssertion\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"typeAnnotation\", \"expression\"],\n fields: {\n typeAnnotation: (0, _utils.validateType)(\"TSType\"),\n expression: (0, _utils.validateType)(\"Expression\")\n }\n});\ndefineType(\"TSEnumBody\", {\n visitor: [\"members\"],\n fields: {\n members: (0, _utils.validateArrayOfType)(\"TSEnumMember\")\n }\n});\ndefineType(\"TSEnumDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"members\"],\n fields: {\n declare: (0, _utils.validateOptional)(bool),\n const: (0, _utils.validateOptional)(bool),\n id: (0, _utils.validateType)(\"Identifier\"),\n members: (0, _utils.validateArrayOfType)(\"TSEnumMember\"),\n initializer: (0, _utils.validateOptionalType)(\"Expression\"),\n body: (0, _utils.validateOptionalType)(\"TSEnumBody\")\n }\n});\ndefineType(\"TSEnumMember\", {\n visitor: [\"id\", \"initializer\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\", \"StringLiteral\"),\n initializer: (0, _utils.validateOptionalType)(\"Expression\")\n }\n});\ndefineType(\"TSModuleDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"body\"],\n fields: Object.assign({\n kind: {\n validate: (0, _utils.assertOneOf)(\"global\", \"module\", \"namespace\")\n },\n declare: (0, _utils.validateOptional)(bool)\n }, {\n global: (0, _utils.validateOptional)(bool)\n }, {\n id: (0, _utils.validateType)(\"Identifier\", \"StringLiteral\"),\n body: (0, _utils.validateType)(\"TSModuleBlock\", \"TSModuleDeclaration\")\n })\n});\ndefineType(\"TSModuleBlock\", {\n aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n visitor: [\"body\"],\n fields: {\n body: (0, _utils.validateArrayOfType)(\"Statement\")\n }\n});\ndefineType(\"TSImportType\", {\n aliases: [\"TSType\"],\n builder: [\"argument\", \"qualifier\", \"typeParameters\"],\n visitor: [\"argument\", \"options\", \"qualifier\", \"typeParameters\"],\n fields: Object.assign({}, {\n argument: (0, _utils.validateType)(\"StringLiteral\")\n }, {\n qualifier: (0, _utils.validateOptionalType)(\"TSEntityName\")\n }, {\n typeParameters: (0, _utils.validateOptionalType)(\"TSTypeParameterInstantiation\")\n }, {\n options: {\n validate: (0, _utils.assertNodeType)(\"ObjectExpression\"),\n optional: true\n }\n })\n});\ndefineType(\"TSImportEqualsDeclaration\", {\n aliases: [\"Statement\", \"Declaration\"],\n visitor: [\"id\", \"moduleReference\"],\n fields: Object.assign({}, {\n isExport: (0, _utils.validate)(bool)\n }, {\n id: (0, _utils.validateType)(\"Identifier\"),\n moduleReference: (0, _utils.validateType)(\"TSEntityName\", \"TSExternalModuleReference\"),\n importKind: {\n validate: (0, _utils.assertOneOf)(\"type\", \"value\"),\n optional: true\n }\n })\n});\ndefineType(\"TSExternalModuleReference\", {\n visitor: [\"expression\"],\n fields: {\n expression: (0, _utils.validateType)(\"StringLiteral\")\n }\n});\ndefineType(\"TSNonNullExpression\", {\n aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n visitor: [\"expression\"],\n fields: {\n expression: (0, _utils.validateType)(\"Expression\")\n }\n});\ndefineType(\"TSExportAssignment\", {\n aliases: [\"Statement\"],\n visitor: [\"expression\"],\n fields: {\n expression: (0, _utils.validateType)(\"Expression\")\n }\n});\ndefineType(\"TSNamespaceExportDeclaration\", {\n aliases: [\"Statement\"],\n visitor: [\"id\"],\n fields: {\n id: (0, _utils.validateType)(\"Identifier\")\n }\n});\ndefineType(\"TSTypeAnnotation\", {\n visitor: [\"typeAnnotation\"],\n fields: {\n typeAnnotation: {\n validate: (0, _utils.assertNodeType)(\"TSType\")\n }\n }\n});\ndefineType(\"TSTypeParameterInstantiation\", {\n visitor: [\"params\"],\n fields: {\n params: (0, _utils.validateArrayOfType)(\"TSType\")\n }\n});\ndefineType(\"TSTypeParameterDeclaration\", {\n visitor: [\"params\"],\n fields: {\n params: (0, _utils.validateArrayOfType)(\"TSTypeParameter\")\n }\n});\ndefineType(\"TSTypeParameter\", {\n builder: [\"constraint\", \"default\", \"name\"],\n visitor: [\"constraint\", \"default\"],\n fields: {\n name: {\n validate: (0, _utils.assertValueType)(\"string\")\n },\n in: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n out: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n const: {\n validate: (0, _utils.assertValueType)(\"boolean\"),\n optional: true\n },\n constraint: {\n validate: (0, _utils.assertNodeType)(\"TSType\"),\n optional: true\n },\n default: {\n validate: (0, _utils.assertNodeType)(\"TSType\"),\n optional: true\n }\n }\n});\n\n//# sourceMappingURL=typescript.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEPRECATED_ALIASES = void 0;\nconst DEPRECATED_ALIASES = exports.DEPRECATED_ALIASES = {\n ModuleDeclaration: \"ImportOrExportDeclaration\"\n};\n\n//# sourceMappingURL=deprecated-aliases.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JSXIdentifier = exports.JSXFragment = exports.JSXExpressionContainer = exports.JSXEmptyExpression = exports.JSXElement = exports.JSXClosingFragment = exports.JSXClosingElement = exports.JSXAttribute = exports.IntersectionTypeAnnotation = exports.InterpreterDirective = exports.InterfaceTypeAnnotation = exports.InterfaceExtends = exports.InterfaceDeclaration = exports.InferredPredicate = exports.IndexedAccessType = exports.ImportSpecifier = exports.ImportNamespaceSpecifier = exports.ImportExpression = exports.ImportDefaultSpecifier = exports.ImportDeclaration = exports.ImportAttribute = exports.Import = exports.IfStatement = exports.Identifier = exports.GenericTypeAnnotation = exports.FunctionTypeParam = exports.FunctionTypeAnnotation = exports.FunctionExpression = exports.FunctionDeclaration = exports.ForStatement = exports.ForOfStatement = exports.ForInStatement = exports.File = exports.ExpressionStatement = exports.ExportSpecifier = exports.ExportNamespaceSpecifier = exports.ExportNamedDeclaration = exports.ExportDefaultSpecifier = exports.ExportDefaultDeclaration = exports.ExportAllDeclaration = exports.ExistsTypeAnnotation = exports.EnumSymbolBody = exports.EnumStringMember = exports.EnumStringBody = exports.EnumNumberMember = exports.EnumNumberBody = exports.EnumDefaultedMember = exports.EnumDeclaration = exports.EnumBooleanMember = exports.EnumBooleanBody = exports.EmptyTypeAnnotation = exports.EmptyStatement = exports.DoWhileStatement = exports.DoExpression = exports.DirectiveLiteral = exports.Directive = exports.Decorator = exports.DeclaredPredicate = exports.DeclareVariable = exports.DeclareTypeAlias = exports.DeclareOpaqueType = exports.DeclareModuleExports = exports.DeclareModule = exports.DeclareInterface = exports.DeclareFunction = exports.DeclareExportDeclaration = exports.DeclareExportAllDeclaration = exports.DeclareClass = exports.DecimalLiteral = exports.DebuggerStatement = exports.ContinueStatement = exports.ConditionalExpression = exports.ClassProperty = exports.ClassPrivateProperty = exports.ClassPrivateMethod = exports.ClassMethod = exports.ClassImplements = exports.ClassExpression = exports.ClassDeclaration = exports.ClassBody = exports.ClassAccessorProperty = exports.CatchClause = exports.CallExpression = exports.BreakStatement = exports.BooleanTypeAnnotation = exports.BooleanLiteralTypeAnnotation = exports.BooleanLiteral = exports.BlockStatement = exports.BindExpression = exports.BinaryExpression = exports.BigIntLiteral = exports.AwaitExpression = exports.AssignmentPattern = exports.AssignmentExpression = exports.ArrowFunctionExpression = exports.ArrayTypeAnnotation = exports.ArrayPattern = exports.ArrayExpression = exports.ArgumentPlaceholder = exports.AnyTypeAnnotation = void 0;\nexports.TSNumberKeyword = exports.TSNullKeyword = exports.TSNonNullExpression = exports.TSNeverKeyword = exports.TSNamespaceExportDeclaration = exports.TSNamedTupleMember = exports.TSModuleDeclaration = exports.TSModuleBlock = exports.TSMethodSignature = exports.TSMappedType = exports.TSLiteralType = exports.TSIntrinsicKeyword = exports.TSIntersectionType = exports.TSInterfaceDeclaration = exports.TSInterfaceBody = exports.TSInstantiationExpression = exports.TSInferType = exports.TSIndexedAccessType = exports.TSIndexSignature = exports.TSImportType = exports.TSImportEqualsDeclaration = exports.TSFunctionType = exports.TSExternalModuleReference = exports.TSExpressionWithTypeArguments = exports.TSExportAssignment = exports.TSEnumMember = exports.TSEnumDeclaration = exports.TSEnumBody = exports.TSDeclareMethod = exports.TSDeclareFunction = exports.TSConstructorType = exports.TSConstructSignatureDeclaration = exports.TSConditionalType = exports.TSCallSignatureDeclaration = exports.TSBooleanKeyword = exports.TSBigIntKeyword = exports.TSAsExpression = exports.TSArrayType = exports.TSAnyKeyword = exports.SymbolTypeAnnotation = exports.SwitchStatement = exports.SwitchCase = exports.Super = exports.StringTypeAnnotation = exports.StringLiteralTypeAnnotation = exports.StringLiteral = exports.StaticBlock = exports.SpreadProperty = exports.SpreadElement = exports.SequenceExpression = exports.ReturnStatement = exports.RestProperty = exports.RestElement = exports.RegexLiteral = exports.RegExpLiteral = exports.RecordExpression = exports.QualifiedTypeIdentifier = exports.Program = exports.PrivateName = exports.Placeholder = exports.PipelineTopicExpression = exports.PipelinePrimaryTopicReference = exports.PipelineBareFunction = exports.ParenthesizedExpression = exports.OptionalMemberExpression = exports.OptionalIndexedAccessType = exports.OptionalCallExpression = exports.OpaqueType = exports.ObjectTypeSpreadProperty = exports.ObjectTypeProperty = exports.ObjectTypeInternalSlot = exports.ObjectTypeIndexer = exports.ObjectTypeCallProperty = exports.ObjectTypeAnnotation = exports.ObjectProperty = exports.ObjectPattern = exports.ObjectMethod = exports.ObjectExpression = exports.NumericLiteral = exports.NumberTypeAnnotation = exports.NumberLiteralTypeAnnotation = exports.NumberLiteral = exports.NullableTypeAnnotation = exports.NullLiteralTypeAnnotation = exports.NullLiteral = exports.Noop = exports.NewExpression = exports.ModuleExpression = exports.MixedTypeAnnotation = exports.MetaProperty = exports.MemberExpression = exports.LogicalExpression = exports.LabeledStatement = exports.JSXText = exports.JSXSpreadChild = exports.JSXSpreadAttribute = exports.JSXOpeningFragment = exports.JSXOpeningElement = exports.JSXNamespacedName = exports.JSXMemberExpression = void 0;\nexports.YieldExpression = exports.WithStatement = exports.WhileStatement = exports.VoidTypeAnnotation = exports.VoidPattern = exports.Variance = exports.VariableDeclarator = exports.VariableDeclaration = exports.V8IntrinsicIdentifier = exports.UpdateExpression = exports.UnionTypeAnnotation = exports.UnaryExpression = exports.TypeofTypeAnnotation = exports.TypeParameterInstantiation = exports.TypeParameterDeclaration = exports.TypeParameter = exports.TypeCastExpression = exports.TypeAnnotation = exports.TypeAlias = exports.TupleTypeAnnotation = exports.TupleExpression = exports.TryStatement = exports.TopicReference = exports.ThrowStatement = exports.ThisTypeAnnotation = exports.ThisExpression = exports.TemplateLiteral = exports.TemplateElement = exports.TaggedTemplateExpression = exports.TSVoidKeyword = exports.TSUnknownKeyword = exports.TSUnionType = exports.TSUndefinedKeyword = exports.TSTypeReference = exports.TSTypeQuery = exports.TSTypePredicate = exports.TSTypeParameterInstantiation = exports.TSTypeParameterDeclaration = exports.TSTypeParameter = exports.TSTypeOperator = exports.TSTypeLiteral = exports.TSTypeAssertion = exports.TSTypeAnnotation = exports.TSTypeAliasDeclaration = exports.TSTupleType = exports.TSThisType = exports.TSTemplateLiteralType = exports.TSSymbolKeyword = exports.TSStringKeyword = exports.TSSatisfiesExpression = exports.TSRestType = exports.TSQualifiedName = exports.TSPropertySignature = exports.TSParenthesizedType = exports.TSParameterProperty = exports.TSOptionalType = exports.TSObjectKeyword = void 0;\nvar b = require(\"./lowercase.js\");\nvar _deprecationWarning = require(\"../../utils/deprecationWarning.js\");\nfunction alias(lowercase) {\n return b[lowercase];\n}\nconst ArrayExpression = exports.ArrayExpression = alias(\"arrayExpression\"),\n AssignmentExpression = exports.AssignmentExpression = alias(\"assignmentExpression\"),\n BinaryExpression = exports.BinaryExpression = alias(\"binaryExpression\"),\n InterpreterDirective = exports.InterpreterDirective = alias(\"interpreterDirective\"),\n Directive = exports.Directive = alias(\"directive\"),\n DirectiveLiteral = exports.DirectiveLiteral = alias(\"directiveLiteral\"),\n BlockStatement = exports.BlockStatement = alias(\"blockStatement\"),\n BreakStatement = exports.BreakStatement = alias(\"breakStatement\"),\n CallExpression = exports.CallExpression = alias(\"callExpression\"),\n CatchClause = exports.CatchClause = alias(\"catchClause\"),\n ConditionalExpression = exports.ConditionalExpression = alias(\"conditionalExpression\"),\n ContinueStatement = exports.ContinueStatement = alias(\"continueStatement\"),\n DebuggerStatement = exports.DebuggerStatement = alias(\"debuggerStatement\"),\n DoWhileStatement = exports.DoWhileStatement = alias(\"doWhileStatement\"),\n EmptyStatement = exports.EmptyStatement = alias(\"emptyStatement\"),\n ExpressionStatement = exports.ExpressionStatement = alias(\"expressionStatement\"),\n File = exports.File = alias(\"file\"),\n ForInStatement = exports.ForInStatement = alias(\"forInStatement\"),\n ForStatement = exports.ForStatement = alias(\"forStatement\"),\n FunctionDeclaration = exports.FunctionDeclaration = alias(\"functionDeclaration\"),\n FunctionExpression = exports.FunctionExpression = alias(\"functionExpression\"),\n Identifier = exports.Identifier = alias(\"identifier\"),\n IfStatement = exports.IfStatement = alias(\"ifStatement\"),\n LabeledStatement = exports.LabeledStatement = alias(\"labeledStatement\"),\n StringLiteral = exports.StringLiteral = alias(\"stringLiteral\"),\n NumericLiteral = exports.NumericLiteral = alias(\"numericLiteral\"),\n NullLiteral = exports.NullLiteral = alias(\"nullLiteral\"),\n BooleanLiteral = exports.BooleanLiteral = alias(\"booleanLiteral\"),\n RegExpLiteral = exports.RegExpLiteral = alias(\"regExpLiteral\"),\n LogicalExpression = exports.LogicalExpression = alias(\"logicalExpression\"),\n MemberExpression = exports.MemberExpression = alias(\"memberExpression\"),\n NewExpression = exports.NewExpression = alias(\"newExpression\"),\n Program = exports.Program = alias(\"program\"),\n ObjectExpression = exports.ObjectExpression = alias(\"objectExpression\"),\n ObjectMethod = exports.ObjectMethod = alias(\"objectMethod\"),\n ObjectProperty = exports.ObjectProperty = alias(\"objectProperty\"),\n RestElement = exports.RestElement = alias(\"restElement\"),\n ReturnStatement = exports.ReturnStatement = alias(\"returnStatement\"),\n SequenceExpression = exports.SequenceExpression = alias(\"sequenceExpression\"),\n ParenthesizedExpression = exports.ParenthesizedExpression = alias(\"parenthesizedExpression\"),\n SwitchCase = exports.SwitchCase = alias(\"switchCase\"),\n SwitchStatement = exports.SwitchStatement = alias(\"switchStatement\"),\n ThisExpression = exports.ThisExpression = alias(\"thisExpression\"),\n ThrowStatement = exports.ThrowStatement = alias(\"throwStatement\"),\n TryStatement = exports.TryStatement = alias(\"tryStatement\"),\n UnaryExpression = exports.UnaryExpression = alias(\"unaryExpression\"),\n UpdateExpression = exports.UpdateExpression = alias(\"updateExpression\"),\n VariableDeclaration = exports.VariableDeclaration = alias(\"variableDeclaration\"),\n VariableDeclarator = exports.VariableDeclarator = alias(\"variableDeclarator\"),\n WhileStatement = exports.WhileStatement = alias(\"whileStatement\"),\n WithStatement = exports.WithStatement = alias(\"withStatement\"),\n AssignmentPattern = exports.AssignmentPattern = alias(\"assignmentPattern\"),\n ArrayPattern = exports.ArrayPattern = alias(\"arrayPattern\"),\n ArrowFunctionExpression = exports.ArrowFunctionExpression = alias(\"arrowFunctionExpression\"),\n ClassBody = exports.ClassBody = alias(\"classBody\"),\n ClassExpression = exports.ClassExpression = alias(\"classExpression\"),\n ClassDeclaration = exports.ClassDeclaration = alias(\"classDeclaration\"),\n ExportAllDeclaration = exports.ExportAllDeclaration = alias(\"exportAllDeclaration\"),\n ExportDefaultDeclaration = exports.ExportDefaultDeclaration = alias(\"exportDefaultDeclaration\"),\n ExportNamedDeclaration = exports.ExportNamedDeclaration = alias(\"exportNamedDeclaration\"),\n ExportSpecifier = exports.ExportSpecifier = alias(\"exportSpecifier\"),\n ForOfStatement = exports.ForOfStatement = alias(\"forOfStatement\"),\n ImportDeclaration = exports.ImportDeclaration = alias(\"importDeclaration\"),\n ImportDefaultSpecifier = exports.ImportDefaultSpecifier = alias(\"importDefaultSpecifier\"),\n ImportNamespaceSpecifier = exports.ImportNamespaceSpecifier = alias(\"importNamespaceSpecifier\"),\n ImportSpecifier = exports.ImportSpecifier = alias(\"importSpecifier\"),\n ImportExpression = exports.ImportExpression = alias(\"importExpression\"),\n MetaProperty = exports.MetaProperty = alias(\"metaProperty\"),\n ClassMethod = exports.ClassMethod = alias(\"classMethod\"),\n ObjectPattern = exports.ObjectPattern = alias(\"objectPattern\"),\n SpreadElement = exports.SpreadElement = alias(\"spreadElement\"),\n Super = exports.Super = alias(\"super\"),\n TaggedTemplateExpression = exports.TaggedTemplateExpression = alias(\"taggedTemplateExpression\"),\n TemplateElement = exports.TemplateElement = alias(\"templateElement\"),\n TemplateLiteral = exports.TemplateLiteral = alias(\"templateLiteral\"),\n YieldExpression = exports.YieldExpression = alias(\"yieldExpression\"),\n AwaitExpression = exports.AwaitExpression = alias(\"awaitExpression\"),\n Import = exports.Import = alias(\"import\"),\n BigIntLiteral = exports.BigIntLiteral = alias(\"bigIntLiteral\"),\n ExportNamespaceSpecifier = exports.ExportNamespaceSpecifier = alias(\"exportNamespaceSpecifier\"),\n OptionalMemberExpression = exports.OptionalMemberExpression = alias(\"optionalMemberExpression\"),\n OptionalCallExpression = exports.OptionalCallExpression = alias(\"optionalCallExpression\"),\n ClassProperty = exports.ClassProperty = alias(\"classProperty\"),\n ClassAccessorProperty = exports.ClassAccessorProperty = alias(\"classAccessorProperty\"),\n ClassPrivateProperty = exports.ClassPrivateProperty = alias(\"classPrivateProperty\"),\n ClassPrivateMethod = exports.ClassPrivateMethod = alias(\"classPrivateMethod\"),\n PrivateName = exports.PrivateName = alias(\"privateName\"),\n StaticBlock = exports.StaticBlock = alias(\"staticBlock\"),\n ImportAttribute = exports.ImportAttribute = alias(\"importAttribute\"),\n AnyTypeAnnotation = exports.AnyTypeAnnotation = alias(\"anyTypeAnnotation\"),\n ArrayTypeAnnotation = exports.ArrayTypeAnnotation = alias(\"arrayTypeAnnotation\"),\n BooleanTypeAnnotation = exports.BooleanTypeAnnotation = alias(\"booleanTypeAnnotation\"),\n BooleanLiteralTypeAnnotation = exports.BooleanLiteralTypeAnnotation = alias(\"booleanLiteralTypeAnnotation\"),\n NullLiteralTypeAnnotation = exports.NullLiteralTypeAnnotation = alias(\"nullLiteralTypeAnnotation\"),\n ClassImplements = exports.ClassImplements = alias(\"classImplements\"),\n DeclareClass = exports.DeclareClass = alias(\"declareClass\"),\n DeclareFunction = exports.DeclareFunction = alias(\"declareFunction\"),\n DeclareInterface = exports.DeclareInterface = alias(\"declareInterface\"),\n DeclareModule = exports.DeclareModule = alias(\"declareModule\"),\n DeclareModuleExports = exports.DeclareModuleExports = alias(\"declareModuleExports\"),\n DeclareTypeAlias = exports.DeclareTypeAlias = alias(\"declareTypeAlias\"),\n DeclareOpaqueType = exports.DeclareOpaqueType = alias(\"declareOpaqueType\"),\n DeclareVariable = exports.DeclareVariable = alias(\"declareVariable\"),\n DeclareExportDeclaration = exports.DeclareExportDeclaration = alias(\"declareExportDeclaration\"),\n DeclareExportAllDeclaration = exports.DeclareExportAllDeclaration = alias(\"declareExportAllDeclaration\"),\n DeclaredPredicate = exports.DeclaredPredicate = alias(\"declaredPredicate\"),\n ExistsTypeAnnotation = exports.ExistsTypeAnnotation = alias(\"existsTypeAnnotation\"),\n FunctionTypeAnnotation = exports.FunctionTypeAnnotation = alias(\"functionTypeAnnotation\"),\n FunctionTypeParam = exports.FunctionTypeParam = alias(\"functionTypeParam\"),\n GenericTypeAnnotation = exports.GenericTypeAnnotation = alias(\"genericTypeAnnotation\"),\n InferredPredicate = exports.InferredPredicate = alias(\"inferredPredicate\"),\n InterfaceExtends = exports.InterfaceExtends = alias(\"interfaceExtends\"),\n InterfaceDeclaration = exports.InterfaceDeclaration = alias(\"interfaceDeclaration\"),\n InterfaceTypeAnnotation = exports.InterfaceTypeAnnotation = alias(\"interfaceTypeAnnotation\"),\n IntersectionTypeAnnotation = exports.IntersectionTypeAnnotation = alias(\"intersectionTypeAnnotation\"),\n MixedTypeAnnotation = exports.MixedTypeAnnotation = alias(\"mixedTypeAnnotation\"),\n EmptyTypeAnnotation = exports.EmptyTypeAnnotation = alias(\"emptyTypeAnnotation\"),\n NullableTypeAnnotation = exports.NullableTypeAnnotation = alias(\"nullableTypeAnnotation\"),\n NumberLiteralTypeAnnotation = exports.NumberLiteralTypeAnnotation = alias(\"numberLiteralTypeAnnotation\"),\n NumberTypeAnnotation = exports.NumberTypeAnnotation = alias(\"numberTypeAnnotation\"),\n ObjectTypeAnnotation = exports.ObjectTypeAnnotation = alias(\"objectTypeAnnotation\"),\n ObjectTypeInternalSlot = exports.ObjectTypeInternalSlot = alias(\"objectTypeInternalSlot\"),\n ObjectTypeCallProperty = exports.ObjectTypeCallProperty = alias(\"objectTypeCallProperty\"),\n ObjectTypeIndexer = exports.ObjectTypeIndexer = alias(\"objectTypeIndexer\"),\n ObjectTypeProperty = exports.ObjectTypeProperty = alias(\"objectTypeProperty\"),\n ObjectTypeSpreadProperty = exports.ObjectTypeSpreadProperty = alias(\"objectTypeSpreadProperty\"),\n OpaqueType = exports.OpaqueType = alias(\"opaqueType\"),\n QualifiedTypeIdentifier = exports.QualifiedTypeIdentifier = alias(\"qualifiedTypeIdentifier\"),\n StringLiteralTypeAnnotation = exports.StringLiteralTypeAnnotation = alias(\"stringLiteralTypeAnnotation\"),\n StringTypeAnnotation = exports.StringTypeAnnotation = alias(\"stringTypeAnnotation\"),\n SymbolTypeAnnotation = exports.SymbolTypeAnnotation = alias(\"symbolTypeAnnotation\"),\n ThisTypeAnnotation = exports.ThisTypeAnnotation = alias(\"thisTypeAnnotation\"),\n TupleTypeAnnotation = exports.TupleTypeAnnotation = alias(\"tupleTypeAnnotation\"),\n TypeofTypeAnnotation = exports.TypeofTypeAnnotation = alias(\"typeofTypeAnnotation\"),\n TypeAlias = exports.TypeAlias = alias(\"typeAlias\"),\n TypeAnnotation = exports.TypeAnnotation = alias(\"typeAnnotation\"),\n TypeCastExpression = exports.TypeCastExpression = alias(\"typeCastExpression\"),\n TypeParameter = exports.TypeParameter = alias(\"typeParameter\"),\n TypeParameterDeclaration = exports.TypeParameterDeclaration = alias(\"typeParameterDeclaration\"),\n TypeParameterInstantiation = exports.TypeParameterInstantiation = alias(\"typeParameterInstantiation\"),\n UnionTypeAnnotation = exports.UnionTypeAnnotation = alias(\"unionTypeAnnotation\"),\n Variance = exports.Variance = alias(\"variance\"),\n VoidTypeAnnotation = exports.VoidTypeAnnotation = alias(\"voidTypeAnnotation\"),\n EnumDeclaration = exports.EnumDeclaration = alias(\"enumDeclaration\"),\n EnumBooleanBody = exports.EnumBooleanBody = alias(\"enumBooleanBody\"),\n EnumNumberBody = exports.EnumNumberBody = alias(\"enumNumberBody\"),\n EnumStringBody = exports.EnumStringBody = alias(\"enumStringBody\"),\n EnumSymbolBody = exports.EnumSymbolBody = alias(\"enumSymbolBody\"),\n EnumBooleanMember = exports.EnumBooleanMember = alias(\"enumBooleanMember\"),\n EnumNumberMember = exports.EnumNumberMember = alias(\"enumNumberMember\"),\n EnumStringMember = exports.EnumStringMember = alias(\"enumStringMember\"),\n EnumDefaultedMember = exports.EnumDefaultedMember = alias(\"enumDefaultedMember\"),\n IndexedAccessType = exports.IndexedAccessType = alias(\"indexedAccessType\"),\n OptionalIndexedAccessType = exports.OptionalIndexedAccessType = alias(\"optionalIndexedAccessType\"),\n JSXAttribute = exports.JSXAttribute = alias(\"jsxAttribute\"),\n JSXClosingElement = exports.JSXClosingElement = alias(\"jsxClosingElement\"),\n JSXElement = exports.JSXElement = alias(\"jsxElement\"),\n JSXEmptyExpression = exports.JSXEmptyExpression = alias(\"jsxEmptyExpression\"),\n JSXExpressionContainer = exports.JSXExpressionContainer = alias(\"jsxExpressionContainer\"),\n JSXSpreadChild = exports.JSXSpreadChild = alias(\"jsxSpreadChild\"),\n JSXIdentifier = exports.JSXIdentifier = alias(\"jsxIdentifier\"),\n JSXMemberExpression = exports.JSXMemberExpression = alias(\"jsxMemberExpression\"),\n JSXNamespacedName = exports.JSXNamespacedName = alias(\"jsxNamespacedName\"),\n JSXOpeningElement = exports.JSXOpeningElement = alias(\"jsxOpeningElement\"),\n JSXSpreadAttribute = exports.JSXSpreadAttribute = alias(\"jsxSpreadAttribute\"),\n JSXText = exports.JSXText = alias(\"jsxText\"),\n JSXFragment = exports.JSXFragment = alias(\"jsxFragment\"),\n JSXOpeningFragment = exports.JSXOpeningFragment = alias(\"jsxOpeningFragment\"),\n JSXClosingFragment = exports.JSXClosingFragment = alias(\"jsxClosingFragment\"),\n Noop = exports.Noop = alias(\"noop\"),\n Placeholder = exports.Placeholder = alias(\"placeholder\"),\n V8IntrinsicIdentifier = exports.V8IntrinsicIdentifier = alias(\"v8IntrinsicIdentifier\"),\n ArgumentPlaceholder = exports.ArgumentPlaceholder = alias(\"argumentPlaceholder\"),\n BindExpression = exports.BindExpression = alias(\"bindExpression\"),\n Decorator = exports.Decorator = alias(\"decorator\"),\n DoExpression = exports.DoExpression = alias(\"doExpression\"),\n ExportDefaultSpecifier = exports.ExportDefaultSpecifier = alias(\"exportDefaultSpecifier\"),\n RecordExpression = exports.RecordExpression = alias(\"recordExpression\"),\n TupleExpression = exports.TupleExpression = alias(\"tupleExpression\"),\n DecimalLiteral = exports.DecimalLiteral = alias(\"decimalLiteral\"),\n ModuleExpression = exports.ModuleExpression = alias(\"moduleExpression\"),\n TopicReference = exports.TopicReference = alias(\"topicReference\"),\n PipelineTopicExpression = exports.PipelineTopicExpression = alias(\"pipelineTopicExpression\"),\n PipelineBareFunction = exports.PipelineBareFunction = alias(\"pipelineBareFunction\"),\n PipelinePrimaryTopicReference = exports.PipelinePrimaryTopicReference = alias(\"pipelinePrimaryTopicReference\"),\n VoidPattern = exports.VoidPattern = alias(\"voidPattern\"),\n TSParameterProperty = exports.TSParameterProperty = alias(\"tsParameterProperty\"),\n TSDeclareFunction = exports.TSDeclareFunction = alias(\"tsDeclareFunction\"),\n TSDeclareMethod = exports.TSDeclareMethod = alias(\"tsDeclareMethod\"),\n TSQualifiedName = exports.TSQualifiedName = alias(\"tsQualifiedName\"),\n TSCallSignatureDeclaration = exports.TSCallSignatureDeclaration = alias(\"tsCallSignatureDeclaration\"),\n TSConstructSignatureDeclaration = exports.TSConstructSignatureDeclaration = alias(\"tsConstructSignatureDeclaration\"),\n TSPropertySignature = exports.TSPropertySignature = alias(\"tsPropertySignature\"),\n TSMethodSignature = exports.TSMethodSignature = alias(\"tsMethodSignature\"),\n TSIndexSignature = exports.TSIndexSignature = alias(\"tsIndexSignature\"),\n TSAnyKeyword = exports.TSAnyKeyword = alias(\"tsAnyKeyword\"),\n TSBooleanKeyword = exports.TSBooleanKeyword = alias(\"tsBooleanKeyword\"),\n TSBigIntKeyword = exports.TSBigIntKeyword = alias(\"tsBigIntKeyword\"),\n TSIntrinsicKeyword = exports.TSIntrinsicKeyword = alias(\"tsIntrinsicKeyword\"),\n TSNeverKeyword = exports.TSNeverKeyword = alias(\"tsNeverKeyword\"),\n TSNullKeyword = exports.TSNullKeyword = alias(\"tsNullKeyword\"),\n TSNumberKeyword = exports.TSNumberKeyword = alias(\"tsNumberKeyword\"),\n TSObjectKeyword = exports.TSObjectKeyword = alias(\"tsObjectKeyword\"),\n TSStringKeyword = exports.TSStringKeyword = alias(\"tsStringKeyword\"),\n TSSymbolKeyword = exports.TSSymbolKeyword = alias(\"tsSymbolKeyword\"),\n TSUndefinedKeyword = exports.TSUndefinedKeyword = alias(\"tsUndefinedKeyword\"),\n TSUnknownKeyword = exports.TSUnknownKeyword = alias(\"tsUnknownKeyword\"),\n TSVoidKeyword = exports.TSVoidKeyword = alias(\"tsVoidKeyword\"),\n TSThisType = exports.TSThisType = alias(\"tsThisType\"),\n TSFunctionType = exports.TSFunctionType = alias(\"tsFunctionType\"),\n TSConstructorType = exports.TSConstructorType = alias(\"tsConstructorType\"),\n TSTypeReference = exports.TSTypeReference = alias(\"tsTypeReference\"),\n TSTypePredicate = exports.TSTypePredicate = alias(\"tsTypePredicate\"),\n TSTypeQuery = exports.TSTypeQuery = alias(\"tsTypeQuery\"),\n TSTypeLiteral = exports.TSTypeLiteral = alias(\"tsTypeLiteral\"),\n TSArrayType = exports.TSArrayType = alias(\"tsArrayType\"),\n TSTupleType = exports.TSTupleType = alias(\"tsTupleType\"),\n TSOptionalType = exports.TSOptionalType = alias(\"tsOptionalType\"),\n TSRestType = exports.TSRestType = alias(\"tsRestType\"),\n TSNamedTupleMember = exports.TSNamedTupleMember = alias(\"tsNamedTupleMember\"),\n TSUnionType = exports.TSUnionType = alias(\"tsUnionType\"),\n TSIntersectionType = exports.TSIntersectionType = alias(\"tsIntersectionType\"),\n TSConditionalType = exports.TSConditionalType = alias(\"tsConditionalType\"),\n TSInferType = exports.TSInferType = alias(\"tsInferType\"),\n TSParenthesizedType = exports.TSParenthesizedType = alias(\"tsParenthesizedType\"),\n TSTypeOperator = exports.TSTypeOperator = alias(\"tsTypeOperator\"),\n TSIndexedAccessType = exports.TSIndexedAccessType = alias(\"tsIndexedAccessType\"),\n TSMappedType = exports.TSMappedType = alias(\"tsMappedType\"),\n TSTemplateLiteralType = exports.TSTemplateLiteralType = alias(\"tsTemplateLiteralType\"),\n TSLiteralType = exports.TSLiteralType = alias(\"tsLiteralType\"),\n TSExpressionWithTypeArguments = exports.TSExpressionWithTypeArguments = alias(\"tsExpressionWithTypeArguments\"),\n TSInterfaceDeclaration = exports.TSInterfaceDeclaration = alias(\"tsInterfaceDeclaration\"),\n TSInterfaceBody = exports.TSInterfaceBody = alias(\"tsInterfaceBody\"),\n TSTypeAliasDeclaration = exports.TSTypeAliasDeclaration = alias(\"tsTypeAliasDeclaration\"),\n TSInstantiationExpression = exports.TSInstantiationExpression = alias(\"tsInstantiationExpression\"),\n TSAsExpression = exports.TSAsExpression = alias(\"tsAsExpression\"),\n TSSatisfiesExpression = exports.TSSatisfiesExpression = alias(\"tsSatisfiesExpression\"),\n TSTypeAssertion = exports.TSTypeAssertion = alias(\"tsTypeAssertion\"),\n TSEnumBody = exports.TSEnumBody = alias(\"tsEnumBody\"),\n TSEnumDeclaration = exports.TSEnumDeclaration = alias(\"tsEnumDeclaration\"),\n TSEnumMember = exports.TSEnumMember = alias(\"tsEnumMember\"),\n TSModuleDeclaration = exports.TSModuleDeclaration = alias(\"tsModuleDeclaration\"),\n TSModuleBlock = exports.TSModuleBlock = alias(\"tsModuleBlock\"),\n TSImportType = exports.TSImportType = alias(\"tsImportType\"),\n TSImportEqualsDeclaration = exports.TSImportEqualsDeclaration = alias(\"tsImportEqualsDeclaration\"),\n TSExternalModuleReference = exports.TSExternalModuleReference = alias(\"tsExternalModuleReference\"),\n TSNonNullExpression = exports.TSNonNullExpression = alias(\"tsNonNullExpression\"),\n TSExportAssignment = exports.TSExportAssignment = alias(\"tsExportAssignment\"),\n TSNamespaceExportDeclaration = exports.TSNamespaceExportDeclaration = alias(\"tsNamespaceExportDeclaration\"),\n TSTypeAnnotation = exports.TSTypeAnnotation = alias(\"tsTypeAnnotation\"),\n TSTypeParameterInstantiation = exports.TSTypeParameterInstantiation = alias(\"tsTypeParameterInstantiation\"),\n TSTypeParameterDeclaration = exports.TSTypeParameterDeclaration = alias(\"tsTypeParameterDeclaration\"),\n TSTypeParameter = exports.TSTypeParameter = alias(\"tsTypeParameter\");\nconst NumberLiteral = exports.NumberLiteral = b.numberLiteral,\n RegexLiteral = exports.RegexLiteral = b.regexLiteral,\n RestProperty = exports.RestProperty = b.restProperty,\n SpreadProperty = exports.SpreadProperty = b.spreadProperty;\n\n//# sourceMappingURL=uppercase.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertNode;\nvar _isNode = require(\"../validators/isNode.js\");\nfunction assertNode(node) {\n if (!(0, _isNode.default)(node)) {\n var _node$type;\n const type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node);\n throw new TypeError(`Not a valid node of type \"${type}\"`);\n }\n}\n\n//# sourceMappingURL=assertNode.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isNode;\nvar _index = require(\"../definitions/index.js\");\nfunction isNode(node) {\n return !!(node && _index.VISITOR_KEYS[node.type]);\n}\n\n//# sourceMappingURL=isNode.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.assertAccessor = assertAccessor;\nexports.assertAnyTypeAnnotation = assertAnyTypeAnnotation;\nexports.assertArgumentPlaceholder = assertArgumentPlaceholder;\nexports.assertArrayExpression = assertArrayExpression;\nexports.assertArrayPattern = assertArrayPattern;\nexports.assertArrayTypeAnnotation = assertArrayTypeAnnotation;\nexports.assertArrowFunctionExpression = assertArrowFunctionExpression;\nexports.assertAssignmentExpression = assertAssignmentExpression;\nexports.assertAssignmentPattern = assertAssignmentPattern;\nexports.assertAwaitExpression = assertAwaitExpression;\nexports.assertBigIntLiteral = assertBigIntLiteral;\nexports.assertBinary = assertBinary;\nexports.assertBinaryExpression = assertBinaryExpression;\nexports.assertBindExpression = assertBindExpression;\nexports.assertBlock = assertBlock;\nexports.assertBlockParent = assertBlockParent;\nexports.assertBlockStatement = assertBlockStatement;\nexports.assertBooleanLiteral = assertBooleanLiteral;\nexports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation;\nexports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation;\nexports.assertBreakStatement = assertBreakStatement;\nexports.assertCallExpression = assertCallExpression;\nexports.assertCatchClause = assertCatchClause;\nexports.assertClass = assertClass;\nexports.assertClassAccessorProperty = assertClassAccessorProperty;\nexports.assertClassBody = assertClassBody;\nexports.assertClassDeclaration = assertClassDeclaration;\nexports.assertClassExpression = assertClassExpression;\nexports.assertClassImplements = assertClassImplements;\nexports.assertClassMethod = assertClassMethod;\nexports.assertClassPrivateMethod = assertClassPrivateMethod;\nexports.assertClassPrivateProperty = assertClassPrivateProperty;\nexports.assertClassProperty = assertClassProperty;\nexports.assertCompletionStatement = assertCompletionStatement;\nexports.assertConditional = assertConditional;\nexports.assertConditionalExpression = assertConditionalExpression;\nexports.assertContinueStatement = assertContinueStatement;\nexports.assertDebuggerStatement = assertDebuggerStatement;\nexports.assertDecimalLiteral = assertDecimalLiteral;\nexports.assertDeclaration = assertDeclaration;\nexports.assertDeclareClass = assertDeclareClass;\nexports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration;\nexports.assertDeclareExportDeclaration = assertDeclareExportDeclaration;\nexports.assertDeclareFunction = assertDeclareFunction;\nexports.assertDeclareInterface = assertDeclareInterface;\nexports.assertDeclareModule = assertDeclareModule;\nexports.assertDeclareModuleExports = assertDeclareModuleExports;\nexports.assertDeclareOpaqueType = assertDeclareOpaqueType;\nexports.assertDeclareTypeAlias = assertDeclareTypeAlias;\nexports.assertDeclareVariable = assertDeclareVariable;\nexports.assertDeclaredPredicate = assertDeclaredPredicate;\nexports.assertDecorator = assertDecorator;\nexports.assertDirective = assertDirective;\nexports.assertDirectiveLiteral = assertDirectiveLiteral;\nexports.assertDoExpression = assertDoExpression;\nexports.assertDoWhileStatement = assertDoWhileStatement;\nexports.assertEmptyStatement = assertEmptyStatement;\nexports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation;\nexports.assertEnumBody = assertEnumBody;\nexports.assertEnumBooleanBody = assertEnumBooleanBody;\nexports.assertEnumBooleanMember = assertEnumBooleanMember;\nexports.assertEnumDeclaration = assertEnumDeclaration;\nexports.assertEnumDefaultedMember = assertEnumDefaultedMember;\nexports.assertEnumMember = assertEnumMember;\nexports.assertEnumNumberBody = assertEnumNumberBody;\nexports.assertEnumNumberMember = assertEnumNumberMember;\nexports.assertEnumStringBody = assertEnumStringBody;\nexports.assertEnumStringMember = assertEnumStringMember;\nexports.assertEnumSymbolBody = assertEnumSymbolBody;\nexports.assertExistsTypeAnnotation = assertExistsTypeAnnotation;\nexports.assertExportAllDeclaration = assertExportAllDeclaration;\nexports.assertExportDeclaration = assertExportDeclaration;\nexports.assertExportDefaultDeclaration = assertExportDefaultDeclaration;\nexports.assertExportDefaultSpecifier = assertExportDefaultSpecifier;\nexports.assertExportNamedDeclaration = assertExportNamedDeclaration;\nexports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier;\nexports.assertExportSpecifier = assertExportSpecifier;\nexports.assertExpression = assertExpression;\nexports.assertExpressionStatement = assertExpressionStatement;\nexports.assertExpressionWrapper = assertExpressionWrapper;\nexports.assertFile = assertFile;\nexports.assertFlow = assertFlow;\nexports.assertFlowBaseAnnotation = assertFlowBaseAnnotation;\nexports.assertFlowDeclaration = assertFlowDeclaration;\nexports.assertFlowPredicate = assertFlowPredicate;\nexports.assertFlowType = assertFlowType;\nexports.assertFor = assertFor;\nexports.assertForInStatement = assertForInStatement;\nexports.assertForOfStatement = assertForOfStatement;\nexports.assertForStatement = assertForStatement;\nexports.assertForXStatement = assertForXStatement;\nexports.assertFunction = assertFunction;\nexports.assertFunctionDeclaration = assertFunctionDeclaration;\nexports.assertFunctionExpression = assertFunctionExpression;\nexports.assertFunctionParameter = assertFunctionParameter;\nexports.assertFunctionParent = assertFunctionParent;\nexports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation;\nexports.assertFunctionTypeParam = assertFunctionTypeParam;\nexports.assertGenericTypeAnnotation = assertGenericTypeAnnotation;\nexports.assertIdentifier = assertIdentifier;\nexports.assertIfStatement = assertIfStatement;\nexports.assertImmutable = assertImmutable;\nexports.assertImport = assertImport;\nexports.assertImportAttribute = assertImportAttribute;\nexports.assertImportDeclaration = assertImportDeclaration;\nexports.assertImportDefaultSpecifier = assertImportDefaultSpecifier;\nexports.assertImportExpression = assertImportExpression;\nexports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier;\nexports.assertImportOrExportDeclaration = assertImportOrExportDeclaration;\nexports.assertImportSpecifier = assertImportSpecifier;\nexports.assertIndexedAccessType = assertIndexedAccessType;\nexports.assertInferredPredicate = assertInferredPredicate;\nexports.assertInterfaceDeclaration = assertInterfaceDeclaration;\nexports.assertInterfaceExtends = assertInterfaceExtends;\nexports.assertInterfaceTypeAnnotation = assertInterfaceTypeAnnotation;\nexports.assertInterpreterDirective = assertInterpreterDirective;\nexports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation;\nexports.assertJSX = assertJSX;\nexports.assertJSXAttribute = assertJSXAttribute;\nexports.assertJSXClosingElement = assertJSXClosingElement;\nexports.assertJSXClosingFragment = assertJSXClosingFragment;\nexports.assertJSXElement = assertJSXElement;\nexports.assertJSXEmptyExpression = assertJSXEmptyExpression;\nexports.assertJSXExpressionContainer = assertJSXExpressionContainer;\nexports.assertJSXFragment = assertJSXFragment;\nexports.assertJSXIdentifier = assertJSXIdentifier;\nexports.assertJSXMemberExpression = assertJSXMemberExpression;\nexports.assertJSXNamespacedName = assertJSXNamespacedName;\nexports.assertJSXOpeningElement = assertJSXOpeningElement;\nexports.assertJSXOpeningFragment = assertJSXOpeningFragment;\nexports.assertJSXSpreadAttribute = assertJSXSpreadAttribute;\nexports.assertJSXSpreadChild = assertJSXSpreadChild;\nexports.assertJSXText = assertJSXText;\nexports.assertLVal = assertLVal;\nexports.assertLabeledStatement = assertLabeledStatement;\nexports.assertLiteral = assertLiteral;\nexports.assertLogicalExpression = assertLogicalExpression;\nexports.assertLoop = assertLoop;\nexports.assertMemberExpression = assertMemberExpression;\nexports.assertMetaProperty = assertMetaProperty;\nexports.assertMethod = assertMethod;\nexports.assertMiscellaneous = assertMiscellaneous;\nexports.assertMixedTypeAnnotation = assertMixedTypeAnnotation;\nexports.assertModuleDeclaration = assertModuleDeclaration;\nexports.assertModuleExpression = assertModuleExpression;\nexports.assertModuleSpecifier = assertModuleSpecifier;\nexports.assertNewExpression = assertNewExpression;\nexports.assertNoop = assertNoop;\nexports.assertNullLiteral = assertNullLiteral;\nexports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation;\nexports.assertNullableTypeAnnotation = assertNullableTypeAnnotation;\nexports.assertNumberLiteral = assertNumberLiteral;\nexports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation;\nexports.assertNumberTypeAnnotation = assertNumberTypeAnnotation;\nexports.assertNumericLiteral = assertNumericLiteral;\nexports.assertObjectExpression = assertObjectExpression;\nexports.assertObjectMember = assertObjectMember;\nexports.assertObjectMethod = assertObjectMethod;\nexports.assertObjectPattern = assertObjectPattern;\nexports.assertObjectProperty = assertObjectProperty;\nexports.assertObjectTypeAnnotation = assertObjectTypeAnnotation;\nexports.assertObjectTypeCallProperty = assertObjectTypeCallProperty;\nexports.assertObjectTypeIndexer = assertObjectTypeIndexer;\nexports.assertObjectTypeInternalSlot = assertObjectTypeInternalSlot;\nexports.assertObjectTypeProperty = assertObjectTypeProperty;\nexports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty;\nexports.assertOpaqueType = assertOpaqueType;\nexports.assertOptionalCallExpression = assertOptionalCallExpression;\nexports.assertOptionalIndexedAccessType = assertOptionalIndexedAccessType;\nexports.assertOptionalMemberExpression = assertOptionalMemberExpression;\nexports.assertParenthesizedExpression = assertParenthesizedExpression;\nexports.assertPattern = assertPattern;\nexports.assertPatternLike = assertPatternLike;\nexports.assertPipelineBareFunction = assertPipelineBareFunction;\nexports.assertPipelinePrimaryTopicReference = assertPipelinePrimaryTopicReference;\nexports.assertPipelineTopicExpression = assertPipelineTopicExpression;\nexports.assertPlaceholder = assertPlaceholder;\nexports.assertPrivate = assertPrivate;\nexports.assertPrivateName = assertPrivateName;\nexports.assertProgram = assertProgram;\nexports.assertProperty = assertProperty;\nexports.assertPureish = assertPureish;\nexports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier;\nexports.assertRecordExpression = assertRecordExpression;\nexports.assertRegExpLiteral = assertRegExpLiteral;\nexports.assertRegexLiteral = assertRegexLiteral;\nexports.assertRestElement = assertRestElement;\nexports.assertRestProperty = assertRestProperty;\nexports.assertReturnStatement = assertReturnStatement;\nexports.assertScopable = assertScopable;\nexports.assertSequenceExpression = assertSequenceExpression;\nexports.assertSpreadElement = assertSpreadElement;\nexports.assertSpreadProperty = assertSpreadProperty;\nexports.assertStandardized = assertStandardized;\nexports.assertStatement = assertStatement;\nexports.assertStaticBlock = assertStaticBlock;\nexports.assertStringLiteral = assertStringLiteral;\nexports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation;\nexports.assertStringTypeAnnotation = assertStringTypeAnnotation;\nexports.assertSuper = assertSuper;\nexports.assertSwitchCase = assertSwitchCase;\nexports.assertSwitchStatement = assertSwitchStatement;\nexports.assertSymbolTypeAnnotation = assertSymbolTypeAnnotation;\nexports.assertTSAnyKeyword = assertTSAnyKeyword;\nexports.assertTSArrayType = assertTSArrayType;\nexports.assertTSAsExpression = assertTSAsExpression;\nexports.assertTSBaseType = assertTSBaseType;\nexports.assertTSBigIntKeyword = assertTSBigIntKeyword;\nexports.assertTSBooleanKeyword = assertTSBooleanKeyword;\nexports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration;\nexports.assertTSConditionalType = assertTSConditionalType;\nexports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration;\nexports.assertTSConstructorType = assertTSConstructorType;\nexports.assertTSDeclareFunction = assertTSDeclareFunction;\nexports.assertTSDeclareMethod = assertTSDeclareMethod;\nexports.assertTSEntityName = assertTSEntityName;\nexports.assertTSEnumBody = assertTSEnumBody;\nexports.assertTSEnumDeclaration = assertTSEnumDeclaration;\nexports.assertTSEnumMember = assertTSEnumMember;\nexports.assertTSExportAssignment = assertTSExportAssignment;\nexports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments;\nexports.assertTSExternalModuleReference = assertTSExternalModuleReference;\nexports.assertTSFunctionType = assertTSFunctionType;\nexports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration;\nexports.assertTSImportType = assertTSImportType;\nexports.assertTSIndexSignature = assertTSIndexSignature;\nexports.assertTSIndexedAccessType = assertTSIndexedAccessType;\nexports.assertTSInferType = assertTSInferType;\nexports.assertTSInstantiationExpression = assertTSInstantiationExpression;\nexports.assertTSInterfaceBody = assertTSInterfaceBody;\nexports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration;\nexports.assertTSIntersectionType = assertTSIntersectionType;\nexports.assertTSIntrinsicKeyword = assertTSIntrinsicKeyword;\nexports.assertTSLiteralType = assertTSLiteralType;\nexports.assertTSMappedType = assertTSMappedType;\nexports.assertTSMethodSignature = assertTSMethodSignature;\nexports.assertTSModuleBlock = assertTSModuleBlock;\nexports.assertTSModuleDeclaration = assertTSModuleDeclaration;\nexports.assertTSNamedTupleMember = assertTSNamedTupleMember;\nexports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration;\nexports.assertTSNeverKeyword = assertTSNeverKeyword;\nexports.assertTSNonNullExpression = assertTSNonNullExpression;\nexports.assertTSNullKeyword = assertTSNullKeyword;\nexports.assertTSNumberKeyword = assertTSNumberKeyword;\nexports.assertTSObjectKeyword = assertTSObjectKeyword;\nexports.assertTSOptionalType = assertTSOptionalType;\nexports.assertTSParameterProperty = assertTSParameterProperty;\nexports.assertTSParenthesizedType = assertTSParenthesizedType;\nexports.assertTSPropertySignature = assertTSPropertySignature;\nexports.assertTSQualifiedName = assertTSQualifiedName;\nexports.assertTSRestType = assertTSRestType;\nexports.assertTSSatisfiesExpression = assertTSSatisfiesExpression;\nexports.assertTSStringKeyword = assertTSStringKeyword;\nexports.assertTSSymbolKeyword = assertTSSymbolKeyword;\nexports.assertTSTemplateLiteralType = assertTSTemplateLiteralType;\nexports.assertTSThisType = assertTSThisType;\nexports.assertTSTupleType = assertTSTupleType;\nexports.assertTSType = assertTSType;\nexports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration;\nexports.assertTSTypeAnnotation = assertTSTypeAnnotation;\nexports.assertTSTypeAssertion = assertTSTypeAssertion;\nexports.assertTSTypeElement = assertTSTypeElement;\nexports.assertTSTypeLiteral = assertTSTypeLiteral;\nexports.assertTSTypeOperator = assertTSTypeOperator;\nexports.assertTSTypeParameter = assertTSTypeParameter;\nexports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration;\nexports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation;\nexports.assertTSTypePredicate = assertTSTypePredicate;\nexports.assertTSTypeQuery = assertTSTypeQuery;\nexports.assertTSTypeReference = assertTSTypeReference;\nexports.assertTSUndefinedKeyword = assertTSUndefinedKeyword;\nexports.assertTSUnionType = assertTSUnionType;\nexports.assertTSUnknownKeyword = assertTSUnknownKeyword;\nexports.assertTSVoidKeyword = assertTSVoidKeyword;\nexports.assertTaggedTemplateExpression = assertTaggedTemplateExpression;\nexports.assertTemplateElement = assertTemplateElement;\nexports.assertTemplateLiteral = assertTemplateLiteral;\nexports.assertTerminatorless = assertTerminatorless;\nexports.assertThisExpression = assertThisExpression;\nexports.assertThisTypeAnnotation = assertThisTypeAnnotation;\nexports.assertThrowStatement = assertThrowStatement;\nexports.assertTopicReference = assertTopicReference;\nexports.assertTryStatement = assertTryStatement;\nexports.assertTupleExpression = assertTupleExpression;\nexports.assertTupleTypeAnnotation = assertTupleTypeAnnotation;\nexports.assertTypeAlias = assertTypeAlias;\nexports.assertTypeAnnotation = assertTypeAnnotation;\nexports.assertTypeCastExpression = assertTypeCastExpression;\nexports.assertTypeParameter = assertTypeParameter;\nexports.assertTypeParameterDeclaration = assertTypeParameterDeclaration;\nexports.assertTypeParameterInstantiation = assertTypeParameterInstantiation;\nexports.assertTypeScript = assertTypeScript;\nexports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation;\nexports.assertUnaryExpression = assertUnaryExpression;\nexports.assertUnaryLike = assertUnaryLike;\nexports.assertUnionTypeAnnotation = assertUnionTypeAnnotation;\nexports.assertUpdateExpression = assertUpdateExpression;\nexports.assertUserWhitespacable = assertUserWhitespacable;\nexports.assertV8IntrinsicIdentifier = assertV8IntrinsicIdentifier;\nexports.assertVariableDeclaration = assertVariableDeclaration;\nexports.assertVariableDeclarator = assertVariableDeclarator;\nexports.assertVariance = assertVariance;\nexports.assertVoidPattern = assertVoidPattern;\nexports.assertVoidTypeAnnotation = assertVoidTypeAnnotation;\nexports.assertWhile = assertWhile;\nexports.assertWhileStatement = assertWhileStatement;\nexports.assertWithStatement = assertWithStatement;\nexports.assertYieldExpression = assertYieldExpression;\nvar _is = require(\"../../validators/is.js\");\nvar _deprecationWarning = require(\"../../utils/deprecationWarning.js\");\nfunction assert(type, node, opts) {\n if (!(0, _is.default)(type, node, opts)) {\n throw new Error(`Expected type \"${type}\" with option ${JSON.stringify(opts)}, ` + `but instead got \"${node.type}\".`);\n }\n}\nfunction assertArrayExpression(node, opts) {\n assert(\"ArrayExpression\", node, opts);\n}\nfunction assertAssignmentExpression(node, opts) {\n assert(\"AssignmentExpression\", node, opts);\n}\nfunction assertBinaryExpression(node, opts) {\n assert(\"BinaryExpression\", node, opts);\n}\nfunction assertInterpreterDirective(node, opts) {\n assert(\"InterpreterDirective\", node, opts);\n}\nfunction assertDirective(node, opts) {\n assert(\"Directive\", node, opts);\n}\nfunction assertDirectiveLiteral(node, opts) {\n assert(\"DirectiveLiteral\", node, opts);\n}\nfunction assertBlockStatement(node, opts) {\n assert(\"BlockStatement\", node, opts);\n}\nfunction assertBreakStatement(node, opts) {\n assert(\"BreakStatement\", node, opts);\n}\nfunction assertCallExpression(node, opts) {\n assert(\"CallExpression\", node, opts);\n}\nfunction assertCatchClause(node, opts) {\n assert(\"CatchClause\", node, opts);\n}\nfunction assertConditionalExpression(node, opts) {\n assert(\"ConditionalExpression\", node, opts);\n}\nfunction assertContinueStatement(node, opts) {\n assert(\"ContinueStatement\", node, opts);\n}\nfunction assertDebuggerStatement(node, opts) {\n assert(\"DebuggerStatement\", node, opts);\n}\nfunction assertDoWhileStatement(node, opts) {\n assert(\"DoWhileStatement\", node, opts);\n}\nfunction assertEmptyStatement(node, opts) {\n assert(\"EmptyStatement\", node, opts);\n}\nfunction assertExpressionStatement(node, opts) {\n assert(\"ExpressionStatement\", node, opts);\n}\nfunction assertFile(node, opts) {\n assert(\"File\", node, opts);\n}\nfunction assertForInStatement(node, opts) {\n assert(\"ForInStatement\", node, opts);\n}\nfunction assertForStatement(node, opts) {\n assert(\"ForStatement\", node, opts);\n}\nfunction assertFunctionDeclaration(node, opts) {\n assert(\"FunctionDeclaration\", node, opts);\n}\nfunction assertFunctionExpression(node, opts) {\n assert(\"FunctionExpression\", node, opts);\n}\nfunction assertIdentifier(node, opts) {\n assert(\"Identifier\", node, opts);\n}\nfunction assertIfStatement(node, opts) {\n assert(\"IfStatement\", node, opts);\n}\nfunction assertLabeledStatement(node, opts) {\n assert(\"LabeledStatement\", node, opts);\n}\nfunction assertStringLiteral(node, opts) {\n assert(\"StringLiteral\", node, opts);\n}\nfunction assertNumericLiteral(node, opts) {\n assert(\"NumericLiteral\", node, opts);\n}\nfunction assertNullLiteral(node, opts) {\n assert(\"NullLiteral\", node, opts);\n}\nfunction assertBooleanLiteral(node, opts) {\n assert(\"BooleanLiteral\", node, opts);\n}\nfunction assertRegExpLiteral(node, opts) {\n assert(\"RegExpLiteral\", node, opts);\n}\nfunction assertLogicalExpression(node, opts) {\n assert(\"LogicalExpression\", node, opts);\n}\nfunction assertMemberExpression(node, opts) {\n assert(\"MemberExpression\", node, opts);\n}\nfunction assertNewExpression(node, opts) {\n assert(\"NewExpression\", node, opts);\n}\nfunction assertProgram(node, opts) {\n assert(\"Program\", node, opts);\n}\nfunction assertObjectExpression(node, opts) {\n assert(\"ObjectExpression\", node, opts);\n}\nfunction assertObjectMethod(node, opts) {\n assert(\"ObjectMethod\", node, opts);\n}\nfunction assertObjectProperty(node, opts) {\n assert(\"ObjectProperty\", node, opts);\n}\nfunction assertRestElement(node, opts) {\n assert(\"RestElement\", node, opts);\n}\nfunction assertReturnStatement(node, opts) {\n assert(\"ReturnStatement\", node, opts);\n}\nfunction assertSequenceExpression(node, opts) {\n assert(\"SequenceExpression\", node, opts);\n}\nfunction assertParenthesizedExpression(node, opts) {\n assert(\"ParenthesizedExpression\", node, opts);\n}\nfunction assertSwitchCase(node, opts) {\n assert(\"SwitchCase\", node, opts);\n}\nfunction assertSwitchStatement(node, opts) {\n assert(\"SwitchStatement\", node, opts);\n}\nfunction assertThisExpression(node, opts) {\n assert(\"ThisExpression\", node, opts);\n}\nfunction assertThrowStatement(node, opts) {\n assert(\"ThrowStatement\", node, opts);\n}\nfunction assertTryStatement(node, opts) {\n assert(\"TryStatement\", node, opts);\n}\nfunction assertUnaryExpression(node, opts) {\n assert(\"UnaryExpression\", node, opts);\n}\nfunction assertUpdateExpression(node, opts) {\n assert(\"UpdateExpression\", node, opts);\n}\nfunction assertVariableDeclaration(node, opts) {\n assert(\"VariableDeclaration\", node, opts);\n}\nfunction assertVariableDeclarator(node, opts) {\n assert(\"VariableDeclarator\", node, opts);\n}\nfunction assertWhileStatement(node, opts) {\n assert(\"WhileStatement\", node, opts);\n}\nfunction assertWithStatement(node, opts) {\n assert(\"WithStatement\", node, opts);\n}\nfunction assertAssignmentPattern(node, opts) {\n assert(\"AssignmentPattern\", node, opts);\n}\nfunction assertArrayPattern(node, opts) {\n assert(\"ArrayPattern\", node, opts);\n}\nfunction assertArrowFunctionExpression(node, opts) {\n assert(\"ArrowFunctionExpression\", node, opts);\n}\nfunction assertClassBody(node, opts) {\n assert(\"ClassBody\", node, opts);\n}\nfunction assertClassExpression(node, opts) {\n assert(\"ClassExpression\", node, opts);\n}\nfunction assertClassDeclaration(node, opts) {\n assert(\"ClassDeclaration\", node, opts);\n}\nfunction assertExportAllDeclaration(node, opts) {\n assert(\"ExportAllDeclaration\", node, opts);\n}\nfunction assertExportDefaultDeclaration(node, opts) {\n assert(\"ExportDefaultDeclaration\", node, opts);\n}\nfunction assertExportNamedDeclaration(node, opts) {\n assert(\"ExportNamedDeclaration\", node, opts);\n}\nfunction assertExportSpecifier(node, opts) {\n assert(\"ExportSpecifier\", node, opts);\n}\nfunction assertForOfStatement(node, opts) {\n assert(\"ForOfStatement\", node, opts);\n}\nfunction assertImportDeclaration(node, opts) {\n assert(\"ImportDeclaration\", node, opts);\n}\nfunction assertImportDefaultSpecifier(node, opts) {\n assert(\"ImportDefaultSpecifier\", node, opts);\n}\nfunction assertImportNamespaceSpecifier(node, opts) {\n assert(\"ImportNamespaceSpecifier\", node, opts);\n}\nfunction assertImportSpecifier(node, opts) {\n assert(\"ImportSpecifier\", node, opts);\n}\nfunction assertImportExpression(node, opts) {\n assert(\"ImportExpression\", node, opts);\n}\nfunction assertMetaProperty(node, opts) {\n assert(\"MetaProperty\", node, opts);\n}\nfunction assertClassMethod(node, opts) {\n assert(\"ClassMethod\", node, opts);\n}\nfunction assertObjectPattern(node, opts) {\n assert(\"ObjectPattern\", node, opts);\n}\nfunction assertSpreadElement(node, opts) {\n assert(\"SpreadElement\", node, opts);\n}\nfunction assertSuper(node, opts) {\n assert(\"Super\", node, opts);\n}\nfunction assertTaggedTemplateExpression(node, opts) {\n assert(\"TaggedTemplateExpression\", node, opts);\n}\nfunction assertTemplateElement(node, opts) {\n assert(\"TemplateElement\", node, opts);\n}\nfunction assertTemplateLiteral(node, opts) {\n assert(\"TemplateLiteral\", node, opts);\n}\nfunction assertYieldExpression(node, opts) {\n assert(\"YieldExpression\", node, opts);\n}\nfunction assertAwaitExpression(node, opts) {\n assert(\"AwaitExpression\", node, opts);\n}\nfunction assertImport(node, opts) {\n assert(\"Import\", node, opts);\n}\nfunction assertBigIntLiteral(node, opts) {\n assert(\"BigIntLiteral\", node, opts);\n}\nfunction assertExportNamespaceSpecifier(node, opts) {\n assert(\"ExportNamespaceSpecifier\", node, opts);\n}\nfunction assertOptionalMemberExpression(node, opts) {\n assert(\"OptionalMemberExpression\", node, opts);\n}\nfunction assertOptionalCallExpression(node, opts) {\n assert(\"OptionalCallExpression\", node, opts);\n}\nfunction assertClassProperty(node, opts) {\n assert(\"ClassProperty\", node, opts);\n}\nfunction assertClassAccessorProperty(node, opts) {\n assert(\"ClassAccessorProperty\", node, opts);\n}\nfunction assertClassPrivateProperty(node, opts) {\n assert(\"ClassPrivateProperty\", node, opts);\n}\nfunction assertClassPrivateMethod(node, opts) {\n assert(\"ClassPrivateMethod\", node, opts);\n}\nfunction assertPrivateName(node, opts) {\n assert(\"PrivateName\", node, opts);\n}\nfunction assertStaticBlock(node, opts) {\n assert(\"StaticBlock\", node, opts);\n}\nfunction assertImportAttribute(node, opts) {\n assert(\"ImportAttribute\", node, opts);\n}\nfunction assertAnyTypeAnnotation(node, opts) {\n assert(\"AnyTypeAnnotation\", node, opts);\n}\nfunction assertArrayTypeAnnotation(node, opts) {\n assert(\"ArrayTypeAnnotation\", node, opts);\n}\nfunction assertBooleanTypeAnnotation(node, opts) {\n assert(\"BooleanTypeAnnotation\", node, opts);\n}\nfunction assertBooleanLiteralTypeAnnotation(node, opts) {\n assert(\"BooleanLiteralTypeAnnotation\", node, opts);\n}\nfunction assertNullLiteralTypeAnnotation(node, opts) {\n assert(\"NullLiteralTypeAnnotation\", node, opts);\n}\nfunction assertClassImplements(node, opts) {\n assert(\"ClassImplements\", node, opts);\n}\nfunction assertDeclareClass(node, opts) {\n assert(\"DeclareClass\", node, opts);\n}\nfunction assertDeclareFunction(node, opts) {\n assert(\"DeclareFunction\", node, opts);\n}\nfunction assertDeclareInterface(node, opts) {\n assert(\"DeclareInterface\", node, opts);\n}\nfunction assertDeclareModule(node, opts) {\n assert(\"DeclareModule\", node, opts);\n}\nfunction assertDeclareModuleExports(node, opts) {\n assert(\"DeclareModuleExports\", node, opts);\n}\nfunction assertDeclareTypeAlias(node, opts) {\n assert(\"DeclareTypeAlias\", node, opts);\n}\nfunction assertDeclareOpaqueType(node, opts) {\n assert(\"DeclareOpaqueType\", node, opts);\n}\nfunction assertDeclareVariable(node, opts) {\n assert(\"DeclareVariable\", node, opts);\n}\nfunction assertDeclareExportDeclaration(node, opts) {\n assert(\"DeclareExportDeclaration\", node, opts);\n}\nfunction assertDeclareExportAllDeclaration(node, opts) {\n assert(\"DeclareExportAllDeclaration\", node, opts);\n}\nfunction assertDeclaredPredicate(node, opts) {\n assert(\"DeclaredPredicate\", node, opts);\n}\nfunction assertExistsTypeAnnotation(node, opts) {\n assert(\"ExistsTypeAnnotation\", node, opts);\n}\nfunction assertFunctionTypeAnnotation(node, opts) {\n assert(\"FunctionTypeAnnotation\", node, opts);\n}\nfunction assertFunctionTypeParam(node, opts) {\n assert(\"FunctionTypeParam\", node, opts);\n}\nfunction assertGenericTypeAnnotation(node, opts) {\n assert(\"GenericTypeAnnotation\", node, opts);\n}\nfunction assertInferredPredicate(node, opts) {\n assert(\"InferredPredicate\", node, opts);\n}\nfunction assertInterfaceExtends(node, opts) {\n assert(\"InterfaceExtends\", node, opts);\n}\nfunction assertInterfaceDeclaration(node, opts) {\n assert(\"InterfaceDeclaration\", node, opts);\n}\nfunction assertInterfaceTypeAnnotation(node, opts) {\n assert(\"InterfaceTypeAnnotation\", node, opts);\n}\nfunction assertIntersectionTypeAnnotation(node, opts) {\n assert(\"IntersectionTypeAnnotation\", node, opts);\n}\nfunction assertMixedTypeAnnotation(node, opts) {\n assert(\"MixedTypeAnnotation\", node, opts);\n}\nfunction assertEmptyTypeAnnotation(node, opts) {\n assert(\"EmptyTypeAnnotation\", node, opts);\n}\nfunction assertNullableTypeAnnotation(node, opts) {\n assert(\"NullableTypeAnnotation\", node, opts);\n}\nfunction assertNumberLiteralTypeAnnotation(node, opts) {\n assert(\"NumberLiteralTypeAnnotation\", node, opts);\n}\nfunction assertNumberTypeAnnotation(node, opts) {\n assert(\"NumberTypeAnnotation\", node, opts);\n}\nfunction assertObjectTypeAnnotation(node, opts) {\n assert(\"ObjectTypeAnnotation\", node, opts);\n}\nfunction assertObjectTypeInternalSlot(node, opts) {\n assert(\"ObjectTypeInternalSlot\", node, opts);\n}\nfunction assertObjectTypeCallProperty(node, opts) {\n assert(\"ObjectTypeCallProperty\", node, opts);\n}\nfunction assertObjectTypeIndexer(node, opts) {\n assert(\"ObjectTypeIndexer\", node, opts);\n}\nfunction assertObjectTypeProperty(node, opts) {\n assert(\"ObjectTypeProperty\", node, opts);\n}\nfunction assertObjectTypeSpreadProperty(node, opts) {\n assert(\"ObjectTypeSpreadProperty\", node, opts);\n}\nfunction assertOpaqueType(node, opts) {\n assert(\"OpaqueType\", node, opts);\n}\nfunction assertQualifiedTypeIdentifier(node, opts) {\n assert(\"QualifiedTypeIdentifier\", node, opts);\n}\nfunction assertStringLiteralTypeAnnotation(node, opts) {\n assert(\"StringLiteralTypeAnnotation\", node, opts);\n}\nfunction assertStringTypeAnnotation(node, opts) {\n assert(\"StringTypeAnnotation\", node, opts);\n}\nfunction assertSymbolTypeAnnotation(node, opts) {\n assert(\"SymbolTypeAnnotation\", node, opts);\n}\nfunction assertThisTypeAnnotation(node, opts) {\n assert(\"ThisTypeAnnotation\", node, opts);\n}\nfunction assertTupleTypeAnnotation(node, opts) {\n assert(\"TupleTypeAnnotation\", node, opts);\n}\nfunction assertTypeofTypeAnnotation(node, opts) {\n assert(\"TypeofTypeAnnotation\", node, opts);\n}\nfunction assertTypeAlias(node, opts) {\n assert(\"TypeAlias\", node, opts);\n}\nfunction assertTypeAnnotation(node, opts) {\n assert(\"TypeAnnotation\", node, opts);\n}\nfunction assertTypeCastExpression(node, opts) {\n assert(\"TypeCastExpression\", node, opts);\n}\nfunction assertTypeParameter(node, opts) {\n assert(\"TypeParameter\", node, opts);\n}\nfunction assertTypeParameterDeclaration(node, opts) {\n assert(\"TypeParameterDeclaration\", node, opts);\n}\nfunction assertTypeParameterInstantiation(node, opts) {\n assert(\"TypeParameterInstantiation\", node, opts);\n}\nfunction assertUnionTypeAnnotation(node, opts) {\n assert(\"UnionTypeAnnotation\", node, opts);\n}\nfunction assertVariance(node, opts) {\n assert(\"Variance\", node, opts);\n}\nfunction assertVoidTypeAnnotation(node, opts) {\n assert(\"VoidTypeAnnotation\", node, opts);\n}\nfunction assertEnumDeclaration(node, opts) {\n assert(\"EnumDeclaration\", node, opts);\n}\nfunction assertEnumBooleanBody(node, opts) {\n assert(\"EnumBooleanBody\", node, opts);\n}\nfunction assertEnumNumberBody(node, opts) {\n assert(\"EnumNumberBody\", node, opts);\n}\nfunction assertEnumStringBody(node, opts) {\n assert(\"EnumStringBody\", node, opts);\n}\nfunction assertEnumSymbolBody(node, opts) {\n assert(\"EnumSymbolBody\", node, opts);\n}\nfunction assertEnumBooleanMember(node, opts) {\n assert(\"EnumBooleanMember\", node, opts);\n}\nfunction assertEnumNumberMember(node, opts) {\n assert(\"EnumNumberMember\", node, opts);\n}\nfunction assertEnumStringMember(node, opts) {\n assert(\"EnumStringMember\", node, opts);\n}\nfunction assertEnumDefaultedMember(node, opts) {\n assert(\"EnumDefaultedMember\", node, opts);\n}\nfunction assertIndexedAccessType(node, opts) {\n assert(\"IndexedAccessType\", node, opts);\n}\nfunction assertOptionalIndexedAccessType(node, opts) {\n assert(\"OptionalIndexedAccessType\", node, opts);\n}\nfunction assertJSXAttribute(node, opts) {\n assert(\"JSXAttribute\", node, opts);\n}\nfunction assertJSXClosingElement(node, opts) {\n assert(\"JSXClosingElement\", node, opts);\n}\nfunction assertJSXElement(node, opts) {\n assert(\"JSXElement\", node, opts);\n}\nfunction assertJSXEmptyExpression(node, opts) {\n assert(\"JSXEmptyExpression\", node, opts);\n}\nfunction assertJSXExpressionContainer(node, opts) {\n assert(\"JSXExpressionContainer\", node, opts);\n}\nfunction assertJSXSpreadChild(node, opts) {\n assert(\"JSXSpreadChild\", node, opts);\n}\nfunction assertJSXIdentifier(node, opts) {\n assert(\"JSXIdentifier\", node, opts);\n}\nfunction assertJSXMemberExpression(node, opts) {\n assert(\"JSXMemberExpression\", node, opts);\n}\nfunction assertJSXNamespacedName(node, opts) {\n assert(\"JSXNamespacedName\", node, opts);\n}\nfunction assertJSXOpeningElement(node, opts) {\n assert(\"JSXOpeningElement\", node, opts);\n}\nfunction assertJSXSpreadAttribute(node, opts) {\n assert(\"JSXSpreadAttribute\", node, opts);\n}\nfunction assertJSXText(node, opts) {\n assert(\"JSXText\", node, opts);\n}\nfunction assertJSXFragment(node, opts) {\n assert(\"JSXFragment\", node, opts);\n}\nfunction assertJSXOpeningFragment(node, opts) {\n assert(\"JSXOpeningFragment\", node, opts);\n}\nfunction assertJSXClosingFragment(node, opts) {\n assert(\"JSXClosingFragment\", node, opts);\n}\nfunction assertNoop(node, opts) {\n assert(\"Noop\", node, opts);\n}\nfunction assertPlaceholder(node, opts) {\n assert(\"Placeholder\", node, opts);\n}\nfunction assertV8IntrinsicIdentifier(node, opts) {\n assert(\"V8IntrinsicIdentifier\", node, opts);\n}\nfunction assertArgumentPlaceholder(node, opts) {\n assert(\"ArgumentPlaceholder\", node, opts);\n}\nfunction assertBindExpression(node, opts) {\n assert(\"BindExpression\", node, opts);\n}\nfunction assertDecorator(node, opts) {\n assert(\"Decorator\", node, opts);\n}\nfunction assertDoExpression(node, opts) {\n assert(\"DoExpression\", node, opts);\n}\nfunction assertExportDefaultSpecifier(node, opts) {\n assert(\"ExportDefaultSpecifier\", node, opts);\n}\nfunction assertRecordExpression(node, opts) {\n assert(\"RecordExpression\", node, opts);\n}\nfunction assertTupleExpression(node, opts) {\n assert(\"TupleExpression\", node, opts);\n}\nfunction assertDecimalLiteral(node, opts) {\n assert(\"DecimalLiteral\", node, opts);\n}\nfunction assertModuleExpression(node, opts) {\n assert(\"ModuleExpression\", node, opts);\n}\nfunction assertTopicReference(node, opts) {\n assert(\"TopicReference\", node, opts);\n}\nfunction assertPipelineTopicExpression(node, opts) {\n assert(\"PipelineTopicExpression\", node, opts);\n}\nfunction assertPipelineBareFunction(node, opts) {\n assert(\"PipelineBareFunction\", node, opts);\n}\nfunction assertPipelinePrimaryTopicReference(node, opts) {\n assert(\"PipelinePrimaryTopicReference\", node, opts);\n}\nfunction assertVoidPattern(node, opts) {\n assert(\"VoidPattern\", node, opts);\n}\nfunction assertTSParameterProperty(node, opts) {\n assert(\"TSParameterProperty\", node, opts);\n}\nfunction assertTSDeclareFunction(node, opts) {\n assert(\"TSDeclareFunction\", node, opts);\n}\nfunction assertTSDeclareMethod(node, opts) {\n assert(\"TSDeclareMethod\", node, opts);\n}\nfunction assertTSQualifiedName(node, opts) {\n assert(\"TSQualifiedName\", node, opts);\n}\nfunction assertTSCallSignatureDeclaration(node, opts) {\n assert(\"TSCallSignatureDeclaration\", node, opts);\n}\nfunction assertTSConstructSignatureDeclaration(node, opts) {\n assert(\"TSConstructSignatureDeclaration\", node, opts);\n}\nfunction assertTSPropertySignature(node, opts) {\n assert(\"TSPropertySignature\", node, opts);\n}\nfunction assertTSMethodSignature(node, opts) {\n assert(\"TSMethodSignature\", node, opts);\n}\nfunction assertTSIndexSignature(node, opts) {\n assert(\"TSIndexSignature\", node, opts);\n}\nfunction assertTSAnyKeyword(node, opts) {\n assert(\"TSAnyKeyword\", node, opts);\n}\nfunction assertTSBooleanKeyword(node, opts) {\n assert(\"TSBooleanKeyword\", node, opts);\n}\nfunction assertTSBigIntKeyword(node, opts) {\n assert(\"TSBigIntKeyword\", node, opts);\n}\nfunction assertTSIntrinsicKeyword(node, opts) {\n assert(\"TSIntrinsicKeyword\", node, opts);\n}\nfunction assertTSNeverKeyword(node, opts) {\n assert(\"TSNeverKeyword\", node, opts);\n}\nfunction assertTSNullKeyword(node, opts) {\n assert(\"TSNullKeyword\", node, opts);\n}\nfunction assertTSNumberKeyword(node, opts) {\n assert(\"TSNumberKeyword\", node, opts);\n}\nfunction assertTSObjectKeyword(node, opts) {\n assert(\"TSObjectKeyword\", node, opts);\n}\nfunction assertTSStringKeyword(node, opts) {\n assert(\"TSStringKeyword\", node, opts);\n}\nfunction assertTSSymbolKeyword(node, opts) {\n assert(\"TSSymbolKeyword\", node, opts);\n}\nfunction assertTSUndefinedKeyword(node, opts) {\n assert(\"TSUndefinedKeyword\", node, opts);\n}\nfunction assertTSUnknownKeyword(node, opts) {\n assert(\"TSUnknownKeyword\", node, opts);\n}\nfunction assertTSVoidKeyword(node, opts) {\n assert(\"TSVoidKeyword\", node, opts);\n}\nfunction assertTSThisType(node, opts) {\n assert(\"TSThisType\", node, opts);\n}\nfunction assertTSFunctionType(node, opts) {\n assert(\"TSFunctionType\", node, opts);\n}\nfunction assertTSConstructorType(node, opts) {\n assert(\"TSConstructorType\", node, opts);\n}\nfunction assertTSTypeReference(node, opts) {\n assert(\"TSTypeReference\", node, opts);\n}\nfunction assertTSTypePredicate(node, opts) {\n assert(\"TSTypePredicate\", node, opts);\n}\nfunction assertTSTypeQuery(node, opts) {\n assert(\"TSTypeQuery\", node, opts);\n}\nfunction assertTSTypeLiteral(node, opts) {\n assert(\"TSTypeLiteral\", node, opts);\n}\nfunction assertTSArrayType(node, opts) {\n assert(\"TSArrayType\", node, opts);\n}\nfunction assertTSTupleType(node, opts) {\n assert(\"TSTupleType\", node, opts);\n}\nfunction assertTSOptionalType(node, opts) {\n assert(\"TSOptionalType\", node, opts);\n}\nfunction assertTSRestType(node, opts) {\n assert(\"TSRestType\", node, opts);\n}\nfunction assertTSNamedTupleMember(node, opts) {\n assert(\"TSNamedTupleMember\", node, opts);\n}\nfunction assertTSUnionType(node, opts) {\n assert(\"TSUnionType\", node, opts);\n}\nfunction assertTSIntersectionType(node, opts) {\n assert(\"TSIntersectionType\", node, opts);\n}\nfunction assertTSConditionalType(node, opts) {\n assert(\"TSConditionalType\", node, opts);\n}\nfunction assertTSInferType(node, opts) {\n assert(\"TSInferType\", node, opts);\n}\nfunction assertTSParenthesizedType(node, opts) {\n assert(\"TSParenthesizedType\", node, opts);\n}\nfunction assertTSTypeOperator(node, opts) {\n assert(\"TSTypeOperator\", node, opts);\n}\nfunction assertTSIndexedAccessType(node, opts) {\n assert(\"TSIndexedAccessType\", node, opts);\n}\nfunction assertTSMappedType(node, opts) {\n assert(\"TSMappedType\", node, opts);\n}\nfunction assertTSTemplateLiteralType(node, opts) {\n assert(\"TSTemplateLiteralType\", node, opts);\n}\nfunction assertTSLiteralType(node, opts) {\n assert(\"TSLiteralType\", node, opts);\n}\nfunction assertTSExpressionWithTypeArguments(node, opts) {\n assert(\"TSExpressionWithTypeArguments\", node, opts);\n}\nfunction assertTSInterfaceDeclaration(node, opts) {\n assert(\"TSInterfaceDeclaration\", node, opts);\n}\nfunction assertTSInterfaceBody(node, opts) {\n assert(\"TSInterfaceBody\", node, opts);\n}\nfunction assertTSTypeAliasDeclaration(node, opts) {\n assert(\"TSTypeAliasDeclaration\", node, opts);\n}\nfunction assertTSInstantiationExpression(node, opts) {\n assert(\"TSInstantiationExpression\", node, opts);\n}\nfunction assertTSAsExpression(node, opts) {\n assert(\"TSAsExpression\", node, opts);\n}\nfunction assertTSSatisfiesExpression(node, opts) {\n assert(\"TSSatisfiesExpression\", node, opts);\n}\nfunction assertTSTypeAssertion(node, opts) {\n assert(\"TSTypeAssertion\", node, opts);\n}\nfunction assertTSEnumBody(node, opts) {\n assert(\"TSEnumBody\", node, opts);\n}\nfunction assertTSEnumDeclaration(node, opts) {\n assert(\"TSEnumDeclaration\", node, opts);\n}\nfunction assertTSEnumMember(node, opts) {\n assert(\"TSEnumMember\", node, opts);\n}\nfunction assertTSModuleDeclaration(node, opts) {\n assert(\"TSModuleDeclaration\", node, opts);\n}\nfunction assertTSModuleBlock(node, opts) {\n assert(\"TSModuleBlock\", node, opts);\n}\nfunction assertTSImportType(node, opts) {\n assert(\"TSImportType\", node, opts);\n}\nfunction assertTSImportEqualsDeclaration(node, opts) {\n assert(\"TSImportEqualsDeclaration\", node, opts);\n}\nfunction assertTSExternalModuleReference(node, opts) {\n assert(\"TSExternalModuleReference\", node, opts);\n}\nfunction assertTSNonNullExpression(node, opts) {\n assert(\"TSNonNullExpression\", node, opts);\n}\nfunction assertTSExportAssignment(node, opts) {\n assert(\"TSExportAssignment\", node, opts);\n}\nfunction assertTSNamespaceExportDeclaration(node, opts) {\n assert(\"TSNamespaceExportDeclaration\", node, opts);\n}\nfunction assertTSTypeAnnotation(node, opts) {\n assert(\"TSTypeAnnotation\", node, opts);\n}\nfunction assertTSTypeParameterInstantiation(node, opts) {\n assert(\"TSTypeParameterInstantiation\", node, opts);\n}\nfunction assertTSTypeParameterDeclaration(node, opts) {\n assert(\"TSTypeParameterDeclaration\", node, opts);\n}\nfunction assertTSTypeParameter(node, opts) {\n assert(\"TSTypeParameter\", node, opts);\n}\nfunction assertStandardized(node, opts) {\n assert(\"Standardized\", node, opts);\n}\nfunction assertExpression(node, opts) {\n assert(\"Expression\", node, opts);\n}\nfunction assertBinary(node, opts) {\n assert(\"Binary\", node, opts);\n}\nfunction assertScopable(node, opts) {\n assert(\"Scopable\", node, opts);\n}\nfunction assertBlockParent(node, opts) {\n assert(\"BlockParent\", node, opts);\n}\nfunction assertBlock(node, opts) {\n assert(\"Block\", node, opts);\n}\nfunction assertStatement(node, opts) {\n assert(\"Statement\", node, opts);\n}\nfunction assertTerminatorless(node, opts) {\n assert(\"Terminatorless\", node, opts);\n}\nfunction assertCompletionStatement(node, opts) {\n assert(\"CompletionStatement\", node, opts);\n}\nfunction assertConditional(node, opts) {\n assert(\"Conditional\", node, opts);\n}\nfunction assertLoop(node, opts) {\n assert(\"Loop\", node, opts);\n}\nfunction assertWhile(node, opts) {\n assert(\"While\", node, opts);\n}\nfunction assertExpressionWrapper(node, opts) {\n assert(\"ExpressionWrapper\", node, opts);\n}\nfunction assertFor(node, opts) {\n assert(\"For\", node, opts);\n}\nfunction assertForXStatement(node, opts) {\n assert(\"ForXStatement\", node, opts);\n}\nfunction assertFunction(node, opts) {\n assert(\"Function\", node, opts);\n}\nfunction assertFunctionParent(node, opts) {\n assert(\"FunctionParent\", node, opts);\n}\nfunction assertPureish(node, opts) {\n assert(\"Pureish\", node, opts);\n}\nfunction assertDeclaration(node, opts) {\n assert(\"Declaration\", node, opts);\n}\nfunction assertFunctionParameter(node, opts) {\n assert(\"FunctionParameter\", node, opts);\n}\nfunction assertPatternLike(node, opts) {\n assert(\"PatternLike\", node, opts);\n}\nfunction assertLVal(node, opts) {\n assert(\"LVal\", node, opts);\n}\nfunction assertTSEntityName(node, opts) {\n assert(\"TSEntityName\", node, opts);\n}\nfunction assertLiteral(node, opts) {\n assert(\"Literal\", node, opts);\n}\nfunction assertImmutable(node, opts) {\n assert(\"Immutable\", node, opts);\n}\nfunction assertUserWhitespacable(node, opts) {\n assert(\"UserWhitespacable\", node, opts);\n}\nfunction assertMethod(node, opts) {\n assert(\"Method\", node, opts);\n}\nfunction assertObjectMember(node, opts) {\n assert(\"ObjectMember\", node, opts);\n}\nfunction assertProperty(node, opts) {\n assert(\"Property\", node, opts);\n}\nfunction assertUnaryLike(node, opts) {\n assert(\"UnaryLike\", node, opts);\n}\nfunction assertPattern(node, opts) {\n assert(\"Pattern\", node, opts);\n}\nfunction assertClass(node, opts) {\n assert(\"Class\", node, opts);\n}\nfunction assertImportOrExportDeclaration(node, opts) {\n assert(\"ImportOrExportDeclaration\", node, opts);\n}\nfunction assertExportDeclaration(node, opts) {\n assert(\"ExportDeclaration\", node, opts);\n}\nfunction assertModuleSpecifier(node, opts) {\n assert(\"ModuleSpecifier\", node, opts);\n}\nfunction assertAccessor(node, opts) {\n assert(\"Accessor\", node, opts);\n}\nfunction assertPrivate(node, opts) {\n assert(\"Private\", node, opts);\n}\nfunction assertFlow(node, opts) {\n assert(\"Flow\", node, opts);\n}\nfunction assertFlowType(node, opts) {\n assert(\"FlowType\", node, opts);\n}\nfunction assertFlowBaseAnnotation(node, opts) {\n assert(\"FlowBaseAnnotation\", node, opts);\n}\nfunction assertFlowDeclaration(node, opts) {\n assert(\"FlowDeclaration\", node, opts);\n}\nfunction assertFlowPredicate(node, opts) {\n assert(\"FlowPredicate\", node, opts);\n}\nfunction assertEnumBody(node, opts) {\n assert(\"EnumBody\", node, opts);\n}\nfunction assertEnumMember(node, opts) {\n assert(\"EnumMember\", node, opts);\n}\nfunction assertJSX(node, opts) {\n assert(\"JSX\", node, opts);\n}\nfunction assertMiscellaneous(node, opts) {\n assert(\"Miscellaneous\", node, opts);\n}\nfunction assertTypeScript(node, opts) {\n assert(\"TypeScript\", node, opts);\n}\nfunction assertTSTypeElement(node, opts) {\n assert(\"TSTypeElement\", node, opts);\n}\nfunction assertTSType(node, opts) {\n assert(\"TSType\", node, opts);\n}\nfunction assertTSBaseType(node, opts) {\n assert(\"TSBaseType\", node, opts);\n}\nfunction assertNumberLiteral(node, opts) {\n (0, _deprecationWarning.default)(\"assertNumberLiteral\", \"assertNumericLiteral\");\n assert(\"NumberLiteral\", node, opts);\n}\nfunction assertRegexLiteral(node, opts) {\n (0, _deprecationWarning.default)(\"assertRegexLiteral\", \"assertRegExpLiteral\");\n assert(\"RegexLiteral\", node, opts);\n}\nfunction assertRestProperty(node, opts) {\n (0, _deprecationWarning.default)(\"assertRestProperty\", \"assertRestElement\");\n assert(\"RestProperty\", node, opts);\n}\nfunction assertSpreadProperty(node, opts) {\n (0, _deprecationWarning.default)(\"assertSpreadProperty\", \"assertSpreadElement\");\n assert(\"SpreadProperty\", node, opts);\n}\nfunction assertModuleDeclaration(node, opts) {\n (0, _deprecationWarning.default)(\"assertModuleDeclaration\", \"assertImportOrExportDeclaration\");\n assert(\"ModuleDeclaration\", node, opts);\n}\n\n//# sourceMappingURL=index.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = require(\"../generated/index.js\");\nvar _default = exports.default = createTypeAnnotationBasedOnTypeof;\nfunction createTypeAnnotationBasedOnTypeof(type) {\n switch (type) {\n case \"string\":\n return (0, _index.stringTypeAnnotation)();\n case \"number\":\n return (0, _index.numberTypeAnnotation)();\n case \"undefined\":\n return (0, _index.voidTypeAnnotation)();\n case \"boolean\":\n return (0, _index.booleanTypeAnnotation)();\n case \"function\":\n return (0, _index.genericTypeAnnotation)((0, _index.identifier)(\"Function\"));\n case \"object\":\n return (0, _index.genericTypeAnnotation)((0, _index.identifier)(\"Object\"));\n case \"symbol\":\n return (0, _index.genericTypeAnnotation)((0, _index.identifier)(\"Symbol\"));\n case \"bigint\":\n return (0, _index.anyTypeAnnotation)();\n }\n throw new Error(\"Invalid typeof value: \" + type);\n}\n\n//# sourceMappingURL=createTypeAnnotationBasedOnTypeof.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createFlowUnionType;\nvar _index = require(\"../generated/index.js\");\nvar _removeTypeDuplicates = require(\"../../modifications/flow/removeTypeDuplicates.js\");\nfunction createFlowUnionType(types) {\n const flattened = (0, _removeTypeDuplicates.default)(types);\n if (flattened.length === 1) {\n return flattened[0];\n } else {\n return (0, _index.unionTypeAnnotation)(flattened);\n }\n}\n\n//# sourceMappingURL=createFlowUnionType.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = removeTypeDuplicates;\nvar _index = require(\"../../validators/generated/index.js\");\nfunction getQualifiedName(node) {\n return (0, _index.isIdentifier)(node) ? node.name : `${node.id.name}.${getQualifiedName(node.qualification)}`;\n}\nfunction removeTypeDuplicates(nodesIn) {\n const nodes = Array.from(nodesIn);\n const generics = new Map();\n const bases = new Map();\n const typeGroups = new Set();\n const types = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n if (types.includes(node)) {\n continue;\n }\n if ((0, _index.isAnyTypeAnnotation)(node)) {\n return [node];\n }\n if ((0, _index.isFlowBaseAnnotation)(node)) {\n bases.set(node.type, node);\n continue;\n }\n if ((0, _index.isUnionTypeAnnotation)(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n if ((0, _index.isGenericTypeAnnotation)(node)) {\n const name = getQualifiedName(node.id);\n if (generics.has(name)) {\n let existing = generics.get(name);\n if (existing.typeParameters) {\n if (node.typeParameters) {\n existing.typeParameters.params.push(...node.typeParameters.params);\n existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params);\n }\n } else {\n existing = node.typeParameters;\n }\n } else {\n generics.set(name, node);\n }\n continue;\n }\n types.push(node);\n }\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n return types;\n}\n\n//# sourceMappingURL=removeTypeDuplicates.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createTSUnionType;\nvar _index = require(\"../generated/index.js\");\nvar _removeTypeDuplicates = require(\"../../modifications/typescript/removeTypeDuplicates.js\");\nvar _index2 = require(\"../../validators/generated/index.js\");\nfunction createTSUnionType(typeAnnotations) {\n const types = typeAnnotations.map(type => {\n return (0, _index2.isTSTypeAnnotation)(type) ? type.typeAnnotation : type;\n });\n const flattened = (0, _removeTypeDuplicates.default)(types);\n if (flattened.length === 1) {\n return flattened[0];\n } else {\n return (0, _index.tsUnionType)(flattened);\n }\n}\n\n//# sourceMappingURL=createTSUnionType.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = removeTypeDuplicates;\nvar _index = require(\"../../validators/generated/index.js\");\nfunction getQualifiedName(node) {\n return (0, _index.isIdentifier)(node) ? node.name : (0, _index.isThisExpression)(node) ? \"this\" : `${node.right.name}.${getQualifiedName(node.left)}`;\n}\nfunction removeTypeDuplicates(nodesIn) {\n const nodes = Array.from(nodesIn);\n const generics = new Map();\n const bases = new Map();\n const typeGroups = new Set();\n const types = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if (!node) continue;\n if (types.includes(node)) {\n continue;\n }\n if ((0, _index.isTSAnyKeyword)(node)) {\n return [node];\n }\n if ((0, _index.isTSBaseType)(node)) {\n bases.set(node.type, node);\n continue;\n }\n if ((0, _index.isTSUnionType)(node)) {\n if (!typeGroups.has(node.types)) {\n nodes.push(...node.types);\n typeGroups.add(node.types);\n }\n continue;\n }\n const typeArgumentsKey = \"typeParameters\";\n if ((0, _index.isTSTypeReference)(node) && node[typeArgumentsKey]) {\n const typeArguments = node[typeArgumentsKey];\n const name = getQualifiedName(node.typeName);\n if (generics.has(name)) {\n let existing = generics.get(name);\n const existingTypeArguments = existing[typeArgumentsKey];\n if (existingTypeArguments) {\n existingTypeArguments.params.push(...typeArguments.params);\n existingTypeArguments.params = removeTypeDuplicates(existingTypeArguments.params);\n } else {\n existing = typeArguments;\n }\n } else {\n generics.set(name, node);\n }\n continue;\n }\n types.push(node);\n }\n for (const [, baseType] of bases) {\n types.push(baseType);\n }\n for (const [, genericName] of generics) {\n types.push(genericName);\n }\n return types;\n}\n\n//# sourceMappingURL=removeTypeDuplicates.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.buildUndefinedNode = buildUndefinedNode;\nvar _index = require(\"./generated/index.js\");\nfunction buildUndefinedNode() {\n return (0, _index.unaryExpression)(\"void\", (0, _index.numericLiteral)(0), true);\n}\n\n//# sourceMappingURL=productions.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cloneNode;\nvar _index = require(\"../definitions/index.js\");\nvar _index2 = require(\"../validators/generated/index.js\");\nconst {\n hasOwn\n} = {\n hasOwn: Function.call.bind(Object.prototype.hasOwnProperty)\n};\nfunction cloneIfNode(obj, deep, withoutLoc, commentsCache) {\n if (obj && typeof obj.type === \"string\") {\n return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);\n }\n return obj;\n}\nfunction cloneIfNodeOrArray(obj, deep, withoutLoc, commentsCache) {\n if (Array.isArray(obj)) {\n return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache));\n }\n return cloneIfNode(obj, deep, withoutLoc, commentsCache);\n}\nfunction cloneNode(node, deep = true, withoutLoc = false) {\n return cloneNodeInternal(node, deep, withoutLoc, new Map());\n}\nfunction cloneNodeInternal(node, deep = true, withoutLoc = false, commentsCache) {\n if (!node) return node;\n const {\n type\n } = node;\n const newNode = {\n type: node.type\n };\n if ((0, _index2.isIdentifier)(node)) {\n newNode.name = node.name;\n if (hasOwn(node, \"optional\") && typeof node.optional === \"boolean\") {\n newNode.optional = node.optional;\n }\n if (hasOwn(node, \"typeAnnotation\")) {\n newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc, commentsCache) : node.typeAnnotation;\n }\n if (hasOwn(node, \"decorators\")) {\n newNode.decorators = deep ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache) : node.decorators;\n }\n } else if (!hasOwn(_index.NODE_FIELDS, type)) {\n throw new Error(`Unknown node type: \"${type}\"`);\n } else {\n for (const field of Object.keys(_index.NODE_FIELDS[type])) {\n if (hasOwn(node, field)) {\n if (deep) {\n newNode[field] = (0, _index2.isFile)(node) && field === \"comments\" ? maybeCloneComments(node.comments, deep, withoutLoc, commentsCache) : cloneIfNodeOrArray(node[field], true, withoutLoc, commentsCache);\n } else {\n newNode[field] = node[field];\n }\n }\n }\n }\n if (hasOwn(node, \"loc\")) {\n if (withoutLoc) {\n newNode.loc = null;\n } else {\n newNode.loc = node.loc;\n }\n }\n if (hasOwn(node, \"leadingComments\")) {\n newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc, commentsCache);\n }\n if (hasOwn(node, \"innerComments\")) {\n newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc, commentsCache);\n }\n if (hasOwn(node, \"trailingComments\")) {\n newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc, commentsCache);\n }\n if (hasOwn(node, \"extra\")) {\n newNode.extra = Object.assign({}, node.extra);\n }\n return newNode;\n}\nfunction maybeCloneComments(comments, deep, withoutLoc, commentsCache) {\n if (!comments || !deep) {\n return comments;\n }\n return comments.map(comment => {\n const cache = commentsCache.get(comment);\n if (cache) return cache;\n const {\n type,\n value,\n loc\n } = comment;\n const ret = {\n type,\n value,\n loc\n };\n if (withoutLoc) {\n ret.loc = null;\n }\n commentsCache.set(comment, ret);\n return ret;\n });\n}\n\n//# sourceMappingURL=cloneNode.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = clone;\nvar _cloneNode = require(\"./cloneNode.js\");\nfunction clone(node) {\n return (0, _cloneNode.default)(node, false);\n}\n\n//# sourceMappingURL=clone.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cloneDeep;\nvar _cloneNode = require(\"./cloneNode.js\");\nfunction cloneDeep(node) {\n return (0, _cloneNode.default)(node);\n}\n\n//# sourceMappingURL=cloneDeep.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cloneDeepWithoutLoc;\nvar _cloneNode = require(\"./cloneNode.js\");\nfunction cloneDeepWithoutLoc(node) {\n return (0, _cloneNode.default)(node, true, true);\n}\n\n//# sourceMappingURL=cloneDeepWithoutLoc.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cloneWithoutLoc;\nvar _cloneNode = require(\"./cloneNode.js\");\nfunction cloneWithoutLoc(node) {\n return (0, _cloneNode.default)(node, false, true);\n}\n\n//# sourceMappingURL=cloneWithoutLoc.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addComment;\nvar _addComments = require(\"./addComments.js\");\nfunction addComment(node, type, content, line) {\n return (0, _addComments.default)(node, type, [{\n type: line ? \"CommentLine\" : \"CommentBlock\",\n value: content\n }]);\n}\n\n//# sourceMappingURL=addComment.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addComments;\nfunction addComments(node, type, comments) {\n if (!comments || !node) return node;\n const key = `${type}Comments`;\n if (node[key]) {\n if (type === \"leading\") {\n node[key] = comments.concat(node[key]);\n } else {\n node[key].push(...comments);\n }\n } else {\n node[key] = comments;\n }\n return node;\n}\n\n//# sourceMappingURL=addComments.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inheritInnerComments;\nvar _inherit = require(\"../utils/inherit.js\");\nfunction inheritInnerComments(child, parent) {\n (0, _inherit.default)(\"innerComments\", child, parent);\n}\n\n//# sourceMappingURL=inheritInnerComments.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inherit;\nfunction inherit(key, child, parent) {\n if (child && parent) {\n child[key] = Array.from(new Set([].concat(child[key], parent[key]).filter(Boolean)));\n }\n}\n\n//# sourceMappingURL=inherit.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inheritLeadingComments;\nvar _inherit = require(\"../utils/inherit.js\");\nfunction inheritLeadingComments(child, parent) {\n (0, _inherit.default)(\"leadingComments\", child, parent);\n}\n\n//# sourceMappingURL=inheritLeadingComments.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inheritsComments;\nvar _inheritTrailingComments = require(\"./inheritTrailingComments.js\");\nvar _inheritLeadingComments = require(\"./inheritLeadingComments.js\");\nvar _inheritInnerComments = require(\"./inheritInnerComments.js\");\nfunction inheritsComments(child, parent) {\n (0, _inheritTrailingComments.default)(child, parent);\n (0, _inheritLeadingComments.default)(child, parent);\n (0, _inheritInnerComments.default)(child, parent);\n return child;\n}\n\n//# sourceMappingURL=inheritsComments.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inheritTrailingComments;\nvar _inherit = require(\"../utils/inherit.js\");\nfunction inheritTrailingComments(child, parent) {\n (0, _inherit.default)(\"trailingComments\", child, parent);\n}\n\n//# sourceMappingURL=inheritTrailingComments.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = removeComments;\nvar _index = require(\"../constants/index.js\");\nfunction removeComments(node) {\n _index.COMMENT_KEYS.forEach(key => {\n node[key] = null;\n });\n return node;\n}\n\n//# sourceMappingURL=removeComments.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WHILE_TYPES = exports.USERWHITESPACABLE_TYPES = exports.UNARYLIKE_TYPES = exports.TYPESCRIPT_TYPES = exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.TSENTITYNAME_TYPES = exports.TSBASETYPE_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.STANDARDIZED_TYPES = exports.SCOPABLE_TYPES = exports.PUREISH_TYPES = exports.PROPERTY_TYPES = exports.PRIVATE_TYPES = exports.PATTERN_TYPES = exports.PATTERNLIKE_TYPES = exports.OBJECTMEMBER_TYPES = exports.MODULESPECIFIER_TYPES = exports.MODULEDECLARATION_TYPES = exports.MISCELLANEOUS_TYPES = exports.METHOD_TYPES = exports.LVAL_TYPES = exports.LOOP_TYPES = exports.LITERAL_TYPES = exports.JSX_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = exports.IMMUTABLE_TYPES = exports.FUNCTION_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FUNCTIONPARAMETER_TYPES = exports.FOR_TYPES = exports.FORXSTATEMENT_TYPES = exports.FLOW_TYPES = exports.FLOWTYPE_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.EXPRESSION_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.ENUMMEMBER_TYPES = exports.ENUMBODY_TYPES = exports.DECLARATION_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.CLASS_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.BINARY_TYPES = exports.ACCESSOR_TYPES = void 0;\nvar _index = require(\"../../definitions/index.js\");\nconst STANDARDIZED_TYPES = exports.STANDARDIZED_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Standardized\"];\nconst EXPRESSION_TYPES = exports.EXPRESSION_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Expression\"];\nconst BINARY_TYPES = exports.BINARY_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Binary\"];\nconst SCOPABLE_TYPES = exports.SCOPABLE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Scopable\"];\nconst BLOCKPARENT_TYPES = exports.BLOCKPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS[\"BlockParent\"];\nconst BLOCK_TYPES = exports.BLOCK_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Block\"];\nconst STATEMENT_TYPES = exports.STATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Statement\"];\nconst TERMINATORLESS_TYPES = exports.TERMINATORLESS_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Terminatorless\"];\nconst COMPLETIONSTATEMENT_TYPES = exports.COMPLETIONSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS[\"CompletionStatement\"];\nconst CONDITIONAL_TYPES = exports.CONDITIONAL_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Conditional\"];\nconst LOOP_TYPES = exports.LOOP_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Loop\"];\nconst WHILE_TYPES = exports.WHILE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"While\"];\nconst EXPRESSIONWRAPPER_TYPES = exports.EXPRESSIONWRAPPER_TYPES = _index.FLIPPED_ALIAS_KEYS[\"ExpressionWrapper\"];\nconst FOR_TYPES = exports.FOR_TYPES = _index.FLIPPED_ALIAS_KEYS[\"For\"];\nconst FORXSTATEMENT_TYPES = exports.FORXSTATEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS[\"ForXStatement\"];\nconst FUNCTION_TYPES = exports.FUNCTION_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Function\"];\nconst FUNCTIONPARENT_TYPES = exports.FUNCTIONPARENT_TYPES = _index.FLIPPED_ALIAS_KEYS[\"FunctionParent\"];\nconst PUREISH_TYPES = exports.PUREISH_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Pureish\"];\nconst DECLARATION_TYPES = exports.DECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Declaration\"];\nconst FUNCTIONPARAMETER_TYPES = exports.FUNCTIONPARAMETER_TYPES = _index.FLIPPED_ALIAS_KEYS[\"FunctionParameter\"];\nconst PATTERNLIKE_TYPES = exports.PATTERNLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"PatternLike\"];\nconst LVAL_TYPES = exports.LVAL_TYPES = _index.FLIPPED_ALIAS_KEYS[\"LVal\"];\nconst TSENTITYNAME_TYPES = exports.TSENTITYNAME_TYPES = _index.FLIPPED_ALIAS_KEYS[\"TSEntityName\"];\nconst LITERAL_TYPES = exports.LITERAL_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Literal\"];\nconst IMMUTABLE_TYPES = exports.IMMUTABLE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Immutable\"];\nconst USERWHITESPACABLE_TYPES = exports.USERWHITESPACABLE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"UserWhitespacable\"];\nconst METHOD_TYPES = exports.METHOD_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Method\"];\nconst OBJECTMEMBER_TYPES = exports.OBJECTMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS[\"ObjectMember\"];\nconst PROPERTY_TYPES = exports.PROPERTY_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Property\"];\nconst UNARYLIKE_TYPES = exports.UNARYLIKE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"UnaryLike\"];\nconst PATTERN_TYPES = exports.PATTERN_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Pattern\"];\nconst CLASS_TYPES = exports.CLASS_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Class\"];\nconst IMPORTOREXPORTDECLARATION_TYPES = exports.IMPORTOREXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS[\"ImportOrExportDeclaration\"];\nconst EXPORTDECLARATION_TYPES = exports.EXPORTDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS[\"ExportDeclaration\"];\nconst MODULESPECIFIER_TYPES = exports.MODULESPECIFIER_TYPES = _index.FLIPPED_ALIAS_KEYS[\"ModuleSpecifier\"];\nconst ACCESSOR_TYPES = exports.ACCESSOR_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Accessor\"];\nconst PRIVATE_TYPES = exports.PRIVATE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Private\"];\nconst FLOW_TYPES = exports.FLOW_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Flow\"];\nconst FLOWTYPE_TYPES = exports.FLOWTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"FlowType\"];\nconst FLOWBASEANNOTATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = _index.FLIPPED_ALIAS_KEYS[\"FlowBaseAnnotation\"];\nconst FLOWDECLARATION_TYPES = exports.FLOWDECLARATION_TYPES = _index.FLIPPED_ALIAS_KEYS[\"FlowDeclaration\"];\nconst FLOWPREDICATE_TYPES = exports.FLOWPREDICATE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"FlowPredicate\"];\nconst ENUMBODY_TYPES = exports.ENUMBODY_TYPES = _index.FLIPPED_ALIAS_KEYS[\"EnumBody\"];\nconst ENUMMEMBER_TYPES = exports.ENUMMEMBER_TYPES = _index.FLIPPED_ALIAS_KEYS[\"EnumMember\"];\nconst JSX_TYPES = exports.JSX_TYPES = _index.FLIPPED_ALIAS_KEYS[\"JSX\"];\nconst MISCELLANEOUS_TYPES = exports.MISCELLANEOUS_TYPES = _index.FLIPPED_ALIAS_KEYS[\"Miscellaneous\"];\nconst TYPESCRIPT_TYPES = exports.TYPESCRIPT_TYPES = _index.FLIPPED_ALIAS_KEYS[\"TypeScript\"];\nconst TSTYPEELEMENT_TYPES = exports.TSTYPEELEMENT_TYPES = _index.FLIPPED_ALIAS_KEYS[\"TSTypeElement\"];\nconst TSTYPE_TYPES = exports.TSTYPE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"TSType\"];\nconst TSBASETYPE_TYPES = exports.TSBASETYPE_TYPES = _index.FLIPPED_ALIAS_KEYS[\"TSBaseType\"];\nconst MODULEDECLARATION_TYPES = exports.MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;\n\n//# sourceMappingURL=index.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ensureBlock;\nvar _toBlock = require(\"./toBlock.js\");\nfunction ensureBlock(node, key = \"body\") {\n const result = (0, _toBlock.default)(node[key], node);\n node[key] = result;\n return result;\n}\n\n//# sourceMappingURL=ensureBlock.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toBlock;\nvar _index = require(\"../validators/generated/index.js\");\nvar _index2 = require(\"../builders/generated/index.js\");\nfunction toBlock(node, parent) {\n if ((0, _index.isBlockStatement)(node)) {\n return node;\n }\n let blockNodes = [];\n if ((0, _index.isEmptyStatement)(node)) {\n blockNodes = [];\n } else {\n if (!(0, _index.isStatement)(node)) {\n if ((0, _index.isFunction)(parent)) {\n node = (0, _index2.returnStatement)(node);\n } else {\n node = (0, _index2.expressionStatement)(node);\n }\n }\n blockNodes = [node];\n }\n return (0, _index2.blockStatement)(blockNodes);\n}\n\n//# sourceMappingURL=toBlock.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toBindingIdentifierName;\nvar _toIdentifier = require(\"./toIdentifier.js\");\nfunction toBindingIdentifierName(name) {\n name = (0, _toIdentifier.default)(name);\n if (name === \"eval\" || name === \"arguments\") name = \"_\" + name;\n return name;\n}\n\n//# sourceMappingURL=toBindingIdentifierName.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toIdentifier;\nvar _isValidIdentifier = require(\"../validators/isValidIdentifier.js\");\nvar _helperValidatorIdentifier = require(\"@babel/helper-validator-identifier\");\nfunction toIdentifier(input) {\n input = input + \"\";\n let name = \"\";\n for (const c of input) {\n name += (0, _helperValidatorIdentifier.isIdentifierChar)(c.codePointAt(0)) ? c : \"-\";\n }\n name = name.replace(/^[-0-9]+/, \"\");\n name = name.replace(/[-\\s]+(.)?/g, function (match, c) {\n return c ? c.toUpperCase() : \"\";\n });\n if (!(0, _isValidIdentifier.default)(name)) {\n name = `_${name}`;\n }\n return name || \"_\";\n}\n\n//# sourceMappingURL=toIdentifier.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toComputedKey;\nvar _index = require(\"../validators/generated/index.js\");\nvar _index2 = require(\"../builders/generated/index.js\");\nfunction toComputedKey(node, key = node.key || node.property) {\n if (!node.computed && (0, _index.isIdentifier)(key)) key = (0, _index2.stringLiteral)(key.name);\n return key;\n}\n\n//# sourceMappingURL=toComputedKey.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = require(\"../validators/generated/index.js\");\nvar _default = exports.default = toExpression;\nfunction toExpression(node) {\n if ((0, _index.isExpressionStatement)(node)) {\n node = node.expression;\n }\n if ((0, _index.isExpression)(node)) {\n return node;\n }\n if ((0, _index.isClass)(node)) {\n node.type = \"ClassExpression\";\n node.abstract = false;\n } else if ((0, _index.isFunction)(node)) {\n node.type = \"FunctionExpression\";\n }\n if (!(0, _index.isExpression)(node)) {\n throw new Error(`cannot turn ${node.type} to an expression`);\n }\n return node;\n}\n\n//# sourceMappingURL=toExpression.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toKeyAlias;\nvar _index = require(\"../validators/generated/index.js\");\nvar _cloneNode = require(\"../clone/cloneNode.js\");\nvar _removePropertiesDeep = require(\"../modifications/removePropertiesDeep.js\");\nfunction toKeyAlias(node, key = node.key) {\n let alias;\n if (node.kind === \"method\") {\n return toKeyAlias.increment() + \"\";\n } else if ((0, _index.isIdentifier)(key)) {\n alias = key.name;\n } else if ((0, _index.isStringLiteral)(key)) {\n alias = JSON.stringify(key.value);\n } else {\n alias = JSON.stringify((0, _removePropertiesDeep.default)((0, _cloneNode.default)(key)));\n }\n if (node.computed) {\n alias = `[${alias}]`;\n }\n if (node.static) {\n alias = `static:${alias}`;\n }\n return alias;\n}\ntoKeyAlias.uid = 0;\ntoKeyAlias.increment = function () {\n if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {\n return toKeyAlias.uid = 0;\n } else {\n return toKeyAlias.uid++;\n }\n};\n\n//# sourceMappingURL=toKeyAlias.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = removePropertiesDeep;\nvar _traverseFast = require(\"../traverse/traverseFast.js\");\nvar _removeProperties = require(\"./removeProperties.js\");\nfunction removePropertiesDeep(tree, opts) {\n (0, _traverseFast.default)(tree, _removeProperties.default, opts);\n return tree;\n}\n\n//# sourceMappingURL=removePropertiesDeep.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = traverseFast;\nvar _index = require(\"../definitions/index.js\");\nconst _skip = Symbol();\nconst _stop = Symbol();\nfunction traverseFast(node, enter, opts) {\n if (!node) return false;\n const keys = _index.VISITOR_KEYS[node.type];\n if (!keys) return false;\n opts = opts || {};\n const ret = enter(node, opts);\n if (ret !== undefined) {\n switch (ret) {\n case _skip:\n return false;\n case _stop:\n return true;\n }\n }\n for (const key of keys) {\n const subNode = node[key];\n if (!subNode) continue;\n if (Array.isArray(subNode)) {\n for (const node of subNode) {\n if (traverseFast(node, enter, opts)) return true;\n }\n } else {\n if (traverseFast(subNode, enter, opts)) return true;\n }\n }\n return false;\n}\ntraverseFast.skip = _skip;\ntraverseFast.stop = _stop;\n\n//# sourceMappingURL=traverseFast.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = removeProperties;\nvar _index = require(\"../constants/index.js\");\nconst CLEAR_KEYS = [\"tokens\", \"start\", \"end\", \"loc\", \"raw\", \"rawValue\"];\nconst CLEAR_KEYS_PLUS_COMMENTS = [..._index.COMMENT_KEYS, \"comments\", ...CLEAR_KEYS];\nfunction removeProperties(node, opts = {}) {\n const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;\n for (const key of map) {\n if (node[key] != null) node[key] = undefined;\n }\n for (const key of Object.keys(node)) {\n if (key.startsWith(\"_\") && node[key] != null) node[key] = undefined;\n }\n const symbols = Object.getOwnPropertySymbols(node);\n for (const sym of symbols) {\n node[sym] = null;\n }\n}\n\n//# sourceMappingURL=removeProperties.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = require(\"../validators/generated/index.js\");\nvar _index2 = require(\"../builders/generated/index.js\");\nvar _default = exports.default = toStatement;\nfunction toStatement(node, ignore) {\n if ((0, _index.isStatement)(node)) {\n return node;\n }\n let mustHaveId = false;\n let newType;\n if ((0, _index.isClass)(node)) {\n mustHaveId = true;\n newType = \"ClassDeclaration\";\n } else if ((0, _index.isFunction)(node)) {\n mustHaveId = true;\n newType = \"FunctionDeclaration\";\n } else if ((0, _index.isAssignmentExpression)(node)) {\n return (0, _index2.expressionStatement)(node);\n }\n if (mustHaveId && !node.id) {\n newType = false;\n }\n if (!newType) {\n if (ignore) {\n return false;\n } else {\n throw new Error(`cannot turn ${node.type} to a statement`);\n }\n }\n node.type = newType;\n return node;\n}\n\n//# sourceMappingURL=toStatement.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _isValidIdentifier = require(\"../validators/isValidIdentifier.js\");\nvar _index = require(\"../builders/generated/index.js\");\nvar _default = exports.default = valueToNode;\nconst objectToString = Function.call.bind(Object.prototype.toString);\nfunction isRegExp(value) {\n return objectToString(value) === \"[object RegExp]\";\n}\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null || Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === null || Object.getPrototypeOf(proto) === null;\n}\nfunction valueToNode(value) {\n if (value === undefined) {\n return (0, _index.identifier)(\"undefined\");\n }\n if (value === true || value === false) {\n return (0, _index.booleanLiteral)(value);\n }\n if (value === null) {\n return (0, _index.nullLiteral)();\n }\n if (typeof value === \"string\") {\n return (0, _index.stringLiteral)(value);\n }\n if (typeof value === \"number\") {\n let result;\n if (Number.isFinite(value)) {\n result = (0, _index.numericLiteral)(Math.abs(value));\n } else {\n let numerator;\n if (Number.isNaN(value)) {\n numerator = (0, _index.numericLiteral)(0);\n } else {\n numerator = (0, _index.numericLiteral)(1);\n }\n result = (0, _index.binaryExpression)(\"/\", numerator, (0, _index.numericLiteral)(0));\n }\n if (value < 0 || Object.is(value, -0)) {\n result = (0, _index.unaryExpression)(\"-\", result);\n }\n return result;\n }\n if (typeof value === \"bigint\") {\n if (value < 0) {\n return (0, _index.unaryExpression)(\"-\", (0, _index.bigIntLiteral)(-value));\n } else {\n return (0, _index.bigIntLiteral)(value);\n }\n }\n if (isRegExp(value)) {\n const pattern = value.source;\n const flags = /\\/([a-z]*)$/.exec(value.toString())[1];\n return (0, _index.regExpLiteral)(pattern, flags);\n }\n if (Array.isArray(value)) {\n return (0, _index.arrayExpression)(value.map(valueToNode));\n }\n if (isPlainObject(value)) {\n const props = [];\n for (const key of Object.keys(value)) {\n let nodeKey,\n computed = false;\n if ((0, _isValidIdentifier.default)(key)) {\n if (key === \"__proto__\") {\n computed = true;\n nodeKey = (0, _index.stringLiteral)(key);\n } else {\n nodeKey = (0, _index.identifier)(key);\n }\n } else {\n nodeKey = (0, _index.stringLiteral)(key);\n }\n props.push((0, _index.objectProperty)(nodeKey, valueToNode(value[key]), computed));\n }\n return (0, _index.objectExpression)(props);\n }\n throw new Error(\"don't know how to turn this value into a node\");\n}\n\n//# sourceMappingURL=valueToNode.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = appendToMemberExpression;\nvar _index = require(\"../builders/generated/index.js\");\nfunction appendToMemberExpression(member, append, computed = false) {\n member.object = (0, _index.memberExpression)(member.object, member.property, member.computed);\n member.property = append;\n member.computed = !!computed;\n return member;\n}\n\n//# sourceMappingURL=appendToMemberExpression.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = inherits;\nvar _index = require(\"../constants/index.js\");\nvar _inheritsComments = require(\"../comments/inheritsComments.js\");\nfunction inherits(child, parent) {\n if (!child || !parent) return child;\n for (const key of _index.INHERIT_KEYS.optional) {\n if (child[key] == null) {\n child[key] = parent[key];\n }\n }\n for (const key of Object.keys(parent)) {\n if (key.startsWith(\"_\") && key !== \"__clone\") {\n child[key] = parent[key];\n }\n }\n for (const key of _index.INHERIT_KEYS.force) {\n child[key] = parent[key];\n }\n (0, _inheritsComments.default)(child, parent);\n return child;\n}\n\n//# sourceMappingURL=inherits.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prependToMemberExpression;\nvar _index = require(\"../builders/generated/index.js\");\nvar _index2 = require(\"../index.js\");\nfunction prependToMemberExpression(member, prepend) {\n if ((0, _index2.isSuper)(member.object)) {\n throw new Error(\"Cannot prepend node to super property access (`super.foo`).\");\n }\n member.object = (0, _index.memberExpression)(prepend, member.object);\n return member;\n}\n\n//# sourceMappingURL=prependToMemberExpression.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getAssignmentIdentifiers;\nfunction getAssignmentIdentifiers(node) {\n const search = [].concat(node);\n const ids = Object.create(null);\n while (search.length) {\n const id = search.pop();\n if (!id) continue;\n switch (id.type) {\n case \"ArrayPattern\":\n search.push(...id.elements);\n break;\n case \"AssignmentExpression\":\n case \"AssignmentPattern\":\n case \"ForInStatement\":\n case \"ForOfStatement\":\n search.push(id.left);\n break;\n case \"ObjectPattern\":\n search.push(...id.properties);\n break;\n case \"ObjectProperty\":\n search.push(id.value);\n break;\n case \"RestElement\":\n case \"UpdateExpression\":\n search.push(id.argument);\n break;\n case \"UnaryExpression\":\n if (id.operator === \"delete\") {\n search.push(id.argument);\n }\n break;\n case \"Identifier\":\n ids[id.name] = id;\n break;\n default:\n break;\n }\n }\n return ids;\n}\n\n//# sourceMappingURL=getAssignmentIdentifiers.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getBindingIdentifiers;\nvar _index = require(\"../validators/generated/index.js\");\nfunction getBindingIdentifiers(node, duplicates, outerOnly, newBindingsOnly) {\n const search = [].concat(node);\n const ids = Object.create(null);\n while (search.length) {\n const id = search.shift();\n if (!id) continue;\n if (newBindingsOnly && ((0, _index.isAssignmentExpression)(id) || (0, _index.isUnaryExpression)(id) || (0, _index.isUpdateExpression)(id))) {\n continue;\n }\n if ((0, _index.isIdentifier)(id)) {\n if (duplicates) {\n const _ids = ids[id.name] = ids[id.name] || [];\n _ids.push(id);\n } else {\n ids[id.name] = id;\n }\n continue;\n }\n if ((0, _index.isExportDeclaration)(id) && !(0, _index.isExportAllDeclaration)(id)) {\n if ((0, _index.isDeclaration)(id.declaration)) {\n search.push(id.declaration);\n }\n continue;\n }\n if (outerOnly) {\n if ((0, _index.isFunctionDeclaration)(id)) {\n search.push(id.id);\n continue;\n }\n if ((0, _index.isFunctionExpression)(id)) {\n continue;\n }\n }\n const keys = getBindingIdentifiers.keys[id.type];\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const nodes = id[key];\n if (nodes) {\n if (Array.isArray(nodes)) {\n search.push(...nodes);\n } else {\n search.push(nodes);\n }\n }\n }\n }\n }\n return ids;\n}\nconst keys = {\n DeclareClass: [\"id\"],\n DeclareFunction: [\"id\"],\n DeclareModule: [\"id\"],\n DeclareVariable: [\"id\"],\n DeclareInterface: [\"id\"],\n DeclareTypeAlias: [\"id\"],\n DeclareOpaqueType: [\"id\"],\n InterfaceDeclaration: [\"id\"],\n TypeAlias: [\"id\"],\n OpaqueType: [\"id\"],\n CatchClause: [\"param\"],\n LabeledStatement: [\"label\"],\n UnaryExpression: [\"argument\"],\n AssignmentExpression: [\"left\"],\n ImportSpecifier: [\"local\"],\n ImportNamespaceSpecifier: [\"local\"],\n ImportDefaultSpecifier: [\"local\"],\n ImportDeclaration: [\"specifiers\"],\n TSImportEqualsDeclaration: [\"id\"],\n ExportSpecifier: [\"exported\"],\n ExportNamespaceSpecifier: [\"exported\"],\n ExportDefaultSpecifier: [\"exported\"],\n FunctionDeclaration: [\"id\", \"params\"],\n FunctionExpression: [\"id\", \"params\"],\n ArrowFunctionExpression: [\"params\"],\n ObjectMethod: [\"params\"],\n ClassMethod: [\"params\"],\n ClassPrivateMethod: [\"params\"],\n ForInStatement: [\"left\"],\n ForOfStatement: [\"left\"],\n ClassDeclaration: [\"id\"],\n ClassExpression: [\"id\"],\n RestElement: [\"argument\"],\n UpdateExpression: [\"argument\"],\n ObjectProperty: [\"value\"],\n AssignmentPattern: [\"left\"],\n ArrayPattern: [\"elements\"],\n ObjectPattern: [\"properties\"],\n VariableDeclaration: [\"declarations\"],\n VariableDeclarator: [\"id\"]\n};\ngetBindingIdentifiers.keys = keys;\n\n//# sourceMappingURL=getBindingIdentifiers.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _getBindingIdentifiers = require(\"./getBindingIdentifiers.js\");\nvar _default = exports.default = getOuterBindingIdentifiers;\nfunction getOuterBindingIdentifiers(node, duplicates) {\n return (0, _getBindingIdentifiers.default)(node, duplicates, true);\n}\n\n//# sourceMappingURL=getOuterBindingIdentifiers.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getFunctionName;\nvar _index = require(\"../validators/generated/index.js\");\nfunction getNameFromLiteralId(id) {\n if ((0, _index.isNullLiteral)(id)) {\n return \"null\";\n }\n if ((0, _index.isRegExpLiteral)(id)) {\n return `/${id.pattern}/${id.flags}`;\n }\n if ((0, _index.isTemplateLiteral)(id)) {\n return id.quasis.map(quasi => quasi.value.raw).join(\"\");\n }\n if (id.value !== undefined) {\n return String(id.value);\n }\n return null;\n}\nfunction getObjectMemberKey(node) {\n if (!node.computed || (0, _index.isLiteral)(node.key)) {\n return node.key;\n }\n}\nfunction getFunctionName(node, parent) {\n if (\"id\" in node && node.id) {\n return {\n name: node.id.name,\n originalNode: node.id\n };\n }\n let prefix = \"\";\n let id;\n if ((0, _index.isObjectProperty)(parent, {\n value: node\n })) {\n id = getObjectMemberKey(parent);\n } else if ((0, _index.isObjectMethod)(node) || (0, _index.isClassMethod)(node)) {\n id = getObjectMemberKey(node);\n if (node.kind === \"get\") prefix = \"get \";else if (node.kind === \"set\") prefix = \"set \";\n } else if ((0, _index.isVariableDeclarator)(parent, {\n init: node\n })) {\n id = parent.id;\n } else if ((0, _index.isAssignmentExpression)(parent, {\n operator: \"=\",\n right: node\n })) {\n id = parent.left;\n }\n if (!id) return null;\n const name = (0, _index.isLiteral)(id) ? getNameFromLiteralId(id) : (0, _index.isIdentifier)(id) ? id.name : (0, _index.isPrivateName)(id) ? id.id.name : null;\n if (name == null) return null;\n return {\n name: prefix + name,\n originalNode: id\n };\n}\n\n//# sourceMappingURL=getFunctionName.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = traverse;\nvar _index = require(\"../definitions/index.js\");\nfunction traverse(node, handlers, state) {\n if (typeof handlers === \"function\") {\n handlers = {\n enter: handlers\n };\n }\n const {\n enter,\n exit\n } = handlers;\n traverseSimpleImpl(node, enter, exit, state, []);\n}\nfunction traverseSimpleImpl(node, enter, exit, state, ancestors) {\n const keys = _index.VISITOR_KEYS[node.type];\n if (!keys) return;\n if (enter) enter(node, ancestors, state);\n for (const key of keys) {\n const subNode = node[key];\n if (Array.isArray(subNode)) {\n for (let i = 0; i < subNode.length; i++) {\n const child = subNode[i];\n if (!child) continue;\n ancestors.push({\n node,\n key,\n index: i\n });\n traverseSimpleImpl(child, enter, exit, state, ancestors);\n ancestors.pop();\n }\n } else if (subNode) {\n ancestors.push({\n node,\n key\n });\n traverseSimpleImpl(subNode, enter, exit, state, ancestors);\n ancestors.pop();\n }\n }\n if (exit) exit(node, ancestors, state);\n}\n\n//# sourceMappingURL=traverse.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBinding;\nvar _getBindingIdentifiers = require(\"../retrievers/getBindingIdentifiers.js\");\nfunction isBinding(node, parent, grandparent) {\n if (grandparent && node.type === \"Identifier\" && parent.type === \"ObjectProperty\" && grandparent.type === \"ObjectExpression\") {\n return false;\n }\n const keys = _getBindingIdentifiers.default.keys[parent.type];\n if (keys) {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const val = parent[key];\n if (Array.isArray(val)) {\n if (val.includes(node)) return true;\n } else {\n if (val === node) return true;\n }\n }\n }\n return false;\n}\n\n//# sourceMappingURL=isBinding.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isBlockScoped;\nvar _index = require(\"./generated/index.js\");\nvar _isLet = require(\"./isLet.js\");\nfunction isBlockScoped(node) {\n return (0, _index.isFunctionDeclaration)(node) || (0, _index.isClassDeclaration)(node) || (0, _isLet.default)(node);\n}\n\n//# sourceMappingURL=isBlockScoped.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLet;\nvar _index = require(\"./generated/index.js\");\nvar BLOCK_SCOPED_SYMBOL = Symbol.for(\"var used to be block scoped\");\nfunction isLet(node) {\n return (0, _index.isVariableDeclaration)(node) && (node.kind !== \"var\" || node[BLOCK_SCOPED_SYMBOL]);\n}\n\n//# sourceMappingURL=isLet.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isImmutable;\nvar _isType = require(\"./isType.js\");\nvar _index = require(\"./generated/index.js\");\nfunction isImmutable(node) {\n if ((0, _isType.default)(node.type, \"Immutable\")) return true;\n if ((0, _index.isIdentifier)(node)) {\n if (node.name === \"undefined\") {\n return true;\n } else {\n return false;\n }\n }\n return false;\n}\n\n//# sourceMappingURL=isImmutable.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isNodesEquivalent;\nvar _index = require(\"../definitions/index.js\");\nfunction isNodesEquivalent(a, b) {\n if (typeof a !== \"object\" || typeof b !== \"object\" || a == null || b == null) {\n return a === b;\n }\n if (a.type !== b.type) {\n return false;\n }\n const fields = Object.keys(_index.NODE_FIELDS[a.type] || a.type);\n const visitorKeys = _index.VISITOR_KEYS[a.type];\n for (const field of fields) {\n const val_a = a[field];\n const val_b = b[field];\n if (typeof val_a !== typeof val_b) {\n return false;\n }\n if (val_a == null && val_b == null) {\n continue;\n } else if (val_a == null || val_b == null) {\n return false;\n }\n if (Array.isArray(val_a)) {\n if (!Array.isArray(val_b)) {\n return false;\n }\n if (val_a.length !== val_b.length) {\n return false;\n }\n for (let i = 0; i < val_a.length; i++) {\n if (!isNodesEquivalent(val_a[i], val_b[i])) {\n return false;\n }\n }\n continue;\n }\n if (typeof val_a === \"object\" && !(visitorKeys != null && visitorKeys.includes(field))) {\n for (const key of Object.keys(val_a)) {\n if (val_a[key] !== val_b[key]) {\n return false;\n }\n }\n continue;\n }\n if (!isNodesEquivalent(val_a, val_b)) {\n return false;\n }\n }\n return true;\n}\n\n//# sourceMappingURL=isNodesEquivalent.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isReferenced;\nfunction isReferenced(node, parent, grandparent) {\n switch (parent.type) {\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n if (parent.property === node) {\n return !!parent.computed;\n }\n return parent.object === node;\n case \"JSXMemberExpression\":\n return parent.object === node;\n case \"VariableDeclarator\":\n return parent.init === node;\n case \"ArrowFunctionExpression\":\n return parent.body === node;\n case \"PrivateName\":\n return false;\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n case \"ObjectMethod\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return false;\n case \"ObjectProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return (grandparent == null ? void 0 : grandparent.type) !== \"ObjectPattern\";\n case \"ClassProperty\":\n case \"ClassAccessorProperty\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return true;\n case \"ClassPrivateProperty\":\n return parent.key !== node;\n case \"ClassDeclaration\":\n case \"ClassExpression\":\n return parent.superClass === node;\n case \"AssignmentExpression\":\n return parent.right === node;\n case \"AssignmentPattern\":\n return parent.right === node;\n case \"LabeledStatement\":\n return false;\n case \"CatchClause\":\n return false;\n case \"RestElement\":\n return false;\n case \"BreakStatement\":\n case \"ContinueStatement\":\n return false;\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n return false;\n case \"ExportNamespaceSpecifier\":\n case \"ExportDefaultSpecifier\":\n return false;\n case \"ExportSpecifier\":\n if (grandparent != null && grandparent.source) {\n return false;\n }\n return parent.local === node;\n case \"ImportDefaultSpecifier\":\n case \"ImportNamespaceSpecifier\":\n case \"ImportSpecifier\":\n return false;\n case \"ImportAttribute\":\n return false;\n case \"JSXAttribute\":\n return false;\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n return false;\n case \"MetaProperty\":\n return false;\n case \"ObjectTypeProperty\":\n return parent.key !== node;\n case \"TSEnumMember\":\n return parent.id !== node;\n case \"TSPropertySignature\":\n if (parent.key === node) {\n return !!parent.computed;\n }\n return true;\n }\n return true;\n}\n\n//# sourceMappingURL=isReferenced.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isScope;\nvar _index = require(\"./generated/index.js\");\nfunction isScope(node, parent) {\n if ((0, _index.isBlockStatement)(node) && ((0, _index.isFunction)(parent) || (0, _index.isCatchClause)(parent))) {\n return false;\n }\n if ((0, _index.isPattern)(node) && ((0, _index.isFunction)(parent) || (0, _index.isCatchClause)(parent))) {\n return true;\n }\n return (0, _index.isScopable)(node);\n}\n\n//# sourceMappingURL=isScope.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isSpecifierDefault;\nvar _index = require(\"./generated/index.js\");\nfunction isSpecifierDefault(specifier) {\n return (0, _index.isImportDefaultSpecifier)(specifier) || (0, _index.isIdentifier)(specifier.imported || specifier.exported, {\n name: \"default\"\n });\n}\n\n//# sourceMappingURL=isSpecifierDefault.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isValidES3Identifier;\nvar _isValidIdentifier = require(\"./isValidIdentifier.js\");\nconst RESERVED_WORDS_ES3_ONLY = new Set([\"abstract\", \"boolean\", \"byte\", \"char\", \"double\", \"enum\", \"final\", \"float\", \"goto\", \"implements\", \"int\", \"interface\", \"long\", \"native\", \"package\", \"private\", \"protected\", \"public\", \"short\", \"static\", \"synchronized\", \"throws\", \"transient\", \"volatile\"]);\nfunction isValidES3Identifier(name) {\n return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name);\n}\n\n//# sourceMappingURL=isValidES3Identifier.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isVar;\nvar _index = require(\"./generated/index.js\");\nvar BLOCK_SCOPED_SYMBOL = Symbol.for(\"var used to be block scoped\");\nfunction isVar(node) {\n return (0, _index.isVariableDeclaration)(node, {\n kind: \"var\"\n }) && !node[BLOCK_SCOPED_SYMBOL];\n}\n\n//# sourceMappingURL=isVar.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toSequenceExpression;\nvar _gatherSequenceExpressions = require(\"./gatherSequenceExpressions.js\");\nfunction toSequenceExpression(nodes, scope) {\n if (!(nodes != null && nodes.length)) return;\n const declars = [];\n const result = (0, _gatherSequenceExpressions.default)(nodes, declars);\n if (!result) return;\n for (const declar of declars) {\n scope.push(declar);\n }\n return result;\n}\n\n//# sourceMappingURL=toSequenceExpression.js.map\n","\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = gatherSequenceExpressions;\nvar _getBindingIdentifiers = require(\"../retrievers/getBindingIdentifiers.js\");\nvar _index = require(\"../validators/generated/index.js\");\nvar _index2 = require(\"../builders/generated/index.js\");\nvar _productions = require(\"../builders/productions.js\");\nvar _cloneNode = require(\"../clone/cloneNode.js\");\nfunction gatherSequenceExpressions(nodes, declars) {\n const exprs = [];\n let ensureLastUndefined = true;\n for (const node of nodes) {\n if (!(0, _index.isEmptyStatement)(node)) {\n ensureLastUndefined = false;\n }\n if ((0, _index.isExpression)(node)) {\n exprs.push(node);\n } else if ((0, _index.isExpressionStatement)(node)) {\n exprs.push(node.expression);\n } else if ((0, _index.isVariableDeclaration)(node)) {\n if (node.kind !== \"var\") return;\n for (const declar of node.declarations) {\n const bindings = (0, _getBindingIdentifiers.default)(declar);\n for (const key of Object.keys(bindings)) {\n declars.push({\n kind: node.kind,\n id: (0, _cloneNode.default)(bindings[key])\n });\n }\n if (declar.init) {\n exprs.push((0, _index2.assignmentExpression)(\"=\", declar.id, declar.init));\n }\n }\n ensureLastUndefined = true;\n } else if ((0, _index.isIfStatement)(node)) {\n const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], declars) : (0, _productions.buildUndefinedNode)();\n const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], declars) : (0, _productions.buildUndefinedNode)();\n if (!consequent || !alternate) return;\n exprs.push((0, _index2.conditionalExpression)(node.test, consequent, alternate));\n } else if ((0, _index.isBlockStatement)(node)) {\n const body = gatherSequenceExpressions(node.body, declars);\n if (!body) return;\n exprs.push(body);\n } else if ((0, _index.isEmptyStatement)(node)) {\n if (nodes.indexOf(node) === 0) {\n ensureLastUndefined = true;\n }\n } else {\n return;\n }\n }\n if (ensureLastUndefined) {\n exprs.push((0, _productions.buildUndefinedNode)());\n }\n if (exprs.length === 1) {\n return exprs[0];\n } else {\n return (0, _index2.sequenceExpression)(exprs);\n }\n}\n\n//# sourceMappingURL=gatherSequenceExpressions.js.map\n"]}
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@jridgewell/sourcemap-codec/index.js b/miniapp/miniprogram_npm/@jridgewell/sourcemap-codec/index.js
new file mode 100644
index 0000000..5d4664a
--- /dev/null
+++ b/miniapp/miniprogram_npm/@jridgewell/sourcemap-codec/index.js
@@ -0,0 +1,477 @@
+module.exports = (function() {
+var __MODS__ = {};
+var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
+var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
+var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
+var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
+__DEFINE__(1771034509103, function(require, module, exports) {
+(function (global, factory) {
+ if (typeof exports === 'object' && typeof module !== 'undefined') {
+ factory(module);
+ module.exports = def(module);
+ } else if (typeof define === 'function' && define.amd) {
+ define(['module'], function(mod) {
+ factory.apply(this, arguments);
+ mod.exports = def(mod);
+ });
+ } else {
+ const mod = { exports: {} };
+ factory(mod);
+ global = typeof globalThis !== 'undefined' ? globalThis : global || self;
+ global.sourcemapCodec = def(mod);
+ }
+ function def(m) { return 'default' in m.exports ? m.exports.default : m.exports; }
+})(this, (function (module) {
+
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+
+// src/sourcemap-codec.ts
+var sourcemap_codec_exports = {};
+__export(sourcemap_codec_exports, {
+ decode: () => decode,
+ decodeGeneratedRanges: () => decodeGeneratedRanges,
+ decodeOriginalScopes: () => decodeOriginalScopes,
+ encode: () => encode,
+ encodeGeneratedRanges: () => encodeGeneratedRanges,
+ encodeOriginalScopes: () => encodeOriginalScopes
+});
+module.exports = __toCommonJS(sourcemap_codec_exports);
+
+// src/vlq.ts
+var comma = ",".charCodeAt(0);
+var semicolon = ";".charCodeAt(0);
+var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+var intToChar = new Uint8Array(64);
+var charToInt = new Uint8Array(128);
+for (let i = 0; i < chars.length; i++) {
+ const c = chars.charCodeAt(i);
+ intToChar[i] = c;
+ charToInt[c] = i;
+}
+function decodeInteger(reader, relative) {
+ let value = 0;
+ let shift = 0;
+ let integer = 0;
+ do {
+ const c = reader.next();
+ integer = charToInt[c];
+ value |= (integer & 31) << shift;
+ shift += 5;
+ } while (integer & 32);
+ const shouldNegate = value & 1;
+ value >>>= 1;
+ if (shouldNegate) {
+ value = -2147483648 | -value;
+ }
+ return relative + value;
+}
+function encodeInteger(builder, num, relative) {
+ let delta = num - relative;
+ delta = delta < 0 ? -delta << 1 | 1 : delta << 1;
+ do {
+ let clamped = delta & 31;
+ delta >>>= 5;
+ if (delta > 0) clamped |= 32;
+ builder.write(intToChar[clamped]);
+ } while (delta > 0);
+ return num;
+}
+function hasMoreVlq(reader, max) {
+ if (reader.pos >= max) return false;
+ return reader.peek() !== comma;
+}
+
+// src/strings.ts
+var bufLength = 1024 * 16;
+var td = typeof TextDecoder !== "undefined" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== "undefined" ? {
+ decode(buf) {
+ const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);
+ return out.toString();
+ }
+} : {
+ decode(buf) {
+ let out = "";
+ for (let i = 0; i < buf.length; i++) {
+ out += String.fromCharCode(buf[i]);
+ }
+ return out;
+ }
+};
+var StringWriter = class {
+ constructor() {
+ this.pos = 0;
+ this.out = "";
+ this.buffer = new Uint8Array(bufLength);
+ }
+ write(v) {
+ const { buffer } = this;
+ buffer[this.pos++] = v;
+ if (this.pos === bufLength) {
+ this.out += td.decode(buffer);
+ this.pos = 0;
+ }
+ }
+ flush() {
+ const { buffer, out, pos } = this;
+ return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;
+ }
+};
+var StringReader = class {
+ constructor(buffer) {
+ this.pos = 0;
+ this.buffer = buffer;
+ }
+ next() {
+ return this.buffer.charCodeAt(this.pos++);
+ }
+ peek() {
+ return this.buffer.charCodeAt(this.pos);
+ }
+ indexOf(char) {
+ const { buffer, pos } = this;
+ const idx = buffer.indexOf(char, pos);
+ return idx === -1 ? buffer.length : idx;
+ }
+};
+
+// src/scopes.ts
+var EMPTY = [];
+function decodeOriginalScopes(input) {
+ const { length } = input;
+ const reader = new StringReader(input);
+ const scopes = [];
+ const stack = [];
+ let line = 0;
+ for (; reader.pos < length; reader.pos++) {
+ line = decodeInteger(reader, line);
+ const column = decodeInteger(reader, 0);
+ if (!hasMoreVlq(reader, length)) {
+ const last = stack.pop();
+ last[2] = line;
+ last[3] = column;
+ continue;
+ }
+ const kind = decodeInteger(reader, 0);
+ const fields = decodeInteger(reader, 0);
+ const hasName = fields & 1;
+ const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind];
+ let vars = EMPTY;
+ if (hasMoreVlq(reader, length)) {
+ vars = [];
+ do {
+ const varsIndex = decodeInteger(reader, 0);
+ vars.push(varsIndex);
+ } while (hasMoreVlq(reader, length));
+ }
+ scope.vars = vars;
+ scopes.push(scope);
+ stack.push(scope);
+ }
+ return scopes;
+}
+function encodeOriginalScopes(scopes) {
+ const writer = new StringWriter();
+ for (let i = 0; i < scopes.length; ) {
+ i = _encodeOriginalScopes(scopes, i, writer, [0]);
+ }
+ return writer.flush();
+}
+function _encodeOriginalScopes(scopes, index, writer, state) {
+ const scope = scopes[index];
+ const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;
+ if (index > 0) writer.write(comma);
+ state[0] = encodeInteger(writer, startLine, state[0]);
+ encodeInteger(writer, startColumn, 0);
+ encodeInteger(writer, kind, 0);
+ const fields = scope.length === 6 ? 1 : 0;
+ encodeInteger(writer, fields, 0);
+ if (scope.length === 6) encodeInteger(writer, scope[5], 0);
+ for (const v of vars) {
+ encodeInteger(writer, v, 0);
+ }
+ for (index++; index < scopes.length; ) {
+ const next = scopes[index];
+ const { 0: l, 1: c } = next;
+ if (l > endLine || l === endLine && c >= endColumn) {
+ break;
+ }
+ index = _encodeOriginalScopes(scopes, index, writer, state);
+ }
+ writer.write(comma);
+ state[0] = encodeInteger(writer, endLine, state[0]);
+ encodeInteger(writer, endColumn, 0);
+ return index;
+}
+function decodeGeneratedRanges(input) {
+ const { length } = input;
+ const reader = new StringReader(input);
+ const ranges = [];
+ const stack = [];
+ let genLine = 0;
+ let definitionSourcesIndex = 0;
+ let definitionScopeIndex = 0;
+ let callsiteSourcesIndex = 0;
+ let callsiteLine = 0;
+ let callsiteColumn = 0;
+ let bindingLine = 0;
+ let bindingColumn = 0;
+ do {
+ const semi = reader.indexOf(";");
+ let genColumn = 0;
+ for (; reader.pos < semi; reader.pos++) {
+ genColumn = decodeInteger(reader, genColumn);
+ if (!hasMoreVlq(reader, semi)) {
+ const last = stack.pop();
+ last[2] = genLine;
+ last[3] = genColumn;
+ continue;
+ }
+ const fields = decodeInteger(reader, 0);
+ const hasDefinition = fields & 1;
+ const hasCallsite = fields & 2;
+ const hasScope = fields & 4;
+ let callsite = null;
+ let bindings = EMPTY;
+ let range;
+ if (hasDefinition) {
+ const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);
+ definitionScopeIndex = decodeInteger(
+ reader,
+ definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0
+ );
+ definitionSourcesIndex = defSourcesIndex;
+ range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];
+ } else {
+ range = [genLine, genColumn, 0, 0];
+ }
+ range.isScope = !!hasScope;
+ if (hasCallsite) {
+ const prevCsi = callsiteSourcesIndex;
+ const prevLine = callsiteLine;
+ callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);
+ const sameSource = prevCsi === callsiteSourcesIndex;
+ callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);
+ callsiteColumn = decodeInteger(
+ reader,
+ sameSource && prevLine === callsiteLine ? callsiteColumn : 0
+ );
+ callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];
+ }
+ range.callsite = callsite;
+ if (hasMoreVlq(reader, semi)) {
+ bindings = [];
+ do {
+ bindingLine = genLine;
+ bindingColumn = genColumn;
+ const expressionsCount = decodeInteger(reader, 0);
+ let expressionRanges;
+ if (expressionsCount < -1) {
+ expressionRanges = [[decodeInteger(reader, 0)]];
+ for (let i = -1; i > expressionsCount; i--) {
+ const prevBl = bindingLine;
+ bindingLine = decodeInteger(reader, bindingLine);
+ bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);
+ const expression = decodeInteger(reader, 0);
+ expressionRanges.push([expression, bindingLine, bindingColumn]);
+ }
+ } else {
+ expressionRanges = [[expressionsCount]];
+ }
+ bindings.push(expressionRanges);
+ } while (hasMoreVlq(reader, semi));
+ }
+ range.bindings = bindings;
+ ranges.push(range);
+ stack.push(range);
+ }
+ genLine++;
+ reader.pos = semi + 1;
+ } while (reader.pos < length);
+ return ranges;
+}
+function encodeGeneratedRanges(ranges) {
+ if (ranges.length === 0) return "";
+ const writer = new StringWriter();
+ for (let i = 0; i < ranges.length; ) {
+ i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);
+ }
+ return writer.flush();
+}
+function _encodeGeneratedRanges(ranges, index, writer, state) {
+ const range = ranges[index];
+ const {
+ 0: startLine,
+ 1: startColumn,
+ 2: endLine,
+ 3: endColumn,
+ isScope,
+ callsite,
+ bindings
+ } = range;
+ if (state[0] < startLine) {
+ catchupLine(writer, state[0], startLine);
+ state[0] = startLine;
+ state[1] = 0;
+ } else if (index > 0) {
+ writer.write(comma);
+ }
+ state[1] = encodeInteger(writer, range[1], state[1]);
+ const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0);
+ encodeInteger(writer, fields, 0);
+ if (range.length === 6) {
+ const { 4: sourcesIndex, 5: scopesIndex } = range;
+ if (sourcesIndex !== state[2]) {
+ state[3] = 0;
+ }
+ state[2] = encodeInteger(writer, sourcesIndex, state[2]);
+ state[3] = encodeInteger(writer, scopesIndex, state[3]);
+ }
+ if (callsite) {
+ const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;
+ if (sourcesIndex !== state[4]) {
+ state[5] = 0;
+ state[6] = 0;
+ } else if (callLine !== state[5]) {
+ state[6] = 0;
+ }
+ state[4] = encodeInteger(writer, sourcesIndex, state[4]);
+ state[5] = encodeInteger(writer, callLine, state[5]);
+ state[6] = encodeInteger(writer, callColumn, state[6]);
+ }
+ if (bindings) {
+ for (const binding of bindings) {
+ if (binding.length > 1) encodeInteger(writer, -binding.length, 0);
+ const expression = binding[0][0];
+ encodeInteger(writer, expression, 0);
+ let bindingStartLine = startLine;
+ let bindingStartColumn = startColumn;
+ for (let i = 1; i < binding.length; i++) {
+ const expRange = binding[i];
+ bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine);
+ bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn);
+ encodeInteger(writer, expRange[0], 0);
+ }
+ }
+ }
+ for (index++; index < ranges.length; ) {
+ const next = ranges[index];
+ const { 0: l, 1: c } = next;
+ if (l > endLine || l === endLine && c >= endColumn) {
+ break;
+ }
+ index = _encodeGeneratedRanges(ranges, index, writer, state);
+ }
+ if (state[0] < endLine) {
+ catchupLine(writer, state[0], endLine);
+ state[0] = endLine;
+ state[1] = 0;
+ } else {
+ writer.write(comma);
+ }
+ state[1] = encodeInteger(writer, endColumn, state[1]);
+ return index;
+}
+function catchupLine(writer, lastLine, line) {
+ do {
+ writer.write(semicolon);
+ } while (++lastLine < line);
+}
+
+// src/sourcemap-codec.ts
+function decode(mappings) {
+ const { length } = mappings;
+ const reader = new StringReader(mappings);
+ const decoded = [];
+ let genColumn = 0;
+ let sourcesIndex = 0;
+ let sourceLine = 0;
+ let sourceColumn = 0;
+ let namesIndex = 0;
+ do {
+ const semi = reader.indexOf(";");
+ const line = [];
+ let sorted = true;
+ let lastCol = 0;
+ genColumn = 0;
+ while (reader.pos < semi) {
+ let seg;
+ genColumn = decodeInteger(reader, genColumn);
+ if (genColumn < lastCol) sorted = false;
+ lastCol = genColumn;
+ if (hasMoreVlq(reader, semi)) {
+ sourcesIndex = decodeInteger(reader, sourcesIndex);
+ sourceLine = decodeInteger(reader, sourceLine);
+ sourceColumn = decodeInteger(reader, sourceColumn);
+ if (hasMoreVlq(reader, semi)) {
+ namesIndex = decodeInteger(reader, namesIndex);
+ seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];
+ } else {
+ seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];
+ }
+ } else {
+ seg = [genColumn];
+ }
+ line.push(seg);
+ reader.pos++;
+ }
+ if (!sorted) sort(line);
+ decoded.push(line);
+ reader.pos = semi + 1;
+ } while (reader.pos <= length);
+ return decoded;
+}
+function sort(line) {
+ line.sort(sortComparator);
+}
+function sortComparator(a, b) {
+ return a[0] - b[0];
+}
+function encode(decoded) {
+ const writer = new StringWriter();
+ let sourcesIndex = 0;
+ let sourceLine = 0;
+ let sourceColumn = 0;
+ let namesIndex = 0;
+ for (let i = 0; i < decoded.length; i++) {
+ const line = decoded[i];
+ if (i > 0) writer.write(semicolon);
+ if (line.length === 0) continue;
+ let genColumn = 0;
+ for (let j = 0; j < line.length; j++) {
+ const segment = line[j];
+ if (j > 0) writer.write(comma);
+ genColumn = encodeInteger(writer, segment[0], genColumn);
+ if (segment.length === 1) continue;
+ sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);
+ sourceLine = encodeInteger(writer, segment[2], sourceLine);
+ sourceColumn = encodeInteger(writer, segment[3], sourceColumn);
+ if (segment.length === 4) continue;
+ namesIndex = encodeInteger(writer, segment[4], namesIndex);
+ }
+ }
+ return writer.flush();
+}
+}));
+//# sourceMappingURL=sourcemap-codec.umd.js.map
+
+}, function(modId) {var map = {}; return __REQUIRE__(map[modId], modId); })
+return __REQUIRE__(1771034509103);
+})()
+//miniprogram-npm-outsideDeps=[]
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@jridgewell/sourcemap-codec/index.js.map b/miniapp/miniprogram_npm/@jridgewell/sourcemap-codec/index.js.map
new file mode 100644
index 0000000..94c1396
--- /dev/null
+++ b/miniapp/miniprogram_npm/@jridgewell/sourcemap-codec/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["sourcemap-codec.umd.js"],"names":[],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.js","sourcesContent":["(function (global, factory) {\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n factory(module);\n module.exports = def(module);\n } else if (typeof define === 'function' && define.amd) {\n define(['module'], function(mod) {\n factory.apply(this, arguments);\n mod.exports = def(mod);\n });\n } else {\n const mod = { exports: {} };\n factory(mod);\n global = typeof globalThis !== 'undefined' ? globalThis : global || self;\n global.sourcemapCodec = def(mod);\n }\n function def(m) { return 'default' in m.exports ? m.exports.default : m.exports; }\n})(this, (function (module) {\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/sourcemap-codec.ts\nvar sourcemap_codec_exports = {};\n__export(sourcemap_codec_exports, {\n decode: () => decode,\n decodeGeneratedRanges: () => decodeGeneratedRanges,\n decodeOriginalScopes: () => decodeOriginalScopes,\n encode: () => encode,\n encodeGeneratedRanges: () => encodeGeneratedRanges,\n encodeOriginalScopes: () => encodeOriginalScopes\n});\nmodule.exports = __toCommonJS(sourcemap_codec_exports);\n\n// src/vlq.ts\nvar comma = \",\".charCodeAt(0);\nvar semicolon = \";\".charCodeAt(0);\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar intToChar = new Uint8Array(64);\nvar charToInt = new Uint8Array(128);\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\nfunction decodeInteger(reader, relative) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -2147483648 | -value;\n }\n return relative + value;\n}\nfunction encodeInteger(builder, num, relative) {\n let delta = num - relative;\n delta = delta < 0 ? -delta << 1 | 1 : delta << 1;\n do {\n let clamped = delta & 31;\n delta >>>= 5;\n if (delta > 0) clamped |= 32;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n return num;\n}\nfunction hasMoreVlq(reader, max) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n\n// src/strings.ts\nvar bufLength = 1024 * 16;\nvar td = typeof TextDecoder !== \"undefined\" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== \"undefined\" ? {\n decode(buf) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n }\n} : {\n decode(buf) {\n let out = \"\";\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n }\n};\nvar StringWriter = class {\n constructor() {\n this.pos = 0;\n this.out = \"\";\n this.buffer = new Uint8Array(bufLength);\n }\n write(v) {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n flush() {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n};\nvar StringReader = class {\n constructor(buffer) {\n this.pos = 0;\n this.buffer = buffer;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(char) {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n};\n\n// src/scopes.ts\nvar EMPTY = [];\nfunction decodeOriginalScopes(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes = [];\n const stack = [];\n let line = 0;\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop();\n last[2] = line;\n last[3] = column;\n continue;\n }\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 1;\n const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind];\n let vars = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n scopes.push(scope);\n stack.push(scope);\n }\n return scopes;\n}\nfunction encodeOriginalScopes(scopes) {\n const writer = new StringWriter();\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n return writer.flush();\n}\nfunction _encodeOriginalScopes(scopes, index, writer, state) {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n if (index > 0) writer.write(comma);\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n const fields = scope.length === 6 ? 1 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n return index;\n}\nfunction decodeGeneratedRanges(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges = [];\n const stack = [];\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n do {\n const semi = reader.indexOf(\";\");\n let genColumn = 0;\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop();\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 1;\n const hasCallsite = fields & 2;\n const hasScope = fields & 4;\n let callsite = null;\n let bindings = EMPTY;\n let range;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0\n );\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];\n } else {\n range = [genLine, genColumn, 0, 0];\n }\n range.isScope = !!hasScope;\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0\n );\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges;\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n ranges.push(range);\n stack.push(range);\n }\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n return ranges;\n}\nfunction encodeGeneratedRanges(ranges) {\n if (ranges.length === 0) return \"\";\n const writer = new StringWriter();\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n return writer.flush();\n}\nfunction _encodeGeneratedRanges(ranges, index, writer, state) {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings\n } = range;\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, range[1], state[1]);\n const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0);\n encodeInteger(writer, fields, 0);\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn);\n encodeInteger(writer, expRange[0], 0);\n }\n }\n }\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n return index;\n}\nfunction catchupLine(writer, lastLine, line) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n\n// src/sourcemap-codec.ts\nfunction decode(mappings) {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n do {\n const semi = reader.indexOf(\";\");\n const line = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n while (reader.pos < semi) {\n let seg;\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n line.push(seg);\n reader.pos++;\n }\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n return decoded;\n}\nfunction sort(line) {\n line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[0] - b[0];\n}\nfunction encode(decoded) {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n let genColumn = 0;\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n genColumn = encodeInteger(writer, segment[0], genColumn);\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n return writer.flush();\n}\n}));\n//# sourceMappingURL=sourcemap-codec.umd.js.map\n"]}
\ No newline at end of file
diff --git a/miniapp/miniprogram_npm/@vue/compiler-core/index.js b/miniapp/miniprogram_npm/@vue/compiler-core/index.js
new file mode 100644
index 0000000..fc4d646
--- /dev/null
+++ b/miniapp/miniprogram_npm/@vue/compiler-core/index.js
@@ -0,0 +1,13677 @@
+module.exports = (function() {
+var __MODS__ = {};
+var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
+var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
+var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
+var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
+__DEFINE__(1771034509105, function(require, module, exports) {
+
+
+if (process.env.NODE_ENV === 'production') {
+ module.exports = require('./dist/compiler-core.cjs.prod.js')
+} else {
+ module.exports = require('./dist/compiler-core.cjs.js')
+}
+
+}, function(modId) {var map = {"./dist/compiler-core.cjs.prod.js":1771034509106,"./dist/compiler-core.cjs.js":1771034509107}; return __REQUIRE__(map[modId], modId); })
+__DEFINE__(1771034509106, function(require, module, exports) {
+/**
+* @vue/compiler-core v3.5.28
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/
+
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var shared = require('@vue/shared');
+var decode = require('entities/decode');
+var parser = require('@babel/parser');
+var estreeWalker = require('estree-walker');
+var sourceMapJs = require('source-map-js');
+
+const FRAGMENT = /* @__PURE__ */ Symbol(``);
+const TELEPORT = /* @__PURE__ */ Symbol(``);
+const SUSPENSE = /* @__PURE__ */ Symbol(``);
+const KEEP_ALIVE = /* @__PURE__ */ Symbol(``);
+const BASE_TRANSITION = /* @__PURE__ */ Symbol(
+ ``
+);
+const OPEN_BLOCK = /* @__PURE__ */ Symbol(``);
+const CREATE_BLOCK = /* @__PURE__ */ Symbol(``);
+const CREATE_ELEMENT_BLOCK = /* @__PURE__ */ Symbol(
+ ``
+);
+const CREATE_VNODE = /* @__PURE__ */ Symbol(``);
+const CREATE_ELEMENT_VNODE = /* @__PURE__ */ Symbol(
+ ``
+);
+const CREATE_COMMENT = /* @__PURE__ */ Symbol(
+ ``
+);
+const CREATE_TEXT = /* @__PURE__ */ Symbol(
+ ``
+);
+const CREATE_STATIC = /* @__PURE__ */ Symbol(
+ ``
+);
+const RESOLVE_COMPONENT = /* @__PURE__ */ Symbol(
+ ``
+);
+const RESOLVE_DYNAMIC_COMPONENT = /* @__PURE__ */ Symbol(
+ ``
+);
+const RESOLVE_DIRECTIVE = /* @__PURE__ */ Symbol(
+ ``
+);
+const RESOLVE_FILTER = /* @__PURE__ */ Symbol(
+ ``
+);
+const WITH_DIRECTIVES = /* @__PURE__ */ Symbol(
+ ``
+);
+const RENDER_LIST = /* @__PURE__ */ Symbol(``);
+const RENDER_SLOT = /* @__PURE__ */ Symbol(``);
+const CREATE_SLOTS = /* @__PURE__ */ Symbol(``);
+const TO_DISPLAY_STRING = /* @__PURE__ */ Symbol(
+ ``
+);
+const MERGE_PROPS = /* @__PURE__ */ Symbol(``);
+const NORMALIZE_CLASS = /* @__PURE__ */ Symbol(
+ ``
+);
+const NORMALIZE_STYLE = /* @__PURE__ */ Symbol(
+ ``
+);
+const NORMALIZE_PROPS = /* @__PURE__ */ Symbol(
+ ``
+);
+const GUARD_REACTIVE_PROPS = /* @__PURE__ */ Symbol(
+ ``
+);
+const TO_HANDLERS = /* @__PURE__ */ Symbol(``);
+const CAMELIZE = /* @__PURE__ */ Symbol(``);
+const CAPITALIZE = /* @__PURE__ */ Symbol(``);
+const TO_HANDLER_KEY = /* @__PURE__ */ Symbol(
+ ``
+);
+const SET_BLOCK_TRACKING = /* @__PURE__ */ Symbol(
+ ``
+);
+const PUSH_SCOPE_ID = /* @__PURE__ */ Symbol(``);
+const POP_SCOPE_ID = /* @__PURE__ */ Symbol(``);
+const WITH_CTX = /* @__PURE__ */ Symbol(``);
+const UNREF = /* @__PURE__ */ Symbol(``);
+const IS_REF = /* @__PURE__ */ Symbol(``);
+const WITH_MEMO = /* @__PURE__ */ Symbol(``);
+const IS_MEMO_SAME = /* @__PURE__ */ Symbol(``);
+const helperNameMap = {
+ [FRAGMENT]: `Fragment`,
+ [TELEPORT]: `Teleport`,
+ [SUSPENSE]: `Suspense`,
+ [KEEP_ALIVE]: `KeepAlive`,
+ [BASE_TRANSITION]: `BaseTransition`,
+ [OPEN_BLOCK]: `openBlock`,
+ [CREATE_BLOCK]: `createBlock`,
+ [CREATE_ELEMENT_BLOCK]: `createElementBlock`,
+ [CREATE_VNODE]: `createVNode`,
+ [CREATE_ELEMENT_VNODE]: `createElementVNode`,
+ [CREATE_COMMENT]: `createCommentVNode`,
+ [CREATE_TEXT]: `createTextVNode`,
+ [CREATE_STATIC]: `createStaticVNode`,
+ [RESOLVE_COMPONENT]: `resolveComponent`,
+ [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,
+ [RESOLVE_DIRECTIVE]: `resolveDirective`,
+ [RESOLVE_FILTER]: `resolveFilter`,
+ [WITH_DIRECTIVES]: `withDirectives`,
+ [RENDER_LIST]: `renderList`,
+ [RENDER_SLOT]: `renderSlot`,
+ [CREATE_SLOTS]: `createSlots`,
+ [TO_DISPLAY_STRING]: `toDisplayString`,
+ [MERGE_PROPS]: `mergeProps`,
+ [NORMALIZE_CLASS]: `normalizeClass`,
+ [NORMALIZE_STYLE]: `normalizeStyle`,
+ [NORMALIZE_PROPS]: `normalizeProps`,
+ [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,
+ [TO_HANDLERS]: `toHandlers`,
+ [CAMELIZE]: `camelize`,
+ [CAPITALIZE]: `capitalize`,
+ [TO_HANDLER_KEY]: `toHandlerKey`,
+ [SET_BLOCK_TRACKING]: `setBlockTracking`,
+ [PUSH_SCOPE_ID]: `pushScopeId`,
+ [POP_SCOPE_ID]: `popScopeId`,
+ [WITH_CTX]: `withCtx`,
+ [UNREF]: `unref`,
+ [IS_REF]: `isRef`,
+ [WITH_MEMO]: `withMemo`,
+ [IS_MEMO_SAME]: `isMemoSame`
+};
+function registerRuntimeHelpers(helpers) {
+ Object.getOwnPropertySymbols(helpers).forEach((s) => {
+ helperNameMap[s] = helpers[s];
+ });
+}
+
+const Namespaces = {
+ "HTML": 0,
+ "0": "HTML",
+ "SVG": 1,
+ "1": "SVG",
+ "MATH_ML": 2,
+ "2": "MATH_ML"
+};
+const NodeTypes = {
+ "ROOT": 0,
+ "0": "ROOT",
+ "ELEMENT": 1,
+ "1": "ELEMENT",
+ "TEXT": 2,
+ "2": "TEXT",
+ "COMMENT": 3,
+ "3": "COMMENT",
+ "SIMPLE_EXPRESSION": 4,
+ "4": "SIMPLE_EXPRESSION",
+ "INTERPOLATION": 5,
+ "5": "INTERPOLATION",
+ "ATTRIBUTE": 6,
+ "6": "ATTRIBUTE",
+ "DIRECTIVE": 7,
+ "7": "DIRECTIVE",
+ "COMPOUND_EXPRESSION": 8,
+ "8": "COMPOUND_EXPRESSION",
+ "IF": 9,
+ "9": "IF",
+ "IF_BRANCH": 10,
+ "10": "IF_BRANCH",
+ "FOR": 11,
+ "11": "FOR",
+ "TEXT_CALL": 12,
+ "12": "TEXT_CALL",
+ "VNODE_CALL": 13,
+ "13": "VNODE_CALL",
+ "JS_CALL_EXPRESSION": 14,
+ "14": "JS_CALL_EXPRESSION",
+ "JS_OBJECT_EXPRESSION": 15,
+ "15": "JS_OBJECT_EXPRESSION",
+ "JS_PROPERTY": 16,
+ "16": "JS_PROPERTY",
+ "JS_ARRAY_EXPRESSION": 17,
+ "17": "JS_ARRAY_EXPRESSION",
+ "JS_FUNCTION_EXPRESSION": 18,
+ "18": "JS_FUNCTION_EXPRESSION",
+ "JS_CONDITIONAL_EXPRESSION": 19,
+ "19": "JS_CONDITIONAL_EXPRESSION",
+ "JS_CACHE_EXPRESSION": 20,
+ "20": "JS_CACHE_EXPRESSION",
+ "JS_BLOCK_STATEMENT": 21,
+ "21": "JS_BLOCK_STATEMENT",
+ "JS_TEMPLATE_LITERAL": 22,
+ "22": "JS_TEMPLATE_LITERAL",
+ "JS_IF_STATEMENT": 23,
+ "23": "JS_IF_STATEMENT",
+ "JS_ASSIGNMENT_EXPRESSION": 24,
+ "24": "JS_ASSIGNMENT_EXPRESSION",
+ "JS_SEQUENCE_EXPRESSION": 25,
+ "25": "JS_SEQUENCE_EXPRESSION",
+ "JS_RETURN_STATEMENT": 26,
+ "26": "JS_RETURN_STATEMENT"
+};
+const ElementTypes = {
+ "ELEMENT": 0,
+ "0": "ELEMENT",
+ "COMPONENT": 1,
+ "1": "COMPONENT",
+ "SLOT": 2,
+ "2": "SLOT",
+ "TEMPLATE": 3,
+ "3": "TEMPLATE"
+};
+const ConstantTypes = {
+ "NOT_CONSTANT": 0,
+ "0": "NOT_CONSTANT",
+ "CAN_SKIP_PATCH": 1,
+ "1": "CAN_SKIP_PATCH",
+ "CAN_CACHE": 2,
+ "2": "CAN_CACHE",
+ "CAN_STRINGIFY": 3,
+ "3": "CAN_STRINGIFY"
+};
+const locStub = {
+ start: { line: 1, column: 1, offset: 0 },
+ end: { line: 1, column: 1, offset: 0 },
+ source: ""
+};
+function createRoot(children, source = "") {
+ return {
+ type: 0,
+ source,
+ children,
+ helpers: /* @__PURE__ */ new Set(),
+ components: [],
+ directives: [],
+ hoists: [],
+ imports: [],
+ cached: [],
+ temps: 0,
+ codegenNode: void 0,
+ loc: locStub
+ };
+}
+function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) {
+ if (context) {
+ if (isBlock) {
+ context.helper(OPEN_BLOCK);
+ context.helper(getVNodeBlockHelper(context.inSSR, isComponent));
+ } else {
+ context.helper(getVNodeHelper(context.inSSR, isComponent));
+ }
+ if (directives) {
+ context.helper(WITH_DIRECTIVES);
+ }
+ }
+ return {
+ type: 13,
+ tag,
+ props,
+ children,
+ patchFlag,
+ dynamicProps,
+ directives,
+ isBlock,
+ disableTracking,
+ isComponent,
+ loc
+ };
+}
+function createArrayExpression(elements, loc = locStub) {
+ return {
+ type: 17,
+ loc,
+ elements
+ };
+}
+function createObjectExpression(properties, loc = locStub) {
+ return {
+ type: 15,
+ loc,
+ properties
+ };
+}
+function createObjectProperty(key, value) {
+ return {
+ type: 16,
+ loc: locStub,
+ key: shared.isString(key) ? createSimpleExpression(key, true) : key,
+ value
+ };
+}
+function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) {
+ return {
+ type: 4,
+ loc,
+ content,
+ isStatic,
+ constType: isStatic ? 3 : constType
+ };
+}
+function createInterpolation(content, loc) {
+ return {
+ type: 5,
+ loc,
+ content: shared.isString(content) ? createSimpleExpression(content, false, loc) : content
+ };
+}
+function createCompoundExpression(children, loc = locStub) {
+ return {
+ type: 8,
+ loc,
+ children
+ };
+}
+function createCallExpression(callee, args = [], loc = locStub) {
+ return {
+ type: 14,
+ loc,
+ callee,
+ arguments: args
+ };
+}
+function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) {
+ return {
+ type: 18,
+ params,
+ returns,
+ newline,
+ isSlot,
+ loc
+ };
+}
+function createConditionalExpression(test, consequent, alternate, newline = true) {
+ return {
+ type: 19,
+ test,
+ consequent,
+ alternate,
+ newline,
+ loc: locStub
+ };
+}
+function createCacheExpression(index, value, needPauseTracking = false, inVOnce = false) {
+ return {
+ type: 20,
+ index,
+ value,
+ needPauseTracking,
+ inVOnce,
+ needArraySpread: false,
+ loc: locStub
+ };
+}
+function createBlockStatement(body) {
+ return {
+ type: 21,
+ body,
+ loc: locStub
+ };
+}
+function createTemplateLiteral(elements) {
+ return {
+ type: 22,
+ elements,
+ loc: locStub
+ };
+}
+function createIfStatement(test, consequent, alternate) {
+ return {
+ type: 23,
+ test,
+ consequent,
+ alternate,
+ loc: locStub
+ };
+}
+function createAssignmentExpression(left, right) {
+ return {
+ type: 24,
+ left,
+ right,
+ loc: locStub
+ };
+}
+function createSequenceExpression(expressions) {
+ return {
+ type: 25,
+ expressions,
+ loc: locStub
+ };
+}
+function createReturnStatement(returns) {
+ return {
+ type: 26,
+ returns,
+ loc: locStub
+ };
+}
+function getVNodeHelper(ssr, isComponent) {
+ return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE;
+}
+function getVNodeBlockHelper(ssr, isComponent) {
+ return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;
+}
+function convertToBlock(node, { helper, removeHelper, inSSR }) {
+ if (!node.isBlock) {
+ node.isBlock = true;
+ removeHelper(getVNodeHelper(inSSR, node.isComponent));
+ helper(OPEN_BLOCK);
+ helper(getVNodeBlockHelper(inSSR, node.isComponent));
+ }
+}
+
+const defaultDelimitersOpen = new Uint8Array([123, 123]);
+const defaultDelimitersClose = new Uint8Array([125, 125]);
+function isTagStartChar(c) {
+ return c >= 97 && c <= 122 || c >= 65 && c <= 90;
+}
+function isWhitespace(c) {
+ return c === 32 || c === 10 || c === 9 || c === 12 || c === 13;
+}
+function isEndOfTagSection(c) {
+ return c === 47 || c === 62 || isWhitespace(c);
+}
+function toCharCodes(str) {
+ const ret = new Uint8Array(str.length);
+ for (let i = 0; i < str.length; i++) {
+ ret[i] = str.charCodeAt(i);
+ }
+ return ret;
+}
+const Sequences = {
+ Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
+ // CDATA[
+ CdataEnd: new Uint8Array([93, 93, 62]),
+ // ]]>
+ CommentEnd: new Uint8Array([45, 45, 62]),
+ // `-->`
+ ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
+ // `<\/script`
+ StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
+ // ` this.emitCodePoint(cp, consumed)
+ );
+ }
+ }
+ get inSFCRoot() {
+ return this.mode === 2 && this.stack.length === 0;
+ }
+ reset() {
+ this.state = 1;
+ this.mode = 0;
+ this.buffer = "";
+ this.sectionStart = 0;
+ this.index = 0;
+ this.baseState = 1;
+ this.inRCDATA = false;
+ this.currentSequence = void 0;
+ this.newlines.length = 0;
+ this.delimiterOpen = defaultDelimitersOpen;
+ this.delimiterClose = defaultDelimitersClose;
+ }
+ /**
+ * Generate Position object with line / column information using recorded
+ * newline positions. We know the index is always going to be an already
+ * processed index, so all the newlines up to this index should have been
+ * recorded.
+ */
+ getPos(index) {
+ let line = 1;
+ let column = index + 1;
+ const length = this.newlines.length;
+ let j = -1;
+ if (length > 100) {
+ let l = -1;
+ let r = length;
+ while (l + 1 < r) {
+ const m = l + r >>> 1;
+ this.newlines[m] < index ? l = m : r = m;
+ }
+ j = l;
+ } else {
+ for (let i = length - 1; i >= 0; i--) {
+ if (index > this.newlines[i]) {
+ j = i;
+ break;
+ }
+ }
+ }
+ if (j >= 0) {
+ line = j + 2;
+ column = index - this.newlines[j];
+ }
+ return {
+ column,
+ line,
+ offset: index
+ };
+ }
+ peek() {
+ return this.buffer.charCodeAt(this.index + 1);
+ }
+ stateText(c) {
+ if (c === 60) {
+ if (this.index > this.sectionStart) {
+ this.cbs.ontext(this.sectionStart, this.index);
+ }
+ this.state = 5;
+ this.sectionStart = this.index;
+ } else if (c === 38) {
+ this.startEntity();
+ } else if (!this.inVPre && c === this.delimiterOpen[0]) {
+ this.state = 2;
+ this.delimiterIndex = 0;
+ this.stateInterpolationOpen(c);
+ }
+ }
+ stateInterpolationOpen(c) {
+ if (c === this.delimiterOpen[this.delimiterIndex]) {
+ if (this.delimiterIndex === this.delimiterOpen.length - 1) {
+ const start = this.index + 1 - this.delimiterOpen.length;
+ if (start > this.sectionStart) {
+ this.cbs.ontext(this.sectionStart, start);
+ }
+ this.state = 3;
+ this.sectionStart = start;
+ } else {
+ this.delimiterIndex++;
+ }
+ } else if (this.inRCDATA) {
+ this.state = 32;
+ this.stateInRCDATA(c);
+ } else {
+ this.state = 1;
+ this.stateText(c);
+ }
+ }
+ stateInterpolation(c) {
+ if (c === this.delimiterClose[0]) {
+ this.state = 4;
+ this.delimiterIndex = 0;
+ this.stateInterpolationClose(c);
+ }
+ }
+ stateInterpolationClose(c) {
+ if (c === this.delimiterClose[this.delimiterIndex]) {
+ if (this.delimiterIndex === this.delimiterClose.length - 1) {
+ this.cbs.oninterpolation(this.sectionStart, this.index + 1);
+ if (this.inRCDATA) {
+ this.state = 32;
+ } else {
+ this.state = 1;
+ }
+ this.sectionStart = this.index + 1;
+ } else {
+ this.delimiterIndex++;
+ }
+ } else {
+ this.state = 3;
+ this.stateInterpolation(c);
+ }
+ }
+ stateSpecialStartSequence(c) {
+ const isEnd = this.sequenceIndex === this.currentSequence.length;
+ const isMatch = isEnd ? (
+ // If we are at the end of the sequence, make sure the tag name has ended
+ isEndOfTagSection(c)
+ ) : (
+ // Otherwise, do a case-insensitive comparison
+ (c | 32) === this.currentSequence[this.sequenceIndex]
+ );
+ if (!isMatch) {
+ this.inRCDATA = false;
+ } else if (!isEnd) {
+ this.sequenceIndex++;
+ return;
+ }
+ this.sequenceIndex = 0;
+ this.state = 6;
+ this.stateInTagName(c);
+ }
+ /** Look for an end tag. For and