blob: 1b9f9001249b95769b771963bb8ba836196d68db [file] [log] [blame]
{"version":3,"sources":["webpack://echartsExampleTransformTs/./node_modules/lines-and-columns/dist/index.mjs","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/CJSImportProcessor.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/HelperManager.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/NameManager.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/Options-gen-types.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/Options.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/TokenProcessor.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/computeSourceMap.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/identifyShadowedGlobals.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/index.mjs","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/index.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/plugins/flow.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/plugins/jsx/index.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/plugins/jsx/xhtml.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/plugins/types.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/plugins/typescript.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/tokenizer/index.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/tokenizer/keywords.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/tokenizer/readWord.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/tokenizer/readWordTree.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/tokenizer/state.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/tokenizer/types.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/traverser/base.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/traverser/expression.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/traverser/index.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/traverser/lval.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/traverser/statement.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/traverser/util.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/util/charcodes.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/util/identifier.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/parser/util/whitespace.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/CJSImportTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/ESMImportTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/FlowTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/JSXTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/NumericSeparatorTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/OptionalCatchBindingTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/OptionalChainingNullishTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/ReactDisplayNameTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/ReactHotLoaderTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/RootTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/Transformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/transformers/TypeScriptTransformer.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/elideImportEquals.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/formatTokens.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/getClassInfo.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/getDeclarationInfo.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/getIdentifierNames.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/getJSXPragmaInfo.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/getNonTypeIdentifiers.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/getTSImportedNames.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/isAsyncOperation.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/isIdentifier.js","webpack://echartsExampleTransformTs/./node_modules/sucrase/dist/util/shouldElideDefaultExport.js","webpack://echartsExampleTransformTs/./node_modules/ts-interface-checker/dist/index.js","webpack://echartsExampleTransformTs/./node_modules/ts-interface-checker/dist/types.js","webpack://echartsExampleTransformTs/./node_modules/ts-interface-checker/dist/util.js","webpack://echartsExampleTransformTs/./src/editor/transformTs.js","webpack://echartsExampleTransformTs/webpack/bootstrap","webpack://echartsExampleTransformTs/webpack/runtime/define property getters","webpack://echartsExampleTransformTs/webpack/runtime/hasOwnProperty shorthand","webpack://echartsExampleTransformTs/webpack/runtime/make namespace object","webpack://echartsExampleTransformTs/webpack/startup"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iEAAe,eAAe,EAAC;;;;;;;;;;;ACvDlB,8CAA6C,CAAC,YAAY,EAAC;;;AAGxE,iBAAiB,mBAAO,CAAC,iFAAoB;AAC7C,gBAAgB,mBAAO,CAAC,6FAA6B;AACrD,aAAa,mBAAO,CAAC,uFAA0B;;AAE/C,6BAA6B,mBAAO,CAAC,+FAA8B;;;;;;;;;;;;;;;;;AAiBnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+BAA+B,qBAAqB,+EAA+E,uBAAuB,iEAAiE,mCAAmC,+CAA+C,gDAAgD,gDAAgD,gDAAgD;;AAEnc;AACA,mBAAmB,+BAA+B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,KAAK,GAAG;AAC5D;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,+BAA+B,kBAAkB,cAAc,KAAK,GAAG;AACvE;AACA;AACA;AACA;AACA,iBAAiB,2DAA2D,GAAG,kBAAkB;AACjG,iCAAiC,aAAa,KAAK,YAAY;AAC/D;AACA,OAAO;AACP,+BAA+B,oBAAoB,KAAK;AACxD;AACA,UAAU,GAAG,kBAAkB,EAAE;AACjC,OAAO;AACP,+BAA+B,oBAAoB,KAAK;AACxD;AACA,UAAU,GAAG,kBAAkB,EAAE;AACjC;;AAEA,kBAAkB,wBAAwB;AAC1C,2BAA2B;AAC3B;AACA,UAAU,GAAG,kBAAkB,KAAK,UAAU,MAAM,aAAa,GAAG;AACpE;AACA;AACA,mCAAmC,eAAe,KAAK,qBAAqB;AAC5E;AACA;AACA,2BAA2B;AAC3B;AACA,UAAU,GAAG,kBAAkB,EAAE;AACjC;;AAEA;;AAEA;AACA,wDAAwD,oBAAoB;AAC5E;AACA,kBAAkB,wBAAwB;AAC1C,sDAAsD,kBAAkB,GAAG,aAAa;AACxF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,8BAA8B;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,EAAE,KAAK;AAC7C,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,iEAAiE,WAAW;AAC5E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC;;AAEA;AACA;AACA,KAAK;AACL;AACA,kBAAkB,iDAAiD;AACnE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,2BAA2B,wBAAwB;AACnD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,6CAA6C,0CAA0C;AACvF;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,aAAa;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACxcJ,8CAA6C,CAAC,YAAY,EAAC;;AAExE;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,iDAAiD,+CAA+C;AAChG;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sCAAsC;AACrF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ,8BAA8B,+BAA+B;;AAE7D;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qBAAqB;;;;;;;;;;;ACrKV,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;AACvK,0BAA0B,mBAAO,CAAC,yFAA2B,EAAE;;AAE/D;AACA,cAAc;;AAEd,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AC1BJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,wCAAwC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,wBAAwB,EAAE,EAAE,EAAE,sBAAsB,eAAe,EAAE,EAAE;AAC3V;AACA;AACA,0BAA0B,mBAAO,CAAC,+EAAsB,EAAE;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,iBAAiB;;AAEpB;AACA;AACA,CAAC,EAAE,CAAC,wBAAwB;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,CAAC,eAAe;;AAEnB;AACA;AACA;AACA;AACA;AACA,eAAgB;;;;;;;;;;;AClCH,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB,EAAE,0BAA0B,mBAAO,CAAC,+EAAsB;AACjO,uBAAuB,mBAAO,CAAC,6EAAqB,EAAE;;AAEtD,OAAO,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8C/B;AACA;AACA,CAAC,CAAC,uBAAuB;;;;;;;;;;;ACnDZ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;;;AAGvK,aAAa,mBAAO,CAAC,uFAA0B;AAC/C,wBAAwB,mBAAO,CAAC,qFAAyB,EAAE;;;;;;;AAO3D;AACA,aAAa;AACb,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,qBAAqB,mCAAmC,mCAAmC,2CAA2C;;AAE7J;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oCAAoC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kCAAkC;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AC7SJ,8CAA6C,CAAC,YAAY,EAAC;AACxE,iBAAiB,mBAAO,CAAC,qFAAyB;;;;;;;;;;;;AAYlD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,iBAAiB;AACpB;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AClCJ,8CAA6C,CAAC,YAAY,EAAC;;;;AAIxE,iBAAiB,mBAAO,CAAC,iFAAoB;;AAE7C,aAAa,mBAAO,CAAC,uFAA0B;;;AAG/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0BAA0B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,EAAE;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,yBAAyB;AAC9D;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7FsD;AACA;AACR;AACkB;AACxB;AACE;AACX;;AAEe;AACe;AACd;AACY;;;;;;;;;;;;;;;;;;;;AAoBpD;AACP;AACA,SAAS,yFAAkC;AAC3C;;AAEO;AACP,EAAE,yDAAe;AACjB;AACA;AACA,4BAA4B,kEAAe;AAC3C;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAgB;AACnC;AACA;AACA;AACA,GAAG;AACH;AACA,wCAAwC,iBAAiB,IAAI,UAAU;AACvE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO;AACP;AACA,SAAS,2DAAY;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8CAAK;AACpB;AACA;;AAEA,0BAA0B,iDAAW;AACrC,4BAA4B,yDAAa;AACzC,6BAA6B,oDAAc;AAC3C;;AAEA;AACA;AACA,0BAA0B,wDAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAuB;AAC3B;AACA;AACA;AACA,GAAG;AACH,IAAI,iEAAuB,yBAAyB,kEAAkB;AACtE;AACA,UAAU;AACV;;;;;;;;;;;ACrHa,8CAA6C,CAAC,YAAY,EAAC;;AAExE,YAAY,mBAAO,CAAC,8EAAkB;AACtC,aAAa,mBAAO,CAAC,gFAAmB;;AAExC;;;;AAIA;AACA;AACA;AACA;AACA,CAAC,CAAC,YAAY;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,aAAa;;;;;;;;;;;AC9BF,8CAA6C,CAAC,YAAY,EAAC,CAAC;;;;;;;;;;;AAWzE,aAAa,mBAAO,CAAC,iFAAoB;AACzC,gBAAgB,mBAAO,CAAC,uFAAuB;AAC/C,aAAa,mBAAO,CAAC,iFAAoB;AACzC,YAAY,mBAAO,CAAC,+EAAmB;;;;;;;;;;;;;;AAcvC,kBAAkB,mBAAO,CAAC,2FAAyB;;;;;;;;;AASnD,iBAAiB,mBAAO,CAAC,yFAAwB;;;;;;;;;;AAUjD,YAAY,mBAAO,CAAC,+EAAmB;;AAEvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,yCAAyC;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC,CAAC,+BAA+B;;AAEjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,yBAAyB;;AAE3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,CAAC,sCAAsC;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC,CAAC,0BAA0B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kCAAkC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,6BAA6B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oCAAoC;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wCAAwC;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gDAAgD;;AAElD;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,kCAAkC;;AAEpC;AACA;AACA,CAAC,CAAC,iCAAiC;;AAEnC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,2BAA2B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC,CAAC,gCAAgC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kCAAkC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wCAAwC;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sCAAsC;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,uBAAuB,SAAS;AAClD,KAAK;AACL,kBAAkB;AAClB;AACA;AACA,GAAG;AACH,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gCAAgC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oCAAoC;;AAEtC;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAA6B;;AAE/B,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kDAAkD;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,CAAC,4BAA4B;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sBAAsB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,CAAC,2BAA2B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACthCa,8CAA6C,CAAC,YAAY,EAAC;;;;;;;;;AASxE,aAAa,mBAAO,CAAC,oFAAuB;AAC5C,aAAa,mBAAO,CAAC,oFAAuB;AAC5C,YAAY,mBAAO,CAAC,kFAAsB;AAC1C,kBAAkB,mBAAO,CAAC,8FAA4B;AACtD,YAAY,mBAAO,CAAC,kFAAsB;AAC1C,iBAAiB,mBAAO,CAAC,kFAAsB;AAC/C,kBAAkB,mBAAO,CAAC,oFAAuB;AACjD,kBAAkB,mBAAO,CAAC,+EAAe;;AAEzC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;AACA;AACA;;;;;;;;;;;ACnTa,8CAA6C,CAAC,YAAY,EAAC,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAgB;;;;;;;;;;;AC/PH,8CAA6C,CAAC,YAAY,EAAC,CAAC,aAAa,mBAAO,CAAC,iFAAoB;AAClH,aAAa,mBAAO,CAAC,iFAAoB;AACzC,YAAY,mBAAO,CAAC,+EAAmB;AACvC,kBAAkB,mBAAO,CAAC,2FAAyB;AACnD,YAAY,mBAAO,CAAC,kEAAQ;AAC5B,kBAAkB,mBAAO,CAAC,8EAAc;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAA6B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC,CAAC,2BAA2B;;;;;;;;;;;ACtChB,8CAA6C,CAAC,YAAY,EAAC;;;;;;;;;AASxE,aAAa,mBAAO,CAAC,iFAAoB;AACzC,gBAAgB,mBAAO,CAAC,uFAAuB;AAC/C,aAAa,mBAAO,CAAC,iFAAoB;AACzC,YAAY,mBAAO,CAAC,+EAAmB;;;;;;;;;;;;;;;;AAgBvC,kBAAkB,mBAAO,CAAC,2FAAyB;AACnD,YAAY,mBAAO,CAAC,+EAAmB;;;;;;;;;;;;AAYvC,iBAAiB,mBAAO,CAAC,yFAAwB;;;;;;;;;;;;AAYjD,YAAY,mBAAO,CAAC,+EAAmB;AACvC,WAAW,mBAAO,CAAC,sEAAO;;AAE1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,gCAAgC;;AAElC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B,WAAW;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,mCAAmC;AACnC;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB,2BAA2B;AAC3B,+CAA+C;AAC/C,CAAC,oCAAoC;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,gCAAgC;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAA6B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mBAAmB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iCAAiC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,4BAA4B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iCAAiC;;AAEnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sCAAsC;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,CAAC,4BAA4B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,CAAC,oCAAoC;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA,uCAAuC,yBAAyB;AAChE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,gCAAgC;;AAElC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,GAAG;AACH,mBAAmB;AACnB;AACA;AACA;AACA,GAAG;AACH,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,yCAAyC;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kCAAkC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAA6B;;AAE/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,yCAAyC;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kCAAkC;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC,CAAC,gCAAgC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8BAA8B;;AAEhC;AACA;AACA,CAAC,CAAC,gCAAgC;;AAElC;AACA;AACA,CAAC,CAAC,kCAAkC;;AAEpC,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2BAA2B;;AAE7B,uFAAuF;AACvF;AACA;AACA;AACA;AACA,CAAC,CAAC,gDAAgD;;AAElD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,0BAA0B;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,CAAC,iCAAiC;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,oCAAoC;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oBAAoB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sCAAsC;;AAExC;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sCAAsC;;;;;;;;;;;ACl7C3B,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB,EAAE;;AAEzK,YAAY,mBAAO,CAAC,+EAAmB;AACvC,YAAY,mBAAO,CAAC,+EAAmB;AACvC,iBAAiB,mBAAO,CAAC,+EAAmB;AAC5C,kBAAkB,mBAAO,CAAC,iFAAoB;AAC9C,kBAAkB,mBAAO,CAAC,iFAAoB;AAC9C,gBAAgB,mBAAO,CAAC,4EAAY;AACpC,gBAAgB,mBAAO,CAAC,4EAAY,EAAE;AACtC,aAAa,mBAAO,CAAC,sEAAS;;AAE9B,mBAAmB;AACnB,mBAAmB;AACnB,kCAAkC;AAClC,+CAA+C;AAC/C,4DAA4D;AAC5D,+DAA+D;AAC/D,wEAAwE;AACxE,0FAA0F;AAC1F,6FAA6F;AAC7F,oEAAoE;AACpE;AACA,gCAAgC;AAChC,gDAAgD;AAChD,0CAA0C;AAC1C,2BAA2B,WAAW,cAAc;AACpD,qCAAqC;AACrC,CAAC,qBAAqB,sBAAsB,sBAAsB;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qBAAqB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gCAAgC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAA6B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gCAAgC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mCAAmC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oCAAoC;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AASA;AACA;;AAEA;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,CAAC,CAAC,aAAa;;AAEf;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,YAAY;;AAEd;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,yBAAyB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8BAA8B;;AAEhC;AACA,gEAAgE,+BAA+B;AAC/F;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA,CAAC,CAAC,sBAAsB;;AAExB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,WAAW;;AAEb;AACA;AACA,CAAC,CAAC,aAAa;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qBAAqB;;AAEvB;;;AAGA;AACA;AACA;AACA;AACA,CAAC,CAAC,sBAAsB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,+BAA+B;;AAEjC;AACA;AACA,CAAC,CAAC,sBAAsB;;AAExB;AACA;AACA;AACA;AACA,CAAC,CAAC,2BAA2B;;AAE7B;AACA;AACA,CAAC,CAAC,yBAAyB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iBAAiB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC,CAAC,iBAAiB;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mBAAmB;;AAErB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yDAAyD,0BAA0B;AACnF,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC,CAAC,gBAAgB;;;;;;;;;;;AC54BL,8CAA6C,CAAC,YAAY,EAAC,CAAC,sBAAsB;AAC/F,iBAAiB;AACjB,6BAA6B;AAC7B,4BAA4B;AAC5B,2BAA2B;AAC3B,8BAA8B;AAC9B,4BAA4B;AAC5B,6BAA6B;AAC7B,mCAAmC;AACnC,oCAAoC;AACpC,6BAA6B;AAC7B,6BAA6B;AAC7B,6BAA6B;AAC7B,yBAAyB;AACzB,2BAA2B;AAC3B,kCAAkC;AAClC,iCAAiC;AACjC,gCAAgC;AAChC,6BAA6B;AAC7B,yBAAyB;AACzB,6BAA6B;AAC7B,8BAA8B;AAC9B,iCAAiC;AACjC,6BAA6B;AAC7B,0BAA0B;AAC1B,+BAA+B;AAC/B,kCAAkC;AAClC,gCAAgC;AAChC,6BAA6B;AAC7B,gCAAgC;AAChC,iCAAiC;AACjC,4BAA4B;AAC5B,2BAA2B;AAC3B,4BAA4B;AAC5B,4BAA4B;AAC5B,CAAC,wBAAwB,yBAAyB,yBAAyB;;;;;;;;;;;ACnC9D,8CAA6C,CAAC,YAAY,EAAC,CAAC,YAAY,mBAAO,CAAC,+EAAmB;AAChH,iBAAiB,mBAAO,CAAC,+EAAmB;AAC5C,kBAAkB,mBAAO,CAAC,iFAAoB;AAC9C,aAAa,mBAAO,CAAC,sEAAS;AAC9B,oBAAoB,mBAAO,CAAC,oFAAgB;AAC5C,aAAa,mBAAO,CAAC,sEAAS;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AC/DJ,8CAA6C,CAAC,YAAY,EAAC,CAAC;AACzE,gBAAgB,mBAAO,CAAC,4EAAY;AACpC,aAAa,mBAAO,CAAC,sEAAS;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,CAAC,sBAAsB;;;;;;;;;;;AC5lBb,8CAA6C,CAAC,YAAY,EAAC;AACxE,gBAAgB,mBAAO,CAAC,4EAAY;AACpC,aAAa,mBAAO,CAAC,sEAAS;;AAE9B;;;;;AAKA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,aAAa;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yCAAyC,6CAA6C,iCAAiC,iCAAiC,eAAe,iBAAiB,2CAA2C,mBAAmB,eAAe,qBAAqB,6BAA6B;AAC7T,CAAC,CAAC,qBAAqB;;AAEvB,cAAc,eAAe,mCAAmC,mCAAmC,mCAAmC,mCAAmC,mCAAmC,mCAAmC,mCAAmC,mCAAmC,mCAAmC,oCAAoC,oCAAoC,oCAAoC;AACpc;AACA,YAAY;;AAEZ;AACA,aAAa;;AAEb;AACA,aAAa;;AAEb;AACA,aAAa;;AAEb;AACA,aAAa;;AAEb;AACA,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;;AAEb,cAAc;AACd,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACnGJ,8CAA6C,CAAC,YAAY,EAAC,CAAC;AACzE;AACA;AACA;AACA,cAAc;AACd,wCAAwC;AACxC,8BAA8B;AAC9B,4BAA4B;AAC5B,2BAA2B;AAC3B,sCAAsC;AACtC,2BAA2B;AAC3B,4BAA4B;;AAE5B,gBAAgB,2CAA2C;AAC3D,qBAAqB,oDAAoD;AACzE,uBAAuB,uDAAuD;AAC9E,sBAAsB,oDAAoD;AAC1E,sBAAsB,oDAAoD;AAC1E,oBAAoB,8CAA8C;AAClE,mBAAmB,2CAA2C;AAC9D,wBAAwB,0DAA0D;AAClF,wBAAwB,0DAA0D;AAClF,sBAAsB,oDAAoD;AAC1E,yBAAyB,6DAA6D,KAAK;AAC3F,sBAAsB,oDAAoD;AAC1E,yBAAyB,6DAA6D;AACtF,sBAAsB,oDAAoD;AAC1E,sBAAsB,oDAAoD;AAC1E,qBAAqB,iDAAiD;AACtE,oBAAoB,8CAA8C;AAClE,qBAAqB,iDAAiD;AACtE,2BAA2B,mEAAmE;AAC9F,mBAAmB,2CAA2C;AAC9D,yBAAyB,0DAA0D;AACnF,4BAA4B,mEAAmE;AAC/F,sBAAsB,iDAAiD;AACvE,yBAAyB,0DAA0D;AACnF,yBAAyB,0DAA0D;AACnF,0BAA0B,6DAA6D;AACvF,6BAA6B,sEAAsE;AACnG,mBAAmB,wCAAwC;AAC3D,qBAAqB,8CAA8C;AACnE,mBAAmB,wCAAwC;AAC3D,uBAAuB,oDAAoD;AAC3E,0BAA0B,6DAA6D;AACvF,2BAA2B,gEAAgE;AAC3F,qBAAqB,8CAA8C;AACnE,sBAAsB,iDAAiD;AACvE,yBAAyB,0DAA0D;AACnF,kCAAkC,qFAAqF;AACvH,0BAA0B,6DAA6D;AACvF,2BAA2B,gEAAgE;AAC3F,0BAA0B,6DAA6D;AACvF,2BAA2B,gEAAgE;AAC3F,2BAA2B,gEAAgE;AAC3F,yBAAyB,0DAA0D;AACnF,yBAAyB,0DAA0D;AACnF,4BAA4B,mEAAmE;AAC/F,kCAAkC,qFAAqF;AACvH,yBAAyB,0DAA0D;AACnF,qBAAqB,8CAA8C;AACnE,sBAAsB,iDAAiD;AACvE,uBAAuB,oDAAoD;AAC3E,qBAAqB,8CAA8C;AACnE,sBAAsB,iDAAiD;AACvE,yBAAyB,0DAA0D;AACnF,wBAAwB,uDAAuD;AAC/E,wBAAwB,uDAAuD;AAC/E,4BAA4B,mEAAmE;AAC/F,0BAA0B,6DAA6D;AACvF,mCAAmC,wFAAwF;AAC3H,iCAAiC,kFAAkF;AACnH,uBAAuB,oDAAoD;AAC3E,sBAAsB,iDAAiD;AACvE,uBAAuB,oDAAoD;AAC3E,0BAA0B,6DAA6D;AACvF,0BAA0B,6DAA6D;AACvF,yBAAyB,0DAA0D;AACnF,oBAAoB,2CAA2C;AAC/D,sBAAsB,iDAAiD;AACvE,yBAAyB,0DAA0D;AACnF,qBAAqB,8CAA8C;AACnE,0BAA0B,6DAA6D;AACvF,oBAAoB,2CAA2C;AAC/D,wBAAwB,uDAAuD;AAC/E,wBAAwB,uDAAuD;AAC/E,uBAAuB,oDAAoD;AAC3E,qBAAqB,8CAA8C;AACnE,qBAAqB,8CAA8C;AACnE,qBAAqB,8CAA8C;AACnE,uBAAuB,oDAAoD;AAC3E,uBAAuB,oDAAoD;AAC3E,sBAAsB,iDAAiD;AACvE,qBAAqB,8CAA8C;AACnE,sBAAsB,iDAAiD;AACvE,uBAAuB,oDAAoD;AAC3E,uBAAuB,oDAAoD;AAC3E,yBAAyB,0DAA0D;AACnF,wBAAwB,uDAAuD;AAC/E,wBAAwB,uDAAuD;AAC/E,uBAAuB,oDAAoD;AAC3E,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,uBAAuB,oDAAoD;AAC3E,oBAAoB,2CAA2C;AAC/D,4BAA4B,mEAAmE;AAC/F,wBAAwB,uDAAuD;AAC/E,sBAAsB,iDAAiD;AACvE,wBAAwB,uDAAuD;AAC/E,uBAAuB,oDAAoD;AAC3E,qBAAqB,8CAA8C;AACnE,qBAAqB,8CAA8C;AACnE,yBAAyB,0DAA0D;AACnF,0BAA0B,6DAA6D;AACvF,0BAA0B,6DAA6D;AACvF,wBAAwB,uDAAuD;AAC/E,wBAAwB,uDAAuD;AAC/E,yBAAyB,0DAA0D;AACnF,2BAA2B,gEAAgE;AAC3F,oBAAoB,2CAA2C;AAC/D,sBAAsB,iDAAiD;AACvE,sBAAsB,iDAAiD;AACvE,4BAA4B,mEAAmE;AAC/F,CAAC,gBAAgB,iBAAiB,iBAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA,eAAe;AACf;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;;;;;;;;;;AC7VZ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB,EAAE,aAAa,mBAAO,CAAC,iFAAoB,EAAE;AACpN,iBAAiB,mBAAO,CAAC,+EAAmB;;AAE5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA;AACA;AACA,0BAA0B,SAAS,GAAG,WAAW;AACjD;AACA;AACA;AACA,CAAC,CAAC,oBAAoB;;AAEtB;;;AAGA;AACA;AACA;AACA;AACA,CAAC,CAAC,WAAW;;AAEb;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,qBAAqB;AACvB,EAAE,oBAAoB;AACtB,EAAE,2BAA2B;AAC7B,EAAE,qBAAqB;AACvB,CAAC,CAAC,kBAAkB;;;;;;;;;;;AC3DP,8CAA6C,CAAC,YAAY,EAAC,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AAYA,YAAY,mBAAO,CAAC,2EAAiB;AACrC,aAAa,mBAAO,CAAC,qFAAsB;AAC3C,aAAa,mBAAO,CAAC,6EAAkB;;;;;;;;;;;AAWvC,kBAAkB,mBAAO,CAAC,uFAAuB;;;;;;;;;;;;AAYjD,cAAc,mBAAO,CAAC,iFAAoB;AAC1C,gBAAgB,mBAAO,CAAC,uFAAuB;AAC/C,aAAa,mBAAO,CAAC,iFAAoB;AACzC,cAAc,mBAAO,CAAC,iFAAoB;AAC1C,iBAAiB,mBAAO,CAAC,+EAAmB;AAC5C,kBAAkB,mBAAO,CAAC,iFAAoB;AAC9C,YAAY,mBAAO,CAAC,oEAAQ;;;;;;;AAO5B,YAAY,mBAAO,CAAC,oEAAQ;;;;;;;AAO5B,iBAAiB,mBAAO,CAAC,8EAAa;;;;;;;;AAQtC,YAAY,mBAAO,CAAC,oEAAQ;;AAE5B;;AAEA;AACA;AACA;AACA,CAAC,CAAC,iBAAiB;;AAEnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,4BAA4B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,4BAA4B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2BAA2B;;AAE7B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC,CAAC,2BAA2B;;AAE7B;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,0BAA0B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC,CAAC,oCAAoC;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,qBAAqB;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC,CAAC,oBAAoB;;AAEtB;AACA;AACA;AACA;AACA,CAAC,CAAC,4BAA4B;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,kBAAkB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,mCAAmC;AACnC;AACA;AACA;AACA,CAAC,CAAC,qBAAqB;;AAEvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,CAAC,CAAC,gBAAgB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,CAAC,CAAC,yBAAyB;;AAE3B;AACA;AACA;;AAEA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mBAAmB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,4BAA4B;;AAE9B;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,kCAAkC;;AAEpC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,yBAAyB;;AAE3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC99Ba,8CAA6C,CAAC,YAAY,EAAC;AACxE,aAAa,mBAAO,CAAC,iFAAoB;AACzC,iBAAiB,mBAAO,CAAC,+EAAmB;AAC5C,YAAY,mBAAO,CAAC,oEAAQ;AAC5B,iBAAiB,mBAAO,CAAC,8EAAa;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,iBAAiB;;;;;;;;;;;ACjBN,8CAA6C,CAAC,YAAY,EAAC,CAAC,YAAY,mBAAO,CAAC,2EAAiB;;;;;AAK9G,kBAAkB,mBAAO,CAAC,uFAAuB;;;;;;;;AAQjD,aAAa,mBAAO,CAAC,iFAAoB;AACzC,gBAAgB,mBAAO,CAAC,uFAAuB;AAC/C,aAAa,mBAAO,CAAC,iFAAoB;AACzC,YAAY,mBAAO,CAAC,oEAAQ;AAC5B,kBAAkB,mBAAO,CAAC,gFAAc;AACxC,YAAY,mBAAO,CAAC,oEAAQ;;AAE5B;AACA;AACA;AACA,CAAC,CAAC,mBAAmB;;AAErB;AACA;AACA;AACA,CAAC,CAAC,iBAAiB;;AAEnB;AACA;AACA;AACA,CAAC,CAAC,8BAA8B;;AAEhC;AACA;AACA;AACA,CAAC,CAAC,+BAA+B;;AAEjC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC,CAAC,kCAAkC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,yBAAyB;;;;;;;;;;;AC7Jd,8CAA6C,CAAC,YAAY,EAAC,CAAC;;AAEzE,aAAa,mBAAO,CAAC,6DAAU;;;;;;;;;;;;;;;;AAgB/B,YAAY,mBAAO,CAAC,2EAAiB;;;;;;;;;;;;;;;;;;AAkBrC,kBAAkB,mBAAO,CAAC,uFAAuB;;;;;;;;;;;;AAYjD,iBAAiB,mBAAO,CAAC,2EAAc;AACvC,gBAAgB,mBAAO,CAAC,uFAAuB;AAC/C,aAAa,mBAAO,CAAC,iFAAoB;AACzC,aAAa,mBAAO,CAAC,iFAAoB;AACzC,iBAAiB,mBAAO,CAAC,+EAAmB;AAC5C,YAAY,mBAAO,CAAC,oEAAQ;;;;;;;;;;;;AAY5B,kBAAkB,mBAAO,CAAC,gFAAc;;;;;;AAMxC,YAAY,mBAAO,CAAC,oEAAQ;;;;;;;;;;AAU5B,YAAY,mBAAO,CAAC,oEAAQ;;AAE5B;AACA;AACA;AACA;AACA,2DAA2D,uBAAuB;AAClF;AACA;AACA,CAAC,CAAC,qBAAqB;;AAEvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sBAAsB;;AAExB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,wCAAwC;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,CAAC,yBAAyB;;AAE3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kBAAkB;;AAEpB;AACA;AACA;AACA;AACA,CAAC,CAAC,sBAAsB;;AAExB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,qBAAqB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2BAA2B;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kBAAkB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,CAAC,8BAA8B;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oCAAoC;;AAEtC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0BAA0B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA,CAAC,CAAC,mBAAmB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,uBAAuB;;AAEzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC,CAAC,2BAA2B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,YAAY;AACzB;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAA6B;;AAE/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,mBAAmB;;AAErB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,YAAY;AACvC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC3nCa,8CAA6C,CAAC,YAAY,EAAC,CAAC,aAAa,mBAAO,CAAC,iFAAoB;;AAElH,aAAa,mBAAO,CAAC,iFAAoB;AACzC,iBAAiB,mBAAO,CAAC,+EAAmB;AAC5C,YAAY,mBAAO,CAAC,oEAAQ;;AAE5B;;AAEA;AACA;AACA;AACA,CAAC,CAAC,oBAAoB;;AAEtB;AACA;AACA;AACA,CAAC,CAAC,6BAA6B;;AAE/B;AACA;AACA;AACA,CAAC,CAAC,qBAAqB;;AAEvB;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA;AACA,CAAC,CAAC,0BAA0B;;AAE5B;AACA;AACA;AACA,0BAA0B,uBAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAA6B;;AAE/B;AACA;AACA,CAAC,CAAC,wBAAwB;;AAE1B;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,CAAC,CAAC,iBAAiB;;AAEnB;AACA;AACA;AACA;AACA;AACA,8CAA8C,0CAA0C;AACxF;AACA,CAAC,CAAC,cAAc;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,kBAAkB;;;;;;;;;;;ACvFP,8CAA6C,CAAC,YAAY,EAAC,CAAC,cAAc;AACvF,sBAAsB;AACtB,sBAAsB,0DAA0D;AAChF,4BAA4B,4EAA4E;AACxG,sBAAsB;AACtB,mBAAmB;AACnB,6BAA6B,+EAA+E;AAC5G,2BAA2B,yEAAyE;AACpG,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,yBAAyB,mEAAmE;AAC5F,uBAAuB,6DAA6D;AACpF,wBAAwB,gEAAgE;AACxF,6BAA6B,+EAA+E;AAC5G,8BAA8B,kFAAkF;AAChH,sBAAsB,0DAA0D;AAChF,sBAAsB,0DAA0D;AAChF,mBAAmB,iDAAiD;AACpE,kBAAkB,8CAA8C;AAChE,iBAAiB,2CAA2C;AAC5D,mBAAmB,iDAAiD;AACpE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,oBAAoB,oDAAoD;AACxE,mBAAmB,iDAAiD;AACpE,uBAAuB,6DAA6D,OAAO;AAC3F,sBAAsB,0DAA0D;AAChF,sBAAsB,0DAA0D;AAChF,yBAAyB,mEAAmE;AAC5F,0BAA0B,sEAAsE;AAChG,oBAAoB,oDAAoD;AACxE,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,+BAA+B,qFAAqF;AACpH,uBAAuB,6DAA6D;AACpF,gCAAgC,wFAAwF;AACxH,mBAAmB,iDAAiD;AACpE,wBAAwB,gEAAgE;AACxF,yBAAyB,mEAAmE;AAC5F,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,wBAAwB,gEAAgE;AACxF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,yBAAyB,gEAAgE;AACzF,6BAA6B,4EAA4E,OAAO;AAChH,0BAA0B,mEAAmE;AAC7F,8BAA8B,+EAA+E,OAAO;AACpH,oBAAoB,iDAAiD;AACrE,+BAA+B;AAC/B;AACA,8BAA8B,4EAA4E;AAC1G,6BAA6B;AAC7B,kCAAkC;AAClC,CAAC,gBAAgB,iBAAiB,iBAAiB;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACjHJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,iBAAiB,mBAAO,CAAC,yEAAa;AAC/G,kBAAkB,mBAAO,CAAC,2EAAc;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,CAAC,0BAA0B;AAC7E,eAAe,SAAS;AACxB;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAkC;AAClC,gCAAkC;;AAElC,gEAAgE,CAAC,2BAA2B;AAC5F,+CAA+C,wCAAwC;AACvF;AACA;;;;;;;;;;;ACjCa,8CAA6C,CAAC,YAAY,EAAC,CAAC,iBAAiB,mBAAO,CAAC,yEAAa;;AAE/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,wBAAwB;;AAE3B,wDAAwD,CAAC,sBAAsB;;AAE/E,6CAA6C,CAAC,qBAAqB;AACnE;AACA;AACA;;;;;;;;;;;AChCa,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;;AAEvK,iBAAiB,mBAAO,CAAC,kFAAqB;AAC9C,gBAAgB,mBAAO,CAAC,8FAA8B;AACtD,aAAa,mBAAO,CAAC,wFAA2B;;AAEhD,yBAAyB,mBAAO,CAAC,wFAA2B,EAAE;;;;AAI9D,0BAA0B,mBAAO,CAAC,0FAA4B,EAAE;AAChE,gCAAgC,mBAAO,CAAC,sGAAkC,EAAE;;;AAG5E,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA;AACA;AACA;AACA,aAAa;AACb,cAAc;AACd,cAAc;;;AAGd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uCAAuC,qBAAqB,uCAAuC,+BAA+B,2DAA2D,uEAAuE,iEAAiE,iDAAiD,kDAAkD;AACpb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+DAA+D,YAAY,EAAE;AAC7E;AACA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,IAAI;AACtB;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY;AAChD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,wCAAwC,YAAY;AACpD;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,WAAW,IAAI,YAAY;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,sFAAsF;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,kBAAkB;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kBAAkB;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,KAAK,KAAK,kBAAkB,KAAK,KAAK,QAAQ,KAAK;AACtF,KAAK;AACL,mCAAmC,KAAK,KAAK,kBAAkB,KAAK,KAAK,QAAQ,KAAK;AACtF,KAAK;AACL,8CAA8C,aAAa;AAC3D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,MAAM;AACzD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,MAAM;AACzD,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA,sCAAsC,gBAAgB;AACtD;AACA,mCAAmC,eAAe;AAClD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,WAAW,QAAQ,KAAK,QAAQ;AAC7D;;AAEA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA,OAAO,4CAA4C,KAAK;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,0DAA0D,KAAK;AAC/D;AACA;AACA,6BAA6B,KAAK,IAAI,YAAY;AAClD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,uCAAuC,KAAK,KAAK,MAAM;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,KAAK,KAAK,MAAM;AACvD;;AAEA;AACA;AACA,aAAa;AACb;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,yCAAyC,aAAa,KAAK,2BAA2B;AACtF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,6CAA6C,2CAA2C;AACxF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AC5xBJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;;AAEvK,gBAAgB,mBAAO,CAAC,8FAA8B;AACtD,aAAa,mBAAO,CAAC,wFAA2B;;AAEhD,yBAAyB,mBAAO,CAAC,wFAA2B,EAAE;;;;AAI9D,0BAA0B,mBAAO,CAAC,0FAA4B,EAAE;AAChE,6BAA6B,mBAAO,CAAC,gGAA+B;AACpE,gCAAgC,mBAAO,CAAC,sGAAkC,EAAE;;AAE5E,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qBAAqB,+BAA+B,2DAA2D;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD;AACpD;AACA,sCAAsC,gBAAgB;AACtD;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AC1UJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;;AAEvK,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA;AACA,YAAY,uCAAuC;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AChBJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;;;AAGvK,aAAa,mBAAO,CAAC,4FAA6B,EAAE;AACpD,aAAa,mBAAO,CAAC,wFAA2B;AAChD,iBAAiB,mBAAO,CAAC,sFAA0B;;AAEnD,wBAAwB,mBAAO,CAAC,sFAA0B,EAAE;;AAE5D,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA;;AAEA;AACA,YAAY;AACZ,aAAa;AACb,aAAa;;;AAGb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uCAAuC,qBAAqB,uCAAuC,+BAA+B,uBAAuB,2CAA2C,4CAA4C;AAC5P;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,qBAAqB,KAAK,6CAA6C;AAC7F,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,YAAY,0BAA0B,gBAAgB,YAAY;AACpG;AACA;AACA,mCAAmC,EAAE,UAAU;AAC/C,OAAO;AACP;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,iCAAiC,UAAU;AAC3C,KAAK;AACL,+BAA+B;AAC/B;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,QAAQ;AAC3C,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oCAAoC,YAAY,EAAE,gBAAgB;AAClE;AACA;;AAEA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,EAAE,qBAAqB;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,+BAA+B,EAAE,6BAA6B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,2BAA2B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,aAAa,aAAa;AAC1B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,UAAU;AACV;;;;;;;;;;;AC7Ya,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB,EAAE,aAAa,mBAAO,CAAC,wFAA2B;;AAEzN,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACnBJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;AACvK,aAAa,mBAAO,CAAC,wFAA2B;;AAEhD,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA;AACA,YAAY,qBAAqB;AACjC;;AAEA;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AClBJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;AACvK,aAAa,mBAAO,CAAC,wFAA2B;;AAEhD,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qBAAqB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,MAAM,aAAa,MAAM;AACxD,OAAO;AACP,+BAA+B,MAAM,MAAM,MAAM;AACjD;AACA;AACA,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,kBAAkB;AAC9F,OAAO;AACP,8EAA8E,kBAAkB;AAChG,OAAO;AACP,8EAA8E,kBAAkB;AAChG,OAAO;AACP,sEAAsE,kBAAkB;AACxF,OAAO;AACP,sEAAsE,kBAAkB;AACxF,OAAO;AACP;AACA;AACA;AACA,oEAAoE,kBAAkB;AACtF,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AC1JJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;;AAEvK,iBAAiB,mBAAO,CAAC,kFAAqB;AAC9C,aAAa,mBAAO,CAAC,wFAA2B;;;AAGhD,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uCAAuC,qBAAqB,uCAAuC;AAC/G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,mCAAmC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AC/JJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB,EAAE,iBAAiB,mBAAO,CAAC,kFAAqB;;AAEvN,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA,aAAa;;AAEb;AACA,YAAY,qBAAqB,yBAAyB;AAC1D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,MAAM,8BAA8B;AACpC,mCAAmC,aAAa,KAAK,gBAAgB,KAAK;AAC1E;AACA,QAAQ,EAAE;AACV;AACA;AACA;AACA,CAAC,IAAI;AACL;;AAEA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACpEJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;;;AAGvK,gBAAgB,mBAAO,CAAC,8FAA8B;AACtD,aAAa,mBAAO,CAAC,wFAA2B;;AAEhD,oBAAoB,mBAAO,CAAC,8EAAsB,EAAE;AACpD,4BAA4B,mBAAO,CAAC,gGAAwB,EAAE;AAC9D,4BAA4B,mBAAO,CAAC,gGAAwB,EAAE;AAC9D,uBAAuB,mBAAO,CAAC,sFAAmB,EAAE;AACpD,sBAAsB,mBAAO,CAAC,oFAAkB,EAAE;AAClD,mCAAmC,mBAAO,CAAC,8GAA+B,EAAE;AAC5E,uCAAuC,mBAAO,CAAC,sHAAmC,EAAE;AACpF,0CAA0C,mBAAO,CAAC,4HAAsC,EAAE;AAC1F,mCAAmC,mBAAO,CAAC,8GAA+B,EAAE;AAC5E,iCAAiC,mBAAO,CAAC,0GAA6B,EAAE;;AAExE,6BAA6B,mBAAO,CAAC,kGAAyB,EAAE;;AAEhE;AACA,aAAa;;;AAGb,cAAc;;;;;AAKd;AACA;AACA;AACA;AACA;AACA,MAAM,4CAA4C;AAClD;AACA;AACA,WAAW,gCAAgC;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,yDAAyD,GAAG;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,UAAU;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB,UAAU,GAAG,KAAK;AACrC;AACA;AACA;AACA,aAAa,0CAA0C,EAAE,cAAc,EAAE,UAAU;AACnF;AACA,KAAK;AACL,iCAAiC,0CAA0C,GAAG,aAAa;AAC3F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,wBAAwB;AAC9E;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS,GAAG,YAAY,SAAS,EAAE,GAAG,6BAA6B,EAAE;AACjG;AACA,OAAO;AACP,+CAA+C,GAAG,6BAA6B,EAAE;AACjF;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,mCAAmC,IAAI;AACpF,SAAS;AACT,6CAA6C,mCAAmC,IAAI;AACpF;AACA,SAAS;AACT,6CAA6C,mCAAmC,IAAI;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,cAAc,EAAE;AAChB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,UAAU,aAAa,KAAK;AAC/E,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACpZJ,8CAA6C,CAAC,YAAY,EAAC,CAAC;AACzE;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACXJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB,EAAE,aAAa,mBAAO,CAAC,wFAA2B;;AAEzN,oBAAoB,mBAAO,CAAC,8EAAsB,EAAE;;AAEpD,mBAAmB,mBAAO,CAAC,8EAAe,EAAE;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uCAAuC,qBAAqB;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU,cAAc,SAAS;AACnE;AACA;AACA;AACA;AACA,kCAAkC,SAAS,eAAe,SAAS,KAAK,SAAS,KAAK,GAAG;AACzF,KAAK;AACL,kCAAkC,SAAS,OAAO,SAAS,KAAK,GAAG;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,KAAK;AAClC,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C,WAAW;AACX,4BAA4B,mBAAmB;AAC/C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,KAAK,KAAK,WAAW;AAC7D;AACA,OAAO;AACP;AACA;;AAEA;AACA,kCAAkC,SAAS,GAAG,eAAe,MAAM,gBAAgB;AACnF,OAAO;AACP;AACA,aAAa,SAAS,GAAG,SAAS,GAAG,eAAe,MAAM,eAAe,MAAM,gBAAgB;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AC3JJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,aAAa,mBAAO,CAAC,wFAA2B;;;AAGzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;AC5BJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB,EAAE,uBAAuB,mBAAO,CAAC,0EAAmB,EAAE;;AAE7N,aAAa,mBAAO,CAAC,wFAA2B;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,cAAc,iBAAiB,GAAG,eAAe;AACjD;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,gBAAgB,kBAAkB,GAAG,oBAAoB;AACzD;AACA;AACA,CAAC,CAAC,eAAe;;AAEjB;AACA;AACA,cAAc,uBAAuB;AACrC,GAAG;AACH;AACA;AACA;;;;;;;;;;;ACtEa,8CAA6C,CAAC,YAAY,EAAC;;AAExE,gBAAgB,mBAAO,CAAC,8FAA8B;AACtD,aAAa,mBAAO,CAAC,wFAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,uDAAuD;AAC/D,KAAK;AACL,2BAA2B,6DAA6D;AACxF;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uDAAuD;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sDAAsD,8BAA8B;AACpF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,6BAA6B,uDAAuD;AACpF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,KAAK,KAAK,KAAK;AACrE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;ACzTa,8CAA6C,CAAC,YAAY,EAAC,CAAC,iBAAiB,mBAAO,CAAC,kFAAqB;AACvH,aAAa,mBAAO,CAAC,wFAA2B;;;;;;;;AAQhD;AACA;AACA;AACA,EAAE,CAAC,8BAA8B;;AAEjC;AACA;AACA;AACA;AACA,8DAA8D,EAAE;AAChE,iDAAiD,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,UAAU;AACV,CAAC,CAAC,eAAe;;;;;;;;;;;ACvCJ,8CAA6C,CAAC,YAAY,EAAC;AACxE,aAAa,mBAAO,CAAC,wFAA2B;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACdJ,8CAA6C,CAAC,YAAY,EAAC;;;;;;;;;AASxE;AACA;AACA;AACA,UAAU;AACV,CAAC,CAAC,eAAe;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrBa,8CAA6C,CAAC,YAAY,EAAC,CAAC,uCAAuC,uCAAuC,gBAAgB;AACvK,iBAAiB,mBAAO,CAAC,kFAAqB;AAC9C,aAAa,mBAAO,CAAC,wFAA2B;;AAEhD,sBAAsB,mBAAO,CAAC,kGAAgC;AAC9D,wBAAwB,mBAAO,CAAC,gFAAoB,EAAE;;AAEtD;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,6BAA6B;;;;;;;;;;;AC1ClB,8CAA6C,CAAC,YAAY,EAAC,CAAC,gBAAgB,mBAAO,CAAC,8FAA8B;AAC/H,aAAa,mBAAO,CAAC,wFAA2B;;;AAGhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;AAEjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL,2CAA2C,qCAAqC;AAChF;AACA;AACA;;;;;;;;;;;ACvFa,8CAA6C,CAAC,YAAY,EAAC,CAAC,gBAAgB,mBAAO,CAAC,8FAA8B;;;AAG/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACrCJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,kBAAkB,mBAAO,CAAC,wFAA2B;;AAE9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;ACrEJ,8CAA6C,CAAC,YAAY,EAAC,CAAC,aAAa,mBAAO,CAAC,wFAA2B;;;;AAIzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,eAAe;;;;;;;;;;;;;;;;;;;;;ACpCJ;AACb;AACA,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,eAAe,GAAG,sBAAsB;AACxC,cAAc,mBAAO,CAAC,kEAAS;AAC/B,aAAa,mBAAO,CAAC,gEAAQ;AAC7B;AACA;AACA;AACA,cAAc,mBAAO,CAAC,kEAAS;AAC/B,0CAAyC,CAAC,qCAAqC,uBAAuB,EAAE,EAAE,EAAC;AAC3G,6CAA4C,CAAC,qCAAqC,0BAA0B,EAAE,EAAE,EAAC;AACjH,gDAA+C,CAAC,qCAAqC,6BAA6B,EAAE,EAAE,EAAC;AACvH,yCAAwC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AACzG,0CAAyC,CAAC,qCAAqC,uBAAuB,EAAE,EAAE,EAAC;AAC3G,4CAA2C,CAAC,qCAAqC,yBAAyB,EAAE,EAAE,EAAC;AAC/G,yCAAwC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AACzG,6CAA4C,CAAC,qCAAqC,0BAA0B,EAAE,EAAE,EAAC;AACjH,0CAAyC,CAAC,qCAAqC,uBAAuB,EAAE,EAAE,EAAC;AAC3G,8CAA6C,CAAC,qCAAqC,2BAA2B,EAAE,EAAE,EAAC;AACnH,yCAAwC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AACzG,0CAAyC,CAAC,qCAAqC,uBAAuB,EAAE,EAAE,EAAC;AAC3G,yCAAwC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AACzG,0CAAyC,CAAC,qCAAqC,uBAAuB,EAAE,EAAE,EAAC;AAC3G,iDAAgD,CAAC,qCAAqC,8BAA8B,EAAE,EAAE,EAAC;AACzH,yCAAwC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AACzG,2CAA0C,CAAC,qCAAqC,wBAAwB,EAAE,EAAE,EAAC;AAC7G,4CAA2C,CAAC,qCAAqC,yBAAyB,EAAE,EAAE,EAAC;AAC/G,wCAAuC,CAAC,qCAAqC,qBAAqB,EAAE,EAAE,EAAC;AACvG,yCAAwC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AACzG,uCAAsC,CAAC,qCAAqC,oBAAoB,EAAE,EAAE,EAAC;AACrG,wCAAuC,CAAC,qCAAqC,qBAAqB,EAAE,EAAE,EAAC;AACvG,uCAAsC,CAAC,qCAAqC,oBAAoB,EAAE,EAAE,EAAC;AACrG,yCAAwC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AACzG,yCAAwC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AACzG,yCAAwC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AACzG,gDAA+C,CAAC,qCAAqC,6BAA6B,EAAE,EAAE,EAAC;AACvH,6CAA4C,CAAC,qCAAqC,0BAA0B,EAAE,EAAE,EAAC;AACjH,aAAa,mBAAO,CAAC,gEAAQ;AAC7B,0CAAyC,CAAC,qCAAqC,sBAAsB,EAAE,EAAE,EAAC;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,kEAAkE;AAClE;AACA,6CAA6C,yBAAyB;AACtE;AACA,mDAAmD,gBAAgB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gDAAgD;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,iDAAiD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,eAAe;;;;;;;;;;;AC/NF;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA6C,CAAC,cAAc,EAAC;AAC7D,kBAAkB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,oBAAoB,GAAG,eAAe,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,gBAAgB,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa;AAChgB,aAAa,mBAAO,CAAC,gEAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uEAAuE;AAC7G;AACA;AACA,CAAC;AACD,aAAa;AACb;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,4EAA4E;AAClH;AACA;AACA,CAAC;AACD,gBAAgB;AAChB;AACA;AACA;AACA,0BAA0B,wCAAwC;AAClE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,iDAAiD,qBAAqB,EAAE;AACxE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,oCAAoC,EAAE;AAC/F;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,iDAAiD,qBAAqB,EAAE;AACxE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6CAA6C,oEAAoE,EAAE;AACnH,kCAAkC,UAAU,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,oCAAoC,EAAE;AAC/F;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,wDAAwD,qBAAqB,EAAE;AAC/E;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,kDAAkD,EAAE;AAC7G;AACA,4DAA4D,4BAA4B,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qBAAqB;AACrB;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,sBAAsB,EAAE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oEAAoE;AAC1G;AACA;AACA,CAAC;AACD,oBAAoB;AACpB;AACA,mDAAmD,yCAAyC,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,eAAe,EAAE;AACzE;AACA;AACA;AACA;AACA,wDAAwD,yDAAyD,EAAE;AACnH,2DAA2D,6CAA6C,EAAE;AAC1G;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,+BAA+B,EAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,cAAc;AACd;AACA;AACA;AACA,wBAAwB,2CAA2C;AACnE,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,0CAA0C,EAAE;AACrG;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yEAAyE;AAC/G;AACA;AACA,CAAC;AACD,iBAAiB;AACjB;AACA;AACA;AACA,kBAAkB;AAClB,qCAAqC,aAAa,EAAE;AACpD,wCAAwC,gCAAgC,EAAE;AAC1E,wCAAwC,qCAAqC,EAAE;AAC/E,yCAAyC,iCAAiC,EAAE;AAC5E,wCAAwC,gCAAgC,EAAE;AAC1E,wCAAwC,gCAAgC,EAAE;AAC1E,sCAAsC,oBAAoB,EAAE;AAC5D,2CAA2C,0BAA0B,EAAE;AACvE,sCAAsC,qBAAqB,EAAE;AAC7D,uCAAuC,cAAc,EAAE;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qEAAqE;AAC9F;AACA;AACA,IAAI,yBAAyB,+BAA+B,2BAA2B,EAAE;AACzF;AACA;AACA,mEAAmE,+BAA+B,EAAE;AACpG;AACA;AACA;AACA,sEAAsE,gBAAgB;AACtF;AACA;AACA;;;;;;;;;;;ACrjBa;AACb;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD,8CAA6C,CAAC,cAAc,EAAC;AAC7D,qBAAqB,GAAG,mBAAmB,GAAG,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,aAAa;AACpE,uDAAuD,aAAa;AACpE,wDAAwD;AACxD;AACA,CAAC;AACD,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;ACjIiC;;AAElC,6BAAe,oCAAU;AACzB,WAAW,kDAAS;AACpB;AACA,KAAK;AACL,C;;;;;;UCNA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCrBA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA,sF;;;;;WCAA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;UCNA;UACA;UACA;UACA","file":"example-transform-ts-bundle.js","sourcesContent":["var LF = '\\n';\nvar CR = '\\r';\nvar LinesAndColumns = (function () {\n function LinesAndColumns(string) {\n this.string = string;\n var offsets = [0];\n for (var offset = 0; offset < string.length;) {\n switch (string[offset]) {\n case LF:\n offset += LF.length;\n offsets.push(offset);\n break;\n case CR:\n offset += CR.length;\n if (string[offset] === LF) {\n offset += LF.length;\n }\n offsets.push(offset);\n break;\n default:\n offset++;\n break;\n }\n }\n this.offsets = offsets;\n }\n LinesAndColumns.prototype.locationForIndex = function (index) {\n if (index < 0 || index > this.string.length) {\n return null;\n }\n var line = 0;\n var offsets = this.offsets;\n while (offsets[line + 1] <= index) {\n line++;\n }\n var column = index - offsets[line];\n return { line: line, column: column };\n };\n LinesAndColumns.prototype.indexForLocation = function (location) {\n var line = location.line, column = location.column;\n if (line < 0 || line >= this.offsets.length) {\n return null;\n }\n if (column < 0 || column > this.lengthOfLine(line)) {\n return null;\n }\n return this.offsets[line] + column;\n };\n LinesAndColumns.prototype.lengthOfLine = function (line) {\n var offset = this.offsets[line];\n var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1];\n return nextOffset - offset;\n };\n return LinesAndColumns;\n}());\nexport default LinesAndColumns;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\n\n\nvar _tokenizer = require('./parser/tokenizer');\nvar _keywords = require('./parser/tokenizer/keywords');\nvar _types = require('./parser/tokenizer/types');\n\nvar _getNonTypeIdentifiers = require('./util/getNonTypeIdentifiers');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Class responsible for preprocessing and bookkeeping import and export declarations within the\n * file.\n *\n * TypeScript uses a simpler mechanism that does not use functions like interopRequireDefault and\n * interopRequireWildcard, so we also allow that mode for compatibility.\n */\n class CJSImportProcessor {\n __init() {this.nonTypeIdentifiers = new Set()}\n __init2() {this.importInfoByPath = new Map()}\n __init3() {this.importsToReplace = new Map()}\n __init4() {this.identifierReplacements = new Map()}\n __init5() {this.exportBindingsByLocalName = new Map()}\n\n constructor(\n nameManager,\n tokens,\n enableLegacyTypeScriptModuleInterop,\n options,\n isTypeScriptTransformEnabled,\n helperManager,\n ) {;this.nameManager = nameManager;this.tokens = tokens;this.enableLegacyTypeScriptModuleInterop = enableLegacyTypeScriptModuleInterop;this.options = options;this.isTypeScriptTransformEnabled = isTypeScriptTransformEnabled;this.helperManager = helperManager;CJSImportProcessor.prototype.__init.call(this);CJSImportProcessor.prototype.__init2.call(this);CJSImportProcessor.prototype.__init3.call(this);CJSImportProcessor.prototype.__init4.call(this);CJSImportProcessor.prototype.__init5.call(this);}\n\n preprocessTokens() {\n for (let i = 0; i < this.tokens.tokens.length; i++) {\n if (\n this.tokens.matches1AtIndex(i, _types.TokenType._import) &&\n !this.tokens.matches3AtIndex(i, _types.TokenType._import, _types.TokenType.name, _types.TokenType.eq)\n ) {\n this.preprocessImportAtIndex(i);\n }\n if (\n this.tokens.matches1AtIndex(i, _types.TokenType._export) &&\n !this.tokens.matches2AtIndex(i, _types.TokenType._export, _types.TokenType.eq)\n ) {\n this.preprocessExportAtIndex(i);\n }\n }\n this.generateImportReplacements();\n }\n\n /**\n * In TypeScript, import statements that only import types should be removed. This does not count\n * bare imports.\n */\n pruneTypeOnlyImports() {\n this.nonTypeIdentifiers = _getNonTypeIdentifiers.getNonTypeIdentifiers.call(void 0, this.tokens, this.options);\n for (const [path, importInfo] of this.importInfoByPath.entries()) {\n if (\n importInfo.hasBareImport ||\n importInfo.hasStarExport ||\n importInfo.exportStarNames.length > 0 ||\n importInfo.namedExports.length > 0\n ) {\n continue;\n }\n const names = [\n ...importInfo.defaultNames,\n ...importInfo.wildcardNames,\n ...importInfo.namedImports.map(({localName}) => localName),\n ];\n if (names.every((name) => this.isTypeName(name))) {\n this.importsToReplace.set(path, \"\");\n }\n }\n }\n\n isTypeName(name) {\n return this.isTypeScriptTransformEnabled && !this.nonTypeIdentifiers.has(name);\n }\n\n generateImportReplacements() {\n for (const [path, importInfo] of this.importInfoByPath.entries()) {\n const {\n defaultNames,\n wildcardNames,\n namedImports,\n namedExports,\n exportStarNames,\n hasStarExport,\n } = importInfo;\n\n if (\n defaultNames.length === 0 &&\n wildcardNames.length === 0 &&\n namedImports.length === 0 &&\n namedExports.length === 0 &&\n exportStarNames.length === 0 &&\n !hasStarExport\n ) {\n // Import is never used, so don't even assign a name.\n this.importsToReplace.set(path, `require('${path}');`);\n continue;\n }\n\n const primaryImportName = this.getFreeIdentifierForPath(path);\n let secondaryImportName;\n if (this.enableLegacyTypeScriptModuleInterop) {\n secondaryImportName = primaryImportName;\n } else {\n secondaryImportName =\n wildcardNames.length > 0 ? wildcardNames[0] : this.getFreeIdentifierForPath(path);\n }\n let requireCode = `var ${primaryImportName} = require('${path}');`;\n if (wildcardNames.length > 0) {\n for (const wildcardName of wildcardNames) {\n const moduleExpr = this.enableLegacyTypeScriptModuleInterop\n ? primaryImportName\n : `${this.helperManager.getHelperName(\"interopRequireWildcard\")}(${primaryImportName})`;\n requireCode += ` var ${wildcardName} = ${moduleExpr};`;\n }\n } else if (exportStarNames.length > 0 && secondaryImportName !== primaryImportName) {\n requireCode += ` var ${secondaryImportName} = ${this.helperManager.getHelperName(\n \"interopRequireWildcard\",\n )}(${primaryImportName});`;\n } else if (defaultNames.length > 0 && secondaryImportName !== primaryImportName) {\n requireCode += ` var ${secondaryImportName} = ${this.helperManager.getHelperName(\n \"interopRequireDefault\",\n )}(${primaryImportName});`;\n }\n\n for (const {importedName, localName} of namedExports) {\n requireCode += ` ${this.helperManager.getHelperName(\n \"createNamedExportFrom\",\n )}(${primaryImportName}, '${localName}', '${importedName}');`;\n }\n for (const exportStarName of exportStarNames) {\n requireCode += ` exports.${exportStarName} = ${secondaryImportName};`;\n }\n if (hasStarExport) {\n requireCode += ` ${this.helperManager.getHelperName(\n \"createStarExport\",\n )}(${primaryImportName});`;\n }\n\n this.importsToReplace.set(path, requireCode);\n\n for (const defaultName of defaultNames) {\n this.identifierReplacements.set(defaultName, `${secondaryImportName}.default`);\n }\n for (const {importedName, localName} of namedImports) {\n this.identifierReplacements.set(localName, `${primaryImportName}.${importedName}`);\n }\n }\n }\n\n getFreeIdentifierForPath(path) {\n const components = path.split(\"/\");\n const lastComponent = components[components.length - 1];\n const baseName = lastComponent.replace(/\\W/g, \"\");\n return this.nameManager.claimFreeName(`_${baseName}`);\n }\n\n preprocessImportAtIndex(index) {\n const defaultNames = [];\n const wildcardNames = [];\n let namedImports = [];\n\n index++;\n if (\n (this.tokens.matchesContextualAtIndex(index, _keywords.ContextualKeyword._type) ||\n this.tokens.matches1AtIndex(index, _types.TokenType._typeof)) &&\n !this.tokens.matches1AtIndex(index + 1, _types.TokenType.comma) &&\n !this.tokens.matchesContextualAtIndex(index + 1, _keywords.ContextualKeyword._from)\n ) {\n // import type declaration, so no need to process anything.\n return;\n }\n\n if (this.tokens.matches1AtIndex(index, _types.TokenType.parenL)) {\n // Dynamic import, so nothing to do\n return;\n }\n\n if (this.tokens.matches1AtIndex(index, _types.TokenType.name)) {\n defaultNames.push(this.tokens.identifierNameAtIndex(index));\n index++;\n if (this.tokens.matches1AtIndex(index, _types.TokenType.comma)) {\n index++;\n }\n }\n\n if (this.tokens.matches1AtIndex(index, _types.TokenType.star)) {\n // * as\n index += 2;\n wildcardNames.push(this.tokens.identifierNameAtIndex(index));\n index++;\n }\n\n if (this.tokens.matches1AtIndex(index, _types.TokenType.braceL)) {\n index++;\n ({newIndex: index, namedImports} = this.getNamedImports(index));\n }\n\n if (this.tokens.matchesContextualAtIndex(index, _keywords.ContextualKeyword._from)) {\n index++;\n }\n\n if (!this.tokens.matches1AtIndex(index, _types.TokenType.string)) {\n throw new Error(\"Expected string token at the end of import statement.\");\n }\n const path = this.tokens.stringValueAtIndex(index);\n const importInfo = this.getImportInfo(path);\n importInfo.defaultNames.push(...defaultNames);\n importInfo.wildcardNames.push(...wildcardNames);\n importInfo.namedImports.push(...namedImports);\n if (defaultNames.length === 0 && wildcardNames.length === 0 && namedImports.length === 0) {\n importInfo.hasBareImport = true;\n }\n }\n\n preprocessExportAtIndex(index) {\n if (\n this.tokens.matches2AtIndex(index, _types.TokenType._export, _types.TokenType._var) ||\n this.tokens.matches2AtIndex(index, _types.TokenType._export, _types.TokenType._let) ||\n this.tokens.matches2AtIndex(index, _types.TokenType._export, _types.TokenType._const)\n ) {\n this.preprocessVarExportAtIndex(index);\n } else if (\n this.tokens.matches2AtIndex(index, _types.TokenType._export, _types.TokenType._function) ||\n this.tokens.matches2AtIndex(index, _types.TokenType._export, _types.TokenType._class)\n ) {\n const exportName = this.tokens.identifierNameAtIndex(index + 2);\n this.addExportBinding(exportName, exportName);\n } else if (this.tokens.matches3AtIndex(index, _types.TokenType._export, _types.TokenType.name, _types.TokenType._function)) {\n const exportName = this.tokens.identifierNameAtIndex(index + 3);\n this.addExportBinding(exportName, exportName);\n } else if (this.tokens.matches2AtIndex(index, _types.TokenType._export, _types.TokenType.braceL)) {\n this.preprocessNamedExportAtIndex(index);\n } else if (this.tokens.matches2AtIndex(index, _types.TokenType._export, _types.TokenType.star)) {\n this.preprocessExportStarAtIndex(index);\n }\n }\n\n preprocessVarExportAtIndex(index) {\n let depth = 0;\n // Handle cases like `export let {x} = y;`, starting at the open-brace in that case.\n for (let i = index + 2; ; i++) {\n if (\n this.tokens.matches1AtIndex(i, _types.TokenType.braceL) ||\n this.tokens.matches1AtIndex(i, _types.TokenType.dollarBraceL) ||\n this.tokens.matches1AtIndex(i, _types.TokenType.bracketL)\n ) {\n depth++;\n } else if (\n this.tokens.matches1AtIndex(i, _types.TokenType.braceR) ||\n this.tokens.matches1AtIndex(i, _types.TokenType.bracketR)\n ) {\n depth--;\n } else if (depth === 0 && !this.tokens.matches1AtIndex(i, _types.TokenType.name)) {\n break;\n } else if (this.tokens.matches1AtIndex(1, _types.TokenType.eq)) {\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n i = endIndex - 1;\n } else {\n const token = this.tokens.tokens[i];\n if (_tokenizer.isDeclaration.call(void 0, token)) {\n const exportName = this.tokens.identifierNameAtIndex(i);\n this.identifierReplacements.set(exportName, `exports.${exportName}`);\n }\n }\n }\n }\n\n /**\n * Walk this export statement just in case it's an export...from statement.\n * If it is, combine it into the import info for that path. Otherwise, just\n * bail out; it'll be handled later.\n */\n preprocessNamedExportAtIndex(index) {\n // export {\n index += 2;\n const {newIndex, namedImports} = this.getNamedImports(index);\n index = newIndex;\n\n if (this.tokens.matchesContextualAtIndex(index, _keywords.ContextualKeyword._from)) {\n index++;\n } else {\n // Reinterpret \"a as b\" to be local/exported rather than imported/local.\n for (const {importedName: localName, localName: exportedName} of namedImports) {\n this.addExportBinding(localName, exportedName);\n }\n return;\n }\n\n if (!this.tokens.matches1AtIndex(index, _types.TokenType.string)) {\n throw new Error(\"Expected string token at the end of import statement.\");\n }\n const path = this.tokens.stringValueAtIndex(index);\n const importInfo = this.getImportInfo(path);\n importInfo.namedExports.push(...namedImports);\n }\n\n preprocessExportStarAtIndex(index) {\n let exportedName = null;\n if (this.tokens.matches3AtIndex(index, _types.TokenType._export, _types.TokenType.star, _types.TokenType._as)) {\n // export * as\n index += 3;\n exportedName = this.tokens.identifierNameAtIndex(index);\n // foo from\n index += 2;\n } else {\n // export * from\n index += 3;\n }\n if (!this.tokens.matches1AtIndex(index, _types.TokenType.string)) {\n throw new Error(\"Expected string token at the end of star export statement.\");\n }\n const path = this.tokens.stringValueAtIndex(index);\n const importInfo = this.getImportInfo(path);\n if (exportedName !== null) {\n importInfo.exportStarNames.push(exportedName);\n } else {\n importInfo.hasStarExport = true;\n }\n }\n\n getNamedImports(index) {\n const namedImports = [];\n while (true) {\n if (this.tokens.matches1AtIndex(index, _types.TokenType.braceR)) {\n index++;\n break;\n }\n\n // Flow type imports should just be ignored.\n let isTypeImport = false;\n if (\n (this.tokens.matchesContextualAtIndex(index, _keywords.ContextualKeyword._type) ||\n this.tokens.matches1AtIndex(index, _types.TokenType._typeof)) &&\n this.tokens.matches1AtIndex(index + 1, _types.TokenType.name) &&\n !this.tokens.matchesContextualAtIndex(index + 1, _keywords.ContextualKeyword._as)\n ) {\n isTypeImport = true;\n index++;\n }\n\n const importedName = this.tokens.identifierNameAtIndex(index);\n let localName;\n index++;\n if (this.tokens.matchesContextualAtIndex(index, _keywords.ContextualKeyword._as)) {\n index++;\n localName = this.tokens.identifierNameAtIndex(index);\n index++;\n } else {\n localName = importedName;\n }\n if (!isTypeImport) {\n namedImports.push({importedName, localName});\n }\n if (this.tokens.matches2AtIndex(index, _types.TokenType.comma, _types.TokenType.braceR)) {\n index += 2;\n break;\n } else if (this.tokens.matches1AtIndex(index, _types.TokenType.braceR)) {\n index++;\n break;\n } else if (this.tokens.matches1AtIndex(index, _types.TokenType.comma)) {\n index++;\n } else {\n throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.tokens[index])}`);\n }\n }\n return {newIndex: index, namedImports};\n }\n\n /**\n * Get a mutable import info object for this path, creating one if it doesn't\n * exist yet.\n */\n getImportInfo(path) {\n const existingInfo = this.importInfoByPath.get(path);\n if (existingInfo) {\n return existingInfo;\n }\n const newInfo = {\n defaultNames: [],\n wildcardNames: [],\n namedImports: [],\n namedExports: [],\n hasBareImport: false,\n exportStarNames: [],\n hasStarExport: false,\n };\n this.importInfoByPath.set(path, newInfo);\n return newInfo;\n }\n\n addExportBinding(localName, exportedName) {\n if (!this.exportBindingsByLocalName.has(localName)) {\n this.exportBindingsByLocalName.set(localName, []);\n }\n this.exportBindingsByLocalName.get(localName).push(exportedName);\n }\n\n /**\n * Return the code to use for the import for this path, or the empty string if\n * the code has already been \"claimed\" by a previous import.\n */\n claimImportCode(importPath) {\n const result = this.importsToReplace.get(importPath);\n this.importsToReplace.set(importPath, \"\");\n return result || \"\";\n }\n\n getIdentifierReplacement(identifierName) {\n return this.identifierReplacements.get(identifierName) || null;\n }\n\n /**\n * Return a string like `exports.foo = exports.bar`.\n */\n resolveExportBinding(assignedName) {\n const exportedNames = this.exportBindingsByLocalName.get(assignedName);\n if (!exportedNames || exportedNames.length === 0) {\n return null;\n }\n return exportedNames.map((exportedName) => `exports.${exportedName}`).join(\" = \");\n }\n\n /**\n * Return all imported/exported names where we might be interested in whether usages of those\n * names are shadowed.\n */\n getGlobalNames() {\n return new Set([\n ...this.identifierReplacements.keys(),\n ...this.exportBindingsByLocalName.keys(),\n ]);\n }\n} exports.default = CJSImportProcessor;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\n\nconst HELPERS = {\n interopRequireWildcard: `\n function interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n }\n `,\n interopRequireDefault: `\n function interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n `,\n createNamedExportFrom: `\n function createNamedExportFrom(obj, localName, importedName) {\n Object.defineProperty(exports, localName, {enumerable: true, get: () => obj[importedName]});\n }\n `,\n // Note that TypeScript and Babel do this differently; TypeScript does a simple existence\n // check in the exports object and does a plain assignment, whereas Babel uses\n // defineProperty and builds an object of explicitly-exported names so that star exports can\n // always take lower precedence. For now, we do the easier TypeScript thing.\n createStarExport: `\n function createStarExport(obj) {\n Object.keys(obj)\n .filter((key) => key !== \"default\" && key !== \"__esModule\")\n .forEach((key) => {\n if (exports.hasOwnProperty(key)) {\n return;\n }\n Object.defineProperty(exports, key, {enumerable: true, get: () => obj[key]});\n });\n }\n `,\n nullishCoalesce: `\n function nullishCoalesce(lhs, rhsFn) {\n if (lhs != null) {\n return lhs;\n } else {\n return rhsFn();\n }\n }\n `,\n asyncNullishCoalesce: `\n async function asyncNullishCoalesce(lhs, rhsFn) {\n if (lhs != null) {\n return lhs;\n } else {\n return await rhsFn();\n }\n }\n `,\n optionalChain: `\n function optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i];\n const fn = ops[i + 1];\n i += 2;\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n return undefined;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => value.call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n }\n `,\n asyncOptionalChain: `\n async function asyncOptionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i];\n const fn = ops[i + 1];\n i += 2;\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n return undefined;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = await fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = await fn((...args) => value.call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n }\n `,\n optionalChainDelete: `\n function optionalChainDelete(ops) {\n const result = OPTIONAL_CHAIN_NAME(ops);\n return result == null ? true : result;\n }\n `,\n asyncOptionalChainDelete: `\n async function asyncOptionalChainDelete(ops) {\n const result = await ASYNC_OPTIONAL_CHAIN_NAME(ops);\n return result == null ? true : result;\n }\n `,\n};\n\n class HelperManager {\n __init() {this.helperNames = {}}\n constructor( nameManager) {;this.nameManager = nameManager;HelperManager.prototype.__init.call(this);}\n\n getHelperName(baseName) {\n let helperName = this.helperNames[baseName];\n if (helperName) {\n return helperName;\n }\n helperName = this.nameManager.claimFreeName(`_${baseName}`);\n this.helperNames[baseName] = helperName;\n return helperName;\n }\n\n emitHelpers() {\n let resultCode = \"\";\n if (this.helperNames.optionalChainDelete) {\n this.getHelperName(\"optionalChain\");\n }\n if (this.helperNames.asyncOptionalChainDelete) {\n this.getHelperName(\"asyncOptionalChain\");\n }\n for (const [baseName, helperCodeTemplate] of Object.entries(HELPERS)) {\n const helperName = this.helperNames[baseName];\n let helperCode = helperCodeTemplate;\n if (baseName === \"optionalChainDelete\") {\n helperCode = helperCode.replace(\"OPTIONAL_CHAIN_NAME\", this.helperNames.optionalChain);\n } else if (baseName === \"asyncOptionalChainDelete\") {\n helperCode = helperCode.replace(\n \"ASYNC_OPTIONAL_CHAIN_NAME\",\n this.helperNames.asyncOptionalChain,\n );\n }\n if (helperName) {\n resultCode += \" \";\n resultCode += helperCode.replace(baseName, helperName).replace(/\\s+/g, \" \").trim();\n }\n }\n return resultCode;\n }\n} exports.HelperManager = HelperManager;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar _getIdentifierNames = require('./util/getIdentifierNames'); var _getIdentifierNames2 = _interopRequireDefault(_getIdentifierNames);\n\n class NameManager {\n __init() {this.usedNames = new Set()}\n\n constructor(code, tokens) {;NameManager.prototype.__init.call(this);\n this.usedNames = new Set(_getIdentifierNames2.default.call(void 0, code, tokens));\n }\n\n claimFreeName(name) {\n const newName = this.findFreeName(name);\n this.usedNames.add(newName);\n return newName;\n }\n\n findFreeName(name) {\n if (!this.usedNames.has(name)) {\n return name;\n }\n let suffixNum = 2;\n while (this.usedNames.has(name + suffixNum)) {\n suffixNum++;\n }\n return name + suffixNum;\n }\n} exports.default = NameManager;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }/**\n * This module was automatically generated by `ts-interface-builder`\n */\nvar _tsinterfacechecker = require('ts-interface-checker'); var t = _interopRequireWildcard(_tsinterfacechecker);\n// tslint:disable:object-literal-key-quotes\n\n const Transform = t.union(\n t.lit(\"jsx\"),\n t.lit(\"typescript\"),\n t.lit(\"flow\"),\n t.lit(\"imports\"),\n t.lit(\"react-hot-loader\"),\n); exports.Transform = Transform;\n\n const SourceMapOptions = t.iface([], {\n compiledFilename: \"string\",\n}); exports.SourceMapOptions = SourceMapOptions;\n\n const Options = t.iface([], {\n transforms: t.array(\"Transform\"),\n jsxPragma: t.opt(\"string\"),\n jsxFragmentPragma: t.opt(\"string\"),\n enableLegacyTypeScriptModuleInterop: t.opt(\"boolean\"),\n enableLegacyBabel5ModuleInterop: t.opt(\"boolean\"),\n sourceMapOptions: t.opt(\"SourceMapOptions\"),\n filePath: t.opt(\"string\"),\n production: t.opt(\"boolean\"),\n}); exports.Options = Options;\n\nconst exportedTypeSuite = {\n Transform: exports.Transform,\n SourceMapOptions: exports.SourceMapOptions,\n Options: exports.Options,\n};\nexports. default = exportedTypeSuite;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _tsinterfacechecker = require('ts-interface-checker');\nvar _Optionsgentypes = require('./Options-gen-types'); var _Optionsgentypes2 = _interopRequireDefault(_Optionsgentypes);\n\nconst {Options: OptionsChecker} = _tsinterfacechecker.createCheckers.call(void 0, _Optionsgentypes2.default);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n function validateOptions(options) {\n OptionsChecker.strictCheck(options);\n} exports.validateOptions = validateOptions;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\nvar _types = require('./parser/tokenizer/types');\nvar _isAsyncOperation = require('./util/isAsyncOperation'); var _isAsyncOperation2 = _interopRequireDefault(_isAsyncOperation);\n\n\n\n\n\n\n class TokenProcessor {\n __init() {this.resultCode = \"\"}\n __init2() {this.tokenIndex = 0}\n\n constructor(\n code,\n tokens,\n isFlowEnabled,\n helperManager,\n ) {;this.code = code;this.tokens = tokens;this.isFlowEnabled = isFlowEnabled;this.helperManager = helperManager;TokenProcessor.prototype.__init.call(this);TokenProcessor.prototype.__init2.call(this);}\n\n /**\n * Make a new TokenProcessor for things like lookahead.\n */\n snapshot() {\n return {resultCode: this.resultCode, tokenIndex: this.tokenIndex};\n }\n\n restoreToSnapshot(snapshot) {\n this.resultCode = snapshot.resultCode;\n this.tokenIndex = snapshot.tokenIndex;\n }\n\n getResultCodeIndex() {\n return this.resultCode.length;\n }\n\n reset() {\n this.resultCode = \"\";\n this.tokenIndex = 0;\n }\n\n matchesContextualAtIndex(index, contextualKeyword) {\n return (\n this.matches1AtIndex(index, _types.TokenType.name) &&\n this.tokens[index].contextualKeyword === contextualKeyword\n );\n }\n\n identifierNameAtIndex(index) {\n // TODO: We need to process escapes since technically you can have unicode escapes in variable\n // names.\n return this.identifierNameForToken(this.tokens[index]);\n }\n\n identifierName() {\n return this.identifierNameForToken(this.currentToken());\n }\n\n identifierNameForToken(token) {\n return this.code.slice(token.start, token.end);\n }\n\n rawCodeForToken(token) {\n return this.code.slice(token.start, token.end);\n }\n\n stringValueAtIndex(index) {\n return this.stringValueForToken(this.tokens[index]);\n }\n\n stringValue() {\n return this.stringValueForToken(this.currentToken());\n }\n\n stringValueForToken(token) {\n // This is used to identify when two imports are the same and to resolve TypeScript enum keys.\n // Ideally we'd process escapes within the strings, but for now we pretty much take the raw\n // code.\n return this.code.slice(token.start + 1, token.end - 1);\n }\n\n matches1AtIndex(index, t1) {\n return this.tokens[index].type === t1;\n }\n\n matches2AtIndex(index, t1, t2) {\n return this.tokens[index].type === t1 && this.tokens[index + 1].type === t2;\n }\n\n matches3AtIndex(index, t1, t2, t3) {\n return (\n this.tokens[index].type === t1 &&\n this.tokens[index + 1].type === t2 &&\n this.tokens[index + 2].type === t3\n );\n }\n\n matches1(t1) {\n return this.tokens[this.tokenIndex].type === t1;\n }\n\n matches2(t1, t2) {\n return this.tokens[this.tokenIndex].type === t1 && this.tokens[this.tokenIndex + 1].type === t2;\n }\n\n matches3(t1, t2, t3) {\n return (\n this.tokens[this.tokenIndex].type === t1 &&\n this.tokens[this.tokenIndex + 1].type === t2 &&\n this.tokens[this.tokenIndex + 2].type === t3\n );\n }\n\n matches4(t1, t2, t3, t4) {\n return (\n this.tokens[this.tokenIndex].type === t1 &&\n this.tokens[this.tokenIndex + 1].type === t2 &&\n this.tokens[this.tokenIndex + 2].type === t3 &&\n this.tokens[this.tokenIndex + 3].type === t4\n );\n }\n\n matches5(t1, t2, t3, t4, t5) {\n return (\n this.tokens[this.tokenIndex].type === t1 &&\n this.tokens[this.tokenIndex + 1].type === t2 &&\n this.tokens[this.tokenIndex + 2].type === t3 &&\n this.tokens[this.tokenIndex + 3].type === t4 &&\n this.tokens[this.tokenIndex + 4].type === t5\n );\n }\n\n matchesContextual(contextualKeyword) {\n return this.matchesContextualAtIndex(this.tokenIndex, contextualKeyword);\n }\n\n matchesContextIdAndLabel(type, contextId) {\n return this.matches1(type) && this.currentToken().contextId === contextId;\n }\n\n previousWhitespaceAndComments() {\n let whitespaceAndComments = this.code.slice(\n this.tokenIndex > 0 ? this.tokens[this.tokenIndex - 1].end : 0,\n this.tokenIndex < this.tokens.length ? this.tokens[this.tokenIndex].start : this.code.length,\n );\n if (this.isFlowEnabled) {\n whitespaceAndComments = whitespaceAndComments.replace(/@flow/g, \"\");\n }\n return whitespaceAndComments;\n }\n\n replaceToken(newCode) {\n this.resultCode += this.previousWhitespaceAndComments();\n this.appendTokenPrefix();\n this.resultCode += newCode;\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n replaceTokenTrimmingLeftWhitespace(newCode) {\n this.resultCode += this.previousWhitespaceAndComments().replace(/[^\\r\\n]/g, \"\");\n this.appendTokenPrefix();\n this.resultCode += newCode;\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n removeInitialToken() {\n this.replaceToken(\"\");\n }\n\n removeToken() {\n this.replaceTokenTrimmingLeftWhitespace(\"\");\n }\n\n copyExpectedToken(tokenType) {\n if (this.tokens[this.tokenIndex].type !== tokenType) {\n throw new Error(`Expected token ${tokenType}`);\n }\n this.copyToken();\n }\n\n copyToken() {\n this.resultCode += this.previousWhitespaceAndComments();\n this.appendTokenPrefix();\n this.resultCode += this.code.slice(\n this.tokens[this.tokenIndex].start,\n this.tokens[this.tokenIndex].end,\n );\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n copyTokenWithPrefix(prefix) {\n this.resultCode += this.previousWhitespaceAndComments();\n this.appendTokenPrefix();\n this.resultCode += prefix;\n this.resultCode += this.code.slice(\n this.tokens[this.tokenIndex].start,\n this.tokens[this.tokenIndex].end,\n );\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n appendTokenPrefix() {\n const token = this.currentToken();\n if (token.numNullishCoalesceStarts || token.isOptionalChainStart) {\n token.isAsyncOperation = _isAsyncOperation2.default.call(void 0, this);\n }\n if (token.numNullishCoalesceStarts) {\n for (let i = 0; i < token.numNullishCoalesceStarts; i++) {\n if (token.isAsyncOperation) {\n this.resultCode += \"await \";\n this.resultCode += this.helperManager.getHelperName(\"asyncNullishCoalesce\");\n } else {\n this.resultCode += this.helperManager.getHelperName(\"nullishCoalesce\");\n }\n this.resultCode += \"(\";\n }\n }\n if (token.isOptionalChainStart) {\n if (token.isAsyncOperation) {\n this.resultCode += \"await \";\n }\n if (this.tokenIndex > 0 && this.tokenAtRelativeIndex(-1).type === _types.TokenType._delete) {\n if (token.isAsyncOperation) {\n this.resultCode += this.helperManager.getHelperName(\"asyncOptionalChainDelete\");\n } else {\n this.resultCode += this.helperManager.getHelperName(\"optionalChainDelete\");\n }\n } else if (token.isAsyncOperation) {\n this.resultCode += this.helperManager.getHelperName(\"asyncOptionalChain\");\n } else {\n this.resultCode += this.helperManager.getHelperName(\"optionalChain\");\n }\n this.resultCode += \"([\";\n }\n }\n\n appendTokenSuffix() {\n const token = this.currentToken();\n if (token.isOptionalChainEnd) {\n this.resultCode += \"])\";\n }\n if (token.numNullishCoalesceEnds) {\n for (let i = 0; i < token.numNullishCoalesceEnds; i++) {\n this.resultCode += \"))\";\n }\n }\n }\n\n appendCode(code) {\n this.resultCode += code;\n }\n\n currentToken() {\n return this.tokens[this.tokenIndex];\n }\n\n currentTokenCode() {\n const token = this.currentToken();\n return this.code.slice(token.start, token.end);\n }\n\n tokenAtRelativeIndex(relativeIndex) {\n return this.tokens[this.tokenIndex + relativeIndex];\n }\n\n currentIndex() {\n return this.tokenIndex;\n }\n\n /**\n * Move to the next token. Only suitable in preprocessing steps. When\n * generating new code, you should use copyToken or removeToken.\n */\n nextToken() {\n if (this.tokenIndex === this.tokens.length) {\n throw new Error(\"Unexpectedly reached end of input.\");\n }\n this.tokenIndex++;\n }\n\n previousToken() {\n this.tokenIndex--;\n }\n\n finish() {\n if (this.tokenIndex !== this.tokens.length) {\n throw new Error(\"Tried to finish processing tokens before reaching the end.\");\n }\n this.resultCode += this.previousWhitespaceAndComments();\n return this.resultCode;\n }\n\n isAtEnd() {\n return this.tokenIndex === this.tokens.length;\n }\n} exports.default = TokenProcessor;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\nvar _charcodes = require('./parser/util/charcodes');\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Generate a simple source map indicating that each line maps directly to the original line.\n */\n function computeSourceMap(\n code,\n filePath,\n {compiledFilename},\n) {\n let mappings = \"AAAA\";\n for (let i = 0; i < code.length; i++) {\n if (code.charCodeAt(i) === _charcodes.charCodes.lineFeed) {\n mappings += \";AACA\";\n }\n }\n return {\n version: 3,\n file: compiledFilename || \"\",\n sources: [filePath],\n mappings,\n names: [],\n };\n} exports.default = computeSourceMap;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\n\n\n\nvar _tokenizer = require('./parser/tokenizer');\n\nvar _types = require('./parser/tokenizer/types');\n\n\n/**\n * Traverse the given tokens and modify them if necessary to indicate that some names shadow global\n * variables.\n */\n function identifyShadowedGlobals(\n tokens,\n scopes,\n globalNames,\n) {\n if (!hasShadowedGlobals(tokens, globalNames)) {\n return;\n }\n markShadowedGlobals(tokens, scopes, globalNames);\n} exports.default = identifyShadowedGlobals;\n\n/**\n * We can do a fast up-front check to see if there are any declarations to global names. If not,\n * then there's no point in computing scope assignments.\n */\n// Exported for testing.\n function hasShadowedGlobals(tokens, globalNames) {\n for (const token of tokens.tokens) {\n if (\n token.type === _types.TokenType.name &&\n _tokenizer.isNonTopLevelDeclaration.call(void 0, token) &&\n globalNames.has(tokens.identifierNameForToken(token))\n ) {\n return true;\n }\n }\n return false;\n} exports.hasShadowedGlobals = hasShadowedGlobals;\n\nfunction markShadowedGlobals(\n tokens,\n scopes,\n globalNames,\n) {\n const scopeStack = [];\n let scopeIndex = scopes.length - 1;\n // Scopes were generated at completion time, so they're sorted by end index, so we can maintain a\n // good stack by going backwards through them.\n for (let i = tokens.tokens.length - 1; ; i--) {\n while (scopeStack.length > 0 && scopeStack[scopeStack.length - 1].startTokenIndex === i + 1) {\n scopeStack.pop();\n }\n while (scopeIndex >= 0 && scopes[scopeIndex].endTokenIndex === i + 1) {\n scopeStack.push(scopes[scopeIndex]);\n scopeIndex--;\n }\n // Process scopes after the last iteration so we can make sure we pop all of them.\n if (i < 0) {\n break;\n }\n\n const token = tokens.tokens[i];\n const name = tokens.identifierNameForToken(token);\n if (scopeStack.length > 1 && token.type === _types.TokenType.name && globalNames.has(name)) {\n if (_tokenizer.isBlockScopedDeclaration.call(void 0, token)) {\n markShadowedForScope(scopeStack[scopeStack.length - 1], tokens, name);\n } else if (_tokenizer.isFunctionScopedDeclaration.call(void 0, token)) {\n let stackIndex = scopeStack.length - 1;\n while (stackIndex > 0 && !scopeStack[stackIndex].isFunctionScope) {\n stackIndex--;\n }\n if (stackIndex < 0) {\n throw new Error(\"Did not find parent function scope.\");\n }\n markShadowedForScope(scopeStack[stackIndex], tokens, name);\n }\n }\n }\n if (scopeStack.length > 0) {\n throw new Error(\"Expected empty scope stack after processing file.\");\n }\n}\n\nfunction markShadowedForScope(scope, tokens, name) {\n for (let i = scope.startTokenIndex; i < scope.endTokenIndex; i++) {\n const token = tokens.tokens[i];\n if (token.type === _types.TokenType.name && tokens.identifierNameForToken(token) === name) {\n token.shadowsGlobal = true;\n }\n }\n}\n","import CJSImportProcessor from \"./CJSImportProcessor\";\nimport computeSourceMap, {} from \"./computeSourceMap\";\nimport {HelperManager} from \"./HelperManager\";\nimport identifyShadowedGlobals from \"./identifyShadowedGlobals\";\nimport NameManager from \"./NameManager\";\nimport {validateOptions} from \"./Options\";\nimport {parse} from \"./parser\";\n\nimport TokenProcessor from \"./TokenProcessor\";\nimport RootTransformer from \"./transformers/RootTransformer\";\nimport formatTokens from \"./util/formatTokens\";\nimport getTSImportedNames from \"./util/getTSImportedNames\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexport function getVersion() {\n // eslint-disable-next-line\n return require(\"../package.json\").version;\n}\n\nexport function transform(code, options) {\n validateOptions(options);\n try {\n const sucraseContext = getSucraseContext(code, options);\n const transformer = new RootTransformer(\n sucraseContext,\n options.transforms,\n Boolean(options.enableLegacyBabel5ModuleInterop),\n options,\n );\n let result = {code: transformer.transform()};\n if (options.sourceMapOptions) {\n if (!options.filePath) {\n throw new Error(\"filePath must be specified when generating a source map.\");\n }\n result = {\n ...result,\n sourceMap: computeSourceMap(result.code, options.filePath, options.sourceMapOptions),\n };\n }\n return result;\n } catch (e) {\n if (options.filePath) {\n e.message = `Error transforming ${options.filePath}: ${e.message}`;\n }\n throw e;\n }\n}\n\n/**\n * Return a string representation of the sucrase tokens, mostly useful for\n * diagnostic purposes.\n */\nexport function getFormattedTokens(code, options) {\n const tokens = getSucraseContext(code, options).tokenProcessor.tokens;\n return formatTokens(code, tokens);\n}\n\n/**\n * Call into the parser/tokenizer and do some further preprocessing:\n * - Come up with a set of used names so that we can assign new names.\n * - Preprocess all import/export statements so we know which globals we are interested in.\n * - Compute situations where any of those globals are shadowed.\n *\n * In the future, some of these preprocessing steps can be skipped based on what actual work is\n * being done.\n */\nfunction getSucraseContext(code, options) {\n const isJSXEnabled = options.transforms.includes(\"jsx\");\n const isTypeScriptEnabled = options.transforms.includes(\"typescript\");\n const isFlowEnabled = options.transforms.includes(\"flow\");\n const file = parse(code, isJSXEnabled, isTypeScriptEnabled, isFlowEnabled);\n const tokens = file.tokens;\n const scopes = file.scopes;\n\n const nameManager = new NameManager(code, tokens);\n const helperManager = new HelperManager(nameManager);\n const tokenProcessor = new TokenProcessor(code, tokens, isFlowEnabled, helperManager);\n const enableLegacyTypeScriptModuleInterop = Boolean(options.enableLegacyTypeScriptModuleInterop);\n\n let importProcessor = null;\n if (options.transforms.includes(\"imports\")) {\n importProcessor = new CJSImportProcessor(\n nameManager,\n tokenProcessor,\n enableLegacyTypeScriptModuleInterop,\n options,\n options.transforms.includes(\"typescript\"),\n helperManager,\n );\n importProcessor.preprocessTokens();\n // We need to mark shadowed globals after processing imports so we know that the globals are,\n // but before type-only import pruning, since that relies on shadowing information.\n identifyShadowedGlobals(tokenProcessor, scopes, importProcessor.getGlobalNames());\n if (options.transforms.includes(\"typescript\")) {\n importProcessor.pruneTypeOnlyImports();\n }\n } else if (options.transforms.includes(\"typescript\")) {\n identifyShadowedGlobals(tokenProcessor, scopes, getTSImportedNames(tokenProcessor));\n }\n return {tokenProcessor, scopes, nameManager, importProcessor, helperManager};\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\n\nvar _base = require('./traverser/base');\nvar _index = require('./traverser/index');\n\n class File {\n \n \n\n constructor(tokens, scopes) {\n this.tokens = tokens;\n this.scopes = scopes;\n }\n} exports.File = File;\n\n function parse(\n input,\n isJSXEnabled,\n isTypeScriptEnabled,\n isFlowEnabled,\n) {\n if (isFlowEnabled && isTypeScriptEnabled) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n _base.initParser.call(void 0, input, isJSXEnabled, isTypeScriptEnabled, isFlowEnabled);\n const result = _index.parseFile.call(void 0, );\n if (_base.state.error) {\n throw _base.augmentError.call(void 0, _base.state.error);\n }\n return result;\n} exports.parse = parse;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});/* eslint max-len: 0 */\n\n\n\n\n\n\n\n\n\n\nvar _index = require('../tokenizer/index');\nvar _keywords = require('../tokenizer/keywords');\nvar _types = require('../tokenizer/types');\nvar _base = require('../traverser/base');\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _expression = require('../traverser/expression');\n\n\n\n\n\n\n\n\nvar _statement = require('../traverser/statement');\n\n\n\n\n\n\n\n\n\nvar _util = require('../traverser/util');\n\nfunction isMaybeDefaultImport(lookahead) {\n return (\n (lookahead.type === _types.TokenType.name || !!(lookahead.type & _types.TokenType.IS_KEYWORD)) &&\n lookahead.contextualKeyword !== _keywords.ContextualKeyword._from\n );\n}\n\nfunction flowParseTypeInitialiser(tok) {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _util.expect.call(void 0, tok || _types.TokenType.colon);\n flowParseType();\n _index.popTypeContext.call(void 0, oldIsType);\n}\n\nfunction flowParsePredicate() {\n _util.expect.call(void 0, _types.TokenType.modulo);\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._checks);\n if (_index.eat.call(void 0, _types.TokenType.parenL)) {\n _expression.parseExpression.call(void 0, );\n _util.expect.call(void 0, _types.TokenType.parenR);\n }\n}\n\nfunction flowParseTypeAndPredicateInitialiser() {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _util.expect.call(void 0, _types.TokenType.colon);\n if (_index.match.call(void 0, _types.TokenType.modulo)) {\n flowParsePredicate();\n } else {\n flowParseType();\n if (_index.match.call(void 0, _types.TokenType.modulo)) {\n flowParsePredicate();\n }\n }\n _index.popTypeContext.call(void 0, oldIsType);\n}\n\nfunction flowParseDeclareClass() {\n _index.next.call(void 0, );\n flowParseInterfaceish(/* isClass */ true);\n}\n\nfunction flowParseDeclareFunction() {\n _index.next.call(void 0, );\n _expression.parseIdentifier.call(void 0, );\n\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n _util.expect.call(void 0, _types.TokenType.parenL);\n flowParseFunctionTypeParams();\n _util.expect.call(void 0, _types.TokenType.parenR);\n\n flowParseTypeAndPredicateInitialiser();\n\n _util.semicolon.call(void 0, );\n}\n\nfunction flowParseDeclare() {\n if (_index.match.call(void 0, _types.TokenType._class)) {\n flowParseDeclareClass();\n } else if (_index.match.call(void 0, _types.TokenType._function)) {\n flowParseDeclareFunction();\n } else if (_index.match.call(void 0, _types.TokenType._var)) {\n flowParseDeclareVariable();\n } else if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._module)) {\n if (_index.eat.call(void 0, _types.TokenType.dot)) {\n flowParseDeclareModuleExports();\n } else {\n flowParseDeclareModule();\n }\n } else if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._type)) {\n flowParseDeclareTypeAlias();\n } else if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._opaque)) {\n flowParseDeclareOpaqueType();\n } else if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._interface)) {\n flowParseDeclareInterface();\n } else if (_index.match.call(void 0, _types.TokenType._export)) {\n flowParseDeclareExportDeclaration();\n } else {\n _util.unexpected.call(void 0, );\n }\n}\n\nfunction flowParseDeclareVariable() {\n _index.next.call(void 0, );\n flowParseTypeAnnotatableIdentifier();\n _util.semicolon.call(void 0, );\n}\n\nfunction flowParseDeclareModule() {\n if (_index.match.call(void 0, _types.TokenType.string)) {\n _expression.parseExprAtom.call(void 0, );\n } else {\n _expression.parseIdentifier.call(void 0, );\n }\n\n _util.expect.call(void 0, _types.TokenType.braceL);\n while (!_index.match.call(void 0, _types.TokenType.braceR) && !_base.state.error) {\n if (_index.match.call(void 0, _types.TokenType._import)) {\n _index.next.call(void 0, );\n _statement.parseImport.call(void 0, );\n } else {\n _util.unexpected.call(void 0, );\n }\n }\n _util.expect.call(void 0, _types.TokenType.braceR);\n}\n\nfunction flowParseDeclareExportDeclaration() {\n _util.expect.call(void 0, _types.TokenType._export);\n\n if (_index.eat.call(void 0, _types.TokenType._default)) {\n if (_index.match.call(void 0, _types.TokenType._function) || _index.match.call(void 0, _types.TokenType._class)) {\n // declare export default class ...\n // declare export default function ...\n flowParseDeclare();\n } else {\n // declare export default [type];\n flowParseType();\n _util.semicolon.call(void 0, );\n }\n } else if (\n _index.match.call(void 0, _types.TokenType._var) || // declare export var ...\n _index.match.call(void 0, _types.TokenType._function) || // declare export function ...\n _index.match.call(void 0, _types.TokenType._class) || // declare export class ...\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._opaque) // declare export opaque ..\n ) {\n flowParseDeclare();\n } else if (\n _index.match.call(void 0, _types.TokenType.star) || // declare export * from ''\n _index.match.call(void 0, _types.TokenType.braceL) || // declare export {} ...\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._interface) || // declare export interface ...\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._type) || // declare export type ...\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._opaque) // declare export opaque type ...\n ) {\n _statement.parseExport.call(void 0, );\n } else {\n _util.unexpected.call(void 0, );\n }\n}\n\nfunction flowParseDeclareModuleExports() {\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._exports);\n flowParseTypeAnnotation();\n _util.semicolon.call(void 0, );\n}\n\nfunction flowParseDeclareTypeAlias() {\n _index.next.call(void 0, );\n flowParseTypeAlias();\n}\n\nfunction flowParseDeclareOpaqueType() {\n _index.next.call(void 0, );\n flowParseOpaqueType(true);\n}\n\nfunction flowParseDeclareInterface() {\n _index.next.call(void 0, );\n flowParseInterfaceish();\n}\n\n// Interfaces\n\nfunction flowParseInterfaceish(isClass = false) {\n flowParseRestrictedIdentifier();\n\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n if (_index.eat.call(void 0, _types.TokenType._extends)) {\n do {\n flowParseInterfaceExtends();\n } while (!isClass && _index.eat.call(void 0, _types.TokenType.comma));\n }\n\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._mixins)) {\n _index.next.call(void 0, );\n do {\n flowParseInterfaceExtends();\n } while (_index.eat.call(void 0, _types.TokenType.comma));\n }\n\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._implements)) {\n _index.next.call(void 0, );\n do {\n flowParseInterfaceExtends();\n } while (_index.eat.call(void 0, _types.TokenType.comma));\n }\n\n flowParseObjectType(isClass, false, isClass);\n}\n\nfunction flowParseInterfaceExtends() {\n flowParseQualifiedTypeIdentifier(false);\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n}\n\nfunction flowParseInterface() {\n flowParseInterfaceish();\n}\n\nfunction flowParseRestrictedIdentifier() {\n _expression.parseIdentifier.call(void 0, );\n}\n\nfunction flowParseTypeAlias() {\n flowParseRestrictedIdentifier();\n\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n flowParseTypeInitialiser(_types.TokenType.eq);\n _util.semicolon.call(void 0, );\n}\n\nfunction flowParseOpaqueType(declare) {\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._type);\n flowParseRestrictedIdentifier();\n\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n // Parse the supertype\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n flowParseTypeInitialiser(_types.TokenType.colon);\n }\n\n if (!declare) {\n flowParseTypeInitialiser(_types.TokenType.eq);\n }\n _util.semicolon.call(void 0, );\n}\n\nfunction flowParseTypeParameter() {\n flowParseVariance();\n flowParseTypeAnnotatableIdentifier();\n\n if (_index.eat.call(void 0, _types.TokenType.eq)) {\n flowParseType();\n }\n}\n\n function flowParseTypeParameterDeclaration() {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n // istanbul ignore else: this condition is already checked at all call sites\n if (_index.match.call(void 0, _types.TokenType.lessThan) || _index.match.call(void 0, _types.TokenType.typeParameterStart)) {\n _index.next.call(void 0, );\n } else {\n _util.unexpected.call(void 0, );\n }\n\n do {\n flowParseTypeParameter();\n if (!_index.match.call(void 0, _types.TokenType.greaterThan)) {\n _util.expect.call(void 0, _types.TokenType.comma);\n }\n } while (!_index.match.call(void 0, _types.TokenType.greaterThan) && !_base.state.error);\n _util.expect.call(void 0, _types.TokenType.greaterThan);\n _index.popTypeContext.call(void 0, oldIsType);\n} exports.flowParseTypeParameterDeclaration = flowParseTypeParameterDeclaration;\n\nfunction flowParseTypeParameterInstantiation() {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _util.expect.call(void 0, _types.TokenType.lessThan);\n while (!_index.match.call(void 0, _types.TokenType.greaterThan) && !_base.state.error) {\n flowParseType();\n if (!_index.match.call(void 0, _types.TokenType.greaterThan)) {\n _util.expect.call(void 0, _types.TokenType.comma);\n }\n }\n _util.expect.call(void 0, _types.TokenType.greaterThan);\n _index.popTypeContext.call(void 0, oldIsType);\n}\n\nfunction flowParseInterfaceType() {\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._interface);\n if (_index.eat.call(void 0, _types.TokenType._extends)) {\n do {\n flowParseInterfaceExtends();\n } while (_index.eat.call(void 0, _types.TokenType.comma));\n }\n flowParseObjectType(false, false, false);\n}\n\nfunction flowParseObjectPropertyKey() {\n if (_index.match.call(void 0, _types.TokenType.num) || _index.match.call(void 0, _types.TokenType.string)) {\n _expression.parseExprAtom.call(void 0, );\n } else {\n _expression.parseIdentifier.call(void 0, );\n }\n}\n\nfunction flowParseObjectTypeIndexer() {\n // Note: bracketL has already been consumed\n if (_index.lookaheadType.call(void 0, ) === _types.TokenType.colon) {\n flowParseObjectPropertyKey();\n flowParseTypeInitialiser();\n } else {\n flowParseType();\n }\n _util.expect.call(void 0, _types.TokenType.bracketR);\n flowParseTypeInitialiser();\n}\n\nfunction flowParseObjectTypeInternalSlot() {\n // Note: both bracketL have already been consumed\n flowParseObjectPropertyKey();\n _util.expect.call(void 0, _types.TokenType.bracketR);\n _util.expect.call(void 0, _types.TokenType.bracketR);\n if (_index.match.call(void 0, _types.TokenType.lessThan) || _index.match.call(void 0, _types.TokenType.parenL)) {\n flowParseObjectTypeMethodish();\n } else {\n _index.eat.call(void 0, _types.TokenType.question);\n flowParseTypeInitialiser();\n }\n}\n\nfunction flowParseObjectTypeMethodish() {\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n _util.expect.call(void 0, _types.TokenType.parenL);\n while (!_index.match.call(void 0, _types.TokenType.parenR) && !_index.match.call(void 0, _types.TokenType.ellipsis) && !_base.state.error) {\n flowParseFunctionTypeParam();\n if (!_index.match.call(void 0, _types.TokenType.parenR)) {\n _util.expect.call(void 0, _types.TokenType.comma);\n }\n }\n\n if (_index.eat.call(void 0, _types.TokenType.ellipsis)) {\n flowParseFunctionTypeParam();\n }\n _util.expect.call(void 0, _types.TokenType.parenR);\n flowParseTypeInitialiser();\n}\n\nfunction flowParseObjectTypeCallProperty() {\n flowParseObjectTypeMethodish();\n}\n\nfunction flowParseObjectType(allowStatic, allowExact, allowProto) {\n let endDelim;\n if (allowExact && _index.match.call(void 0, _types.TokenType.braceBarL)) {\n _util.expect.call(void 0, _types.TokenType.braceBarL);\n endDelim = _types.TokenType.braceBarR;\n } else {\n _util.expect.call(void 0, _types.TokenType.braceL);\n endDelim = _types.TokenType.braceR;\n }\n\n while (!_index.match.call(void 0, endDelim) && !_base.state.error) {\n if (allowProto && _util.isContextual.call(void 0, _keywords.ContextualKeyword._proto)) {\n const lookahead = _index.lookaheadType.call(void 0, );\n if (lookahead !== _types.TokenType.colon && lookahead !== _types.TokenType.question) {\n _index.next.call(void 0, );\n allowStatic = false;\n }\n }\n if (allowStatic && _util.isContextual.call(void 0, _keywords.ContextualKeyword._static)) {\n const lookahead = _index.lookaheadType.call(void 0, );\n if (lookahead !== _types.TokenType.colon && lookahead !== _types.TokenType.question) {\n _index.next.call(void 0, );\n }\n }\n\n flowParseVariance();\n\n if (_index.eat.call(void 0, _types.TokenType.bracketL)) {\n if (_index.eat.call(void 0, _types.TokenType.bracketL)) {\n flowParseObjectTypeInternalSlot();\n } else {\n flowParseObjectTypeIndexer();\n }\n } else if (_index.match.call(void 0, _types.TokenType.parenL) || _index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseObjectTypeCallProperty();\n } else {\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._get) || _util.isContextual.call(void 0, _keywords.ContextualKeyword._set)) {\n const lookahead = _index.lookaheadType.call(void 0, );\n if (lookahead === _types.TokenType.name || lookahead === _types.TokenType.string || lookahead === _types.TokenType.num) {\n _index.next.call(void 0, );\n }\n }\n\n flowParseObjectTypeProperty();\n }\n\n flowObjectTypeSemicolon();\n }\n\n _util.expect.call(void 0, endDelim);\n}\n\nfunction flowParseObjectTypeProperty() {\n if (_index.match.call(void 0, _types.TokenType.ellipsis)) {\n _util.expect.call(void 0, _types.TokenType.ellipsis);\n if (!_index.eat.call(void 0, _types.TokenType.comma)) {\n _index.eat.call(void 0, _types.TokenType.semi);\n }\n // Explicit inexact object syntax.\n if (_index.match.call(void 0, _types.TokenType.braceR)) {\n return;\n }\n flowParseType();\n } else {\n flowParseObjectPropertyKey();\n if (_index.match.call(void 0, _types.TokenType.lessThan) || _index.match.call(void 0, _types.TokenType.parenL)) {\n // This is a method property\n flowParseObjectTypeMethodish();\n } else {\n _index.eat.call(void 0, _types.TokenType.question);\n flowParseTypeInitialiser();\n }\n }\n}\n\nfunction flowObjectTypeSemicolon() {\n if (!_index.eat.call(void 0, _types.TokenType.semi) && !_index.eat.call(void 0, _types.TokenType.comma) && !_index.match.call(void 0, _types.TokenType.braceR) && !_index.match.call(void 0, _types.TokenType.braceBarR)) {\n _util.unexpected.call(void 0, );\n }\n}\n\nfunction flowParseQualifiedTypeIdentifier(initialIdAlreadyParsed) {\n if (!initialIdAlreadyParsed) {\n _expression.parseIdentifier.call(void 0, );\n }\n while (_index.eat.call(void 0, _types.TokenType.dot)) {\n _expression.parseIdentifier.call(void 0, );\n }\n}\n\nfunction flowParseGenericType() {\n flowParseQualifiedTypeIdentifier(true);\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n}\n\nfunction flowParseTypeofType() {\n _util.expect.call(void 0, _types.TokenType._typeof);\n flowParsePrimaryType();\n}\n\nfunction flowParseTupleType() {\n _util.expect.call(void 0, _types.TokenType.bracketL);\n // We allow trailing commas\n while (_base.state.pos < _base.input.length && !_index.match.call(void 0, _types.TokenType.bracketR)) {\n flowParseType();\n if (_index.match.call(void 0, _types.TokenType.bracketR)) {\n break;\n }\n _util.expect.call(void 0, _types.TokenType.comma);\n }\n _util.expect.call(void 0, _types.TokenType.bracketR);\n}\n\nfunction flowParseFunctionTypeParam() {\n const lookahead = _index.lookaheadType.call(void 0, );\n if (lookahead === _types.TokenType.colon || lookahead === _types.TokenType.question) {\n _expression.parseIdentifier.call(void 0, );\n _index.eat.call(void 0, _types.TokenType.question);\n flowParseTypeInitialiser();\n } else {\n flowParseType();\n }\n}\n\nfunction flowParseFunctionTypeParams() {\n while (!_index.match.call(void 0, _types.TokenType.parenR) && !_index.match.call(void 0, _types.TokenType.ellipsis) && !_base.state.error) {\n flowParseFunctionTypeParam();\n if (!_index.match.call(void 0, _types.TokenType.parenR)) {\n _util.expect.call(void 0, _types.TokenType.comma);\n }\n }\n if (_index.eat.call(void 0, _types.TokenType.ellipsis)) {\n flowParseFunctionTypeParam();\n }\n}\n\n// The parsing of types roughly parallels the parsing of expressions, and\n// primary types are kind of like primary expressions...they're the\n// primitives with which other types are constructed.\nfunction flowParsePrimaryType() {\n let isGroupedType = false;\n const oldNoAnonFunctionType = _base.state.noAnonFunctionType;\n\n switch (_base.state.type) {\n case _types.TokenType.name: {\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._interface)) {\n flowParseInterfaceType();\n return;\n }\n _expression.parseIdentifier.call(void 0, );\n flowParseGenericType();\n return;\n }\n\n case _types.TokenType.braceL:\n flowParseObjectType(false, false, false);\n return;\n\n case _types.TokenType.braceBarL:\n flowParseObjectType(false, true, false);\n return;\n\n case _types.TokenType.bracketL:\n flowParseTupleType();\n return;\n\n case _types.TokenType.lessThan:\n flowParseTypeParameterDeclaration();\n _util.expect.call(void 0, _types.TokenType.parenL);\n flowParseFunctionTypeParams();\n _util.expect.call(void 0, _types.TokenType.parenR);\n _util.expect.call(void 0, _types.TokenType.arrow);\n flowParseType();\n return;\n\n case _types.TokenType.parenL:\n _index.next.call(void 0, );\n\n // Check to see if this is actually a grouped type\n if (!_index.match.call(void 0, _types.TokenType.parenR) && !_index.match.call(void 0, _types.TokenType.ellipsis)) {\n if (_index.match.call(void 0, _types.TokenType.name)) {\n const token = _index.lookaheadType.call(void 0, );\n isGroupedType = token !== _types.TokenType.question && token !== _types.TokenType.colon;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n _base.state.noAnonFunctionType = false;\n flowParseType();\n _base.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n // A `,` or a `) =>` means this is an anonymous function type\n if (\n _base.state.noAnonFunctionType ||\n !(_index.match.call(void 0, _types.TokenType.comma) || (_index.match.call(void 0, _types.TokenType.parenR) && _index.lookaheadType.call(void 0, ) === _types.TokenType.arrow))\n ) {\n _util.expect.call(void 0, _types.TokenType.parenR);\n return;\n } else {\n // Eat a comma if there is one\n _index.eat.call(void 0, _types.TokenType.comma);\n }\n }\n\n flowParseFunctionTypeParams();\n\n _util.expect.call(void 0, _types.TokenType.parenR);\n _util.expect.call(void 0, _types.TokenType.arrow);\n flowParseType();\n return;\n\n case _types.TokenType.minus:\n _index.next.call(void 0, );\n _expression.parseLiteral.call(void 0, );\n return;\n\n case _types.TokenType.string:\n case _types.TokenType.num:\n case _types.TokenType._true:\n case _types.TokenType._false:\n case _types.TokenType._null:\n case _types.TokenType._this:\n case _types.TokenType._void:\n case _types.TokenType.star:\n _index.next.call(void 0, );\n return;\n\n default:\n if (_base.state.type === _types.TokenType._typeof) {\n flowParseTypeofType();\n return;\n } else if (_base.state.type & _types.TokenType.IS_KEYWORD) {\n _index.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType.name;\n return;\n }\n }\n\n _util.unexpected.call(void 0, );\n}\n\nfunction flowParsePostfixType() {\n flowParsePrimaryType();\n while (!_util.canInsertSemicolon.call(void 0, ) && _index.match.call(void 0, _types.TokenType.bracketL)) {\n _util.expect.call(void 0, _types.TokenType.bracketL);\n _util.expect.call(void 0, _types.TokenType.bracketR);\n }\n}\n\nfunction flowParsePrefixType() {\n if (_index.eat.call(void 0, _types.TokenType.question)) {\n flowParsePrefixType();\n } else {\n flowParsePostfixType();\n }\n}\n\nfunction flowParseAnonFunctionWithoutParens() {\n flowParsePrefixType();\n if (!_base.state.noAnonFunctionType && _index.eat.call(void 0, _types.TokenType.arrow)) {\n flowParseType();\n }\n}\n\nfunction flowParseIntersectionType() {\n _index.eat.call(void 0, _types.TokenType.bitwiseAND);\n flowParseAnonFunctionWithoutParens();\n while (_index.eat.call(void 0, _types.TokenType.bitwiseAND)) {\n flowParseAnonFunctionWithoutParens();\n }\n}\n\nfunction flowParseUnionType() {\n _index.eat.call(void 0, _types.TokenType.bitwiseOR);\n flowParseIntersectionType();\n while (_index.eat.call(void 0, _types.TokenType.bitwiseOR)) {\n flowParseIntersectionType();\n }\n}\n\nfunction flowParseType() {\n flowParseUnionType();\n}\n\n function flowParseTypeAnnotation() {\n flowParseTypeInitialiser();\n} exports.flowParseTypeAnnotation = flowParseTypeAnnotation;\n\nfunction flowParseTypeAnnotatableIdentifier() {\n _expression.parseIdentifier.call(void 0, );\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n flowParseTypeAnnotation();\n }\n}\n\n function flowParseVariance() {\n if (_index.match.call(void 0, _types.TokenType.plus) || _index.match.call(void 0, _types.TokenType.minus)) {\n _index.next.call(void 0, );\n }\n} exports.flowParseVariance = flowParseVariance;\n\n// ==================================\n// Overrides\n// ==================================\n\n function flowParseFunctionBodyAndFinish(funcContextId) {\n // For arrow functions, `parseArrow` handles the return type itself.\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n flowParseTypeAndPredicateInitialiser();\n }\n\n _expression.parseFunctionBody.call(void 0, false, funcContextId);\n} exports.flowParseFunctionBodyAndFinish = flowParseFunctionBodyAndFinish;\n\n function flowParseSubscript(\n startTokenIndex,\n noCalls,\n stopState,\n) {\n if (_index.match.call(void 0, _types.TokenType.questionDot) && _index.lookaheadType.call(void 0, ) === _types.TokenType.lessThan) {\n if (noCalls) {\n stopState.stop = true;\n return;\n }\n _index.next.call(void 0, );\n flowParseTypeParameterInstantiation();\n _util.expect.call(void 0, _types.TokenType.parenL);\n _expression.parseCallExpressionArguments.call(void 0, );\n return;\n } else if (!noCalls && _index.match.call(void 0, _types.TokenType.lessThan)) {\n const snapshot = _base.state.snapshot();\n flowParseTypeParameterInstantiation();\n _util.expect.call(void 0, _types.TokenType.parenL);\n _expression.parseCallExpressionArguments.call(void 0, );\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n } else {\n return;\n }\n }\n _expression.baseParseSubscript.call(void 0, startTokenIndex, noCalls, stopState);\n} exports.flowParseSubscript = flowParseSubscript;\n\n function flowStartParseNewArguments() {\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n const snapshot = _base.state.snapshot();\n flowParseTypeParameterInstantiation();\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n }\n }\n} exports.flowStartParseNewArguments = flowStartParseNewArguments;\n\n// interfaces\n function flowTryParseStatement() {\n if (_index.match.call(void 0, _types.TokenType.name) && _base.state.contextualKeyword === _keywords.ContextualKeyword._interface) {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _index.next.call(void 0, );\n flowParseInterface();\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n } else {\n return false;\n }\n} exports.flowTryParseStatement = flowTryParseStatement;\n\n// declares, interfaces and type aliases\n function flowParseIdentifierStatement(contextualKeyword) {\n if (contextualKeyword === _keywords.ContextualKeyword._declare) {\n if (\n _index.match.call(void 0, _types.TokenType._class) ||\n _index.match.call(void 0, _types.TokenType.name) ||\n _index.match.call(void 0, _types.TokenType._function) ||\n _index.match.call(void 0, _types.TokenType._var) ||\n _index.match.call(void 0, _types.TokenType._export)\n ) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n flowParseDeclare();\n _index.popTypeContext.call(void 0, oldIsType);\n }\n } else if (_index.match.call(void 0, _types.TokenType.name)) {\n if (contextualKeyword === _keywords.ContextualKeyword._interface) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n flowParseInterface();\n _index.popTypeContext.call(void 0, oldIsType);\n } else if (contextualKeyword === _keywords.ContextualKeyword._type) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n flowParseTypeAlias();\n _index.popTypeContext.call(void 0, oldIsType);\n } else if (contextualKeyword === _keywords.ContextualKeyword._opaque) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n flowParseOpaqueType(false);\n _index.popTypeContext.call(void 0, oldIsType);\n }\n }\n _util.semicolon.call(void 0, );\n} exports.flowParseIdentifierStatement = flowParseIdentifierStatement;\n\n// export type\n function flowShouldParseExportDeclaration() {\n return (\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._type) ||\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._interface) ||\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._opaque)\n );\n} exports.flowShouldParseExportDeclaration = flowShouldParseExportDeclaration;\n\n function flowShouldDisallowExportDefaultSpecifier() {\n return (\n _index.match.call(void 0, _types.TokenType.name) &&\n (_base.state.contextualKeyword === _keywords.ContextualKeyword._type ||\n _base.state.contextualKeyword === _keywords.ContextualKeyword._interface ||\n _base.state.contextualKeyword === _keywords.ContextualKeyword._opaque)\n );\n} exports.flowShouldDisallowExportDefaultSpecifier = flowShouldDisallowExportDefaultSpecifier;\n\n function flowParseExportDeclaration() {\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._type)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n _index.next.call(void 0, );\n\n if (_index.match.call(void 0, _types.TokenType.braceL)) {\n // export type { foo, bar };\n _statement.parseExportSpecifiers.call(void 0, );\n _statement.parseExportFrom.call(void 0, );\n } else {\n // export type Foo = Bar;\n flowParseTypeAlias();\n }\n _index.popTypeContext.call(void 0, oldIsType);\n } else if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._opaque)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n _index.next.call(void 0, );\n // export opaque type Foo = Bar;\n flowParseOpaqueType(false);\n _index.popTypeContext.call(void 0, oldIsType);\n } else if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._interface)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n _index.next.call(void 0, );\n flowParseInterface();\n _index.popTypeContext.call(void 0, oldIsType);\n } else {\n _statement.parseStatement.call(void 0, true);\n }\n} exports.flowParseExportDeclaration = flowParseExportDeclaration;\n\n function flowShouldParseExportStar() {\n return _index.match.call(void 0, _types.TokenType.star) || (_util.isContextual.call(void 0, _keywords.ContextualKeyword._type) && _index.lookaheadType.call(void 0, ) === _types.TokenType.star);\n} exports.flowShouldParseExportStar = flowShouldParseExportStar;\n\n function flowParseExportStar() {\n if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._type)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 2);\n _statement.baseParseExportStar.call(void 0, );\n _index.popTypeContext.call(void 0, oldIsType);\n } else {\n _statement.baseParseExportStar.call(void 0, );\n }\n} exports.flowParseExportStar = flowParseExportStar;\n\n// parse a the super class type parameters and implements\n function flowAfterParseClassSuper(hasSuper) {\n if (hasSuper && _index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._implements)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _index.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._implements;\n do {\n flowParseRestrictedIdentifier();\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n } while (_index.eat.call(void 0, _types.TokenType.comma));\n _index.popTypeContext.call(void 0, oldIsType);\n }\n} exports.flowAfterParseClassSuper = flowAfterParseClassSuper;\n\n// parse type parameters for object method shorthand\n function flowStartParseObjPropValue() {\n // method shorthand\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n flowParseTypeParameterDeclaration();\n if (!_index.match.call(void 0, _types.TokenType.parenL)) _util.unexpected.call(void 0, );\n }\n} exports.flowStartParseObjPropValue = flowStartParseObjPropValue;\n\n function flowParseAssignableListItemTypes() {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _index.eat.call(void 0, _types.TokenType.question);\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n flowParseTypeAnnotation();\n }\n _index.popTypeContext.call(void 0, oldIsType);\n} exports.flowParseAssignableListItemTypes = flowParseAssignableListItemTypes;\n\n// parse typeof and type imports\n function flowStartParseImportSpecifiers() {\n if (_index.match.call(void 0, _types.TokenType._typeof) || _util.isContextual.call(void 0, _keywords.ContextualKeyword._type)) {\n const lh = _index.lookaheadTypeAndKeyword.call(void 0, );\n if (isMaybeDefaultImport(lh) || lh.type === _types.TokenType.braceL || lh.type === _types.TokenType.star) {\n _index.next.call(void 0, );\n }\n }\n} exports.flowStartParseImportSpecifiers = flowStartParseImportSpecifiers;\n\n// parse import-type/typeof shorthand\n function flowParseImportSpecifier() {\n const isTypeKeyword =\n _base.state.contextualKeyword === _keywords.ContextualKeyword._type || _base.state.type === _types.TokenType._typeof;\n if (isTypeKeyword) {\n _index.next.call(void 0, );\n } else {\n _expression.parseIdentifier.call(void 0, );\n }\n\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._as) && !_util.isLookaheadContextual.call(void 0, _keywords.ContextualKeyword._as)) {\n _expression.parseIdentifier.call(void 0, );\n if (isTypeKeyword && !_index.match.call(void 0, _types.TokenType.name) && !(_base.state.type & _types.TokenType.IS_KEYWORD)) {\n // `import {type as ,` or `import {type as }`\n } else {\n // `import {type as foo`\n _expression.parseIdentifier.call(void 0, );\n }\n } else if (isTypeKeyword && (_index.match.call(void 0, _types.TokenType.name) || !!(_base.state.type & _types.TokenType.IS_KEYWORD))) {\n // `import {type foo`\n _expression.parseIdentifier.call(void 0, );\n if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._as)) {\n _expression.parseIdentifier.call(void 0, );\n }\n }\n} exports.flowParseImportSpecifier = flowParseImportSpecifier;\n\n// parse function type parameters - function foo<T>() {}\n function flowStartParseFunctionParams() {\n // Originally this checked if the method is a getter/setter, but if it was, we'd crash soon\n // anyway, so don't try to propagate that information.\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n flowParseTypeParameterDeclaration();\n _index.popTypeContext.call(void 0, oldIsType);\n }\n} exports.flowStartParseFunctionParams = flowStartParseFunctionParams;\n\n// parse flow type annotations on variable declarator heads - let foo: string = bar\n function flowAfterParseVarHead() {\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n flowParseTypeAnnotation();\n }\n} exports.flowAfterParseVarHead = flowAfterParseVarHead;\n\n// parse the return type of an async arrow function - let foo = (async (): number => {});\n function flowStartParseAsyncArrowFromCallExpression() {\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n const oldNoAnonFunctionType = _base.state.noAnonFunctionType;\n _base.state.noAnonFunctionType = true;\n flowParseTypeAnnotation();\n _base.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n} exports.flowStartParseAsyncArrowFromCallExpression = flowStartParseAsyncArrowFromCallExpression;\n\n// We need to support type parameter declarations for arrow functions. This\n// is tricky. There are three situations we need to handle\n//\n// 1. This is either JSX or an arrow function. We'll try JSX first. If that\n// fails, we'll try an arrow function. If that fails, we'll throw the JSX\n// error.\n// 2. This is an arrow function. We'll parse the type parameter declaration,\n// parse the rest, make sure the rest is an arrow function, and go from\n// there\n// 3. This is neither. Just call the super method\n function flowParseMaybeAssign(noIn, isWithinParens) {\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n const snapshot = _base.state.snapshot();\n let wasArrow = _expression.baseParseMaybeAssign.call(void 0, noIn, isWithinParens);\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n _base.state.type = _types.TokenType.typeParameterStart;\n } else {\n return wasArrow;\n }\n\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n flowParseTypeParameterDeclaration();\n _index.popTypeContext.call(void 0, oldIsType);\n wasArrow = _expression.baseParseMaybeAssign.call(void 0, noIn, isWithinParens);\n if (wasArrow) {\n return true;\n }\n _util.unexpected.call(void 0, );\n }\n\n return _expression.baseParseMaybeAssign.call(void 0, noIn, isWithinParens);\n} exports.flowParseMaybeAssign = flowParseMaybeAssign;\n\n// handle return types for arrow functions\n function flowParseArrow() {\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n const snapshot = _base.state.snapshot();\n\n const oldNoAnonFunctionType = _base.state.noAnonFunctionType;\n _base.state.noAnonFunctionType = true;\n flowParseTypeAndPredicateInitialiser();\n _base.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (_util.canInsertSemicolon.call(void 0, )) _util.unexpected.call(void 0, );\n if (!_index.match.call(void 0, _types.TokenType.arrow)) _util.unexpected.call(void 0, );\n\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n }\n _index.popTypeContext.call(void 0, oldIsType);\n }\n return _index.eat.call(void 0, _types.TokenType.arrow);\n} exports.flowParseArrow = flowParseArrow;\n\n function flowParseSubscripts(startTokenIndex, noCalls = false) {\n if (\n _base.state.tokens[_base.state.tokens.length - 1].contextualKeyword === _keywords.ContextualKeyword._async &&\n _index.match.call(void 0, _types.TokenType.lessThan)\n ) {\n const snapshot = _base.state.snapshot();\n const wasArrow = parseAsyncArrowWithTypeParameters();\n if (wasArrow && !_base.state.error) {\n return;\n }\n _base.state.restoreFromSnapshot(snapshot);\n }\n\n _expression.baseParseSubscripts.call(void 0, startTokenIndex, noCalls);\n} exports.flowParseSubscripts = flowParseSubscripts;\n\n// Returns true if there was an arrow function here.\nfunction parseAsyncArrowWithTypeParameters() {\n _base.state.scopeDepth++;\n const startTokenIndex = _base.state.tokens.length;\n _statement.parseFunctionParams.call(void 0, );\n if (!_expression.parseArrow.call(void 0, )) {\n return false;\n }\n _expression.parseArrowExpression.call(void 0, startTokenIndex);\n return true;\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\n\n\n\n\n\n\n\n\nvar _index = require('../../tokenizer/index');\nvar _types = require('../../tokenizer/types');\nvar _base = require('../../traverser/base');\nvar _expression = require('../../traverser/expression');\nvar _util = require('../../traverser/util');\nvar _charcodes = require('../../util/charcodes');\nvar _identifier = require('../../util/identifier');\nvar _typescript = require('../typescript');\n\n// Reads inline JSX contents token.\nfunction jsxReadToken() {\n for (;;) {\n if (_base.state.pos >= _base.input.length) {\n _util.unexpected.call(void 0, \"Unterminated JSX contents\");\n return;\n }\n\n const ch = _base.input.charCodeAt(_base.state.pos);\n\n switch (ch) {\n case _charcodes.charCodes.lessThan:\n case _charcodes.charCodes.leftCurlyBrace:\n if (_base.state.pos === _base.state.start) {\n if (ch === _charcodes.charCodes.lessThan) {\n _base.state.pos++;\n _index.finishToken.call(void 0, _types.TokenType.jsxTagStart);\n return;\n }\n _index.getTokenFromCode.call(void 0, ch);\n return;\n }\n _index.finishToken.call(void 0, _types.TokenType.jsxText);\n return;\n\n default:\n _base.state.pos++;\n }\n }\n}\n\nfunction jsxReadString(quote) {\n _base.state.pos++;\n for (;;) {\n if (_base.state.pos >= _base.input.length) {\n _util.unexpected.call(void 0, \"Unterminated string constant\");\n return;\n }\n\n const ch = _base.input.charCodeAt(_base.state.pos);\n if (ch === quote) {\n _base.state.pos++;\n break;\n }\n _base.state.pos++;\n }\n _index.finishToken.call(void 0, _types.TokenType.string);\n}\n\n// Read a JSX identifier (valid tag or attribute name).\n//\n// Optimized version since JSX identifiers can't contain\n// escape characters and so can be read as single slice.\n// Also assumes that first character was already checked\n// by isIdentifierStart in readToken.\n\nfunction jsxReadWord() {\n let ch;\n do {\n if (_base.state.pos > _base.input.length) {\n _util.unexpected.call(void 0, \"Unexpectedly reached the end of input.\");\n return;\n }\n ch = _base.input.charCodeAt(++_base.state.pos);\n } while (_identifier.IS_IDENTIFIER_CHAR[ch] || ch === _charcodes.charCodes.dash);\n _index.finishToken.call(void 0, _types.TokenType.jsxName);\n}\n\n// Parse next token as JSX identifier\nfunction jsxParseIdentifier() {\n nextJSXTagToken();\n}\n\n// Parse namespaced identifier.\nfunction jsxParseNamespacedName(identifierRole) {\n jsxParseIdentifier();\n if (!_index.eat.call(void 0, _types.TokenType.colon)) {\n // Plain identifier, so this is an access.\n _base.state.tokens[_base.state.tokens.length - 1].identifierRole = identifierRole;\n return;\n }\n // Process the second half of the namespaced name.\n jsxParseIdentifier();\n}\n\n// Parses element name in any form - namespaced, member\n// or single identifier.\nfunction jsxParseElementName() {\n jsxParseNamespacedName(_index.IdentifierRole.Access);\n while (_index.match.call(void 0, _types.TokenType.dot)) {\n nextJSXTagToken();\n jsxParseIdentifier();\n }\n}\n\n// Parses any type of JSX attribute value.\nfunction jsxParseAttributeValue() {\n switch (_base.state.type) {\n case _types.TokenType.braceL:\n _index.next.call(void 0, );\n jsxParseExpressionContainer();\n nextJSXTagToken();\n return;\n\n case _types.TokenType.jsxTagStart:\n jsxParseElement();\n nextJSXTagToken();\n return;\n\n case _types.TokenType.string:\n nextJSXTagToken();\n return;\n\n default:\n _util.unexpected.call(void 0, \"JSX value should be either an expression or a quoted JSX text\");\n }\n}\n\nfunction jsxParseEmptyExpression() {\n // Do nothing.\n}\n\n// Parse JSX spread child, after already processing the {\n// Does not parse the closing }\nfunction jsxParseSpreadChild() {\n _util.expect.call(void 0, _types.TokenType.ellipsis);\n _expression.parseExpression.call(void 0, );\n}\n\n// Parses JSX expression enclosed into curly brackets, after already processing the {\n// Does not parse the closing }\nfunction jsxParseExpressionContainer() {\n if (_index.match.call(void 0, _types.TokenType.braceR)) {\n jsxParseEmptyExpression();\n } else {\n _expression.parseExpression.call(void 0, );\n }\n}\n\n// Parses following JSX attribute name-value pair.\nfunction jsxParseAttribute() {\n if (_index.eat.call(void 0, _types.TokenType.braceL)) {\n _util.expect.call(void 0, _types.TokenType.ellipsis);\n _expression.parseMaybeAssign.call(void 0, );\n // }\n nextJSXTagToken();\n return;\n }\n jsxParseNamespacedName(_index.IdentifierRole.ObjectKey);\n if (_index.match.call(void 0, _types.TokenType.eq)) {\n nextJSXTagToken();\n jsxParseAttributeValue();\n }\n}\n\n// Parses JSX opening tag starting after \"<\".\n// Returns true if the tag was self-closing.\n// Does not parse the last token.\nfunction jsxParseOpeningElement() {\n if (_index.match.call(void 0, _types.TokenType.jsxTagEnd)) {\n // This is an open-fragment.\n return false;\n }\n jsxParseElementName();\n if (_base.isTypeScriptEnabled) {\n _typescript.tsTryParseJSXTypeArgument.call(void 0, );\n }\n while (!_index.match.call(void 0, _types.TokenType.slash) && !_index.match.call(void 0, _types.TokenType.jsxTagEnd) && !_base.state.error) {\n jsxParseAttribute();\n }\n const isSelfClosing = _index.match.call(void 0, _types.TokenType.slash);\n if (isSelfClosing) {\n // /\n nextJSXTagToken();\n }\n return isSelfClosing;\n}\n\n// Parses JSX closing tag starting after \"</\".\n// Does not parse the last token.\nfunction jsxParseClosingElement() {\n if (_index.match.call(void 0, _types.TokenType.jsxTagEnd)) {\n // Fragment syntax, so we immediately have a tag end.\n return;\n }\n jsxParseElementName();\n}\n\n// Parses entire JSX element, including its opening tag\n// (starting after \"<\"), attributes, contents and closing tag.\n// Does not parse the last token.\nfunction jsxParseElementAt() {\n const isSelfClosing = jsxParseOpeningElement();\n if (!isSelfClosing) {\n nextJSXExprToken();\n while (true) {\n switch (_base.state.type) {\n case _types.TokenType.jsxTagStart:\n nextJSXTagToken();\n if (_index.match.call(void 0, _types.TokenType.slash)) {\n nextJSXTagToken();\n jsxParseClosingElement();\n return;\n }\n jsxParseElementAt();\n nextJSXExprToken();\n break;\n\n case _types.TokenType.jsxText:\n nextJSXExprToken();\n break;\n\n case _types.TokenType.braceL:\n _index.next.call(void 0, );\n if (_index.match.call(void 0, _types.TokenType.ellipsis)) {\n jsxParseSpreadChild();\n nextJSXExprToken();\n } else {\n jsxParseExpressionContainer();\n nextJSXExprToken();\n }\n\n break;\n\n // istanbul ignore next - should never happen\n default:\n _util.unexpected.call(void 0, );\n return;\n }\n }\n }\n}\n\n// Parses entire JSX element from current position.\n// Does not parse the last token.\n function jsxParseElement() {\n nextJSXTagToken();\n jsxParseElementAt();\n} exports.jsxParseElement = jsxParseElement;\n\n// ==================================\n// Overrides\n// ==================================\n\n function nextJSXTagToken() {\n _base.state.tokens.push(new (0, _index.Token)());\n _index.skipSpace.call(void 0, );\n _base.state.start = _base.state.pos;\n const code = _base.input.charCodeAt(_base.state.pos);\n\n if (_identifier.IS_IDENTIFIER_START[code]) {\n jsxReadWord();\n } else if (code === _charcodes.charCodes.quotationMark || code === _charcodes.charCodes.apostrophe) {\n jsxReadString(code);\n } else {\n // The following tokens are just one character each.\n ++_base.state.pos;\n switch (code) {\n case _charcodes.charCodes.greaterThan:\n _index.finishToken.call(void 0, _types.TokenType.jsxTagEnd);\n break;\n case _charcodes.charCodes.lessThan:\n _index.finishToken.call(void 0, _types.TokenType.jsxTagStart);\n break;\n case _charcodes.charCodes.slash:\n _index.finishToken.call(void 0, _types.TokenType.slash);\n break;\n case _charcodes.charCodes.equalsTo:\n _index.finishToken.call(void 0, _types.TokenType.eq);\n break;\n case _charcodes.charCodes.leftCurlyBrace:\n _index.finishToken.call(void 0, _types.TokenType.braceL);\n break;\n case _charcodes.charCodes.dot:\n _index.finishToken.call(void 0, _types.TokenType.dot);\n break;\n case _charcodes.charCodes.colon:\n _index.finishToken.call(void 0, _types.TokenType.colon);\n break;\n default:\n _util.unexpected.call(void 0, );\n }\n }\n} exports.nextJSXTagToken = nextJSXTagToken;\n\nfunction nextJSXExprToken() {\n _base.state.tokens.push(new (0, _index.Token)());\n _base.state.start = _base.state.pos;\n jsxReadToken();\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});const entities = {\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};\nexports. default = entities;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _index = require('../tokenizer/index');\nvar _types = require('../tokenizer/types');\nvar _base = require('../traverser/base');\nvar _expression = require('../traverser/expression');\nvar _flow = require('./flow');\nvar _typescript = require('./typescript');\n\n/**\n * Common parser code for TypeScript and Flow.\n */\n\n// An apparent conditional expression could actually be an optional parameter in an arrow function.\n function typedParseConditional(noIn) {\n // If we see ?:, this can't possibly be a valid conditional. typedParseParenItem will be called\n // later to finish off the arrow parameter. We also need to handle bare ? tokens for optional\n // parameters without type annotations, i.e. ?, and ?) .\n if (_index.match.call(void 0, _types.TokenType.question)) {\n const nextType = _index.lookaheadType.call(void 0, );\n if (nextType === _types.TokenType.colon || nextType === _types.TokenType.comma || nextType === _types.TokenType.parenR) {\n return;\n }\n }\n _expression.baseParseConditional.call(void 0, noIn);\n} exports.typedParseConditional = typedParseConditional;\n\n// Note: These \"type casts\" are *not* valid TS expressions.\n// But we parse them here and change them when completing the arrow function.\n function typedParseParenItem() {\n if (_index.eat.call(void 0, _types.TokenType.question)) {\n _base.state.tokens[_base.state.tokens.length - 1].isType = true;\n }\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsParseTypeAnnotation.call(void 0, );\n } else if (_base.isFlowEnabled) {\n _flow.flowParseTypeAnnotation.call(void 0, );\n }\n }\n} exports.typedParseParenItem = typedParseParenItem;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\n\n\n\n\n\n\n\n\nvar _index = require('../tokenizer/index');\nvar _keywords = require('../tokenizer/keywords');\nvar _types = require('../tokenizer/types');\nvar _base = require('../traverser/base');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _expression = require('../traverser/expression');\nvar _lval = require('../traverser/lval');\n\n\n\n\n\n\n\n\n\n\n\nvar _statement = require('../traverser/statement');\n\n\n\n\n\n\n\n\n\n\n\nvar _util = require('../traverser/util');\nvar _jsx = require('./jsx');\n\nfunction tsIsIdentifier() {\n // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n // See https://github.com/Microsoft/TypeScript/issues/15008\n return _index.match.call(void 0, _types.TokenType.name);\n}\n\nfunction isLiteralPropertyName() {\n return (\n _index.match.call(void 0, _types.TokenType.name) ||\n Boolean(_base.state.type & _types.TokenType.IS_KEYWORD) ||\n _index.match.call(void 0, _types.TokenType.string) ||\n _index.match.call(void 0, _types.TokenType.num) ||\n _index.match.call(void 0, _types.TokenType.bigint) ||\n _index.match.call(void 0, _types.TokenType.decimal)\n );\n}\n\nfunction tsNextTokenCanFollowModifier() {\n // Note: TypeScript's implementation is much more complicated because\n // more things are considered modifiers there.\n // This implementation only handles modifiers not handled by babylon itself. And \"static\".\n // TODO: Would be nice to avoid lookahead. Want a hasLineBreakUpNext() method...\n const snapshot = _base.state.snapshot();\n\n _index.next.call(void 0, );\n const canFollowModifier =\n (_index.match.call(void 0, _types.TokenType.bracketL) ||\n _index.match.call(void 0, _types.TokenType.braceL) ||\n _index.match.call(void 0, _types.TokenType.star) ||\n _index.match.call(void 0, _types.TokenType.ellipsis) ||\n _index.match.call(void 0, _types.TokenType.hash) ||\n isLiteralPropertyName()) &&\n !_util.hasPrecedingLineBreak.call(void 0, );\n\n if (canFollowModifier) {\n return true;\n } else {\n _base.state.restoreFromSnapshot(snapshot);\n return false;\n }\n}\n\n/** Parses a modifier matching one the given modifier names. */\n function tsParseModifier(\n allowedModifiers,\n) {\n if (!_index.match.call(void 0, _types.TokenType.name)) {\n return null;\n }\n\n const modifier = _base.state.contextualKeyword;\n if (allowedModifiers.indexOf(modifier) !== -1 && tsNextTokenCanFollowModifier()) {\n switch (modifier) {\n case _keywords.ContextualKeyword._readonly:\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._readonly;\n break;\n case _keywords.ContextualKeyword._abstract:\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._abstract;\n break;\n case _keywords.ContextualKeyword._static:\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._static;\n break;\n case _keywords.ContextualKeyword._public:\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._public;\n break;\n case _keywords.ContextualKeyword._private:\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._private;\n break;\n case _keywords.ContextualKeyword._protected:\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._protected;\n break;\n case _keywords.ContextualKeyword._declare:\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._declare;\n break;\n default:\n break;\n }\n return modifier;\n }\n return null;\n} exports.tsParseModifier = tsParseModifier;\n\nfunction tsParseEntityName() {\n _expression.parseIdentifier.call(void 0, );\n while (_index.eat.call(void 0, _types.TokenType.dot)) {\n _expression.parseIdentifier.call(void 0, );\n }\n}\n\nfunction tsParseTypeReference() {\n tsParseEntityName();\n if (!_util.hasPrecedingLineBreak.call(void 0, ) && _index.match.call(void 0, _types.TokenType.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseThisTypePredicate() {\n _index.next.call(void 0, );\n tsParseTypeAnnotation();\n}\n\nfunction tsParseThisTypeNode() {\n _index.next.call(void 0, );\n}\n\nfunction tsParseTypeQuery() {\n _util.expect.call(void 0, _types.TokenType._typeof);\n if (_index.match.call(void 0, _types.TokenType._import)) {\n tsParseImportType();\n } else {\n tsParseEntityName();\n }\n}\n\nfunction tsParseImportType() {\n _util.expect.call(void 0, _types.TokenType._import);\n _util.expect.call(void 0, _types.TokenType.parenL);\n _util.expect.call(void 0, _types.TokenType.string);\n _util.expect.call(void 0, _types.TokenType.parenR);\n if (_index.eat.call(void 0, _types.TokenType.dot)) {\n tsParseEntityName();\n }\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseTypeParameter() {\n _expression.parseIdentifier.call(void 0, );\n if (_index.eat.call(void 0, _types.TokenType._extends)) {\n tsParseType();\n }\n if (_index.eat.call(void 0, _types.TokenType.eq)) {\n tsParseType();\n }\n}\n\n function tsTryParseTypeParameters() {\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n tsParseTypeParameters();\n }\n} exports.tsTryParseTypeParameters = tsTryParseTypeParameters;\n\nfunction tsParseTypeParameters() {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n if (_index.match.call(void 0, _types.TokenType.lessThan) || _index.match.call(void 0, _types.TokenType.typeParameterStart)) {\n _index.next.call(void 0, );\n } else {\n _util.unexpected.call(void 0, );\n }\n\n while (!_index.eat.call(void 0, _types.TokenType.greaterThan) && !_base.state.error) {\n tsParseTypeParameter();\n _index.eat.call(void 0, _types.TokenType.comma);\n }\n _index.popTypeContext.call(void 0, oldIsType);\n}\n\n// Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n// but here it's always false, because this is only used for types.\nfunction tsFillSignature(returnToken) {\n // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n const returnTokenRequired = returnToken === _types.TokenType.arrow;\n tsTryParseTypeParameters();\n _util.expect.call(void 0, _types.TokenType.parenL);\n // Create a scope even though we're doing type parsing so we don't accidentally\n // treat params as top-level bindings.\n _base.state.scopeDepth++;\n tsParseBindingListForSignature(false /* isBlockScope */);\n _base.state.scopeDepth--;\n if (returnTokenRequired) {\n tsParseTypeOrTypePredicateAnnotation(returnToken);\n } else if (_index.match.call(void 0, returnToken)) {\n tsParseTypeOrTypePredicateAnnotation(returnToken);\n }\n}\n\nfunction tsParseBindingListForSignature(isBlockScope) {\n _lval.parseBindingList.call(void 0, _types.TokenType.parenR, isBlockScope);\n}\n\nfunction tsParseTypeMemberSemicolon() {\n if (!_index.eat.call(void 0, _types.TokenType.comma)) {\n _util.semicolon.call(void 0, );\n }\n}\n\nfunction tsParseSignatureMember() {\n tsFillSignature(_types.TokenType.colon);\n tsParseTypeMemberSemicolon();\n}\n\nfunction tsIsUnambiguouslyIndexSignature() {\n const snapshot = _base.state.snapshot();\n _index.next.call(void 0, ); // Skip '{'\n const isIndexSignature = _index.eat.call(void 0, _types.TokenType.name) && _index.match.call(void 0, _types.TokenType.colon);\n _base.state.restoreFromSnapshot(snapshot);\n return isIndexSignature;\n}\n\nfunction tsTryParseIndexSignature() {\n if (!(_index.match.call(void 0, _types.TokenType.bracketL) && tsIsUnambiguouslyIndexSignature())) {\n return false;\n }\n\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n\n _util.expect.call(void 0, _types.TokenType.bracketL);\n _expression.parseIdentifier.call(void 0, );\n tsParseTypeAnnotation();\n _util.expect.call(void 0, _types.TokenType.bracketR);\n\n tsTryParseTypeAnnotation();\n tsParseTypeMemberSemicolon();\n\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n}\n\nfunction tsParsePropertyOrMethodSignature(isReadonly) {\n _index.eat.call(void 0, _types.TokenType.question);\n\n if (!isReadonly && (_index.match.call(void 0, _types.TokenType.parenL) || _index.match.call(void 0, _types.TokenType.lessThan))) {\n tsFillSignature(_types.TokenType.colon);\n tsParseTypeMemberSemicolon();\n } else {\n tsTryParseTypeAnnotation();\n tsParseTypeMemberSemicolon();\n }\n}\n\nfunction tsParseTypeMember() {\n if (_index.match.call(void 0, _types.TokenType.parenL) || _index.match.call(void 0, _types.TokenType.lessThan)) {\n // call signature\n tsParseSignatureMember();\n return;\n }\n if (_index.match.call(void 0, _types.TokenType._new)) {\n _index.next.call(void 0, );\n if (_index.match.call(void 0, _types.TokenType.parenL) || _index.match.call(void 0, _types.TokenType.lessThan)) {\n // constructor signature\n tsParseSignatureMember();\n } else {\n tsParsePropertyOrMethodSignature(false);\n }\n return;\n }\n const readonly = !!tsParseModifier([_keywords.ContextualKeyword._readonly]);\n\n const found = tsTryParseIndexSignature();\n if (found) {\n return;\n }\n _expression.parsePropertyName.call(void 0, -1 /* Types don't need context IDs. */);\n tsParsePropertyOrMethodSignature(readonly);\n}\n\nfunction tsParseTypeLiteral() {\n tsParseObjectTypeMembers();\n}\n\nfunction tsParseObjectTypeMembers() {\n _util.expect.call(void 0, _types.TokenType.braceL);\n while (!_index.eat.call(void 0, _types.TokenType.braceR) && !_base.state.error) {\n tsParseTypeMember();\n }\n}\n\nfunction tsLookaheadIsStartOfMappedType() {\n const snapshot = _base.state.snapshot();\n const isStartOfMappedType = tsIsStartOfMappedType();\n _base.state.restoreFromSnapshot(snapshot);\n return isStartOfMappedType;\n}\n\nfunction tsIsStartOfMappedType() {\n _index.next.call(void 0, );\n if (_index.eat.call(void 0, _types.TokenType.plus) || _index.eat.call(void 0, _types.TokenType.minus)) {\n return _util.isContextual.call(void 0, _keywords.ContextualKeyword._readonly);\n }\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._readonly)) {\n _index.next.call(void 0, );\n }\n if (!_index.match.call(void 0, _types.TokenType.bracketL)) {\n return false;\n }\n _index.next.call(void 0, );\n if (!tsIsIdentifier()) {\n return false;\n }\n _index.next.call(void 0, );\n return _index.match.call(void 0, _types.TokenType._in);\n}\n\nfunction tsParseMappedTypeParameter() {\n _expression.parseIdentifier.call(void 0, );\n _util.expect.call(void 0, _types.TokenType._in);\n tsParseType();\n}\n\nfunction tsParseMappedType() {\n _util.expect.call(void 0, _types.TokenType.braceL);\n if (_index.match.call(void 0, _types.TokenType.plus) || _index.match.call(void 0, _types.TokenType.minus)) {\n _index.next.call(void 0, );\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._readonly);\n } else {\n _util.eatContextual.call(void 0, _keywords.ContextualKeyword._readonly);\n }\n _util.expect.call(void 0, _types.TokenType.bracketL);\n tsParseMappedTypeParameter();\n if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._as)) {\n tsParseType();\n }\n _util.expect.call(void 0, _types.TokenType.bracketR);\n if (_index.match.call(void 0, _types.TokenType.plus) || _index.match.call(void 0, _types.TokenType.minus)) {\n _index.next.call(void 0, );\n _util.expect.call(void 0, _types.TokenType.question);\n } else {\n _index.eat.call(void 0, _types.TokenType.question);\n }\n tsTryParseType();\n _util.semicolon.call(void 0, );\n _util.expect.call(void 0, _types.TokenType.braceR);\n}\n\nfunction tsParseTupleType() {\n _util.expect.call(void 0, _types.TokenType.bracketL);\n while (!_index.eat.call(void 0, _types.TokenType.bracketR) && !_base.state.error) {\n // Do not validate presence of either none or only labeled elements\n tsParseTupleElementType();\n _index.eat.call(void 0, _types.TokenType.comma);\n }\n}\n\nfunction tsParseTupleElementType() {\n // parses `...TsType[]`\n if (_index.eat.call(void 0, _types.TokenType.ellipsis)) {\n tsParseType();\n } else {\n // parses `TsType?`\n tsParseType();\n _index.eat.call(void 0, _types.TokenType.question);\n }\n\n // The type we parsed above was actually a label\n if (_index.eat.call(void 0, _types.TokenType.colon)) {\n // Labeled tuple types must affix the label with `...` or `?`, so no need to handle those here\n tsParseType();\n }\n}\n\nfunction tsParseParenthesizedType() {\n _util.expect.call(void 0, _types.TokenType.parenL);\n tsParseType();\n _util.expect.call(void 0, _types.TokenType.parenR);\n}\n\nfunction tsParseTemplateLiteralType() {\n // Finish `, read quasi\n _index.nextTemplateToken.call(void 0, );\n // Finish quasi, read ${\n _index.nextTemplateToken.call(void 0, );\n while (!_index.match.call(void 0, _types.TokenType.backQuote) && !_base.state.error) {\n _util.expect.call(void 0, _types.TokenType.dollarBraceL);\n tsParseType();\n // Finish }, read quasi\n _index.nextTemplateToken.call(void 0, );\n // Finish quasi, read either ${ or `\n _index.nextTemplateToken.call(void 0, );\n }\n _index.next.call(void 0, );\n}\n\nvar FunctionType; (function (FunctionType) {\n const TSFunctionType = 0; FunctionType[FunctionType[\"TSFunctionType\"] = TSFunctionType] = \"TSFunctionType\";\n const TSConstructorType = TSFunctionType + 1; FunctionType[FunctionType[\"TSConstructorType\"] = TSConstructorType] = \"TSConstructorType\";\n})(FunctionType || (FunctionType = {}));\n\nfunction tsParseFunctionOrConstructorType(type) {\n if (type === FunctionType.TSConstructorType) {\n _util.expect.call(void 0, _types.TokenType._new);\n }\n tsFillSignature(_types.TokenType.arrow);\n}\n\nfunction tsParseNonArrayType() {\n switch (_base.state.type) {\n case _types.TokenType.name:\n tsParseTypeReference();\n return;\n case _types.TokenType._void:\n case _types.TokenType._null:\n _index.next.call(void 0, );\n return;\n case _types.TokenType.string:\n case _types.TokenType.num:\n case _types.TokenType.bigint:\n case _types.TokenType.decimal:\n case _types.TokenType._true:\n case _types.TokenType._false:\n _expression.parseLiteral.call(void 0, );\n return;\n case _types.TokenType.minus:\n _index.next.call(void 0, );\n _expression.parseLiteral.call(void 0, );\n return;\n case _types.TokenType._this: {\n tsParseThisTypeNode();\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._is) && !_util.hasPrecedingLineBreak.call(void 0, )) {\n tsParseThisTypePredicate();\n }\n return;\n }\n case _types.TokenType._typeof:\n tsParseTypeQuery();\n return;\n case _types.TokenType._import:\n tsParseImportType();\n return;\n case _types.TokenType.braceL:\n if (tsLookaheadIsStartOfMappedType()) {\n tsParseMappedType();\n } else {\n tsParseTypeLiteral();\n }\n return;\n case _types.TokenType.bracketL:\n tsParseTupleType();\n return;\n case _types.TokenType.parenL:\n tsParseParenthesizedType();\n return;\n case _types.TokenType.backQuote:\n tsParseTemplateLiteralType();\n return;\n default:\n if (_base.state.type & _types.TokenType.IS_KEYWORD) {\n _index.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType.name;\n return;\n }\n break;\n }\n\n _util.unexpected.call(void 0, );\n}\n\nfunction tsParseArrayTypeOrHigher() {\n tsParseNonArrayType();\n while (!_util.hasPrecedingLineBreak.call(void 0, ) && _index.eat.call(void 0, _types.TokenType.bracketL)) {\n if (!_index.eat.call(void 0, _types.TokenType.bracketR)) {\n // If we hit ] immediately, this is an array type, otherwise it's an indexed access type.\n tsParseType();\n _util.expect.call(void 0, _types.TokenType.bracketR);\n }\n }\n}\n\nfunction tsParseInferType() {\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._infer);\n _expression.parseIdentifier.call(void 0, );\n}\n\nfunction tsParseTypeOperatorOrHigher() {\n if (\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._keyof) ||\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._unique) ||\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._readonly)\n ) {\n _index.next.call(void 0, );\n tsParseTypeOperatorOrHigher();\n } else if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._infer)) {\n tsParseInferType();\n } else {\n tsParseArrayTypeOrHigher();\n }\n}\n\nfunction tsParseIntersectionTypeOrHigher() {\n _index.eat.call(void 0, _types.TokenType.bitwiseAND);\n tsParseTypeOperatorOrHigher();\n if (_index.match.call(void 0, _types.TokenType.bitwiseAND)) {\n while (_index.eat.call(void 0, _types.TokenType.bitwiseAND)) {\n tsParseTypeOperatorOrHigher();\n }\n }\n}\n\nfunction tsParseUnionTypeOrHigher() {\n _index.eat.call(void 0, _types.TokenType.bitwiseOR);\n tsParseIntersectionTypeOrHigher();\n if (_index.match.call(void 0, _types.TokenType.bitwiseOR)) {\n while (_index.eat.call(void 0, _types.TokenType.bitwiseOR)) {\n tsParseIntersectionTypeOrHigher();\n }\n }\n}\n\nfunction tsIsStartOfFunctionType() {\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n return true;\n }\n return _index.match.call(void 0, _types.TokenType.parenL) && tsLookaheadIsUnambiguouslyStartOfFunctionType();\n}\n\nfunction tsSkipParameterStart() {\n if (_index.match.call(void 0, _types.TokenType.name) || _index.match.call(void 0, _types.TokenType._this)) {\n _index.next.call(void 0, );\n return true;\n }\n // If this is a possible array/object destructure, walk to the matching bracket/brace.\n // The next token after will tell us definitively whether this is a function param.\n if (_index.match.call(void 0, _types.TokenType.braceL) || _index.match.call(void 0, _types.TokenType.bracketL)) {\n let depth = 1;\n _index.next.call(void 0, );\n while (depth > 0 && !_base.state.error) {\n if (_index.match.call(void 0, _types.TokenType.braceL) || _index.match.call(void 0, _types.TokenType.bracketL)) {\n depth++;\n } else if (_index.match.call(void 0, _types.TokenType.braceR) || _index.match.call(void 0, _types.TokenType.bracketR)) {\n depth--;\n }\n _index.next.call(void 0, );\n }\n return true;\n }\n return false;\n}\n\nfunction tsLookaheadIsUnambiguouslyStartOfFunctionType() {\n const snapshot = _base.state.snapshot();\n const isUnambiguouslyStartOfFunctionType = tsIsUnambiguouslyStartOfFunctionType();\n _base.state.restoreFromSnapshot(snapshot);\n return isUnambiguouslyStartOfFunctionType;\n}\n\nfunction tsIsUnambiguouslyStartOfFunctionType() {\n _index.next.call(void 0, );\n if (_index.match.call(void 0, _types.TokenType.parenR) || _index.match.call(void 0, _types.TokenType.ellipsis)) {\n // ( )\n // ( ...\n return true;\n }\n if (tsSkipParameterStart()) {\n if (_index.match.call(void 0, _types.TokenType.colon) || _index.match.call(void 0, _types.TokenType.comma) || _index.match.call(void 0, _types.TokenType.question) || _index.match.call(void 0, _types.TokenType.eq)) {\n // ( xxx :\n // ( xxx ,\n // ( xxx ?\n // ( xxx =\n return true;\n }\n if (_index.match.call(void 0, _types.TokenType.parenR)) {\n _index.next.call(void 0, );\n if (_index.match.call(void 0, _types.TokenType.arrow)) {\n // ( xxx ) =>\n return true;\n }\n }\n }\n return false;\n}\n\nfunction tsParseTypeOrTypePredicateAnnotation(returnToken) {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _util.expect.call(void 0, returnToken);\n const finishedReturn = tsParseTypePredicateOrAssertsPrefix();\n if (!finishedReturn) {\n tsParseType();\n }\n _index.popTypeContext.call(void 0, oldIsType);\n}\n\nfunction tsTryParseTypeOrTypePredicateAnnotation() {\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n tsParseTypeOrTypePredicateAnnotation(_types.TokenType.colon);\n }\n}\n\n function tsTryParseTypeAnnotation() {\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n tsParseTypeAnnotation();\n }\n} exports.tsTryParseTypeAnnotation = tsTryParseTypeAnnotation;\n\nfunction tsTryParseType() {\n if (_index.eat.call(void 0, _types.TokenType.colon)) {\n tsParseType();\n }\n}\n\n/**\n * Detect a few special return syntax cases: `x is T`, `asserts x`, `asserts x is T`,\n * `asserts this is T`.\n *\n * Returns true if we parsed the return type, false if there's still a type to be parsed.\n */\nfunction tsParseTypePredicateOrAssertsPrefix() {\n const snapshot = _base.state.snapshot();\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._asserts) && !_util.hasPrecedingLineBreak.call(void 0, )) {\n // Normally this is `asserts x is T`, but at this point, it might be `asserts is T` (a user-\n // defined type guard on the `asserts` variable) or just a type called `asserts`.\n _index.next.call(void 0, );\n if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._is)) {\n // If we see `asserts is`, then this must be of the form `asserts is T`, since\n // `asserts is is T` isn't valid.\n tsParseType();\n return true;\n } else if (tsIsIdentifier() || _index.match.call(void 0, _types.TokenType._this)) {\n _index.next.call(void 0, );\n if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._is)) {\n // If we see `is`, then this is `asserts x is T`. Otherwise, it's `asserts x`.\n tsParseType();\n }\n return true;\n } else {\n // Regular type, so bail out and start type parsing from scratch.\n _base.state.restoreFromSnapshot(snapshot);\n return false;\n }\n } else if (tsIsIdentifier() || _index.match.call(void 0, _types.TokenType._this)) {\n // This is a regular identifier, which may or may not have \"is\" after it.\n _index.next.call(void 0, );\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._is) && !_util.hasPrecedingLineBreak.call(void 0, )) {\n _index.next.call(void 0, );\n tsParseType();\n return true;\n } else {\n // Regular type, so bail out and start type parsing from scratch.\n _base.state.restoreFromSnapshot(snapshot);\n return false;\n }\n }\n return false;\n}\n\n function tsParseTypeAnnotation() {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _util.expect.call(void 0, _types.TokenType.colon);\n tsParseType();\n _index.popTypeContext.call(void 0, oldIsType);\n} exports.tsParseTypeAnnotation = tsParseTypeAnnotation;\n\n function tsParseType() {\n tsParseNonConditionalType();\n if (_util.hasPrecedingLineBreak.call(void 0, ) || !_index.eat.call(void 0, _types.TokenType._extends)) {\n return;\n }\n // extends type\n tsParseNonConditionalType();\n _util.expect.call(void 0, _types.TokenType.question);\n // true type\n tsParseType();\n _util.expect.call(void 0, _types.TokenType.colon);\n // false type\n tsParseType();\n} exports.tsParseType = tsParseType;\n\n function tsParseNonConditionalType() {\n if (tsIsStartOfFunctionType()) {\n tsParseFunctionOrConstructorType(FunctionType.TSFunctionType);\n return;\n }\n if (_index.match.call(void 0, _types.TokenType._new)) {\n // As in `new () => Date`\n tsParseFunctionOrConstructorType(FunctionType.TSConstructorType);\n return;\n }\n tsParseUnionTypeOrHigher();\n} exports.tsParseNonConditionalType = tsParseNonConditionalType;\n\n function tsParseTypeAssertion() {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n tsParseType();\n _util.expect.call(void 0, _types.TokenType.greaterThan);\n _index.popTypeContext.call(void 0, oldIsType);\n _expression.parseMaybeUnary.call(void 0, );\n} exports.tsParseTypeAssertion = tsParseTypeAssertion;\n\n function tsTryParseJSXTypeArgument() {\n if (_index.eat.call(void 0, _types.TokenType.jsxTagStart)) {\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType.typeParameterStart;\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n while (!_index.match.call(void 0, _types.TokenType.greaterThan) && !_base.state.error) {\n tsParseType();\n _index.eat.call(void 0, _types.TokenType.comma);\n }\n // Process >, but the one after needs to be parsed JSX-style.\n _jsx.nextJSXTagToken.call(void 0, );\n _index.popTypeContext.call(void 0, oldIsType);\n }\n} exports.tsTryParseJSXTypeArgument = tsTryParseJSXTypeArgument;\n\nfunction tsParseHeritageClause() {\n while (!_index.match.call(void 0, _types.TokenType.braceL) && !_base.state.error) {\n tsParseExpressionWithTypeArguments();\n _index.eat.call(void 0, _types.TokenType.comma);\n }\n}\n\nfunction tsParseExpressionWithTypeArguments() {\n // Note: TS uses parseLeftHandSideExpressionOrHigher,\n // then has grammar errors later if it's not an EntityName.\n tsParseEntityName();\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseInterfaceDeclaration() {\n _lval.parseBindingIdentifier.call(void 0, false);\n tsTryParseTypeParameters();\n if (_index.eat.call(void 0, _types.TokenType._extends)) {\n tsParseHeritageClause();\n }\n tsParseObjectTypeMembers();\n}\n\nfunction tsParseTypeAliasDeclaration() {\n _lval.parseBindingIdentifier.call(void 0, false);\n tsTryParseTypeParameters();\n _util.expect.call(void 0, _types.TokenType.eq);\n tsParseType();\n _util.semicolon.call(void 0, );\n}\n\nfunction tsParseEnumMember() {\n // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n if (_index.match.call(void 0, _types.TokenType.string)) {\n _expression.parseLiteral.call(void 0, );\n } else {\n _expression.parseIdentifier.call(void 0, );\n }\n if (_index.eat.call(void 0, _types.TokenType.eq)) {\n const eqIndex = _base.state.tokens.length - 1;\n _expression.parseMaybeAssign.call(void 0, );\n _base.state.tokens[eqIndex].rhsEndIndex = _base.state.tokens.length;\n }\n}\n\nfunction tsParseEnumDeclaration() {\n _lval.parseBindingIdentifier.call(void 0, false);\n _util.expect.call(void 0, _types.TokenType.braceL);\n while (!_index.eat.call(void 0, _types.TokenType.braceR) && !_base.state.error) {\n tsParseEnumMember();\n _index.eat.call(void 0, _types.TokenType.comma);\n }\n}\n\nfunction tsParseModuleBlock() {\n _util.expect.call(void 0, _types.TokenType.braceL);\n _statement.parseBlockBody.call(void 0, /* end */ _types.TokenType.braceR);\n}\n\nfunction tsParseModuleOrNamespaceDeclaration() {\n _lval.parseBindingIdentifier.call(void 0, false);\n if (_index.eat.call(void 0, _types.TokenType.dot)) {\n tsParseModuleOrNamespaceDeclaration();\n } else {\n tsParseModuleBlock();\n }\n}\n\nfunction tsParseAmbientExternalModuleDeclaration() {\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._global)) {\n _expression.parseIdentifier.call(void 0, );\n } else if (_index.match.call(void 0, _types.TokenType.string)) {\n _expression.parseExprAtom.call(void 0, );\n } else {\n _util.unexpected.call(void 0, );\n }\n\n if (_index.match.call(void 0, _types.TokenType.braceL)) {\n tsParseModuleBlock();\n } else {\n _util.semicolon.call(void 0, );\n }\n}\n\n function tsParseImportEqualsDeclaration() {\n _lval.parseImportedIdentifier.call(void 0, );\n _util.expect.call(void 0, _types.TokenType.eq);\n tsParseModuleReference();\n _util.semicolon.call(void 0, );\n} exports.tsParseImportEqualsDeclaration = tsParseImportEqualsDeclaration;\n\nfunction tsIsExternalModuleReference() {\n return _util.isContextual.call(void 0, _keywords.ContextualKeyword._require) && _index.lookaheadType.call(void 0, ) === _types.TokenType.parenL;\n}\n\nfunction tsParseModuleReference() {\n if (tsIsExternalModuleReference()) {\n tsParseExternalModuleReference();\n } else {\n tsParseEntityName();\n }\n}\n\nfunction tsParseExternalModuleReference() {\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._require);\n _util.expect.call(void 0, _types.TokenType.parenL);\n if (!_index.match.call(void 0, _types.TokenType.string)) {\n _util.unexpected.call(void 0, );\n }\n _expression.parseLiteral.call(void 0, );\n _util.expect.call(void 0, _types.TokenType.parenR);\n}\n\n// Utilities\n\n// Returns true if a statement matched.\nfunction tsTryParseDeclare() {\n if (_util.isLineTerminator.call(void 0, )) {\n return false;\n }\n switch (_base.state.type) {\n case _types.TokenType._function: {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n _index.next.call(void 0, );\n // We don't need to precisely get the function start here, since it's only used to mark\n // the function as a type if it's bodiless, and it's already a type here.\n const functionStart = _base.state.start;\n _statement.parseFunction.call(void 0, functionStart, /* isStatement */ true);\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n }\n case _types.TokenType._class: {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n _statement.parseClass.call(void 0, /* isStatement */ true, /* optionalId */ false);\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n }\n case _types.TokenType._const: {\n if (_index.match.call(void 0, _types.TokenType._const) && _util.isLookaheadContextual.call(void 0, _keywords.ContextualKeyword._enum)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n _util.expect.call(void 0, _types.TokenType._const);\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._enum);\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._enum;\n tsParseEnumDeclaration();\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n }\n }\n // falls through\n case _types.TokenType._var:\n case _types.TokenType._let: {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n _statement.parseVarStatement.call(void 0, _base.state.type);\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n }\n case _types.TokenType.name: {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n const contextualKeyword = _base.state.contextualKeyword;\n let matched = false;\n if (contextualKeyword === _keywords.ContextualKeyword._global) {\n tsParseAmbientExternalModuleDeclaration();\n matched = true;\n } else {\n matched = tsParseDeclaration(contextualKeyword, /* isBeforeToken */ true);\n }\n _index.popTypeContext.call(void 0, oldIsType);\n return matched;\n }\n default:\n return false;\n }\n}\n\n// Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n// Returns true if it matched a declaration.\nfunction tsTryParseExportDeclaration() {\n return tsParseDeclaration(_base.state.contextualKeyword, /* isBeforeToken */ true);\n}\n\n// Returns true if it matched a statement.\nfunction tsParseExpressionStatement(contextualKeyword) {\n switch (contextualKeyword) {\n case _keywords.ContextualKeyword._declare: {\n const declareTokenIndex = _base.state.tokens.length - 1;\n const matched = tsTryParseDeclare();\n if (matched) {\n _base.state.tokens[declareTokenIndex].type = _types.TokenType._declare;\n return true;\n }\n break;\n }\n case _keywords.ContextualKeyword._global:\n // `global { }` (with no `declare`) may appear inside an ambient module declaration.\n // Would like to use tsParseAmbientExternalModuleDeclaration here, but already ran past \"global\".\n if (_index.match.call(void 0, _types.TokenType.braceL)) {\n tsParseModuleBlock();\n return true;\n }\n break;\n\n default:\n return tsParseDeclaration(contextualKeyword, /* isBeforeToken */ false);\n }\n return false;\n}\n\n// Common to tsTryParseDeclare, tsTryParseExportDeclaration, and tsParseExpressionStatement.\n// Returns true if it matched a declaration.\nfunction tsParseDeclaration(contextualKeyword, isBeforeToken) {\n switch (contextualKeyword) {\n case _keywords.ContextualKeyword._abstract:\n if (tsCheckLineTerminatorAndMatch(_types.TokenType._class, isBeforeToken)) {\n if (isBeforeToken) _index.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._abstract;\n _statement.parseClass.call(void 0, /* isStatement */ true, /* optionalId */ false);\n return true;\n }\n break;\n\n case _keywords.ContextualKeyword._enum:\n if (tsCheckLineTerminatorAndMatch(_types.TokenType.name, isBeforeToken)) {\n if (isBeforeToken) _index.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._enum;\n tsParseEnumDeclaration();\n return true;\n }\n break;\n\n case _keywords.ContextualKeyword._interface:\n if (tsCheckLineTerminatorAndMatch(_types.TokenType.name, isBeforeToken)) {\n // `next` is true in \"export\" and \"declare\" contexts, so we want to remove that token\n // as well.\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n if (isBeforeToken) _index.next.call(void 0, );\n tsParseInterfaceDeclaration();\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n }\n break;\n\n case _keywords.ContextualKeyword._module:\n if (isBeforeToken) _index.next.call(void 0, );\n if (_index.match.call(void 0, _types.TokenType.string)) {\n const oldIsType = _index.pushTypeContext.call(void 0, isBeforeToken ? 2 : 1);\n tsParseAmbientExternalModuleDeclaration();\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n } else if (tsCheckLineTerminatorAndMatch(_types.TokenType.name, isBeforeToken)) {\n const oldIsType = _index.pushTypeContext.call(void 0, isBeforeToken ? 2 : 1);\n if (isBeforeToken) _index.next.call(void 0, );\n tsParseModuleOrNamespaceDeclaration();\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n }\n break;\n\n case _keywords.ContextualKeyword._namespace:\n if (tsCheckLineTerminatorAndMatch(_types.TokenType.name, isBeforeToken)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n if (isBeforeToken) _index.next.call(void 0, );\n tsParseModuleOrNamespaceDeclaration();\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n }\n break;\n\n case _keywords.ContextualKeyword._type:\n if (tsCheckLineTerminatorAndMatch(_types.TokenType.name, isBeforeToken)) {\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n if (isBeforeToken) _index.next.call(void 0, );\n tsParseTypeAliasDeclaration();\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n }\n break;\n\n default:\n break;\n }\n return false;\n}\n\nfunction tsCheckLineTerminatorAndMatch(tokenType, isBeforeToken) {\n return !_util.isLineTerminator.call(void 0, ) && (isBeforeToken || _index.match.call(void 0, tokenType));\n}\n\n// Returns true if there was a generic async arrow function.\nfunction tsTryParseGenericAsyncArrowFunction() {\n const snapshot = _base.state.snapshot();\n\n tsParseTypeParameters();\n _statement.parseFunctionParams.call(void 0, );\n tsTryParseTypeOrTypePredicateAnnotation();\n _util.expect.call(void 0, _types.TokenType.arrow);\n\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n return false;\n }\n\n _expression.parseFunctionBody.call(void 0, true);\n return true;\n}\n\nfunction tsParseTypeArguments() {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _util.expect.call(void 0, _types.TokenType.lessThan);\n while (!_index.eat.call(void 0, _types.TokenType.greaterThan) && !_base.state.error) {\n tsParseType();\n _index.eat.call(void 0, _types.TokenType.comma);\n }\n _index.popTypeContext.call(void 0, oldIsType);\n}\n\n function tsIsDeclarationStart() {\n if (_index.match.call(void 0, _types.TokenType.name)) {\n switch (_base.state.contextualKeyword) {\n case _keywords.ContextualKeyword._abstract:\n case _keywords.ContextualKeyword._declare:\n case _keywords.ContextualKeyword._enum:\n case _keywords.ContextualKeyword._interface:\n case _keywords.ContextualKeyword._module:\n case _keywords.ContextualKeyword._namespace:\n case _keywords.ContextualKeyword._type:\n return true;\n default:\n break;\n }\n }\n\n return false;\n} exports.tsIsDeclarationStart = tsIsDeclarationStart;\n\n// ======================================================\n// OVERRIDES\n// ======================================================\n\n function tsParseFunctionBodyAndFinish(functionStart, funcContextId) {\n // For arrow functions, `parseArrow` handles the return type itself.\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n tsParseTypeOrTypePredicateAnnotation(_types.TokenType.colon);\n }\n\n // The original code checked the node type to make sure this function type allows a missing\n // body, but we skip that to avoid sending around the node type. We instead just use the\n // allowExpressionBody boolean to make sure it's not an arrow function.\n if (!_index.match.call(void 0, _types.TokenType.braceL) && _util.isLineTerminator.call(void 0, )) {\n // Retroactively mark the function declaration as a type.\n let i = _base.state.tokens.length - 1;\n while (\n i >= 0 &&\n (_base.state.tokens[i].start >= functionStart ||\n _base.state.tokens[i].type === _types.TokenType._default ||\n _base.state.tokens[i].type === _types.TokenType._export)\n ) {\n _base.state.tokens[i].isType = true;\n i--;\n }\n return;\n }\n\n _expression.parseFunctionBody.call(void 0, false, funcContextId);\n} exports.tsParseFunctionBodyAndFinish = tsParseFunctionBodyAndFinish;\n\n function tsParseSubscript(\n startTokenIndex,\n noCalls,\n stopState,\n) {\n if (!_util.hasPrecedingLineBreak.call(void 0, ) && _index.eat.call(void 0, _types.TokenType.bang)) {\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType.nonNullAssertion;\n return;\n }\n\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n // There are number of things we are going to \"maybe\" parse, like type arguments on\n // tagged template expressions. If any of them fail, walk it back and continue.\n const snapshot = _base.state.snapshot();\n\n if (!noCalls && _expression.atPossibleAsync.call(void 0, )) {\n // Almost certainly this is a generic async function `async <T>() => ...\n // But it might be a call with a type argument `async<T>();`\n const asyncArrowFn = tsTryParseGenericAsyncArrowFunction();\n if (asyncArrowFn) {\n return;\n }\n }\n tsParseTypeArguments();\n if (!noCalls && _index.eat.call(void 0, _types.TokenType.parenL)) {\n // With f<T>(), the subscriptStartIndex marker is on the ( token.\n _base.state.tokens[_base.state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n _expression.parseCallExpressionArguments.call(void 0, );\n } else if (_index.match.call(void 0, _types.TokenType.backQuote)) {\n // Tagged template with a type argument.\n _expression.parseTemplate.call(void 0, );\n } else {\n _util.unexpected.call(void 0, );\n }\n\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n } else {\n return;\n }\n } else if (!noCalls && _index.match.call(void 0, _types.TokenType.questionDot) && _index.lookaheadType.call(void 0, ) === _types.TokenType.lessThan) {\n // If we see f?.<, then this must be an optional call with a type argument.\n _index.next.call(void 0, );\n _base.state.tokens[startTokenIndex].isOptionalChainStart = true;\n // With f?.<T>(), the subscriptStartIndex marker is on the ?. token.\n _base.state.tokens[_base.state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n\n tsParseTypeArguments();\n _util.expect.call(void 0, _types.TokenType.parenL);\n _expression.parseCallExpressionArguments.call(void 0, );\n }\n _expression.baseParseSubscript.call(void 0, startTokenIndex, noCalls, stopState);\n} exports.tsParseSubscript = tsParseSubscript;\n\n function tsStartParseNewArguments() {\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n // 99% certain this is `new C<T>();`. But may be `new C < T;`, which is also legal.\n const snapshot = _base.state.snapshot();\n\n _base.state.type = _types.TokenType.typeParameterStart;\n tsParseTypeArguments();\n if (!_index.match.call(void 0, _types.TokenType.parenL)) {\n _util.unexpected.call(void 0, );\n }\n\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n }\n }\n} exports.tsStartParseNewArguments = tsStartParseNewArguments;\n\n function tsTryParseExport() {\n if (_index.match.call(void 0, _types.TokenType._import)) {\n // `export import A = B;`\n _util.expect.call(void 0, _types.TokenType._import);\n tsParseImportEqualsDeclaration();\n return true;\n } else if (_index.eat.call(void 0, _types.TokenType.eq)) {\n // `export = x;`\n _expression.parseExpression.call(void 0, );\n _util.semicolon.call(void 0, );\n return true;\n } else if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._as)) {\n // `export as namespace A;`\n // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._namespace);\n _expression.parseIdentifier.call(void 0, );\n _util.semicolon.call(void 0, );\n return true;\n } else {\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._type) && _index.lookaheadType.call(void 0, ) === _types.TokenType.braceL) {\n _index.next.call(void 0, );\n }\n return false;\n }\n} exports.tsTryParseExport = tsTryParseExport;\n\n function tsTryParseExportDefaultExpression() {\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._abstract) && _index.lookaheadType.call(void 0, ) === _types.TokenType._class) {\n _base.state.type = _types.TokenType._abstract;\n _index.next.call(void 0, ); // Skip \"abstract\"\n _statement.parseClass.call(void 0, true, true);\n return true;\n }\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._interface)) {\n // Make sure \"export default\" are considered type tokens so the whole thing is removed.\n const oldIsType = _index.pushTypeContext.call(void 0, 2);\n tsParseDeclaration(_keywords.ContextualKeyword._interface, true);\n _index.popTypeContext.call(void 0, oldIsType);\n return true;\n }\n return false;\n} exports.tsTryParseExportDefaultExpression = tsTryParseExportDefaultExpression;\n\n function tsTryParseStatementContent() {\n if (_base.state.type === _types.TokenType._const) {\n const ahead = _index.lookaheadTypeAndKeyword.call(void 0, );\n if (ahead.type === _types.TokenType.name && ahead.contextualKeyword === _keywords.ContextualKeyword._enum) {\n _util.expect.call(void 0, _types.TokenType._const);\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._enum);\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._enum;\n tsParseEnumDeclaration();\n return true;\n }\n }\n return false;\n} exports.tsTryParseStatementContent = tsTryParseStatementContent;\n\n function tsParseAccessModifier() {\n tsParseModifier([\n _keywords.ContextualKeyword._public,\n _keywords.ContextualKeyword._protected,\n _keywords.ContextualKeyword._private,\n ]);\n} exports.tsParseAccessModifier = tsParseAccessModifier;\n\n function tsTryParseClassMemberWithIsStatic(\n isStatic,\n classContextId,\n) {\n let isAbstract = false;\n let isReadonly = false;\n\n while (true) {\n const mod = tsParseModifier([\n _keywords.ContextualKeyword._abstract,\n _keywords.ContextualKeyword._readonly,\n _keywords.ContextualKeyword._declare,\n ]);\n if (mod == null) {\n break;\n }\n if (mod === _keywords.ContextualKeyword._readonly) {\n isReadonly = true;\n }\n if (mod === _keywords.ContextualKeyword._abstract) {\n isAbstract = true;\n }\n }\n\n // We no longer check for public/private/etc, but tsTryParseIndexSignature should just return\n // false in that case for valid code.\n if (!isAbstract && !isStatic) {\n const found = tsTryParseIndexSignature();\n if (found) {\n return true;\n }\n }\n\n if (isReadonly) {\n // Must be a property (if not an index signature).\n _statement.parseClassPropertyName.call(void 0, classContextId);\n _statement.parsePostMemberNameModifiers.call(void 0, );\n _statement.parseClassProperty.call(void 0, );\n return true;\n }\n return false;\n} exports.tsTryParseClassMemberWithIsStatic = tsTryParseClassMemberWithIsStatic;\n\n// Note: The reason we do this in `parseIdentifierStatement` and not `parseStatement`\n// is that e.g. `type()` is valid JS, so we must try parsing that first.\n// If it's really a type, we will parse `type` as the statement, and can correct it here\n// by parsing the rest.\n function tsParseIdentifierStatement(contextualKeyword) {\n const matched = tsParseExpressionStatement(contextualKeyword);\n if (!matched) {\n _util.semicolon.call(void 0, );\n }\n} exports.tsParseIdentifierStatement = tsParseIdentifierStatement;\n\n function tsParseExportDeclaration() {\n // \"export declare\" is equivalent to just \"export\".\n const isDeclare = _util.eatContextual.call(void 0, _keywords.ContextualKeyword._declare);\n if (isDeclare) {\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._declare;\n }\n\n let matchedDeclaration = false;\n if (_index.match.call(void 0, _types.TokenType.name)) {\n if (isDeclare) {\n const oldIsType = _index.pushTypeContext.call(void 0, 2);\n matchedDeclaration = tsTryParseExportDeclaration();\n _index.popTypeContext.call(void 0, oldIsType);\n } else {\n matchedDeclaration = tsTryParseExportDeclaration();\n }\n }\n if (!matchedDeclaration) {\n if (isDeclare) {\n const oldIsType = _index.pushTypeContext.call(void 0, 2);\n _statement.parseStatement.call(void 0, true);\n _index.popTypeContext.call(void 0, oldIsType);\n } else {\n _statement.parseStatement.call(void 0, true);\n }\n }\n} exports.tsParseExportDeclaration = tsParseExportDeclaration;\n\n function tsAfterParseClassSuper(hasSuper) {\n if (hasSuper && _index.match.call(void 0, _types.TokenType.lessThan)) {\n tsParseTypeArguments();\n }\n if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._implements)) {\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._implements;\n const oldIsType = _index.pushTypeContext.call(void 0, 1);\n tsParseHeritageClause();\n _index.popTypeContext.call(void 0, oldIsType);\n }\n} exports.tsAfterParseClassSuper = tsAfterParseClassSuper;\n\n function tsStartParseObjPropValue() {\n tsTryParseTypeParameters();\n} exports.tsStartParseObjPropValue = tsStartParseObjPropValue;\n\n function tsStartParseFunctionParams() {\n tsTryParseTypeParameters();\n} exports.tsStartParseFunctionParams = tsStartParseFunctionParams;\n\n// `let x: number;`\n function tsAfterParseVarHead() {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _index.eat.call(void 0, _types.TokenType.bang);\n tsTryParseTypeAnnotation();\n _index.popTypeContext.call(void 0, oldIsType);\n} exports.tsAfterParseVarHead = tsAfterParseVarHead;\n\n// parse the return type of an async arrow function - let foo = (async (): number => {});\n function tsStartParseAsyncArrowFromCallExpression() {\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n tsParseTypeAnnotation();\n }\n} exports.tsStartParseAsyncArrowFromCallExpression = tsStartParseAsyncArrowFromCallExpression;\n\n// Returns true if the expression was an arrow function.\n function tsParseMaybeAssign(noIn, isWithinParens) {\n // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n if (_base.isJSXEnabled) {\n return tsParseMaybeAssignWithJSX(noIn, isWithinParens);\n } else {\n return tsParseMaybeAssignWithoutJSX(noIn, isWithinParens);\n }\n} exports.tsParseMaybeAssign = tsParseMaybeAssign;\n\n function tsParseMaybeAssignWithJSX(noIn, isWithinParens) {\n if (!_index.match.call(void 0, _types.TokenType.lessThan)) {\n return _expression.baseParseMaybeAssign.call(void 0, noIn, isWithinParens);\n }\n\n // Prefer to parse JSX if possible. But may be an arrow fn.\n const snapshot = _base.state.snapshot();\n let wasArrow = _expression.baseParseMaybeAssign.call(void 0, noIn, isWithinParens);\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n } else {\n return wasArrow;\n }\n\n // Otherwise, try as type-parameterized arrow function.\n _base.state.type = _types.TokenType.typeParameterStart;\n // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n tsParseTypeParameters();\n wasArrow = _expression.baseParseMaybeAssign.call(void 0, noIn, isWithinParens);\n if (!wasArrow) {\n _util.unexpected.call(void 0, );\n }\n\n return wasArrow;\n} exports.tsParseMaybeAssignWithJSX = tsParseMaybeAssignWithJSX;\n\n function tsParseMaybeAssignWithoutJSX(noIn, isWithinParens) {\n if (!_index.match.call(void 0, _types.TokenType.lessThan)) {\n return _expression.baseParseMaybeAssign.call(void 0, noIn, isWithinParens);\n }\n\n const snapshot = _base.state.snapshot();\n // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n tsParseTypeParameters();\n const wasArrow = _expression.baseParseMaybeAssign.call(void 0, noIn, isWithinParens);\n if (!wasArrow) {\n _util.unexpected.call(void 0, );\n }\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n } else {\n return wasArrow;\n }\n\n // Try parsing a type cast instead of an arrow function.\n // This will start with a type assertion (via parseMaybeUnary).\n // But don't directly call `tsParseTypeAssertion` because we want to handle any binary after it.\n return _expression.baseParseMaybeAssign.call(void 0, noIn, isWithinParens);\n} exports.tsParseMaybeAssignWithoutJSX = tsParseMaybeAssignWithoutJSX;\n\n function tsParseArrow() {\n if (_index.match.call(void 0, _types.TokenType.colon)) {\n // This is different from how the TS parser does it.\n // TS uses lookahead. Babylon parses it as a parenthesized expression and converts.\n const snapshot = _base.state.snapshot();\n\n tsParseTypeOrTypePredicateAnnotation(_types.TokenType.colon);\n if (_util.canInsertSemicolon.call(void 0, )) _util.unexpected.call(void 0, );\n if (!_index.match.call(void 0, _types.TokenType.arrow)) _util.unexpected.call(void 0, );\n\n if (_base.state.error) {\n _base.state.restoreFromSnapshot(snapshot);\n }\n }\n return _index.eat.call(void 0, _types.TokenType.arrow);\n} exports.tsParseArrow = tsParseArrow;\n\n// Allow type annotations inside of a parameter list.\n function tsParseAssignableListItemTypes() {\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _index.eat.call(void 0, _types.TokenType.question);\n tsTryParseTypeAnnotation();\n _index.popTypeContext.call(void 0, oldIsType);\n} exports.tsParseAssignableListItemTypes = tsParseAssignableListItemTypes;\n\n function tsParseMaybeDecoratorArguments() {\n if (_index.match.call(void 0, _types.TokenType.lessThan)) {\n tsParseTypeArguments();\n }\n _statement.baseParseMaybeDecoratorArguments.call(void 0, );\n} exports.tsParseMaybeDecoratorArguments = tsParseMaybeDecoratorArguments;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }/* eslint max-len: 0 */\n\nvar _base = require('../traverser/base');\nvar _util = require('../traverser/util');\nvar _charcodes = require('../util/charcodes');\nvar _identifier = require('../util/identifier');\nvar _whitespace = require('../util/whitespace');\nvar _keywords = require('./keywords');\nvar _readWord = require('./readWord'); var _readWord2 = _interopRequireDefault(_readWord);\nvar _types = require('./types');\n\nvar IdentifierRole; (function (IdentifierRole) {\n const Access = 0; IdentifierRole[IdentifierRole[\"Access\"] = Access] = \"Access\";\n const ExportAccess = Access + 1; IdentifierRole[IdentifierRole[\"ExportAccess\"] = ExportAccess] = \"ExportAccess\";\n const TopLevelDeclaration = ExportAccess + 1; IdentifierRole[IdentifierRole[\"TopLevelDeclaration\"] = TopLevelDeclaration] = \"TopLevelDeclaration\";\n const FunctionScopedDeclaration = TopLevelDeclaration + 1; IdentifierRole[IdentifierRole[\"FunctionScopedDeclaration\"] = FunctionScopedDeclaration] = \"FunctionScopedDeclaration\";\n const BlockScopedDeclaration = FunctionScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"BlockScopedDeclaration\"] = BlockScopedDeclaration] = \"BlockScopedDeclaration\";\n const ObjectShorthandTopLevelDeclaration = BlockScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthandTopLevelDeclaration\"] = ObjectShorthandTopLevelDeclaration] = \"ObjectShorthandTopLevelDeclaration\";\n const ObjectShorthandFunctionScopedDeclaration = ObjectShorthandTopLevelDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthandFunctionScopedDeclaration\"] = ObjectShorthandFunctionScopedDeclaration] = \"ObjectShorthandFunctionScopedDeclaration\";\n const ObjectShorthandBlockScopedDeclaration = ObjectShorthandFunctionScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthandBlockScopedDeclaration\"] = ObjectShorthandBlockScopedDeclaration] = \"ObjectShorthandBlockScopedDeclaration\";\n const ObjectShorthand = ObjectShorthandBlockScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthand\"] = ObjectShorthand] = \"ObjectShorthand\";\n // Any identifier bound in an import statement, e.g. both A and b from\n // `import A, * as b from 'A';`\n const ImportDeclaration = ObjectShorthand + 1; IdentifierRole[IdentifierRole[\"ImportDeclaration\"] = ImportDeclaration] = \"ImportDeclaration\";\n const ObjectKey = ImportDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectKey\"] = ObjectKey] = \"ObjectKey\";\n // The `foo` in `import {foo as bar} from \"./abc\";`.\n const ImportAccess = ObjectKey + 1; IdentifierRole[IdentifierRole[\"ImportAccess\"] = ImportAccess] = \"ImportAccess\";\n})(IdentifierRole || (exports.IdentifierRole = IdentifierRole = {}));\n\n function isDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.TopLevelDeclaration ||\n role === IdentifierRole.FunctionScopedDeclaration ||\n role === IdentifierRole.BlockScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n role === IdentifierRole.ObjectShorthandFunctionScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandBlockScopedDeclaration\n );\n} exports.isDeclaration = isDeclaration;\n\n function isNonTopLevelDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.FunctionScopedDeclaration ||\n role === IdentifierRole.BlockScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandFunctionScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandBlockScopedDeclaration\n );\n} exports.isNonTopLevelDeclaration = isNonTopLevelDeclaration;\n\n function isTopLevelDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.TopLevelDeclaration ||\n role === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n role === IdentifierRole.ImportDeclaration\n );\n} exports.isTopLevelDeclaration = isTopLevelDeclaration;\n\n function isBlockScopedDeclaration(token) {\n const role = token.identifierRole;\n // Treat top-level declarations as block scope since the distinction doesn't matter here.\n return (\n role === IdentifierRole.TopLevelDeclaration ||\n role === IdentifierRole.BlockScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n role === IdentifierRole.ObjectShorthandBlockScopedDeclaration\n );\n} exports.isBlockScopedDeclaration = isBlockScopedDeclaration;\n\n function isFunctionScopedDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.FunctionScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandFunctionScopedDeclaration\n );\n} exports.isFunctionScopedDeclaration = isFunctionScopedDeclaration;\n\n function isObjectShorthandDeclaration(token) {\n return (\n token.identifierRole === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n token.identifierRole === IdentifierRole.ObjectShorthandBlockScopedDeclaration ||\n token.identifierRole === IdentifierRole.ObjectShorthandFunctionScopedDeclaration\n );\n} exports.isObjectShorthandDeclaration = isObjectShorthandDeclaration;\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n class Token {\n constructor() {\n this.type = _base.state.type;\n this.contextualKeyword = _base.state.contextualKeyword;\n this.start = _base.state.start;\n this.end = _base.state.end;\n this.scopeDepth = _base.state.scopeDepth;\n this.isType = _base.state.isType;\n this.identifierRole = null;\n this.shadowsGlobal = false;\n this.contextId = null;\n this.rhsEndIndex = null;\n this.isExpression = false;\n this.numNullishCoalesceStarts = 0;\n this.numNullishCoalesceEnds = 0;\n this.isOptionalChainStart = false;\n this.isOptionalChainEnd = false;\n this.subscriptStartIndex = null;\n this.nullishStartIndex = null;\n }\n\n \n \n \n \n \n \n \n // Initially false for all tokens, then may be computed in a follow-up step that does scope\n // analysis.\n \n // Initially false for all tokens, but may be set during transform to mark it as containing an\n // await operation.\n \n \n // For assignments, the index of the RHS. For export tokens, the end of the export.\n \n // For class tokens, records if the class is a class expression or a class statement.\n \n // Number of times to insert a `nullishCoalesce(` snippet before this token.\n \n // Number of times to insert a `)` snippet after this token.\n \n // If true, insert an `optionalChain([` snippet before this token.\n \n // If true, insert a `])` snippet after this token.\n \n // Tag for `.`, `?.`, `[`, `?.[`, `(`, and `?.(` to denote the \"root\" token for this\n // subscript chain. This can be used to determine if this chain is an optional chain.\n \n // Tag for `??` operators to denote the root token for this nullish coalescing call.\n \n} exports.Token = Token;\n\n// ## Tokenizer\n\n// Move to the next token\n function next() {\n _base.state.tokens.push(new Token());\n nextToken();\n} exports.next = next;\n\n// Call instead of next when inside a template, since that needs to be handled differently.\n function nextTemplateToken() {\n _base.state.tokens.push(new Token());\n _base.state.start = _base.state.pos;\n readTmplToken();\n} exports.nextTemplateToken = nextTemplateToken;\n\n// The tokenizer never parses regexes by default. Instead, the parser is responsible for\n// instructing it to parse a regex when we see a slash at the start of an expression.\n function retokenizeSlashAsRegex() {\n if (_base.state.type === _types.TokenType.assign) {\n --_base.state.pos;\n }\n readRegexp();\n} exports.retokenizeSlashAsRegex = retokenizeSlashAsRegex;\n\n function pushTypeContext(existingTokensInType) {\n for (let i = _base.state.tokens.length - existingTokensInType; i < _base.state.tokens.length; i++) {\n _base.state.tokens[i].isType = true;\n }\n const oldIsType = _base.state.isType;\n _base.state.isType = true;\n return oldIsType;\n} exports.pushTypeContext = pushTypeContext;\n\n function popTypeContext(oldIsType) {\n _base.state.isType = oldIsType;\n} exports.popTypeContext = popTypeContext;\n\n function eat(type) {\n if (match(type)) {\n next();\n return true;\n } else {\n return false;\n }\n} exports.eat = eat;\n\n function match(type) {\n return _base.state.type === type;\n} exports.match = match;\n\n function lookaheadType() {\n const snapshot = _base.state.snapshot();\n next();\n const type = _base.state.type;\n _base.state.restoreFromSnapshot(snapshot);\n return type;\n} exports.lookaheadType = lookaheadType;\n\n class TypeAndKeyword {\n \n \n constructor(type, contextualKeyword) {\n this.type = type;\n this.contextualKeyword = contextualKeyword;\n }\n} exports.TypeAndKeyword = TypeAndKeyword;\n\n function lookaheadTypeAndKeyword() {\n const snapshot = _base.state.snapshot();\n next();\n const type = _base.state.type;\n const contextualKeyword = _base.state.contextualKeyword;\n _base.state.restoreFromSnapshot(snapshot);\n return new TypeAndKeyword(type, contextualKeyword);\n} exports.lookaheadTypeAndKeyword = lookaheadTypeAndKeyword;\n\n function nextTokenStart() {\n return nextTokenStartSince(_base.state.pos);\n} exports.nextTokenStart = nextTokenStart;\n\n function nextTokenStartSince(pos) {\n _whitespace.skipWhiteSpace.lastIndex = pos;\n const skip = _whitespace.skipWhiteSpace.exec(_base.input);\n return pos + skip[0].length;\n} exports.nextTokenStartSince = nextTokenStartSince;\n\n function lookaheadCharCode() {\n return _base.input.charCodeAt(nextTokenStart());\n} exports.lookaheadCharCode = lookaheadCharCode;\n\n// Read a single token, updating the parser object's token-related\n// properties.\n function nextToken() {\n skipSpace();\n _base.state.start = _base.state.pos;\n if (_base.state.pos >= _base.input.length) {\n const tokens = _base.state.tokens;\n // We normally run past the end a bit, but if we're way past the end, avoid an infinite loop.\n // Also check the token positions rather than the types since sometimes we rewrite the token\n // type to something else.\n if (\n tokens.length >= 2 &&\n tokens[tokens.length - 1].start >= _base.input.length &&\n tokens[tokens.length - 2].start >= _base.input.length\n ) {\n _util.unexpected.call(void 0, \"Unexpectedly reached the end of input.\");\n }\n finishToken(_types.TokenType.eof);\n return;\n }\n readToken(_base.input.charCodeAt(_base.state.pos));\n} exports.nextToken = nextToken;\n\nfunction readToken(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (\n _identifier.IS_IDENTIFIER_START[code] ||\n code === _charcodes.charCodes.backslash ||\n (code === _charcodes.charCodes.atSign && _base.input.charCodeAt(_base.state.pos + 1) === _charcodes.charCodes.atSign)\n ) {\n _readWord2.default.call(void 0, );\n } else {\n getTokenFromCode(code);\n }\n}\n\nfunction skipBlockComment() {\n while (\n _base.input.charCodeAt(_base.state.pos) !== _charcodes.charCodes.asterisk ||\n _base.input.charCodeAt(_base.state.pos + 1) !== _charcodes.charCodes.slash\n ) {\n _base.state.pos++;\n if (_base.state.pos > _base.input.length) {\n _util.unexpected.call(void 0, \"Unterminated comment\", _base.state.pos - 2);\n return;\n }\n }\n _base.state.pos += 2;\n}\n\n function skipLineComment(startSkip) {\n let ch = _base.input.charCodeAt((_base.state.pos += startSkip));\n if (_base.state.pos < _base.input.length) {\n while (\n ch !== _charcodes.charCodes.lineFeed &&\n ch !== _charcodes.charCodes.carriageReturn &&\n ch !== _charcodes.charCodes.lineSeparator &&\n ch !== _charcodes.charCodes.paragraphSeparator &&\n ++_base.state.pos < _base.input.length\n ) {\n ch = _base.input.charCodeAt(_base.state.pos);\n }\n }\n} exports.skipLineComment = skipLineComment;\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments.\n function skipSpace() {\n while (_base.state.pos < _base.input.length) {\n const ch = _base.input.charCodeAt(_base.state.pos);\n switch (ch) {\n case _charcodes.charCodes.carriageReturn:\n if (_base.input.charCodeAt(_base.state.pos + 1) === _charcodes.charCodes.lineFeed) {\n ++_base.state.pos;\n }\n\n case _charcodes.charCodes.lineFeed:\n case _charcodes.charCodes.lineSeparator:\n case _charcodes.charCodes.paragraphSeparator:\n ++_base.state.pos;\n break;\n\n case _charcodes.charCodes.slash:\n switch (_base.input.charCodeAt(_base.state.pos + 1)) {\n case _charcodes.charCodes.asterisk:\n _base.state.pos += 2;\n skipBlockComment();\n break;\n\n case _charcodes.charCodes.slash:\n skipLineComment(2);\n break;\n\n default:\n return;\n }\n break;\n\n default:\n if (_whitespace.IS_WHITESPACE[ch]) {\n ++_base.state.pos;\n } else {\n return;\n }\n }\n }\n} exports.skipSpace = skipSpace;\n\n// Called at the end of every token. Sets various fields, and skips the space after the token, so\n// that the next one's `start` will point at the right position.\n function finishToken(\n type,\n contextualKeyword = _keywords.ContextualKeyword.NONE,\n) {\n _base.state.end = _base.state.pos;\n _base.state.type = type;\n _base.state.contextualKeyword = contextualKeyword;\n} exports.finishToken = finishToken;\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\nfunction readToken_dot() {\n const nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n if (nextChar >= _charcodes.charCodes.digit0 && nextChar <= _charcodes.charCodes.digit9) {\n readNumber(true);\n return;\n }\n\n if (nextChar === _charcodes.charCodes.dot && _base.input.charCodeAt(_base.state.pos + 2) === _charcodes.charCodes.dot) {\n _base.state.pos += 3;\n finishToken(_types.TokenType.ellipsis);\n } else {\n ++_base.state.pos;\n finishToken(_types.TokenType.dot);\n }\n}\n\nfunction readToken_slash() {\n const nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n if (nextChar === _charcodes.charCodes.equalsTo) {\n finishOp(_types.TokenType.assign, 2);\n } else {\n finishOp(_types.TokenType.slash, 1);\n }\n}\n\nfunction readToken_mult_modulo(code) {\n // '%*'\n let tokenType = code === _charcodes.charCodes.asterisk ? _types.TokenType.star : _types.TokenType.modulo;\n let width = 1;\n let nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n\n // Exponentiation operator **\n if (code === _charcodes.charCodes.asterisk && nextChar === _charcodes.charCodes.asterisk) {\n width++;\n nextChar = _base.input.charCodeAt(_base.state.pos + 2);\n tokenType = _types.TokenType.exponent;\n }\n\n // Match *= or %=, disallowing *=> which can be valid in flow.\n if (\n nextChar === _charcodes.charCodes.equalsTo &&\n _base.input.charCodeAt(_base.state.pos + 2) !== _charcodes.charCodes.greaterThan\n ) {\n width++;\n tokenType = _types.TokenType.assign;\n }\n\n finishOp(tokenType, width);\n}\n\nfunction readToken_pipe_amp(code) {\n // '|&'\n const nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n\n if (nextChar === code) {\n if (_base.input.charCodeAt(_base.state.pos + 2) === _charcodes.charCodes.equalsTo) {\n // ||= or &&=\n finishOp(_types.TokenType.assign, 3);\n } else {\n // || or &&\n finishOp(code === _charcodes.charCodes.verticalBar ? _types.TokenType.logicalOR : _types.TokenType.logicalAND, 2);\n }\n return;\n }\n\n if (code === _charcodes.charCodes.verticalBar) {\n // '|>'\n if (nextChar === _charcodes.charCodes.greaterThan) {\n finishOp(_types.TokenType.pipeline, 2);\n return;\n } else if (nextChar === _charcodes.charCodes.rightCurlyBrace && _base.isFlowEnabled) {\n // '|}'\n finishOp(_types.TokenType.braceBarR, 2);\n return;\n }\n }\n\n if (nextChar === _charcodes.charCodes.equalsTo) {\n finishOp(_types.TokenType.assign, 2);\n return;\n }\n\n finishOp(code === _charcodes.charCodes.verticalBar ? _types.TokenType.bitwiseOR : _types.TokenType.bitwiseAND, 1);\n}\n\nfunction readToken_caret() {\n // '^'\n const nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n if (nextChar === _charcodes.charCodes.equalsTo) {\n finishOp(_types.TokenType.assign, 2);\n } else {\n finishOp(_types.TokenType.bitwiseXOR, 1);\n }\n}\n\nfunction readToken_plus_min(code) {\n // '+-'\n const nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n\n if (nextChar === code) {\n // Tentatively call this a prefix operator, but it might be changed to postfix later.\n finishOp(_types.TokenType.preIncDec, 2);\n return;\n }\n\n if (nextChar === _charcodes.charCodes.equalsTo) {\n finishOp(_types.TokenType.assign, 2);\n } else if (code === _charcodes.charCodes.plusSign) {\n finishOp(_types.TokenType.plus, 1);\n } else {\n finishOp(_types.TokenType.minus, 1);\n }\n}\n\n// '<>'\nfunction readToken_lt_gt(code) {\n const nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n\n if (nextChar === code) {\n const size =\n code === _charcodes.charCodes.greaterThan && _base.input.charCodeAt(_base.state.pos + 2) === _charcodes.charCodes.greaterThan\n ? 3\n : 2;\n if (_base.input.charCodeAt(_base.state.pos + size) === _charcodes.charCodes.equalsTo) {\n finishOp(_types.TokenType.assign, size + 1);\n return;\n }\n // Avoid right-shift for things like Array<Array<string>>.\n if (code === _charcodes.charCodes.greaterThan && _base.state.isType) {\n finishOp(_types.TokenType.greaterThan, 1);\n return;\n }\n finishOp(_types.TokenType.bitShift, size);\n return;\n }\n\n if (nextChar === _charcodes.charCodes.equalsTo) {\n // <= | >=\n finishOp(_types.TokenType.relationalOrEqual, 2);\n } else if (code === _charcodes.charCodes.lessThan) {\n finishOp(_types.TokenType.lessThan, 1);\n } else {\n finishOp(_types.TokenType.greaterThan, 1);\n }\n}\n\nfunction readToken_eq_excl(code) {\n // '=!'\n const nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n if (nextChar === _charcodes.charCodes.equalsTo) {\n finishOp(_types.TokenType.equality, _base.input.charCodeAt(_base.state.pos + 2) === _charcodes.charCodes.equalsTo ? 3 : 2);\n return;\n }\n if (code === _charcodes.charCodes.equalsTo && nextChar === _charcodes.charCodes.greaterThan) {\n // '=>'\n _base.state.pos += 2;\n finishToken(_types.TokenType.arrow);\n return;\n }\n finishOp(code === _charcodes.charCodes.equalsTo ? _types.TokenType.eq : _types.TokenType.bang, 1);\n}\n\nfunction readToken_question() {\n // '?'\n const nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n const nextChar2 = _base.input.charCodeAt(_base.state.pos + 2);\n if (nextChar === _charcodes.charCodes.questionMark && !_base.state.isType) {\n if (nextChar2 === _charcodes.charCodes.equalsTo) {\n // '??='\n finishOp(_types.TokenType.assign, 3);\n } else {\n // '??'\n finishOp(_types.TokenType.nullishCoalescing, 2);\n }\n } else if (\n nextChar === _charcodes.charCodes.dot &&\n !(nextChar2 >= _charcodes.charCodes.digit0 && nextChar2 <= _charcodes.charCodes.digit9)\n ) {\n // '.' not followed by a number\n _base.state.pos += 2;\n finishToken(_types.TokenType.questionDot);\n } else {\n ++_base.state.pos;\n finishToken(_types.TokenType.question);\n }\n}\n\n function getTokenFromCode(code) {\n switch (code) {\n case _charcodes.charCodes.numberSign:\n ++_base.state.pos;\n finishToken(_types.TokenType.hash);\n return;\n\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n\n case _charcodes.charCodes.dot:\n readToken_dot();\n return;\n\n // Punctuation tokens.\n case _charcodes.charCodes.leftParenthesis:\n ++_base.state.pos;\n finishToken(_types.TokenType.parenL);\n return;\n case _charcodes.charCodes.rightParenthesis:\n ++_base.state.pos;\n finishToken(_types.TokenType.parenR);\n return;\n case _charcodes.charCodes.semicolon:\n ++_base.state.pos;\n finishToken(_types.TokenType.semi);\n return;\n case _charcodes.charCodes.comma:\n ++_base.state.pos;\n finishToken(_types.TokenType.comma);\n return;\n case _charcodes.charCodes.leftSquareBracket:\n ++_base.state.pos;\n finishToken(_types.TokenType.bracketL);\n return;\n case _charcodes.charCodes.rightSquareBracket:\n ++_base.state.pos;\n finishToken(_types.TokenType.bracketR);\n return;\n\n case _charcodes.charCodes.leftCurlyBrace:\n if (_base.isFlowEnabled && _base.input.charCodeAt(_base.state.pos + 1) === _charcodes.charCodes.verticalBar) {\n finishOp(_types.TokenType.braceBarL, 2);\n } else {\n ++_base.state.pos;\n finishToken(_types.TokenType.braceL);\n }\n return;\n\n case _charcodes.charCodes.rightCurlyBrace:\n ++_base.state.pos;\n finishToken(_types.TokenType.braceR);\n return;\n\n case _charcodes.charCodes.colon:\n if (_base.input.charCodeAt(_base.state.pos + 1) === _charcodes.charCodes.colon) {\n finishOp(_types.TokenType.doubleColon, 2);\n } else {\n ++_base.state.pos;\n finishToken(_types.TokenType.colon);\n }\n return;\n\n case _charcodes.charCodes.questionMark:\n readToken_question();\n return;\n case _charcodes.charCodes.atSign:\n ++_base.state.pos;\n finishToken(_types.TokenType.at);\n return;\n\n case _charcodes.charCodes.graveAccent:\n ++_base.state.pos;\n finishToken(_types.TokenType.backQuote);\n return;\n\n case _charcodes.charCodes.digit0: {\n const nextChar = _base.input.charCodeAt(_base.state.pos + 1);\n // '0x', '0X', '0o', '0O', '0b', '0B'\n if (\n nextChar === _charcodes.charCodes.lowercaseX ||\n nextChar === _charcodes.charCodes.uppercaseX ||\n nextChar === _charcodes.charCodes.lowercaseO ||\n nextChar === _charcodes.charCodes.uppercaseO ||\n nextChar === _charcodes.charCodes.lowercaseB ||\n nextChar === _charcodes.charCodes.uppercaseB\n ) {\n readRadixNumber();\n return;\n }\n }\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case _charcodes.charCodes.digit1:\n case _charcodes.charCodes.digit2:\n case _charcodes.charCodes.digit3:\n case _charcodes.charCodes.digit4:\n case _charcodes.charCodes.digit5:\n case _charcodes.charCodes.digit6:\n case _charcodes.charCodes.digit7:\n case _charcodes.charCodes.digit8:\n case _charcodes.charCodes.digit9:\n readNumber(false);\n return;\n\n // Quotes produce strings.\n case _charcodes.charCodes.quotationMark:\n case _charcodes.charCodes.apostrophe:\n readString(code);\n return;\n\n // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case _charcodes.charCodes.slash:\n readToken_slash();\n return;\n\n case _charcodes.charCodes.percentSign:\n case _charcodes.charCodes.asterisk:\n readToken_mult_modulo(code);\n return;\n\n case _charcodes.charCodes.verticalBar:\n case _charcodes.charCodes.ampersand:\n readToken_pipe_amp(code);\n return;\n\n case _charcodes.charCodes.caret:\n readToken_caret();\n return;\n\n case _charcodes.charCodes.plusSign:\n case _charcodes.charCodes.dash:\n readToken_plus_min(code);\n return;\n\n case _charcodes.charCodes.lessThan:\n case _charcodes.charCodes.greaterThan:\n readToken_lt_gt(code);\n return;\n\n case _charcodes.charCodes.equalsTo:\n case _charcodes.charCodes.exclamationMark:\n readToken_eq_excl(code);\n return;\n\n case _charcodes.charCodes.tilde:\n finishOp(_types.TokenType.tilde, 1);\n return;\n\n default:\n break;\n }\n\n _util.unexpected.call(void 0, `Unexpected character '${String.fromCharCode(code)}'`, _base.state.pos);\n} exports.getTokenFromCode = getTokenFromCode;\n\nfunction finishOp(type, size) {\n _base.state.pos += size;\n finishToken(type);\n}\n\nfunction readRegexp() {\n const start = _base.state.pos;\n let escaped = false;\n let inClass = false;\n for (;;) {\n if (_base.state.pos >= _base.input.length) {\n _util.unexpected.call(void 0, \"Unterminated regular expression\", start);\n return;\n }\n const code = _base.input.charCodeAt(_base.state.pos);\n if (escaped) {\n escaped = false;\n } else {\n if (code === _charcodes.charCodes.leftSquareBracket) {\n inClass = true;\n } else if (code === _charcodes.charCodes.rightSquareBracket && inClass) {\n inClass = false;\n } else if (code === _charcodes.charCodes.slash && !inClass) {\n break;\n }\n escaped = code === _charcodes.charCodes.backslash;\n }\n ++_base.state.pos;\n }\n ++_base.state.pos;\n // Need to use `skipWord` because '\\uXXXX' sequences are allowed here (don't ask).\n skipWord();\n\n finishToken(_types.TokenType.regexp);\n}\n\n// Read an integer. We allow any valid digit, including hex digits, plus numeric separators, and\n// stop at any other character.\nfunction readInt() {\n while (true) {\n const code = _base.input.charCodeAt(_base.state.pos);\n if (\n (code >= _charcodes.charCodes.digit0 && code <= _charcodes.charCodes.digit9) ||\n (code >= _charcodes.charCodes.lowercaseA && code <= _charcodes.charCodes.lowercaseF) ||\n (code >= _charcodes.charCodes.uppercaseA && code <= _charcodes.charCodes.uppercaseF) ||\n code === _charcodes.charCodes.underscore\n ) {\n _base.state.pos++;\n } else {\n break;\n }\n }\n}\n\nfunction readRadixNumber() {\n let isBigInt = false;\n const start = _base.state.pos;\n\n _base.state.pos += 2; // 0x\n readInt();\n\n const nextChar = _base.input.charCodeAt(_base.state.pos);\n if (nextChar === _charcodes.charCodes.lowercaseN) {\n ++_base.state.pos;\n isBigInt = true;\n } else if (nextChar === _charcodes.charCodes.lowercaseM) {\n _util.unexpected.call(void 0, \"Invalid decimal\", start);\n }\n\n if (isBigInt) {\n finishToken(_types.TokenType.bigint);\n return;\n }\n\n finishToken(_types.TokenType.num);\n}\n\n// Read an integer, octal integer, or floating-point number.\nfunction readNumber(startsWithDot) {\n let isBigInt = false;\n let isDecimal = false;\n\n if (!startsWithDot) {\n readInt();\n }\n\n let nextChar = _base.input.charCodeAt(_base.state.pos);\n if (nextChar === _charcodes.charCodes.dot) {\n ++_base.state.pos;\n readInt();\n nextChar = _base.input.charCodeAt(_base.state.pos);\n }\n\n if (nextChar === _charcodes.charCodes.uppercaseE || nextChar === _charcodes.charCodes.lowercaseE) {\n nextChar = _base.input.charCodeAt(++_base.state.pos);\n if (nextChar === _charcodes.charCodes.plusSign || nextChar === _charcodes.charCodes.dash) {\n ++_base.state.pos;\n }\n readInt();\n nextChar = _base.input.charCodeAt(_base.state.pos);\n }\n\n if (nextChar === _charcodes.charCodes.lowercaseN) {\n ++_base.state.pos;\n isBigInt = true;\n } else if (nextChar === _charcodes.charCodes.lowercaseM) {\n ++_base.state.pos;\n isDecimal = true;\n }\n\n if (isBigInt) {\n finishToken(_types.TokenType.bigint);\n return;\n }\n\n if (isDecimal) {\n finishToken(_types.TokenType.decimal);\n return;\n }\n\n finishToken(_types.TokenType.num);\n}\n\nfunction readString(quote) {\n _base.state.pos++;\n for (;;) {\n if (_base.state.pos >= _base.input.length) {\n _util.unexpected.call(void 0, \"Unterminated string constant\");\n return;\n }\n const ch = _base.input.charCodeAt(_base.state.pos);\n if (ch === _charcodes.charCodes.backslash) {\n _base.state.pos++;\n } else if (ch === quote) {\n break;\n }\n _base.state.pos++;\n }\n _base.state.pos++;\n finishToken(_types.TokenType.string);\n}\n\n// Reads template string tokens.\nfunction readTmplToken() {\n for (;;) {\n if (_base.state.pos >= _base.input.length) {\n _util.unexpected.call(void 0, \"Unterminated template\");\n return;\n }\n const ch = _base.input.charCodeAt(_base.state.pos);\n if (\n ch === _charcodes.charCodes.graveAccent ||\n (ch === _charcodes.charCodes.dollarSign && _base.input.charCodeAt(_base.state.pos + 1) === _charcodes.charCodes.leftCurlyBrace)\n ) {\n if (_base.state.pos === _base.state.start && match(_types.TokenType.template)) {\n if (ch === _charcodes.charCodes.dollarSign) {\n _base.state.pos += 2;\n finishToken(_types.TokenType.dollarBraceL);\n return;\n } else {\n ++_base.state.pos;\n finishToken(_types.TokenType.backQuote);\n return;\n }\n }\n finishToken(_types.TokenType.template);\n return;\n }\n if (ch === _charcodes.charCodes.backslash) {\n _base.state.pos++;\n }\n _base.state.pos++;\n }\n}\n\n// Skip to the end of the current word. Note that this is the same as the snippet at the end of\n// readWord, but calling skipWord from readWord seems to slightly hurt performance from some rough\n// measurements.\n function skipWord() {\n while (_base.state.pos < _base.input.length) {\n const ch = _base.input.charCodeAt(_base.state.pos);\n if (_identifier.IS_IDENTIFIER_CHAR[ch]) {\n _base.state.pos++;\n } else if (ch === _charcodes.charCodes.backslash) {\n // \\u\n _base.state.pos += 2;\n if (_base.input.charCodeAt(_base.state.pos) === _charcodes.charCodes.leftCurlyBrace) {\n while (\n _base.state.pos < _base.input.length &&\n _base.input.charCodeAt(_base.state.pos) !== _charcodes.charCodes.rightCurlyBrace\n ) {\n _base.state.pos++;\n }\n _base.state.pos++;\n }\n } else {\n break;\n }\n }\n} exports.skipWord = skipWord;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var ContextualKeyword; (function (ContextualKeyword) {\n const NONE = 0; ContextualKeyword[ContextualKeyword[\"NONE\"] = NONE] = \"NONE\";\n const _abstract = NONE + 1; ContextualKeyword[ContextualKeyword[\"_abstract\"] = _abstract] = \"_abstract\";\n const _as = _abstract + 1; ContextualKeyword[ContextualKeyword[\"_as\"] = _as] = \"_as\";\n const _asserts = _as + 1; ContextualKeyword[ContextualKeyword[\"_asserts\"] = _asserts] = \"_asserts\";\n const _async = _asserts + 1; ContextualKeyword[ContextualKeyword[\"_async\"] = _async] = \"_async\";\n const _await = _async + 1; ContextualKeyword[ContextualKeyword[\"_await\"] = _await] = \"_await\";\n const _checks = _await + 1; ContextualKeyword[ContextualKeyword[\"_checks\"] = _checks] = \"_checks\";\n const _constructor = _checks + 1; ContextualKeyword[ContextualKeyword[\"_constructor\"] = _constructor] = \"_constructor\";\n const _declare = _constructor + 1; ContextualKeyword[ContextualKeyword[\"_declare\"] = _declare] = \"_declare\";\n const _enum = _declare + 1; ContextualKeyword[ContextualKeyword[\"_enum\"] = _enum] = \"_enum\";\n const _exports = _enum + 1; ContextualKeyword[ContextualKeyword[\"_exports\"] = _exports] = \"_exports\";\n const _from = _exports + 1; ContextualKeyword[ContextualKeyword[\"_from\"] = _from] = \"_from\";\n const _get = _from + 1; ContextualKeyword[ContextualKeyword[\"_get\"] = _get] = \"_get\";\n const _global = _get + 1; ContextualKeyword[ContextualKeyword[\"_global\"] = _global] = \"_global\";\n const _implements = _global + 1; ContextualKeyword[ContextualKeyword[\"_implements\"] = _implements] = \"_implements\";\n const _infer = _implements + 1; ContextualKeyword[ContextualKeyword[\"_infer\"] = _infer] = \"_infer\";\n const _interface = _infer + 1; ContextualKeyword[ContextualKeyword[\"_interface\"] = _interface] = \"_interface\";\n const _is = _interface + 1; ContextualKeyword[ContextualKeyword[\"_is\"] = _is] = \"_is\";\n const _keyof = _is + 1; ContextualKeyword[ContextualKeyword[\"_keyof\"] = _keyof] = \"_keyof\";\n const _mixins = _keyof + 1; ContextualKeyword[ContextualKeyword[\"_mixins\"] = _mixins] = \"_mixins\";\n const _module = _mixins + 1; ContextualKeyword[ContextualKeyword[\"_module\"] = _module] = \"_module\";\n const _namespace = _module + 1; ContextualKeyword[ContextualKeyword[\"_namespace\"] = _namespace] = \"_namespace\";\n const _of = _namespace + 1; ContextualKeyword[ContextualKeyword[\"_of\"] = _of] = \"_of\";\n const _opaque = _of + 1; ContextualKeyword[ContextualKeyword[\"_opaque\"] = _opaque] = \"_opaque\";\n const _private = _opaque + 1; ContextualKeyword[ContextualKeyword[\"_private\"] = _private] = \"_private\";\n const _protected = _private + 1; ContextualKeyword[ContextualKeyword[\"_protected\"] = _protected] = \"_protected\";\n const _proto = _protected + 1; ContextualKeyword[ContextualKeyword[\"_proto\"] = _proto] = \"_proto\";\n const _public = _proto + 1; ContextualKeyword[ContextualKeyword[\"_public\"] = _public] = \"_public\";\n const _readonly = _public + 1; ContextualKeyword[ContextualKeyword[\"_readonly\"] = _readonly] = \"_readonly\";\n const _require = _readonly + 1; ContextualKeyword[ContextualKeyword[\"_require\"] = _require] = \"_require\";\n const _set = _require + 1; ContextualKeyword[ContextualKeyword[\"_set\"] = _set] = \"_set\";\n const _static = _set + 1; ContextualKeyword[ContextualKeyword[\"_static\"] = _static] = \"_static\";\n const _type = _static + 1; ContextualKeyword[ContextualKeyword[\"_type\"] = _type] = \"_type\";\n const _unique = _type + 1; ContextualKeyword[ContextualKeyword[\"_unique\"] = _unique] = \"_unique\";\n})(ContextualKeyword || (exports.ContextualKeyword = ContextualKeyword = {}));\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _base = require('../traverser/base');\nvar _charcodes = require('../util/charcodes');\nvar _identifier = require('../util/identifier');\nvar _index = require('./index');\nvar _readWordTree = require('./readWordTree');\nvar _types = require('./types');\n\n/**\n * Read an identifier, producing either a name token or matching on one of the existing keywords.\n * For performance, we pre-generate big decision tree that we traverse. Each node represents a\n * prefix and has 27 values, where the first value is the token or contextual token, if any (-1 if\n * not), and the other 26 values are the transitions to other nodes, or -1 to stop.\n */\n function readWord() {\n let treePos = 0;\n let code = 0;\n let pos = _base.state.pos;\n while (pos < _base.input.length) {\n code = _base.input.charCodeAt(pos);\n if (code < _charcodes.charCodes.lowercaseA || code > _charcodes.charCodes.lowercaseZ) {\n break;\n }\n const next = _readWordTree.READ_WORD_TREE[treePos + (code - _charcodes.charCodes.lowercaseA) + 1];\n if (next === -1) {\n break;\n } else {\n treePos = next;\n pos++;\n }\n }\n\n const keywordValue = _readWordTree.READ_WORD_TREE[treePos];\n if (keywordValue > -1 && !_identifier.IS_IDENTIFIER_CHAR[code]) {\n _base.state.pos = pos;\n if (keywordValue & 1) {\n _index.finishToken.call(void 0, keywordValue >>> 1);\n } else {\n _index.finishToken.call(void 0, _types.TokenType.name, keywordValue >>> 1);\n }\n return;\n }\n\n while (pos < _base.input.length) {\n const ch = _base.input.charCodeAt(pos);\n if (_identifier.IS_IDENTIFIER_CHAR[ch]) {\n pos++;\n } else if (ch === _charcodes.charCodes.backslash) {\n // \\u\n pos += 2;\n if (_base.input.charCodeAt(pos) === _charcodes.charCodes.leftCurlyBrace) {\n while (pos < _base.input.length && _base.input.charCodeAt(pos) !== _charcodes.charCodes.rightCurlyBrace) {\n pos++;\n }\n pos++;\n }\n } else if (ch === _charcodes.charCodes.atSign && _base.input.charCodeAt(pos + 1) === _charcodes.charCodes.atSign) {\n pos += 2;\n } else {\n break;\n }\n }\n _base.state.pos = pos;\n _index.finishToken.call(void 0, _types.TokenType.name);\n} exports.default = readWord;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});// Generated file, do not edit! Run \"yarn generate\" to re-generate this file.\nvar _keywords = require('./keywords');\nvar _types = require('./types');\n\n// prettier-ignore\n const READ_WORD_TREE = new Int32Array([\n // \"\"\n -1, 27, 594, 729, 1566, 2187, 2673, 3294, -1, 3510, -1, 4428, 4563, 4644, 4941, 5319, 5508, -1, 6048, 6507, 6966, 7398, 7560, 7722, -1, 7938, -1,\n // \"a\"\n -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 243, -1, -1, -1, 486, -1, -1, -1,\n // \"ab\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1,\n // \"abs\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, -1, -1, -1,\n // \"abst\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"abstr\"\n -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"abstra\"\n -1, -1, -1, 189, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"abstrac\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, -1, -1, -1, -1, -1,\n // \"abstract\"\n _keywords.ContextualKeyword._abstract << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"as\"\n _keywords.ContextualKeyword._as << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 270, -1, -1, -1, -1, -1, 405, -1,\n // \"ass\"\n -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asse\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 324, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asser\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, -1,\n // \"assert\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, -1, -1, -1, -1, -1, -1, -1,\n // \"asserts\"\n _keywords.ContextualKeyword._asserts << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asy\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 432, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asyn\"\n -1, -1, -1, 459, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"async\"\n _keywords.ContextualKeyword._async << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"aw\"\n -1, 513, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"awa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 540, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"awai\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 567, -1, -1, -1, -1, -1, -1,\n // \"await\"\n _keywords.ContextualKeyword._await << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"b\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 621, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"br\"\n -1, -1, -1, -1, -1, 648, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"bre\"\n -1, 675, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"brea\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 702, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"break\"\n (_types.TokenType._break << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"c\"\n -1, 756, -1, -1, -1, -1, -1, -1, 918, -1, -1, -1, 1053, -1, -1, 1161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ca\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 783, 837, -1, -1, -1, -1, -1, -1,\n // \"cas\"\n -1, -1, -1, -1, -1, 810, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"case\"\n (_types.TokenType._case << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cat\"\n -1, -1, -1, 864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"catc\"\n -1, -1, -1, -1, -1, -1, -1, -1, 891, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"catch\"\n (_types.TokenType._catch << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ch\"\n -1, -1, -1, -1, -1, 945, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"che\"\n -1, -1, -1, 972, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"chec\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 999, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"check\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1026, -1, -1, -1, -1, -1, -1, -1,\n // \"checks\"\n _keywords.ContextualKeyword._checks << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cl\"\n -1, 1080, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cla\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1107, -1, -1, -1, -1, -1, -1, -1,\n // \"clas\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1134, -1, -1, -1, -1, -1, -1, -1,\n // \"class\"\n (_types.TokenType._class << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"co\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"con\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1215, 1431, -1, -1, -1, -1, -1, -1,\n // \"cons\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1242, -1, -1, -1, -1, -1, -1,\n // \"const\"\n (_types.TokenType._const << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1269, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"constr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1296, -1, -1, -1, -1, -1,\n // \"constru\"\n -1, -1, -1, 1323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"construc\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1350, -1, -1, -1, -1, -1, -1,\n // \"construct\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"constructo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1404, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"constructor\"\n _keywords.ContextualKeyword._constructor << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cont\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 1458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"conti\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1485, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"contin\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1512, -1, -1, -1, -1, -1,\n // \"continu\"\n -1, -1, -1, -1, -1, 1539, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"continue\"\n (_types.TokenType._continue << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"d\"\n -1, -1, -1, -1, -1, 1593, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"de\"\n -1, -1, 1620, 1782, -1, -1, 1917, -1, -1, -1, -1, -1, 2052, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"deb\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1647, -1, -1, -1, -1, -1,\n // \"debu\"\n -1, -1, -1, -1, -1, -1, -1, 1674, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debug\"\n -1, -1, -1, -1, -1, -1, -1, 1701, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debugg\"\n -1, -1, -1, -1, -1, 1728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debugge\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1755, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debugger\"\n (_types.TokenType._debugger << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"dec\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1809, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"decl\"\n -1, 1836, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"decla\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1863, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"declar\"\n -1, -1, -1, -1, -1, 1890, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"declare\"\n _keywords.ContextualKeyword._declare << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"def\"\n -1, 1944, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"defa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1971, -1, -1, -1, -1, -1,\n // \"defau\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1998, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"defaul\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2025, -1, -1, -1, -1, -1, -1,\n // \"default\"\n (_types.TokenType._default << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"del\"\n -1, -1, -1, -1, -1, 2079, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"dele\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2106, -1, -1, -1, -1, -1, -1,\n // \"delet\"\n -1, -1, -1, -1, -1, 2133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"delete\"\n (_types.TokenType._delete << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"do\"\n (_types.TokenType._do << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"e\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2214, -1, 2295, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2376, -1, -1,\n // \"el\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2241, -1, -1, -1, -1, -1, -1, -1,\n // \"els\"\n -1, -1, -1, -1, -1, 2268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"else\"\n (_types.TokenType._else << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"en\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2322, -1, -1, -1, -1, -1,\n // \"enu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2349, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"enum\"\n _keywords.ContextualKeyword._enum << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ex\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2403, -1, -1, -1, 2538, -1, -1, -1, -1, -1, -1,\n // \"exp\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2430, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"expo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2457, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"expor\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2484, -1, -1, -1, -1, -1, -1,\n // \"export\"\n (_types.TokenType._export << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2511, -1, -1, -1, -1, -1, -1, -1,\n // \"exports\"\n _keywords.ContextualKeyword._exports << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ext\"\n -1, -1, -1, -1, -1, 2565, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"exte\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2592, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"exten\"\n -1, -1, -1, -1, 2619, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"extend\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2646, -1, -1, -1, -1, -1, -1, -1,\n // \"extends\"\n (_types.TokenType._extends << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"f\"\n -1, 2700, -1, -1, -1, -1, -1, -1, -1, 2808, -1, -1, -1, -1, -1, 2970, -1, -1, 3024, -1, -1, 3105, -1, -1, -1, -1, -1,\n // \"fa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2727, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fal\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2754, -1, -1, -1, -1, -1, -1, -1,\n // \"fals\"\n -1, -1, -1, -1, -1, 2781, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"false\"\n (_types.TokenType._false << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2835, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fin\"\n -1, 2862, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fina\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2889, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"final\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2916, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"finall\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2943, -1,\n // \"finally\"\n (_types.TokenType._finally << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2997, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"for\"\n (_types.TokenType._for << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3051, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fro\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3078, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"from\"\n _keywords.ContextualKeyword._from << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fun\"\n -1, -1, -1, 3159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"func\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3186, -1, -1, -1, -1, -1, -1,\n // \"funct\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 3213, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"functi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3240, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"functio\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"function\"\n (_types.TokenType._function << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"g\"\n -1, -1, -1, -1, -1, 3321, -1, -1, -1, -1, -1, -1, 3375, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ge\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3348, -1, -1, -1, -1, -1, -1,\n // \"get\"\n _keywords.ContextualKeyword._get << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"gl\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3402, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"glo\"\n -1, -1, 3429, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"glob\"\n -1, 3456, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"globa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3483, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"global\"\n _keywords.ContextualKeyword._global << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"i\"\n -1, -1, -1, -1, -1, -1, 3537, -1, -1, -1, -1, -1, -1, 3564, 3888, -1, -1, -1, -1, 4401, -1, -1, -1, -1, -1, -1, -1,\n // \"if\"\n (_types.TokenType._if << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"im\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3591, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"imp\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3618, -1, -1, 3807, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impl\"\n -1, -1, -1, -1, -1, 3645, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"imple\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3672, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"implem\"\n -1, -1, -1, -1, -1, 3699, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impleme\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3726, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"implemen\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3753, -1, -1, -1, -1, -1, -1,\n // \"implement\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3780, -1, -1, -1, -1, -1, -1, -1,\n // \"implements\"\n _keywords.ContextualKeyword._implements << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3834, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impor\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3861, -1, -1, -1, -1, -1, -1,\n // \"import\"\n (_types.TokenType._import << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"in\"\n (_types.TokenType._in << 1) + 1, -1, -1, -1, -1, -1, 3915, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3996, 4212, -1, -1, -1, -1, -1, -1,\n // \"inf\"\n -1, -1, -1, -1, -1, 3942, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"infe\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3969, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"infer\"\n _keywords.ContextualKeyword._infer << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ins\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4023, -1, -1, -1, -1, -1, -1,\n // \"inst\"\n -1, 4050, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"insta\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4077, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instan\"\n -1, -1, -1, 4104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instanc\"\n -1, -1, -1, -1, -1, 4131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instance\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4158, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instanceo\"\n -1, -1, -1, -1, -1, -1, 4185, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instanceof\"\n (_types.TokenType._instanceof << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"int\"\n -1, -1, -1, -1, -1, 4239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"inte\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4266, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"inter\"\n -1, -1, -1, -1, -1, -1, 4293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interf\"\n -1, 4320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interfa\"\n -1, -1, -1, 4347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interfac\"\n -1, -1, -1, -1, -1, 4374, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interface\"\n _keywords.ContextualKeyword._interface << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"is\"\n _keywords.ContextualKeyword._is << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"k\"\n -1, -1, -1, -1, -1, 4455, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ke\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4482, -1,\n // \"key\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4509, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"keyo\"\n -1, -1, -1, -1, -1, -1, 4536, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"keyof\"\n _keywords.ContextualKeyword._keyof << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"l\"\n -1, -1, -1, -1, -1, 4590, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"le\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4617, -1, -1, -1, -1, -1, -1,\n // \"let\"\n (_types.TokenType._let << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"m\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 4671, -1, -1, -1, -1, -1, 4806, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4698, -1, -1,\n // \"mix\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 4725, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mixi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4752, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mixin\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4779, -1, -1, -1, -1, -1, -1, -1,\n // \"mixins\"\n _keywords.ContextualKeyword._mixins << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mo\"\n -1, -1, -1, -1, 4833, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mod\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4860, -1, -1, -1, -1, -1,\n // \"modu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4887, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"modul\"\n -1, -1, -1, -1, -1, 4914, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"module\"\n _keywords.ContextualKeyword._module << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"n\"\n -1, 4968, -1, -1, -1, 5184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5238, -1, -1, -1, -1, -1,\n // \"na\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4995, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"nam\"\n -1, -1, -1, -1, -1, 5022, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"name\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5049, -1, -1, -1, -1, -1, -1, -1,\n // \"names\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5076, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namesp\"\n -1, 5103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namespa\"\n -1, -1, -1, 5130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namespac\"\n -1, -1, -1, -1, -1, 5157, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namespace\"\n _keywords.ContextualKeyword._namespace << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ne\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5211, -1, -1, -1,\n // \"new\"\n (_types.TokenType._new << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"nu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"nul\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5292, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"null\"\n (_types.TokenType._null << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"o\"\n -1, -1, -1, -1, -1, -1, 5346, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5373, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"of\"\n _keywords.ContextualKeyword._of << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"op\"\n -1, 5400, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"opa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5427, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"opaq\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5454, -1, -1, -1, -1, -1,\n // \"opaqu\"\n -1, -1, -1, -1, -1, 5481, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"opaque\"\n _keywords.ContextualKeyword._opaque << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"p\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5535, -1, -1, 5913, -1, -1, -1, -1, -1,\n // \"pr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 5562, -1, -1, -1, -1, -1, 5697, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pri\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5589, -1, -1, -1, -1,\n // \"priv\"\n -1, 5616, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"priva\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5643, -1, -1, -1, -1, -1, -1,\n // \"privat\"\n -1, -1, -1, -1, -1, 5670, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"private\"\n _keywords.ContextualKeyword._private << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pro\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5724, -1, -1, -1, -1, -1, -1,\n // \"prot\"\n -1, -1, -1, -1, -1, 5751, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5886, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"prote\"\n -1, -1, -1, 5778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"protec\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5805, -1, -1, -1, -1, -1, -1,\n // \"protect\"\n -1, -1, -1, -1, -1, 5832, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"protecte\"\n -1, -1, -1, -1, 5859, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"protected\"\n _keywords.ContextualKeyword._protected << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"proto\"\n _keywords.ContextualKeyword._proto << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pu\"\n -1, -1, 5940, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pub\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5967, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"publ\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 5994, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"publi\"\n -1, -1, -1, 6021, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"public\"\n _keywords.ContextualKeyword._public << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"r\"\n -1, -1, -1, -1, -1, 6075, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"re\"\n -1, 6102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6264, -1, -1, 6399, -1, -1, -1, -1, -1, -1,\n // \"rea\"\n -1, -1, -1, -1, 6129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"read\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"reado\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6183, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"readon\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"readonl\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6237, -1,\n // \"readonly\"\n _keywords.ContextualKeyword._readonly << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"req\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6291, -1, -1, -1, -1, -1,\n // \"requ\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 6318, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"requi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6345, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"requir\"\n -1, -1, -1, -1, -1, 6372, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"require\"\n _keywords.ContextualKeyword._require << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ret\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6426, -1, -1, -1, -1, -1,\n // \"retu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6453, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"retur\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6480, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"return\"\n (_types.TokenType._return << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"s\"\n -1, -1, -1, -1, -1, 6534, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6588, 6723, -1, 6831, -1, -1, -1,\n // \"se\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6561, -1, -1, -1, -1, -1, -1,\n // \"set\"\n _keywords.ContextualKeyword._set << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"st\"\n -1, 6615, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sta\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6642, -1, -1, -1, -1, -1, -1,\n // \"stat\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 6669, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"stati\"\n -1, -1, -1, 6696, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"static\"\n _keywords.ContextualKeyword._static << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"su\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6750, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sup\"\n -1, -1, -1, -1, -1, 6777, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"supe\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6804, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"super\"\n (_types.TokenType._super << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sw\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 6858, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"swi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6885, -1, -1, -1, -1, -1, -1,\n // \"swit\"\n -1, -1, -1, 6912, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"switc\"\n -1, -1, -1, -1, -1, -1, -1, -1, 6939, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"switch\"\n (_types.TokenType._switch << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"t\"\n -1, -1, -1, -1, -1, -1, -1, -1, 6993, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7155, -1, -1, -1, -1, -1, -1, 7263, -1,\n // \"th\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7020, -1, -1, -1, -1, -1, -1, -1, -1, 7074, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"thi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7047, -1, -1, -1, -1, -1, -1, -1,\n // \"this\"\n (_types.TokenType._this << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"thr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"thro\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7128, -1, -1, -1,\n // \"throw\"\n (_types.TokenType._throw << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"tr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7182, -1, -1, -1, 7236, -1,\n // \"tru\"\n -1, -1, -1, -1, -1, 7209, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"true\"\n (_types.TokenType._true << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"try\"\n (_types.TokenType._try << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ty\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7290, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"typ\"\n -1, -1, -1, -1, -1, 7317, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"type\"\n _keywords.ContextualKeyword._type << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"typeo\"\n -1, -1, -1, -1, -1, -1, 7371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"typeof\"\n (_types.TokenType._typeof << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"u\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7425, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"un\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7452, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"uni\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7479, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"uniq\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7506, -1, -1, -1, -1, -1,\n // \"uniqu\"\n -1, -1, -1, -1, -1, 7533, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"unique\"\n _keywords.ContextualKeyword._unique << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"v\"\n -1, 7587, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"va\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7614, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"var\"\n (_types.TokenType._var << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"vo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7668, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"voi\"\n -1, -1, -1, -1, 7695, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"void\"\n (_types.TokenType._void << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"w\"\n -1, -1, -1, -1, -1, -1, -1, -1, 7749, 7857, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"wh\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7776, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"whi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7803, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"whil\"\n -1, -1, -1, -1, -1, 7830, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"while\"\n (_types.TokenType._while << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"wi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7884, -1, -1, -1, -1, -1, -1,\n // \"wit\"\n -1, -1, -1, -1, -1, -1, -1, -1, 7911, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"with\"\n (_types.TokenType._with << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"y\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7965, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yi\"\n -1, -1, -1, -1, -1, 7992, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yie\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8019, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yiel\"\n -1, -1, -1, -1, 8046, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yield\"\n (_types.TokenType._yield << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n]); exports.READ_WORD_TREE = READ_WORD_TREE;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\nvar _keywords = require('./keywords');\nvar _types = require('./types');\n\n class Scope {\n \n \n \n\n constructor(startTokenIndex, endTokenIndex, isFunctionScope) {\n this.startTokenIndex = startTokenIndex;\n this.endTokenIndex = endTokenIndex;\n this.isFunctionScope = isFunctionScope;\n }\n} exports.Scope = Scope;\n\n class StateSnapshot {\n constructor(\n potentialArrowAt,\n noAnonFunctionType,\n tokensLength,\n scopesLength,\n pos,\n type,\n contextualKeyword,\n start,\n end,\n isType,\n scopeDepth,\n error,\n ) {;this.potentialArrowAt = potentialArrowAt;this.noAnonFunctionType = noAnonFunctionType;this.tokensLength = tokensLength;this.scopesLength = scopesLength;this.pos = pos;this.type = type;this.contextualKeyword = contextualKeyword;this.start = start;this.end = end;this.isType = isType;this.scopeDepth = scopeDepth;this.error = error;}\n} exports.StateSnapshot = StateSnapshot;\n\n class State {constructor() { State.prototype.__init.call(this);State.prototype.__init2.call(this);State.prototype.__init3.call(this);State.prototype.__init4.call(this);State.prototype.__init5.call(this);State.prototype.__init6.call(this);State.prototype.__init7.call(this);State.prototype.__init8.call(this);State.prototype.__init9.call(this);State.prototype.__init10.call(this);State.prototype.__init11.call(this);State.prototype.__init12.call(this); }\n // Used to signify the start of a potential arrow function\n __init() {this.potentialArrowAt = -1}\n\n // Used by Flow to handle an edge case involving function type parsing.\n __init2() {this.noAnonFunctionType = false}\n\n // Token store.\n __init3() {this.tokens = []}\n\n // Array of all observed scopes, ordered by their ending position.\n __init4() {this.scopes = []}\n\n // The current position of the tokenizer in the input.\n __init5() {this.pos = 0}\n\n // Information about the current token.\n __init6() {this.type = _types.TokenType.eof}\n __init7() {this.contextualKeyword = _keywords.ContextualKeyword.NONE}\n __init8() {this.start = 0}\n __init9() {this.end = 0}\n\n __init10() {this.isType = false}\n __init11() {this.scopeDepth = 0}\n\n /**\n * If the parser is in an error state, then the token is always tt.eof and all functions can\n * keep executing but should be written so they don't get into an infinite loop in this situation.\n *\n * This approach, combined with the ability to snapshot and restore state, allows us to implement\n * backtracking without exceptions and without needing to explicitly propagate error states\n * everywhere.\n */\n __init12() {this.error = null}\n\n snapshot() {\n return new StateSnapshot(\n this.potentialArrowAt,\n this.noAnonFunctionType,\n this.tokens.length,\n this.scopes.length,\n this.pos,\n this.type,\n this.contextualKeyword,\n this.start,\n this.end,\n this.isType,\n this.scopeDepth,\n this.error,\n );\n }\n\n restoreFromSnapshot(snapshot) {\n this.potentialArrowAt = snapshot.potentialArrowAt;\n this.noAnonFunctionType = snapshot.noAnonFunctionType;\n this.tokens.length = snapshot.tokensLength;\n this.scopes.length = snapshot.scopesLength;\n this.pos = snapshot.pos;\n this.type = snapshot.type;\n this.contextualKeyword = snapshot.contextualKeyword;\n this.start = snapshot.start;\n this.end = snapshot.end;\n this.isType = snapshot.isType;\n this.scopeDepth = snapshot.scopeDepth;\n this.error = snapshot.error;\n }\n} exports.default = State;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});// Generated file, do not edit! Run \"yarn generate\" to re-generate this file.\n/**\n * Enum of all token types, with bit fields to signify meaningful properties.\n */\nvar TokenType; (function (TokenType) {\n // Precedence 0 means not an operator; otherwise it is a positive number up to 12.\n const PRECEDENCE_MASK = 0xf; TokenType[TokenType[\"PRECEDENCE_MASK\"] = PRECEDENCE_MASK] = \"PRECEDENCE_MASK\";\n const IS_KEYWORD = 1 << 4; TokenType[TokenType[\"IS_KEYWORD\"] = IS_KEYWORD] = \"IS_KEYWORD\";\n const IS_ASSIGN = 1 << 5; TokenType[TokenType[\"IS_ASSIGN\"] = IS_ASSIGN] = \"IS_ASSIGN\";\n const IS_RIGHT_ASSOCIATIVE = 1 << 6; TokenType[TokenType[\"IS_RIGHT_ASSOCIATIVE\"] = IS_RIGHT_ASSOCIATIVE] = \"IS_RIGHT_ASSOCIATIVE\";\n const IS_PREFIX = 1 << 7; TokenType[TokenType[\"IS_PREFIX\"] = IS_PREFIX] = \"IS_PREFIX\";\n const IS_POSTFIX = 1 << 8; TokenType[TokenType[\"IS_POSTFIX\"] = IS_POSTFIX] = \"IS_POSTFIX\";\n\n const num = 0; TokenType[TokenType[\"num\"] = num] = \"num\"; // num\n const bigint = 512; TokenType[TokenType[\"bigint\"] = bigint] = \"bigint\"; // bigint\n const decimal = 1024; TokenType[TokenType[\"decimal\"] = decimal] = \"decimal\"; // decimal\n const regexp = 1536; TokenType[TokenType[\"regexp\"] = regexp] = \"regexp\"; // regexp\n const string = 2048; TokenType[TokenType[\"string\"] = string] = \"string\"; // string\n const name = 2560; TokenType[TokenType[\"name\"] = name] = \"name\"; // name\n const eof = 3072; TokenType[TokenType[\"eof\"] = eof] = \"eof\"; // eof\n const bracketL = 3584; TokenType[TokenType[\"bracketL\"] = bracketL] = \"bracketL\"; // [\n const bracketR = 4096; TokenType[TokenType[\"bracketR\"] = bracketR] = \"bracketR\"; // ]\n const braceL = 4608; TokenType[TokenType[\"braceL\"] = braceL] = \"braceL\"; // {\n const braceBarL = 5120; TokenType[TokenType[\"braceBarL\"] = braceBarL] = \"braceBarL\"; // {|\n const braceR = 5632; TokenType[TokenType[\"braceR\"] = braceR] = \"braceR\"; // }\n const braceBarR = 6144; TokenType[TokenType[\"braceBarR\"] = braceBarR] = \"braceBarR\"; // |}\n const parenL = 6656; TokenType[TokenType[\"parenL\"] = parenL] = \"parenL\"; // (\n const parenR = 7168; TokenType[TokenType[\"parenR\"] = parenR] = \"parenR\"; // )\n const comma = 7680; TokenType[TokenType[\"comma\"] = comma] = \"comma\"; // ,\n const semi = 8192; TokenType[TokenType[\"semi\"] = semi] = \"semi\"; // ;\n const colon = 8704; TokenType[TokenType[\"colon\"] = colon] = \"colon\"; // :\n const doubleColon = 9216; TokenType[TokenType[\"doubleColon\"] = doubleColon] = \"doubleColon\"; // ::\n const dot = 9728; TokenType[TokenType[\"dot\"] = dot] = \"dot\"; // .\n const question = 10240; TokenType[TokenType[\"question\"] = question] = \"question\"; // ?\n const questionDot = 10752; TokenType[TokenType[\"questionDot\"] = questionDot] = \"questionDot\"; // ?.\n const arrow = 11264; TokenType[TokenType[\"arrow\"] = arrow] = \"arrow\"; // =>\n const template = 11776; TokenType[TokenType[\"template\"] = template] = \"template\"; // template\n const ellipsis = 12288; TokenType[TokenType[\"ellipsis\"] = ellipsis] = \"ellipsis\"; // ...\n const backQuote = 12800; TokenType[TokenType[\"backQuote\"] = backQuote] = \"backQuote\"; // `\n const dollarBraceL = 13312; TokenType[TokenType[\"dollarBraceL\"] = dollarBraceL] = \"dollarBraceL\"; // ${\n const at = 13824; TokenType[TokenType[\"at\"] = at] = \"at\"; // @\n const hash = 14336; TokenType[TokenType[\"hash\"] = hash] = \"hash\"; // #\n const eq = 14880; TokenType[TokenType[\"eq\"] = eq] = \"eq\"; // = isAssign\n const assign = 15392; TokenType[TokenType[\"assign\"] = assign] = \"assign\"; // _= isAssign\n const preIncDec = 16256; TokenType[TokenType[\"preIncDec\"] = preIncDec] = \"preIncDec\"; // ++/-- prefix postfix\n const postIncDec = 16768; TokenType[TokenType[\"postIncDec\"] = postIncDec] = \"postIncDec\"; // ++/-- prefix postfix\n const bang = 17024; TokenType[TokenType[\"bang\"] = bang] = \"bang\"; // ! prefix\n const tilde = 17536; TokenType[TokenType[\"tilde\"] = tilde] = \"tilde\"; // ~ prefix\n const pipeline = 17921; TokenType[TokenType[\"pipeline\"] = pipeline] = \"pipeline\"; // |> prec:1\n const nullishCoalescing = 18434; TokenType[TokenType[\"nullishCoalescing\"] = nullishCoalescing] = \"nullishCoalescing\"; // ?? prec:2\n const logicalOR = 18946; TokenType[TokenType[\"logicalOR\"] = logicalOR] = \"logicalOR\"; // || prec:2\n const logicalAND = 19459; TokenType[TokenType[\"logicalAND\"] = logicalAND] = \"logicalAND\"; // && prec:3\n const bitwiseOR = 19972; TokenType[TokenType[\"bitwiseOR\"] = bitwiseOR] = \"bitwiseOR\"; // | prec:4\n const bitwiseXOR = 20485; TokenType[TokenType[\"bitwiseXOR\"] = bitwiseXOR] = \"bitwiseXOR\"; // ^ prec:5\n const bitwiseAND = 20998; TokenType[TokenType[\"bitwiseAND\"] = bitwiseAND] = \"bitwiseAND\"; // & prec:6\n const equality = 21511; TokenType[TokenType[\"equality\"] = equality] = \"equality\"; // ==/!= prec:7\n const lessThan = 22024; TokenType[TokenType[\"lessThan\"] = lessThan] = \"lessThan\"; // < prec:8\n const greaterThan = 22536; TokenType[TokenType[\"greaterThan\"] = greaterThan] = \"greaterThan\"; // > prec:8\n const relationalOrEqual = 23048; TokenType[TokenType[\"relationalOrEqual\"] = relationalOrEqual] = \"relationalOrEqual\"; // <=/>= prec:8\n const bitShift = 23561; TokenType[TokenType[\"bitShift\"] = bitShift] = \"bitShift\"; // <</>> prec:9\n const plus = 24202; TokenType[TokenType[\"plus\"] = plus] = \"plus\"; // + prec:10 prefix\n const minus = 24714; TokenType[TokenType[\"minus\"] = minus] = \"minus\"; // - prec:10 prefix\n const modulo = 25099; TokenType[TokenType[\"modulo\"] = modulo] = \"modulo\"; // % prec:11\n const star = 25611; TokenType[TokenType[\"star\"] = star] = \"star\"; // * prec:11\n const slash = 26123; TokenType[TokenType[\"slash\"] = slash] = \"slash\"; // / prec:11\n const exponent = 26700; TokenType[TokenType[\"exponent\"] = exponent] = \"exponent\"; // ** prec:12 rightAssociative\n const jsxName = 27136; TokenType[TokenType[\"jsxName\"] = jsxName] = \"jsxName\"; // jsxName\n const jsxText = 27648; TokenType[TokenType[\"jsxText\"] = jsxText] = \"jsxText\"; // jsxText\n const jsxTagStart = 28160; TokenType[TokenType[\"jsxTagStart\"] = jsxTagStart] = \"jsxTagStart\"; // jsxTagStart\n const jsxTagEnd = 28672; TokenType[TokenType[\"jsxTagEnd\"] = jsxTagEnd] = \"jsxTagEnd\"; // jsxTagEnd\n const typeParameterStart = 29184; TokenType[TokenType[\"typeParameterStart\"] = typeParameterStart] = \"typeParameterStart\"; // typeParameterStart\n const nonNullAssertion = 29696; TokenType[TokenType[\"nonNullAssertion\"] = nonNullAssertion] = \"nonNullAssertion\"; // nonNullAssertion\n const _break = 30224; TokenType[TokenType[\"_break\"] = _break] = \"_break\"; // break keyword\n const _case = 30736; TokenType[TokenType[\"_case\"] = _case] = \"_case\"; // case keyword\n const _catch = 31248; TokenType[TokenType[\"_catch\"] = _catch] = \"_catch\"; // catch keyword\n const _continue = 31760; TokenType[TokenType[\"_continue\"] = _continue] = \"_continue\"; // continue keyword\n const _debugger = 32272; TokenType[TokenType[\"_debugger\"] = _debugger] = \"_debugger\"; // debugger keyword\n const _default = 32784; TokenType[TokenType[\"_default\"] = _default] = \"_default\"; // default keyword\n const _do = 33296; TokenType[TokenType[\"_do\"] = _do] = \"_do\"; // do keyword\n const _else = 33808; TokenType[TokenType[\"_else\"] = _else] = \"_else\"; // else keyword\n const _finally = 34320; TokenType[TokenType[\"_finally\"] = _finally] = \"_finally\"; // finally keyword\n const _for = 34832; TokenType[TokenType[\"_for\"] = _for] = \"_for\"; // for keyword\n const _function = 35344; TokenType[TokenType[\"_function\"] = _function] = \"_function\"; // function keyword\n const _if = 35856; TokenType[TokenType[\"_if\"] = _if] = \"_if\"; // if keyword\n const _return = 36368; TokenType[TokenType[\"_return\"] = _return] = \"_return\"; // return keyword\n const _switch = 36880; TokenType[TokenType[\"_switch\"] = _switch] = \"_switch\"; // switch keyword\n const _throw = 37520; TokenType[TokenType[\"_throw\"] = _throw] = \"_throw\"; // throw keyword prefix\n const _try = 37904; TokenType[TokenType[\"_try\"] = _try] = \"_try\"; // try keyword\n const _var = 38416; TokenType[TokenType[\"_var\"] = _var] = \"_var\"; // var keyword\n const _let = 38928; TokenType[TokenType[\"_let\"] = _let] = \"_let\"; // let keyword\n const _const = 39440; TokenType[TokenType[\"_const\"] = _const] = \"_const\"; // const keyword\n const _while = 39952; TokenType[TokenType[\"_while\"] = _while] = \"_while\"; // while keyword\n const _with = 40464; TokenType[TokenType[\"_with\"] = _with] = \"_with\"; // with keyword\n const _new = 40976; TokenType[TokenType[\"_new\"] = _new] = \"_new\"; // new keyword\n const _this = 41488; TokenType[TokenType[\"_this\"] = _this] = \"_this\"; // this keyword\n const _super = 42000; TokenType[TokenType[\"_super\"] = _super] = \"_super\"; // super keyword\n const _class = 42512; TokenType[TokenType[\"_class\"] = _class] = \"_class\"; // class keyword\n const _extends = 43024; TokenType[TokenType[\"_extends\"] = _extends] = \"_extends\"; // extends keyword\n const _export = 43536; TokenType[TokenType[\"_export\"] = _export] = \"_export\"; // export keyword\n const _import = 44048; TokenType[TokenType[\"_import\"] = _import] = \"_import\"; // import keyword\n const _yield = 44560; TokenType[TokenType[\"_yield\"] = _yield] = \"_yield\"; // yield keyword\n const _null = 45072; TokenType[TokenType[\"_null\"] = _null] = \"_null\"; // null keyword\n const _true = 45584; TokenType[TokenType[\"_true\"] = _true] = \"_true\"; // true keyword\n const _false = 46096; TokenType[TokenType[\"_false\"] = _false] = \"_false\"; // false keyword\n const _in = 46616; TokenType[TokenType[\"_in\"] = _in] = \"_in\"; // in prec:8 keyword\n const _instanceof = 47128; TokenType[TokenType[\"_instanceof\"] = _instanceof] = \"_instanceof\"; // instanceof prec:8 keyword\n const _typeof = 47760; TokenType[TokenType[\"_typeof\"] = _typeof] = \"_typeof\"; // typeof keyword prefix\n const _void = 48272; TokenType[TokenType[\"_void\"] = _void] = \"_void\"; // void keyword prefix\n const _delete = 48784; TokenType[TokenType[\"_delete\"] = _delete] = \"_delete\"; // delete keyword prefix\n const _async = 49168; TokenType[TokenType[\"_async\"] = _async] = \"_async\"; // async keyword\n const _get = 49680; TokenType[TokenType[\"_get\"] = _get] = \"_get\"; // get keyword\n const _set = 50192; TokenType[TokenType[\"_set\"] = _set] = \"_set\"; // set keyword\n const _declare = 50704; TokenType[TokenType[\"_declare\"] = _declare] = \"_declare\"; // declare keyword\n const _readonly = 51216; TokenType[TokenType[\"_readonly\"] = _readonly] = \"_readonly\"; // readonly keyword\n const _abstract = 51728; TokenType[TokenType[\"_abstract\"] = _abstract] = \"_abstract\"; // abstract keyword\n const _static = 52240; TokenType[TokenType[\"_static\"] = _static] = \"_static\"; // static keyword\n const _public = 52752; TokenType[TokenType[\"_public\"] = _public] = \"_public\"; // public keyword\n const _private = 53264; TokenType[TokenType[\"_private\"] = _private] = \"_private\"; // private keyword\n const _protected = 53776; TokenType[TokenType[\"_protected\"] = _protected] = \"_protected\"; // protected keyword\n const _as = 54288; TokenType[TokenType[\"_as\"] = _as] = \"_as\"; // as keyword\n const _enum = 54800; TokenType[TokenType[\"_enum\"] = _enum] = \"_enum\"; // enum keyword\n const _type = 55312; TokenType[TokenType[\"_type\"] = _type] = \"_type\"; // type keyword\n const _implements = 55824; TokenType[TokenType[\"_implements\"] = _implements] = \"_implements\"; // implements keyword\n})(TokenType || (exports.TokenType = TokenType = {}));\n function formatTokenType(tokenType) {\n switch (tokenType) {\n case TokenType.num:\n return \"num\";\n case TokenType.bigint:\n return \"bigint\";\n case TokenType.decimal:\n return \"decimal\";\n case TokenType.regexp:\n return \"regexp\";\n case TokenType.string:\n return \"string\";\n case TokenType.name:\n return \"name\";\n case TokenType.eof:\n return \"eof\";\n case TokenType.bracketL:\n return \"[\";\n case TokenType.bracketR:\n return \"]\";\n case TokenType.braceL:\n return \"{\";\n case TokenType.braceBarL:\n return \"{|\";\n case TokenType.braceR:\n return \"}\";\n case TokenType.braceBarR:\n return \"|}\";\n case TokenType.parenL:\n return \"(\";\n case TokenType.parenR:\n return \")\";\n case TokenType.comma:\n return \",\";\n case TokenType.semi:\n return \";\";\n case TokenType.colon:\n return \":\";\n case TokenType.doubleColon:\n return \"::\";\n case TokenType.dot:\n return \".\";\n case TokenType.question:\n return \"?\";\n case TokenType.questionDot:\n return \"?.\";\n case TokenType.arrow:\n return \"=>\";\n case TokenType.template:\n return \"template\";\n case TokenType.ellipsis:\n return \"...\";\n case TokenType.backQuote:\n return \"`\";\n case TokenType.dollarBraceL:\n return \"${\";\n case TokenType.at:\n return \"@\";\n case TokenType.hash:\n return \"#\";\n case TokenType.eq:\n return \"=\";\n case TokenType.assign:\n return \"_=\";\n case TokenType.preIncDec:\n return \"++/--\";\n case TokenType.postIncDec:\n return \"++/--\";\n case TokenType.bang:\n return \"!\";\n case TokenType.tilde:\n return \"~\";\n case TokenType.pipeline:\n return \"|>\";\n case TokenType.nullishCoalescing:\n return \"??\";\n case TokenType.logicalOR:\n return \"||\";\n case TokenType.logicalAND:\n return \"&&\";\n case TokenType.bitwiseOR:\n return \"|\";\n case TokenType.bitwiseXOR:\n return \"^\";\n case TokenType.bitwiseAND:\n return \"&\";\n case TokenType.equality:\n return \"==/!=\";\n case TokenType.lessThan:\n return \"<\";\n case TokenType.greaterThan:\n return \">\";\n case TokenType.relationalOrEqual:\n return \"<=/>=\";\n case TokenType.bitShift:\n return \"<</>>\";\n case TokenType.plus:\n return \"+\";\n case TokenType.minus:\n return \"-\";\n case TokenType.modulo:\n return \"%\";\n case TokenType.star:\n return \"*\";\n case TokenType.slash:\n return \"/\";\n case TokenType.exponent:\n return \"**\";\n case TokenType.jsxName:\n return \"jsxName\";\n case TokenType.jsxText:\n return \"jsxText\";\n case TokenType.jsxTagStart:\n return \"jsxTagStart\";\n case TokenType.jsxTagEnd:\n return \"jsxTagEnd\";\n case TokenType.typeParameterStart:\n return \"typeParameterStart\";\n case TokenType.nonNullAssertion:\n return \"nonNullAssertion\";\n case TokenType._break:\n return \"break\";\n case TokenType._case:\n return \"case\";\n case TokenType._catch:\n return \"catch\";\n case TokenType._continue:\n return \"continue\";\n case TokenType._debugger:\n return \"debugger\";\n case TokenType._default:\n return \"default\";\n case TokenType._do:\n return \"do\";\n case TokenType._else:\n return \"else\";\n case TokenType._finally:\n return \"finally\";\n case TokenType._for:\n return \"for\";\n case TokenType._function:\n return \"function\";\n case TokenType._if:\n return \"if\";\n case TokenType._return:\n return \"return\";\n case TokenType._switch:\n return \"switch\";\n case TokenType._throw:\n return \"throw\";\n case TokenType._try:\n return \"try\";\n case TokenType._var:\n return \"var\";\n case TokenType._let:\n return \"let\";\n case TokenType._const:\n return \"const\";\n case TokenType._while:\n return \"while\";\n case TokenType._with:\n return \"with\";\n case TokenType._new:\n return \"new\";\n case TokenType._this:\n return \"this\";\n case TokenType._super:\n return \"super\";\n case TokenType._class:\n return \"class\";\n case TokenType._extends:\n return \"extends\";\n case TokenType._export:\n return \"export\";\n case TokenType._import:\n return \"import\";\n case TokenType._yield:\n return \"yield\";\n case TokenType._null:\n return \"null\";\n case TokenType._true:\n return \"true\";\n case TokenType._false:\n return \"false\";\n case TokenType._in:\n return \"in\";\n case TokenType._instanceof:\n return \"instanceof\";\n case TokenType._typeof:\n return \"typeof\";\n case TokenType._void:\n return \"void\";\n case TokenType._delete:\n return \"delete\";\n case TokenType._async:\n return \"async\";\n case TokenType._get:\n return \"get\";\n case TokenType._set:\n return \"set\";\n case TokenType._declare:\n return \"declare\";\n case TokenType._readonly:\n return \"readonly\";\n case TokenType._abstract:\n return \"abstract\";\n case TokenType._static:\n return \"static\";\n case TokenType._public:\n return \"public\";\n case TokenType._private:\n return \"private\";\n case TokenType._protected:\n return \"protected\";\n case TokenType._as:\n return \"as\";\n case TokenType._enum:\n return \"enum\";\n case TokenType._type:\n return \"type\";\n case TokenType._implements:\n return \"implements\";\n default:\n return \"\";\n }\n} exports.formatTokenType = formatTokenType;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _state = require('../tokenizer/state'); var _state2 = _interopRequireDefault(_state);\nvar _charcodes = require('../util/charcodes');\n\n exports.isJSXEnabled;\n exports.isTypeScriptEnabled;\n exports.isFlowEnabled;\n exports.state;\n exports.input;\n exports.nextContextId;\n\n function getNextContextId() {\n return exports.nextContextId++;\n} exports.getNextContextId = getNextContextId;\n\n// tslint:disable-next-line no-any\n function augmentError(error) {\n if (\"pos\" in error) {\n const loc = locationForIndex(error.pos);\n error.message += ` (${loc.line}:${loc.column})`;\n error.loc = loc;\n }\n return error;\n} exports.augmentError = augmentError;\n\n class Loc {\n \n \n constructor(line, column) {\n this.line = line;\n this.column = column;\n }\n} exports.Loc = Loc;\n\n function locationForIndex(pos) {\n let line = 1;\n let column = 1;\n for (let i = 0; i < pos; i++) {\n if (exports.input.charCodeAt(i) === _charcodes.charCodes.lineFeed) {\n line++;\n column = 1;\n } else {\n column++;\n }\n }\n return new Loc(line, column);\n} exports.locationForIndex = locationForIndex;\n\n function initParser(\n inputCode,\n isJSXEnabledArg,\n isTypeScriptEnabledArg,\n isFlowEnabledArg,\n) {\n exports.input = inputCode;\n exports.state = new (0, _state2.default)();\n exports.nextContextId = 1;\n exports.isJSXEnabled = isJSXEnabledArg;\n exports.isTypeScriptEnabled = isTypeScriptEnabledArg;\n exports.isFlowEnabled = isFlowEnabledArg;\n} exports.initParser = initParser;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});/* eslint max-len: 0 */\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\n\n\n\n\n\n\n\n\n\nvar _flow = require('../plugins/flow');\nvar _index = require('../plugins/jsx/index');\nvar _types = require('../plugins/types');\n\n\n\n\n\n\n\n\n\n\nvar _typescript = require('../plugins/typescript');\n\n\n\n\n\n\n\n\n\n\n\nvar _index3 = require('../tokenizer/index');\nvar _keywords = require('../tokenizer/keywords');\nvar _state = require('../tokenizer/state');\nvar _types3 = require('../tokenizer/types');\nvar _charcodes = require('../util/charcodes');\nvar _identifier = require('../util/identifier');\nvar _base = require('./base');\n\n\n\n\n\n\nvar _lval = require('./lval');\n\n\n\n\n\n\nvar _statement = require('./statement');\n\n\n\n\n\n\n\nvar _util = require('./util');\n\n class StopState {\n \n constructor(stop) {\n this.stop = stop;\n }\n} exports.StopState = StopState;\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function (s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n function parseExpression(noIn = false) {\n parseMaybeAssign(noIn);\n if (_index3.match.call(void 0, _types3.TokenType.comma)) {\n while (_index3.eat.call(void 0, _types3.TokenType.comma)) {\n parseMaybeAssign(noIn);\n }\n }\n} exports.parseExpression = parseExpression;\n\n/**\n * noIn is used when parsing a for loop so that we don't interpret a following \"in\" as the binary\n * operatior.\n * isWithinParens is used to indicate that we're parsing something that might be a comma expression\n * or might be an arrow function or might be a Flow type assertion (which requires explicit parens).\n * In these cases, we should allow : and ?: after the initial \"left\" part.\n */\n function parseMaybeAssign(noIn = false, isWithinParens = false) {\n if (_base.isTypeScriptEnabled) {\n return _typescript.tsParseMaybeAssign.call(void 0, noIn, isWithinParens);\n } else if (_base.isFlowEnabled) {\n return _flow.flowParseMaybeAssign.call(void 0, noIn, isWithinParens);\n } else {\n return baseParseMaybeAssign(noIn, isWithinParens);\n }\n} exports.parseMaybeAssign = parseMaybeAssign;\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n// Returns true if the expression was an arrow function.\n function baseParseMaybeAssign(noIn, isWithinParens) {\n if (_index3.match.call(void 0, _types3.TokenType._yield)) {\n parseYield();\n return false;\n }\n\n if (_index3.match.call(void 0, _types3.TokenType.parenL) || _index3.match.call(void 0, _types3.TokenType.name) || _index3.match.call(void 0, _types3.TokenType._yield)) {\n _base.state.potentialArrowAt = _base.state.start;\n }\n\n const wasArrow = parseMaybeConditional(noIn);\n if (isWithinParens) {\n parseParenItem();\n }\n if (_base.state.type & _types3.TokenType.IS_ASSIGN) {\n _index3.next.call(void 0, );\n parseMaybeAssign(noIn);\n return false;\n }\n return wasArrow;\n} exports.baseParseMaybeAssign = baseParseMaybeAssign;\n\n// Parse a ternary conditional (`?:`) operator.\n// Returns true if the expression was an arrow function.\nfunction parseMaybeConditional(noIn) {\n const wasArrow = parseExprOps(noIn);\n if (wasArrow) {\n return true;\n }\n parseConditional(noIn);\n return false;\n}\n\nfunction parseConditional(noIn) {\n if (_base.isTypeScriptEnabled || _base.isFlowEnabled) {\n _types.typedParseConditional.call(void 0, noIn);\n } else {\n baseParseConditional(noIn);\n }\n}\n\n function baseParseConditional(noIn) {\n if (_index3.eat.call(void 0, _types3.TokenType.question)) {\n parseMaybeAssign();\n _util.expect.call(void 0, _types3.TokenType.colon);\n parseMaybeAssign(noIn);\n }\n} exports.baseParseConditional = baseParseConditional;\n\n// Start the precedence parser.\n// Returns true if this was an arrow function\nfunction parseExprOps(noIn) {\n const startTokenIndex = _base.state.tokens.length;\n const wasArrow = parseMaybeUnary();\n if (wasArrow) {\n return true;\n }\n parseExprOp(startTokenIndex, -1, noIn);\n return false;\n}\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\nfunction parseExprOp(startTokenIndex, minPrec, noIn) {\n if (\n _base.isTypeScriptEnabled &&\n (_types3.TokenType._in & _types3.TokenType.PRECEDENCE_MASK) > minPrec &&\n !_util.hasPrecedingLineBreak.call(void 0, ) &&\n _util.eatContextual.call(void 0, _keywords.ContextualKeyword._as)\n ) {\n _base.state.tokens[_base.state.tokens.length - 1].type = _types3.TokenType._as;\n const oldIsType = _index3.pushTypeContext.call(void 0, 1);\n _typescript.tsParseType.call(void 0, );\n _index3.popTypeContext.call(void 0, oldIsType);\n parseExprOp(startTokenIndex, minPrec, noIn);\n return;\n }\n\n const prec = _base.state.type & _types3.TokenType.PRECEDENCE_MASK;\n if (prec > 0 && (!noIn || !_index3.match.call(void 0, _types3.TokenType._in))) {\n if (prec > minPrec) {\n const op = _base.state.type;\n _index3.next.call(void 0, );\n if (op === _types3.TokenType.nullishCoalescing) {\n _base.state.tokens[_base.state.tokens.length - 1].nullishStartIndex = startTokenIndex;\n }\n\n const rhsStartTokenIndex = _base.state.tokens.length;\n parseMaybeUnary();\n // Extend the right operand of this operator if possible.\n parseExprOp(rhsStartTokenIndex, op & _types3.TokenType.IS_RIGHT_ASSOCIATIVE ? prec - 1 : prec, noIn);\n if (op === _types3.TokenType.nullishCoalescing) {\n _base.state.tokens[startTokenIndex].numNullishCoalesceStarts++;\n _base.state.tokens[_base.state.tokens.length - 1].numNullishCoalesceEnds++;\n }\n // Continue with any future operator holding this expression as the left operand.\n parseExprOp(startTokenIndex, minPrec, noIn);\n }\n }\n}\n\n// Parse unary operators, both prefix and postfix.\n// Returns true if this was an arrow function.\n function parseMaybeUnary() {\n if (_base.isTypeScriptEnabled && !_base.isJSXEnabled && _index3.eat.call(void 0, _types3.TokenType.lessThan)) {\n _typescript.tsParseTypeAssertion.call(void 0, );\n return false;\n }\n\n if (_base.state.type & _types3.TokenType.IS_PREFIX) {\n _index3.next.call(void 0, );\n parseMaybeUnary();\n return false;\n }\n\n const wasArrow = parseExprSubscripts();\n if (wasArrow) {\n return true;\n }\n while (_base.state.type & _types3.TokenType.IS_POSTFIX && !_util.canInsertSemicolon.call(void 0, )) {\n // The tokenizer calls everything a preincrement, so make it a postincrement when\n // we see it in that context.\n if (_base.state.type === _types3.TokenType.preIncDec) {\n _base.state.type = _types3.TokenType.postIncDec;\n }\n _index3.next.call(void 0, );\n }\n return false;\n} exports.parseMaybeUnary = parseMaybeUnary;\n\n// Parse call, dot, and `[]`-subscript expressions.\n// Returns true if this was an arrow function.\n function parseExprSubscripts() {\n const startTokenIndex = _base.state.tokens.length;\n const wasArrow = parseExprAtom();\n if (wasArrow) {\n return true;\n }\n parseSubscripts(startTokenIndex);\n // If there was any optional chain operation, the start token would be marked\n // as such, so also mark the end now.\n if (_base.state.tokens.length > startTokenIndex && _base.state.tokens[startTokenIndex].isOptionalChainStart) {\n _base.state.tokens[_base.state.tokens.length - 1].isOptionalChainEnd = true;\n }\n return false;\n} exports.parseExprSubscripts = parseExprSubscripts;\n\nfunction parseSubscripts(startTokenIndex, noCalls = false) {\n if (_base.isFlowEnabled) {\n _flow.flowParseSubscripts.call(void 0, startTokenIndex, noCalls);\n } else {\n baseParseSubscripts(startTokenIndex, noCalls);\n }\n}\n\n function baseParseSubscripts(startTokenIndex, noCalls = false) {\n const stopState = new StopState(false);\n do {\n parseSubscript(startTokenIndex, noCalls, stopState);\n } while (!stopState.stop && !_base.state.error);\n} exports.baseParseSubscripts = baseParseSubscripts;\n\nfunction parseSubscript(startTokenIndex, noCalls, stopState) {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsParseSubscript.call(void 0, startTokenIndex, noCalls, stopState);\n } else if (_base.isFlowEnabled) {\n _flow.flowParseSubscript.call(void 0, startTokenIndex, noCalls, stopState);\n } else {\n baseParseSubscript(startTokenIndex, noCalls, stopState);\n }\n}\n\n/** Set 'state.stop = true' to indicate that we should stop parsing subscripts. */\n function baseParseSubscript(\n startTokenIndex,\n noCalls,\n stopState,\n) {\n if (!noCalls && _index3.eat.call(void 0, _types3.TokenType.doubleColon)) {\n parseNoCallExpr();\n stopState.stop = true;\n // Propagate startTokenIndex so that `a::b?.()` will keep `a` as the first token. We may want\n // to revisit this in the future when fully supporting bind syntax.\n parseSubscripts(startTokenIndex, noCalls);\n } else if (_index3.match.call(void 0, _types3.TokenType.questionDot)) {\n _base.state.tokens[startTokenIndex].isOptionalChainStart = true;\n if (noCalls && _index3.lookaheadType.call(void 0, ) === _types3.TokenType.parenL) {\n stopState.stop = true;\n return;\n }\n _index3.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n\n if (_index3.eat.call(void 0, _types3.TokenType.bracketL)) {\n parseExpression();\n _util.expect.call(void 0, _types3.TokenType.bracketR);\n } else if (_index3.eat.call(void 0, _types3.TokenType.parenL)) {\n parseCallExpressionArguments();\n } else {\n parseMaybePrivateName();\n }\n } else if (_index3.eat.call(void 0, _types3.TokenType.dot)) {\n _base.state.tokens[_base.state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n parseMaybePrivateName();\n } else if (_index3.eat.call(void 0, _types3.TokenType.bracketL)) {\n _base.state.tokens[_base.state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n parseExpression();\n _util.expect.call(void 0, _types3.TokenType.bracketR);\n } else if (!noCalls && _index3.match.call(void 0, _types3.TokenType.parenL)) {\n if (atPossibleAsync()) {\n // We see \"async\", but it's possible it's a usage of the name \"async\". Parse as if it's a\n // function call, and if we see an arrow later, backtrack and re-parse as a parameter list.\n const snapshot = _base.state.snapshot();\n const asyncStartTokenIndex = _base.state.tokens.length;\n _index3.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n\n const callContextId = _base.getNextContextId.call(void 0, );\n\n _base.state.tokens[_base.state.tokens.length - 1].contextId = callContextId;\n parseCallExpressionArguments();\n _base.state.tokens[_base.state.tokens.length - 1].contextId = callContextId;\n\n if (shouldParseAsyncArrow()) {\n // We hit an arrow, so backtrack and start again parsing function parameters.\n _base.state.restoreFromSnapshot(snapshot);\n stopState.stop = true;\n _base.state.scopeDepth++;\n\n _statement.parseFunctionParams.call(void 0, );\n parseAsyncArrowFromCallExpression(asyncStartTokenIndex);\n }\n } else {\n _index3.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n const callContextId = _base.getNextContextId.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].contextId = callContextId;\n parseCallExpressionArguments();\n _base.state.tokens[_base.state.tokens.length - 1].contextId = callContextId;\n }\n } else if (_index3.match.call(void 0, _types3.TokenType.backQuote)) {\n // Tagged template expression.\n parseTemplate();\n } else {\n stopState.stop = true;\n }\n} exports.baseParseSubscript = baseParseSubscript;\n\n function atPossibleAsync() {\n // This was made less strict than the original version to avoid passing around nodes, but it\n // should be safe to have rare false positives here.\n return (\n _base.state.tokens[_base.state.tokens.length - 1].contextualKeyword === _keywords.ContextualKeyword._async &&\n !_util.canInsertSemicolon.call(void 0, )\n );\n} exports.atPossibleAsync = atPossibleAsync;\n\n function parseCallExpressionArguments() {\n let first = true;\n while (!_index3.eat.call(void 0, _types3.TokenType.parenR) && !_base.state.error) {\n if (first) {\n first = false;\n } else {\n _util.expect.call(void 0, _types3.TokenType.comma);\n if (_index3.eat.call(void 0, _types3.TokenType.parenR)) {\n break;\n }\n }\n\n parseExprListItem(false);\n }\n} exports.parseCallExpressionArguments = parseCallExpressionArguments;\n\nfunction shouldParseAsyncArrow() {\n return _index3.match.call(void 0, _types3.TokenType.colon) || _index3.match.call(void 0, _types3.TokenType.arrow);\n}\n\nfunction parseAsyncArrowFromCallExpression(startTokenIndex) {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsStartParseAsyncArrowFromCallExpression.call(void 0, );\n } else if (_base.isFlowEnabled) {\n _flow.flowStartParseAsyncArrowFromCallExpression.call(void 0, );\n }\n _util.expect.call(void 0, _types3.TokenType.arrow);\n parseArrowExpression(startTokenIndex);\n}\n\n// Parse a no-call expression (like argument of `new` or `::` operators).\n\nfunction parseNoCallExpr() {\n const startTokenIndex = _base.state.tokens.length;\n parseExprAtom();\n parseSubscripts(startTokenIndex, true);\n}\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n// Returns true if the parsed expression was an arrow function.\n function parseExprAtom() {\n if (_index3.eat.call(void 0, _types3.TokenType.modulo)) {\n // V8 intrinsic expression. Just parse the identifier, and the function invocation is parsed\n // naturally.\n parseIdentifier();\n return false;\n }\n\n if (_index3.match.call(void 0, _types3.TokenType.jsxText)) {\n parseLiteral();\n return false;\n } else if (_index3.match.call(void 0, _types3.TokenType.lessThan) && _base.isJSXEnabled) {\n _base.state.type = _types3.TokenType.jsxTagStart;\n _index.jsxParseElement.call(void 0, );\n _index3.next.call(void 0, );\n return false;\n }\n\n const canBeArrow = _base.state.potentialArrowAt === _base.state.start;\n switch (_base.state.type) {\n case _types3.TokenType.slash:\n case _types3.TokenType.assign:\n _index3.retokenizeSlashAsRegex.call(void 0, );\n // Fall through.\n\n case _types3.TokenType._super:\n case _types3.TokenType._this:\n case _types3.TokenType.regexp:\n case _types3.TokenType.num:\n case _types3.TokenType.bigint:\n case _types3.TokenType.decimal:\n case _types3.TokenType.string:\n case _types3.TokenType._null:\n case _types3.TokenType._true:\n case _types3.TokenType._false:\n _index3.next.call(void 0, );\n return false;\n\n case _types3.TokenType._import:\n _index3.next.call(void 0, );\n if (_index3.match.call(void 0, _types3.TokenType.dot)) {\n // import.meta\n _base.state.tokens[_base.state.tokens.length - 1].type = _types3.TokenType.name;\n _index3.next.call(void 0, );\n parseIdentifier();\n }\n return false;\n\n case _types3.TokenType.name: {\n const startTokenIndex = _base.state.tokens.length;\n const functionStart = _base.state.start;\n const contextualKeyword = _base.state.contextualKeyword;\n parseIdentifier();\n if (contextualKeyword === _keywords.ContextualKeyword._await) {\n parseAwait();\n return false;\n } else if (\n contextualKeyword === _keywords.ContextualKeyword._async &&\n _index3.match.call(void 0, _types3.TokenType._function) &&\n !_util.canInsertSemicolon.call(void 0, )\n ) {\n _index3.next.call(void 0, );\n _statement.parseFunction.call(void 0, functionStart, false);\n return false;\n } else if (\n canBeArrow &&\n !_util.canInsertSemicolon.call(void 0, ) &&\n contextualKeyword === _keywords.ContextualKeyword._async &&\n _index3.match.call(void 0, _types3.TokenType.name)\n ) {\n _base.state.scopeDepth++;\n _lval.parseBindingIdentifier.call(void 0, false);\n _util.expect.call(void 0, _types3.TokenType.arrow);\n // let foo = async bar => {};\n parseArrowExpression(startTokenIndex);\n return true;\n }\n\n if (canBeArrow && !_util.canInsertSemicolon.call(void 0, ) && _index3.match.call(void 0, _types3.TokenType.arrow)) {\n _base.state.scopeDepth++;\n _lval.markPriorBindingIdentifier.call(void 0, false);\n _util.expect.call(void 0, _types3.TokenType.arrow);\n parseArrowExpression(startTokenIndex);\n return true;\n }\n\n _base.state.tokens[_base.state.tokens.length - 1].identifierRole = _index3.IdentifierRole.Access;\n return false;\n }\n\n case _types3.TokenType._do: {\n _index3.next.call(void 0, );\n _statement.parseBlock.call(void 0, );\n return false;\n }\n\n case _types3.TokenType.parenL: {\n const wasArrow = parseParenAndDistinguishExpression(canBeArrow);\n return wasArrow;\n }\n\n case _types3.TokenType.bracketL:\n _index3.next.call(void 0, );\n parseExprList(_types3.TokenType.bracketR, true);\n return false;\n\n case _types3.TokenType.braceL:\n parseObj(false, false);\n return false;\n\n case _types3.TokenType._function:\n parseFunctionExpression();\n return false;\n\n case _types3.TokenType.at:\n _statement.parseDecorators.call(void 0, );\n // Fall through.\n\n case _types3.TokenType._class:\n _statement.parseClass.call(void 0, false);\n return false;\n\n case _types3.TokenType._new:\n parseNew();\n return false;\n\n case _types3.TokenType.backQuote:\n parseTemplate();\n return false;\n\n case _types3.TokenType.doubleColon: {\n _index3.next.call(void 0, );\n parseNoCallExpr();\n return false;\n }\n\n case _types3.TokenType.hash: {\n const code = _index3.lookaheadCharCode.call(void 0, );\n if (_identifier.IS_IDENTIFIER_START[code] || code === _charcodes.charCodes.backslash) {\n parseMaybePrivateName();\n } else {\n _index3.next.call(void 0, );\n }\n // Smart pipeline topic reference.\n return false;\n }\n\n default:\n _util.unexpected.call(void 0, );\n return false;\n }\n} exports.parseExprAtom = parseExprAtom;\n\nfunction parseMaybePrivateName() {\n _index3.eat.call(void 0, _types3.TokenType.hash);\n parseIdentifier();\n}\n\nfunction parseFunctionExpression() {\n const functionStart = _base.state.start;\n parseIdentifier();\n if (_index3.eat.call(void 0, _types3.TokenType.dot)) {\n // function.sent\n parseIdentifier();\n }\n _statement.parseFunction.call(void 0, functionStart, false);\n}\n\n function parseLiteral() {\n _index3.next.call(void 0, );\n} exports.parseLiteral = parseLiteral;\n\n function parseParenExpression() {\n _util.expect.call(void 0, _types3.TokenType.parenL);\n parseExpression();\n _util.expect.call(void 0, _types3.TokenType.parenR);\n} exports.parseParenExpression = parseParenExpression;\n\n// Returns true if this was an arrow expression.\nfunction parseParenAndDistinguishExpression(canBeArrow) {\n // Assume this is a normal parenthesized expression, but if we see an arrow, we'll bail and\n // start over as a parameter list.\n const snapshot = _base.state.snapshot();\n\n const startTokenIndex = _base.state.tokens.length;\n _util.expect.call(void 0, _types3.TokenType.parenL);\n\n let first = true;\n\n while (!_index3.match.call(void 0, _types3.TokenType.parenR) && !_base.state.error) {\n if (first) {\n first = false;\n } else {\n _util.expect.call(void 0, _types3.TokenType.comma);\n if (_index3.match.call(void 0, _types3.TokenType.parenR)) {\n break;\n }\n }\n\n if (_index3.match.call(void 0, _types3.TokenType.ellipsis)) {\n _lval.parseRest.call(void 0, false /* isBlockScope */);\n parseParenItem();\n break;\n } else {\n parseMaybeAssign(false, true);\n }\n }\n\n _util.expect.call(void 0, _types3.TokenType.parenR);\n\n if (canBeArrow && shouldParseArrow()) {\n const wasArrow = parseArrow();\n if (wasArrow) {\n // It was an arrow function this whole time, so start over and parse it as params so that we\n // get proper token annotations.\n _base.state.restoreFromSnapshot(snapshot);\n _base.state.scopeDepth++;\n // Don't specify a context ID because arrow functions don't need a context ID.\n _statement.parseFunctionParams.call(void 0, );\n parseArrow();\n parseArrowExpression(startTokenIndex);\n return true;\n }\n }\n\n return false;\n}\n\nfunction shouldParseArrow() {\n return _index3.match.call(void 0, _types3.TokenType.colon) || !_util.canInsertSemicolon.call(void 0, );\n}\n\n// Returns whether there was an arrow token.\n function parseArrow() {\n if (_base.isTypeScriptEnabled) {\n return _typescript.tsParseArrow.call(void 0, );\n } else if (_base.isFlowEnabled) {\n return _flow.flowParseArrow.call(void 0, );\n } else {\n return _index3.eat.call(void 0, _types3.TokenType.arrow);\n }\n} exports.parseArrow = parseArrow;\n\nfunction parseParenItem() {\n if (_base.isTypeScriptEnabled || _base.isFlowEnabled) {\n _types.typedParseParenItem.call(void 0, );\n }\n}\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\nfunction parseNew() {\n _util.expect.call(void 0, _types3.TokenType._new);\n if (_index3.eat.call(void 0, _types3.TokenType.dot)) {\n // new.target\n parseIdentifier();\n return;\n }\n parseNoCallExpr();\n _index3.eat.call(void 0, _types3.TokenType.questionDot);\n parseNewArguments();\n}\n\nfunction parseNewArguments() {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsStartParseNewArguments.call(void 0, );\n } else if (_base.isFlowEnabled) {\n _flow.flowStartParseNewArguments.call(void 0, );\n }\n if (_index3.eat.call(void 0, _types3.TokenType.parenL)) {\n parseExprList(_types3.TokenType.parenR);\n }\n}\n\n function parseTemplate() {\n // Finish `, read quasi\n _index3.nextTemplateToken.call(void 0, );\n // Finish quasi, read ${\n _index3.nextTemplateToken.call(void 0, );\n while (!_index3.match.call(void 0, _types3.TokenType.backQuote) && !_base.state.error) {\n _util.expect.call(void 0, _types3.TokenType.dollarBraceL);\n parseExpression();\n // Finish }, read quasi\n _index3.nextTemplateToken.call(void 0, );\n // Finish quasi, read either ${ or `\n _index3.nextTemplateToken.call(void 0, );\n }\n _index3.next.call(void 0, );\n} exports.parseTemplate = parseTemplate;\n\n// Parse an object literal or binding pattern.\n function parseObj(isPattern, isBlockScope) {\n // Attach a context ID to the object open and close brace and each object key.\n const contextId = _base.getNextContextId.call(void 0, );\n let first = true;\n\n _index3.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].contextId = contextId;\n\n while (!_index3.eat.call(void 0, _types3.TokenType.braceR) && !_base.state.error) {\n if (first) {\n first = false;\n } else {\n _util.expect.call(void 0, _types3.TokenType.comma);\n if (_index3.eat.call(void 0, _types3.TokenType.braceR)) {\n break;\n }\n }\n\n let isGenerator = false;\n if (_index3.match.call(void 0, _types3.TokenType.ellipsis)) {\n const previousIndex = _base.state.tokens.length;\n _lval.parseSpread.call(void 0, );\n if (isPattern) {\n // Mark role when the only thing being spread over is an identifier.\n if (_base.state.tokens.length === previousIndex + 2) {\n _lval.markPriorBindingIdentifier.call(void 0, isBlockScope);\n }\n if (_index3.eat.call(void 0, _types3.TokenType.braceR)) {\n break;\n }\n }\n continue;\n }\n\n if (!isPattern) {\n isGenerator = _index3.eat.call(void 0, _types3.TokenType.star);\n }\n\n if (!isPattern && _util.isContextual.call(void 0, _keywords.ContextualKeyword._async)) {\n if (isGenerator) _util.unexpected.call(void 0, );\n\n parseIdentifier();\n if (\n _index3.match.call(void 0, _types3.TokenType.colon) ||\n _index3.match.call(void 0, _types3.TokenType.parenL) ||\n _index3.match.call(void 0, _types3.TokenType.braceR) ||\n _index3.match.call(void 0, _types3.TokenType.eq) ||\n _index3.match.call(void 0, _types3.TokenType.comma)\n ) {\n // This is a key called \"async\" rather than an async function.\n } else {\n if (_index3.match.call(void 0, _types3.TokenType.star)) {\n _index3.next.call(void 0, );\n isGenerator = true;\n }\n parsePropertyName(contextId);\n }\n } else {\n parsePropertyName(contextId);\n }\n\n parseObjPropValue(isPattern, isBlockScope, contextId);\n }\n\n _base.state.tokens[_base.state.tokens.length - 1].contextId = contextId;\n} exports.parseObj = parseObj;\n\nfunction isGetterOrSetterMethod(isPattern) {\n // We go off of the next and don't bother checking if the node key is actually \"get\" or \"set\".\n // This lets us avoid generating a node, and should only make the validation worse.\n return (\n !isPattern &&\n (_index3.match.call(void 0, _types3.TokenType.string) || // get \"string\"() {}\n _index3.match.call(void 0, _types3.TokenType.num) || // get 1() {}\n _index3.match.call(void 0, _types3.TokenType.bracketL) || // get [\"string\"]() {}\n _index3.match.call(void 0, _types3.TokenType.name) || // get foo() {}\n !!(_base.state.type & _types3.TokenType.IS_KEYWORD)) // get debugger() {}\n );\n}\n\n// Returns true if this was a method.\nfunction parseObjectMethod(isPattern, objectContextId) {\n // We don't need to worry about modifiers because object methods can't have optional bodies, so\n // the start will never be used.\n const functionStart = _base.state.start;\n if (_index3.match.call(void 0, _types3.TokenType.parenL)) {\n if (isPattern) _util.unexpected.call(void 0, );\n parseMethod(functionStart, /* isConstructor */ false);\n return true;\n }\n\n if (isGetterOrSetterMethod(isPattern)) {\n parsePropertyName(objectContextId);\n parseMethod(functionStart, /* isConstructor */ false);\n return true;\n }\n return false;\n}\n\nfunction parseObjectProperty(isPattern, isBlockScope) {\n if (_index3.eat.call(void 0, _types3.TokenType.colon)) {\n if (isPattern) {\n _lval.parseMaybeDefault.call(void 0, isBlockScope);\n } else {\n parseMaybeAssign(false);\n }\n return;\n }\n\n // Since there's no colon, we assume this is an object shorthand.\n\n // If we're in a destructuring, we've now discovered that the key was actually an assignee, so\n // we need to tag it as a declaration with the appropriate scope. Otherwise, we might need to\n // transform it on access, so mark it as a normal object shorthand.\n let identifierRole;\n if (isPattern) {\n if (_base.state.scopeDepth === 0) {\n identifierRole = _index3.IdentifierRole.ObjectShorthandTopLevelDeclaration;\n } else if (isBlockScope) {\n identifierRole = _index3.IdentifierRole.ObjectShorthandBlockScopedDeclaration;\n } else {\n identifierRole = _index3.IdentifierRole.ObjectShorthandFunctionScopedDeclaration;\n }\n } else {\n identifierRole = _index3.IdentifierRole.ObjectShorthand;\n }\n _base.state.tokens[_base.state.tokens.length - 1].identifierRole = identifierRole;\n\n // Regardless of whether we know this to be a pattern or if we're in an ambiguous context, allow\n // parsing as if there's a default value.\n _lval.parseMaybeDefault.call(void 0, isBlockScope, true);\n}\n\nfunction parseObjPropValue(\n isPattern,\n isBlockScope,\n objectContextId,\n) {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsStartParseObjPropValue.call(void 0, );\n } else if (_base.isFlowEnabled) {\n _flow.flowStartParseObjPropValue.call(void 0, );\n }\n const wasMethod = parseObjectMethod(isPattern, objectContextId);\n if (!wasMethod) {\n parseObjectProperty(isPattern, isBlockScope);\n }\n}\n\n function parsePropertyName(objectContextId) {\n if (_base.isFlowEnabled) {\n _flow.flowParseVariance.call(void 0, );\n }\n if (_index3.eat.call(void 0, _types3.TokenType.bracketL)) {\n _base.state.tokens[_base.state.tokens.length - 1].contextId = objectContextId;\n parseMaybeAssign();\n _util.expect.call(void 0, _types3.TokenType.bracketR);\n _base.state.tokens[_base.state.tokens.length - 1].contextId = objectContextId;\n } else {\n if (_index3.match.call(void 0, _types3.TokenType.num) || _index3.match.call(void 0, _types3.TokenType.string) || _index3.match.call(void 0, _types3.TokenType.bigint) || _index3.match.call(void 0, _types3.TokenType.decimal)) {\n parseExprAtom();\n } else {\n parseMaybePrivateName();\n }\n\n _base.state.tokens[_base.state.tokens.length - 1].identifierRole = _index3.IdentifierRole.ObjectKey;\n _base.state.tokens[_base.state.tokens.length - 1].contextId = objectContextId;\n }\n} exports.parsePropertyName = parsePropertyName;\n\n// Parse object or class method.\n function parseMethod(functionStart, isConstructor) {\n const funcContextId = _base.getNextContextId.call(void 0, );\n\n _base.state.scopeDepth++;\n const startTokenIndex = _base.state.tokens.length;\n const allowModifiers = isConstructor; // For TypeScript parameter properties\n _statement.parseFunctionParams.call(void 0, allowModifiers, funcContextId);\n parseFunctionBodyAndFinish(functionStart, funcContextId);\n const endTokenIndex = _base.state.tokens.length;\n _base.state.scopes.push(new (0, _state.Scope)(startTokenIndex, endTokenIndex, true));\n _base.state.scopeDepth--;\n} exports.parseMethod = parseMethod;\n\n// Parse arrow function expression.\n// If the parameters are provided, they will be converted to an\n// assignable list.\n function parseArrowExpression(startTokenIndex) {\n parseFunctionBody(true);\n const endTokenIndex = _base.state.tokens.length;\n _base.state.scopes.push(new (0, _state.Scope)(startTokenIndex, endTokenIndex, true));\n _base.state.scopeDepth--;\n} exports.parseArrowExpression = parseArrowExpression;\n\n function parseFunctionBodyAndFinish(functionStart, funcContextId = 0) {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsParseFunctionBodyAndFinish.call(void 0, functionStart, funcContextId);\n } else if (_base.isFlowEnabled) {\n _flow.flowParseFunctionBodyAndFinish.call(void 0, funcContextId);\n } else {\n parseFunctionBody(false, funcContextId);\n }\n} exports.parseFunctionBodyAndFinish = parseFunctionBodyAndFinish;\n\n function parseFunctionBody(allowExpression, funcContextId = 0) {\n const isExpression = allowExpression && !_index3.match.call(void 0, _types3.TokenType.braceL);\n\n if (isExpression) {\n parseMaybeAssign();\n } else {\n _statement.parseBlock.call(void 0, true /* isFunctionScope */, funcContextId);\n }\n} exports.parseFunctionBody = parseFunctionBody;\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\nfunction parseExprList(close, allowEmpty = false) {\n let first = true;\n while (!_index3.eat.call(void 0, close) && !_base.state.error) {\n if (first) {\n first = false;\n } else {\n _util.expect.call(void 0, _types3.TokenType.comma);\n if (_index3.eat.call(void 0, close)) break;\n }\n parseExprListItem(allowEmpty);\n }\n}\n\nfunction parseExprListItem(allowEmpty) {\n if (allowEmpty && _index3.match.call(void 0, _types3.TokenType.comma)) {\n // Empty item; nothing more to parse for this item.\n } else if (_index3.match.call(void 0, _types3.TokenType.ellipsis)) {\n _lval.parseSpread.call(void 0, );\n parseParenItem();\n } else if (_index3.match.call(void 0, _types3.TokenType.question)) {\n // Partial function application proposal.\n _index3.next.call(void 0, );\n } else {\n parseMaybeAssign(false, true);\n }\n}\n\n// Parse the next token as an identifier.\n function parseIdentifier() {\n _index3.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].type = _types3.TokenType.name;\n} exports.parseIdentifier = parseIdentifier;\n\n// Parses await expression inside async function.\nfunction parseAwait() {\n parseMaybeUnary();\n}\n\n// Parses yield expression inside generator.\nfunction parseYield() {\n _index3.next.call(void 0, );\n if (!_index3.match.call(void 0, _types3.TokenType.semi) && !_util.canInsertSemicolon.call(void 0, )) {\n _index3.eat.call(void 0, _types3.TokenType.star);\n parseMaybeAssign();\n }\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\nvar _index = require('../tokenizer/index');\nvar _charcodes = require('../util/charcodes');\nvar _base = require('./base');\nvar _statement = require('./statement');\n\n function parseFile() {\n // If enabled, skip leading hashbang line.\n if (\n _base.state.pos === 0 &&\n _base.input.charCodeAt(0) === _charcodes.charCodes.numberSign &&\n _base.input.charCodeAt(1) === _charcodes.charCodes.exclamationMark\n ) {\n _index.skipLineComment.call(void 0, 2);\n }\n _index.nextToken.call(void 0, );\n return _statement.parseTopLevel.call(void 0, );\n} exports.parseFile = parseFile;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _flow = require('../plugins/flow');\n\n\n\n\nvar _typescript = require('../plugins/typescript');\n\n\n\n\n\n\n\nvar _index = require('../tokenizer/index');\nvar _keywords = require('../tokenizer/keywords');\nvar _types = require('../tokenizer/types');\nvar _base = require('./base');\nvar _expression = require('./expression');\nvar _util = require('./util');\n\n function parseSpread() {\n _index.next.call(void 0, );\n _expression.parseMaybeAssign.call(void 0, false);\n} exports.parseSpread = parseSpread;\n\n function parseRest(isBlockScope) {\n _index.next.call(void 0, );\n parseBindingAtom(isBlockScope);\n} exports.parseRest = parseRest;\n\n function parseBindingIdentifier(isBlockScope) {\n _expression.parseIdentifier.call(void 0, );\n markPriorBindingIdentifier(isBlockScope);\n} exports.parseBindingIdentifier = parseBindingIdentifier;\n\n function parseImportedIdentifier() {\n _expression.parseIdentifier.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].identifierRole = _index.IdentifierRole.ImportDeclaration;\n} exports.parseImportedIdentifier = parseImportedIdentifier;\n\n function markPriorBindingIdentifier(isBlockScope) {\n let identifierRole;\n if (_base.state.scopeDepth === 0) {\n identifierRole = _index.IdentifierRole.TopLevelDeclaration;\n } else if (isBlockScope) {\n identifierRole = _index.IdentifierRole.BlockScopedDeclaration;\n } else {\n identifierRole = _index.IdentifierRole.FunctionScopedDeclaration;\n }\n _base.state.tokens[_base.state.tokens.length - 1].identifierRole = identifierRole;\n} exports.markPriorBindingIdentifier = markPriorBindingIdentifier;\n\n// Parses lvalue (assignable) atom.\n function parseBindingAtom(isBlockScope) {\n switch (_base.state.type) {\n case _types.TokenType._this: {\n // In TypeScript, \"this\" may be the name of a parameter, so allow it.\n const oldIsType = _index.pushTypeContext.call(void 0, 0);\n _index.next.call(void 0, );\n _index.popTypeContext.call(void 0, oldIsType);\n return;\n }\n\n case _types.TokenType._yield:\n case _types.TokenType.name: {\n _base.state.type = _types.TokenType.name;\n parseBindingIdentifier(isBlockScope);\n return;\n }\n\n case _types.TokenType.bracketL: {\n _index.next.call(void 0, );\n parseBindingList(_types.TokenType.bracketR, isBlockScope, true /* allowEmpty */);\n return;\n }\n\n case _types.TokenType.braceL:\n _expression.parseObj.call(void 0, true, isBlockScope);\n return;\n\n default:\n _util.unexpected.call(void 0, );\n }\n} exports.parseBindingAtom = parseBindingAtom;\n\n function parseBindingList(\n close,\n isBlockScope,\n allowEmpty = false,\n allowModifiers = false,\n contextId = 0,\n) {\n let first = true;\n\n let hasRemovedComma = false;\n const firstItemTokenIndex = _base.state.tokens.length;\n\n while (!_index.eat.call(void 0, close) && !_base.state.error) {\n if (first) {\n first = false;\n } else {\n _util.expect.call(void 0, _types.TokenType.comma);\n _base.state.tokens[_base.state.tokens.length - 1].contextId = contextId;\n // After a \"this\" type in TypeScript, we need to set the following comma (if any) to also be\n // a type token so that it will be removed.\n if (!hasRemovedComma && _base.state.tokens[firstItemTokenIndex].isType) {\n _base.state.tokens[_base.state.tokens.length - 1].isType = true;\n hasRemovedComma = true;\n }\n }\n if (allowEmpty && _index.match.call(void 0, _types.TokenType.comma)) {\n // Empty item; nothing further to parse for this item.\n } else if (_index.eat.call(void 0, close)) {\n break;\n } else if (_index.match.call(void 0, _types.TokenType.ellipsis)) {\n parseRest(isBlockScope);\n parseAssignableListItemTypes();\n // Support rest element trailing commas allowed by TypeScript <2.9.\n _index.eat.call(void 0, _types.TokenType.comma);\n _util.expect.call(void 0, close);\n break;\n } else {\n parseAssignableListItem(allowModifiers, isBlockScope);\n }\n }\n} exports.parseBindingList = parseBindingList;\n\nfunction parseAssignableListItem(allowModifiers, isBlockScope) {\n if (allowModifiers) {\n _typescript.tsParseAccessModifier.call(void 0, );\n _typescript.tsParseModifier.call(void 0, [_keywords.ContextualKeyword._readonly]);\n }\n\n parseMaybeDefault(isBlockScope);\n parseAssignableListItemTypes();\n parseMaybeDefault(isBlockScope, true /* leftAlreadyParsed */);\n}\n\nfunction parseAssignableListItemTypes() {\n if (_base.isFlowEnabled) {\n _flow.flowParseAssignableListItemTypes.call(void 0, );\n } else if (_base.isTypeScriptEnabled) {\n _typescript.tsParseAssignableListItemTypes.call(void 0, );\n }\n}\n\n// Parses assignment pattern around given atom if possible.\n function parseMaybeDefault(isBlockScope, leftAlreadyParsed = false) {\n if (!leftAlreadyParsed) {\n parseBindingAtom(isBlockScope);\n }\n if (!_index.eat.call(void 0, _types.TokenType.eq)) {\n return;\n }\n const eqIndex = _base.state.tokens.length - 1;\n _expression.parseMaybeAssign.call(void 0, );\n _base.state.tokens[eqIndex].rhsEndIndex = _base.state.tokens.length;\n} exports.parseMaybeDefault = parseMaybeDefault;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});/* eslint max-len: 0 */\n\nvar _index = require('../index');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _flow = require('../plugins/flow');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _typescript = require('../plugins/typescript');\n\n\n\n\n\n\n\n\n\n\n\nvar _tokenizer = require('../tokenizer');\nvar _keywords = require('../tokenizer/keywords');\nvar _state = require('../tokenizer/state');\nvar _types = require('../tokenizer/types');\nvar _charcodes = require('../util/charcodes');\nvar _base = require('./base');\n\n\n\n\n\n\n\n\n\n\n\nvar _expression = require('./expression');\n\n\n\n\n\nvar _lval = require('./lval');\n\n\n\n\n\n\n\n\n\nvar _util = require('./util');\n\n function parseTopLevel() {\n parseBlockBody(_types.TokenType.eof);\n _base.state.scopes.push(new (0, _state.Scope)(0, _base.state.tokens.length, true));\n if (_base.state.scopeDepth !== 0) {\n throw new Error(`Invalid scope depth at end of file: ${_base.state.scopeDepth}`);\n }\n return new (0, _index.File)(_base.state.tokens, _base.state.scopes);\n} exports.parseTopLevel = parseTopLevel;\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\n function parseStatement(declaration) {\n if (_base.isFlowEnabled) {\n if (_flow.flowTryParseStatement.call(void 0, )) {\n return;\n }\n }\n if (_tokenizer.match.call(void 0, _types.TokenType.at)) {\n parseDecorators();\n }\n parseStatementContent(declaration);\n} exports.parseStatement = parseStatement;\n\nfunction parseStatementContent(declaration) {\n if (_base.isTypeScriptEnabled) {\n if (_typescript.tsTryParseStatementContent.call(void 0, )) {\n return;\n }\n }\n\n const starttype = _base.state.type;\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case _types.TokenType._break:\n case _types.TokenType._continue:\n parseBreakContinueStatement();\n return;\n case _types.TokenType._debugger:\n parseDebuggerStatement();\n return;\n case _types.TokenType._do:\n parseDoStatement();\n return;\n case _types.TokenType._for:\n parseForStatement();\n return;\n case _types.TokenType._function:\n if (_tokenizer.lookaheadType.call(void 0, ) === _types.TokenType.dot) break;\n if (!declaration) _util.unexpected.call(void 0, );\n parseFunctionStatement();\n return;\n\n case _types.TokenType._class:\n if (!declaration) _util.unexpected.call(void 0, );\n parseClass(true);\n return;\n\n case _types.TokenType._if:\n parseIfStatement();\n return;\n case _types.TokenType._return:\n parseReturnStatement();\n return;\n case _types.TokenType._switch:\n parseSwitchStatement();\n return;\n case _types.TokenType._throw:\n parseThrowStatement();\n return;\n case _types.TokenType._try:\n parseTryStatement();\n return;\n\n case _types.TokenType._let:\n case _types.TokenType._const:\n if (!declaration) _util.unexpected.call(void 0, ); // NOTE: falls through to _var\n\n case _types.TokenType._var:\n parseVarStatement(starttype);\n return;\n\n case _types.TokenType._while:\n parseWhileStatement();\n return;\n case _types.TokenType.braceL:\n parseBlock();\n return;\n case _types.TokenType.semi:\n parseEmptyStatement();\n return;\n case _types.TokenType._export:\n case _types.TokenType._import: {\n const nextType = _tokenizer.lookaheadType.call(void 0, );\n if (nextType === _types.TokenType.parenL || nextType === _types.TokenType.dot) {\n break;\n }\n _tokenizer.next.call(void 0, );\n if (starttype === _types.TokenType._import) {\n parseImport();\n } else {\n parseExport();\n }\n return;\n }\n case _types.TokenType.name:\n if (_base.state.contextualKeyword === _keywords.ContextualKeyword._async) {\n const functionStart = _base.state.start;\n // peek ahead and see if next token is a function\n const snapshot = _base.state.snapshot();\n _tokenizer.next.call(void 0, );\n if (_tokenizer.match.call(void 0, _types.TokenType._function) && !_util.canInsertSemicolon.call(void 0, )) {\n _util.expect.call(void 0, _types.TokenType._function);\n parseFunction(functionStart, true);\n return;\n } else {\n _base.state.restoreFromSnapshot(snapshot);\n }\n }\n default:\n // Do nothing.\n break;\n }\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n const initialTokensLength = _base.state.tokens.length;\n _expression.parseExpression.call(void 0, );\n let simpleName = null;\n if (_base.state.tokens.length === initialTokensLength + 1) {\n const token = _base.state.tokens[_base.state.tokens.length - 1];\n if (token.type === _types.TokenType.name) {\n simpleName = token.contextualKeyword;\n }\n }\n if (simpleName == null) {\n _util.semicolon.call(void 0, );\n return;\n }\n if (_tokenizer.eat.call(void 0, _types.TokenType.colon)) {\n parseLabeledStatement();\n } else {\n // This was an identifier, so we might want to handle flow/typescript-specific cases.\n parseIdentifierStatement(simpleName);\n }\n}\n\n function parseDecorators() {\n while (_tokenizer.match.call(void 0, _types.TokenType.at)) {\n parseDecorator();\n }\n} exports.parseDecorators = parseDecorators;\n\nfunction parseDecorator() {\n _tokenizer.next.call(void 0, );\n if (_tokenizer.eat.call(void 0, _types.TokenType.parenL)) {\n _expression.parseExpression.call(void 0, );\n _util.expect.call(void 0, _types.TokenType.parenR);\n } else {\n _expression.parseIdentifier.call(void 0, );\n while (_tokenizer.eat.call(void 0, _types.TokenType.dot)) {\n _expression.parseIdentifier.call(void 0, );\n }\n }\n parseMaybeDecoratorArguments();\n}\n\nfunction parseMaybeDecoratorArguments() {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsParseMaybeDecoratorArguments.call(void 0, );\n } else {\n baseParseMaybeDecoratorArguments();\n }\n}\n\n function baseParseMaybeDecoratorArguments() {\n if (_tokenizer.eat.call(void 0, _types.TokenType.parenL)) {\n _expression.parseCallExpressionArguments.call(void 0, );\n }\n} exports.baseParseMaybeDecoratorArguments = baseParseMaybeDecoratorArguments;\n\nfunction parseBreakContinueStatement() {\n _tokenizer.next.call(void 0, );\n if (!_util.isLineTerminator.call(void 0, )) {\n _expression.parseIdentifier.call(void 0, );\n _util.semicolon.call(void 0, );\n }\n}\n\nfunction parseDebuggerStatement() {\n _tokenizer.next.call(void 0, );\n _util.semicolon.call(void 0, );\n}\n\nfunction parseDoStatement() {\n _tokenizer.next.call(void 0, );\n parseStatement(false);\n _util.expect.call(void 0, _types.TokenType._while);\n _expression.parseParenExpression.call(void 0, );\n _tokenizer.eat.call(void 0, _types.TokenType.semi);\n}\n\nfunction parseForStatement() {\n _base.state.scopeDepth++;\n const startTokenIndex = _base.state.tokens.length;\n parseAmbiguousForStatement();\n const endTokenIndex = _base.state.tokens.length;\n _base.state.scopes.push(new (0, _state.Scope)(startTokenIndex, endTokenIndex, false));\n _base.state.scopeDepth--;\n}\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\nfunction parseAmbiguousForStatement() {\n _tokenizer.next.call(void 0, );\n\n let forAwait = false;\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._await)) {\n forAwait = true;\n _tokenizer.next.call(void 0, );\n }\n _util.expect.call(void 0, _types.TokenType.parenL);\n\n if (_tokenizer.match.call(void 0, _types.TokenType.semi)) {\n if (forAwait) {\n _util.unexpected.call(void 0, );\n }\n parseFor();\n return;\n }\n\n if (_tokenizer.match.call(void 0, _types.TokenType._var) || _tokenizer.match.call(void 0, _types.TokenType._let) || _tokenizer.match.call(void 0, _types.TokenType._const)) {\n const varKind = _base.state.type;\n _tokenizer.next.call(void 0, );\n parseVar(true, varKind);\n if (_tokenizer.match.call(void 0, _types.TokenType._in) || _util.isContextual.call(void 0, _keywords.ContextualKeyword._of)) {\n parseForIn(forAwait);\n return;\n }\n parseFor();\n return;\n }\n\n _expression.parseExpression.call(void 0, true);\n if (_tokenizer.match.call(void 0, _types.TokenType._in) || _util.isContextual.call(void 0, _keywords.ContextualKeyword._of)) {\n parseForIn(forAwait);\n return;\n }\n if (forAwait) {\n _util.unexpected.call(void 0, );\n }\n parseFor();\n}\n\nfunction parseFunctionStatement() {\n const functionStart = _base.state.start;\n _tokenizer.next.call(void 0, );\n parseFunction(functionStart, true);\n}\n\nfunction parseIfStatement() {\n _tokenizer.next.call(void 0, );\n _expression.parseParenExpression.call(void 0, );\n parseStatement(false);\n if (_tokenizer.eat.call(void 0, _types.TokenType._else)) {\n parseStatement(false);\n }\n}\n\nfunction parseReturnStatement() {\n _tokenizer.next.call(void 0, );\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (!_util.isLineTerminator.call(void 0, )) {\n _expression.parseExpression.call(void 0, );\n _util.semicolon.call(void 0, );\n }\n}\n\nfunction parseSwitchStatement() {\n _tokenizer.next.call(void 0, );\n _expression.parseParenExpression.call(void 0, );\n _base.state.scopeDepth++;\n const startTokenIndex = _base.state.tokens.length;\n _util.expect.call(void 0, _types.TokenType.braceL);\n\n // Don't bother validation; just go through any sequence of cases, defaults, and statements.\n while (!_tokenizer.match.call(void 0, _types.TokenType.braceR) && !_base.state.error) {\n if (_tokenizer.match.call(void 0, _types.TokenType._case) || _tokenizer.match.call(void 0, _types.TokenType._default)) {\n const isCase = _tokenizer.match.call(void 0, _types.TokenType._case);\n _tokenizer.next.call(void 0, );\n if (isCase) {\n _expression.parseExpression.call(void 0, );\n }\n _util.expect.call(void 0, _types.TokenType.colon);\n } else {\n parseStatement(true);\n }\n }\n _tokenizer.next.call(void 0, ); // Closing brace\n const endTokenIndex = _base.state.tokens.length;\n _base.state.scopes.push(new (0, _state.Scope)(startTokenIndex, endTokenIndex, false));\n _base.state.scopeDepth--;\n}\n\nfunction parseThrowStatement() {\n _tokenizer.next.call(void 0, );\n _expression.parseExpression.call(void 0, );\n _util.semicolon.call(void 0, );\n}\n\nfunction parseCatchClauseParam() {\n _lval.parseBindingAtom.call(void 0, true /* isBlockScope */);\n\n if (_base.isTypeScriptEnabled) {\n _typescript.tsTryParseTypeAnnotation.call(void 0, );\n }\n}\n\nfunction parseTryStatement() {\n _tokenizer.next.call(void 0, );\n\n parseBlock();\n\n if (_tokenizer.match.call(void 0, _types.TokenType._catch)) {\n _tokenizer.next.call(void 0, );\n let catchBindingStartTokenIndex = null;\n if (_tokenizer.match.call(void 0, _types.TokenType.parenL)) {\n _base.state.scopeDepth++;\n catchBindingStartTokenIndex = _base.state.tokens.length;\n _util.expect.call(void 0, _types.TokenType.parenL);\n parseCatchClauseParam();\n _util.expect.call(void 0, _types.TokenType.parenR);\n }\n parseBlock();\n if (catchBindingStartTokenIndex != null) {\n // We need a special scope for the catch binding which includes the binding itself and the\n // catch block.\n const endTokenIndex = _base.state.tokens.length;\n _base.state.scopes.push(new (0, _state.Scope)(catchBindingStartTokenIndex, endTokenIndex, false));\n _base.state.scopeDepth--;\n }\n }\n if (_tokenizer.eat.call(void 0, _types.TokenType._finally)) {\n parseBlock();\n }\n}\n\n function parseVarStatement(kind) {\n _tokenizer.next.call(void 0, );\n parseVar(false, kind);\n _util.semicolon.call(void 0, );\n} exports.parseVarStatement = parseVarStatement;\n\nfunction parseWhileStatement() {\n _tokenizer.next.call(void 0, );\n _expression.parseParenExpression.call(void 0, );\n parseStatement(false);\n}\n\nfunction parseEmptyStatement() {\n _tokenizer.next.call(void 0, );\n}\n\nfunction parseLabeledStatement() {\n parseStatement(true);\n}\n\n/**\n * Parse a statement starting with an identifier of the given name. Subclasses match on the name\n * to handle statements like \"declare\".\n */\nfunction parseIdentifierStatement(contextualKeyword) {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsParseIdentifierStatement.call(void 0, contextualKeyword);\n } else if (_base.isFlowEnabled) {\n _flow.flowParseIdentifierStatement.call(void 0, contextualKeyword);\n } else {\n _util.semicolon.call(void 0, );\n }\n}\n\n// Parse a semicolon-enclosed block of statements.\n function parseBlock(isFunctionScope = false, contextId = 0) {\n const startTokenIndex = _base.state.tokens.length;\n _base.state.scopeDepth++;\n _util.expect.call(void 0, _types.TokenType.braceL);\n if (contextId) {\n _base.state.tokens[_base.state.tokens.length - 1].contextId = contextId;\n }\n parseBlockBody(_types.TokenType.braceR);\n if (contextId) {\n _base.state.tokens[_base.state.tokens.length - 1].contextId = contextId;\n }\n const endTokenIndex = _base.state.tokens.length;\n _base.state.scopes.push(new (0, _state.Scope)(startTokenIndex, endTokenIndex, isFunctionScope));\n _base.state.scopeDepth--;\n} exports.parseBlock = parseBlock;\n\n function parseBlockBody(end) {\n while (!_tokenizer.eat.call(void 0, end) && !_base.state.error) {\n parseStatement(true);\n }\n} exports.parseBlockBody = parseBlockBody;\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\nfunction parseFor() {\n _util.expect.call(void 0, _types.TokenType.semi);\n if (!_tokenizer.match.call(void 0, _types.TokenType.semi)) {\n _expression.parseExpression.call(void 0, );\n }\n _util.expect.call(void 0, _types.TokenType.semi);\n if (!_tokenizer.match.call(void 0, _types.TokenType.parenR)) {\n _expression.parseExpression.call(void 0, );\n }\n _util.expect.call(void 0, _types.TokenType.parenR);\n parseStatement(false);\n}\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\nfunction parseForIn(forAwait) {\n if (forAwait) {\n _util.eatContextual.call(void 0, _keywords.ContextualKeyword._of);\n } else {\n _tokenizer.next.call(void 0, );\n }\n _expression.parseExpression.call(void 0, );\n _util.expect.call(void 0, _types.TokenType.parenR);\n parseStatement(false);\n}\n\n// Parse a list of variable declarations.\n\nfunction parseVar(isFor, kind) {\n while (true) {\n const isBlockScope = kind === _types.TokenType._const || kind === _types.TokenType._let;\n parseVarHead(isBlockScope);\n if (_tokenizer.eat.call(void 0, _types.TokenType.eq)) {\n const eqIndex = _base.state.tokens.length - 1;\n _expression.parseMaybeAssign.call(void 0, isFor);\n _base.state.tokens[eqIndex].rhsEndIndex = _base.state.tokens.length;\n }\n if (!_tokenizer.eat.call(void 0, _types.TokenType.comma)) {\n break;\n }\n }\n}\n\nfunction parseVarHead(isBlockScope) {\n _lval.parseBindingAtom.call(void 0, isBlockScope);\n if (_base.isTypeScriptEnabled) {\n _typescript.tsAfterParseVarHead.call(void 0, );\n } else if (_base.isFlowEnabled) {\n _flow.flowAfterParseVarHead.call(void 0, );\n }\n}\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\n function parseFunction(\n functionStart,\n isStatement,\n optionalId = false,\n) {\n if (_tokenizer.match.call(void 0, _types.TokenType.star)) {\n _tokenizer.next.call(void 0, );\n }\n\n if (isStatement && !optionalId && !_tokenizer.match.call(void 0, _types.TokenType.name) && !_tokenizer.match.call(void 0, _types.TokenType._yield)) {\n _util.unexpected.call(void 0, );\n }\n\n let nameScopeStartTokenIndex = null;\n\n if (_tokenizer.match.call(void 0, _types.TokenType.name)) {\n // Expression-style functions should limit their name's scope to the function body, so we make\n // a new function scope to enforce that.\n if (!isStatement) {\n nameScopeStartTokenIndex = _base.state.tokens.length;\n _base.state.scopeDepth++;\n }\n _lval.parseBindingIdentifier.call(void 0, false);\n }\n\n const startTokenIndex = _base.state.tokens.length;\n _base.state.scopeDepth++;\n parseFunctionParams();\n _expression.parseFunctionBodyAndFinish.call(void 0, functionStart);\n const endTokenIndex = _base.state.tokens.length;\n // In addition to the block scope of the function body, we need a separate function-style scope\n // that includes the params.\n _base.state.scopes.push(new (0, _state.Scope)(startTokenIndex, endTokenIndex, true));\n _base.state.scopeDepth--;\n if (nameScopeStartTokenIndex !== null) {\n _base.state.scopes.push(new (0, _state.Scope)(nameScopeStartTokenIndex, endTokenIndex, true));\n _base.state.scopeDepth--;\n }\n} exports.parseFunction = parseFunction;\n\n function parseFunctionParams(\n allowModifiers = false,\n funcContextId = 0,\n) {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsStartParseFunctionParams.call(void 0, );\n } else if (_base.isFlowEnabled) {\n _flow.flowStartParseFunctionParams.call(void 0, );\n }\n\n _util.expect.call(void 0, _types.TokenType.parenL);\n if (funcContextId) {\n _base.state.tokens[_base.state.tokens.length - 1].contextId = funcContextId;\n }\n _lval.parseBindingList.call(void 0, \n _types.TokenType.parenR,\n false /* isBlockScope */,\n false /* allowEmpty */,\n allowModifiers,\n funcContextId,\n );\n if (funcContextId) {\n _base.state.tokens[_base.state.tokens.length - 1].contextId = funcContextId;\n }\n} exports.parseFunctionParams = parseFunctionParams;\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\n function parseClass(isStatement, optionalId = false) {\n // Put a context ID on the class keyword, the open-brace, and the close-brace, so that later\n // code can easily navigate to meaningful points on the class.\n const contextId = _base.getNextContextId.call(void 0, );\n\n _tokenizer.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].contextId = contextId;\n _base.state.tokens[_base.state.tokens.length - 1].isExpression = !isStatement;\n // Like with functions, we declare a special \"name scope\" from the start of the name to the end\n // of the class, but only with expression-style classes, to represent the fact that the name is\n // available to the body of the class but not an outer declaration.\n let nameScopeStartTokenIndex = null;\n if (!isStatement) {\n nameScopeStartTokenIndex = _base.state.tokens.length;\n _base.state.scopeDepth++;\n }\n parseClassId(isStatement, optionalId);\n parseClassSuper();\n const openBraceIndex = _base.state.tokens.length;\n parseClassBody(contextId);\n if (_base.state.error) {\n return;\n }\n _base.state.tokens[openBraceIndex].contextId = contextId;\n _base.state.tokens[_base.state.tokens.length - 1].contextId = contextId;\n if (nameScopeStartTokenIndex !== null) {\n const endTokenIndex = _base.state.tokens.length;\n _base.state.scopes.push(new (0, _state.Scope)(nameScopeStartTokenIndex, endTokenIndex, false));\n _base.state.scopeDepth--;\n }\n} exports.parseClass = parseClass;\n\nfunction isClassProperty() {\n return _tokenizer.match.call(void 0, _types.TokenType.eq) || _tokenizer.match.call(void 0, _types.TokenType.semi) || _tokenizer.match.call(void 0, _types.TokenType.braceR) || _tokenizer.match.call(void 0, _types.TokenType.bang) || _tokenizer.match.call(void 0, _types.TokenType.colon);\n}\n\nfunction isClassMethod() {\n return _tokenizer.match.call(void 0, _types.TokenType.parenL) || _tokenizer.match.call(void 0, _types.TokenType.lessThan);\n}\n\nfunction parseClassBody(classContextId) {\n _util.expect.call(void 0, _types.TokenType.braceL);\n\n while (!_tokenizer.eat.call(void 0, _types.TokenType.braceR) && !_base.state.error) {\n if (_tokenizer.eat.call(void 0, _types.TokenType.semi)) {\n continue;\n }\n\n if (_tokenizer.match.call(void 0, _types.TokenType.at)) {\n parseDecorator();\n continue;\n }\n const memberStart = _base.state.start;\n parseClassMember(memberStart, classContextId);\n }\n}\n\nfunction parseClassMember(memberStart, classContextId) {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsParseModifier.call(void 0, [_keywords.ContextualKeyword._declare]);\n _typescript.tsParseAccessModifier.call(void 0, );\n _typescript.tsParseModifier.call(void 0, [_keywords.ContextualKeyword._declare]);\n }\n let isStatic = false;\n if (_tokenizer.match.call(void 0, _types.TokenType.name) && _base.state.contextualKeyword === _keywords.ContextualKeyword._static) {\n _expression.parseIdentifier.call(void 0, ); // eats 'static'\n if (isClassMethod()) {\n parseClassMethod(memberStart, /* isConstructor */ false);\n return;\n } else if (isClassProperty()) {\n parseClassProperty();\n return;\n }\n // otherwise something static\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._static;\n isStatic = true;\n\n if (_tokenizer.match.call(void 0, _types.TokenType.braceL)) {\n // This is a static block. Mark the word \"static\" with the class context ID for class element\n // detection and parse as a regular block.\n _base.state.tokens[_base.state.tokens.length - 1].contextId = classContextId;\n parseBlock();\n return;\n }\n }\n\n parseClassMemberWithIsStatic(memberStart, isStatic, classContextId);\n}\n\nfunction parseClassMemberWithIsStatic(\n memberStart,\n isStatic,\n classContextId,\n) {\n if (_base.isTypeScriptEnabled) {\n if (_typescript.tsTryParseClassMemberWithIsStatic.call(void 0, isStatic, classContextId)) {\n return;\n }\n }\n if (_tokenizer.eat.call(void 0, _types.TokenType.star)) {\n // a generator\n parseClassPropertyName(classContextId);\n parseClassMethod(memberStart, /* isConstructor */ false);\n return;\n }\n\n // Get the identifier name so we can tell if it's actually a keyword like \"async\", \"get\", or\n // \"set\".\n parseClassPropertyName(classContextId);\n let isConstructor = false;\n const token = _base.state.tokens[_base.state.tokens.length - 1];\n // We allow \"constructor\" as either an identifier or a string.\n if (token.contextualKeyword === _keywords.ContextualKeyword._constructor) {\n isConstructor = true;\n }\n parsePostMemberNameModifiers();\n\n if (isClassMethod()) {\n parseClassMethod(memberStart, isConstructor);\n } else if (isClassProperty()) {\n parseClassProperty();\n } else if (token.contextualKeyword === _keywords.ContextualKeyword._async && !_util.isLineTerminator.call(void 0, )) {\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._async;\n // an async method\n const isGenerator = _tokenizer.match.call(void 0, _types.TokenType.star);\n if (isGenerator) {\n _tokenizer.next.call(void 0, );\n }\n\n // The so-called parsed name would have been \"async\": get the real name.\n parseClassPropertyName(classContextId);\n parsePostMemberNameModifiers();\n parseClassMethod(memberStart, false /* isConstructor */);\n } else if (\n (token.contextualKeyword === _keywords.ContextualKeyword._get ||\n token.contextualKeyword === _keywords.ContextualKeyword._set) &&\n !(_util.isLineTerminator.call(void 0, ) && _tokenizer.match.call(void 0, _types.TokenType.star))\n ) {\n if (token.contextualKeyword === _keywords.ContextualKeyword._get) {\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._get;\n } else {\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._set;\n }\n // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n // a getter or setter\n // The so-called parsed name would have been \"get/set\": get the real name.\n parseClassPropertyName(classContextId);\n parseClassMethod(memberStart, /* isConstructor */ false);\n } else if (_util.isLineTerminator.call(void 0, )) {\n // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n parseClassProperty();\n } else {\n _util.unexpected.call(void 0, );\n }\n}\n\nfunction parseClassMethod(functionStart, isConstructor) {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsTryParseTypeParameters.call(void 0, );\n } else if (_base.isFlowEnabled) {\n if (_tokenizer.match.call(void 0, _types.TokenType.lessThan)) {\n _flow.flowParseTypeParameterDeclaration.call(void 0, );\n }\n }\n _expression.parseMethod.call(void 0, functionStart, isConstructor);\n}\n\n// Return the name of the class property, if it is a simple identifier.\n function parseClassPropertyName(classContextId) {\n _expression.parsePropertyName.call(void 0, classContextId);\n} exports.parseClassPropertyName = parseClassPropertyName;\n\n function parsePostMemberNameModifiers() {\n if (_base.isTypeScriptEnabled) {\n const oldIsType = _tokenizer.pushTypeContext.call(void 0, 0);\n _tokenizer.eat.call(void 0, _types.TokenType.question);\n _tokenizer.popTypeContext.call(void 0, oldIsType);\n }\n} exports.parsePostMemberNameModifiers = parsePostMemberNameModifiers;\n\n function parseClassProperty() {\n if (_base.isTypeScriptEnabled) {\n _tokenizer.eat.call(void 0, _types.TokenType.bang);\n _typescript.tsTryParseTypeAnnotation.call(void 0, );\n } else if (_base.isFlowEnabled) {\n if (_tokenizer.match.call(void 0, _types.TokenType.colon)) {\n _flow.flowParseTypeAnnotation.call(void 0, );\n }\n }\n\n if (_tokenizer.match.call(void 0, _types.TokenType.eq)) {\n const equalsTokenIndex = _base.state.tokens.length;\n _tokenizer.next.call(void 0, );\n _expression.parseMaybeAssign.call(void 0, );\n _base.state.tokens[equalsTokenIndex].rhsEndIndex = _base.state.tokens.length;\n }\n _util.semicolon.call(void 0, );\n} exports.parseClassProperty = parseClassProperty;\n\nfunction parseClassId(isStatement, optionalId = false) {\n if (\n _base.isTypeScriptEnabled &&\n (!isStatement || optionalId) &&\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._implements)\n ) {\n return;\n }\n\n if (_tokenizer.match.call(void 0, _types.TokenType.name)) {\n _lval.parseBindingIdentifier.call(void 0, true);\n }\n\n if (_base.isTypeScriptEnabled) {\n _typescript.tsTryParseTypeParameters.call(void 0, );\n } else if (_base.isFlowEnabled) {\n if (_tokenizer.match.call(void 0, _types.TokenType.lessThan)) {\n _flow.flowParseTypeParameterDeclaration.call(void 0, );\n }\n }\n}\n\n// Returns true if there was a superclass.\nfunction parseClassSuper() {\n let hasSuper = false;\n if (_tokenizer.eat.call(void 0, _types.TokenType._extends)) {\n _expression.parseExprSubscripts.call(void 0, );\n hasSuper = true;\n } else {\n hasSuper = false;\n }\n if (_base.isTypeScriptEnabled) {\n _typescript.tsAfterParseClassSuper.call(void 0, hasSuper);\n } else if (_base.isFlowEnabled) {\n _flow.flowAfterParseClassSuper.call(void 0, hasSuper);\n }\n}\n\n// Parses module export declaration.\n\n function parseExport() {\n const exportIndex = _base.state.tokens.length - 1;\n if (_base.isTypeScriptEnabled) {\n if (_typescript.tsTryParseExport.call(void 0, )) {\n return;\n }\n }\n // export * from '...'\n if (shouldParseExportStar()) {\n parseExportStar();\n } else if (isExportDefaultSpecifier()) {\n // export default from\n _expression.parseIdentifier.call(void 0, );\n if (_tokenizer.match.call(void 0, _types.TokenType.comma) && _tokenizer.lookaheadType.call(void 0, ) === _types.TokenType.star) {\n _util.expect.call(void 0, _types.TokenType.comma);\n _util.expect.call(void 0, _types.TokenType.star);\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._as);\n _expression.parseIdentifier.call(void 0, );\n } else {\n parseExportSpecifiersMaybe();\n }\n parseExportFrom();\n } else if (_tokenizer.eat.call(void 0, _types.TokenType._default)) {\n // export default ...\n parseExportDefaultExpression();\n } else if (shouldParseExportDeclaration()) {\n parseExportDeclaration();\n } else {\n // export { x, y as z } [from '...']\n parseExportSpecifiers();\n parseExportFrom();\n }\n _base.state.tokens[exportIndex].rhsEndIndex = _base.state.tokens.length;\n} exports.parseExport = parseExport;\n\nfunction parseExportDefaultExpression() {\n if (_base.isTypeScriptEnabled) {\n if (_typescript.tsTryParseExportDefaultExpression.call(void 0, )) {\n return;\n }\n }\n const functionStart = _base.state.start;\n if (_tokenizer.eat.call(void 0, _types.TokenType._function)) {\n parseFunction(functionStart, true, true);\n } else if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._async) && _tokenizer.lookaheadType.call(void 0, ) === _types.TokenType._function) {\n // async function declaration\n _util.eatContextual.call(void 0, _keywords.ContextualKeyword._async);\n _tokenizer.eat.call(void 0, _types.TokenType._function);\n parseFunction(functionStart, true, true);\n } else if (_tokenizer.match.call(void 0, _types.TokenType._class)) {\n parseClass(true, true);\n } else if (_tokenizer.match.call(void 0, _types.TokenType.at)) {\n parseDecorators();\n parseClass(true, true);\n } else {\n _expression.parseMaybeAssign.call(void 0, );\n _util.semicolon.call(void 0, );\n }\n}\n\nfunction parseExportDeclaration() {\n if (_base.isTypeScriptEnabled) {\n _typescript.tsParseExportDeclaration.call(void 0, );\n } else if (_base.isFlowEnabled) {\n _flow.flowParseExportDeclaration.call(void 0, );\n } else {\n parseStatement(true);\n }\n}\n\nfunction isExportDefaultSpecifier() {\n if (_base.isTypeScriptEnabled && _typescript.tsIsDeclarationStart.call(void 0, )) {\n return false;\n } else if (_base.isFlowEnabled && _flow.flowShouldDisallowExportDefaultSpecifier.call(void 0, )) {\n return false;\n }\n if (_tokenizer.match.call(void 0, _types.TokenType.name)) {\n return _base.state.contextualKeyword !== _keywords.ContextualKeyword._async;\n }\n\n if (!_tokenizer.match.call(void 0, _types.TokenType._default)) {\n return false;\n }\n\n const _next = _tokenizer.nextTokenStart.call(void 0, );\n const lookahead = _tokenizer.lookaheadTypeAndKeyword.call(void 0, );\n const hasFrom =\n lookahead.type === _types.TokenType.name && lookahead.contextualKeyword === _keywords.ContextualKeyword._from;\n if (lookahead.type === _types.TokenType.comma) {\n return true;\n }\n // lookahead again when `export default from` is seen\n if (hasFrom) {\n const nextAfterFrom = _base.input.charCodeAt(_tokenizer.nextTokenStartSince.call(void 0, _next + 4));\n return nextAfterFrom === _charcodes.charCodes.quotationMark || nextAfterFrom === _charcodes.charCodes.apostrophe;\n }\n return false;\n}\n\nfunction parseExportSpecifiersMaybe() {\n if (_tokenizer.eat.call(void 0, _types.TokenType.comma)) {\n parseExportSpecifiers();\n }\n}\n\n function parseExportFrom() {\n if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._from)) {\n _expression.parseExprAtom.call(void 0, );\n }\n _util.semicolon.call(void 0, );\n} exports.parseExportFrom = parseExportFrom;\n\nfunction shouldParseExportStar() {\n if (_base.isFlowEnabled) {\n return _flow.flowShouldParseExportStar.call(void 0, );\n } else {\n return _tokenizer.match.call(void 0, _types.TokenType.star);\n }\n}\n\nfunction parseExportStar() {\n if (_base.isFlowEnabled) {\n _flow.flowParseExportStar.call(void 0, );\n } else {\n baseParseExportStar();\n }\n}\n\n function baseParseExportStar() {\n _util.expect.call(void 0, _types.TokenType.star);\n\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._as)) {\n parseExportNamespace();\n } else {\n parseExportFrom();\n }\n} exports.baseParseExportStar = baseParseExportStar;\n\nfunction parseExportNamespace() {\n _tokenizer.next.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].type = _types.TokenType._as;\n _expression.parseIdentifier.call(void 0, );\n parseExportSpecifiersMaybe();\n parseExportFrom();\n}\n\nfunction shouldParseExportDeclaration() {\n return (\n (_base.isTypeScriptEnabled && _typescript.tsIsDeclarationStart.call(void 0, )) ||\n (_base.isFlowEnabled && _flow.flowShouldParseExportDeclaration.call(void 0, )) ||\n _base.state.type === _types.TokenType._var ||\n _base.state.type === _types.TokenType._const ||\n _base.state.type === _types.TokenType._let ||\n _base.state.type === _types.TokenType._function ||\n _base.state.type === _types.TokenType._class ||\n _util.isContextual.call(void 0, _keywords.ContextualKeyword._async) ||\n _tokenizer.match.call(void 0, _types.TokenType.at)\n );\n}\n\n// Parses a comma-separated list of module exports.\n function parseExportSpecifiers() {\n let first = true;\n\n // export { x, y as z } [from '...']\n _util.expect.call(void 0, _types.TokenType.braceL);\n\n while (!_tokenizer.eat.call(void 0, _types.TokenType.braceR) && !_base.state.error) {\n if (first) {\n first = false;\n } else {\n _util.expect.call(void 0, _types.TokenType.comma);\n if (_tokenizer.eat.call(void 0, _types.TokenType.braceR)) {\n break;\n }\n }\n\n _expression.parseIdentifier.call(void 0, );\n _base.state.tokens[_base.state.tokens.length - 1].identifierRole = _tokenizer.IdentifierRole.ExportAccess;\n if (_util.eatContextual.call(void 0, _keywords.ContextualKeyword._as)) {\n _expression.parseIdentifier.call(void 0, );\n }\n }\n} exports.parseExportSpecifiers = parseExportSpecifiers;\n\n// Parses import declaration.\n\n function parseImport() {\n if (_base.isTypeScriptEnabled && _tokenizer.match.call(void 0, _types.TokenType.name) && _tokenizer.lookaheadType.call(void 0, ) === _types.TokenType.eq) {\n _typescript.tsParseImportEqualsDeclaration.call(void 0, );\n return;\n }\n if (_base.isTypeScriptEnabled) {\n _util.eatContextual.call(void 0, _keywords.ContextualKeyword._type);\n }\n\n // import '...'\n if (_tokenizer.match.call(void 0, _types.TokenType.string)) {\n _expression.parseExprAtom.call(void 0, );\n } else {\n parseImportSpecifiers();\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._from);\n _expression.parseExprAtom.call(void 0, );\n }\n _util.semicolon.call(void 0, );\n} exports.parseImport = parseImport;\n\n// eslint-disable-next-line no-unused-vars\nfunction shouldParseDefaultImport() {\n return _tokenizer.match.call(void 0, _types.TokenType.name);\n}\n\nfunction parseImportSpecifierLocal() {\n _lval.parseImportedIdentifier.call(void 0, );\n}\n\n// Parses a comma-separated list of module imports.\nfunction parseImportSpecifiers() {\n if (_base.isFlowEnabled) {\n _flow.flowStartParseImportSpecifiers.call(void 0, );\n }\n\n let first = true;\n if (shouldParseDefaultImport()) {\n // import defaultObj, { x, y as z } from '...'\n parseImportSpecifierLocal();\n\n if (!_tokenizer.eat.call(void 0, _types.TokenType.comma)) return;\n }\n\n if (_tokenizer.match.call(void 0, _types.TokenType.star)) {\n _tokenizer.next.call(void 0, );\n _util.expectContextual.call(void 0, _keywords.ContextualKeyword._as);\n\n parseImportSpecifierLocal();\n\n return;\n }\n\n _util.expect.call(void 0, _types.TokenType.braceL);\n while (!_tokenizer.eat.call(void 0, _types.TokenType.braceR) && !_base.state.error) {\n if (first) {\n first = false;\n } else {\n // Detect an attempt to deep destructure\n if (_tokenizer.eat.call(void 0, _types.TokenType.colon)) {\n _util.unexpected.call(void 0, \n \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n );\n }\n\n _util.expect.call(void 0, _types.TokenType.comma);\n if (_tokenizer.eat.call(void 0, _types.TokenType.braceR)) {\n break;\n }\n }\n\n parseImportSpecifier();\n }\n}\n\nfunction parseImportSpecifier() {\n if (_base.isFlowEnabled) {\n _flow.flowParseImportSpecifier.call(void 0, );\n return;\n }\n _lval.parseImportedIdentifier.call(void 0, );\n if (_util.isContextual.call(void 0, _keywords.ContextualKeyword._as)) {\n _base.state.tokens[_base.state.tokens.length - 1].identifierRole = _tokenizer.IdentifierRole.ImportAccess;\n _tokenizer.next.call(void 0, );\n _lval.parseImportedIdentifier.call(void 0, );\n }\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _index = require('../tokenizer/index');\n\nvar _types = require('../tokenizer/types');\nvar _charcodes = require('../util/charcodes');\nvar _base = require('./base');\n\n// ## Parser utilities\n\n// Tests whether parsed token is a contextual keyword.\n function isContextual(contextualKeyword) {\n return _base.state.contextualKeyword === contextualKeyword;\n} exports.isContextual = isContextual;\n\n function isLookaheadContextual(contextualKeyword) {\n const l = _index.lookaheadTypeAndKeyword.call(void 0, );\n return l.type === _types.TokenType.name && l.contextualKeyword === contextualKeyword;\n} exports.isLookaheadContextual = isLookaheadContextual;\n\n// Consumes contextual keyword if possible.\n function eatContextual(contextualKeyword) {\n return _base.state.contextualKeyword === contextualKeyword && _index.eat.call(void 0, _types.TokenType.name);\n} exports.eatContextual = eatContextual;\n\n// Asserts that following token is given contextual keyword.\n function expectContextual(contextualKeyword) {\n if (!eatContextual(contextualKeyword)) {\n unexpected();\n }\n} exports.expectContextual = expectContextual;\n\n// Test whether a semicolon can be inserted at the current position.\n function canInsertSemicolon() {\n return _index.match.call(void 0, _types.TokenType.eof) || _index.match.call(void 0, _types.TokenType.braceR) || hasPrecedingLineBreak();\n} exports.canInsertSemicolon = canInsertSemicolon;\n\n function hasPrecedingLineBreak() {\n const prevToken = _base.state.tokens[_base.state.tokens.length - 1];\n const lastTokEnd = prevToken ? prevToken.end : 0;\n for (let i = lastTokEnd; i < _base.state.start; i++) {\n const code = _base.input.charCodeAt(i);\n if (\n code === _charcodes.charCodes.lineFeed ||\n code === _charcodes.charCodes.carriageReturn ||\n code === 0x2028 ||\n code === 0x2029\n ) {\n return true;\n }\n }\n return false;\n} exports.hasPrecedingLineBreak = hasPrecedingLineBreak;\n\n function isLineTerminator() {\n return _index.eat.call(void 0, _types.TokenType.semi) || canInsertSemicolon();\n} exports.isLineTerminator = isLineTerminator;\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n function semicolon() {\n if (!isLineTerminator()) {\n unexpected('Unexpected token, expected \";\"');\n }\n} exports.semicolon = semicolon;\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error at given pos.\n function expect(type) {\n const matched = _index.eat.call(void 0, type);\n if (!matched) {\n unexpected(`Unexpected token, expected \"${_types.formatTokenType.call(void 0, type)}\"`);\n }\n} exports.expect = expect;\n\n/**\n * Transition the parser to an error state. All code needs to be written to naturally unwind in this\n * state, which allows us to backtrack without exceptions and without error plumbing everywhere.\n */\n function unexpected(message = \"Unexpected token\", pos = _base.state.start) {\n if (_base.state.error) {\n return;\n }\n // tslint:disable-next-line no-any\n const err = new SyntaxError(message);\n err.pos = pos;\n _base.state.error = err;\n _base.state.pos = _base.input.length;\n _index.finishToken.call(void 0, _types.TokenType.eof);\n} exports.unexpected = unexpected;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var charCodes; (function (charCodes) {\n const backSpace = 8; charCodes[charCodes[\"backSpace\"] = backSpace] = \"backSpace\";\n const lineFeed = 10; charCodes[charCodes[\"lineFeed\"] = lineFeed] = \"lineFeed\"; // '\\n'\n const carriageReturn = 13; charCodes[charCodes[\"carriageReturn\"] = carriageReturn] = \"carriageReturn\"; // '\\r'\n const shiftOut = 14; charCodes[charCodes[\"shiftOut\"] = shiftOut] = \"shiftOut\";\n const space = 32; charCodes[charCodes[\"space\"] = space] = \"space\";\n const exclamationMark = 33; charCodes[charCodes[\"exclamationMark\"] = exclamationMark] = \"exclamationMark\"; // '!'\n const quotationMark = 34; charCodes[charCodes[\"quotationMark\"] = quotationMark] = \"quotationMark\"; // '\"'\n const numberSign = 35; charCodes[charCodes[\"numberSign\"] = numberSign] = \"numberSign\"; // '#'\n const dollarSign = 36; charCodes[charCodes[\"dollarSign\"] = dollarSign] = \"dollarSign\"; // '$'\n const percentSign = 37; charCodes[charCodes[\"percentSign\"] = percentSign] = \"percentSign\"; // '%'\n const ampersand = 38; charCodes[charCodes[\"ampersand\"] = ampersand] = \"ampersand\"; // '&'\n const apostrophe = 39; charCodes[charCodes[\"apostrophe\"] = apostrophe] = \"apostrophe\"; // '''\n const leftParenthesis = 40; charCodes[charCodes[\"leftParenthesis\"] = leftParenthesis] = \"leftParenthesis\"; // '('\n const rightParenthesis = 41; charCodes[charCodes[\"rightParenthesis\"] = rightParenthesis] = \"rightParenthesis\"; // ')'\n const asterisk = 42; charCodes[charCodes[\"asterisk\"] = asterisk] = \"asterisk\"; // '*'\n const plusSign = 43; charCodes[charCodes[\"plusSign\"] = plusSign] = \"plusSign\"; // '+'\n const comma = 44; charCodes[charCodes[\"comma\"] = comma] = \"comma\"; // ','\n const dash = 45; charCodes[charCodes[\"dash\"] = dash] = \"dash\"; // '-'\n const dot = 46; charCodes[charCodes[\"dot\"] = dot] = \"dot\"; // '.'\n const slash = 47; charCodes[charCodes[\"slash\"] = slash] = \"slash\"; // '/'\n const digit0 = 48; charCodes[charCodes[\"digit0\"] = digit0] = \"digit0\"; // '0'\n const digit1 = 49; charCodes[charCodes[\"digit1\"] = digit1] = \"digit1\"; // '1'\n const digit2 = 50; charCodes[charCodes[\"digit2\"] = digit2] = \"digit2\"; // '2'\n const digit3 = 51; charCodes[charCodes[\"digit3\"] = digit3] = \"digit3\"; // '3'\n const digit4 = 52; charCodes[charCodes[\"digit4\"] = digit4] = \"digit4\"; // '4'\n const digit5 = 53; charCodes[charCodes[\"digit5\"] = digit5] = \"digit5\"; // '5'\n const digit6 = 54; charCodes[charCodes[\"digit6\"] = digit6] = \"digit6\"; // '6'\n const digit7 = 55; charCodes[charCodes[\"digit7\"] = digit7] = \"digit7\"; // '7'\n const digit8 = 56; charCodes[charCodes[\"digit8\"] = digit8] = \"digit8\"; // '8'\n const digit9 = 57; charCodes[charCodes[\"digit9\"] = digit9] = \"digit9\"; // '9'\n const colon = 58; charCodes[charCodes[\"colon\"] = colon] = \"colon\"; // ':'\n const semicolon = 59; charCodes[charCodes[\"semicolon\"] = semicolon] = \"semicolon\"; // ';'\n const lessThan = 60; charCodes[charCodes[\"lessThan\"] = lessThan] = \"lessThan\"; // '<'\n const equalsTo = 61; charCodes[charCodes[\"equalsTo\"] = equalsTo] = \"equalsTo\"; // '='\n const greaterThan = 62; charCodes[charCodes[\"greaterThan\"] = greaterThan] = \"greaterThan\"; // '>'\n const questionMark = 63; charCodes[charCodes[\"questionMark\"] = questionMark] = \"questionMark\"; // '?'\n const atSign = 64; charCodes[charCodes[\"atSign\"] = atSign] = \"atSign\"; // '@'\n const uppercaseA = 65; charCodes[charCodes[\"uppercaseA\"] = uppercaseA] = \"uppercaseA\"; // 'A'\n const uppercaseB = 66; charCodes[charCodes[\"uppercaseB\"] = uppercaseB] = \"uppercaseB\"; // 'B'\n const uppercaseC = 67; charCodes[charCodes[\"uppercaseC\"] = uppercaseC] = \"uppercaseC\"; // 'C'\n const uppercaseD = 68; charCodes[charCodes[\"uppercaseD\"] = uppercaseD] = \"uppercaseD\"; // 'D'\n const uppercaseE = 69; charCodes[charCodes[\"uppercaseE\"] = uppercaseE] = \"uppercaseE\"; // 'E'\n const uppercaseF = 70; charCodes[charCodes[\"uppercaseF\"] = uppercaseF] = \"uppercaseF\"; // 'F'\n const uppercaseG = 71; charCodes[charCodes[\"uppercaseG\"] = uppercaseG] = \"uppercaseG\"; // 'G'\n const uppercaseH = 72; charCodes[charCodes[\"uppercaseH\"] = uppercaseH] = \"uppercaseH\"; // 'H'\n const uppercaseI = 73; charCodes[charCodes[\"uppercaseI\"] = uppercaseI] = \"uppercaseI\"; // 'I'\n const uppercaseJ = 74; charCodes[charCodes[\"uppercaseJ\"] = uppercaseJ] = \"uppercaseJ\"; // 'J'\n const uppercaseK = 75; charCodes[charCodes[\"uppercaseK\"] = uppercaseK] = \"uppercaseK\"; // 'K'\n const uppercaseL = 76; charCodes[charCodes[\"uppercaseL\"] = uppercaseL] = \"uppercaseL\"; // 'L'\n const uppercaseM = 77; charCodes[charCodes[\"uppercaseM\"] = uppercaseM] = \"uppercaseM\"; // 'M'\n const uppercaseN = 78; charCodes[charCodes[\"uppercaseN\"] = uppercaseN] = \"uppercaseN\"; // 'N'\n const uppercaseO = 79; charCodes[charCodes[\"uppercaseO\"] = uppercaseO] = \"uppercaseO\"; // 'O'\n const uppercaseP = 80; charCodes[charCodes[\"uppercaseP\"] = uppercaseP] = \"uppercaseP\"; // 'P'\n const uppercaseQ = 81; charCodes[charCodes[\"uppercaseQ\"] = uppercaseQ] = \"uppercaseQ\"; // 'Q'\n const uppercaseR = 82; charCodes[charCodes[\"uppercaseR\"] = uppercaseR] = \"uppercaseR\"; // 'R'\n const uppercaseS = 83; charCodes[charCodes[\"uppercaseS\"] = uppercaseS] = \"uppercaseS\"; // 'S'\n const uppercaseT = 84; charCodes[charCodes[\"uppercaseT\"] = uppercaseT] = \"uppercaseT\"; // 'T'\n const uppercaseU = 85; charCodes[charCodes[\"uppercaseU\"] = uppercaseU] = \"uppercaseU\"; // 'U'\n const uppercaseV = 86; charCodes[charCodes[\"uppercaseV\"] = uppercaseV] = \"uppercaseV\"; // 'V'\n const uppercaseW = 87; charCodes[charCodes[\"uppercaseW\"] = uppercaseW] = \"uppercaseW\"; // 'W'\n const uppercaseX = 88; charCodes[charCodes[\"uppercaseX\"] = uppercaseX] = \"uppercaseX\"; // 'X'\n const uppercaseY = 89; charCodes[charCodes[\"uppercaseY\"] = uppercaseY] = \"uppercaseY\"; // 'Y'\n const uppercaseZ = 90; charCodes[charCodes[\"uppercaseZ\"] = uppercaseZ] = \"uppercaseZ\"; // 'Z'\n const leftSquareBracket = 91; charCodes[charCodes[\"leftSquareBracket\"] = leftSquareBracket] = \"leftSquareBracket\"; // '['\n const backslash = 92; charCodes[charCodes[\"backslash\"] = backslash] = \"backslash\"; // '\\ '\n const rightSquareBracket = 93; charCodes[charCodes[\"rightSquareBracket\"] = rightSquareBracket] = \"rightSquareBracket\"; // ']'\n const caret = 94; charCodes[charCodes[\"caret\"] = caret] = \"caret\"; // '^'\n const underscore = 95; charCodes[charCodes[\"underscore\"] = underscore] = \"underscore\"; // '_'\n const graveAccent = 96; charCodes[charCodes[\"graveAccent\"] = graveAccent] = \"graveAccent\"; // '`'\n const lowercaseA = 97; charCodes[charCodes[\"lowercaseA\"] = lowercaseA] = \"lowercaseA\"; // 'a'\n const lowercaseB = 98; charCodes[charCodes[\"lowercaseB\"] = lowercaseB] = \"lowercaseB\"; // 'b'\n const lowercaseC = 99; charCodes[charCodes[\"lowercaseC\"] = lowercaseC] = \"lowercaseC\"; // 'c'\n const lowercaseD = 100; charCodes[charCodes[\"lowercaseD\"] = lowercaseD] = \"lowercaseD\"; // 'd'\n const lowercaseE = 101; charCodes[charCodes[\"lowercaseE\"] = lowercaseE] = \"lowercaseE\"; // 'e'\n const lowercaseF = 102; charCodes[charCodes[\"lowercaseF\"] = lowercaseF] = \"lowercaseF\"; // 'f'\n const lowercaseG = 103; charCodes[charCodes[\"lowercaseG\"] = lowercaseG] = \"lowercaseG\"; // 'g'\n const lowercaseH = 104; charCodes[charCodes[\"lowercaseH\"] = lowercaseH] = \"lowercaseH\"; // 'h'\n const lowercaseI = 105; charCodes[charCodes[\"lowercaseI\"] = lowercaseI] = \"lowercaseI\"; // 'i'\n const lowercaseJ = 106; charCodes[charCodes[\"lowercaseJ\"] = lowercaseJ] = \"lowercaseJ\"; // 'j'\n const lowercaseK = 107; charCodes[charCodes[\"lowercaseK\"] = lowercaseK] = \"lowercaseK\"; // 'k'\n const lowercaseL = 108; charCodes[charCodes[\"lowercaseL\"] = lowercaseL] = \"lowercaseL\"; // 'l'\n const lowercaseM = 109; charCodes[charCodes[\"lowercaseM\"] = lowercaseM] = \"lowercaseM\"; // 'm'\n const lowercaseN = 110; charCodes[charCodes[\"lowercaseN\"] = lowercaseN] = \"lowercaseN\"; // 'n'\n const lowercaseO = 111; charCodes[charCodes[\"lowercaseO\"] = lowercaseO] = \"lowercaseO\"; // 'o'\n const lowercaseP = 112; charCodes[charCodes[\"lowercaseP\"] = lowercaseP] = \"lowercaseP\"; // 'p'\n const lowercaseQ = 113; charCodes[charCodes[\"lowercaseQ\"] = lowercaseQ] = \"lowercaseQ\"; // 'q'\n const lowercaseR = 114; charCodes[charCodes[\"lowercaseR\"] = lowercaseR] = \"lowercaseR\"; // 'r'\n const lowercaseS = 115; charCodes[charCodes[\"lowercaseS\"] = lowercaseS] = \"lowercaseS\"; // 's'\n const lowercaseT = 116; charCodes[charCodes[\"lowercaseT\"] = lowercaseT] = \"lowercaseT\"; // 't'\n const lowercaseU = 117; charCodes[charCodes[\"lowercaseU\"] = lowercaseU] = \"lowercaseU\"; // 'u'\n const lowercaseV = 118; charCodes[charCodes[\"lowercaseV\"] = lowercaseV] = \"lowercaseV\"; // 'v'\n const lowercaseW = 119; charCodes[charCodes[\"lowercaseW\"] = lowercaseW] = \"lowercaseW\"; // 'w'\n const lowercaseX = 120; charCodes[charCodes[\"lowercaseX\"] = lowercaseX] = \"lowercaseX\"; // 'x'\n const lowercaseY = 121; charCodes[charCodes[\"lowercaseY\"] = lowercaseY] = \"lowercaseY\"; // 'y'\n const lowercaseZ = 122; charCodes[charCodes[\"lowercaseZ\"] = lowercaseZ] = \"lowercaseZ\"; // 'z'\n const leftCurlyBrace = 123; charCodes[charCodes[\"leftCurlyBrace\"] = leftCurlyBrace] = \"leftCurlyBrace\"; // '{'\n const verticalBar = 124; charCodes[charCodes[\"verticalBar\"] = verticalBar] = \"verticalBar\"; // '|'\n const rightCurlyBrace = 125; charCodes[charCodes[\"rightCurlyBrace\"] = rightCurlyBrace] = \"rightCurlyBrace\"; // '}'\n const tilde = 126; charCodes[charCodes[\"tilde\"] = tilde] = \"tilde\"; // '~'\n const nonBreakingSpace = 160; charCodes[charCodes[\"nonBreakingSpace\"] = nonBreakingSpace] = \"nonBreakingSpace\";\n // eslint-disable-next-line no-irregular-whitespace\n const oghamSpaceMark = 5760; charCodes[charCodes[\"oghamSpaceMark\"] = oghamSpaceMark] = \"oghamSpaceMark\"; // ' '\n const lineSeparator = 8232; charCodes[charCodes[\"lineSeparator\"] = lineSeparator] = \"lineSeparator\";\n const paragraphSeparator = 8233; charCodes[charCodes[\"paragraphSeparator\"] = paragraphSeparator] = \"paragraphSeparator\";\n})(charCodes || (exports.charCodes = charCodes = {}));\n\n function isDigit(code) {\n return (\n (code >= charCodes.digit0 && code <= charCodes.digit9) ||\n (code >= charCodes.lowercaseA && code <= charCodes.lowercaseF) ||\n (code >= charCodes.uppercaseA && code <= charCodes.uppercaseF)\n );\n} exports.isDigit = isDigit;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _charcodes = require('./charcodes');\nvar _whitespace = require('./whitespace');\n\nfunction computeIsIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code < 91) return true;\n if (code < 97) return code === 95;\n if (code < 123) return true;\n if (code < 128) return false;\n throw new Error(\"Should not be called with non-ASCII char code.\");\n}\n\n const IS_IDENTIFIER_CHAR = new Uint8Array(65536); exports.IS_IDENTIFIER_CHAR = IS_IDENTIFIER_CHAR;\nfor (let i = 0; i < 128; i++) {\n exports.IS_IDENTIFIER_CHAR[i] = computeIsIdentifierChar(i) ? 1 : 0;\n}\nfor (let i = 128; i < 65536; i++) {\n exports.IS_IDENTIFIER_CHAR[i] = 1;\n}\n// Aside from whitespace and newlines, all characters outside the ASCII space are either\n// identifier characters or invalid. Since we're not performing code validation, we can just\n// treat all invalid characters as identifier characters.\nfor (const whitespaceChar of _whitespace.WHITESPACE_CHARS) {\n exports.IS_IDENTIFIER_CHAR[whitespaceChar] = 0;\n}\nexports.IS_IDENTIFIER_CHAR[0x2028] = 0;\nexports.IS_IDENTIFIER_CHAR[0x2029] = 0;\n\n const IS_IDENTIFIER_START = exports.IS_IDENTIFIER_CHAR.slice(); exports.IS_IDENTIFIER_START = IS_IDENTIFIER_START;\nfor (let numChar = _charcodes.charCodes.digit0; numChar <= _charcodes.charCodes.digit9; numChar++) {\n exports.IS_IDENTIFIER_START[numChar] = 0;\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _charcodes = require('./charcodes');\n\n// https://tc39.github.io/ecma262/#sec-white-space\n const WHITESPACE_CHARS = [\n 0x0009,\n 0x000b,\n 0x000c,\n _charcodes.charCodes.space,\n _charcodes.charCodes.nonBreakingSpace,\n _charcodes.charCodes.oghamSpaceMark,\n 0x2000, // EN QUAD\n 0x2001, // EM QUAD\n 0x2002, // EN SPACE\n 0x2003, // EM SPACE\n 0x2004, // THREE-PER-EM SPACE\n 0x2005, // FOUR-PER-EM SPACE\n 0x2006, // SIX-PER-EM SPACE\n 0x2007, // FIGURE SPACE\n 0x2008, // PUNCTUATION SPACE\n 0x2009, // THIN SPACE\n 0x200a, // HAIR SPACE\n 0x202f, // NARROW NO-BREAK SPACE\n 0x205f, // MEDIUM MATHEMATICAL SPACE\n 0x3000, // IDEOGRAPHIC SPACE\n 0xfeff, // ZERO WIDTH NO-BREAK SPACE\n]; exports.WHITESPACE_CHARS = WHITESPACE_CHARS;\n\n const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g; exports.skipWhiteSpace = skipWhiteSpace;\n\n const IS_WHITESPACE = new Uint8Array(65536); exports.IS_WHITESPACE = IS_WHITESPACE;\nfor (const char of exports.WHITESPACE_CHARS) {\n exports.IS_WHITESPACE[char] = 1;\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _tokenizer = require('../parser/tokenizer');\nvar _keywords = require('../parser/tokenizer/keywords');\nvar _types = require('../parser/tokenizer/types');\n\nvar _elideImportEquals = require('../util/elideImportEquals'); var _elideImportEquals2 = _interopRequireDefault(_elideImportEquals);\n\n\n\nvar _getDeclarationInfo = require('../util/getDeclarationInfo'); var _getDeclarationInfo2 = _interopRequireDefault(_getDeclarationInfo);\nvar _shouldElideDefaultExport = require('../util/shouldElideDefaultExport'); var _shouldElideDefaultExport2 = _interopRequireDefault(_shouldElideDefaultExport);\n\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\n/**\n * Class for editing import statements when we are transforming to commonjs.\n */\n class CJSImportTransformer extends _Transformer2.default {\n __init() {this.hadExport = false}\n __init2() {this.hadNamedExport = false}\n __init3() {this.hadDefaultExport = false}\n \n\n constructor(\n rootTransformer,\n tokens,\n importProcessor,\n nameManager,\n reactHotLoaderTransformer,\n enableLegacyBabel5ModuleInterop,\n isTypeScriptTransformEnabled,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.importProcessor = importProcessor;this.nameManager = nameManager;this.reactHotLoaderTransformer = reactHotLoaderTransformer;this.enableLegacyBabel5ModuleInterop = enableLegacyBabel5ModuleInterop;this.isTypeScriptTransformEnabled = isTypeScriptTransformEnabled;CJSImportTransformer.prototype.__init.call(this);CJSImportTransformer.prototype.__init2.call(this);CJSImportTransformer.prototype.__init3.call(this);;\n this.declarationInfo = isTypeScriptTransformEnabled\n ? _getDeclarationInfo2.default.call(void 0, tokens)\n : _getDeclarationInfo.EMPTY_DECLARATION_INFO;\n }\n\n getPrefixCode() {\n let prefix = \"\";\n if (this.hadExport) {\n prefix += 'Object.defineProperty(exports, \"__esModule\", {value: true});';\n }\n return prefix;\n }\n\n getSuffixCode() {\n if (this.enableLegacyBabel5ModuleInterop && this.hadDefaultExport && !this.hadNamedExport) {\n return \"\\nmodule.exports = exports.default;\\n\";\n }\n return \"\";\n }\n\n process() {\n // TypeScript `import foo = require('foo');` should always just be translated to plain require.\n if (this.tokens.matches3(_types.TokenType._import, _types.TokenType.name, _types.TokenType.eq)) {\n return this.processImportEquals();\n }\n if (this.tokens.matches1(_types.TokenType._import)) {\n this.processImport();\n return true;\n }\n if (this.tokens.matches2(_types.TokenType._export, _types.TokenType.eq)) {\n this.tokens.replaceToken(\"module.exports\");\n return true;\n }\n if (this.tokens.matches1(_types.TokenType._export) && !this.tokens.currentToken().isType) {\n this.hadExport = true;\n return this.processExport();\n }\n if (this.tokens.matches2(_types.TokenType.name, _types.TokenType.postIncDec)) {\n // Fall through to normal identifier matching if this doesn't apply.\n if (this.processPostIncDec()) {\n return true;\n }\n }\n if (this.tokens.matches1(_types.TokenType.name) || this.tokens.matches1(_types.TokenType.jsxName)) {\n return this.processIdentifier();\n }\n if (this.tokens.matches1(_types.TokenType.eq)) {\n return this.processAssignment();\n }\n if (this.tokens.matches1(_types.TokenType.assign)) {\n return this.processComplexAssignment();\n }\n if (this.tokens.matches1(_types.TokenType.preIncDec)) {\n return this.processPreIncDec();\n }\n return false;\n }\n\n processImportEquals() {\n const importName = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n if (this.importProcessor.isTypeName(importName)) {\n // If this name is only used as a type, elide the whole import.\n _elideImportEquals2.default.call(void 0, this.tokens);\n } else {\n // Otherwise, switch `import` to `const`.\n this.tokens.replaceToken(\"const\");\n }\n return true;\n }\n\n /**\n * Transform this:\n * import foo, {bar} from 'baz';\n * into\n * var _baz = require('baz'); var _baz2 = _interopRequireDefault(_baz);\n *\n * The import code was already generated in the import preprocessing step, so\n * we just need to look it up.\n */\n processImport() {\n if (this.tokens.matches2(_types.TokenType._import, _types.TokenType.parenL)) {\n this.tokens.replaceToken(\"Promise.resolve().then(() => require\");\n const contextId = this.tokens.currentToken().contextId;\n if (contextId == null) {\n throw new Error(\"Expected context ID on dynamic import invocation.\");\n }\n this.tokens.copyToken();\n while (!this.tokens.matchesContextIdAndLabel(_types.TokenType.parenR, contextId)) {\n this.rootTransformer.processToken();\n }\n this.tokens.replaceToken(\"))\");\n return;\n }\n\n const wasOnlyTypes = this.removeImportAndDetectIfType();\n\n if (wasOnlyTypes) {\n this.tokens.removeToken();\n } else {\n const path = this.tokens.stringValue();\n this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(path));\n this.tokens.appendCode(this.importProcessor.claimImportCode(path));\n }\n if (this.tokens.matches1(_types.TokenType.semi)) {\n this.tokens.removeToken();\n }\n }\n\n /**\n * Erase this import, and return true if it was either of the form \"import type\" or contained only\n * \"type\" named imports. Such imports should not even do a side-effect import.\n *\n * The position should end at the import string.\n */\n removeImportAndDetectIfType() {\n this.tokens.removeInitialToken();\n if (\n this.tokens.matchesContextual(_keywords.ContextualKeyword._type) &&\n !this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, _types.TokenType.comma) &&\n !this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, _keywords.ContextualKeyword._from)\n ) {\n // This is an \"import type\" statement, so exit early.\n this.removeRemainingImport();\n return true;\n }\n\n if (this.tokens.matches1(_types.TokenType.name) || this.tokens.matches1(_types.TokenType.star)) {\n // We have a default import or namespace import, so there must be some\n // non-type import.\n this.removeRemainingImport();\n return false;\n }\n\n if (this.tokens.matches1(_types.TokenType.string)) {\n // This is a bare import, so we should proceed with the import.\n return false;\n }\n\n let foundNonType = false;\n while (!this.tokens.matches1(_types.TokenType.string)) {\n // Check if any named imports are of the form \"foo\" or \"foo as bar\", with\n // no leading \"type\".\n if ((!foundNonType && this.tokens.matches1(_types.TokenType.braceL)) || this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.removeToken();\n if (\n this.tokens.matches2(_types.TokenType.name, _types.TokenType.comma) ||\n this.tokens.matches2(_types.TokenType.name, _types.TokenType.braceR) ||\n this.tokens.matches4(_types.TokenType.name, _types.TokenType.name, _types.TokenType.name, _types.TokenType.comma) ||\n this.tokens.matches4(_types.TokenType.name, _types.TokenType.name, _types.TokenType.name, _types.TokenType.braceR)\n ) {\n foundNonType = true;\n }\n }\n this.tokens.removeToken();\n }\n return !foundNonType;\n }\n\n removeRemainingImport() {\n while (!this.tokens.matches1(_types.TokenType.string)) {\n this.tokens.removeToken();\n }\n }\n\n processIdentifier() {\n const token = this.tokens.currentToken();\n if (token.shadowsGlobal) {\n return false;\n }\n\n if (token.identifierRole === _tokenizer.IdentifierRole.ObjectShorthand) {\n return this.processObjectShorthand();\n }\n\n if (token.identifierRole !== _tokenizer.IdentifierRole.Access) {\n return false;\n }\n const replacement = this.importProcessor.getIdentifierReplacement(\n this.tokens.identifierNameForToken(token),\n );\n if (!replacement) {\n return false;\n }\n // Tolerate any number of closing parens while looking for an opening paren\n // that indicates a function call.\n let possibleOpenParenIndex = this.tokens.currentIndex() + 1;\n while (\n possibleOpenParenIndex < this.tokens.tokens.length &&\n this.tokens.tokens[possibleOpenParenIndex].type === _types.TokenType.parenR\n ) {\n possibleOpenParenIndex++;\n }\n // Avoid treating imported functions as methods of their `exports` object\n // by using `(0, f)` when the identifier is in a paren expression. Else\n // use `Function.prototype.call` when the identifier is a guaranteed\n // function call. When using `call`, pass undefined as the context.\n if (this.tokens.tokens[possibleOpenParenIndex].type === _types.TokenType.parenL) {\n if (\n this.tokens.tokenAtRelativeIndex(1).type === _types.TokenType.parenL &&\n this.tokens.tokenAtRelativeIndex(-1).type !== _types.TokenType._new\n ) {\n this.tokens.replaceToken(`${replacement}.call(void 0, `);\n // Remove the old paren.\n this.tokens.removeToken();\n // Balance out the new paren.\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(_types.TokenType.parenR);\n } else {\n // See here: http://2ality.com/2015/12/references.html\n this.tokens.replaceToken(`(0, ${replacement})`);\n }\n } else {\n this.tokens.replaceToken(replacement);\n }\n return true;\n }\n\n processObjectShorthand() {\n const identifier = this.tokens.identifierName();\n const replacement = this.importProcessor.getIdentifierReplacement(identifier);\n if (!replacement) {\n return false;\n }\n this.tokens.replaceToken(`${identifier}: ${replacement}`);\n return true;\n }\n\n processExport() {\n if (\n this.tokens.matches2(_types.TokenType._export, _types.TokenType._enum) ||\n this.tokens.matches3(_types.TokenType._export, _types.TokenType._const, _types.TokenType._enum)\n ) {\n // Let the TypeScript transform handle it.\n return false;\n }\n if (this.tokens.matches2(_types.TokenType._export, _types.TokenType._default)) {\n this.processExportDefault();\n this.hadDefaultExport = true;\n return true;\n }\n this.hadNamedExport = true;\n if (\n this.tokens.matches2(_types.TokenType._export, _types.TokenType._var) ||\n this.tokens.matches2(_types.TokenType._export, _types.TokenType._let) ||\n this.tokens.matches2(_types.TokenType._export, _types.TokenType._const)\n ) {\n this.processExportVar();\n return true;\n } else if (\n this.tokens.matches2(_types.TokenType._export, _types.TokenType._function) ||\n // export async function\n this.tokens.matches3(_types.TokenType._export, _types.TokenType.name, _types.TokenType._function)\n ) {\n this.processExportFunction();\n return true;\n } else if (\n this.tokens.matches2(_types.TokenType._export, _types.TokenType._class) ||\n this.tokens.matches3(_types.TokenType._export, _types.TokenType._abstract, _types.TokenType._class)\n ) {\n this.processExportClass();\n return true;\n } else if (this.tokens.matches2(_types.TokenType._export, _types.TokenType.braceL)) {\n this.processExportBindings();\n return true;\n } else if (this.tokens.matches2(_types.TokenType._export, _types.TokenType.star)) {\n this.processExportStar();\n return true;\n } else if (\n this.tokens.matches3(_types.TokenType._export, _types.TokenType.name, _types.TokenType.braceL) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, _keywords.ContextualKeyword._type)\n ) {\n // TS `export type {` case: just remove the export entirely.\n this.tokens.removeInitialToken();\n while (!this.tokens.matches1(_types.TokenType.braceR)) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n\n // Remove type re-export `... } from './T'`\n if (\n this.tokens.matchesContextual(_keywords.ContextualKeyword._from) &&\n this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, _types.TokenType.string)\n ) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n }\n return true;\n } else {\n throw new Error(\"Unrecognized export syntax.\");\n }\n }\n\n processAssignment() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index - 1];\n // If the LHS is a type identifier, this must be a declaration like `let a: b = c;`,\n // with `b` as the identifier, so nothing needs to be done in that case.\n if (identifierToken.isType || identifierToken.type !== _types.TokenType.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n if (index >= 2 && this.tokens.matches1AtIndex(index - 2, _types.TokenType.dot)) {\n return false;\n }\n if (index >= 2 && [_types.TokenType._var, _types.TokenType._let, _types.TokenType._const].includes(this.tokens.tokens[index - 2].type)) {\n // Declarations don't need an extra assignment. This doesn't avoid the\n // assignment for comma-separated declarations, but it's still correct\n // since the assignment is just redundant.\n return false;\n }\n const assignmentSnippet = this.importProcessor.resolveExportBinding(\n this.tokens.identifierNameForToken(identifierToken),\n );\n if (!assignmentSnippet) {\n return false;\n }\n this.tokens.copyToken();\n this.tokens.appendCode(` ${assignmentSnippet} =`);\n return true;\n }\n\n /**\n * Process something like `a += 3`, where `a` might be an exported value.\n */\n processComplexAssignment() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index - 1];\n if (identifierToken.type !== _types.TokenType.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n if (index >= 2 && this.tokens.matches1AtIndex(index - 2, _types.TokenType.dot)) {\n return false;\n }\n const assignmentSnippet = this.importProcessor.resolveExportBinding(\n this.tokens.identifierNameForToken(identifierToken),\n );\n if (!assignmentSnippet) {\n return false;\n }\n this.tokens.appendCode(` = ${assignmentSnippet}`);\n this.tokens.copyToken();\n return true;\n }\n\n /**\n * Process something like `++a`, where `a` might be an exported value.\n */\n processPreIncDec() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index + 1];\n if (identifierToken.type !== _types.TokenType.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n // Ignore things like ++a.b and ++a[b] and ++a().b.\n if (\n index + 2 < this.tokens.tokens.length &&\n (this.tokens.matches1AtIndex(index + 2, _types.TokenType.dot) ||\n this.tokens.matches1AtIndex(index + 2, _types.TokenType.bracketL) ||\n this.tokens.matches1AtIndex(index + 2, _types.TokenType.parenL))\n ) {\n return false;\n }\n const identifierName = this.tokens.identifierNameForToken(identifierToken);\n const assignmentSnippet = this.importProcessor.resolveExportBinding(identifierName);\n if (!assignmentSnippet) {\n return false;\n }\n this.tokens.appendCode(`${assignmentSnippet} = `);\n this.tokens.copyToken();\n return true;\n }\n\n /**\n * Process something like `a++`, where `a` might be an exported value.\n * This starts at the `a`, not at the `++`.\n */\n processPostIncDec() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index];\n const operatorToken = this.tokens.tokens[index + 1];\n if (identifierToken.type !== _types.TokenType.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n if (index >= 1 && this.tokens.matches1AtIndex(index - 1, _types.TokenType.dot)) {\n return false;\n }\n const identifierName = this.tokens.identifierNameForToken(identifierToken);\n const assignmentSnippet = this.importProcessor.resolveExportBinding(identifierName);\n if (!assignmentSnippet) {\n return false;\n }\n const operatorCode = this.tokens.rawCodeForToken(operatorToken);\n // We might also replace the identifier with something like exports.x, so\n // do that replacement here as well.\n const base = this.importProcessor.getIdentifierReplacement(identifierName) || identifierName;\n if (operatorCode === \"++\") {\n this.tokens.replaceToken(`(${base} = ${assignmentSnippet} = ${base} + 1, ${base} - 1)`);\n } else if (operatorCode === \"--\") {\n this.tokens.replaceToken(`(${base} = ${assignmentSnippet} = ${base} - 1, ${base} + 1)`);\n } else {\n throw new Error(`Unexpected operator: ${operatorCode}`);\n }\n this.tokens.removeToken();\n return true;\n }\n\n processExportDefault() {\n if (\n this.tokens.matches4(_types.TokenType._export, _types.TokenType._default, _types.TokenType._function, _types.TokenType.name) ||\n // export default async function\n this.tokens.matches5(_types.TokenType._export, _types.TokenType._default, _types.TokenType.name, _types.TokenType._function, _types.TokenType.name)\n ) {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n // Named function export case: change it to a top-level function\n // declaration followed by exports statement.\n const name = this.processNamedFunction();\n this.tokens.appendCode(` exports.default = ${name};`);\n } else if (\n this.tokens.matches4(_types.TokenType._export, _types.TokenType._default, _types.TokenType._class, _types.TokenType.name) ||\n this.tokens.matches5(_types.TokenType._export, _types.TokenType._default, _types.TokenType._abstract, _types.TokenType._class, _types.TokenType.name)\n ) {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n if (this.tokens.matches1(_types.TokenType._abstract)) {\n this.tokens.removeToken();\n }\n const name = this.rootTransformer.processNamedClass();\n this.tokens.appendCode(` exports.default = ${name};`);\n } else if (this.tokens.matches3(_types.TokenType._export, _types.TokenType._default, _types.TokenType.at)) {\n throw new Error(\"Export default statements with decorators are not yet supported.\");\n // After this point, this is a plain \"export default E\" statement.\n } else if (\n _shouldElideDefaultExport2.default.call(void 0, this.isTypeScriptTransformEnabled, this.tokens, this.declarationInfo)\n ) {\n // If the exported value is just an identifier and should be elided by TypeScript\n // rules, then remove it entirely. It will always have the form `export default e`,\n // where `e` is an identifier.\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n } else if (this.reactHotLoaderTransformer) {\n // We need to assign E to a variable. Change \"export default E\" to\n // \"let _default; exports.default = _default = E\"\n const defaultVarName = this.nameManager.claimFreeName(\"_default\");\n this.tokens.replaceToken(`let ${defaultVarName}; exports.`);\n this.tokens.copyToken();\n this.tokens.appendCode(` = ${defaultVarName} =`);\n this.reactHotLoaderTransformer.setExtractedDefaultExportName(defaultVarName);\n } else {\n // Change \"export default E\" to \"exports.default = E\"\n this.tokens.replaceToken(\"exports.\");\n this.tokens.copyToken();\n this.tokens.appendCode(\" =\");\n }\n }\n\n /**\n * Transform a declaration like `export var`, `export let`, or `export const`.\n */\n processExportVar() {\n if (this.isSimpleExportVar()) {\n this.processSimpleExportVar();\n } else {\n this.processComplexExportVar();\n }\n }\n\n /**\n * Determine if the export is of the form:\n * export var/let/const [varName] = [expr];\n * In other words, determine if function name inference might apply.\n */\n isSimpleExportVar() {\n let tokenIndex = this.tokens.currentIndex();\n // export\n tokenIndex++;\n // var/let/const\n tokenIndex++;\n if (!this.tokens.matches1AtIndex(tokenIndex, _types.TokenType.name)) {\n return false;\n }\n tokenIndex++;\n while (tokenIndex < this.tokens.tokens.length && this.tokens.tokens[tokenIndex].isType) {\n tokenIndex++;\n }\n if (!this.tokens.matches1AtIndex(tokenIndex, _types.TokenType.eq)) {\n return false;\n }\n return true;\n }\n\n /**\n * Transform an `export var` declaration initializing a single variable.\n *\n * For example, this:\n * export const f = () => {};\n * becomes this:\n * const f = () => {}; exports.f = f;\n *\n * The variable is unused (e.g. exports.f has the true value of the export).\n * We need to produce an assignment of this form so that the function will\n * have an inferred name of \"f\", which wouldn't happen in the more general\n * case below.\n */\n processSimpleExportVar() {\n // export\n this.tokens.removeInitialToken();\n // var/let/const\n this.tokens.copyToken();\n const varName = this.tokens.identifierName();\n // x: number -> x\n while (!this.tokens.matches1(_types.TokenType.eq)) {\n this.rootTransformer.processToken();\n }\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n while (this.tokens.currentIndex() < endIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(`; exports.${varName} = ${varName}`);\n }\n\n /**\n * Transform normal declaration exports, including handling destructuring.\n * For example, this:\n * export const {x: [a = 2, b], c} = d;\n * becomes this:\n * ({x: [exports.a = 2, exports.b], c: exports.c} = d;)\n */\n processComplexExportVar() {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n const needsParens = this.tokens.matches1(_types.TokenType.braceL);\n if (needsParens) {\n this.tokens.appendCode(\"(\");\n }\n\n let depth = 0;\n while (true) {\n if (\n this.tokens.matches1(_types.TokenType.braceL) ||\n this.tokens.matches1(_types.TokenType.dollarBraceL) ||\n this.tokens.matches1(_types.TokenType.bracketL)\n ) {\n depth++;\n this.tokens.copyToken();\n } else if (this.tokens.matches1(_types.TokenType.braceR) || this.tokens.matches1(_types.TokenType.bracketR)) {\n depth--;\n this.tokens.copyToken();\n } else if (\n depth === 0 &&\n !this.tokens.matches1(_types.TokenType.name) &&\n !this.tokens.currentToken().isType\n ) {\n break;\n } else if (this.tokens.matches1(_types.TokenType.eq)) {\n // Default values might have assignments in the RHS that we want to ignore, so skip past\n // them.\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n while (this.tokens.currentIndex() < endIndex) {\n this.rootTransformer.processToken();\n }\n } else {\n const token = this.tokens.currentToken();\n if (_tokenizer.isDeclaration.call(void 0, token)) {\n const name = this.tokens.identifierName();\n let replacement = this.importProcessor.getIdentifierReplacement(name);\n if (replacement === null) {\n throw new Error(`Expected a replacement for ${name} in \\`export var\\` syntax.`);\n }\n if (_tokenizer.isObjectShorthandDeclaration.call(void 0, token)) {\n replacement = `${name}: ${replacement}`;\n }\n this.tokens.replaceToken(replacement);\n } else {\n this.rootTransformer.processToken();\n }\n }\n }\n\n if (needsParens) {\n // Seek to the end of the RHS.\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n while (this.tokens.currentIndex() < endIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(\")\");\n }\n }\n\n /**\n * Transform this:\n * export function foo() {}\n * into this:\n * function foo() {} exports.foo = foo;\n */\n processExportFunction() {\n this.tokens.replaceToken(\"\");\n const name = this.processNamedFunction();\n this.tokens.appendCode(` exports.${name} = ${name};`);\n }\n\n /**\n * Skip past a function with a name and return that name.\n */\n processNamedFunction() {\n if (this.tokens.matches1(_types.TokenType._function)) {\n this.tokens.copyToken();\n } else if (this.tokens.matches2(_types.TokenType.name, _types.TokenType._function)) {\n if (!this.tokens.matchesContextual(_keywords.ContextualKeyword._async)) {\n throw new Error(\"Expected async keyword in function export.\");\n }\n this.tokens.copyToken();\n this.tokens.copyToken();\n }\n if (this.tokens.matches1(_types.TokenType.star)) {\n this.tokens.copyToken();\n }\n if (!this.tokens.matches1(_types.TokenType.name)) {\n throw new Error(\"Expected identifier for exported function name.\");\n }\n const name = this.tokens.identifierName();\n this.tokens.copyToken();\n if (this.tokens.currentToken().isType) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentToken().isType) {\n this.tokens.removeToken();\n }\n }\n this.tokens.copyExpectedToken(_types.TokenType.parenL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(_types.TokenType.parenR);\n this.rootTransformer.processPossibleTypeRange();\n this.tokens.copyExpectedToken(_types.TokenType.braceL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(_types.TokenType.braceR);\n return name;\n }\n\n /**\n * Transform this:\n * export class A {}\n * into this:\n * class A {} exports.A = A;\n */\n processExportClass() {\n this.tokens.removeInitialToken();\n if (this.tokens.matches1(_types.TokenType._abstract)) {\n this.tokens.removeToken();\n }\n const name = this.rootTransformer.processNamedClass();\n this.tokens.appendCode(` exports.${name} = ${name};`);\n }\n\n /**\n * Transform this:\n * export {a, b as c};\n * into this:\n * exports.a = a; exports.c = b;\n *\n * OR\n *\n * Transform this:\n * export {a, b as c} from './foo';\n * into the pre-generated Object.defineProperty code from the ImportProcessor.\n *\n * For the first case, if the TypeScript transform is enabled, we need to skip\n * exports that are only defined as types.\n */\n processExportBindings() {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n\n const exportStatements = [];\n while (true) {\n if (this.tokens.matches1(_types.TokenType.braceR)) {\n this.tokens.removeToken();\n break;\n }\n\n const localName = this.tokens.identifierName();\n let exportedName;\n this.tokens.removeToken();\n if (this.tokens.matchesContextual(_keywords.ContextualKeyword._as)) {\n this.tokens.removeToken();\n exportedName = this.tokens.identifierName();\n this.tokens.removeToken();\n } else {\n exportedName = localName;\n }\n if (!this.shouldElideExportedIdentifier(localName)) {\n const newLocalName = this.importProcessor.getIdentifierReplacement(localName);\n exportStatements.push(`exports.${exportedName} = ${newLocalName || localName};`);\n }\n\n if (this.tokens.matches1(_types.TokenType.braceR)) {\n this.tokens.removeToken();\n break;\n }\n if (this.tokens.matches2(_types.TokenType.comma, _types.TokenType.braceR)) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n break;\n } else if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.removeToken();\n } else {\n throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.currentToken())}`);\n }\n }\n\n if (this.tokens.matchesContextual(_keywords.ContextualKeyword._from)) {\n // This is an export...from, so throw away the normal named export code\n // and use the Object.defineProperty code from ImportProcessor.\n this.tokens.removeToken();\n const path = this.tokens.stringValue();\n this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(path));\n } else {\n // This is a normal named export, so use that.\n this.tokens.appendCode(exportStatements.join(\" \"));\n }\n\n if (this.tokens.matches1(_types.TokenType.semi)) {\n this.tokens.removeToken();\n }\n }\n\n processExportStar() {\n this.tokens.removeInitialToken();\n while (!this.tokens.matches1(_types.TokenType.string)) {\n this.tokens.removeToken();\n }\n const path = this.tokens.stringValue();\n this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(path));\n if (this.tokens.matches1(_types.TokenType.semi)) {\n this.tokens.removeToken();\n }\n }\n\n shouldElideExportedIdentifier(name) {\n return this.isTypeScriptTransformEnabled && !this.declarationInfo.valueDeclarations.has(name);\n }\n} exports.default = CJSImportTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _keywords = require('../parser/tokenizer/keywords');\nvar _types = require('../parser/tokenizer/types');\n\nvar _elideImportEquals = require('../util/elideImportEquals'); var _elideImportEquals2 = _interopRequireDefault(_elideImportEquals);\n\n\n\nvar _getDeclarationInfo = require('../util/getDeclarationInfo'); var _getDeclarationInfo2 = _interopRequireDefault(_getDeclarationInfo);\nvar _getNonTypeIdentifiers = require('../util/getNonTypeIdentifiers');\nvar _shouldElideDefaultExport = require('../util/shouldElideDefaultExport'); var _shouldElideDefaultExport2 = _interopRequireDefault(_shouldElideDefaultExport);\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\n/**\n * Class for editing import statements when we are keeping the code as ESM. We still need to remove\n * type-only imports in TypeScript and Flow.\n */\n class ESMImportTransformer extends _Transformer2.default {\n \n \n\n constructor(\n tokens,\n nameManager,\n reactHotLoaderTransformer,\n isTypeScriptTransformEnabled,\n options,\n ) {\n super();this.tokens = tokens;this.nameManager = nameManager;this.reactHotLoaderTransformer = reactHotLoaderTransformer;this.isTypeScriptTransformEnabled = isTypeScriptTransformEnabled;;\n this.nonTypeIdentifiers = isTypeScriptTransformEnabled\n ? _getNonTypeIdentifiers.getNonTypeIdentifiers.call(void 0, tokens, options)\n : new Set();\n this.declarationInfo = isTypeScriptTransformEnabled\n ? _getDeclarationInfo2.default.call(void 0, tokens)\n : _getDeclarationInfo.EMPTY_DECLARATION_INFO;\n }\n\n process() {\n // TypeScript `import foo = require('foo');` should always just be translated to plain require.\n if (this.tokens.matches3(_types.TokenType._import, _types.TokenType.name, _types.TokenType.eq)) {\n return this.processImportEquals();\n }\n if (this.tokens.matches2(_types.TokenType._export, _types.TokenType.eq)) {\n this.tokens.replaceToken(\"module.exports\");\n return true;\n }\n if (this.tokens.matches1(_types.TokenType._import)) {\n return this.processImport();\n }\n if (this.tokens.matches2(_types.TokenType._export, _types.TokenType._default)) {\n return this.processExportDefault();\n }\n if (this.tokens.matches2(_types.TokenType._export, _types.TokenType.braceL)) {\n return this.processNamedExports();\n }\n if (\n this.tokens.matches3(_types.TokenType._export, _types.TokenType.name, _types.TokenType.braceL) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, _keywords.ContextualKeyword._type)\n ) {\n // TS `export type {` case: just remove the export entirely.\n this.tokens.removeInitialToken();\n while (!this.tokens.matches1(_types.TokenType.braceR)) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n\n // Remove type re-export `... } from './T'`\n if (\n this.tokens.matchesContextual(_keywords.ContextualKeyword._from) &&\n this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, _types.TokenType.string)\n ) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n }\n return true;\n }\n return false;\n }\n\n processImportEquals() {\n const importName = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n if (this.isTypeName(importName)) {\n // If this name is only used as a type, elide the whole import.\n _elideImportEquals2.default.call(void 0, this.tokens);\n } else {\n // Otherwise, switch `import` to `const`.\n this.tokens.replaceToken(\"const\");\n }\n return true;\n }\n\n processImport() {\n if (this.tokens.matches2(_types.TokenType._import, _types.TokenType.parenL)) {\n // Dynamic imports don't need to be transformed.\n return false;\n }\n\n const snapshot = this.tokens.snapshot();\n const allImportsRemoved = this.removeImportTypeBindings();\n if (allImportsRemoved) {\n this.tokens.restoreToSnapshot(snapshot);\n while (!this.tokens.matches1(_types.TokenType.string)) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n if (this.tokens.matches1(_types.TokenType.semi)) {\n this.tokens.removeToken();\n }\n }\n return true;\n }\n\n /**\n * Remove type bindings from this import, leaving the rest of the import intact.\n *\n * Return true if this import was ONLY types, and thus is eligible for removal. This will bail out\n * of the replacement operation, so we can return early here.\n */\n removeImportTypeBindings() {\n this.tokens.copyExpectedToken(_types.TokenType._import);\n if (\n this.tokens.matchesContextual(_keywords.ContextualKeyword._type) &&\n !this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, _types.TokenType.comma) &&\n !this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, _keywords.ContextualKeyword._from)\n ) {\n // This is an \"import type\" statement, so exit early.\n return true;\n }\n\n if (this.tokens.matches1(_types.TokenType.string)) {\n // This is a bare import, so we should proceed with the import.\n this.tokens.copyToken();\n return false;\n }\n\n let foundNonTypeImport = false;\n\n if (this.tokens.matches1(_types.TokenType.name)) {\n if (this.isTypeName(this.tokens.identifierName())) {\n this.tokens.removeToken();\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.removeToken();\n }\n } else {\n foundNonTypeImport = true;\n this.tokens.copyToken();\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.copyToken();\n }\n }\n }\n\n if (this.tokens.matches1(_types.TokenType.star)) {\n if (this.isTypeName(this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 2))) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n } else {\n foundNonTypeImport = true;\n this.tokens.copyExpectedToken(_types.TokenType.star);\n this.tokens.copyExpectedToken(_types.TokenType.name);\n this.tokens.copyExpectedToken(_types.TokenType.name);\n }\n } else if (this.tokens.matches1(_types.TokenType.braceL)) {\n this.tokens.copyToken();\n while (!this.tokens.matches1(_types.TokenType.braceR)) {\n if (\n this.tokens.matches3(_types.TokenType.name, _types.TokenType.name, _types.TokenType.comma) ||\n this.tokens.matches3(_types.TokenType.name, _types.TokenType.name, _types.TokenType.braceR)\n ) {\n // type foo\n this.tokens.removeToken();\n this.tokens.removeToken();\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.removeToken();\n }\n } else if (\n this.tokens.matches5(_types.TokenType.name, _types.TokenType.name, _types.TokenType.name, _types.TokenType.name, _types.TokenType.comma) ||\n this.tokens.matches5(_types.TokenType.name, _types.TokenType.name, _types.TokenType.name, _types.TokenType.name, _types.TokenType.braceR)\n ) {\n // type foo as bar\n this.tokens.removeToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.removeToken();\n }\n } else if (\n this.tokens.matches2(_types.TokenType.name, _types.TokenType.comma) ||\n this.tokens.matches2(_types.TokenType.name, _types.TokenType.braceR)\n ) {\n // foo\n if (this.isTypeName(this.tokens.identifierName())) {\n this.tokens.removeToken();\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.removeToken();\n }\n } else {\n foundNonTypeImport = true;\n this.tokens.copyToken();\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.copyToken();\n }\n }\n } else if (\n this.tokens.matches4(_types.TokenType.name, _types.TokenType.name, _types.TokenType.name, _types.TokenType.comma) ||\n this.tokens.matches4(_types.TokenType.name, _types.TokenType.name, _types.TokenType.name, _types.TokenType.braceR)\n ) {\n // foo as bar\n if (this.isTypeName(this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 2))) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.removeToken();\n }\n } else {\n foundNonTypeImport = true;\n this.tokens.copyToken();\n this.tokens.copyToken();\n this.tokens.copyToken();\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.copyToken();\n }\n }\n } else {\n throw new Error(\"Unexpected import form.\");\n }\n }\n this.tokens.copyExpectedToken(_types.TokenType.braceR);\n }\n\n return !foundNonTypeImport;\n }\n\n isTypeName(name) {\n return this.isTypeScriptTransformEnabled && !this.nonTypeIdentifiers.has(name);\n }\n\n processExportDefault() {\n if (\n _shouldElideDefaultExport2.default.call(void 0, this.isTypeScriptTransformEnabled, this.tokens, this.declarationInfo)\n ) {\n // If the exported value is just an identifier and should be elided by TypeScript\n // rules, then remove it entirely. It will always have the form `export default e`,\n // where `e` is an identifier.\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n return true;\n }\n\n const alreadyHasName =\n this.tokens.matches4(_types.TokenType._export, _types.TokenType._default, _types.TokenType._function, _types.TokenType.name) ||\n // export default async function\n this.tokens.matches5(_types.TokenType._export, _types.TokenType._default, _types.TokenType.name, _types.TokenType._function, _types.TokenType.name) ||\n this.tokens.matches4(_types.TokenType._export, _types.TokenType._default, _types.TokenType._class, _types.TokenType.name) ||\n this.tokens.matches5(_types.TokenType._export, _types.TokenType._default, _types.TokenType._abstract, _types.TokenType._class, _types.TokenType.name);\n\n if (!alreadyHasName && this.reactHotLoaderTransformer) {\n // This is a plain \"export default E\" statement and we need to assign E to a variable.\n // Change \"export default E\" to \"let _default; export default _default = E\"\n const defaultVarName = this.nameManager.claimFreeName(\"_default\");\n this.tokens.replaceToken(`let ${defaultVarName}; export`);\n this.tokens.copyToken();\n this.tokens.appendCode(` ${defaultVarName} =`);\n this.reactHotLoaderTransformer.setExtractedDefaultExportName(defaultVarName);\n return true;\n }\n return false;\n }\n\n /**\n * In TypeScript, we need to remove named exports that were never declared or only declared as a\n * type.\n */\n processNamedExports() {\n if (!this.isTypeScriptTransformEnabled) {\n return false;\n }\n this.tokens.copyExpectedToken(_types.TokenType._export);\n this.tokens.copyExpectedToken(_types.TokenType.braceL);\n\n while (!this.tokens.matches1(_types.TokenType.braceR)) {\n if (!this.tokens.matches1(_types.TokenType.name)) {\n throw new Error(\"Expected identifier at the start of named export.\");\n }\n if (this.shouldElideExportedName(this.tokens.identifierName())) {\n while (\n !this.tokens.matches1(_types.TokenType.comma) &&\n !this.tokens.matches1(_types.TokenType.braceR) &&\n !this.tokens.isAtEnd()\n ) {\n this.tokens.removeToken();\n }\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.removeToken();\n }\n } else {\n while (\n !this.tokens.matches1(_types.TokenType.comma) &&\n !this.tokens.matches1(_types.TokenType.braceR) &&\n !this.tokens.isAtEnd()\n ) {\n this.tokens.copyToken();\n }\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.copyToken();\n }\n }\n }\n this.tokens.copyExpectedToken(_types.TokenType.braceR);\n return true;\n }\n\n /**\n * ESM elides all imports with the rule that we only elide if we see that it's\n * a type and never see it as a value. This is in contract to CJS, which\n * elides imports that are completely unknown.\n */\n shouldElideExportedName(name) {\n return (\n this.isTypeScriptTransformEnabled &&\n this.declarationInfo.typeDeclarations.has(name) &&\n !this.declarationInfo.valueDeclarations.has(name)\n );\n }\n} exports.default = ESMImportTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\n class FlowTransformer extends _Transformer2.default {\n constructor( rootTransformer, tokens) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;;\n }\n\n process() {\n return (\n this.rootTransformer.processPossibleArrowParamEnd() ||\n this.rootTransformer.processPossibleAsyncArrowWithTypeParams() ||\n this.rootTransformer.processPossibleTypeRange()\n );\n }\n} exports.default = FlowTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\nvar _xhtml = require('../parser/plugins/jsx/xhtml'); var _xhtml2 = _interopRequireDefault(_xhtml);\nvar _types = require('../parser/tokenizer/types');\nvar _charcodes = require('../parser/util/charcodes');\n\nvar _getJSXPragmaInfo = require('../util/getJSXPragmaInfo'); var _getJSXPragmaInfo2 = _interopRequireDefault(_getJSXPragmaInfo);\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\nconst HEX_NUMBER = /^[\\da-fA-F]+$/;\nconst DECIMAL_NUMBER = /^\\d+$/;\n\n class JSXTransformer extends _Transformer2.default {\n __init() {this.lastLineNumber = 1}\n __init2() {this.lastIndex = 0}\n __init3() {this.filenameVarName = null}\n \n\n constructor(\n rootTransformer,\n tokens,\n importProcessor,\n nameManager,\n options,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.importProcessor = importProcessor;this.nameManager = nameManager;this.options = options;JSXTransformer.prototype.__init.call(this);JSXTransformer.prototype.__init2.call(this);JSXTransformer.prototype.__init3.call(this);;\n this.jsxPragmaInfo = _getJSXPragmaInfo2.default.call(void 0, options);\n }\n\n process() {\n if (this.tokens.matches1(_types.TokenType.jsxTagStart)) {\n this.processJSXTag();\n return true;\n }\n return false;\n }\n\n getPrefixCode() {\n if (this.filenameVarName) {\n return `const ${this.filenameVarName} = ${JSON.stringify(this.options.filePath || \"\")};`;\n } else {\n return \"\";\n }\n }\n\n /**\n * Lazily calculate line numbers to avoid unneeded work. We assume this is always called in\n * increasing order by index.\n */\n getLineNumberForIndex(index) {\n const code = this.tokens.code;\n while (this.lastIndex < index && this.lastIndex < code.length) {\n if (code[this.lastIndex] === \"\\n\") {\n this.lastLineNumber++;\n }\n this.lastIndex++;\n }\n return this.lastLineNumber;\n }\n\n getFilenameVarName() {\n if (!this.filenameVarName) {\n this.filenameVarName = this.nameManager.claimFreeName(\"_jsxFileName\");\n }\n return this.filenameVarName;\n }\n\n processProps(firstTokenStart) {\n const lineNumber = this.getLineNumberForIndex(firstTokenStart);\n const devProps = this.options.production\n ? \"\"\n : `__self: this, __source: {fileName: ${this.getFilenameVarName()}, lineNumber: ${lineNumber}}`;\n if (!this.tokens.matches1(_types.TokenType.jsxName) && !this.tokens.matches1(_types.TokenType.braceL)) {\n if (devProps) {\n this.tokens.appendCode(`, {${devProps}}`);\n } else {\n this.tokens.appendCode(`, null`);\n }\n return;\n }\n this.tokens.appendCode(`, {`);\n while (true) {\n if (this.tokens.matches2(_types.TokenType.jsxName, _types.TokenType.eq)) {\n this.processPropKeyName();\n this.tokens.replaceToken(\": \");\n if (this.tokens.matches1(_types.TokenType.braceL)) {\n this.tokens.replaceToken(\"\");\n this.rootTransformer.processBalancedCode();\n this.tokens.replaceToken(\"\");\n } else if (this.tokens.matches1(_types.TokenType.jsxTagStart)) {\n this.processJSXTag();\n } else {\n this.processStringPropValue();\n }\n } else if (this.tokens.matches1(_types.TokenType.jsxName)) {\n this.processPropKeyName();\n this.tokens.appendCode(\": true\");\n } else if (this.tokens.matches1(_types.TokenType.braceL)) {\n this.tokens.replaceToken(\"\");\n this.rootTransformer.processBalancedCode();\n this.tokens.replaceToken(\"\");\n } else {\n break;\n }\n this.tokens.appendCode(\",\");\n }\n if (devProps) {\n this.tokens.appendCode(` ${devProps}}`);\n } else {\n this.tokens.appendCode(\"}\");\n }\n }\n\n processPropKeyName() {\n const keyName = this.tokens.identifierName();\n if (keyName.includes(\"-\")) {\n this.tokens.replaceToken(`'${keyName}'`);\n } else {\n this.tokens.copyToken();\n }\n }\n\n processStringPropValue() {\n const token = this.tokens.currentToken();\n const valueCode = this.tokens.code.slice(token.start + 1, token.end - 1);\n const replacementCode = formatJSXTextReplacement(valueCode);\n const literalCode = formatJSXStringValueLiteral(valueCode);\n this.tokens.replaceToken(literalCode + replacementCode);\n }\n\n /**\n * Process the first part of a tag, before any props.\n */\n processTagIntro() {\n // Walk forward until we see one of these patterns:\n // jsxName to start the first prop, preceded by another jsxName to end the tag name.\n // jsxName to start the first prop, preceded by greaterThan to end the type argument.\n // [open brace] to start the first prop.\n // [jsxTagEnd] to end the open-tag.\n // [slash, jsxTagEnd] to end the self-closing tag.\n let introEnd = this.tokens.currentIndex() + 1;\n while (\n this.tokens.tokens[introEnd].isType ||\n (!this.tokens.matches2AtIndex(introEnd - 1, _types.TokenType.jsxName, _types.TokenType.jsxName) &&\n !this.tokens.matches2AtIndex(introEnd - 1, _types.TokenType.greaterThan, _types.TokenType.jsxName) &&\n !this.tokens.matches1AtIndex(introEnd, _types.TokenType.braceL) &&\n !this.tokens.matches1AtIndex(introEnd, _types.TokenType.jsxTagEnd) &&\n !this.tokens.matches2AtIndex(introEnd, _types.TokenType.slash, _types.TokenType.jsxTagEnd))\n ) {\n introEnd++;\n }\n if (introEnd === this.tokens.currentIndex() + 1) {\n const tagName = this.tokens.identifierName();\n if (startsWithLowerCase(tagName)) {\n this.tokens.replaceToken(`'${tagName}'`);\n }\n }\n while (this.tokens.currentIndex() < introEnd) {\n this.rootTransformer.processToken();\n }\n }\n\n processChildren() {\n while (true) {\n if (this.tokens.matches2(_types.TokenType.jsxTagStart, _types.TokenType.slash)) {\n // Closing tag, so no more children.\n return;\n }\n if (this.tokens.matches1(_types.TokenType.braceL)) {\n if (this.tokens.matches2(_types.TokenType.braceL, _types.TokenType.braceR)) {\n // Empty interpolations and comment-only interpolations are allowed\n // and don't create an extra child arg.\n this.tokens.replaceToken(\"\");\n this.tokens.replaceToken(\"\");\n } else {\n // Interpolated expression.\n this.tokens.replaceToken(\", \");\n this.rootTransformer.processBalancedCode();\n this.tokens.replaceToken(\"\");\n }\n } else if (this.tokens.matches1(_types.TokenType.jsxTagStart)) {\n // Child JSX element\n this.tokens.appendCode(\", \");\n this.processJSXTag();\n } else if (this.tokens.matches1(_types.TokenType.jsxText)) {\n this.processChildTextElement();\n } else {\n throw new Error(\"Unexpected token when processing JSX children.\");\n }\n }\n }\n\n processChildTextElement() {\n const token = this.tokens.currentToken();\n const valueCode = this.tokens.code.slice(token.start, token.end);\n const replacementCode = formatJSXTextReplacement(valueCode);\n const literalCode = formatJSXTextLiteral(valueCode);\n if (literalCode === '\"\"') {\n this.tokens.replaceToken(replacementCode);\n } else {\n this.tokens.replaceToken(`, ${literalCode}${replacementCode}`);\n }\n }\n\n processJSXTag() {\n const {jsxPragmaInfo} = this;\n const resolvedPragmaBaseName = this.importProcessor\n ? this.importProcessor.getIdentifierReplacement(jsxPragmaInfo.base) || jsxPragmaInfo.base\n : jsxPragmaInfo.base;\n const firstTokenStart = this.tokens.currentToken().start;\n // First tag is always jsxTagStart.\n this.tokens.replaceToken(`${resolvedPragmaBaseName}${jsxPragmaInfo.suffix}(`);\n\n if (this.tokens.matches1(_types.TokenType.jsxTagEnd)) {\n // Fragment syntax.\n const resolvedFragmentPragmaBaseName = this.importProcessor\n ? this.importProcessor.getIdentifierReplacement(jsxPragmaInfo.fragmentBase) ||\n jsxPragmaInfo.fragmentBase\n : jsxPragmaInfo.fragmentBase;\n this.tokens.replaceToken(\n `${resolvedFragmentPragmaBaseName}${jsxPragmaInfo.fragmentSuffix}, null`,\n );\n // Tag with children.\n this.processChildren();\n while (!this.tokens.matches1(_types.TokenType.jsxTagEnd)) {\n this.tokens.replaceToken(\"\");\n }\n this.tokens.replaceToken(\")\");\n } else {\n // Normal open tag or self-closing tag.\n this.processTagIntro();\n this.processProps(firstTokenStart);\n\n if (this.tokens.matches2(_types.TokenType.slash, _types.TokenType.jsxTagEnd)) {\n // Self-closing tag.\n this.tokens.replaceToken(\"\");\n this.tokens.replaceToken(\")\");\n } else if (this.tokens.matches1(_types.TokenType.jsxTagEnd)) {\n this.tokens.replaceToken(\"\");\n // Tag with children.\n this.processChildren();\n while (!this.tokens.matches1(_types.TokenType.jsxTagEnd)) {\n this.tokens.replaceToken(\"\");\n }\n this.tokens.replaceToken(\")\");\n } else {\n throw new Error(\"Expected either /> or > at the end of the tag.\");\n }\n }\n }\n} exports.default = JSXTransformer;\n\n/**\n * Spec for identifiers: https://tc39.github.io/ecma262/#prod-IdentifierStart.\n *\n * Really only treat anything starting with a-z as tag names. `_`, `$`, `é`\n * should be treated as copmonent names\n */\n function startsWithLowerCase(s) {\n const firstChar = s.charCodeAt(0);\n return firstChar >= _charcodes.charCodes.lowercaseA && firstChar <= _charcodes.charCodes.lowercaseZ;\n} exports.startsWithLowerCase = startsWithLowerCase;\n\n/**\n * Turn the given jsxText string into a JS string literal. Leading and trailing\n * whitespace on lines is removed, except immediately after the open-tag and\n * before the close-tag. Empty lines are completely removed, and spaces are\n * added between lines after that.\n *\n * We use JSON.stringify to introduce escape characters as necessary, and trim\n * the start and end of each line and remove blank lines.\n */\nfunction formatJSXTextLiteral(text) {\n let result = \"\";\n let whitespace = \"\";\n\n let isInInitialLineWhitespace = false;\n let seenNonWhitespace = false;\n for (let i = 0; i < text.length; i++) {\n const c = text[i];\n if (c === \" \" || c === \"\\t\" || c === \"\\r\") {\n if (!isInInitialLineWhitespace) {\n whitespace += c;\n }\n } else if (c === \"\\n\") {\n whitespace = \"\";\n isInInitialLineWhitespace = true;\n } else {\n if (seenNonWhitespace && isInInitialLineWhitespace) {\n result += \" \";\n }\n result += whitespace;\n whitespace = \"\";\n if (c === \"&\") {\n const {entity, newI} = processEntity(text, i + 1);\n i = newI - 1;\n result += entity;\n } else {\n result += c;\n }\n seenNonWhitespace = true;\n isInInitialLineWhitespace = false;\n }\n }\n if (!isInInitialLineWhitespace) {\n result += whitespace;\n }\n return JSON.stringify(result);\n}\n\n/**\n * Produce the code that should be printed after the JSX text string literal,\n * with most content removed, but all newlines preserved and all spacing at the\n * end preserved.\n */\nfunction formatJSXTextReplacement(text) {\n let numNewlines = 0;\n let numSpaces = 0;\n for (const c of text) {\n if (c === \"\\n\") {\n numNewlines++;\n numSpaces = 0;\n } else if (c === \" \") {\n numSpaces++;\n }\n }\n return \"\\n\".repeat(numNewlines) + \" \".repeat(numSpaces);\n}\n\n/**\n * Format a string in the value position of a JSX prop.\n *\n * Use the same implementation as convertAttribute from\n * babel-helper-builder-react-jsx.\n */\nfunction formatJSXStringValueLiteral(text) {\n let result = \"\";\n for (let i = 0; i < text.length; i++) {\n const c = text[i];\n if (c === \"\\n\") {\n if (/\\s/.test(text[i + 1])) {\n result += \" \";\n while (i < text.length && /\\s/.test(text[i + 1])) {\n i++;\n }\n } else {\n result += \"\\n\";\n }\n } else if (c === \"&\") {\n const {entity, newI} = processEntity(text, i + 1);\n result += entity;\n i = newI - 1;\n } else {\n result += c;\n }\n }\n return JSON.stringify(result);\n}\n\n/**\n * Modified from jsxReadString in Babylon.\n */\nfunction processEntity(text, indexAfterAmpersand) {\n let str = \"\";\n let count = 0;\n let entity;\n let i = indexAfterAmpersand;\n\n while (i < text.length && count++ < 10) {\n const ch = text[i];\n i++;\n if (ch === \";\") {\n if (str[0] === \"#\") {\n if (str[1] === \"x\") {\n str = str.substr(2);\n if (HEX_NUMBER.test(str)) {\n entity = String.fromCodePoint(parseInt(str, 16));\n }\n } else {\n str = str.substr(1);\n if (DECIMAL_NUMBER.test(str)) {\n entity = String.fromCodePoint(parseInt(str, 10));\n }\n }\n } else {\n entity = _xhtml2.default[str];\n }\n break;\n }\n str += ch;\n }\n if (!entity) {\n return {entity: \"&\", newI: indexAfterAmpersand};\n }\n return {entity, newI: i};\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _types = require('../parser/tokenizer/types');\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\n class NumericSeparatorTransformer extends _Transformer2.default {\n constructor( tokens) {\n super();this.tokens = tokens;;\n }\n\n process() {\n if (this.tokens.matches1(_types.TokenType.num)) {\n const code = this.tokens.currentTokenCode();\n if (code.includes(\"_\")) {\n this.tokens.replaceToken(code.replace(/_/g, \"\"));\n return true;\n }\n }\n return false;\n }\n} exports.default = NumericSeparatorTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar _types = require('../parser/tokenizer/types');\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\n class OptionalCatchBindingTransformer extends _Transformer2.default {\n constructor( tokens, nameManager) {\n super();this.tokens = tokens;this.nameManager = nameManager;;\n }\n\n process() {\n if (this.tokens.matches2(_types.TokenType._catch, _types.TokenType.braceL)) {\n this.tokens.copyToken();\n this.tokens.appendCode(` (${this.nameManager.claimFreeName(\"e\")})`);\n return true;\n }\n return false;\n }\n} exports.default = OptionalCatchBindingTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar _types = require('../parser/tokenizer/types');\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\n/**\n * Transformer supporting the optional chaining and nullish coalescing operators.\n *\n * Tech plan here:\n * https://github.com/alangpierce/sucrase/wiki/Sucrase-Optional-Chaining-and-Nullish-Coalescing-Technical-Plan\n *\n * The prefix and suffix code snippets are handled by TokenProcessor, and this transformer handles\n * the operators themselves.\n */\n class OptionalChainingNullishTransformer extends _Transformer2.default {\n constructor( tokens, nameManager) {\n super();this.tokens = tokens;this.nameManager = nameManager;;\n }\n\n process() {\n if (this.tokens.matches1(_types.TokenType.nullishCoalescing)) {\n const token = this.tokens.currentToken();\n if (this.tokens.tokens[token.nullishStartIndex].isAsyncOperation) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(\", async () => (\");\n } else {\n this.tokens.replaceTokenTrimmingLeftWhitespace(\", () => (\");\n }\n return true;\n }\n if (this.tokens.matches1(_types.TokenType._delete)) {\n const nextToken = this.tokens.tokenAtRelativeIndex(1);\n if (nextToken.isOptionalChainStart) {\n this.tokens.removeInitialToken();\n return true;\n }\n }\n const token = this.tokens.currentToken();\n const chainStart = token.subscriptStartIndex;\n if (\n chainStart != null &&\n this.tokens.tokens[chainStart].isOptionalChainStart &&\n // Super subscripts can't be optional (since super is never null/undefined), and the syntax\n // relies on the subscript being intact, so leave this token alone.\n this.tokens.tokenAtRelativeIndex(-1).type !== _types.TokenType._super\n ) {\n const param = this.nameManager.claimFreeName(\"_\");\n let arrowStartSnippet;\n if (\n chainStart > 0 &&\n this.tokens.matches1AtIndex(chainStart - 1, _types.TokenType._delete) &&\n this.isLastSubscriptInChain()\n ) {\n // Delete operations are special: we already removed the delete keyword, and to still\n // perform a delete, we need to insert a delete in the very last part of the chain, which\n // in correct code will always be a property access.\n arrowStartSnippet = `${param} => delete ${param}`;\n } else {\n arrowStartSnippet = `${param} => ${param}`;\n }\n if (this.tokens.tokens[chainStart].isAsyncOperation) {\n arrowStartSnippet = `async ${arrowStartSnippet}`;\n }\n if (\n this.tokens.matches2(_types.TokenType.questionDot, _types.TokenType.parenL) ||\n this.tokens.matches2(_types.TokenType.questionDot, _types.TokenType.lessThan)\n ) {\n if (this.justSkippedSuper()) {\n this.tokens.appendCode(\".bind(this)\");\n }\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalCall', ${arrowStartSnippet}`);\n } else if (this.tokens.matches2(_types.TokenType.questionDot, _types.TokenType.bracketL)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${arrowStartSnippet}`);\n } else if (this.tokens.matches1(_types.TokenType.questionDot)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${arrowStartSnippet}.`);\n } else if (this.tokens.matches1(_types.TokenType.dot)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${arrowStartSnippet}.`);\n } else if (this.tokens.matches1(_types.TokenType.bracketL)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${arrowStartSnippet}[`);\n } else if (this.tokens.matches1(_types.TokenType.parenL)) {\n if (this.justSkippedSuper()) {\n this.tokens.appendCode(\".bind(this)\");\n }\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'call', ${arrowStartSnippet}(`);\n } else {\n throw new Error(\"Unexpected subscript operator in optional chain.\");\n }\n return true;\n }\n return false;\n }\n\n /**\n * Determine if the current token is the last of its chain, so that we know whether it's eligible\n * to have a delete op inserted.\n *\n * We can do this by walking forward until we determine one way or another. Each\n * isOptionalChainStart token must be paired with exactly one isOptionalChainEnd token after it in\n * a nesting way, so we can track depth and walk to the end of the chain (the point where the\n * depth goes negative) and see if any other subscript token is after us in the chain.\n */\n isLastSubscriptInChain() {\n let depth = 0;\n for (let i = this.tokens.currentIndex() + 1; ; i++) {\n if (i >= this.tokens.tokens.length) {\n throw new Error(\"Reached the end of the code while finding the end of the access chain.\");\n }\n if (this.tokens.tokens[i].isOptionalChainStart) {\n depth++;\n } else if (this.tokens.tokens[i].isOptionalChainEnd) {\n depth--;\n }\n if (depth < 0) {\n return true;\n }\n\n // This subscript token is a later one in the same chain.\n if (depth === 0 && this.tokens.tokens[i].subscriptStartIndex != null) {\n return false;\n }\n }\n }\n\n /**\n * Determine if we are the open-paren in an expression like super.a()?.b.\n *\n * We can do this by walking backward to find the previous subscript. If that subscript was\n * preceded by a super, then we must be the subscript after it, so if this is a call expression,\n * we'll need to attach the right context.\n */\n justSkippedSuper() {\n let depth = 0;\n let index = this.tokens.currentIndex() - 1;\n while (true) {\n if (index < 0) {\n throw new Error(\n \"Reached the start of the code while finding the start of the access chain.\",\n );\n }\n if (this.tokens.tokens[index].isOptionalChainStart) {\n depth--;\n } else if (this.tokens.tokens[index].isOptionalChainEnd) {\n depth++;\n }\n if (depth < 0) {\n return false;\n }\n\n // This subscript token is a later one in the same chain.\n if (depth === 0 && this.tokens.tokens[index].subscriptStartIndex != null) {\n return this.tokens.tokens[index - 1].type === _types.TokenType._super;\n }\n index--;\n }\n }\n} exports.default = OptionalChainingNullishTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _tokenizer = require('../parser/tokenizer');\nvar _types = require('../parser/tokenizer/types');\n\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\n/**\n * Implementation of babel-plugin-transform-react-display-name, which adds a\n * display name to usages of React.createClass and createReactClass.\n */\n class ReactDisplayNameTransformer extends _Transformer2.default {\n constructor(\n rootTransformer,\n tokens,\n importProcessor,\n options,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.importProcessor = importProcessor;this.options = options;;\n }\n\n process() {\n const startIndex = this.tokens.currentIndex();\n if (this.tokens.identifierName() === \"createReactClass\") {\n const newName =\n this.importProcessor && this.importProcessor.getIdentifierReplacement(\"createReactClass\");\n if (newName) {\n this.tokens.replaceToken(`(0, ${newName})`);\n } else {\n this.tokens.copyToken();\n }\n this.tryProcessCreateClassCall(startIndex);\n return true;\n }\n if (\n this.tokens.matches3(_types.TokenType.name, _types.TokenType.dot, _types.TokenType.name) &&\n this.tokens.identifierName() === \"React\" &&\n this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 2) === \"createClass\"\n ) {\n const newName = this.importProcessor\n ? this.importProcessor.getIdentifierReplacement(\"React\") || \"React\"\n : \"React\";\n if (newName) {\n this.tokens.replaceToken(newName);\n this.tokens.copyToken();\n this.tokens.copyToken();\n } else {\n this.tokens.copyToken();\n this.tokens.copyToken();\n this.tokens.copyToken();\n }\n this.tryProcessCreateClassCall(startIndex);\n return true;\n }\n return false;\n }\n\n /**\n * This is called with the token position at the open-paren.\n */\n tryProcessCreateClassCall(startIndex) {\n const displayName = this.findDisplayName(startIndex);\n if (!displayName) {\n return;\n }\n\n if (this.classNeedsDisplayName()) {\n this.tokens.copyExpectedToken(_types.TokenType.parenL);\n this.tokens.copyExpectedToken(_types.TokenType.braceL);\n this.tokens.appendCode(`displayName: '${displayName}',`);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(_types.TokenType.braceR);\n this.tokens.copyExpectedToken(_types.TokenType.parenR);\n }\n }\n\n findDisplayName(startIndex) {\n if (startIndex < 2) {\n return null;\n }\n if (this.tokens.matches2AtIndex(startIndex - 2, _types.TokenType.name, _types.TokenType.eq)) {\n // This is an assignment (or declaration) and the LHS is either an identifier or a member\n // expression ending in an identifier, so use that identifier name.\n return this.tokens.identifierNameAtIndex(startIndex - 2);\n }\n if (\n startIndex >= 2 &&\n this.tokens.tokens[startIndex - 2].identifierRole === _tokenizer.IdentifierRole.ObjectKey\n ) {\n // This is an object literal value.\n return this.tokens.identifierNameAtIndex(startIndex - 2);\n }\n if (this.tokens.matches2AtIndex(startIndex - 2, _types.TokenType._export, _types.TokenType._default)) {\n return this.getDisplayNameFromFilename();\n }\n return null;\n }\n\n getDisplayNameFromFilename() {\n const filePath = this.options.filePath || \"unknown\";\n const pathSegments = filePath.split(\"/\");\n const filename = pathSegments[pathSegments.length - 1];\n const dotIndex = filename.lastIndexOf(\".\");\n const baseFilename = dotIndex === -1 ? filename : filename.slice(0, dotIndex);\n if (baseFilename === \"index\" && pathSegments[pathSegments.length - 2]) {\n return pathSegments[pathSegments.length - 2];\n } else {\n return baseFilename;\n }\n }\n\n /**\n * We only want to add a display name when this is a function call containing\n * one argument, which is an object literal without `displayName` as an\n * existing key.\n */\n classNeedsDisplayName() {\n let index = this.tokens.currentIndex();\n if (!this.tokens.matches2(_types.TokenType.parenL, _types.TokenType.braceL)) {\n return false;\n }\n // The block starts on the {, and we expect any displayName key to be in\n // that context. We need to ignore other other contexts to avoid matching\n // nested displayName keys.\n const objectStartIndex = index + 1;\n const objectContextId = this.tokens.tokens[objectStartIndex].contextId;\n if (objectContextId == null) {\n throw new Error(\"Expected non-null context ID on object open-brace.\");\n }\n\n for (; index < this.tokens.tokens.length; index++) {\n const token = this.tokens.tokens[index];\n if (token.type === _types.TokenType.braceR && token.contextId === objectContextId) {\n index++;\n break;\n }\n\n if (\n this.tokens.identifierNameAtIndex(index) === \"displayName\" &&\n this.tokens.tokens[index].identifierRole === _tokenizer.IdentifierRole.ObjectKey &&\n token.contextId === objectContextId\n ) {\n // We found a displayName key, so bail out.\n return false;\n }\n }\n\n if (index === this.tokens.tokens.length) {\n throw new Error(\"Unexpected end of input when processing React class.\");\n }\n\n // If we got this far, we know we have createClass with an object with no\n // display name, so we want to proceed as long as that was the only argument.\n return (\n this.tokens.matches1AtIndex(index, _types.TokenType.parenR) ||\n this.tokens.matches2AtIndex(index, _types.TokenType.comma, _types.TokenType.parenR)\n );\n }\n} exports.default = ReactDisplayNameTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _tokenizer = require('../parser/tokenizer');\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\n class ReactHotLoaderTransformer extends _Transformer2.default {\n __init() {this.extractedDefaultExportName = null}\n\n constructor( tokens, filePath) {\n super();this.tokens = tokens;this.filePath = filePath;ReactHotLoaderTransformer.prototype.__init.call(this);;\n }\n\n setExtractedDefaultExportName(extractedDefaultExportName) {\n this.extractedDefaultExportName = extractedDefaultExportName;\n }\n\n getPrefixCode() {\n return `\n (function () {\n var enterModule = require('react-hot-loader').enterModule;\n enterModule && enterModule(module);\n })();`\n .replace(/\\s+/g, \" \")\n .trim();\n }\n\n getSuffixCode() {\n const topLevelNames = new Set();\n for (const token of this.tokens.tokens) {\n if (\n !token.isType &&\n _tokenizer.isTopLevelDeclaration.call(void 0, token) &&\n token.identifierRole !== _tokenizer.IdentifierRole.ImportDeclaration\n ) {\n topLevelNames.add(this.tokens.identifierNameForToken(token));\n }\n }\n const namesToRegister = Array.from(topLevelNames).map((name) => ({\n variableName: name,\n uniqueLocalName: name,\n }));\n if (this.extractedDefaultExportName) {\n namesToRegister.push({\n variableName: this.extractedDefaultExportName,\n uniqueLocalName: \"default\",\n });\n }\n return `\n;(function () {\n var reactHotLoader = require('react-hot-loader').default;\n var leaveModule = require('react-hot-loader').leaveModule;\n if (!reactHotLoader) {\n return;\n }\n${namesToRegister\n .map(\n ({variableName, uniqueLocalName}) =>\n ` reactHotLoader.register(${variableName}, \"${uniqueLocalName}\", ${JSON.stringify(\n this.filePath || \"\",\n )});`,\n )\n .join(\"\\n\")}\n leaveModule(module);\n})();`;\n }\n\n process() {\n return false;\n }\n} exports.default = ReactHotLoaderTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\nvar _keywords = require('../parser/tokenizer/keywords');\nvar _types = require('../parser/tokenizer/types');\n\nvar _getClassInfo = require('../util/getClassInfo'); var _getClassInfo2 = _interopRequireDefault(_getClassInfo);\nvar _CJSImportTransformer = require('./CJSImportTransformer'); var _CJSImportTransformer2 = _interopRequireDefault(_CJSImportTransformer);\nvar _ESMImportTransformer = require('./ESMImportTransformer'); var _ESMImportTransformer2 = _interopRequireDefault(_ESMImportTransformer);\nvar _FlowTransformer = require('./FlowTransformer'); var _FlowTransformer2 = _interopRequireDefault(_FlowTransformer);\nvar _JSXTransformer = require('./JSXTransformer'); var _JSXTransformer2 = _interopRequireDefault(_JSXTransformer);\nvar _NumericSeparatorTransformer = require('./NumericSeparatorTransformer'); var _NumericSeparatorTransformer2 = _interopRequireDefault(_NumericSeparatorTransformer);\nvar _OptionalCatchBindingTransformer = require('./OptionalCatchBindingTransformer'); var _OptionalCatchBindingTransformer2 = _interopRequireDefault(_OptionalCatchBindingTransformer);\nvar _OptionalChainingNullishTransformer = require('./OptionalChainingNullishTransformer'); var _OptionalChainingNullishTransformer2 = _interopRequireDefault(_OptionalChainingNullishTransformer);\nvar _ReactDisplayNameTransformer = require('./ReactDisplayNameTransformer'); var _ReactDisplayNameTransformer2 = _interopRequireDefault(_ReactDisplayNameTransformer);\nvar _ReactHotLoaderTransformer = require('./ReactHotLoaderTransformer'); var _ReactHotLoaderTransformer2 = _interopRequireDefault(_ReactHotLoaderTransformer);\n\nvar _TypeScriptTransformer = require('./TypeScriptTransformer'); var _TypeScriptTransformer2 = _interopRequireDefault(_TypeScriptTransformer);\n\n class RootTransformer {\n __init() {this.transformers = []}\n \n \n __init2() {this.generatedVariables = []}\n \n \n \n\n constructor(\n sucraseContext,\n transforms,\n enableLegacyBabel5ModuleInterop,\n options,\n ) {;RootTransformer.prototype.__init.call(this);RootTransformer.prototype.__init2.call(this);\n this.nameManager = sucraseContext.nameManager;\n this.helperManager = sucraseContext.helperManager;\n const {tokenProcessor, importProcessor} = sucraseContext;\n this.tokens = tokenProcessor;\n this.isImportsTransformEnabled = transforms.includes(\"imports\");\n this.isReactHotLoaderTransformEnabled = transforms.includes(\"react-hot-loader\");\n\n this.transformers.push(\n new (0, _OptionalChainingNullishTransformer2.default)(tokenProcessor, this.nameManager),\n );\n this.transformers.push(new (0, _NumericSeparatorTransformer2.default)(tokenProcessor));\n this.transformers.push(new (0, _OptionalCatchBindingTransformer2.default)(tokenProcessor, this.nameManager));\n if (transforms.includes(\"jsx\")) {\n this.transformers.push(\n new (0, _JSXTransformer2.default)(this, tokenProcessor, importProcessor, this.nameManager, options),\n );\n this.transformers.push(\n new (0, _ReactDisplayNameTransformer2.default)(this, tokenProcessor, importProcessor, options),\n );\n }\n\n let reactHotLoaderTransformer = null;\n if (transforms.includes(\"react-hot-loader\")) {\n if (!options.filePath) {\n throw new Error(\"filePath is required when using the react-hot-loader transform.\");\n }\n reactHotLoaderTransformer = new (0, _ReactHotLoaderTransformer2.default)(tokenProcessor, options.filePath);\n this.transformers.push(reactHotLoaderTransformer);\n }\n\n // Note that we always want to enable the imports transformer, even when the import transform\n // itself isn't enabled, since we need to do type-only import pruning for both Flow and\n // TypeScript.\n if (transforms.includes(\"imports\")) {\n if (importProcessor === null) {\n throw new Error(\"Expected non-null importProcessor with imports transform enabled.\");\n }\n this.transformers.push(\n new (0, _CJSImportTransformer2.default)(\n this,\n tokenProcessor,\n importProcessor,\n this.nameManager,\n reactHotLoaderTransformer,\n enableLegacyBabel5ModuleInterop,\n transforms.includes(\"typescript\"),\n ),\n );\n } else {\n this.transformers.push(\n new (0, _ESMImportTransformer2.default)(\n tokenProcessor,\n this.nameManager,\n reactHotLoaderTransformer,\n transforms.includes(\"typescript\"),\n options,\n ),\n );\n }\n\n if (transforms.includes(\"flow\")) {\n this.transformers.push(new (0, _FlowTransformer2.default)(this, tokenProcessor));\n }\n if (transforms.includes(\"typescript\")) {\n this.transformers.push(\n new (0, _TypeScriptTransformer2.default)(this, tokenProcessor, transforms.includes(\"imports\")),\n );\n }\n }\n\n transform() {\n this.tokens.reset();\n this.processBalancedCode();\n const shouldAddUseStrict = this.isImportsTransformEnabled;\n // \"use strict\" always needs to be first, so override the normal transformer order.\n let prefix = shouldAddUseStrict ? '\"use strict\";' : \"\";\n for (const transformer of this.transformers) {\n prefix += transformer.getPrefixCode();\n }\n prefix += this.helperManager.emitHelpers();\n prefix += this.generatedVariables.map((v) => ` var ${v};`).join(\"\");\n let suffix = \"\";\n for (const transformer of this.transformers) {\n suffix += transformer.getSuffixCode();\n }\n let code = this.tokens.finish();\n if (code.startsWith(\"#!\")) {\n let newlineIndex = code.indexOf(\"\\n\");\n if (newlineIndex === -1) {\n newlineIndex = code.length;\n code += \"\\n\";\n }\n return code.slice(0, newlineIndex + 1) + prefix + code.slice(newlineIndex + 1) + suffix;\n } else {\n return prefix + this.tokens.finish() + suffix;\n }\n }\n\n processBalancedCode() {\n let braceDepth = 0;\n let parenDepth = 0;\n while (!this.tokens.isAtEnd()) {\n if (this.tokens.matches1(_types.TokenType.braceL) || this.tokens.matches1(_types.TokenType.dollarBraceL)) {\n braceDepth++;\n } else if (this.tokens.matches1(_types.TokenType.braceR)) {\n if (braceDepth === 0) {\n return;\n }\n braceDepth--;\n }\n if (this.tokens.matches1(_types.TokenType.parenL)) {\n parenDepth++;\n } else if (this.tokens.matches1(_types.TokenType.parenR)) {\n if (parenDepth === 0) {\n return;\n }\n parenDepth--;\n }\n this.processToken();\n }\n }\n\n processToken() {\n if (this.tokens.matches1(_types.TokenType._class)) {\n this.processClass();\n return;\n }\n for (const transformer of this.transformers) {\n const wasProcessed = transformer.process();\n if (wasProcessed) {\n return;\n }\n }\n this.tokens.copyToken();\n }\n\n /**\n * Skip past a class with a name and return that name.\n */\n processNamedClass() {\n if (!this.tokens.matches2(_types.TokenType._class, _types.TokenType.name)) {\n throw new Error(\"Expected identifier for exported class name.\");\n }\n const name = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n this.processClass();\n return name;\n }\n\n processClass() {\n const classInfo = _getClassInfo2.default.call(void 0, this, this.tokens, this.nameManager);\n\n // Both static and instance initializers need a class name to use to invoke the initializer, so\n // assign to one if necessary.\n const needsCommaExpression =\n classInfo.headerInfo.isExpression &&\n classInfo.staticInitializerNames.length + classInfo.instanceInitializerNames.length > 0;\n\n let className = classInfo.headerInfo.className;\n if (needsCommaExpression) {\n className = this.nameManager.claimFreeName(\"_class\");\n this.generatedVariables.push(className);\n this.tokens.appendCode(` (${className} =`);\n }\n\n const classToken = this.tokens.currentToken();\n const contextId = classToken.contextId;\n if (contextId == null) {\n throw new Error(\"Expected class to have a context ID.\");\n }\n this.tokens.copyExpectedToken(_types.TokenType._class);\n while (!this.tokens.matchesContextIdAndLabel(_types.TokenType.braceL, contextId)) {\n this.processToken();\n }\n\n this.processClassBody(classInfo, className);\n\n const staticInitializerStatements = classInfo.staticInitializerNames.map(\n (name) => `${className}.${name}()`,\n );\n if (needsCommaExpression) {\n this.tokens.appendCode(\n `, ${staticInitializerStatements.map((s) => `${s}, `).join(\"\")}${className})`,\n );\n } else if (classInfo.staticInitializerNames.length > 0) {\n this.tokens.appendCode(` ${staticInitializerStatements.map((s) => `${s};`).join(\" \")}`);\n }\n }\n\n /**\n * We want to just handle class fields in all contexts, since TypeScript supports them. Later,\n * when some JS implementations support class fields, this should be made optional.\n */\n processClassBody(classInfo, className) {\n const {\n headerInfo,\n constructorInsertPos,\n constructorInitializerStatements,\n fields,\n instanceInitializerNames,\n rangesToRemove,\n } = classInfo;\n let fieldIndex = 0;\n let rangeToRemoveIndex = 0;\n const classContextId = this.tokens.currentToken().contextId;\n if (classContextId == null) {\n throw new Error(\"Expected non-null context ID on class.\");\n }\n this.tokens.copyExpectedToken(_types.TokenType.braceL);\n if (this.isReactHotLoaderTransformEnabled) {\n this.tokens.appendCode(\n \"__reactstandin__regenerateByEval(key, code) {this[key] = eval(code);}\",\n );\n }\n\n const needsConstructorInit =\n constructorInitializerStatements.length + instanceInitializerNames.length > 0;\n\n if (constructorInsertPos === null && needsConstructorInit) {\n const constructorInitializersCode = this.makeConstructorInitCode(\n constructorInitializerStatements,\n instanceInitializerNames,\n className,\n );\n if (headerInfo.hasSuperclass) {\n const argsName = this.nameManager.claimFreeName(\"args\");\n this.tokens.appendCode(\n `constructor(...${argsName}) { super(...${argsName}); ${constructorInitializersCode}; }`,\n );\n } else {\n this.tokens.appendCode(`constructor() { ${constructorInitializersCode}; }`);\n }\n }\n\n while (!this.tokens.matchesContextIdAndLabel(_types.TokenType.braceR, classContextId)) {\n if (fieldIndex < fields.length && this.tokens.currentIndex() === fields[fieldIndex].start) {\n let needsCloseBrace = false;\n if (this.tokens.matches1(_types.TokenType.bracketL)) {\n this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this`);\n } else if (this.tokens.matches1(_types.TokenType.string) || this.tokens.matches1(_types.TokenType.num)) {\n this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this[`);\n needsCloseBrace = true;\n } else {\n this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this.`);\n }\n while (this.tokens.currentIndex() < fields[fieldIndex].end) {\n if (needsCloseBrace && this.tokens.currentIndex() === fields[fieldIndex].equalsIndex) {\n this.tokens.appendCode(\"]\");\n }\n this.processToken();\n }\n this.tokens.appendCode(\"}\");\n fieldIndex++;\n } else if (\n rangeToRemoveIndex < rangesToRemove.length &&\n this.tokens.currentIndex() === rangesToRemove[rangeToRemoveIndex].start\n ) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentIndex() < rangesToRemove[rangeToRemoveIndex].end) {\n this.tokens.removeToken();\n }\n rangeToRemoveIndex++;\n } else if (this.tokens.currentIndex() === constructorInsertPos) {\n this.tokens.copyToken();\n if (needsConstructorInit) {\n this.tokens.appendCode(\n `;${this.makeConstructorInitCode(\n constructorInitializerStatements,\n instanceInitializerNames,\n className,\n )};`,\n );\n }\n this.processToken();\n } else {\n this.processToken();\n }\n }\n this.tokens.copyExpectedToken(_types.TokenType.braceR);\n }\n\n makeConstructorInitCode(\n constructorInitializerStatements,\n instanceInitializerNames,\n className,\n ) {\n return [\n ...constructorInitializerStatements,\n ...instanceInitializerNames.map((name) => `${className}.prototype.${name}.call(this)`),\n ].join(\";\");\n }\n\n /**\n * Normally it's ok to simply remove type tokens, but we need to be more careful when dealing with\n * arrow function return types since they can confuse the parser. In that case, we want to move\n * the close-paren to the same line as the arrow.\n *\n * See https://github.com/alangpierce/sucrase/issues/391 for more details.\n */\n processPossibleArrowParamEnd() {\n if (this.tokens.matches2(_types.TokenType.parenR, _types.TokenType.colon) && this.tokens.tokenAtRelativeIndex(1).isType) {\n let nextNonTypeIndex = this.tokens.currentIndex() + 1;\n // Look ahead to see if this is an arrow function or something else.\n while (this.tokens.tokens[nextNonTypeIndex].isType) {\n nextNonTypeIndex++;\n }\n if (this.tokens.matches1AtIndex(nextNonTypeIndex, _types.TokenType.arrow)) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentIndex() < nextNonTypeIndex) {\n this.tokens.removeToken();\n }\n this.tokens.replaceTokenTrimmingLeftWhitespace(\") =>\");\n return true;\n }\n }\n return false;\n }\n\n /**\n * An async arrow function might be of the form:\n *\n * async <\n * T\n * >() => {}\n *\n * in which case, removing the type parameters will cause a syntax error. Detect this case and\n * move the open-paren earlier.\n */\n processPossibleAsyncArrowWithTypeParams() {\n if (\n !this.tokens.matchesContextual(_keywords.ContextualKeyword._async) &&\n !this.tokens.matches1(_types.TokenType._async)\n ) {\n return false;\n }\n const nextToken = this.tokens.tokenAtRelativeIndex(1);\n if (nextToken.type !== _types.TokenType.lessThan || !nextToken.isType) {\n return false;\n }\n\n let nextNonTypeIndex = this.tokens.currentIndex() + 1;\n // Look ahead to see if this is an arrow function or something else.\n while (this.tokens.tokens[nextNonTypeIndex].isType) {\n nextNonTypeIndex++;\n }\n if (this.tokens.matches1AtIndex(nextNonTypeIndex, _types.TokenType.parenL)) {\n this.tokens.replaceToken(\"async (\");\n this.tokens.removeInitialToken();\n while (this.tokens.currentIndex() < nextNonTypeIndex) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n // We ate a ( token, so we need to process the tokens in between and then the ) token so that\n // we remain balanced.\n this.processBalancedCode();\n this.processToken();\n return true;\n }\n return false;\n }\n\n processPossibleTypeRange() {\n if (this.tokens.currentToken().isType) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentToken().isType) {\n this.tokens.removeToken();\n }\n return true;\n }\n return false;\n }\n} exports.default = RootTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); class Transformer {\n // Return true if anything was processed, false otherwise.\n \n\n getPrefixCode() {\n return \"\";\n }\n\n getSuffixCode() {\n return \"\";\n }\n} exports.default = Transformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _types = require('../parser/tokenizer/types');\n\nvar _isIdentifier = require('../util/isIdentifier'); var _isIdentifier2 = _interopRequireDefault(_isIdentifier);\n\nvar _Transformer = require('./Transformer'); var _Transformer2 = _interopRequireDefault(_Transformer);\n\n class TypeScriptTransformer extends _Transformer2.default {\n constructor(\n rootTransformer,\n tokens,\n isImportsTransformEnabled,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.isImportsTransformEnabled = isImportsTransformEnabled;;\n }\n\n process() {\n if (\n this.rootTransformer.processPossibleArrowParamEnd() ||\n this.rootTransformer.processPossibleAsyncArrowWithTypeParams() ||\n this.rootTransformer.processPossibleTypeRange()\n ) {\n return true;\n }\n if (\n this.tokens.matches1(_types.TokenType._public) ||\n this.tokens.matches1(_types.TokenType._protected) ||\n this.tokens.matches1(_types.TokenType._private) ||\n this.tokens.matches1(_types.TokenType._abstract) ||\n this.tokens.matches1(_types.TokenType._readonly) ||\n this.tokens.matches1(_types.TokenType.nonNullAssertion)\n ) {\n this.tokens.removeInitialToken();\n return true;\n }\n if (this.tokens.matches1(_types.TokenType._enum) || this.tokens.matches2(_types.TokenType._const, _types.TokenType._enum)) {\n this.processEnum();\n return true;\n }\n if (\n this.tokens.matches2(_types.TokenType._export, _types.TokenType._enum) ||\n this.tokens.matches3(_types.TokenType._export, _types.TokenType._const, _types.TokenType._enum)\n ) {\n this.processEnum(true);\n return true;\n }\n return false;\n }\n\n processEnum(isExport = false) {\n // We might have \"export const enum\", so just remove all relevant tokens.\n this.tokens.removeInitialToken();\n while (this.tokens.matches1(_types.TokenType._const) || this.tokens.matches1(_types.TokenType._enum)) {\n this.tokens.removeToken();\n }\n const enumName = this.tokens.identifierName();\n this.tokens.removeToken();\n if (isExport && !this.isImportsTransformEnabled) {\n this.tokens.appendCode(\"export \");\n }\n this.tokens.appendCode(`var ${enumName}; (function (${enumName})`);\n this.tokens.copyExpectedToken(_types.TokenType.braceL);\n this.processEnumBody(enumName);\n this.tokens.copyExpectedToken(_types.TokenType.braceR);\n if (isExport && this.isImportsTransformEnabled) {\n this.tokens.appendCode(`)(${enumName} || (exports.${enumName} = ${enumName} = {}));`);\n } else {\n this.tokens.appendCode(`)(${enumName} || (${enumName} = {}));`);\n }\n }\n\n /**\n * Rather than try to compute the actual enum values at compile time, we just create variables for\n * each one and let everything evaluate at runtime. There's some additional complexity due to\n * handling string literal names, including ones that happen to be valid identifiers.\n */\n processEnumBody(enumName) {\n let isPreviousValidIdentifier = false;\n let lastValueReference = null;\n while (true) {\n if (this.tokens.matches1(_types.TokenType.braceR)) {\n break;\n }\n const nameToken = this.tokens.currentToken();\n let name;\n let nameStringCode;\n if (nameToken.type === _types.TokenType.name) {\n name = this.tokens.identifierNameForToken(nameToken);\n nameStringCode = `\"${name}\"`;\n } else if (nameToken.type === _types.TokenType.string) {\n name = this.tokens.stringValueForToken(nameToken);\n nameStringCode = this.tokens.code.slice(nameToken.start, nameToken.end);\n } else {\n throw new Error(\"Expected name or string at beginning of enum element.\");\n }\n const isValidIdentifier = _isIdentifier2.default.call(void 0, name);\n this.tokens.removeInitialToken();\n\n let valueIsString;\n let valueCode;\n\n if (this.tokens.matches1(_types.TokenType.eq)) {\n const rhsEndIndex = this.tokens.currentToken().rhsEndIndex;\n if (rhsEndIndex == null) {\n throw new Error(\"Expected rhsEndIndex on enum assign.\");\n }\n this.tokens.removeToken();\n if (\n this.tokens.matches2(_types.TokenType.string, _types.TokenType.comma) ||\n this.tokens.matches2(_types.TokenType.string, _types.TokenType.braceR)\n ) {\n valueIsString = true;\n }\n const startToken = this.tokens.currentToken();\n while (this.tokens.currentIndex() < rhsEndIndex) {\n this.tokens.removeToken();\n }\n valueCode = this.tokens.code.slice(\n startToken.start,\n this.tokens.tokenAtRelativeIndex(-1).end,\n );\n } else {\n valueIsString = false;\n if (lastValueReference != null) {\n if (isPreviousValidIdentifier) {\n valueCode = `${lastValueReference} + 1`;\n } else {\n valueCode = `(${lastValueReference}) + 1`;\n }\n } else {\n valueCode = \"0\";\n }\n }\n if (this.tokens.matches1(_types.TokenType.comma)) {\n this.tokens.removeToken();\n }\n\n let valueReference;\n if (isValidIdentifier) {\n this.tokens.appendCode(`const ${name} = ${valueCode}; `);\n valueReference = name;\n } else {\n valueReference = valueCode;\n }\n\n if (valueIsString) {\n this.tokens.appendCode(`${enumName}[${nameStringCode}] = ${valueReference};`);\n } else {\n this.tokens.appendCode(\n `${enumName}[${enumName}[${nameStringCode}] = ${valueReference}] = ${nameStringCode};`,\n );\n }\n lastValueReference = valueReference;\n isPreviousValidIdentifier = isValidIdentifier;\n }\n }\n} exports.default = TypeScriptTransformer;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _types = require('../parser/tokenizer/types');\n\n\n function elideImportEquals(tokens) {\n // import\n tokens.removeInitialToken();\n // name\n tokens.removeToken();\n // =\n tokens.removeToken();\n // name or require\n tokens.removeToken();\n // Handle either `import A = require('A')` or `import A = B.C.D`.\n if (tokens.matches1(_types.TokenType.parenL)) {\n // (\n tokens.removeToken();\n // path string\n tokens.removeToken();\n // )\n tokens.removeToken();\n } else {\n while (tokens.matches1(_types.TokenType.dot)) {\n // .\n tokens.removeToken();\n // name\n tokens.removeToken();\n }\n }\n} exports.default = elideImportEquals;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _linesandcolumns = require('lines-and-columns'); var _linesandcolumns2 = _interopRequireDefault(_linesandcolumns);\n\nvar _types = require('../parser/tokenizer/types');\n\n function formatTokens(code, tokens) {\n if (tokens.length === 0) {\n return \"\";\n }\n\n const tokenKeys = Object.keys(tokens[0]).filter(\n (k) => k !== \"type\" && k !== \"value\" && k !== \"start\" && k !== \"end\" && k !== \"loc\",\n );\n const typeKeys = Object.keys(tokens[0].type).filter((k) => k !== \"label\" && k !== \"keyword\");\n\n const headings = [\"Location\", \"Label\", \"Raw\", ...tokenKeys, ...typeKeys];\n\n const lines = new (0, _linesandcolumns2.default)(code);\n const rows = [headings, ...tokens.map(getTokenComponents)];\n const padding = headings.map(() => 0);\n for (const components of rows) {\n for (let i = 0; i < components.length; i++) {\n padding[i] = Math.max(padding[i], components[i].length);\n }\n }\n return rows\n .map((components) => components.map((component, i) => component.padEnd(padding[i])).join(\" \"))\n .join(\"\\n\");\n\n function getTokenComponents(token) {\n const raw = code.slice(token.start, token.end);\n return [\n formatRange(token.start, token.end),\n _types.formatTokenType.call(void 0, token.type),\n truncate(String(raw), 14),\n ...tokenKeys.map((key) => formatValue(token[key], key)),\n ...typeKeys.map((key) => formatValue(token.type[key], key)),\n ];\n }\n\n // tslint:disable-next-line no-any\n function formatValue(value, key) {\n if (value === true) {\n return key;\n } else if (value === false || value === null) {\n return \"\";\n } else {\n return String(value);\n }\n }\n\n function formatRange(start, end) {\n return `${formatPos(start)}-${formatPos(end)}`;\n }\n\n function formatPos(pos) {\n const location = lines.locationForIndex(pos);\n if (!location) {\n return \"Unknown\";\n } else {\n return `${location.line + 1}:${location.column + 1}`;\n }\n }\n} exports.default = formatTokens;\n\nfunction truncate(s, length) {\n if (s.length > length) {\n return `${s.slice(0, length - 3)}...`;\n } else {\n return s;\n }\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\n\nvar _keywords = require('../parser/tokenizer/keywords');\nvar _types = require('../parser/tokenizer/types');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Get information about the class fields for this class, given a token processor pointing to the\n * open-brace at the start of the class.\n */\n function getClassInfo(\n rootTransformer,\n tokens,\n nameManager,\n) {\n const snapshot = tokens.snapshot();\n\n const headerInfo = processClassHeader(tokens);\n\n let constructorInitializerStatements = [];\n const instanceInitializerNames = [];\n const staticInitializerNames = [];\n let constructorInsertPos = null;\n const fields = [];\n const rangesToRemove = [];\n\n const classContextId = tokens.currentToken().contextId;\n if (classContextId == null) {\n throw new Error(\"Expected non-null class context ID on class open-brace.\");\n }\n\n tokens.nextToken();\n while (!tokens.matchesContextIdAndLabel(_types.TokenType.braceR, classContextId)) {\n if (tokens.matchesContextual(_keywords.ContextualKeyword._constructor) && !tokens.currentToken().isType) {\n ({constructorInitializerStatements, constructorInsertPos} = processConstructor(tokens));\n } else if (tokens.matches1(_types.TokenType.semi)) {\n rangesToRemove.push({start: tokens.currentIndex(), end: tokens.currentIndex() + 1});\n tokens.nextToken();\n } else if (tokens.currentToken().isType) {\n tokens.nextToken();\n } else {\n // Either a method or a field. Skip to the identifier part.\n const statementStartIndex = tokens.currentIndex();\n let isStatic = false;\n let isESPrivate = false;\n while (isAccessModifier(tokens.currentToken())) {\n if (tokens.matches1(_types.TokenType._static)) {\n isStatic = true;\n }\n if (tokens.matches1(_types.TokenType.hash)) {\n isESPrivate = true;\n }\n tokens.nextToken();\n }\n if (isStatic && tokens.matches1(_types.TokenType.braceL)) {\n // This is a static block, so don't process it in any special way.\n skipToNextClassElement(tokens, classContextId);\n continue;\n }\n if (isESPrivate) {\n // Sucrase doesn't attempt to transpile private fields; just leave them as-is.\n skipToNextClassElement(tokens, classContextId);\n continue;\n }\n if (\n tokens.matchesContextual(_keywords.ContextualKeyword._constructor) &&\n !tokens.currentToken().isType\n ) {\n ({constructorInitializerStatements, constructorInsertPos} = processConstructor(tokens));\n continue;\n }\n\n const nameStartIndex = tokens.currentIndex();\n skipFieldName(tokens);\n if (tokens.matches1(_types.TokenType.lessThan) || tokens.matches1(_types.TokenType.parenL)) {\n // This is a method, so nothing to process.\n skipToNextClassElement(tokens, classContextId);\n continue;\n }\n // There might be a type annotation that we need to skip.\n while (tokens.currentToken().isType) {\n tokens.nextToken();\n }\n if (tokens.matches1(_types.TokenType.eq)) {\n const equalsIndex = tokens.currentIndex();\n // This is an initializer, so we need to wrap in an initializer method.\n const valueEnd = tokens.currentToken().rhsEndIndex;\n if (valueEnd == null) {\n throw new Error(\"Expected rhsEndIndex on class field assignment.\");\n }\n tokens.nextToken();\n while (tokens.currentIndex() < valueEnd) {\n rootTransformer.processToken();\n }\n let initializerName;\n if (isStatic) {\n initializerName = nameManager.claimFreeName(\"__initStatic\");\n staticInitializerNames.push(initializerName);\n } else {\n initializerName = nameManager.claimFreeName(\"__init\");\n instanceInitializerNames.push(initializerName);\n }\n // Fields start at the name, so `static x = 1;` has a field range of `x = 1;`.\n fields.push({\n initializerName,\n equalsIndex,\n start: nameStartIndex,\n end: tokens.currentIndex(),\n });\n } else {\n // This is just a declaration, so doesn't need to produce any code in the output.\n rangesToRemove.push({start: statementStartIndex, end: tokens.currentIndex()});\n }\n }\n }\n\n tokens.restoreToSnapshot(snapshot);\n return {\n headerInfo,\n constructorInitializerStatements,\n instanceInitializerNames,\n staticInitializerNames,\n constructorInsertPos,\n fields,\n rangesToRemove,\n };\n} exports.default = getClassInfo;\n\n/**\n * Move the token processor to the next method/field in the class.\n *\n * To do that, we seek forward to the next start of a class name (either an open\n * bracket or an identifier, or the closing curly brace), then seek backward to\n * include any access modifiers.\n */\nfunction skipToNextClassElement(tokens, classContextId) {\n tokens.nextToken();\n while (tokens.currentToken().contextId !== classContextId) {\n tokens.nextToken();\n }\n while (isAccessModifier(tokens.tokenAtRelativeIndex(-1))) {\n tokens.previousToken();\n }\n}\n\nfunction processClassHeader(tokens) {\n const classToken = tokens.currentToken();\n const contextId = classToken.contextId;\n if (contextId == null) {\n throw new Error(\"Expected context ID on class token.\");\n }\n const isExpression = classToken.isExpression;\n if (isExpression == null) {\n throw new Error(\"Expected isExpression on class token.\");\n }\n let className = null;\n let hasSuperclass = false;\n tokens.nextToken();\n if (tokens.matches1(_types.TokenType.name)) {\n className = tokens.identifierName();\n }\n while (!tokens.matchesContextIdAndLabel(_types.TokenType.braceL, contextId)) {\n // If this has a superclass, there will always be an `extends` token. If it doesn't have a\n // superclass, only type parameters and `implements` clauses can show up here, all of which\n // consist only of type tokens. A declaration like `class A<B extends C> {` should *not* count\n // as having a superclass.\n if (tokens.matches1(_types.TokenType._extends) && !tokens.currentToken().isType) {\n hasSuperclass = true;\n }\n tokens.nextToken();\n }\n return {isExpression, className, hasSuperclass};\n}\n\n/**\n * Extract useful information out of a constructor, starting at the \"constructor\" name.\n */\nfunction processConstructor(\n tokens,\n) {\n const constructorInitializerStatements = [];\n\n tokens.nextToken();\n const constructorContextId = tokens.currentToken().contextId;\n if (constructorContextId == null) {\n throw new Error(\"Expected context ID on open-paren starting constructor params.\");\n }\n // Advance through parameters looking for access modifiers.\n while (!tokens.matchesContextIdAndLabel(_types.TokenType.parenR, constructorContextId)) {\n if (tokens.currentToken().contextId === constructorContextId) {\n // Current token is an open paren or comma just before a param, so check\n // that param for access modifiers.\n tokens.nextToken();\n if (isAccessModifier(tokens.currentToken())) {\n tokens.nextToken();\n while (isAccessModifier(tokens.currentToken())) {\n tokens.nextToken();\n }\n const token = tokens.currentToken();\n if (token.type !== _types.TokenType.name) {\n throw new Error(\"Expected identifier after access modifiers in constructor arg.\");\n }\n const name = tokens.identifierNameForToken(token);\n constructorInitializerStatements.push(`this.${name} = ${name}`);\n }\n } else {\n tokens.nextToken();\n }\n }\n // )\n tokens.nextToken();\n let constructorInsertPos = tokens.currentIndex();\n\n // Advance through body looking for a super call.\n let foundSuperCall = false;\n while (!tokens.matchesContextIdAndLabel(_types.TokenType.braceR, constructorContextId)) {\n if (!foundSuperCall && tokens.matches2(_types.TokenType._super, _types.TokenType.parenL)) {\n tokens.nextToken();\n const superCallContextId = tokens.currentToken().contextId;\n if (superCallContextId == null) {\n throw new Error(\"Expected a context ID on the super call\");\n }\n while (!tokens.matchesContextIdAndLabel(_types.TokenType.parenR, superCallContextId)) {\n tokens.nextToken();\n }\n constructorInsertPos = tokens.currentIndex();\n foundSuperCall = true;\n }\n tokens.nextToken();\n }\n // }\n tokens.nextToken();\n\n return {constructorInitializerStatements, constructorInsertPos};\n}\n\n/**\n * Determine if this is any token that can go before the name in a method/field.\n */\nfunction isAccessModifier(token) {\n return [\n _types.TokenType._async,\n _types.TokenType._get,\n _types.TokenType._set,\n _types.TokenType.plus,\n _types.TokenType.minus,\n _types.TokenType._readonly,\n _types.TokenType._static,\n _types.TokenType._public,\n _types.TokenType._private,\n _types.TokenType._protected,\n _types.TokenType._abstract,\n _types.TokenType.star,\n _types.TokenType._declare,\n _types.TokenType.hash,\n ].includes(token.type);\n}\n\n/**\n * The next token or set of tokens is either an identifier or an expression in square brackets, for\n * a method or field name.\n */\nfunction skipFieldName(tokens) {\n if (tokens.matches1(_types.TokenType.bracketL)) {\n const startToken = tokens.currentToken();\n const classContextId = startToken.contextId;\n if (classContextId == null) {\n throw new Error(\"Expected class context ID on computed name open bracket.\");\n }\n while (!tokens.matchesContextIdAndLabel(_types.TokenType.bracketR, classContextId)) {\n tokens.nextToken();\n }\n tokens.nextToken();\n } else {\n tokens.nextToken();\n }\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _tokenizer = require('../parser/tokenizer');\nvar _types = require('../parser/tokenizer/types');\n\n\n\n\n\n\n\n const EMPTY_DECLARATION_INFO = {\n typeDeclarations: new Set(),\n valueDeclarations: new Set(),\n}; exports.EMPTY_DECLARATION_INFO = EMPTY_DECLARATION_INFO;\n\n/**\n * Get all top-level identifiers that should be preserved when exported in TypeScript.\n *\n * Examples:\n * - If an identifier is declared as `const x`, then `export {x}` should be preserved.\n * - If it's declared as `type x`, then `export {x}` should be removed.\n * - If it's declared as both `const x` and `type x`, then the export should be preserved.\n * - Classes and enums should be preserved (even though they also introduce types).\n * - Imported identifiers should be preserved since we don't have enough information to\n * rule them out. --isolatedModules disallows re-exports, which catches errors here.\n */\n function getDeclarationInfo(tokens) {\n const typeDeclarations = new Set();\n const valueDeclarations = new Set();\n for (let i = 0; i < tokens.tokens.length; i++) {\n const token = tokens.tokens[i];\n if (token.type === _types.TokenType.name && _tokenizer.isTopLevelDeclaration.call(void 0, token)) {\n if (token.isType) {\n typeDeclarations.add(tokens.identifierNameForToken(token));\n } else {\n valueDeclarations.add(tokens.identifierNameForToken(token));\n }\n }\n }\n return {typeDeclarations, valueDeclarations};\n} exports.default = getDeclarationInfo;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\nvar _types = require('../parser/tokenizer/types');\n\n/**\n * Get all identifier names in the code, in order, including duplicates.\n */\n function getIdentifierNames(code, tokens) {\n const names = [];\n for (const token of tokens) {\n if (token.type === _types.TokenType.name) {\n names.push(code.slice(token.start, token.end));\n }\n }\n return names;\n} exports.default = getIdentifierNames;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});\n\n\n\n\n\n\n\n\n function getJSXPragmaInfo(options) {\n const [base, suffix] = splitPragma(options.jsxPragma || \"React.createElement\");\n const [fragmentBase, fragmentSuffix] = splitPragma(options.jsxFragmentPragma || \"React.Fragment\");\n return {base, suffix, fragmentBase, fragmentSuffix};\n} exports.default = getJSXPragmaInfo;\n\nfunction splitPragma(pragma) {\n let dotIndex = pragma.indexOf(\".\");\n if (dotIndex === -1) {\n dotIndex = pragma.length;\n }\n return [pragma.slice(0, dotIndex), pragma.slice(dotIndex)];\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nvar _tokenizer = require('../parser/tokenizer');\nvar _types = require('../parser/tokenizer/types');\n\nvar _JSXTransformer = require('../transformers/JSXTransformer');\nvar _getJSXPragmaInfo = require('./getJSXPragmaInfo'); var _getJSXPragmaInfo2 = _interopRequireDefault(_getJSXPragmaInfo);\n\n function getNonTypeIdentifiers(tokens, options) {\n const jsxPragmaInfo = _getJSXPragmaInfo2.default.call(void 0, options);\n const nonTypeIdentifiers = new Set();\n for (let i = 0; i < tokens.tokens.length; i++) {\n const token = tokens.tokens[i];\n if (\n token.type === _types.TokenType.name &&\n !token.isType &&\n (token.identifierRole === _tokenizer.IdentifierRole.Access ||\n token.identifierRole === _tokenizer.IdentifierRole.ObjectShorthand ||\n token.identifierRole === _tokenizer.IdentifierRole.ExportAccess) &&\n !token.shadowsGlobal\n ) {\n nonTypeIdentifiers.add(tokens.identifierNameForToken(token));\n }\n if (token.type === _types.TokenType.jsxTagStart) {\n nonTypeIdentifiers.add(jsxPragmaInfo.base);\n }\n if (\n token.type === _types.TokenType.jsxTagStart &&\n i + 1 < tokens.tokens.length &&\n tokens.tokens[i + 1].type === _types.TokenType.jsxTagEnd\n ) {\n nonTypeIdentifiers.add(jsxPragmaInfo.base);\n nonTypeIdentifiers.add(jsxPragmaInfo.fragmentBase);\n }\n if (token.type === _types.TokenType.jsxName && token.identifierRole === _tokenizer.IdentifierRole.Access) {\n const identifierName = tokens.identifierNameForToken(token);\n // Lower-case single-component tag names like \"div\" don't count.\n if (!_JSXTransformer.startsWithLowerCase.call(void 0, identifierName) || tokens.tokens[i + 1].type === _types.TokenType.dot) {\n nonTypeIdentifiers.add(tokens.identifierNameForToken(token));\n }\n }\n }\n return nonTypeIdentifiers;\n} exports.getNonTypeIdentifiers = getNonTypeIdentifiers;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _keywords = require('../parser/tokenizer/keywords');\nvar _types = require('../parser/tokenizer/types');\n\n\n/**\n * Special case code to scan for imported names in ESM TypeScript. We need to do this so we can\n * properly get globals so we can compute shadowed globals.\n *\n * This is similar to logic in CJSImportProcessor, but trimmed down to avoid logic with CJS\n * replacement and flow type imports.\n */\n function getTSImportedNames(tokens) {\n const importedNames = new Set();\n for (let i = 0; i < tokens.tokens.length; i++) {\n if (\n tokens.matches1AtIndex(i, _types.TokenType._import) &&\n !tokens.matches3AtIndex(i, _types.TokenType._import, _types.TokenType.name, _types.TokenType.eq)\n ) {\n collectNamesForImport(tokens, i, importedNames);\n }\n }\n return importedNames;\n} exports.default = getTSImportedNames;\n\nfunction collectNamesForImport(\n tokens,\n index,\n importedNames,\n) {\n index++;\n\n if (tokens.matches1AtIndex(index, _types.TokenType.parenL)) {\n // Dynamic import, so nothing to do\n return;\n }\n\n if (tokens.matches1AtIndex(index, _types.TokenType.name)) {\n importedNames.add(tokens.identifierNameAtIndex(index));\n index++;\n if (tokens.matches1AtIndex(index, _types.TokenType.comma)) {\n index++;\n }\n }\n\n if (tokens.matches1AtIndex(index, _types.TokenType.star)) {\n // * as\n index += 2;\n importedNames.add(tokens.identifierNameAtIndex(index));\n index++;\n }\n\n if (tokens.matches1AtIndex(index, _types.TokenType.braceL)) {\n index++;\n collectNamesForNamedImport(tokens, index, importedNames);\n }\n}\n\nfunction collectNamesForNamedImport(\n tokens,\n index,\n importedNames,\n) {\n while (true) {\n if (tokens.matches1AtIndex(index, _types.TokenType.braceR)) {\n return;\n }\n\n // We care about the local name, which might be the first token, or if there's an \"as\", is the\n // one after that.\n let name = tokens.identifierNameAtIndex(index);\n index++;\n if (tokens.matchesContextualAtIndex(index, _keywords.ContextualKeyword._as)) {\n index++;\n name = tokens.identifierNameAtIndex(index);\n index++;\n }\n importedNames.add(name);\n if (tokens.matches2AtIndex(index, _types.TokenType.comma, _types.TokenType.braceR)) {\n return;\n } else if (tokens.matches1AtIndex(index, _types.TokenType.braceR)) {\n return;\n } else if (tokens.matches1AtIndex(index, _types.TokenType.comma)) {\n index++;\n } else {\n throw new Error(`Unexpected token: ${JSON.stringify(tokens.tokens[index])}`);\n }\n }\n}\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _keywords = require('../parser/tokenizer/keywords');\n\n\n/**\n * Determine whether this optional chain or nullish coalescing operation has any await statements in\n * it. If so, we'll need to transpile to an async operation.\n *\n * We compute this by walking the length of the operation and returning true if we see an await\n * keyword used as a real await (rather than an object key or property access). Nested optional\n * chain/nullish operations need to be tracked but don't silence await, but a nested async function\n * (or any other nested scope) will make the await not count.\n */\n function isAsyncOperation(tokens) {\n let index = tokens.currentIndex();\n let depth = 0;\n const startToken = tokens.currentToken();\n do {\n const token = tokens.tokens[index];\n if (token.isOptionalChainStart) {\n depth++;\n }\n if (token.isOptionalChainEnd) {\n depth--;\n }\n depth += token.numNullishCoalesceStarts;\n depth -= token.numNullishCoalesceEnds;\n\n if (\n token.contextualKeyword === _keywords.ContextualKeyword._await &&\n token.identifierRole == null &&\n token.scopeDepth === startToken.scopeDepth\n ) {\n return true;\n }\n index += 1;\n } while (depth > 0 && index < tokens.tokens.length);\n return false;\n} exports.default = isAsyncOperation;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _identifier = require('../parser/util/identifier');\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar\n// Hard-code a list of reserved words rather than trying to use keywords or contextual keywords\n// from the parser, since currently there are various exceptions, like `package` being reserved\n// but unused and various contextual keywords being reserved. Note that we assume that all code\n// compiled by Sucrase is in a module, so strict mode words and await are all considered reserved\n// here.\nconst RESERVED_WORDS = new Set([\n // Reserved keywords as of ECMAScript 2015\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"export\",\n \"extends\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n // Future reserved keywords\n \"enum\",\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"await\",\n]);\n\n function isIdentifier(name) {\n if (name.length === 0) {\n return false;\n }\n if (!_identifier.IS_IDENTIFIER_START[name.charCodeAt(0)]) {\n return false;\n }\n for (let i = 1; i < name.length; i++) {\n if (!_identifier.IS_IDENTIFIER_CHAR[name.charCodeAt(i)]) {\n return false;\n }\n }\n return !RESERVED_WORDS.has(name);\n} exports.default = isIdentifier;\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true});var _types = require('../parser/tokenizer/types');\n\n\n\n/**\n * Common method sharing code between CJS and ESM cases, since they're the same here.\n */\n function shouldElideDefaultExport(\n isTypeScriptTransformEnabled,\n tokens,\n declarationInfo,\n) {\n if (!isTypeScriptTransformEnabled) {\n return false;\n }\n const exportToken = tokens.currentToken();\n if (exportToken.rhsEndIndex == null) {\n throw new Error(\"Expected non-null rhsEndIndex on export token.\");\n }\n // The export must be of the form `export default a` or `export default a;`.\n const numTokens = exportToken.rhsEndIndex - tokens.currentIndex();\n if (\n numTokens !== 3 &&\n !(numTokens === 4 && tokens.matches1AtIndex(exportToken.rhsEndIndex - 1, _types.TokenType.semi))\n ) {\n return false;\n }\n const identifierToken = tokens.tokenAtRelativeIndex(2);\n if (identifierToken.type !== _types.TokenType.name) {\n return false;\n }\n const exportedName = tokens.identifierNameForToken(identifierToken);\n return (\n declarationInfo.typeDeclarations.has(exportedName) &&\n !declarationInfo.valueDeclarations.has(exportedName)\n );\n} exports.default = shouldElideDefaultExport;\n","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checker = exports.createCheckers = void 0;\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\n/**\n * Export functions used to define interfaces.\n */\nvar types_2 = require(\"./types\");\nObject.defineProperty(exports, \"TArray\", { enumerable: true, get: function () { return types_2.TArray; } });\nObject.defineProperty(exports, \"TEnumType\", { enumerable: true, get: function () { return types_2.TEnumType; } });\nObject.defineProperty(exports, \"TEnumLiteral\", { enumerable: true, get: function () { return types_2.TEnumLiteral; } });\nObject.defineProperty(exports, \"TFunc\", { enumerable: true, get: function () { return types_2.TFunc; } });\nObject.defineProperty(exports, \"TIface\", { enumerable: true, get: function () { return types_2.TIface; } });\nObject.defineProperty(exports, \"TLiteral\", { enumerable: true, get: function () { return types_2.TLiteral; } });\nObject.defineProperty(exports, \"TName\", { enumerable: true, get: function () { return types_2.TName; } });\nObject.defineProperty(exports, \"TOptional\", { enumerable: true, get: function () { return types_2.TOptional; } });\nObject.defineProperty(exports, \"TParam\", { enumerable: true, get: function () { return types_2.TParam; } });\nObject.defineProperty(exports, \"TParamList\", { enumerable: true, get: function () { return types_2.TParamList; } });\nObject.defineProperty(exports, \"TProp\", { enumerable: true, get: function () { return types_2.TProp; } });\nObject.defineProperty(exports, \"TTuple\", { enumerable: true, get: function () { return types_2.TTuple; } });\nObject.defineProperty(exports, \"TType\", { enumerable: true, get: function () { return types_2.TType; } });\nObject.defineProperty(exports, \"TUnion\", { enumerable: true, get: function () { return types_2.TUnion; } });\nObject.defineProperty(exports, \"TIntersection\", { enumerable: true, get: function () { return types_2.TIntersection; } });\nObject.defineProperty(exports, \"array\", { enumerable: true, get: function () { return types_2.array; } });\nObject.defineProperty(exports, \"enumlit\", { enumerable: true, get: function () { return types_2.enumlit; } });\nObject.defineProperty(exports, \"enumtype\", { enumerable: true, get: function () { return types_2.enumtype; } });\nObject.defineProperty(exports, \"func\", { enumerable: true, get: function () { return types_2.func; } });\nObject.defineProperty(exports, \"iface\", { enumerable: true, get: function () { return types_2.iface; } });\nObject.defineProperty(exports, \"lit\", { enumerable: true, get: function () { return types_2.lit; } });\nObject.defineProperty(exports, \"name\", { enumerable: true, get: function () { return types_2.name; } });\nObject.defineProperty(exports, \"opt\", { enumerable: true, get: function () { return types_2.opt; } });\nObject.defineProperty(exports, \"param\", { enumerable: true, get: function () { return types_2.param; } });\nObject.defineProperty(exports, \"tuple\", { enumerable: true, get: function () { return types_2.tuple; } });\nObject.defineProperty(exports, \"union\", { enumerable: true, get: function () { return types_2.union; } });\nObject.defineProperty(exports, \"intersection\", { enumerable: true, get: function () { return types_2.intersection; } });\nObject.defineProperty(exports, \"BasicType\", { enumerable: true, get: function () { return types_2.BasicType; } });\nvar util_2 = require(\"./util\");\nObject.defineProperty(exports, \"VError\", { enumerable: true, get: function () { return util_2.VError; } });\n/**\n * Takes one of more type suites (e.g. a module generated by `ts-interface-builder`), and combines\n * them into a suite of interface checkers. If a type is used by name, that name should be present\n * among the passed-in type suites.\n *\n * The returned object maps type names to Checker objects.\n */\nfunction createCheckers() {\n var typeSuite = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSuite[_i] = arguments[_i];\n }\n var fullSuite = Object.assign.apply(Object, __spreadArrays([{}, types_1.basicTypes], typeSuite));\n var checkers = {};\n for (var _a = 0, typeSuite_1 = typeSuite; _a < typeSuite_1.length; _a++) {\n var suite_1 = typeSuite_1[_a];\n for (var _b = 0, _c = Object.keys(suite_1); _b < _c.length; _b++) {\n var name = _c[_b];\n checkers[name] = new Checker(fullSuite, suite_1[name]);\n }\n }\n return checkers;\n}\nexports.createCheckers = createCheckers;\n/**\n * Checker implements validation of objects, and also includes accessors to validate method calls.\n * Checkers should be created using `createCheckers()`.\n */\nvar Checker = /** @class */ (function () {\n // Create checkers by using `createCheckers()` function.\n function Checker(suite, ttype, _path) {\n if (_path === void 0) { _path = 'value'; }\n this.suite = suite;\n this.ttype = ttype;\n this._path = _path;\n this.props = new Map();\n if (ttype instanceof types_1.TIface) {\n for (var _i = 0, _a = ttype.props; _i < _a.length; _i++) {\n var p = _a[_i];\n this.props.set(p.name, p.ttype);\n }\n }\n this.checkerPlain = this.ttype.getChecker(suite, false);\n this.checkerStrict = this.ttype.getChecker(suite, true);\n }\n /**\n * Set the path to report in errors, instead of the default \"value\". (E.g. if the Checker is for\n * a \"person\" interface, set path to \"person\" to report e.g. \"person.name is not a string\".)\n */\n Checker.prototype.setReportedPath = function (path) {\n this._path = path;\n };\n /**\n * Check that the given value satisfies this checker's type, or throw Error.\n */\n Checker.prototype.check = function (value) { return this._doCheck(this.checkerPlain, value); };\n /**\n * A fast check for whether or not the given value satisfies this Checker's type. This returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.test = function (value) {\n return this.checkerPlain(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type, or null if it does.\n */\n Checker.prototype.validate = function (value) {\n return this._doValidate(this.checkerPlain, value);\n };\n /**\n * Check that the given value satisfies this checker's type strictly. This checks that objects\n * and tuples have no extra members. Note that this prevents backward compatibility, so usually\n * a plain check() is more appropriate.\n */\n Checker.prototype.strictCheck = function (value) { return this._doCheck(this.checkerStrict, value); };\n /**\n * A fast strict check for whether or not the given value satisfies this Checker's type. Returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.strictTest = function (value) {\n return this.checkerStrict(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type strictly, or null if it does.\n */\n Checker.prototype.strictValidate = function (value) {\n return this._doValidate(this.checkerStrict, value);\n };\n /**\n * If this checker is for an interface, returns a Checker for the type required for the given\n * property of this interface.\n */\n Checker.prototype.getProp = function (prop) {\n var ttype = this.props.get(prop);\n if (!ttype) {\n throw new Error(\"Type has no property \" + prop);\n }\n return new Checker(this.suite, ttype, this._path + \".\" + prop);\n };\n /**\n * If this checker is for an interface, returns a Checker for the argument-list required to call\n * the given method of this interface. E.g. if this Checker is for the interface:\n * interface Foo {\n * find(s: string, pos?: number): number;\n * }\n * Then methodArgs(\"find\").check(...) will succeed for [\"foo\"] and [\"foo\", 3], but not for [17].\n */\n Checker.prototype.methodArgs = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.paramList);\n };\n /**\n * If this checker is for an interface, returns a Checker for the return value of the given\n * method of this interface.\n */\n Checker.prototype.methodResult = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.result);\n };\n /**\n * If this checker is for a function, returns a Checker for its argument-list.\n */\n Checker.prototype.getArgs = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getArgs() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.paramList);\n };\n /**\n * If this checker is for a function, returns a Checker for its result.\n */\n Checker.prototype.getResult = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getResult() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.result);\n };\n /**\n * Return the type for which this is a checker.\n */\n Checker.prototype.getType = function () {\n return this.ttype;\n };\n /**\n * Actual implementation of check() and strictCheck().\n */\n Checker.prototype._doCheck = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (!checkerFunc(value, noopCtx)) {\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n throw detailCtx.getError(this._path);\n }\n };\n Checker.prototype._doValidate = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (checkerFunc(value, noopCtx)) {\n return null;\n }\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n return detailCtx.getErrorDetail(this._path);\n };\n Checker.prototype._getMethod = function (methodName) {\n var ttype = this.props.get(methodName);\n if (!ttype) {\n throw new Error(\"Type has no property \" + methodName);\n }\n if (!(ttype instanceof types_1.TFunc)) {\n throw new Error(\"Property \" + methodName + \" is not a method\");\n }\n return ttype;\n };\n return Checker;\n}());\nexports.Checker = Checker;\n","\"use strict\";\n/**\n * This module defines nodes used to define types and validations for objects and interfaces.\n */\n// tslint:disable:no-shadowed-variable prefer-for-of\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.basicTypes = exports.BasicType = exports.TParamList = exports.TParam = exports.param = exports.TFunc = exports.func = exports.TProp = exports.TOptional = exports.opt = exports.TIface = exports.iface = exports.TEnumLiteral = exports.enumlit = exports.TEnumType = exports.enumtype = exports.TIntersection = exports.intersection = exports.TUnion = exports.union = exports.TTuple = exports.tuple = exports.TArray = exports.array = exports.TLiteral = exports.lit = exports.TName = exports.name = exports.TType = void 0;\nvar util_1 = require(\"./util\");\n/** Node that represents a type. */\nvar TType = /** @class */ (function () {\n function TType() {\n }\n return TType;\n}());\nexports.TType = TType;\n/** Parses a type spec into a TType node. */\nfunction parseSpec(typeSpec) {\n return typeof typeSpec === \"string\" ? name(typeSpec) : typeSpec;\n}\nfunction getNamedType(suite, name) {\n var ttype = suite[name];\n if (!ttype) {\n throw new Error(\"Unknown type \" + name);\n }\n return ttype;\n}\n/**\n * Defines a type name, either built-in, or defined in this suite. It can typically be included in\n * the specs as just a plain string.\n */\nfunction name(value) { return new TName(value); }\nexports.name = name;\nvar TName = /** @class */ (function (_super) {\n __extends(TName, _super);\n function TName(name) {\n var _this = _super.call(this) || this;\n _this.name = name;\n _this._failMsg = \"is not a \" + name;\n return _this;\n }\n TName.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var ttype = getNamedType(suite, this.name);\n var checker = ttype.getChecker(suite, strict, allowedProps);\n if (ttype instanceof BasicType || ttype instanceof TName) {\n return checker;\n }\n // For complex types, add an additional \"is not a <Type>\" message on failure.\n return function (value, ctx) { return checker(value, ctx) ? true : ctx.fail(null, _this._failMsg, 0); };\n };\n return TName;\n}(TType));\nexports.TName = TName;\n/**\n * Defines a literal value, e.g. lit('hello') or lit(123).\n */\nfunction lit(value) { return new TLiteral(value); }\nexports.lit = lit;\nvar TLiteral = /** @class */ (function (_super) {\n __extends(TLiteral, _super);\n function TLiteral(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n _this.name = JSON.stringify(value);\n _this._failMsg = \"is not \" + _this.name;\n return _this;\n }\n TLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return (value === _this.value) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TLiteral;\n}(TType));\nexports.TLiteral = TLiteral;\n/**\n * Defines an array type, e.g. array('number').\n */\nfunction array(typeSpec) { return new TArray(parseSpec(typeSpec)); }\nexports.array = array;\nvar TArray = /** @class */ (function (_super) {\n __extends(TArray, _super);\n function TArray(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TArray.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < value.length; i++) {\n var ok = itemChecker(value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n };\n return TArray;\n}(TType));\nexports.TArray = TArray;\n/**\n * Defines a tuple type, e.g. tuple('string', 'number').\n */\nfunction tuple() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TTuple(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.tuple = tuple;\nvar TTuple = /** @class */ (function (_super) {\n __extends(TTuple, _super);\n function TTuple(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TTuple.prototype.getChecker = function (suite, strict) {\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TTuple;\n}(TType));\nexports.TTuple = TTuple;\n/**\n * Defines a union type, e.g. union('number', 'null').\n */\nfunction union() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TUnion(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.union = union;\nvar TUnion = /** @class */ (function (_super) {\n __extends(TUnion, _super);\n function TUnion(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n var names = ttypes.map(function (t) { return t instanceof TName || t instanceof TLiteral ? t.name : null; })\n .filter(function (n) { return n; });\n var otherTypes = ttypes.length - names.length;\n if (names.length) {\n if (otherTypes > 0) {\n names.push(otherTypes + \" more\");\n }\n _this._failMsg = \"is none of \" + names.join(\", \");\n }\n else {\n _this._failMsg = \"is none of \" + otherTypes + \" types\";\n }\n return _this;\n }\n TUnion.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n return function (value, ctx) {\n var ur = ctx.unionResolver();\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value, ur.createContext());\n if (ok) {\n return true;\n }\n }\n ctx.resolveUnion(ur);\n return ctx.fail(null, _this._failMsg, 0);\n };\n };\n return TUnion;\n}(TType));\nexports.TUnion = TUnion;\n/**\n * Defines an intersection type, e.g. intersection('number', 'null').\n */\nfunction intersection() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TIntersection(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.intersection = intersection;\nvar TIntersection = /** @class */ (function (_super) {\n __extends(TIntersection, _super);\n function TIntersection(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TIntersection.prototype.getChecker = function (suite, strict) {\n var allowedProps = new Set();\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict, allowedProps); });\n return function (value, ctx) {\n var ok = itemCheckers.every(function (checker) { return checker(value, ctx); });\n if (ok) {\n return true;\n }\n return ctx.fail(null, null, 0);\n };\n };\n return TIntersection;\n}(TType));\nexports.TIntersection = TIntersection;\n/**\n * Defines an enum type, e.g. enum({'A': 1, 'B': 2}).\n */\nfunction enumtype(values) {\n return new TEnumType(values);\n}\nexports.enumtype = enumtype;\nvar TEnumType = /** @class */ (function (_super) {\n __extends(TEnumType, _super);\n function TEnumType(members) {\n var _this = _super.call(this) || this;\n _this.members = members;\n _this.validValues = new Set();\n _this._failMsg = \"is not a valid enum value\";\n _this.validValues = new Set(Object.keys(members).map(function (name) { return members[name]; }));\n return _this;\n }\n TEnumType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) {\n return (_this.validValues.has(value) ? true : ctx.fail(null, _this._failMsg, 0));\n };\n };\n return TEnumType;\n}(TType));\nexports.TEnumType = TEnumType;\n/**\n * Defines a literal enum value, such as Direction.Up, specified as enumlit(\"Direction\", \"Up\").\n */\nfunction enumlit(name, prop) {\n return new TEnumLiteral(name, prop);\n}\nexports.enumlit = enumlit;\nvar TEnumLiteral = /** @class */ (function (_super) {\n __extends(TEnumLiteral, _super);\n function TEnumLiteral(enumName, prop) {\n var _this = _super.call(this) || this;\n _this.enumName = enumName;\n _this.prop = prop;\n _this._failMsg = \"is not \" + enumName + \".\" + prop;\n return _this;\n }\n TEnumLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var ttype = getNamedType(suite, this.enumName);\n if (!(ttype instanceof TEnumType)) {\n throw new Error(\"Type \" + this.enumName + \" used in enumlit is not an enum type\");\n }\n var val = ttype.members[this.prop];\n if (!ttype.members.hasOwnProperty(this.prop)) {\n throw new Error(\"Unknown value \" + this.enumName + \".\" + this.prop + \" used in enumlit\");\n }\n return function (value, ctx) { return (value === val) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TEnumLiteral;\n}(TType));\nexports.TEnumLiteral = TEnumLiteral;\nfunction makeIfaceProps(props) {\n return Object.keys(props).map(function (name) { return makeIfaceProp(name, props[name]); });\n}\nfunction makeIfaceProp(name, prop) {\n return prop instanceof TOptional ?\n new TProp(name, prop.ttype, true) :\n new TProp(name, parseSpec(prop), false);\n}\n/**\n * Defines an interface. The first argument is an array of interfaces that it extends, and the\n * second is an array of properties.\n */\nfunction iface(bases, props) {\n return new TIface(bases, makeIfaceProps(props));\n}\nexports.iface = iface;\nvar TIface = /** @class */ (function (_super) {\n __extends(TIface, _super);\n function TIface(bases, props) {\n var _this = _super.call(this) || this;\n _this.bases = bases;\n _this.props = props;\n _this.propSet = new Set(props.map(function (p) { return p.name; }));\n return _this;\n }\n TIface.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var baseCheckers = this.bases.map(function (b) { return getNamedType(suite, b).getChecker(suite, strict); });\n var propCheckers = this.props.map(function (prop) { return prop.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n // Consider a prop required if it's not optional AND does not allow for undefined as a value.\n var isPropRequired = this.props.map(function (prop, i) {\n return !prop.isOpt && !propCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (typeof value !== \"object\" || value === null) {\n return ctx.fail(null, \"is not an object\", 0);\n }\n for (var i = 0; i < baseCheckers.length; i++) {\n if (!baseCheckers[i](value, ctx)) {\n return false;\n }\n }\n for (var i = 0; i < propCheckers.length; i++) {\n var name_1 = _this.props[i].name;\n var v = value[name_1];\n if (v === undefined) {\n if (isPropRequired[i]) {\n return ctx.fail(name_1, \"is missing\", 1);\n }\n }\n else {\n var ok = propCheckers[i](v, ctx);\n if (!ok) {\n return ctx.fail(name_1, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n var propSet = this.propSet;\n if (allowedProps) {\n this.propSet.forEach(function (prop) { return allowedProps.add(prop); });\n propSet = allowedProps;\n }\n // In strict mode, check also for unknown enumerable properties.\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n for (var prop in value) {\n if (!propSet.has(prop)) {\n return ctx.fail(prop, \"is extraneous\", 2);\n }\n }\n return true;\n };\n };\n return TIface;\n}(TType));\nexports.TIface = TIface;\n/**\n * Defines an optional property on an interface.\n */\nfunction opt(typeSpec) { return new TOptional(parseSpec(typeSpec)); }\nexports.opt = opt;\nvar TOptional = /** @class */ (function (_super) {\n __extends(TOptional, _super);\n function TOptional(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TOptional.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n return value === undefined || itemChecker(value, ctx);\n };\n };\n return TOptional;\n}(TType));\nexports.TOptional = TOptional;\n/**\n * Defines a property in an interface.\n */\nvar TProp = /** @class */ (function () {\n function TProp(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TProp;\n}());\nexports.TProp = TProp;\n/**\n * Defines a function. The first argument declares the function's return type, the rest declare\n * its parameters.\n */\nfunction func(resultSpec) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n return new TFunc(new TParamList(params), parseSpec(resultSpec));\n}\nexports.func = func;\nvar TFunc = /** @class */ (function (_super) {\n __extends(TFunc, _super);\n function TFunc(paramList, result) {\n var _this = _super.call(this) || this;\n _this.paramList = paramList;\n _this.result = result;\n return _this;\n }\n TFunc.prototype.getChecker = function (suite, strict) {\n return function (value, ctx) {\n return typeof value === \"function\" ? true : ctx.fail(null, \"is not a function\", 0);\n };\n };\n return TFunc;\n}(TType));\nexports.TFunc = TFunc;\n/**\n * Defines a function parameter.\n */\nfunction param(name, typeSpec, isOpt) {\n return new TParam(name, parseSpec(typeSpec), Boolean(isOpt));\n}\nexports.param = param;\nvar TParam = /** @class */ (function () {\n function TParam(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TParam;\n}());\nexports.TParam = TParam;\n/**\n * Defines a function parameter list.\n */\nvar TParamList = /** @class */ (function (_super) {\n __extends(TParamList, _super);\n function TParamList(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n return _this;\n }\n TParamList.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.params.map(function (t) { return t.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n var isParamRequired = this.params.map(function (param, i) {\n return !param.isOpt && !itemCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var p = _this.params[i];\n if (value[i] === undefined) {\n if (isParamRequired[i]) {\n return ctx.fail(p.name, \"is missing\", 1);\n }\n }\n else {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(p.name, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TParamList;\n}(TType));\nexports.TParamList = TParamList;\n/**\n * Single TType implementation for all basic built-in types.\n */\nvar BasicType = /** @class */ (function (_super) {\n __extends(BasicType, _super);\n function BasicType(validator, message) {\n var _this = _super.call(this) || this;\n _this.validator = validator;\n _this.message = message;\n return _this;\n }\n BasicType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return _this.validator(value) ? true : ctx.fail(null, _this.message, 0); };\n };\n return BasicType;\n}(TType));\nexports.BasicType = BasicType;\n/**\n * Defines the suite of basic types.\n */\nexports.basicTypes = {\n any: new BasicType(function (v) { return true; }, \"is invalid\"),\n number: new BasicType(function (v) { return (typeof v === \"number\"); }, \"is not a number\"),\n object: new BasicType(function (v) { return (typeof v === \"object\" && v); }, \"is not an object\"),\n boolean: new BasicType(function (v) { return (typeof v === \"boolean\"); }, \"is not a boolean\"),\n string: new BasicType(function (v) { return (typeof v === \"string\"); }, \"is not a string\"),\n symbol: new BasicType(function (v) { return (typeof v === \"symbol\"); }, \"is not a symbol\"),\n void: new BasicType(function (v) { return (v == null); }, \"is not void\"),\n undefined: new BasicType(function (v) { return (v === undefined); }, \"is not undefined\"),\n null: new BasicType(function (v) { return (v === null); }, \"is not null\"),\n never: new BasicType(function (v) { return false; }, \"is unexpected\"),\n Date: new BasicType(getIsNativeChecker(\"[object Date]\"), \"is not a Date\"),\n RegExp: new BasicType(getIsNativeChecker(\"[object RegExp]\"), \"is not a RegExp\"),\n};\n// This approach for checking native object types mirrors that of lodash. Its advantage over\n// `isinstance` is that it can still return true for native objects created in different JS\n// execution environments.\nvar nativeToString = Object.prototype.toString;\nfunction getIsNativeChecker(tag) {\n return function (v) { return typeof v === \"object\" && v && nativeToString.call(v) === tag; };\n}\nif (typeof Buffer !== \"undefined\") {\n exports.basicTypes.Buffer = new BasicType(function (v) { return Buffer.isBuffer(v); }, \"is not a Buffer\");\n}\nvar _loop_1 = function (array_1) {\n exports.basicTypes[array_1.name] = new BasicType(function (v) { return (v instanceof array_1); }, \"is not a \" + array_1.name);\n};\n// Support typed arrays of various flavors\nfor (var _i = 0, _a = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array, ArrayBuffer]; _i < _a.length; _i++) {\n var array_1 = _a[_i];\n _loop_1(array_1);\n}\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DetailContext = exports.NoopContext = exports.VError = void 0;\n/**\n * Error thrown by validation. Besides an informative message, it includes the path to the\n * property which triggered the failure.\n */\nvar VError = /** @class */ (function (_super) {\n __extends(VError, _super);\n function VError(path, message) {\n var _this = _super.call(this, message) || this;\n _this.path = path;\n // See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work for info about this workaround.\n Object.setPrototypeOf(_this, VError.prototype);\n return _this;\n }\n return VError;\n}(Error));\nexports.VError = VError;\n/**\n * Fast implementation of IContext used for first-pass validation. If that fails, we can validate\n * using DetailContext to collect error messages. That's faster for the common case when messages\n * normally pass validation.\n */\nvar NoopContext = /** @class */ (function () {\n function NoopContext() {\n }\n NoopContext.prototype.fail = function (relPath, message, score) {\n return false;\n };\n NoopContext.prototype.unionResolver = function () { return this; };\n NoopContext.prototype.createContext = function () { return this; };\n NoopContext.prototype.resolveUnion = function (ur) { };\n return NoopContext;\n}());\nexports.NoopContext = NoopContext;\n/**\n * Complete implementation of IContext that collects meaningfull errors.\n */\nvar DetailContext = /** @class */ (function () {\n function DetailContext() {\n // Stack of property names and associated messages for reporting helpful error messages.\n this._propNames = [\"\"];\n this._messages = [null];\n // Score is used to choose the best union member whose DetailContext to use for reporting.\n // Higher score means better match (or rather less severe mismatch).\n this._score = 0;\n }\n DetailContext.prototype.fail = function (relPath, message, score) {\n this._propNames.push(relPath);\n this._messages.push(message);\n this._score += score;\n return false;\n };\n DetailContext.prototype.unionResolver = function () {\n return new DetailUnionResolver();\n };\n DetailContext.prototype.resolveUnion = function (unionResolver) {\n var _a, _b;\n var u = unionResolver;\n var best = null;\n for (var _i = 0, _c = u.contexts; _i < _c.length; _i++) {\n var ctx = _c[_i];\n if (!best || ctx._score >= best._score) {\n best = ctx;\n }\n }\n if (best && best._score > 0) {\n (_a = this._propNames).push.apply(_a, best._propNames);\n (_b = this._messages).push.apply(_b, best._messages);\n }\n };\n DetailContext.prototype.getError = function (path) {\n var msgParts = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var m = this._messages[i];\n if (m) {\n msgParts.push(path + \" \" + m);\n }\n }\n return new VError(path, msgParts.join(\"; \"));\n };\n DetailContext.prototype.getErrorDetail = function (path) {\n var details = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var message = this._messages[i];\n if (message) {\n details.push({ path: path, message: message });\n }\n }\n var detail = null;\n for (var i = details.length - 1; i >= 0; i--) {\n if (detail) {\n details[i].nested = [detail];\n }\n detail = details[i];\n }\n return detail;\n };\n return DetailContext;\n}());\nexports.DetailContext = DetailContext;\nvar DetailUnionResolver = /** @class */ (function () {\n function DetailUnionResolver() {\n this.contexts = [];\n }\n DetailUnionResolver.prototype.createContext = function () {\n var ctx = new DetailContext();\n this.contexts.push(ctx);\n return ctx;\n };\n return DetailUnionResolver;\n}());\n","import {transform} from 'sucrase';\n\nexport default function (code) {\n return transform(code, {\n transforms: ['typescript']\n }).code;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(\"./src/editor/transformTs.js\");\n"],"sourceRoot":""}